@alivault/pico 0.12.0 → 0.13.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 (311) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/addon-fit-CMMXLNsg.js +1 -0
  3. package/.output/public/assets/{index-DQLwecED.js → index-CW1T9dk-.js} +11 -10
  4. package/.output/public/assets/routes-2LboeUx4.js +2194 -0
  5. package/.output/public/assets/styles-B1ITYh-r.css +2 -0
  6. package/.output/public/assets/xterm-CCMwI7sy.js +36 -0
  7. package/.output/server/_libs/lucide-react.mjs +20 -1
  8. package/.output/server/_libs/xterm__addon-fit.mjs +44 -0
  9. package/.output/server/_libs/xterm__xterm.mjs +10234 -0
  10. package/.output/server/_ssr/{router-D36lUq7O.mjs → router-l__gf5Y7.mjs} +703 -170
  11. package/.output/server/_ssr/{routes-9nZumcXQ.mjs → routes-CuWg5WTI.mjs} +159 -18
  12. package/.output/server/_ssr/{routes-C8qT6Oju.mjs → routes-DySm_W8N.mjs} +1659 -561
  13. package/.output/server/_ssr/ssr.mjs +2 -2
  14. package/.output/server/{_tanstack-start-manifest_v-Cd2ypHmK.mjs → _tanstack-start-manifest_v-CVoKKKc_.mjs} +5 -4
  15. package/.output/server/index.mjs +583 -569
  16. package/.output/server/node_modules/node-pty/LICENSE +69 -0
  17. package/.output/server/node_modules/node-pty/README.md +165 -0
  18. package/.output/server/node_modules/node-pty/binding.gyp +111 -0
  19. package/.output/server/node_modules/node-pty/build/Makefile +369 -0
  20. package/.output/server/node_modules/node-pty/build/Release/pty.node +0 -0
  21. package/.output/server/node_modules/node-pty/build/binding.Makefile +6 -0
  22. package/.output/server/node_modules/node-pty/build/pty.target.mk +168 -0
  23. package/.output/server/node_modules/node-pty/deps/.editorconfig +2 -0
  24. package/.output/server/node_modules/node-pty/deps/winpty/.drone.yml +17 -0
  25. package/.output/server/node_modules/node-pty/deps/winpty/.gitattributes +19 -0
  26. package/.output/server/node_modules/node-pty/deps/winpty/LICENSE +21 -0
  27. package/.output/server/node_modules/node-pty/deps/winpty/Makefile +166 -0
  28. package/.output/server/node_modules/node-pty/deps/winpty/README.md +151 -0
  29. package/.output/server/node_modules/node-pty/deps/winpty/RELEASES.md +280 -0
  30. package/.output/server/node_modules/node-pty/deps/winpty/VERSION.txt +1 -0
  31. package/.output/server/node_modules/node-pty/deps/winpty/configure +167 -0
  32. package/.output/server/node_modules/node-pty/deps/winpty/misc/BufferResizeTests.cc +90 -0
  33. package/.output/server/node_modules/node-pty/deps/winpty/misc/ChangeScreenBuffer.cc +53 -0
  34. package/.output/server/node_modules/node-pty/deps/winpty/misc/ClearConsole.cc +72 -0
  35. package/.output/server/node_modules/node-pty/deps/winpty/misc/ConinMode.cc +117 -0
  36. package/.output/server/node_modules/node-pty/deps/winpty/misc/ConinMode.ps1 +116 -0
  37. package/.output/server/node_modules/node-pty/deps/winpty/misc/ConoutMode.cc +113 -0
  38. package/.output/server/node_modules/node-pty/deps/winpty/misc/DebugClient.py +42 -0
  39. package/.output/server/node_modules/node-pty/deps/winpty/misc/DebugServer.py +63 -0
  40. package/.output/server/node_modules/node-pty/deps/winpty/misc/DumpLines.py +5 -0
  41. package/.output/server/node_modules/node-pty/deps/winpty/misc/EnableExtendedFlags.txt +46 -0
  42. package/.output/server/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/CP437-Consolas.txt +528 -0
  43. package/.output/server/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/CP437-Lucida.txt +633 -0
  44. package/.output/server/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/CP932.txt +630 -0
  45. package/.output/server/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/CP936.txt +630 -0
  46. package/.output/server/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/CP949.txt +630 -0
  47. package/.output/server/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/CP950.txt +630 -0
  48. package/.output/server/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/MinimumWindowWidths.txt +16 -0
  49. package/.output/server/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/Results.txt +4 -0
  50. package/.output/server/node_modules/node-pty/deps/winpty/misc/Font-Report-June2016/Windows10SetFontBugginess.txt +144 -0
  51. package/.output/server/node_modules/node-pty/deps/winpty/misc/FontSurvey.cc +100 -0
  52. package/.output/server/node_modules/node-pty/deps/winpty/misc/FormatChar.h +21 -0
  53. package/.output/server/node_modules/node-pty/deps/winpty/misc/FreezePerfTest.cc +62 -0
  54. package/.output/server/node_modules/node-pty/deps/winpty/misc/GetCh.cc +20 -0
  55. package/.output/server/node_modules/node-pty/deps/winpty/misc/GetConsolePos.cc +41 -0
  56. package/.output/server/node_modules/node-pty/deps/winpty/misc/GetFont.cc +261 -0
  57. package/.output/server/node_modules/node-pty/deps/winpty/misc/IdentifyConsoleWindow.ps1 +51 -0
  58. package/.output/server/node_modules/node-pty/deps/winpty/misc/IsNewConsole.cc +87 -0
  59. package/.output/server/node_modules/node-pty/deps/winpty/misc/MouseInputNotes.txt +90 -0
  60. package/.output/server/node_modules/node-pty/deps/winpty/misc/MoveConsoleWindow.cc +34 -0
  61. package/.output/server/node_modules/node-pty/deps/winpty/misc/Notes.txt +219 -0
  62. package/.output/server/node_modules/node-pty/deps/winpty/misc/OSVersion.cc +27 -0
  63. package/.output/server/node_modules/node-pty/deps/winpty/misc/ScreenBufferFreezeInactive.cc +101 -0
  64. package/.output/server/node_modules/node-pty/deps/winpty/misc/ScreenBufferTest.cc +671 -0
  65. package/.output/server/node_modules/node-pty/deps/winpty/misc/ScreenBufferTest2.cc +151 -0
  66. package/.output/server/node_modules/node-pty/deps/winpty/misc/SelectAllTest.cc +45 -0
  67. package/.output/server/node_modules/node-pty/deps/winpty/misc/SetBufferSize.cc +32 -0
  68. package/.output/server/node_modules/node-pty/deps/winpty/misc/SetCursorPos.cc +10 -0
  69. package/.output/server/node_modules/node-pty/deps/winpty/misc/SetFont.cc +145 -0
  70. package/.output/server/node_modules/node-pty/deps/winpty/misc/SetWindowRect.cc +36 -0
  71. package/.output/server/node_modules/node-pty/deps/winpty/misc/ShowArgv.cc +12 -0
  72. package/.output/server/node_modules/node-pty/deps/winpty/misc/ShowConsoleInput.cc +40 -0
  73. package/.output/server/node_modules/node-pty/deps/winpty/misc/Spew.py +5 -0
  74. package/.output/server/node_modules/node-pty/deps/winpty/misc/TestUtil.cc +172 -0
  75. package/.output/server/node_modules/node-pty/deps/winpty/misc/UnicodeDoubleWidthTest.cc +102 -0
  76. package/.output/server/node_modules/node-pty/deps/winpty/misc/UnicodeWideTest1.cc +246 -0
  77. package/.output/server/node_modules/node-pty/deps/winpty/misc/UnicodeWideTest2.cc +130 -0
  78. package/.output/server/node_modules/node-pty/deps/winpty/misc/UnixEcho.cc +89 -0
  79. package/.output/server/node_modules/node-pty/deps/winpty/misc/Utf16Echo.cc +46 -0
  80. package/.output/server/node_modules/node-pty/deps/winpty/misc/VeryLargeRead.cc +122 -0
  81. package/.output/server/node_modules/node-pty/deps/winpty/misc/VkEscapeTest.cc +56 -0
  82. package/.output/server/node_modules/node-pty/deps/winpty/misc/Win10ResizeWhileFrozen.cc +52 -0
  83. package/.output/server/node_modules/node-pty/deps/winpty/misc/Win10WrapTest1.cc +57 -0
  84. package/.output/server/node_modules/node-pty/deps/winpty/misc/Win10WrapTest2.cc +30 -0
  85. package/.output/server/node_modules/node-pty/deps/winpty/misc/Win32Echo1.cc +26 -0
  86. package/.output/server/node_modules/node-pty/deps/winpty/misc/Win32Echo2.cc +19 -0
  87. package/.output/server/node_modules/node-pty/deps/winpty/misc/Win32Test1.cc +46 -0
  88. package/.output/server/node_modules/node-pty/deps/winpty/misc/Win32Test2.cc +70 -0
  89. package/.output/server/node_modules/node-pty/deps/winpty/misc/Win32Test3.cc +78 -0
  90. package/.output/server/node_modules/node-pty/deps/winpty/misc/Win32Write1.cc +44 -0
  91. package/.output/server/node_modules/node-pty/deps/winpty/misc/WindowsBugCrashReader.cc +27 -0
  92. package/.output/server/node_modules/node-pty/deps/winpty/misc/WriteConsole.cc +106 -0
  93. package/.output/server/node_modules/node-pty/deps/winpty/misc/build32.sh +9 -0
  94. package/.output/server/node_modules/node-pty/deps/winpty/misc/build64.sh +9 -0
  95. package/.output/server/node_modules/node-pty/deps/winpty/misc/color-test.sh +212 -0
  96. package/.output/server/node_modules/node-pty/deps/winpty/misc/font-notes.txt +300 -0
  97. package/.output/server/node_modules/node-pty/deps/winpty/misc/winbug-15048.cc +201 -0
  98. package/.output/server/node_modules/node-pty/deps/winpty/ship/build-pty4j-libpty.bat +36 -0
  99. package/.output/server/node_modules/node-pty/deps/winpty/ship/common_ship.py +53 -0
  100. package/.output/server/node_modules/node-pty/deps/winpty/ship/make_msvc_package.py +165 -0
  101. package/.output/server/node_modules/node-pty/deps/winpty/ship/ship.py +108 -0
  102. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/Agent.cc +613 -0
  103. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/Agent.h +103 -0
  104. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/AgentCreateDesktop.cc +84 -0
  105. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/AgentCreateDesktop.h +28 -0
  106. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/ConsoleFont.cc +632 -0
  107. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/ConsoleFont.h +28 -0
  108. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/ConsoleInput.cc +852 -0
  109. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/ConsoleInput.h +109 -0
  110. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/ConsoleInputReencoding.cc +121 -0
  111. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/ConsoleInputReencoding.h +36 -0
  112. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/ConsoleLine.cc +152 -0
  113. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/ConsoleLine.h +41 -0
  114. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/Coord.h +87 -0
  115. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/DebugShowInput.cc +239 -0
  116. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/DebugShowInput.h +32 -0
  117. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/DefaultInputMap.cc +422 -0
  118. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/DefaultInputMap.h +28 -0
  119. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/DsrSender.h +30 -0
  120. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/EventLoop.cc +99 -0
  121. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/EventLoop.h +47 -0
  122. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/InputMap.cc +246 -0
  123. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/InputMap.h +114 -0
  124. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/LargeConsoleRead.cc +71 -0
  125. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/LargeConsoleRead.h +68 -0
  126. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/NamedPipe.cc +378 -0
  127. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/NamedPipe.h +125 -0
  128. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/Scraper.cc +699 -0
  129. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/Scraper.h +103 -0
  130. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/SimplePool.h +75 -0
  131. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/SmallRect.h +143 -0
  132. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/Terminal.cc +535 -0
  133. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/Terminal.h +69 -0
  134. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/UnicodeEncoding.h +157 -0
  135. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/UnicodeEncodingTest.cc +189 -0
  136. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/Win32Console.cc +107 -0
  137. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/Win32Console.h +67 -0
  138. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/Win32ConsoleBuffer.cc +193 -0
  139. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/Win32ConsoleBuffer.h +99 -0
  140. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/main.cc +114 -0
  141. package/.output/server/node_modules/node-pty/deps/winpty/src/agent/subdir.mk +61 -0
  142. package/.output/server/node_modules/node-pty/deps/winpty/src/configurations.gypi +60 -0
  143. package/.output/server/node_modules/node-pty/deps/winpty/src/debugserver/DebugServer.cc +117 -0
  144. package/.output/server/node_modules/node-pty/deps/winpty/src/debugserver/subdir.mk +41 -0
  145. package/.output/server/node_modules/node-pty/deps/winpty/src/include/winpty.h +242 -0
  146. package/.output/server/node_modules/node-pty/deps/winpty/src/include/winpty_constants.h +131 -0
  147. package/.output/server/node_modules/node-pty/deps/winpty/src/libwinpty/AgentLocation.cc +75 -0
  148. package/.output/server/node_modules/node-pty/deps/winpty/src/libwinpty/AgentLocation.h +28 -0
  149. package/.output/server/node_modules/node-pty/deps/winpty/src/libwinpty/LibWinptyException.h +54 -0
  150. package/.output/server/node_modules/node-pty/deps/winpty/src/libwinpty/WinptyInternal.h +72 -0
  151. package/.output/server/node_modules/node-pty/deps/winpty/src/libwinpty/subdir.mk +46 -0
  152. package/.output/server/node_modules/node-pty/deps/winpty/src/libwinpty/winpty.cc +970 -0
  153. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/AgentMsg.h +38 -0
  154. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/BackgroundDesktop.cc +122 -0
  155. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/BackgroundDesktop.h +73 -0
  156. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/Buffer.cc +103 -0
  157. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/Buffer.h +102 -0
  158. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/DebugClient.cc +187 -0
  159. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/DebugClient.h +38 -0
  160. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/GenRandom.cc +138 -0
  161. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/GenRandom.h +55 -0
  162. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/GetCommitHash.bat +13 -0
  163. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/Mutex.h +54 -0
  164. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/OsModule.h +63 -0
  165. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/OwnedHandle.cc +36 -0
  166. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/OwnedHandle.h +45 -0
  167. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/PrecompiledHeader.h +43 -0
  168. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/StringBuilder.h +227 -0
  169. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/StringBuilderTest.cc +114 -0
  170. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/StringUtil.cc +55 -0
  171. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/StringUtil.h +80 -0
  172. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/TimeMeasurement.h +63 -0
  173. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/UnixCtrlChars.h +45 -0
  174. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/UpdateGenVersion.bat +20 -0
  175. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/WindowsSecurity.cc +460 -0
  176. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/WindowsSecurity.h +104 -0
  177. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/WindowsVersion.cc +252 -0
  178. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/WindowsVersion.h +29 -0
  179. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/WinptyAssert.cc +55 -0
  180. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/WinptyAssert.h +64 -0
  181. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/WinptyException.cc +57 -0
  182. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/WinptyException.h +43 -0
  183. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/WinptyVersion.cc +42 -0
  184. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/WinptyVersion.h +27 -0
  185. package/.output/server/node_modules/node-pty/deps/winpty/src/shared/winpty_snprintf.h +99 -0
  186. package/.output/server/node_modules/node-pty/deps/winpty/src/subdir.mk +5 -0
  187. package/.output/server/node_modules/node-pty/deps/winpty/src/tests/subdir.mk +28 -0
  188. package/.output/server/node_modules/node-pty/deps/winpty/src/tests/trivial_test.cc +158 -0
  189. package/.output/server/node_modules/node-pty/deps/winpty/src/unix-adapter/InputHandler.cc +114 -0
  190. package/.output/server/node_modules/node-pty/deps/winpty/src/unix-adapter/InputHandler.h +56 -0
  191. package/.output/server/node_modules/node-pty/deps/winpty/src/unix-adapter/OutputHandler.cc +80 -0
  192. package/.output/server/node_modules/node-pty/deps/winpty/src/unix-adapter/OutputHandler.h +53 -0
  193. package/.output/server/node_modules/node-pty/deps/winpty/src/unix-adapter/Util.cc +86 -0
  194. package/.output/server/node_modules/node-pty/deps/winpty/src/unix-adapter/Util.h +31 -0
  195. package/.output/server/node_modules/node-pty/deps/winpty/src/unix-adapter/WakeupFd.cc +70 -0
  196. package/.output/server/node_modules/node-pty/deps/winpty/src/unix-adapter/WakeupFd.h +42 -0
  197. package/.output/server/node_modules/node-pty/deps/winpty/src/unix-adapter/main.cc +729 -0
  198. package/.output/server/node_modules/node-pty/deps/winpty/src/unix-adapter/subdir.mk +41 -0
  199. package/.output/server/node_modules/node-pty/deps/winpty/src/winpty.gyp +234 -0
  200. package/.output/server/node_modules/node-pty/deps/winpty/vcbuild.bat +83 -0
  201. package/.output/server/node_modules/node-pty/lib/conpty_console_list_agent.js +16 -0
  202. package/.output/server/node_modules/node-pty/lib/conpty_console_list_agent.js.map +1 -0
  203. package/.output/server/node_modules/node-pty/lib/eventEmitter2.js +47 -0
  204. package/.output/server/node_modules/node-pty/lib/eventEmitter2.js.map +1 -0
  205. package/.output/server/node_modules/node-pty/lib/eventEmitter2.test.js +30 -0
  206. package/.output/server/node_modules/node-pty/lib/eventEmitter2.test.js.map +1 -0
  207. package/.output/server/node_modules/node-pty/lib/index.js +52 -0
  208. package/.output/server/node_modules/node-pty/lib/index.js.map +1 -0
  209. package/.output/server/node_modules/node-pty/lib/interfaces.js +7 -0
  210. package/.output/server/node_modules/node-pty/lib/interfaces.js.map +1 -0
  211. package/.output/server/node_modules/node-pty/lib/shared/conout.js +11 -0
  212. package/.output/server/node_modules/node-pty/lib/shared/conout.js.map +1 -0
  213. package/.output/server/node_modules/node-pty/lib/terminal.js +190 -0
  214. package/.output/server/node_modules/node-pty/lib/terminal.js.map +1 -0
  215. package/.output/server/node_modules/node-pty/lib/terminal.test.js +139 -0
  216. package/.output/server/node_modules/node-pty/lib/terminal.test.js.map +1 -0
  217. package/.output/server/node_modules/node-pty/lib/testUtils.test.js +28 -0
  218. package/.output/server/node_modules/node-pty/lib/testUtils.test.js.map +1 -0
  219. package/.output/server/node_modules/node-pty/lib/types.js +7 -0
  220. package/.output/server/node_modules/node-pty/lib/types.js.map +1 -0
  221. package/.output/server/node_modules/node-pty/lib/unixTerminal.js +346 -0
  222. package/.output/server/node_modules/node-pty/lib/unixTerminal.js.map +1 -0
  223. package/.output/server/node_modules/node-pty/lib/unixTerminal.test.js +351 -0
  224. package/.output/server/node_modules/node-pty/lib/unixTerminal.test.js.map +1 -0
  225. package/.output/server/node_modules/node-pty/lib/utils.js +39 -0
  226. package/.output/server/node_modules/node-pty/lib/utils.js.map +1 -0
  227. package/.output/server/node_modules/node-pty/lib/windowsConoutConnection.js +125 -0
  228. package/.output/server/node_modules/node-pty/lib/windowsConoutConnection.js.map +1 -0
  229. package/.output/server/node_modules/node-pty/lib/windowsPtyAgent.js +320 -0
  230. package/.output/server/node_modules/node-pty/lib/windowsPtyAgent.js.map +1 -0
  231. package/.output/server/node_modules/node-pty/lib/windowsPtyAgent.test.js +90 -0
  232. package/.output/server/node_modules/node-pty/lib/windowsPtyAgent.test.js.map +1 -0
  233. package/.output/server/node_modules/node-pty/lib/windowsTerminal.js +199 -0
  234. package/.output/server/node_modules/node-pty/lib/windowsTerminal.js.map +1 -0
  235. package/.output/server/node_modules/node-pty/lib/windowsTerminal.test.js +219 -0
  236. package/.output/server/node_modules/node-pty/lib/windowsTerminal.test.js.map +1 -0
  237. package/.output/server/node_modules/node-pty/lib/worker/conoutSocketWorker.js +22 -0
  238. package/.output/server/node_modules/node-pty/lib/worker/conoutSocketWorker.js.map +1 -0
  239. package/.output/server/node_modules/node-pty/package.json +64 -0
  240. package/.output/server/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  241. package/.output/server/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  242. package/.output/server/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  243. package/.output/server/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  244. package/.output/server/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  245. package/.output/server/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  246. package/.output/server/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  247. package/.output/server/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  248. package/.output/server/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  249. package/.output/server/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  250. package/.output/server/node_modules/node-pty/prebuilds/win32-arm64/pty.node +0 -0
  251. package/.output/server/node_modules/node-pty/prebuilds/win32-arm64/pty.pdb +0 -0
  252. package/.output/server/node_modules/node-pty/prebuilds/win32-arm64/winpty-agent.exe +0 -0
  253. package/.output/server/node_modules/node-pty/prebuilds/win32-arm64/winpty-agent.pdb +0 -0
  254. package/.output/server/node_modules/node-pty/prebuilds/win32-arm64/winpty.dll +0 -0
  255. package/.output/server/node_modules/node-pty/prebuilds/win32-arm64/winpty.pdb +0 -0
  256. package/.output/server/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  257. package/.output/server/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  258. package/.output/server/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  259. package/.output/server/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  260. package/.output/server/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  261. package/.output/server/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  262. package/.output/server/node_modules/node-pty/prebuilds/win32-x64/pty.node +0 -0
  263. package/.output/server/node_modules/node-pty/prebuilds/win32-x64/pty.pdb +0 -0
  264. package/.output/server/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.exe +0 -0
  265. package/.output/server/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.pdb +0 -0
  266. package/.output/server/node_modules/node-pty/prebuilds/win32-x64/winpty.dll +0 -0
  267. package/.output/server/node_modules/node-pty/prebuilds/win32-x64/winpty.pdb +0 -0
  268. package/.output/server/node_modules/node-pty/scripts/gen-compile-commands.js +8 -0
  269. package/.output/server/node_modules/node-pty/scripts/increment-version.js +54 -0
  270. package/.output/server/node_modules/node-pty/scripts/post-install.js +80 -0
  271. package/.output/server/node_modules/node-pty/scripts/prebuild.js +34 -0
  272. package/.output/server/node_modules/node-pty/src/conpty_console_list_agent.ts +15 -0
  273. package/.output/server/node_modules/node-pty/src/eventEmitter2.test.ts +30 -0
  274. package/.output/server/node_modules/node-pty/src/eventEmitter2.ts +48 -0
  275. package/.output/server/node_modules/node-pty/src/index.ts +52 -0
  276. package/.output/server/node_modules/node-pty/src/interfaces.ts +130 -0
  277. package/.output/server/node_modules/node-pty/src/native.d.ts +54 -0
  278. package/.output/server/node_modules/node-pty/src/shared/conout.ts +15 -0
  279. package/.output/server/node_modules/node-pty/src/terminal.test.ts +119 -0
  280. package/.output/server/node_modules/node-pty/src/terminal.ts +211 -0
  281. package/.output/server/node_modules/node-pty/src/testUtils.test.ts +23 -0
  282. package/.output/server/node_modules/node-pty/src/tsconfig.json +22 -0
  283. package/.output/server/node_modules/node-pty/src/types.ts +15 -0
  284. package/.output/server/node_modules/node-pty/src/unix/pty.cc +799 -0
  285. package/.output/server/node_modules/node-pty/src/unix/spawn-helper.cc +23 -0
  286. package/.output/server/node_modules/node-pty/src/unixTerminal.test.ts +367 -0
  287. package/.output/server/node_modules/node-pty/src/unixTerminal.ts +388 -0
  288. package/.output/server/node_modules/node-pty/src/utils.ts +29 -0
  289. package/.output/server/node_modules/node-pty/src/win/conpty.cc +583 -0
  290. package/.output/server/node_modules/node-pty/src/win/conpty.h +41 -0
  291. package/.output/server/node_modules/node-pty/src/win/conpty_console_list.cc +44 -0
  292. package/.output/server/node_modules/node-pty/src/win/path_util.cc +95 -0
  293. package/.output/server/node_modules/node-pty/src/win/path_util.h +26 -0
  294. package/.output/server/node_modules/node-pty/src/win/winpty.cc +333 -0
  295. package/.output/server/node_modules/node-pty/src/windowsConoutConnection.ts +82 -0
  296. package/.output/server/node_modules/node-pty/src/windowsPtyAgent.test.ts +94 -0
  297. package/.output/server/node_modules/node-pty/src/windowsPtyAgent.ts +321 -0
  298. package/.output/server/node_modules/node-pty/src/windowsTerminal.test.ts +229 -0
  299. package/.output/server/node_modules/node-pty/src/windowsTerminal.ts +203 -0
  300. package/.output/server/node_modules/node-pty/src/worker/conoutSocketWorker.ts +22 -0
  301. package/.output/server/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/OpenConsole.exe +0 -0
  302. package/.output/server/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/conpty.dll +0 -0
  303. package/.output/server/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/OpenConsole.exe +0 -0
  304. package/.output/server/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/conpty.dll +0 -0
  305. package/.output/server/node_modules/node-pty/typings/node-pty.d.ts +211 -0
  306. package/.output/server/package.json +1 -0
  307. package/package.json +11 -4
  308. package/.output/public/assets/routes-DynLhCvj.js +0 -2195
  309. package/.output/public/assets/styles-DJ9ubgcc.css +0 -2
  310. package/scripts/patch-react-jsx-dev-runtime.mjs +0 -93
  311. /package/.output/public/assets/{wasm-CEUrWlVz.js → wasm-D_MQmneJ.js} +0 -0
@@ -1,8 +1,8 @@
1
1
  import { i as __toESM } from "../_runtime.mjs";
2
2
  import { $ as require_react, Q as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
3
3
  import { a as createRouter, c as createRootRoute, n as Scripts, r as HeadContent, s as createFileRoute } from "../_libs/@tanstack/react-router+[...].mjs";
4
- import { R as CircleCheck, a as TriangleAlert, v as OctagonX, w as Info } from "../_libs/lucide-react.mjs";
5
- import { B as createCompactionSummaryItem, G as extractToolText, I as appliedThemeClassColorMode, J as mergeAssistantBlocksForStreaming, L as assistantBlocksFromMessage, M as TooltipProvider, R as buildItemsFromSync, T as Spinner, U as extractMessageImages, W as extractMessageText$1, f as PICO_SHIKI_VARIABLE_DEFAULTS, kt as toolCategoryFromTool, n as APPLIED_THEME_STORAGE_KEY, t as APPLIED_THEME_CLASSES, u as PICO_CODE_SHIKI_THEME, x as Route$54 } from "./routes-9nZumcXQ.mjs";
4
+ import { T as Info, a as TriangleAlert, y as OctagonX, z as CircleCheck } from "../_libs/lucide-react.mjs";
5
+ import { B as buildItemsFromSync, H as createCompactionSummaryItem, J as extractToolText, K as extractMessageImages, Lt as toolCategoryFromTool, P as TooltipProvider, R as appliedThemeClassColorMode, T as Spinner, Z as mergeAssistantBlocksForStreaming, f as PICO_SHIKI_VARIABLE_DEFAULTS, n as APPLIED_THEME_STORAGE_KEY, q as extractMessageText$1, t as APPLIED_THEME_CLASSES, u as PICO_CODE_SHIKI_THEME, x as Route$59, z as assistantBlocksFromMessage } from "./routes-CuWg5WTI.mjs";
6
6
  import { t as QueryClient } from "../_libs/tanstack__query-core.mjs";
7
7
  import { t as setupRouterSsrQueryIntegration } from "../_libs/@tanstack/react-router-ssr-query+[...].mjs";
8
8
  import { n as HotkeysProvider } from "../_libs/tanstack__react-hotkeys.mjs";
@@ -11,16 +11,17 @@ import { t as Toaster } from "../_libs/sonner.mjs";
11
11
  import { c as bundledLanguages, l as bundledLanguagesAlias, s as codeToHtml, u as createCssVariablesTheme } from "../_libs/@pierre/diffs+[...].mjs";
12
12
  import { t as createTwoFilesPatch } from "../_libs/diff.mjs";
13
13
  import { n as Debouncer } from "../_libs/tanstack__pacer.mjs";
14
+ import { createRequire } from "node:module";
14
15
  import { createHash, randomUUID } from "node:crypto";
15
16
  import fs, { constants, existsSync, readFileSync, watch } from "node:fs";
16
17
  import { fileURLToPath, pathToFileURL } from "node:url";
17
18
  import path, { basename, dirname, isAbsolute, join, resolve } from "node:path";
18
- import { access, mkdir, readFile, readdir, realpath, rename, stat, unlink, writeFile } from "node:fs/promises";
19
+ import { access, chmod, mkdir, readFile, readdir, realpath, rename, stat, unlink, writeFile } from "node:fs/promises";
19
20
  import os, { homedir } from "node:os";
20
21
  import { performance } from "node:perf_hooks";
21
22
  import { isMainThread } from "node:worker_threads";
22
23
  import { execSync, spawn } from "node:child_process";
23
- //#region node_modules/.nitro/vite/services/ssr/assets/router-D36lUq7O.js
24
+ //#region node_modules/.nitro/vite/services/ssr/assets/router-l__gf5Y7.js
24
25
  var import_react = /* @__PURE__ */ __toESM(require_react());
25
26
  var import_jsx_runtime = require_jsx_runtime();
26
27
  function sonnerThemeFromAppliedTheme(theme) {
@@ -87,15 +88,19 @@ function AppProviders({ children }) {
87
88
  })
88
89
  });
89
90
  }
90
- var styles_default = "/assets/styles-DJ9ubgcc.css";
91
+ var styles_default = "/assets/styles-B1ITYh-r.css";
91
92
  var TANSTACK_DEVTOOLS_SETTINGS_KEY = "tanstack_devtools_settings";
92
- var TANSTACK_DEVTOOLS_DEFAULTS_STORAGE_KEY = "pico-tanstack-devtools-defaults-v1";
93
+ var TANSTACK_DEVTOOLS_DEFAULTS_STORAGE_KEY = "pico-tanstack-devtools-defaults-v2";
93
94
  var TANSTACK_DEVTOOLS_CONFIG = {
94
95
  position: "bottom-right",
95
- openHotkey: ["Control", "`"],
96
+ openHotkey: [
97
+ "Control",
98
+ "Shift",
99
+ "`"
100
+ ],
96
101
  triggerHidden: true
97
102
  };
98
- var Route$53 = createRootRoute({
103
+ var Route$58 = createRootRoute({
99
104
  head: () => ({
100
105
  meta: [
101
106
  { charSet: "utf-8" },
@@ -630,6 +635,312 @@ async function buildHighlightPayload(options) {
630
635
  }))
631
636
  };
632
637
  }
638
+ var TERMINAL_BACKLOG_MAX_CHUNKS = 500;
639
+ var TERMINAL_BACKLOG_MAX_BYTES = 512 * 1024;
640
+ var TERMINAL_EXITED_TTL_MS = 1800 * 1e3;
641
+ var TERMINAL_CLEANUP_INTERVAL_MS = 60 * 1e3;
642
+ var TERMINAL_MIN_COLS = 20;
643
+ var TERMINAL_MAX_COLS = 500;
644
+ var TERMINAL_MIN_ROWS = 5;
645
+ var TERMINAL_MAX_ROWS = 200;
646
+ var TERMINAL_DEFAULT_COLS = 100;
647
+ var TERMINAL_DEFAULT_ROWS = 30;
648
+ var TERMINAL_KEY_MAX_LENGTH = 256;
649
+ var require = createRequire(import.meta.url);
650
+ var ensureSpawnHelperExecutablePromise;
651
+ function normalizeDimension(value, fallback, min, max) {
652
+ const numericValue = typeof value === "number" ? value : Number(value);
653
+ if (!Number.isFinite(numericValue)) return fallback;
654
+ return Math.min(max, Math.max(min, Math.round(numericValue)));
655
+ }
656
+ function createTerminalEnv() {
657
+ const env = {};
658
+ for (const [key, value] of Object.entries(process.env)) if (typeof value === "string") env[key] = value;
659
+ delete env.ZELLIJ;
660
+ delete env.ZELLIJ_SESSION_NAME;
661
+ delete env.TMUX;
662
+ delete env.TMUX_PANE;
663
+ env.TERM = "xterm-256color";
664
+ env.COLORTERM = "truecolor";
665
+ return env;
666
+ }
667
+ function defaultShell() {
668
+ if (process.platform === "win32") return process.env.COMSPEC || "powershell.exe";
669
+ return process.env.SHELL || "/bin/sh";
670
+ }
671
+ async function ensureNodePtySpawnHelperExecutable() {
672
+ if (process.platform === "win32") return;
673
+ ensureSpawnHelperExecutablePromise ??= (async () => {
674
+ try {
675
+ const helperPath = join(dirname(dirname(require.resolve("node-pty"))), "prebuilds", `${process.platform}-${process.arch}`, "spawn-helper");
676
+ const helperStat = await stat(helperPath).catch(() => null);
677
+ if (!helperStat) return;
678
+ if ((helperStat.mode & 73) !== 0) return;
679
+ await chmod(helperPath, helperStat.mode | 493);
680
+ } catch {}
681
+ })();
682
+ await ensureSpawnHelperExecutablePromise;
683
+ }
684
+ function terminalLabel(shell) {
685
+ return basename(shell) || shell;
686
+ }
687
+ function eventSize(event) {
688
+ if (event.type === "output") return event.data.length;
689
+ return JSON.stringify(event).length;
690
+ }
691
+ function formatTerminalError(error) {
692
+ if (error instanceof Error && error.message.trim()) return error.message;
693
+ if (typeof error === "string" && error.trim()) return error;
694
+ return "Unknown terminal error";
695
+ }
696
+ function sseFrame(event) {
697
+ return `data: ${JSON.stringify(event)}\n\n`;
698
+ }
699
+ function exitPayload(exitCode, signal) {
700
+ return typeof signal === "number" && signal > 0 ? {
701
+ exitCode,
702
+ signal
703
+ } : { exitCode };
704
+ }
705
+ function exitEvent(exitCode, signal) {
706
+ return {
707
+ type: "exit",
708
+ ...exitPayload(exitCode, signal)
709
+ };
710
+ }
711
+ function normalizeTerminalKey(value) {
712
+ if (typeof value !== "string") return void 0;
713
+ const normalized = value.trim();
714
+ if (!normalized) return void 0;
715
+ return normalized.slice(0, TERMINAL_KEY_MAX_LENGTH);
716
+ }
717
+ function terminalLookupKey(scopeKey, terminalKey) {
718
+ return `${scopeKey}\0${terminalKey}`;
719
+ }
720
+ var PicoTerminalManager = class {
721
+ terminals = /* @__PURE__ */ new Map();
722
+ terminalKeys = /* @__PURE__ */ new Map();
723
+ encoder = new TextEncoder();
724
+ cleanupTimer;
725
+ constructor() {
726
+ this.cleanupTimer = setInterval(() => {
727
+ this.cleanupExitedTerminals();
728
+ }, TERMINAL_CLEANUP_INTERVAL_MS);
729
+ this.cleanupTimer.unref?.();
730
+ }
731
+ async createTerminal({ clientKey, cols, cwd, rows, scopeKey }) {
732
+ await ensureNodePtySpawnHelperExecutable();
733
+ const terminalKey = normalizeTerminalKey(clientKey);
734
+ const lookupKey = terminalKey ? terminalLookupKey(scopeKey, terminalKey) : void 0;
735
+ const existingId = lookupKey ? this.terminalKeys.get(lookupKey) : void 0;
736
+ const existingRecord = existingId ? this.terminals.get(existingId) : void 0;
737
+ if (existingRecord && !existingRecord.exited) {
738
+ existingRecord.lastUsedAt = Date.now();
739
+ return {
740
+ id: existingRecord.id,
741
+ backend: existingRecord.backend,
742
+ cwd: existingRecord.cwd,
743
+ shell: terminalLabel(existingRecord.shell),
744
+ reused: true
745
+ };
746
+ }
747
+ if (existingRecord) await this.disposeTerminalRecord(existingRecord.id);
748
+ const spawnConfig = this.createSpawnConfig();
749
+ const pty = await this.spawnPty(spawnConfig, cwd, cols, rows);
750
+ const id = randomUUID();
751
+ const now = Date.now();
752
+ const record = {
753
+ id,
754
+ args: spawnConfig.args,
755
+ backend: spawnConfig.backend,
756
+ command: spawnConfig.command,
757
+ scopeKey,
758
+ cwd,
759
+ shell: spawnConfig.shellLabel,
760
+ pty,
761
+ dataDisposable: { dispose: () => {} },
762
+ exitDisposable: { dispose: () => {} },
763
+ subscribers: /* @__PURE__ */ new Set(),
764
+ backlog: [],
765
+ backlogBytes: 0,
766
+ createdAt: now,
767
+ lastUsedAt: now
768
+ };
769
+ if (lookupKey) record.lookupKey = lookupKey;
770
+ if (terminalKey) record.terminalKey = terminalKey;
771
+ this.attachPtyHandlers(record);
772
+ this.terminals.set(id, record);
773
+ if (lookupKey) this.terminalKeys.set(lookupKey, id);
774
+ return {
775
+ id,
776
+ backend: record.backend,
777
+ cwd,
778
+ shell: terminalLabel(record.shell),
779
+ reused: false
780
+ };
781
+ }
782
+ createEventsResponse(id, scopeKey, signal) {
783
+ const record = this.assertTerminalScope(id, scopeKey);
784
+ record.lastUsedAt = Date.now();
785
+ let cleanupStream = () => {};
786
+ const stream = new ReadableStream({
787
+ start: (controller) => {
788
+ let closed = false;
789
+ const send = (event) => {
790
+ if (closed) return;
791
+ try {
792
+ controller.enqueue(this.encoder.encode(sseFrame(event)));
793
+ } catch {
794
+ cleanup();
795
+ }
796
+ };
797
+ const cleanup = () => {
798
+ if (closed) return;
799
+ closed = true;
800
+ record.subscribers.delete(send);
801
+ signal.removeEventListener("abort", cleanup);
802
+ try {
803
+ controller.close();
804
+ } catch {}
805
+ };
806
+ cleanupStream = cleanup;
807
+ record.subscribers.add(send);
808
+ signal.addEventListener("abort", cleanup, { once: true });
809
+ send({
810
+ type: "ready",
811
+ backend: record.backend,
812
+ id: record.id,
813
+ cwd: record.cwd,
814
+ shell: terminalLabel(record.shell)
815
+ });
816
+ for (const event of record.backlog) send(event);
817
+ if (record.exited) send(exitEvent(record.exited.exitCode, record.exited.signal));
818
+ },
819
+ cancel: () => {
820
+ cleanupStream();
821
+ }
822
+ });
823
+ return new Response(stream, { headers: {
824
+ "cache-control": "no-cache, no-transform",
825
+ connection: "keep-alive",
826
+ "content-type": "text/event-stream; charset=utf-8",
827
+ "x-accel-buffering": "no"
828
+ } });
829
+ }
830
+ writeTerminal(id, scopeKey, data) {
831
+ const record = this.assertTerminalScope(id, scopeKey);
832
+ if (record.exited) throw new Error("Terminal has exited.");
833
+ if (typeof data !== "string") throw new Error("Terminal input data is required.");
834
+ record.lastUsedAt = Date.now();
835
+ record.pty.write(data);
836
+ }
837
+ resizeTerminal(id, scopeKey, dimensions) {
838
+ const record = this.assertTerminalScope(id, scopeKey);
839
+ if (record.exited) return;
840
+ const cols = normalizeDimension(dimensions.cols, record.pty.cols, TERMINAL_MIN_COLS, TERMINAL_MAX_COLS);
841
+ const rows = normalizeDimension(dimensions.rows, record.pty.rows, TERMINAL_MIN_ROWS, TERMINAL_MAX_ROWS);
842
+ record.lastUsedAt = Date.now();
843
+ record.pty.resize(cols, rows);
844
+ }
845
+ async closeTerminal(id, scopeKey) {
846
+ this.assertTerminalScope(id, scopeKey);
847
+ await this.disposeTerminalRecord(id);
848
+ }
849
+ dispose() {
850
+ clearInterval(this.cleanupTimer);
851
+ for (const id of this.terminals.keys()) this.disposeTerminalRecord(id);
852
+ }
853
+ async spawnPty(spawnConfig, cwd, cols, rows) {
854
+ return (await import("node-pty")).spawn(spawnConfig.command, spawnConfig.args, {
855
+ cols: normalizeDimension(cols, TERMINAL_DEFAULT_COLS, TERMINAL_MIN_COLS, TERMINAL_MAX_COLS),
856
+ cwd,
857
+ env: createTerminalEnv(),
858
+ name: "xterm-256color",
859
+ rows: normalizeDimension(rows, TERMINAL_DEFAULT_ROWS, TERMINAL_MIN_ROWS, TERMINAL_MAX_ROWS)
860
+ });
861
+ }
862
+ attachPtyHandlers(record) {
863
+ record.dataDisposable = record.pty.onData((data) => {
864
+ this.publish(record, {
865
+ type: "output",
866
+ data
867
+ });
868
+ });
869
+ record.exitDisposable = record.pty.onExit((event) => {
870
+ this.handlePtyExit(record, event.exitCode, event.signal);
871
+ });
872
+ }
873
+ handlePtyExit(record, exitCode, signal) {
874
+ if (this.terminals.get(record.id) !== record) return;
875
+ record.exited = exitPayload(exitCode, signal);
876
+ this.publish(record, exitEvent(exitCode, signal));
877
+ }
878
+ createSpawnConfig() {
879
+ const shell = defaultShell();
880
+ return {
881
+ args: [],
882
+ backend: "shell",
883
+ command: shell,
884
+ shellLabel: shell
885
+ };
886
+ }
887
+ assertTerminalScope(id, scopeKey) {
888
+ const record = this.terminals.get(id);
889
+ if (!record) throw new Error("Terminal not found.");
890
+ if (record.scopeKey !== scopeKey) throw new Error("Terminal not found for this session.");
891
+ return record;
892
+ }
893
+ publish(record, event) {
894
+ record.lastUsedAt = Date.now();
895
+ this.rememberBacklog(record, event);
896
+ for (const subscriber of record.subscribers) try {
897
+ subscriber(event);
898
+ } catch {
899
+ record.subscribers.delete(subscriber);
900
+ }
901
+ }
902
+ rememberBacklog(record, event) {
903
+ if (event.type !== "output") return;
904
+ record.backlog.push(event);
905
+ record.backlogBytes += eventSize(event);
906
+ while (record.backlog.length > TERMINAL_BACKLOG_MAX_CHUNKS || record.backlogBytes > TERMINAL_BACKLOG_MAX_BYTES) {
907
+ const removed = record.backlog.shift();
908
+ if (!removed) break;
909
+ record.backlogBytes = Math.max(0, record.backlogBytes - eventSize(removed));
910
+ }
911
+ }
912
+ async disposeTerminalRecord(id) {
913
+ const record = this.terminals.get(id);
914
+ if (!record) return;
915
+ this.terminals.delete(id);
916
+ if (record.lookupKey) this.terminalKeys.delete(record.lookupKey);
917
+ record.subscribers.clear();
918
+ try {
919
+ record.dataDisposable.dispose();
920
+ } catch {}
921
+ try {
922
+ record.exitDisposable.dispose();
923
+ } catch {}
924
+ try {
925
+ record.pty.kill();
926
+ } catch (error) {
927
+ const message = formatTerminalError(error);
928
+ if (!record.exited) this.rememberBacklog(record, {
929
+ type: "error",
930
+ error: message
931
+ });
932
+ }
933
+ }
934
+ cleanupExitedTerminals() {
935
+ const now = Date.now();
936
+ for (const record of this.terminals.values()) {
937
+ if (record.subscribers.size > 0) continue;
938
+ if (!record.exited) continue;
939
+ if (now - record.lastUsedAt < TERMINAL_EXITED_TTL_MS) continue;
940
+ this.disposeTerminalRecord(record.id);
941
+ }
942
+ }
943
+ };
633
944
  function messageItemIndex(item) {
634
945
  const match = item.itemKey?.match(/^message:(\d+)$/);
635
946
  if (!match) return -1;
@@ -2486,6 +2797,39 @@ async function unstageDirectoryGitAll(cwd) {
2486
2797
  stderr: result.stderr
2487
2798
  };
2488
2799
  }
2800
+ async function unstageDirectoryGitFile(cwd, path, previousPath) {
2801
+ const normalizedCwd = normalizeGitCwd(cwd);
2802
+ const normalizedPath = assertGitFilePath(path);
2803
+ const normalizedPreviousPath = previousPath ? assertGitFilePath(previousPath) : void 0;
2804
+ if (!normalizedCwd) throw new Error("cwd is required");
2805
+ if (!await isInsideWorkTree(normalizedCwd)) throw new Error("No git repository detected");
2806
+ const paths = uniqueGitActionPaths([normalizedPreviousPath, normalizedPath]);
2807
+ const result = await gitRepositoryHasHead(normalizedCwd) ? await runCommand("git", [
2808
+ "restore",
2809
+ "--staged",
2810
+ "--",
2811
+ ...paths
2812
+ ], {
2813
+ cwd: normalizedCwd,
2814
+ timeoutMs: GIT_ACTION_TIMEOUT_MS
2815
+ }) : await runCommand("git", [
2816
+ "rm",
2817
+ "-r",
2818
+ "--cached",
2819
+ "--ignore-unmatch",
2820
+ "--",
2821
+ ...paths
2822
+ ], {
2823
+ cwd: normalizedCwd,
2824
+ timeoutMs: GIT_ACTION_TIMEOUT_MS
2825
+ });
2826
+ if (result.code !== 0) throw new Error(gitCommandErrorMessage("Failed to unstage changes", result));
2827
+ invalidateDirectoryGitCaches(normalizedCwd);
2828
+ return {
2829
+ stdout: result.stdout,
2830
+ stderr: result.stderr
2831
+ };
2832
+ }
2489
2833
  async function discardDirectoryGitAll(cwd) {
2490
2834
  const normalizedCwd = normalizeGitCwd(cwd);
2491
2835
  if (!normalizedCwd) throw new Error("cwd is required");
@@ -3902,6 +4246,30 @@ function normalizeClientPendingId(value) {
3902
4246
  if (pendingId.length > 128) return void 0;
3903
4247
  return pendingId;
3904
4248
  }
4249
+ function normalizePromptDraftOwnerKey(value) {
4250
+ if (typeof value !== "string") return "";
4251
+ const ownerKey = value.trim();
4252
+ if (!ownerKey.startsWith("draft:")) return "";
4253
+ if (ownerKey.length > 1024) return "";
4254
+ return ownerKey;
4255
+ }
4256
+ function normalizePromptDraftCwd(value) {
4257
+ if (typeof value !== "string") return void 0;
4258
+ return value.trim() || void 0;
4259
+ }
4260
+ function promptDraftOwnerKeyForCwd(cwd) {
4261
+ return `draft:${cwd?.trim() || "default"}`;
4262
+ }
4263
+ function promptDraftCwdFromOwnerKey(ownerKey) {
4264
+ if (!ownerKey || ownerKey === promptDraftOwnerKeyForCwd(void 0)) return;
4265
+ return ownerKey.slice(6).trim() || void 0;
4266
+ }
4267
+ function promptDraftTargetMatches(entry, target) {
4268
+ if (target.cwd && entry.cwd === target.cwd) return true;
4269
+ const entryOwnerKey = promptDraftOwnerKeyForCwd(entry.cwd);
4270
+ if (target.ownerKey === entryOwnerKey) return true;
4271
+ return target.ownerKey === promptDraftOwnerKeyForCwd(void 0);
4272
+ }
3905
4273
  var PicoRuntime = class {
3906
4274
  encoder = new TextEncoder();
3907
4275
  contexts = /* @__PURE__ */ new Map();
@@ -3916,6 +4284,7 @@ var PicoRuntime = class {
3916
4284
  gitWatchManager = new GitWatchManager((change) => {
3917
4285
  this.handleGitWatchChange(change);
3918
4286
  });
4287
+ terminalManager = new PicoTerminalManager();
3919
4288
  sessionIndexCache;
3920
4289
  sessionIndexPromise;
3921
4290
  sdkPromise;
@@ -4845,6 +5214,32 @@ var PicoRuntime = class {
4845
5214
  if (!entry || !this.isDraftEntry(entry)) return;
4846
5215
  if (![...this.contexts.values()].some((context) => context.activeKey === entry.key || context.draftKey === entry.key)) await this.disposeSessionEntry(entry);
4847
5216
  }
5217
+ async recoverMissingPromptDraftTarget(context, target) {
5218
+ if (!target.ownerKey && !target.cwd) return void 0;
5219
+ const matchesTarget = (entry) => Boolean(entry && this.isDraftEntry(entry) && promptDraftTargetMatches(entry, target));
5220
+ const recoveredCwd = target.cwd || promptDraftCwdFromOwnerKey(target.ownerKey) || (target.ownerKey === promptDraftOwnerKeyForCwd(void 0) ? resolveScopeCwd(context.sessionScope, process.cwd()) : void 0);
5221
+ const activeEntry = this.getActiveEntry(context);
5222
+ if (matchesTarget(activeEntry)) return activeEntry;
5223
+ if (activeEntry && recoveredCwd && activeEntry.cwd === recoveredCwd && this.getEntryStreamingState(activeEntry)) return activeEntry;
5224
+ const draftEntry = context.draftKey ? this.sessionEntries.get(context.draftKey) : void 0;
5225
+ if (draftEntry && matchesTarget(draftEntry)) {
5226
+ await this.activateContextSession(context, draftEntry);
5227
+ return draftEntry;
5228
+ }
5229
+ if (!recoveredCwd) return void 0;
5230
+ const nextEntry = await this.createNewSessionEntry(recoveredCwd, {
5231
+ draft: true,
5232
+ sessionDir: activeEntry && recoveredCwd === activeEntry.cwd ? activeEntry.session.sessionManager.getSessionDir?.() : void 0,
5233
+ sessionStartEvent: {
5234
+ type: "session_start",
5235
+ reason: "new",
5236
+ previousSessionFile: activeEntry?.session.sessionFile
5237
+ }
5238
+ });
5239
+ context.draftKey = nextEntry.key;
5240
+ await this.activateContextSession(context, nextEntry);
5241
+ return nextEntry;
5242
+ }
4848
5243
  async clearContextDraft(context) {
4849
5244
  await clearContextDraft({
4850
5245
  context,
@@ -4958,6 +5353,9 @@ var PicoRuntime = class {
4958
5353
  getBaseCwd(activeEntry, context) {
4959
5354
  return activeEntry.cwd || resolveScopeCwd(context.sessionScope, process.cwd());
4960
5355
  }
5356
+ getTerminalScopeKey(activeEntry, context) {
5357
+ return `${context.id}:${activeEntry.key}:${this.getBaseCwd(activeEntry, context)}`;
5358
+ }
4961
5359
  async createSessionEntryFromRuntime(runtime, options) {
4962
5360
  const startedAt = performance.now();
4963
5361
  this.logRuntimeDiagnostics(runtime.diagnostics);
@@ -5705,7 +6103,33 @@ var PicoRuntime = class {
5705
6103
  }
5706
6104
  }
5707
6105
  async prompt(request, body) {
5708
- const { context, activeEntry } = await this.resolveRequest(request, {
6106
+ const url = new URL(request.url);
6107
+ const requestedSessionKey = url.searchParams.get("sessionKey")?.trim() || "";
6108
+ const requestedDraftTarget = {
6109
+ ownerKey: normalizePromptDraftOwnerKey(body.draftOwnerKey),
6110
+ cwd: normalizePromptDraftCwd(body.draftCwd)
6111
+ };
6112
+ let resolvedContext;
6113
+ let resolvedActiveEntry;
6114
+ if (requestedSessionKey && !this.sessionEntries.has(requestedSessionKey)) {
6115
+ const context = this.ensureContext(url.searchParams.get("context") || "default");
6116
+ context.sessionScope = normalizeSessionScope(url.searchParams.get("scope"), process.cwd());
6117
+ const recoveredEntry = await this.recoverMissingPromptDraftTarget(context, requestedDraftTarget);
6118
+ if (!recoveredEntry) throw new Error("Requested session is no longer available.");
6119
+ this.logSessionLoadDebug("prompt:recovered_missing_draft_target", {
6120
+ requestedSessionKey,
6121
+ requestedDraftOwnerKey: requestedDraftTarget.ownerKey || void 0,
6122
+ requestedDraftCwd: requestedDraftTarget.cwd,
6123
+ ...this.sessionDebugDetails(recoveredEntry)
6124
+ });
6125
+ resolvedContext = context;
6126
+ resolvedActiveEntry = recoveredEntry;
6127
+ }
6128
+ const { context, activeEntry } = resolvedActiveEntry ? {
6129
+ url,
6130
+ context: resolvedContext,
6131
+ activeEntry: resolvedActiveEntry
6132
+ } : await this.resolveRequest(request, {
5709
6133
  preferActiveDraft: true,
5710
6134
  preferActiveDraftOverRequestedSession: true
5711
6135
  });
@@ -5882,7 +6306,9 @@ var PicoRuntime = class {
5882
6306
  await this.activateContextSession(context, nextEntry);
5883
6307
  return {
5884
6308
  ok: true,
5885
- draft: true
6309
+ draft: true,
6310
+ sessionKey: nextEntry.key,
6311
+ cwd: nextEntry.cwd
5886
6312
  };
5887
6313
  }
5888
6314
  async selectSession(request) {
@@ -6656,6 +7082,39 @@ var PicoRuntime = class {
6656
7082
  async resolveUiRequest(id, body) {
6657
7083
  return resolvePendingUiRequest(this.pendingUiRequests, id, body);
6658
7084
  }
7085
+ async createTerminal(request, body) {
7086
+ const { context, activeEntry } = await this.resolveRequest(request);
7087
+ const cwd = this.getBaseCwd(activeEntry, context);
7088
+ return {
7089
+ ok: true,
7090
+ ...await this.terminalManager.createTerminal({
7091
+ clientKey: body.clientKey,
7092
+ cols: body.cols,
7093
+ cwd,
7094
+ rows: body.rows,
7095
+ scopeKey: this.getTerminalScopeKey(activeEntry, context)
7096
+ })
7097
+ };
7098
+ }
7099
+ async createTerminalEventsResponse(request, id) {
7100
+ const { context, activeEntry } = await this.resolveRequest(request);
7101
+ return this.terminalManager.createEventsResponse(id, this.getTerminalScopeKey(activeEntry, context), request.signal);
7102
+ }
7103
+ async writeTerminalInput(request, id, body) {
7104
+ const { context, activeEntry } = await this.resolveRequest(request);
7105
+ this.terminalManager.writeTerminal(id, this.getTerminalScopeKey(activeEntry, context), body.data);
7106
+ return { ok: true };
7107
+ }
7108
+ async resizeTerminal(request, id, body) {
7109
+ const { context, activeEntry } = await this.resolveRequest(request);
7110
+ this.terminalManager.resizeTerminal(id, this.getTerminalScopeKey(activeEntry, context), body);
7111
+ return { ok: true };
7112
+ }
7113
+ async closeTerminal(request, id) {
7114
+ const { context, activeEntry } = await this.resolveRequest(request);
7115
+ await this.terminalManager.closeTerminal(id, this.getTerminalScopeKey(activeEntry, context));
7116
+ return { ok: true };
7117
+ }
6659
7118
  async highlightCode(code, language) {
6660
7119
  const text = typeof code === "string" ? code : "";
6661
7120
  try {
@@ -6713,6 +7172,7 @@ var PicoRuntime = class {
6713
7172
  pending.resolve({ cancelled: true });
6714
7173
  } catch {}
6715
7174
  this.pendingUiRequests.clear();
7175
+ this.terminalManager.dispose();
6716
7176
  await Promise.all([...this.sessionEntries.values()].map((entry) => this.disposeSessionEntry(entry)));
6717
7177
  }
6718
7178
  };
@@ -6720,7 +7180,7 @@ function getPicoRuntime() {
6720
7180
  globalThis.__picoRuntime ??= new PicoRuntime();
6721
7181
  return globalThis.__picoRuntime;
6722
7182
  }
6723
- var Route$52 = createFileRoute("/events")({ server: { handlers: { GET: ({ request }) => getPicoRuntime().createEventsResponse(request) } } });
7183
+ var Route$57 = createFileRoute("/events")({ server: { handlers: { GET: ({ request }) => getPicoRuntime().createEventsResponse(request) } } });
6724
7184
  function jsonResponse(data, init = 200) {
6725
7185
  const responseInit = typeof init === "number" ? { status: init } : init;
6726
7186
  const headers = new Headers(responseInit.headers);
@@ -6756,7 +7216,7 @@ function routeErrorResponse(error, fallbackMessage) {
6756
7216
  async function readRequestJson(request) {
6757
7217
  return await request.json().catch(() => ({}));
6758
7218
  }
6759
- var Route$51 = createFileRoute("/api/thinking")({ server: { handlers: { POST: async ({ request }) => {
7219
+ var Route$56 = createFileRoute("/api/thinking")({ server: { handlers: { POST: async ({ request }) => {
6760
7220
  try {
6761
7221
  const body = await readRequestJson(request);
6762
7222
  return jsonResponse(await getPicoRuntime().setThinking(request, body));
@@ -6764,7 +7224,15 @@ var Route$51 = createFileRoute("/api/thinking")({ server: { handlers: { POST: as
6764
7224
  return routeErrorResponse(error, "Failed to update thinking level");
6765
7225
  }
6766
7226
  } } } });
6767
- var Route$50 = createFileRoute("/api/slash-command")({ server: { handlers: { POST: async ({ request }) => {
7227
+ var Route$55 = createFileRoute("/api/terminal")({ server: { handlers: { POST: async ({ request }) => {
7228
+ try {
7229
+ const body = await readRequestJson(request);
7230
+ return jsonResponse(await getPicoRuntime().createTerminal(request, body));
7231
+ } catch (error) {
7232
+ return routeErrorResponse(error, "Failed to create terminal");
7233
+ }
7234
+ } } } });
7235
+ var Route$54 = createFileRoute("/api/slash-command")({ server: { handlers: { POST: async ({ request }) => {
6768
7236
  try {
6769
7237
  const body = await readRequestJson(request);
6770
7238
  return jsonResponse(await getPicoRuntime().runSlashCommand(request, body));
@@ -6772,7 +7240,7 @@ var Route$50 = createFileRoute("/api/slash-command")({ server: { handlers: { POS
6772
7240
  return routeErrorResponse(error, "Failed to run slash command");
6773
7241
  }
6774
7242
  } } } });
6775
- var Route$49 = createFileRoute("/api/provider-usage")({ server: { handlers: { GET: async ({ request }) => {
7243
+ var Route$53 = createFileRoute("/api/provider-usage")({ server: { handlers: { GET: async ({ request }) => {
6776
7244
  const provider = new URL(request.url).searchParams.get("provider") || void 0;
6777
7245
  try {
6778
7246
  return jsonResponse({
@@ -6783,7 +7251,7 @@ var Route$49 = createFileRoute("/api/provider-usage")({ server: { handlers: { GE
6783
7251
  return routeErrorResponse(error, "Failed to read provider usage");
6784
7252
  }
6785
7253
  } } } });
6786
- var Route$48 = createFileRoute("/api/prompt")({ server: { handlers: { POST: async ({ request }) => {
7254
+ var Route$52 = createFileRoute("/api/prompt")({ server: { handlers: { POST: async ({ request }) => {
6787
7255
  try {
6788
7256
  const body = await readRequestJson(request);
6789
7257
  return jsonResponse(await getPicoRuntime().prompt(request, body));
@@ -7338,7 +7806,7 @@ async function listFileReferenceEntries(query, baseCwd, { isQuotedPrefix = false
7338
7806
  };
7339
7807
  });
7340
7808
  }
7341
- var Route$47 = createFileRoute("/api/path-completions")({ server: { handlers: { POST: async ({ request }) => {
7809
+ var Route$51 = createFileRoute("/api/path-completions")({ server: { handlers: { POST: async ({ request }) => {
7342
7810
  try {
7343
7811
  const body = await readRequestJson(request);
7344
7812
  const { context, activeEntry } = await getPicoRuntime().resolveRequest(request);
@@ -7354,7 +7822,7 @@ var Route$47 = createFileRoute("/api/path-completions")({ server: { handlers: {
7354
7822
  return routeErrorResponse(error, "Failed to list path completions");
7355
7823
  }
7356
7824
  } } } });
7357
- var Route$46 = createFileRoute("/api/model")({ server: { handlers: { POST: async ({ request }) => {
7825
+ var Route$50 = createFileRoute("/api/model")({ server: { handlers: { POST: async ({ request }) => {
7358
7826
  try {
7359
7827
  const body = await readRequestJson(request);
7360
7828
  return jsonResponse(await getPicoRuntime().setModel(request, body));
@@ -7362,7 +7830,7 @@ var Route$46 = createFileRoute("/api/model")({ server: { handlers: { POST: async
7362
7830
  return routeErrorResponse(error, "Failed to update model");
7363
7831
  }
7364
7832
  } } } });
7365
- var Route$45 = createFileRoute("/api/highlight")({ server: { handlers: { POST: async ({ request }) => {
7833
+ var Route$49 = createFileRoute("/api/highlight")({ server: { handlers: { POST: async ({ request }) => {
7366
7834
  try {
7367
7835
  const body = await readRequestJson(request);
7368
7836
  return jsonResponse(await getPicoRuntime().highlightCode(body.code, body.language));
@@ -7370,7 +7838,7 @@ var Route$45 = createFileRoute("/api/highlight")({ server: { handlers: { POST: a
7370
7838
  return routeErrorResponse(error, "Failed to highlight code");
7371
7839
  }
7372
7840
  } } } });
7373
- var Route$44 = createFileRoute("/api/git-status")({ server: { handlers: { GET: async ({ request }) => {
7841
+ var Route$48 = createFileRoute("/api/git-status")({ server: { handlers: { GET: async ({ request }) => {
7374
7842
  const requestedCwd = new URL(request.url).searchParams.get("cwd") || "";
7375
7843
  if (!requestedCwd.trim()) return errorResponse("cwd is required");
7376
7844
  try {
@@ -7385,10 +7853,12 @@ var Route$44 = createFileRoute("/api/git-status")({ server: { handlers: { GET: a
7385
7853
  return routeErrorResponse(error, "Failed to read git status");
7386
7854
  }
7387
7855
  } } } });
7388
- var Route$43 = createFileRoute("/api/git-stage")({ server: { handlers: { POST: async ({ request }) => {
7856
+ var Route$47 = createFileRoute("/api/git-stage")({ server: { handlers: { POST: async ({ request }) => {
7857
+ let errorFallback = "Failed to stage changes";
7389
7858
  try {
7390
7859
  const body = await readRequestJson(request);
7391
7860
  const action = typeof body.action === "string" ? body.action : "";
7861
+ if (action === "unstage" || action === "unstage-all") errorFallback = "Failed to unstage changes";
7392
7862
  const all = body.all === true;
7393
7863
  const requestedCwd = typeof body.cwd === "string" ? body.cwd : "";
7394
7864
  const path = typeof body.path === "string" ? body.path : "";
@@ -7397,7 +7867,7 @@ var Route$43 = createFileRoute("/api/git-stage")({ server: { handlers: { POST: a
7397
7867
  if (!path.trim() && !all && action !== "stage-all" && action !== "unstage-all") throw new Error("file path is required");
7398
7868
  const { context, activeEntry } = await getPicoRuntime().resolveRequest(request);
7399
7869
  const cwd = await resolveDirectoryPath(requestedCwd, getPicoRuntime().getBaseCwd(activeEntry, context));
7400
- const result = action === "unstage-all" ? await unstageDirectoryGitAll(cwd) : all || action === "stage-all" ? await stageDirectoryGitAll(cwd) : await stageDirectoryGitFile(cwd, path, previousPath || void 0);
7870
+ const result = action === "unstage-all" ? await unstageDirectoryGitAll(cwd) : action === "unstage" ? await unstageDirectoryGitFile(cwd, path, previousPath || void 0) : all || action === "stage-all" ? await stageDirectoryGitAll(cwd) : await stageDirectoryGitFile(cwd, path, previousPath || void 0);
7401
7871
  return jsonResponse({
7402
7872
  ok: true,
7403
7873
  cwd,
@@ -7405,10 +7875,10 @@ var Route$43 = createFileRoute("/api/git-stage")({ server: { handlers: { POST: a
7405
7875
  stderr: result.stderr
7406
7876
  });
7407
7877
  } catch (error) {
7408
- return routeErrorResponse(error, "Failed to stage changes");
7878
+ return routeErrorResponse(error, errorFallback);
7409
7879
  }
7410
7880
  } } } });
7411
- var Route$42 = createFileRoute("/api/git-review")({ server: { handlers: { GET: async ({ request }) => {
7881
+ var Route$46 = createFileRoute("/api/git-review")({ server: { handlers: { GET: async ({ request }) => {
7412
7882
  const url = new URL(request.url);
7413
7883
  const requestedCwd = url.searchParams.get("cwd") || "";
7414
7884
  const requestedPath = url.searchParams.get("path") || "";
@@ -7431,7 +7901,7 @@ var Route$42 = createFileRoute("/api/git-review")({ server: { handlers: { GET: a
7431
7901
  return routeErrorResponse(error, "Failed to read git review file");
7432
7902
  }
7433
7903
  } } } });
7434
- var Route$41 = createFileRoute("/api/git-push")({ server: { handlers: { POST: async ({ request }) => {
7904
+ var Route$45 = createFileRoute("/api/git-push")({ server: { handlers: { POST: async ({ request }) => {
7435
7905
  try {
7436
7906
  const body = await readRequestJson(request);
7437
7907
  const requestedCwd = typeof body.cwd === "string" ? body.cwd : "";
@@ -7450,7 +7920,7 @@ var Route$41 = createFileRoute("/api/git-push")({ server: { handlers: { POST: as
7450
7920
  return routeErrorResponse(error, "Failed to push changes");
7451
7921
  }
7452
7922
  } } } });
7453
- var Route$40 = createFileRoute("/api/git-pull")({ server: { handlers: { POST: async ({ request }) => {
7923
+ var Route$44 = createFileRoute("/api/git-pull")({ server: { handlers: { POST: async ({ request }) => {
7454
7924
  try {
7455
7925
  const body = await readRequestJson(request);
7456
7926
  const requestedCwd = typeof body.cwd === "string" ? body.cwd : "";
@@ -7468,7 +7938,7 @@ var Route$40 = createFileRoute("/api/git-pull")({ server: { handlers: { POST: as
7468
7938
  return routeErrorResponse(error, "Failed to pull changes");
7469
7939
  }
7470
7940
  } } } });
7471
- var Route$39 = createFileRoute("/api/git-discard")({ server: { handlers: { POST: async ({ request }) => {
7941
+ var Route$43 = createFileRoute("/api/git-discard")({ server: { handlers: { POST: async ({ request }) => {
7472
7942
  try {
7473
7943
  const body = await readRequestJson(request);
7474
7944
  const action = typeof body.action === "string" ? body.action : "";
@@ -7492,7 +7962,7 @@ var Route$39 = createFileRoute("/api/git-discard")({ server: { handlers: { POST:
7492
7962
  return routeErrorResponse(error, "Failed to discard changes");
7493
7963
  }
7494
7964
  } } } });
7495
- var Route$38 = createFileRoute("/api/git-diff")({ server: { handlers: { GET: async ({ request }) => {
7965
+ var Route$42 = createFileRoute("/api/git-diff")({ server: { handlers: { GET: async ({ request }) => {
7496
7966
  const url = new URL(request.url);
7497
7967
  const requestedCwd = url.searchParams.get("cwd") || "";
7498
7968
  const requestedPath = url.searchParams.get("path") || "";
@@ -7512,7 +7982,7 @@ var Route$38 = createFileRoute("/api/git-diff")({ server: { handlers: { GET: asy
7512
7982
  return routeErrorResponse(error, "Failed to read git diff");
7513
7983
  }
7514
7984
  } } } });
7515
- var Route$37 = createFileRoute("/api/git-commit-remote-url")({ server: { handlers: { GET: async ({ request }) => {
7985
+ var Route$41 = createFileRoute("/api/git-commit-remote-url")({ server: { handlers: { GET: async ({ request }) => {
7516
7986
  try {
7517
7987
  const url = new URL(request.url);
7518
7988
  const requestedCwd = url.searchParams.get("cwd") || "";
@@ -7533,7 +8003,7 @@ var Route$37 = createFileRoute("/api/git-commit-remote-url")({ server: { handler
7533
8003
  return routeErrorResponse(error, "Failed to read commit remote URL");
7534
8004
  }
7535
8005
  } } } });
7536
- var Route$36 = createFileRoute("/api/git-commit-message")({ server: { handlers: { POST: async ({ request }) => {
8006
+ var Route$40 = createFileRoute("/api/git-commit-message")({ server: { handlers: { POST: async ({ request }) => {
7537
8007
  try {
7538
8008
  const body = await readRequestJson(request);
7539
8009
  const requestedCwd = typeof body.cwd === "string" ? body.cwd : "";
@@ -7552,7 +8022,7 @@ var Route$36 = createFileRoute("/api/git-commit-message")({ server: { handlers:
7552
8022
  return routeErrorResponse(error, "Failed to generate commit message");
7553
8023
  }
7554
8024
  } } } });
7555
- var Route$35 = createFileRoute("/api/git-commit-files")({ server: { handlers: { GET: async ({ request }) => {
8025
+ var Route$39 = createFileRoute("/api/git-commit-files")({ server: { handlers: { GET: async ({ request }) => {
7556
8026
  try {
7557
8027
  const url = new URL(request.url);
7558
8028
  const requestedCwd = url.searchParams.get("cwd") || "";
@@ -7575,7 +8045,7 @@ function normalizeGitCommitDiffMode(value) {
7575
8045
  if (value === "head" || value === "previous") return value;
7576
8046
  return "commit";
7577
8047
  }
7578
- var Route$34 = createFileRoute("/api/git-commit-diff")({ server: { handlers: { GET: async ({ request }) => {
8048
+ var Route$38 = createFileRoute("/api/git-commit-diff")({ server: { handlers: { GET: async ({ request }) => {
7579
8049
  try {
7580
8050
  const url = new URL(request.url);
7581
8051
  const requestedCwd = url.searchParams.get("cwd") || "";
@@ -7612,7 +8082,7 @@ var gitCommitActions = new Set([
7612
8082
  "drop",
7613
8083
  "squash"
7614
8084
  ]);
7615
- var Route$33 = createFileRoute("/api/git-commit-action")({ server: { handlers: { POST: async ({ request }) => {
8085
+ var Route$37 = createFileRoute("/api/git-commit-action")({ server: { handlers: { POST: async ({ request }) => {
7616
8086
  try {
7617
8087
  const body = await readRequestJson(request);
7618
8088
  const requestedCwd = typeof body.cwd === "string" ? body.cwd : "";
@@ -7638,7 +8108,7 @@ var Route$33 = createFileRoute("/api/git-commit-action")({ server: { handlers: {
7638
8108
  return routeErrorResponse(error, "Failed to run commit action");
7639
8109
  }
7640
8110
  } } } });
7641
- var Route$32 = createFileRoute("/api/git-commit")({ server: { handlers: { POST: async ({ request }) => {
8111
+ var Route$36 = createFileRoute("/api/git-commit")({ server: { handlers: { POST: async ({ request }) => {
7642
8112
  try {
7643
8113
  const body = await readRequestJson(request);
7644
8114
  const requestedCwd = typeof body.cwd === "string" ? body.cwd : "";
@@ -7663,7 +8133,7 @@ var Route$32 = createFileRoute("/api/git-commit")({ server: { handlers: { POST:
7663
8133
  return routeErrorResponse(error, "Failed to commit changes");
7664
8134
  }
7665
8135
  } } } });
7666
- var Route$31 = createFileRoute("/api/git-checkout")({ server: { handlers: { POST: async ({ request }) => {
8136
+ var Route$35 = createFileRoute("/api/git-checkout")({ server: { handlers: { POST: async ({ request }) => {
7667
8137
  try {
7668
8138
  const body = await readRequestJson(request);
7669
8139
  const requestedCwd = typeof body.cwd === "string" ? body.cwd : "";
@@ -7713,7 +8183,7 @@ function getRuntimeRequestForGitChanges(request, url) {
7713
8183
  method: request.method
7714
8184
  });
7715
8185
  }
7716
- var Route$30 = createFileRoute("/api/git-changes")({ server: { handlers: { GET: async ({ request }) => {
8186
+ var Route$34 = createFileRoute("/api/git-changes")({ server: { handlers: { GET: async ({ request }) => {
7717
8187
  const url = new URL(request.url);
7718
8188
  const requestedCwd = url.searchParams.get("cwd") || "";
7719
8189
  const gitScope = getGitChangesScope(url);
@@ -7783,7 +8253,7 @@ var Route$30 = createFileRoute("/api/git-changes")({ server: { handlers: { GET:
7783
8253
  return routeErrorResponse(error, "Failed to read git changes");
7784
8254
  }
7785
8255
  } } } });
7786
- var Route$29 = createFileRoute("/api/file-completions")({ server: { handlers: { POST: async ({ request }) => {
8256
+ var Route$33 = createFileRoute("/api/file-completions")({ server: { handlers: { POST: async ({ request }) => {
7787
8257
  try {
7788
8258
  const body = await readRequestJson(request);
7789
8259
  const { context, activeEntry } = await getPicoRuntime().resolveRequest(request);
@@ -7800,7 +8270,7 @@ var Route$29 = createFileRoute("/api/file-completions")({ server: { handlers: {
7800
8270
  return routeErrorResponse(error, "Failed to list file completions");
7801
8271
  }
7802
8272
  } } } });
7803
- var Route$28 = createFileRoute("/api/directory-sessions-indexes")({ server: { handlers: { GET: async ({ request }) => {
8273
+ var Route$32 = createFileRoute("/api/directory-sessions-indexes")({ server: { handlers: { GET: async ({ request }) => {
7804
8274
  const directories = new URL(request.url).searchParams.getAll("directory");
7805
8275
  if (directories.length === 0) return errorResponse("at least one directory is required");
7806
8276
  try {
@@ -7809,7 +8279,7 @@ var Route$28 = createFileRoute("/api/directory-sessions-indexes")({ server: { ha
7809
8279
  return routeErrorResponse(error, "Failed to list directory session indexes");
7810
8280
  }
7811
8281
  } } } });
7812
- var Route$27 = createFileRoute("/api/directory-sessions-index")({ server: { handlers: { GET: async ({ request }) => {
8282
+ var Route$31 = createFileRoute("/api/directory-sessions-index")({ server: { handlers: { GET: async ({ request }) => {
7813
8283
  const directory = new URL(request.url).searchParams.get("directory") || "";
7814
8284
  if (!directory.trim()) return errorResponse("directory is required");
7815
8285
  try {
@@ -7818,7 +8288,7 @@ var Route$27 = createFileRoute("/api/directory-sessions-index")({ server: { hand
7818
8288
  return routeErrorResponse(error, "Failed to list directory session index");
7819
8289
  }
7820
8290
  } } } });
7821
- var Route$26 = createFileRoute("/api/directory-sessions")({ server: { handlers: { GET: async ({ request }) => {
8291
+ var Route$30 = createFileRoute("/api/directory-sessions")({ server: { handlers: { GET: async ({ request }) => {
7822
8292
  const url = new URL(request.url);
7823
8293
  const directory = url.searchParams.get("directory") || "";
7824
8294
  const offset = Number.parseInt(url.searchParams.get("offset") || "0", 10);
@@ -7833,7 +8303,7 @@ var Route$26 = createFileRoute("/api/directory-sessions")({ server: { handlers:
7833
8303
  return routeErrorResponse(error, "Failed to list directory sessions");
7834
8304
  }
7835
8305
  } } } });
7836
- var Route$25 = createFileRoute("/api/directory-search")({ server: { handlers: { POST: async ({ request }) => {
8306
+ var Route$29 = createFileRoute("/api/directory-search")({ server: { handlers: { POST: async ({ request }) => {
7837
8307
  try {
7838
8308
  const body = await readRequestJson(request);
7839
8309
  const { context, activeEntry } = await getPicoRuntime().resolveRequest(request);
@@ -7849,14 +8319,14 @@ var Route$25 = createFileRoute("/api/directory-search")({ server: { handlers: {
7849
8319
  return routeErrorResponse(error, "Failed to search directories");
7850
8320
  }
7851
8321
  } } } });
7852
- var Route$24 = createFileRoute("/api/abort")({ server: { handlers: { POST: async ({ request }) => {
8322
+ var Route$28 = createFileRoute("/api/abort")({ server: { handlers: { POST: async ({ request }) => {
7853
8323
  try {
7854
8324
  return jsonResponse(await getPicoRuntime().abort(request));
7855
8325
  } catch (error) {
7856
8326
  return routeErrorResponse(error, "Failed to abort session");
7857
8327
  }
7858
8328
  } } } });
7859
- var Route$23 = createFileRoute("/api/ui/$id")({ server: { handlers: { POST: async ({ request, params }) => {
8329
+ var Route$27 = createFileRoute("/api/ui/$id")({ server: { handlers: { POST: async ({ request, params }) => {
7860
8330
  try {
7861
8331
  const body = await readRequestJson(request);
7862
8332
  return jsonResponse(await getPicoRuntime().resolveUiRequest(params.id, body));
@@ -7864,7 +8334,7 @@ var Route$23 = createFileRoute("/api/ui/$id")({ server: { handlers: { POST: asyn
7864
8334
  return routeErrorResponse(error, "Failed to resolve UI request");
7865
8335
  }
7866
8336
  } } } });
7867
- var Route$22 = createFileRoute("/api/settings/hide-thinking")({ server: { handlers: { POST: async ({ request }) => {
8337
+ var Route$26 = createFileRoute("/api/settings/hide-thinking")({ server: { handlers: { POST: async ({ request }) => {
7868
8338
  try {
7869
8339
  const body = await readRequestJson(request);
7870
8340
  return jsonResponse(await getPicoRuntime().setHideThinking(body));
@@ -7872,7 +8342,7 @@ var Route$22 = createFileRoute("/api/settings/hide-thinking")({ server: { handle
7872
8342
  return routeErrorResponse(error, "Failed to update hide-thinking setting");
7873
8343
  }
7874
8344
  } } } });
7875
- var Route$21 = createFileRoute("/api/sessions/delete")({ server: { handlers: { POST: async ({ request }) => {
8345
+ var Route$25 = createFileRoute("/api/sessions/delete")({ server: { handlers: { POST: async ({ request }) => {
7876
8346
  try {
7877
8347
  const body = await readRequestJson(request);
7878
8348
  return jsonResponse(await getPicoRuntime().deleteSessions(request, body));
@@ -7880,7 +8350,7 @@ var Route$21 = createFileRoute("/api/sessions/delete")({ server: { handlers: { P
7880
8350
  return routeErrorResponse(error, "Failed to delete sessions");
7881
8351
  }
7882
8352
  } } } });
7883
- var Route$20 = createFileRoute("/api/session/tree")({ server: { handlers: {
8353
+ var Route$24 = createFileRoute("/api/session/tree")({ server: { handlers: {
7884
8354
  GET: async ({ request }) => {
7885
8355
  try {
7886
8356
  return jsonResponse(await getPicoRuntime().getSessionTreeForRequest(request));
@@ -7897,14 +8367,14 @@ var Route$20 = createFileRoute("/api/session/tree")({ server: { handlers: {
7897
8367
  }
7898
8368
  }
7899
8369
  } } });
7900
- var Route$19 = createFileRoute("/api/session/select")({ server: { handlers: { POST: async ({ request }) => {
8370
+ var Route$23 = createFileRoute("/api/session/select")({ server: { handlers: { POST: async ({ request }) => {
7901
8371
  try {
7902
8372
  return jsonResponse(await getPicoRuntime().selectSession(request));
7903
8373
  } catch (error) {
7904
8374
  return routeErrorResponse(error, "Failed to select session");
7905
8375
  }
7906
8376
  } } } });
7907
- var Route$18 = createFileRoute("/api/session/rename")({ server: { handlers: { POST: async ({ request }) => {
8377
+ var Route$22 = createFileRoute("/api/session/rename")({ server: { handlers: { POST: async ({ request }) => {
7908
8378
  try {
7909
8379
  const body = await readRequestJson(request);
7910
8380
  return jsonResponse(await getPicoRuntime().renameSession(body));
@@ -7912,7 +8382,7 @@ var Route$18 = createFileRoute("/api/session/rename")({ server: { handlers: { PO
7912
8382
  return routeErrorResponse(error, "Failed to rename session");
7913
8383
  }
7914
8384
  } } } });
7915
- var Route$17 = createFileRoute("/api/session/read-state")({ server: { handlers: { POST: async ({ request }) => {
8385
+ var Route$21 = createFileRoute("/api/session/read-state")({ server: { handlers: { POST: async ({ request }) => {
7916
8386
  try {
7917
8387
  const body = await readRequestJson(request);
7918
8388
  return jsonResponse(await getPicoRuntime().setSessionReadState(request, body));
@@ -7920,7 +8390,7 @@ var Route$17 = createFileRoute("/api/session/read-state")({ server: { handlers:
7920
8390
  return routeErrorResponse(error, "Failed to update session read state");
7921
8391
  }
7922
8392
  } } } });
7923
- var Route$16 = createFileRoute("/api/session/new")({ server: { handlers: { POST: async ({ request }) => {
8393
+ var Route$20 = createFileRoute("/api/session/new")({ server: { handlers: { POST: async ({ request }) => {
7924
8394
  try {
7925
8395
  const body = await readRequestJson(request);
7926
8396
  return jsonResponse(await getPicoRuntime().createNewSession(request, body));
@@ -7928,7 +8398,7 @@ var Route$16 = createFileRoute("/api/session/new")({ server: { handlers: { POST:
7928
8398
  return routeErrorResponse(error, "Failed to create session");
7929
8399
  }
7930
8400
  } } } });
7931
- var Route$15 = createFileRoute("/api/session/move")({ server: { handlers: { POST: async ({ request }) => {
8401
+ var Route$19 = createFileRoute("/api/session/move")({ server: { handlers: { POST: async ({ request }) => {
7932
8402
  try {
7933
8403
  const body = await readRequestJson(request);
7934
8404
  return jsonResponse(await getPicoRuntime().moveSession(request, body));
@@ -7936,7 +8406,7 @@ var Route$15 = createFileRoute("/api/session/move")({ server: { handlers: { POST
7936
8406
  return routeErrorResponse(error, "Failed to move session");
7937
8407
  }
7938
8408
  } } } });
7939
- var Route$14 = createFileRoute("/api/session/history")({ server: { handlers: { GET: async ({ request }) => {
8409
+ var Route$18 = createFileRoute("/api/session/history")({ server: { handlers: { GET: async ({ request }) => {
7940
8410
  try {
7941
8411
  const url = new URL(request.url);
7942
8412
  const before = Number(url.searchParams.get("before"));
@@ -7949,7 +8419,7 @@ var Route$14 = createFileRoute("/api/session/history")({ server: { handlers: { G
7949
8419
  return routeErrorResponse(error, "Failed to load session history");
7950
8420
  }
7951
8421
  } } } });
7952
- var Route$13 = createFileRoute("/api/session/fork")({ server: { handlers: {
8422
+ var Route$17 = createFileRoute("/api/session/fork")({ server: { handlers: {
7953
8423
  GET: async ({ request }) => {
7954
8424
  try {
7955
8425
  return jsonResponse(await getPicoRuntime().getForkableMessages(request));
@@ -7966,7 +8436,7 @@ var Route$13 = createFileRoute("/api/session/fork")({ server: { handlers: {
7966
8436
  }
7967
8437
  }
7968
8438
  } } });
7969
- var Route$12 = createFileRoute("/api/session/delete")({ server: { handlers: { POST: async ({ request }) => {
8439
+ var Route$16 = createFileRoute("/api/session/delete")({ server: { handlers: { POST: async ({ request }) => {
7970
8440
  try {
7971
8441
  const body = await readRequestJson(request);
7972
8442
  return jsonResponse(await getPicoRuntime().deleteSession(request, body));
@@ -7974,14 +8444,14 @@ var Route$12 = createFileRoute("/api/session/delete")({ server: { handlers: { PO
7974
8444
  return routeErrorResponse(error, "Failed to delete session");
7975
8445
  }
7976
8446
  } } } });
7977
- var Route$11 = createFileRoute("/api/session/clone")({ server: { handlers: { POST: async ({ request }) => {
8447
+ var Route$15 = createFileRoute("/api/session/clone")({ server: { handlers: { POST: async ({ request }) => {
7978
8448
  try {
7979
8449
  return jsonResponse(await getPicoRuntime().cloneSession(request));
7980
8450
  } catch (error) {
7981
8451
  return routeErrorResponse(error, "Failed to clone session");
7982
8452
  }
7983
8453
  } } } });
7984
- var Route$10 = createFileRoute("/api/pending-messages/reorder")({ server: { handlers: { POST: async ({ request }) => {
8454
+ var Route$14 = createFileRoute("/api/pending-messages/reorder")({ server: { handlers: { POST: async ({ request }) => {
7985
8455
  try {
7986
8456
  const body = await readRequestJson(request);
7987
8457
  return jsonResponse(await getPicoRuntime().reorderPendingMessages(request, body));
@@ -7989,7 +8459,7 @@ var Route$10 = createFileRoute("/api/pending-messages/reorder")({ server: { hand
7989
8459
  return routeErrorResponse(error, "Failed to update pending prompts");
7990
8460
  }
7991
8461
  } } } });
7992
- var Route$9 = createFileRoute("/api/pending-message/remove")({ server: { handlers: { POST: async ({ request }) => {
8462
+ var Route$13 = createFileRoute("/api/pending-message/remove")({ server: { handlers: { POST: async ({ request }) => {
7993
8463
  try {
7994
8464
  const body = await readRequestJson(request);
7995
8465
  return jsonResponse(await getPicoRuntime().removePendingMessage(request, body));
@@ -7997,7 +8467,7 @@ var Route$9 = createFileRoute("/api/pending-message/remove")({ server: { handler
7997
8467
  return routeErrorResponse(error, "Failed to remove pending prompt");
7998
8468
  }
7999
8469
  } } } });
8000
- var Route$8 = createFileRoute("/api/files/tree")({ server: { handlers: { GET: async ({ request }) => {
8470
+ var Route$12 = createFileRoute("/api/files/tree")({ server: { handlers: { GET: async ({ request }) => {
8001
8471
  const requestedCwd = new URL(request.url).searchParams.get("cwd") || "";
8002
8472
  if (!requestedCwd.trim()) return errorResponse("cwd is required");
8003
8473
  try {
@@ -8014,7 +8484,7 @@ var Route$8 = createFileRoute("/api/files/tree")({ server: { handlers: { GET: as
8014
8484
  return routeErrorResponse(error, "Failed to read file tree");
8015
8485
  }
8016
8486
  } } } });
8017
- var Route$7 = createFileRoute("/api/files/read")({ server: { handlers: { GET: async ({ request }) => {
8487
+ var Route$11 = createFileRoute("/api/files/read")({ server: { handlers: { GET: async ({ request }) => {
8018
8488
  const url = new URL(request.url);
8019
8489
  const requestedCwd = url.searchParams.get("cwd") || "";
8020
8490
  const requestedPath = url.searchParams.get("path") || "";
@@ -8034,7 +8504,7 @@ var Route$7 = createFileRoute("/api/files/read")({ server: { handlers: { GET: as
8034
8504
  return routeErrorResponse(error, "Failed to read file");
8035
8505
  }
8036
8506
  } } } });
8037
- var Route$6 = createFileRoute("/api/directory/resolve")({ server: { handlers: { POST: async ({ request }) => {
8507
+ var Route$10 = createFileRoute("/api/directory/resolve")({ server: { handlers: { POST: async ({ request }) => {
8038
8508
  try {
8039
8509
  const body = await readRequestJson(request);
8040
8510
  const { context, activeEntry } = await getPicoRuntime().resolveRequest(request);
@@ -8046,7 +8516,7 @@ var Route$6 = createFileRoute("/api/directory/resolve")({ server: { handlers: {
8046
8516
  return routeErrorResponse(error, "Failed to resolve directory");
8047
8517
  }
8048
8518
  } } } });
8049
- var Route$5 = createFileRoute("/api/directory-sessions/cleanup")({ server: { handlers: { POST: async ({ request }) => {
8519
+ var Route$9 = createFileRoute("/api/directory-sessions/cleanup")({ server: { handlers: { POST: async ({ request }) => {
8050
8520
  try {
8051
8521
  const body = await readRequestJson(request);
8052
8522
  return jsonResponse(await getPicoRuntime().deleteOldDirectorySessions(request, body));
@@ -8054,14 +8524,14 @@ var Route$5 = createFileRoute("/api/directory-sessions/cleanup")({ server: { han
8054
8524
  return routeErrorResponse(error, "Failed to clean up sessions");
8055
8525
  }
8056
8526
  } } } });
8057
- var Route$4 = createFileRoute("/api/auth/providers")({ server: { handlers: { GET: async ({ request }) => {
8527
+ var Route$8 = createFileRoute("/api/auth/providers")({ server: { handlers: { GET: async ({ request }) => {
8058
8528
  try {
8059
8529
  return jsonResponse(await getPicoRuntime().getAuthProviders(request));
8060
8530
  } catch (error) {
8061
8531
  return routeErrorResponse(error, "Failed to list auth providers");
8062
8532
  }
8063
8533
  } } } });
8064
- var Route$3 = createFileRoute("/api/auth/oauth")({ server: { handlers: { POST: async ({ request }) => {
8534
+ var Route$7 = createFileRoute("/api/auth/oauth")({ server: { handlers: { POST: async ({ request }) => {
8065
8535
  try {
8066
8536
  const body = await readRequestJson(request);
8067
8537
  return jsonResponse(await getPicoRuntime().loginProviderOAuth(request, body));
@@ -8069,7 +8539,7 @@ var Route$3 = createFileRoute("/api/auth/oauth")({ server: { handlers: { POST: a
8069
8539
  return routeErrorResponse(error, "Failed to login to provider");
8070
8540
  }
8071
8541
  } } } });
8072
- var Route$2 = createFileRoute("/api/auth/logout")({ server: { handlers: { POST: async ({ request }) => {
8542
+ var Route$6 = createFileRoute("/api/auth/logout")({ server: { handlers: { POST: async ({ request }) => {
8073
8543
  try {
8074
8544
  const body = await readRequestJson(request);
8075
8545
  return jsonResponse(await getPicoRuntime().logoutProvider(request, body));
@@ -8077,7 +8547,7 @@ var Route$2 = createFileRoute("/api/auth/logout")({ server: { handlers: { POST:
8077
8547
  return routeErrorResponse(error, "Failed to logout from provider");
8078
8548
  }
8079
8549
  } } } });
8080
- var Route$1 = createFileRoute("/api/auth/api-key")({ server: { handlers: { POST: async ({ request }) => {
8550
+ var Route$5 = createFileRoute("/api/auth/api-key")({ server: { handlers: { POST: async ({ request }) => {
8081
8551
  try {
8082
8552
  const body = await readRequestJson(request);
8083
8553
  return jsonResponse(await getPicoRuntime().saveProviderApiKey(request, body));
@@ -8085,6 +8555,36 @@ var Route$1 = createFileRoute("/api/auth/api-key")({ server: { handlers: { POST:
8085
8555
  return routeErrorResponse(error, "Failed to save provider API key");
8086
8556
  }
8087
8557
  } } } });
8558
+ var Route$4 = createFileRoute("/api/terminal/$id/resize")({ server: { handlers: { POST: async ({ request, params }) => {
8559
+ try {
8560
+ const body = await readRequestJson(request);
8561
+ return jsonResponse(await getPicoRuntime().resizeTerminal(request, params.id, body));
8562
+ } catch (error) {
8563
+ return routeErrorResponse(error, "Failed to resize terminal");
8564
+ }
8565
+ } } } });
8566
+ var Route$3 = createFileRoute("/api/terminal/$id/input")({ server: { handlers: { POST: async ({ request, params }) => {
8567
+ try {
8568
+ const body = await readRequestJson(request);
8569
+ return jsonResponse(await getPicoRuntime().writeTerminalInput(request, params.id, body));
8570
+ } catch (error) {
8571
+ return routeErrorResponse(error, "Failed to write terminal input");
8572
+ }
8573
+ } } } });
8574
+ var Route$2 = createFileRoute("/api/terminal/$id/events")({ server: { handlers: { GET: async ({ request, params }) => {
8575
+ try {
8576
+ return await getPicoRuntime().createTerminalEventsResponse(request, params.id);
8577
+ } catch (error) {
8578
+ return routeErrorResponse(error, "Failed to connect terminal");
8579
+ }
8580
+ } } } });
8581
+ var Route$1 = createFileRoute("/api/terminal/$id/close")({ server: { handlers: { POST: async ({ request, params }) => {
8582
+ try {
8583
+ return jsonResponse(await getPicoRuntime().closeTerminal(request, params.id));
8584
+ } catch (error) {
8585
+ return routeErrorResponse(error, "Failed to close terminal");
8586
+ }
8587
+ } } } });
8088
8588
  var Route = createFileRoute("/api/session/tree/label")({ server: { handlers: { POST: async ({ request }) => {
8089
8589
  try {
8090
8590
  const body = await readRequestJson(request);
@@ -8093,270 +8593,295 @@ var Route = createFileRoute("/api/session/tree/label")({ server: { handlers: { P
8093
8593
  return routeErrorResponse(error, "Failed to update tree label");
8094
8594
  }
8095
8595
  } } } });
8096
- var EventsRoute = Route$52.update({
8596
+ var EventsRoute = Route$57.update({
8097
8597
  id: "/events",
8098
8598
  path: "/events",
8099
- getParentRoute: () => Route$53
8599
+ getParentRoute: () => Route$58
8100
8600
  });
8101
- var IndexRoute = Route$54.update({
8601
+ var IndexRoute = Route$59.update({
8102
8602
  id: "/",
8103
8603
  path: "/",
8104
- getParentRoute: () => Route$53
8604
+ getParentRoute: () => Route$58
8105
8605
  });
8106
- var ApiThinkingRoute = Route$51.update({
8606
+ var ApiThinkingRoute = Route$56.update({
8107
8607
  id: "/api/thinking",
8108
8608
  path: "/api/thinking",
8109
- getParentRoute: () => Route$53
8609
+ getParentRoute: () => Route$58
8610
+ });
8611
+ var ApiTerminalRoute = Route$55.update({
8612
+ id: "/api/terminal",
8613
+ path: "/api/terminal",
8614
+ getParentRoute: () => Route$58
8110
8615
  });
8111
- var ApiSlashCommandRoute = Route$50.update({
8616
+ var ApiSlashCommandRoute = Route$54.update({
8112
8617
  id: "/api/slash-command",
8113
8618
  path: "/api/slash-command",
8114
- getParentRoute: () => Route$53
8619
+ getParentRoute: () => Route$58
8115
8620
  });
8116
- var ApiProviderUsageRoute = Route$49.update({
8621
+ var ApiProviderUsageRoute = Route$53.update({
8117
8622
  id: "/api/provider-usage",
8118
8623
  path: "/api/provider-usage",
8119
- getParentRoute: () => Route$53
8624
+ getParentRoute: () => Route$58
8120
8625
  });
8121
- var ApiPromptRoute = Route$48.update({
8626
+ var ApiPromptRoute = Route$52.update({
8122
8627
  id: "/api/prompt",
8123
8628
  path: "/api/prompt",
8124
- getParentRoute: () => Route$53
8629
+ getParentRoute: () => Route$58
8125
8630
  });
8126
- var ApiPathCompletionsRoute = Route$47.update({
8631
+ var ApiPathCompletionsRoute = Route$51.update({
8127
8632
  id: "/api/path-completions",
8128
8633
  path: "/api/path-completions",
8129
- getParentRoute: () => Route$53
8634
+ getParentRoute: () => Route$58
8130
8635
  });
8131
- var ApiModelRoute = Route$46.update({
8636
+ var ApiModelRoute = Route$50.update({
8132
8637
  id: "/api/model",
8133
8638
  path: "/api/model",
8134
- getParentRoute: () => Route$53
8639
+ getParentRoute: () => Route$58
8135
8640
  });
8136
- var ApiHighlightRoute = Route$45.update({
8641
+ var ApiHighlightRoute = Route$49.update({
8137
8642
  id: "/api/highlight",
8138
8643
  path: "/api/highlight",
8139
- getParentRoute: () => Route$53
8644
+ getParentRoute: () => Route$58
8140
8645
  });
8141
- var ApiGitStatusRoute = Route$44.update({
8646
+ var ApiGitStatusRoute = Route$48.update({
8142
8647
  id: "/api/git-status",
8143
8648
  path: "/api/git-status",
8144
- getParentRoute: () => Route$53
8649
+ getParentRoute: () => Route$58
8145
8650
  });
8146
- var ApiGitStageRoute = Route$43.update({
8651
+ var ApiGitStageRoute = Route$47.update({
8147
8652
  id: "/api/git-stage",
8148
8653
  path: "/api/git-stage",
8149
- getParentRoute: () => Route$53
8654
+ getParentRoute: () => Route$58
8150
8655
  });
8151
- var ApiGitReviewRoute = Route$42.update({
8656
+ var ApiGitReviewRoute = Route$46.update({
8152
8657
  id: "/api/git-review",
8153
8658
  path: "/api/git-review",
8154
- getParentRoute: () => Route$53
8659
+ getParentRoute: () => Route$58
8155
8660
  });
8156
- var ApiGitPushRoute = Route$41.update({
8661
+ var ApiGitPushRoute = Route$45.update({
8157
8662
  id: "/api/git-push",
8158
8663
  path: "/api/git-push",
8159
- getParentRoute: () => Route$53
8664
+ getParentRoute: () => Route$58
8160
8665
  });
8161
- var ApiGitPullRoute = Route$40.update({
8666
+ var ApiGitPullRoute = Route$44.update({
8162
8667
  id: "/api/git-pull",
8163
8668
  path: "/api/git-pull",
8164
- getParentRoute: () => Route$53
8669
+ getParentRoute: () => Route$58
8165
8670
  });
8166
- var ApiGitDiscardRoute = Route$39.update({
8671
+ var ApiGitDiscardRoute = Route$43.update({
8167
8672
  id: "/api/git-discard",
8168
8673
  path: "/api/git-discard",
8169
- getParentRoute: () => Route$53
8674
+ getParentRoute: () => Route$58
8170
8675
  });
8171
- var ApiGitDiffRoute = Route$38.update({
8676
+ var ApiGitDiffRoute = Route$42.update({
8172
8677
  id: "/api/git-diff",
8173
8678
  path: "/api/git-diff",
8174
- getParentRoute: () => Route$53
8679
+ getParentRoute: () => Route$58
8175
8680
  });
8176
- var ApiGitCommitRemoteUrlRoute = Route$37.update({
8681
+ var ApiGitCommitRemoteUrlRoute = Route$41.update({
8177
8682
  id: "/api/git-commit-remote-url",
8178
8683
  path: "/api/git-commit-remote-url",
8179
- getParentRoute: () => Route$53
8684
+ getParentRoute: () => Route$58
8180
8685
  });
8181
- var ApiGitCommitMessageRoute = Route$36.update({
8686
+ var ApiGitCommitMessageRoute = Route$40.update({
8182
8687
  id: "/api/git-commit-message",
8183
8688
  path: "/api/git-commit-message",
8184
- getParentRoute: () => Route$53
8689
+ getParentRoute: () => Route$58
8185
8690
  });
8186
- var ApiGitCommitFilesRoute = Route$35.update({
8691
+ var ApiGitCommitFilesRoute = Route$39.update({
8187
8692
  id: "/api/git-commit-files",
8188
8693
  path: "/api/git-commit-files",
8189
- getParentRoute: () => Route$53
8694
+ getParentRoute: () => Route$58
8190
8695
  });
8191
- var ApiGitCommitDiffRoute = Route$34.update({
8696
+ var ApiGitCommitDiffRoute = Route$38.update({
8192
8697
  id: "/api/git-commit-diff",
8193
8698
  path: "/api/git-commit-diff",
8194
- getParentRoute: () => Route$53
8699
+ getParentRoute: () => Route$58
8195
8700
  });
8196
- var ApiGitCommitActionRoute = Route$33.update({
8701
+ var ApiGitCommitActionRoute = Route$37.update({
8197
8702
  id: "/api/git-commit-action",
8198
8703
  path: "/api/git-commit-action",
8199
- getParentRoute: () => Route$53
8704
+ getParentRoute: () => Route$58
8200
8705
  });
8201
- var ApiGitCommitRoute = Route$32.update({
8706
+ var ApiGitCommitRoute = Route$36.update({
8202
8707
  id: "/api/git-commit",
8203
8708
  path: "/api/git-commit",
8204
- getParentRoute: () => Route$53
8709
+ getParentRoute: () => Route$58
8205
8710
  });
8206
- var ApiGitCheckoutRoute = Route$31.update({
8711
+ var ApiGitCheckoutRoute = Route$35.update({
8207
8712
  id: "/api/git-checkout",
8208
8713
  path: "/api/git-checkout",
8209
- getParentRoute: () => Route$53
8714
+ getParentRoute: () => Route$58
8210
8715
  });
8211
- var ApiGitChangesRoute = Route$30.update({
8716
+ var ApiGitChangesRoute = Route$34.update({
8212
8717
  id: "/api/git-changes",
8213
8718
  path: "/api/git-changes",
8214
- getParentRoute: () => Route$53
8719
+ getParentRoute: () => Route$58
8215
8720
  });
8216
- var ApiFileCompletionsRoute = Route$29.update({
8721
+ var ApiFileCompletionsRoute = Route$33.update({
8217
8722
  id: "/api/file-completions",
8218
8723
  path: "/api/file-completions",
8219
- getParentRoute: () => Route$53
8724
+ getParentRoute: () => Route$58
8220
8725
  });
8221
- var ApiDirectorySessionsIndexesRoute = Route$28.update({
8726
+ var ApiDirectorySessionsIndexesRoute = Route$32.update({
8222
8727
  id: "/api/directory-sessions-indexes",
8223
8728
  path: "/api/directory-sessions-indexes",
8224
- getParentRoute: () => Route$53
8729
+ getParentRoute: () => Route$58
8225
8730
  });
8226
- var ApiDirectorySessionsIndexRoute = Route$27.update({
8731
+ var ApiDirectorySessionsIndexRoute = Route$31.update({
8227
8732
  id: "/api/directory-sessions-index",
8228
8733
  path: "/api/directory-sessions-index",
8229
- getParentRoute: () => Route$53
8734
+ getParentRoute: () => Route$58
8230
8735
  });
8231
- var ApiDirectorySessionsRoute = Route$26.update({
8736
+ var ApiDirectorySessionsRoute = Route$30.update({
8232
8737
  id: "/api/directory-sessions",
8233
8738
  path: "/api/directory-sessions",
8234
- getParentRoute: () => Route$53
8739
+ getParentRoute: () => Route$58
8235
8740
  });
8236
- var ApiDirectorySearchRoute = Route$25.update({
8741
+ var ApiDirectorySearchRoute = Route$29.update({
8237
8742
  id: "/api/directory-search",
8238
8743
  path: "/api/directory-search",
8239
- getParentRoute: () => Route$53
8744
+ getParentRoute: () => Route$58
8240
8745
  });
8241
- var ApiAbortRoute = Route$24.update({
8746
+ var ApiAbortRoute = Route$28.update({
8242
8747
  id: "/api/abort",
8243
8748
  path: "/api/abort",
8244
- getParentRoute: () => Route$53
8749
+ getParentRoute: () => Route$58
8245
8750
  });
8246
- var ApiUiIdRoute = Route$23.update({
8751
+ var ApiUiIdRoute = Route$27.update({
8247
8752
  id: "/api/ui/$id",
8248
8753
  path: "/api/ui/$id",
8249
- getParentRoute: () => Route$53
8754
+ getParentRoute: () => Route$58
8250
8755
  });
8251
- var ApiSettingsHideThinkingRoute = Route$22.update({
8756
+ var ApiSettingsHideThinkingRoute = Route$26.update({
8252
8757
  id: "/api/settings/hide-thinking",
8253
8758
  path: "/api/settings/hide-thinking",
8254
- getParentRoute: () => Route$53
8759
+ getParentRoute: () => Route$58
8255
8760
  });
8256
- var ApiSessionsDeleteRoute = Route$21.update({
8761
+ var ApiSessionsDeleteRoute = Route$25.update({
8257
8762
  id: "/api/sessions/delete",
8258
8763
  path: "/api/sessions/delete",
8259
- getParentRoute: () => Route$53
8764
+ getParentRoute: () => Route$58
8260
8765
  });
8261
- var ApiSessionTreeRoute = Route$20.update({
8766
+ var ApiSessionTreeRoute = Route$24.update({
8262
8767
  id: "/api/session/tree",
8263
8768
  path: "/api/session/tree",
8264
- getParentRoute: () => Route$53
8769
+ getParentRoute: () => Route$58
8265
8770
  });
8266
- var ApiSessionSelectRoute = Route$19.update({
8771
+ var ApiSessionSelectRoute = Route$23.update({
8267
8772
  id: "/api/session/select",
8268
8773
  path: "/api/session/select",
8269
- getParentRoute: () => Route$53
8774
+ getParentRoute: () => Route$58
8270
8775
  });
8271
- var ApiSessionRenameRoute = Route$18.update({
8776
+ var ApiSessionRenameRoute = Route$22.update({
8272
8777
  id: "/api/session/rename",
8273
8778
  path: "/api/session/rename",
8274
- getParentRoute: () => Route$53
8779
+ getParentRoute: () => Route$58
8275
8780
  });
8276
- var ApiSessionReadStateRoute = Route$17.update({
8781
+ var ApiSessionReadStateRoute = Route$21.update({
8277
8782
  id: "/api/session/read-state",
8278
8783
  path: "/api/session/read-state",
8279
- getParentRoute: () => Route$53
8784
+ getParentRoute: () => Route$58
8280
8785
  });
8281
- var ApiSessionNewRoute = Route$16.update({
8786
+ var ApiSessionNewRoute = Route$20.update({
8282
8787
  id: "/api/session/new",
8283
8788
  path: "/api/session/new",
8284
- getParentRoute: () => Route$53
8789
+ getParentRoute: () => Route$58
8285
8790
  });
8286
- var ApiSessionMoveRoute = Route$15.update({
8791
+ var ApiSessionMoveRoute = Route$19.update({
8287
8792
  id: "/api/session/move",
8288
8793
  path: "/api/session/move",
8289
- getParentRoute: () => Route$53
8794
+ getParentRoute: () => Route$58
8290
8795
  });
8291
- var ApiSessionHistoryRoute = Route$14.update({
8796
+ var ApiSessionHistoryRoute = Route$18.update({
8292
8797
  id: "/api/session/history",
8293
8798
  path: "/api/session/history",
8294
- getParentRoute: () => Route$53
8799
+ getParentRoute: () => Route$58
8295
8800
  });
8296
- var ApiSessionForkRoute = Route$13.update({
8801
+ var ApiSessionForkRoute = Route$17.update({
8297
8802
  id: "/api/session/fork",
8298
8803
  path: "/api/session/fork",
8299
- getParentRoute: () => Route$53
8804
+ getParentRoute: () => Route$58
8300
8805
  });
8301
- var ApiSessionDeleteRoute = Route$12.update({
8806
+ var ApiSessionDeleteRoute = Route$16.update({
8302
8807
  id: "/api/session/delete",
8303
8808
  path: "/api/session/delete",
8304
- getParentRoute: () => Route$53
8809
+ getParentRoute: () => Route$58
8305
8810
  });
8306
- var ApiSessionCloneRoute = Route$11.update({
8811
+ var ApiSessionCloneRoute = Route$15.update({
8307
8812
  id: "/api/session/clone",
8308
8813
  path: "/api/session/clone",
8309
- getParentRoute: () => Route$53
8814
+ getParentRoute: () => Route$58
8310
8815
  });
8311
- var ApiPendingMessagesReorderRoute = Route$10.update({
8816
+ var ApiPendingMessagesReorderRoute = Route$14.update({
8312
8817
  id: "/api/pending-messages/reorder",
8313
8818
  path: "/api/pending-messages/reorder",
8314
- getParentRoute: () => Route$53
8819
+ getParentRoute: () => Route$58
8315
8820
  });
8316
- var ApiPendingMessageRemoveRoute = Route$9.update({
8821
+ var ApiPendingMessageRemoveRoute = Route$13.update({
8317
8822
  id: "/api/pending-message/remove",
8318
8823
  path: "/api/pending-message/remove",
8319
- getParentRoute: () => Route$53
8824
+ getParentRoute: () => Route$58
8320
8825
  });
8321
- var ApiFilesTreeRoute = Route$8.update({
8826
+ var ApiFilesTreeRoute = Route$12.update({
8322
8827
  id: "/api/files/tree",
8323
8828
  path: "/api/files/tree",
8324
- getParentRoute: () => Route$53
8829
+ getParentRoute: () => Route$58
8325
8830
  });
8326
- var ApiFilesReadRoute = Route$7.update({
8831
+ var ApiFilesReadRoute = Route$11.update({
8327
8832
  id: "/api/files/read",
8328
8833
  path: "/api/files/read",
8329
- getParentRoute: () => Route$53
8834
+ getParentRoute: () => Route$58
8330
8835
  });
8331
- var ApiDirectoryResolveRoute = Route$6.update({
8836
+ var ApiDirectoryResolveRoute = Route$10.update({
8332
8837
  id: "/api/directory/resolve",
8333
8838
  path: "/api/directory/resolve",
8334
- getParentRoute: () => Route$53
8839
+ getParentRoute: () => Route$58
8335
8840
  });
8336
- var ApiDirectorySessionsCleanupRoute = Route$5.update({
8841
+ var ApiDirectorySessionsCleanupRoute = Route$9.update({
8337
8842
  id: "/cleanup",
8338
8843
  path: "/cleanup",
8339
8844
  getParentRoute: () => ApiDirectorySessionsRoute
8340
8845
  });
8341
- var ApiAuthProvidersRoute = Route$4.update({
8846
+ var ApiAuthProvidersRoute = Route$8.update({
8342
8847
  id: "/api/auth/providers",
8343
8848
  path: "/api/auth/providers",
8344
- getParentRoute: () => Route$53
8849
+ getParentRoute: () => Route$58
8345
8850
  });
8346
- var ApiAuthOauthRoute = Route$3.update({
8851
+ var ApiAuthOauthRoute = Route$7.update({
8347
8852
  id: "/api/auth/oauth",
8348
8853
  path: "/api/auth/oauth",
8349
- getParentRoute: () => Route$53
8854
+ getParentRoute: () => Route$58
8350
8855
  });
8351
- var ApiAuthLogoutRoute = Route$2.update({
8856
+ var ApiAuthLogoutRoute = Route$6.update({
8352
8857
  id: "/api/auth/logout",
8353
8858
  path: "/api/auth/logout",
8354
- getParentRoute: () => Route$53
8859
+ getParentRoute: () => Route$58
8355
8860
  });
8356
- var ApiAuthApiKeyRoute = Route$1.update({
8861
+ var ApiAuthApiKeyRoute = Route$5.update({
8357
8862
  id: "/api/auth/api-key",
8358
8863
  path: "/api/auth/api-key",
8359
- getParentRoute: () => Route$53
8864
+ getParentRoute: () => Route$58
8865
+ });
8866
+ var ApiTerminalIdResizeRoute = Route$4.update({
8867
+ id: "/$id/resize",
8868
+ path: "/$id/resize",
8869
+ getParentRoute: () => ApiTerminalRoute
8870
+ });
8871
+ var ApiTerminalIdInputRoute = Route$3.update({
8872
+ id: "/$id/input",
8873
+ path: "/$id/input",
8874
+ getParentRoute: () => ApiTerminalRoute
8875
+ });
8876
+ var ApiTerminalIdEventsRoute = Route$2.update({
8877
+ id: "/$id/events",
8878
+ path: "/$id/events",
8879
+ getParentRoute: () => ApiTerminalRoute
8880
+ });
8881
+ var ApiTerminalIdCloseRoute = Route$1.update({
8882
+ id: "/$id/close",
8883
+ path: "/$id/close",
8884
+ getParentRoute: () => ApiTerminalRoute
8360
8885
  });
8361
8886
  var ApiSessionTreeLabelRoute = Route.update({
8362
8887
  id: "/label",
@@ -8365,6 +8890,13 @@ var ApiSessionTreeLabelRoute = Route.update({
8365
8890
  });
8366
8891
  var ApiDirectorySessionsRouteChildren = { ApiDirectorySessionsCleanupRoute };
8367
8892
  var ApiDirectorySessionsRouteWithChildren = ApiDirectorySessionsRoute._addFileChildren(ApiDirectorySessionsRouteChildren);
8893
+ var ApiTerminalRouteChildren = {
8894
+ ApiTerminalIdCloseRoute,
8895
+ ApiTerminalIdEventsRoute,
8896
+ ApiTerminalIdInputRoute,
8897
+ ApiTerminalIdResizeRoute
8898
+ };
8899
+ var ApiTerminalRouteWithChildren = ApiTerminalRoute._addFileChildren(ApiTerminalRouteChildren);
8368
8900
  var ApiSessionTreeRouteChildren = { ApiSessionTreeLabelRoute };
8369
8901
  var rootRouteChildren = {
8370
8902
  IndexRoute,
@@ -8396,6 +8928,7 @@ var rootRouteChildren = {
8396
8928
  ApiPromptRoute,
8397
8929
  ApiProviderUsageRoute,
8398
8930
  ApiSlashCommandRoute,
8931
+ ApiTerminalRoute: ApiTerminalRouteWithChildren,
8399
8932
  ApiThinkingRoute,
8400
8933
  ApiAuthApiKeyRoute,
8401
8934
  ApiAuthLogoutRoute,
@@ -8420,7 +8953,7 @@ var rootRouteChildren = {
8420
8953
  ApiSettingsHideThinkingRoute,
8421
8954
  ApiUiIdRoute
8422
8955
  };
8423
- var routeTree = Route$53._addFileChildren(rootRouteChildren)._addFileTypes();
8956
+ var routeTree = Route$58._addFileChildren(rootRouteChildren)._addFileTypes();
8424
8957
  function getRouter() {
8425
8958
  const queryClient = new QueryClient({ defaultOptions: { queries: {
8426
8959
  retry: 1,