shortcutxl 0.3.77 → 0.3.78

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 (351) hide show
  1. package/BINARY-INVENTORY.json +9 -9
  2. package/CHANGELOG.md +8 -0
  3. package/dist/app/agent-session.d.ts +0 -15
  4. package/dist/app/agent-session.js +0 -37
  5. package/dist/app/extensions/slash-commands.js +1 -3
  6. package/dist/app/modes/action/agent.js +4 -5
  7. package/dist/app/modes/ask/agent.js +4 -6
  8. package/dist/app/modes/index.js +20 -10
  9. package/dist/app/modes/installation/agent.js +4 -5
  10. package/dist/app/modes/manage/agent.js +3 -4
  11. package/dist/app/modes/manage/prompt.js +1 -2
  12. package/dist/app/modes/metadata.d.ts +31 -0
  13. package/dist/app/modes/metadata.js +35 -0
  14. package/dist/app/modes/plan/agent.js +5 -8
  15. package/dist/app/modes/plan/prompt.js +3 -3
  16. package/dist/app/prompts/com-api.js +1 -1
  17. package/dist/app/prompts/shared-guidelines.js +6 -2
  18. package/dist/app/providers/register-shortcut-provider.js +4 -0
  19. package/dist/app/tools/bash.js +3 -3
  20. package/dist/app/tools/switch-mode.js +2 -2
  21. package/dist/app/tools/web-search.js +12 -2
  22. package/dist/cli.js +871 -2144
  23. package/dist/constants.d.ts +0 -2
  24. package/dist/constants.js +0 -3
  25. package/dist/contracts/model-call.d.ts +0 -1
  26. package/dist/contracts/model-call.js +1 -2
  27. package/dist/contracts/wire.d.ts +8 -1
  28. package/dist/contracts/wire.js +8 -0
  29. package/dist/embedded-agent/ai-invoke.d.ts +1 -2
  30. package/dist/embedded-agent/ai-invoke.js +0 -70
  31. package/dist/embedded-agent/anthropic-messages-transport.d.ts +1 -2
  32. package/dist/embedded-agent/google-vertex-transport.d.ts +1 -2
  33. package/dist/embedded-agent/host-tools/invoke-llm/contract.d.ts +1 -1
  34. package/dist/embedded-agent/host-tools/invoke-llm/contract.js +1 -1
  35. package/dist/embedded-agent/host-tools/shared/index.d.ts +1 -1
  36. package/dist/embedded-agent/host-tools/shared/index.js +1 -1
  37. package/dist/embedded-agent/host-tools/shared/llm-stream-error.d.ts +7 -0
  38. package/dist/embedded-agent/host-tools/shared/llm-stream-error.js +10 -0
  39. package/dist/embedded-agent/index.d.ts +3 -4
  40. package/dist/embedded-agent/index.js +2 -3
  41. package/dist/embedded-agent/openai-completions-transport.d.ts +1 -2
  42. package/dist/embedded-agent/openai-responses-transport.d.ts +1 -2
  43. package/dist/embedded-agent/prompt/sections.d.ts +1 -1
  44. package/dist/embedded-agent/prompt/sections.js +2 -0
  45. package/dist/embedded-agent/provider-native-request.d.ts +5 -0
  46. package/dist/embedded-agent/provider-native-request.js +3 -2
  47. package/dist/embedded-agent/stream.d.ts +8 -88
  48. package/dist/embedded-agent/stream.js +20 -537
  49. package/dist/embedded-agent/suggestions.d.ts +1 -1
  50. package/dist/embedded-agent/suggestions.js +1 -1
  51. package/dist/embedded-agent/worker-bridge/host-client.d.ts +7 -0
  52. package/dist/embedded-agent/worker-bridge/host-client.js +15 -0
  53. package/dist/embedded-agent/worker-bridge/worker-port.js +17 -1
  54. package/dist/main.js +16 -1
  55. package/dist/rpc/index.d.ts +1 -1
  56. package/dist/rpc/rpc-host.d.ts +4 -0
  57. package/dist/rpc/rpc-host.js +13 -24
  58. package/dist/rpc/rpc-types.d.ts +6 -17
  59. package/dist/shared/platform/open.d.ts +4 -1
  60. package/dist/shared/platform/open.js +14 -2
  61. package/dist/shell/interactive/interactive-mode-options.d.ts +10 -0
  62. package/dist/shell/interactive/interactive-mode.d.ts +6 -12
  63. package/dist/shell/interactive/interactive-mode.js +36 -157
  64. package/dist/shell/interactive/slash-commands.d.ts +0 -34
  65. package/dist/shell/interactive/slash-commands.js +0 -2
  66. package/dist/shell/links/local-file-link-input.d.ts +15 -0
  67. package/dist/shell/links/local-file-link-input.js +38 -0
  68. package/dist/shell/links/local-file-link.d.ts +7 -0
  69. package/dist/shell/links/local-file-link.js +35 -0
  70. package/dist/shell/links/local-file-opener.d.ts +16 -0
  71. package/dist/shell/links/local-file-opener.js +90 -0
  72. package/dist/shell/session-client.d.ts +0 -1
  73. package/dist/shell/session-client.js +0 -6
  74. package/dist/shell/status/update-check-scheduler.d.ts +30 -0
  75. package/dist/shell/status/update-check-scheduler.js +71 -0
  76. package/dist/shell/status/update-reminder-controller.d.ts +22 -0
  77. package/dist/shell/status/update-reminder-controller.js +40 -0
  78. package/dist/shell/status/update-reminder.d.ts +6 -0
  79. package/dist/shell/status/update-reminder.js +4 -0
  80. package/dist/shell/theme/dark.json +1 -2
  81. package/dist/shell/theme/light.json +1 -2
  82. package/dist/shell/theme/runtime.d.ts +1 -2
  83. package/dist/shell/theme/runtime.js +1 -6
  84. package/dist/shell/theme/theme-schema.json +1 -6
  85. package/dist/shortcut-model-catalog.js +12 -5
  86. package/dist/startup/update-manager.d.ts +6 -6
  87. package/dist/startup/update-manager.js +23 -38
  88. package/dist/startup/update-prompt.d.ts +1 -0
  89. package/dist/startup/update-prompt.js +2 -2
  90. package/dist/tui/components/markdown.js +15 -6
  91. package/dist/tui/index.d.ts +7 -1
  92. package/dist/tui/index.js +7 -1
  93. package/dist/tui/tui.d.ts +2 -0
  94. package/dist/tui/tui.js +16 -1
  95. package/dist/tui/utils.d.ts +7 -0
  96. package/dist/tui/utils.js +58 -8
  97. package/native-app/main/index.js +1 -1
  98. package/native-app/package.json +1 -1
  99. package/native-app/renderer/assets/{index-CtherCML.js → index-B4jz6epR.js} +594 -151
  100. package/native-app/renderer/assets/{index-B9UxxO8s.css → index-C__g36ft.css} +408 -160
  101. package/native-app/renderer/assets/shortcutagent-DxFsGSkw.png +0 -0
  102. package/native-app/renderer/index.html +2 -2
  103. package/package.json +2 -1
  104. package/user-docs/dist/index.html +1 -1
  105. package/user-docs/dist/shortcutxl-docs.pdf +0 -0
  106. package/xll/ShortcutXL.xll +0 -0
  107. package/xll/modules/shortcut_xl/_managed.py +26 -7
  108. package/xll/modules/shortcut_xl/_tracking.py +141 -251
  109. package/xll/modules/shortcut_xl/api/__init__.py +60 -0
  110. package/xll/modules/shortcut_xl/api/workbook.py +9 -1
  111. package/xll/modules/shortcut_xl/api/worksheet.py +4 -1
  112. package/xll/python/Lib/site-packages/httpx-0.28.1.dist-info/RECORD +1 -1
  113. package/xll/python/Lib/site-packages/idna-3.18.dist-info/RECORD +1 -1
  114. package/xll/python/Lib/site-packages/pip/__init__.py +1 -1
  115. package/xll/python/Lib/site-packages/pip/_internal/build_env/__init__.py +25 -0
  116. package/xll/python/Lib/site-packages/pip/_internal/build_env/base.py +103 -0
  117. package/xll/python/Lib/site-packages/pip/_internal/build_env/installer.py +333 -0
  118. package/xll/python/Lib/site-packages/pip/_internal/build_env/noop.py +42 -0
  119. package/xll/python/Lib/site-packages/pip/_internal/build_env/venv.py +145 -0
  120. package/xll/python/Lib/site-packages/pip/_internal/build_env/virtual.py +139 -0
  121. package/xll/python/Lib/site-packages/pip/_internal/cache.py +4 -1
  122. package/xll/python/Lib/site-packages/pip/_internal/cli/autocompletion.py +4 -1
  123. package/xll/python/Lib/site-packages/pip/_internal/cli/base_command.py +11 -14
  124. package/xll/python/Lib/site-packages/pip/_internal/cli/cmdoptions.py +133 -22
  125. package/xll/python/Lib/site-packages/pip/_internal/cli/index_command.py +11 -6
  126. package/xll/python/Lib/site-packages/pip/_internal/cli/main.py +2 -1
  127. package/xll/python/Lib/site-packages/pip/_internal/cli/main_parser.py +1 -2
  128. package/xll/python/Lib/site-packages/pip/_internal/cli/parser.py +10 -2
  129. package/xll/python/Lib/site-packages/pip/_internal/cli/progress_bars.py +2 -2
  130. package/xll/python/Lib/site-packages/pip/_internal/cli/req_command.py +57 -25
  131. package/xll/python/Lib/site-packages/pip/_internal/cli/status_codes.py +1 -0
  132. package/xll/python/Lib/site-packages/pip/_internal/commands/cache.py +7 -6
  133. package/xll/python/Lib/site-packages/pip/_internal/commands/configuration.py +2 -1
  134. package/xll/python/Lib/site-packages/pip/_internal/commands/debug.py +4 -5
  135. package/xll/python/Lib/site-packages/pip/_internal/commands/download.py +4 -0
  136. package/xll/python/Lib/site-packages/pip/_internal/commands/freeze.py +1 -1
  137. package/xll/python/Lib/site-packages/pip/_internal/commands/index.py +10 -3
  138. package/xll/python/Lib/site-packages/pip/_internal/commands/inspect.py +1 -1
  139. package/xll/python/Lib/site-packages/pip/_internal/commands/install.py +6 -6
  140. package/xll/python/Lib/site-packages/pip/_internal/commands/list.py +11 -6
  141. package/xll/python/Lib/site-packages/pip/_internal/commands/lock.py +4 -6
  142. package/xll/python/Lib/site-packages/pip/_internal/commands/show.py +14 -8
  143. package/xll/python/Lib/site-packages/pip/_internal/commands/wheel.py +7 -1
  144. package/xll/python/Lib/site-packages/pip/_internal/configuration.py +2 -3
  145. package/xll/python/Lib/site-packages/pip/_internal/distributions/base.py +5 -3
  146. package/xll/python/Lib/site-packages/pip/_internal/distributions/installed.py +3 -2
  147. package/xll/python/Lib/site-packages/pip/_internal/distributions/sdist.py +45 -20
  148. package/xll/python/Lib/site-packages/pip/_internal/distributions/wheel.py +3 -2
  149. package/xll/python/Lib/site-packages/pip/_internal/exceptions.py +174 -0
  150. package/xll/python/Lib/site-packages/pip/_internal/index/collector.py +70 -48
  151. package/xll/python/Lib/site-packages/pip/_internal/index/package_finder.py +46 -7
  152. package/xll/python/Lib/site-packages/pip/_internal/index/sources.py +1 -2
  153. package/xll/python/Lib/site-packages/pip/_internal/locations/_sysconfig.py +1 -1
  154. package/xll/python/Lib/site-packages/pip/_internal/locations/base.py +1 -1
  155. package/xll/python/Lib/site-packages/pip/_internal/metadata/base.py +10 -5
  156. package/xll/python/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py +1 -1
  157. package/xll/python/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py +8 -3
  158. package/xll/python/Lib/site-packages/pip/_internal/models/candidate.py +5 -1
  159. package/xll/python/Lib/site-packages/pip/_internal/models/link.py +53 -13
  160. package/xll/python/Lib/site-packages/pip/_internal/network/auth.py +38 -21
  161. package/xll/python/Lib/site-packages/pip/_internal/network/cache.py +2 -2
  162. package/xll/python/Lib/site-packages/pip/_internal/network/download.py +58 -11
  163. package/xll/python/Lib/site-packages/pip/_internal/network/session.py +35 -40
  164. package/xll/python/Lib/site-packages/pip/_internal/network/utils.py +109 -1
  165. package/xll/python/Lib/site-packages/pip/_internal/operations/check.py +2 -3
  166. package/xll/python/Lib/site-packages/pip/_internal/operations/install/wheel.py +23 -18
  167. package/xll/python/Lib/site-packages/pip/_internal/operations/prepare.py +152 -7
  168. package/xll/python/Lib/site-packages/pip/_internal/req/__init__.py +2 -0
  169. package/xll/python/Lib/site-packages/pip/_internal/req/constructors.py +54 -69
  170. package/xll/python/Lib/site-packages/pip/_internal/req/req_file.py +6 -6
  171. package/xll/python/Lib/site-packages/pip/_internal/req/req_install.py +25 -21
  172. package/xll/python/Lib/site-packages/pip/_internal/req/req_uninstall.py +13 -8
  173. package/xll/python/Lib/site-packages/pip/_internal/resolution/base.py +2 -2
  174. package/xll/python/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +2 -2
  175. package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +1 -1
  176. package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +0 -1
  177. package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +39 -52
  178. package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +3 -3
  179. package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +3 -0
  180. package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +9 -0
  181. package/xll/python/Lib/site-packages/pip/_internal/utils/compat.py +15 -9
  182. package/xll/python/Lib/site-packages/pip/_internal/utils/deprecation.py +6 -1
  183. package/xll/python/Lib/site-packages/pip/_internal/utils/filesystem.py +2 -2
  184. package/xll/python/Lib/site-packages/pip/_internal/utils/logging.py +11 -3
  185. package/xll/python/Lib/site-packages/pip/_internal/utils/misc.py +48 -4
  186. package/xll/python/Lib/site-packages/pip/_internal/utils/pylock.py +18 -2
  187. package/xll/python/Lib/site-packages/pip/_internal/utils/retry.py +2 -1
  188. package/xll/python/Lib/site-packages/pip/_internal/utils/subprocess.py +4 -3
  189. package/xll/python/Lib/site-packages/pip/_internal/utils/temp_dir.py +1 -2
  190. package/xll/python/Lib/site-packages/pip/_internal/utils/unpacking.py +30 -4
  191. package/xll/python/Lib/site-packages/pip/_internal/utils/urls.py +5 -2
  192. package/xll/python/Lib/site-packages/pip/_internal/utils/virtualenv.py +2 -36
  193. package/xll/python/Lib/site-packages/pip/_internal/vcs/git.py +8 -5
  194. package/xll/python/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +1 -2
  195. package/xll/python/Lib/site-packages/pip/_internal/wheel_builder.py +5 -1
  196. package/xll/python/Lib/site-packages/pip/_vendor/bom.cdx.json +231 -0
  197. package/xll/python/Lib/site-packages/pip/_vendor/certifi/__init__.py +1 -1
  198. package/xll/python/Lib/site-packages/pip/_vendor/certifi/cacert.pem +0 -631
  199. package/xll/python/Lib/site-packages/pip/_vendor/distlib/__init__.py +1 -1
  200. package/xll/python/Lib/site-packages/pip/_vendor/distlib/compat.py +34 -64
  201. package/xll/python/Lib/site-packages/pip/_vendor/distlib/resources.py +28 -14
  202. package/xll/python/Lib/site-packages/pip/_vendor/distlib/scripts.py +7 -3
  203. package/xll/python/Lib/site-packages/pip/_vendor/distlib/util.py +48 -11
  204. package/xll/python/Lib/site-packages/pip/_vendor/idna/LICENSE.md +1 -1
  205. package/xll/python/Lib/site-packages/pip/_vendor/idna/__main__.py +6 -0
  206. package/xll/python/Lib/site-packages/pip/_vendor/idna/cli.py +128 -0
  207. package/xll/python/Lib/site-packages/pip/_vendor/idna/codec.py +50 -13
  208. package/xll/python/Lib/site-packages/pip/_vendor/idna/compat.py +26 -0
  209. package/xll/python/Lib/site-packages/pip/_vendor/idna/core.py +352 -141
  210. package/xll/python/Lib/site-packages/pip/_vendor/idna/idnadata.py +571 -2983
  211. package/xll/python/Lib/site-packages/pip/_vendor/idna/intranges.py +5 -7
  212. package/xll/python/Lib/site-packages/pip/_vendor/idna/package_data.py +1 -1
  213. package/xll/python/Lib/site-packages/pip/_vendor/idna/uts46data.py +16887 -8832
  214. package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/__init__.py +352 -66
  215. package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/__main__.py +11 -0
  216. package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/_xdg.py +171 -0
  217. package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/android.py +92 -41
  218. package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/api.py +213 -49
  219. package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/macos.py +128 -51
  220. package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/unix.py +176 -127
  221. package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/version.py +8 -18
  222. package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/windows.py +185 -68
  223. package/xll/python/Lib/site-packages/pip/_vendor/pygments/__init__.py +2 -2
  224. package/xll/python/Lib/site-packages/pip/_vendor/pygments/__main__.py +1 -1
  225. package/xll/python/Lib/site-packages/pip/_vendor/pygments/console.py +1 -1
  226. package/xll/python/Lib/site-packages/pip/_vendor/pygments/filter.py +1 -1
  227. package/xll/python/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py +10 -8
  228. package/xll/python/Lib/site-packages/pip/_vendor/pygments/formatter.py +1 -1
  229. package/xll/python/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py +1 -1
  230. package/xll/python/Lib/site-packages/pip/_vendor/pygments/lexer.py +7 -5
  231. package/xll/python/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py +1 -1
  232. package/xll/python/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.py +9 -8
  233. package/xll/python/Lib/site-packages/pip/_vendor/pygments/lexers/python.py +35 -32
  234. package/xll/python/Lib/site-packages/pip/_vendor/pygments/modeline.py +1 -1
  235. package/xll/python/Lib/site-packages/pip/_vendor/pygments/plugin.py +3 -1
  236. package/xll/python/Lib/site-packages/pip/_vendor/pygments/regexopt.py +13 -2
  237. package/xll/python/Lib/site-packages/pip/_vendor/pygments/scanner.py +1 -1
  238. package/xll/python/Lib/site-packages/pip/_vendor/pygments/sphinxext.py +1 -1
  239. package/xll/python/Lib/site-packages/pip/_vendor/pygments/style.py +1 -1
  240. package/xll/python/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py +1 -1
  241. package/xll/python/Lib/site-packages/pip/_vendor/pygments/token.py +1 -1
  242. package/xll/python/Lib/site-packages/pip/_vendor/pygments/unistring.py +1 -1
  243. package/xll/python/Lib/site-packages/pip/_vendor/pygments/util.py +2 -2
  244. package/xll/python/Lib/site-packages/pip/_vendor/requests/__init__.py +52 -16
  245. package/xll/python/Lib/site-packages/pip/_vendor/requests/__version__.py +2 -2
  246. package/xll/python/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +2 -2
  247. package/xll/python/Lib/site-packages/pip/_vendor/requests/_types.py +183 -0
  248. package/xll/python/Lib/site-packages/pip/_vendor/requests/adapters.py +101 -50
  249. package/xll/python/Lib/site-packages/pip/_vendor/requests/api.py +31 -8
  250. package/xll/python/Lib/site-packages/pip/_vendor/requests/auth.py +80 -40
  251. package/xll/python/Lib/site-packages/pip/_vendor/requests/compat.py +9 -3
  252. package/xll/python/Lib/site-packages/pip/_vendor/requests/cookies.py +143 -79
  253. package/xll/python/Lib/site-packages/pip/_vendor/requests/exceptions.py +15 -5
  254. package/xll/python/Lib/site-packages/pip/_vendor/requests/help.py +13 -10
  255. package/xll/python/Lib/site-packages/pip/_vendor/requests/hooks.py +23 -9
  256. package/xll/python/Lib/site-packages/pip/_vendor/requests/models.py +265 -126
  257. package/xll/python/Lib/site-packages/pip/_vendor/requests/py.typed +0 -0
  258. package/xll/python/Lib/site-packages/pip/_vendor/requests/sessions.py +164 -78
  259. package/xll/python/Lib/site-packages/pip/_vendor/requests/status_codes.py +2 -2
  260. package/xll/python/Lib/site-packages/pip/_vendor/requests/structures.py +51 -20
  261. package/xll/python/Lib/site-packages/pip/_vendor/requests/utils.py +161 -89
  262. package/xll/python/Lib/site-packages/pip/_vendor/tomli/__init__.py +1 -1
  263. package/xll/python/Lib/site-packages/pip/_vendor/tomli/_parser.py +9 -4
  264. package/xll/python/Lib/site-packages/pip/_vendor/tomli/_re.py +13 -9
  265. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/_base_connection.py +3 -1
  266. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/_collections.py +0 -1
  267. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/_version.py +8 -18
  268. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/connection.py +4 -4
  269. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +23 -10
  270. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/contrib/emscripten/response.py +5 -1
  271. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +7 -8
  272. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py +1 -1
  273. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/exceptions.py +2 -2
  274. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/fields.py +14 -14
  275. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +8 -6
  276. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/response.py +35 -22
  277. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/util/retry.py +8 -0
  278. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py +11 -61
  279. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +5 -11
  280. package/xll/python/Lib/site-packages/pip/_vendor/vendor.txt +8 -8
  281. package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/METADATA +3 -2
  282. package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/RECORD +208 -188
  283. package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/AUTHORS.txt +20 -0
  284. package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/idna/LICENSE.md +1 -1
  285. package/xll/python/Lib/site-packages/pywin32-311.dist-info/RECORD +2 -2
  286. package/xll/python/Scripts/httpx.exe +0 -0
  287. package/xll/python/Scripts/idna.exe +0 -0
  288. package/xll/python/Scripts/pip.exe +0 -0
  289. package/xll/python/Scripts/pip3.13.exe +0 -0
  290. package/xll/python/Scripts/pip3.exe +0 -0
  291. package/xll/python/Scripts/pywin32_postinstall.exe +0 -0
  292. package/xll/python/Scripts/pywin32_testall.exe +0 -0
  293. package/dist/app/collab/awareness.d.ts +0 -32
  294. package/dist/app/collab/awareness.js +0 -52
  295. package/dist/app/collab/collab-client.d.ts +0 -37
  296. package/dist/app/collab/collab-client.js +0 -208
  297. package/dist/app/collab/collab-manager.d.ts +0 -91
  298. package/dist/app/collab/collab-manager.js +0 -218
  299. package/dist/app/collab/collab-sync.d.ts +0 -62
  300. package/dist/app/collab/collab-sync.js +0 -215
  301. package/dist/app/collab/index.d.ts +0 -9
  302. package/dist/app/collab/index.js +0 -6
  303. package/dist/app/collab/super-fight.d.ts +0 -90
  304. package/dist/app/collab/super-fight.js +0 -310
  305. package/dist/app/collab/sync-bridge.d.ts +0 -35
  306. package/dist/app/collab/sync-bridge.js +0 -109
  307. package/dist/app/collab/types.d.ts +0 -75
  308. package/dist/app/collab/types.js +0 -5
  309. package/dist/embedded-agent/ai-content.d.ts +0 -52
  310. package/dist/embedded-agent/ai-content.js +0 -101
  311. package/dist/embedded-agent/host-tools/shared/llm-stream.d.ts +0 -31
  312. package/dist/embedded-agent/host-tools/shared/llm-stream.js +0 -136
  313. package/dist/embedded-agent/model-call-orchestrator.d.ts +0 -22
  314. package/dist/embedded-agent/model-call-orchestrator.js +0 -22
  315. package/dist/embedded-agent/stream-errors.d.ts +0 -10
  316. package/dist/embedded-agent/stream-errors.js +0 -73
  317. package/dist/embedded-agent/stream-message-state.d.ts +0 -14
  318. package/dist/embedded-agent/stream-message-state.js +0 -271
  319. package/dist/embedded-agent/stream-sse.d.ts +0 -78
  320. package/dist/embedded-agent/stream-sse.js +0 -73
  321. package/dist/shell/interactive/collab-command.d.ts +0 -9
  322. package/dist/shell/interactive/collab-command.js +0 -115
  323. package/dist/shell/interactive/super-fight-ui.d.ts +0 -80
  324. package/dist/shell/interactive/super-fight-ui.js +0 -484
  325. package/dist/shell/status/collab-status.d.ts +0 -18
  326. package/dist/shell/status/collab-status.js +0 -46
  327. package/xll/python/Lib/site-packages/pip/_internal/build_env.py +0 -606
  328. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/INSTALLER +0 -0
  329. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/REQUESTED +0 -0
  330. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/WHEEL +0 -0
  331. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/entry_points.txt +0 -0
  332. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/LICENSE.txt +0 -0
  333. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/cachecontrol/LICENSE.txt +0 -0
  334. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/certifi/LICENSE +0 -0
  335. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/distlib/LICENSE.txt +0 -0
  336. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/distro/LICENSE +0 -0
  337. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/msgpack/COPYING +0 -0
  338. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/packaging/LICENSE +0 -0
  339. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/packaging/LICENSE.APACHE +0 -0
  340. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/packaging/LICENSE.BSD +0 -0
  341. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/pkg_resources/LICENSE +0 -0
  342. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/platformdirs/LICENSE +0 -0
  343. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/pygments/LICENSE +0 -0
  344. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/pyproject_hooks/LICENSE +0 -0
  345. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/requests/LICENSE +0 -0
  346. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/resolvelib/LICENSE +0 -0
  347. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/rich/LICENSE +0 -0
  348. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/tomli/LICENSE +0 -0
  349. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/tomli_w/LICENSE +0 -0
  350. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/truststore/LICENSE +0 -0
  351. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/src/pip/_vendor/urllib3/LICENSE.txt +0 -0
@@ -320,6 +320,21 @@ export function createEmbeddedAgentPortClient(port, options) {
320
320
  }
321
321
  const message = event.data;
322
322
  switch (message.kind) {
323
+ case WorkerMessageKind.AgentCommandReceived:
324
+ // Awaited submits are steering. This receipt only diagnoses the initial handoff.
325
+ if (pendingRuntimeCommands.has(message.commandId))
326
+ return;
327
+ try {
328
+ options.onInitialSubmitReceived?.({
329
+ commandId: message.commandId,
330
+ receivedAt: message.receivedAt,
331
+ userMessageId: message.userMessageId
332
+ });
333
+ }
334
+ catch {
335
+ // Observability callbacks must not change worker command behavior.
336
+ }
337
+ return;
323
338
  case WorkerMessageKind.AgentCommandAck: {
324
339
  const pendingCommand = pendingRuntimeCommands.get(message.commandId);
325
340
  if (!pendingCommand) {
@@ -4,7 +4,7 @@
4
4
  * Owns request/response correlation and the abort-side detachment rule for
5
5
  * results that arrive after the requesting tool has been cancelled.
6
6
  */
7
- import { AgentEventKind, AgentProtocolErrorKind, toStructuredCloneSafeAgentEvent } from '../../contracts/agent-api.js';
7
+ import { AgentCommandKind, AgentEventKind, AgentProtocolErrorKind, toStructuredCloneSafeAgentEvent } from '../../contracts/agent-api.js';
8
8
  import { WorkerMessageKind, isWorkerMessage } from '../../contracts/wire.js';
9
9
  import { isOutOfCreditsError } from '../out-of-credits-error.js';
10
10
  function createWorkerPortProtocolError(message) {
@@ -125,6 +125,22 @@ export function attachEmbeddedAgentDispatchToWorkerPort(port, controller, regist
125
125
  return;
126
126
  }
127
127
  const message = event.data;
128
+ if (message.command.kind === AgentCommandKind.SubmitPrompt &&
129
+ message.command.submitOptions?.userMessageId) {
130
+ const receiptMessage = {
131
+ kind: WorkerMessageKind.AgentCommandReceived,
132
+ commandId: message.commandId,
133
+ receivedAt: Date.now(),
134
+ userMessageId: message.command.submitOptions.userMessageId
135
+ };
136
+ try {
137
+ // Observability is best-effort and must never block command handling.
138
+ port.postMessage(receiptMessage);
139
+ }
140
+ catch {
141
+ // The command can still run even if its diagnostic receipt cannot be posted.
142
+ }
143
+ }
128
144
  void controller
129
145
  .handleCommand(message.command)
130
146
  .then(() => {
package/dist/main.js CHANGED
@@ -84,6 +84,7 @@ import { createSessionManager } from './startup/session-selection.js';
84
84
  import { applyRuntimeApiKeyAndRefreshShortcutLoggerContext, applyShortcutUserInfoToLogger, refreshShortcutUserInfoLoggerContext, resolveShortcutUserInfo } from './startup/shortcut-user-logger-context.js';
85
85
  import { runForegroundUpdate } from './startup/update-action.js';
86
86
  import { runStartupUpdateFlow } from './startup/update-flow.js';
87
+ import { refreshUpdateStatus } from './startup/update-manager.js';
87
88
  import { runWindowsPythonRuntimeUpgradeIfNeeded } from './startup/windows-python-upgrade.js';
88
89
  import { createWorkbookPrePromptContext } from './startup/workbook-pre-prompt.js';
89
90
  let sessionRef = null;
@@ -691,6 +692,15 @@ export async function main(args) {
691
692
  offline: offlineMode,
692
693
  skipVersionCheck
693
694
  });
695
+ const startupUpdateStatus = updatePromptOutcome.kind === 'continue' ? updatePromptOutcome.updateStatus : undefined;
696
+ const toInteractiveUpdate = (status) => status?.kind === 'available'
697
+ ? {
698
+ currentVersion: status.currentVersion,
699
+ latestVersion: status.latestVersion
700
+ }
701
+ : undefined;
702
+ const interactiveUpdate = toInteractiveUpdate(startupUpdateStatus);
703
+ const updateChecksEnabled = isInteractive && !needsSetup && !offlineMode && !skipVersionCheck;
694
704
  if (updatePromptOutcome.kind === 'run-update') {
695
705
  console.log(chalk.green(`Installing ShortcutXL v${updatePromptOutcome.update.latestVersion}...`));
696
706
  const updateResult = await runForegroundUpdate({
@@ -823,7 +833,7 @@ export async function main(args) {
823
833
  cli_mode: cliMode
824
834
  }
825
835
  });
826
- // Expose the sheet pool on the session so the collab layer can access workbooks.
836
+ // Expose the sheet pool on the session for interactive workbook flows.
827
837
  if (sheetPoolRef) {
828
838
  session.sheetPool = sheetPoolRef;
829
839
  }
@@ -976,6 +986,11 @@ export async function main(args) {
976
986
  initialImages,
977
987
  initialMessages: parsed.messages,
978
988
  verbose: parsed.verbose,
989
+ availableUpdate: interactiveUpdate,
990
+ updateLastCheckedAt: startupUpdateStatus?.lastCheckedAt,
991
+ checkForUpdate: updateChecksEnabled
992
+ ? async () => toInteractiveUpdate(await refreshUpdateStatus())
993
+ : undefined,
979
994
  fetchCreditBalance: async (apiKey) => {
980
995
  const model = session.model;
981
996
  if (!model || model.provider !== SHORTCUT_PROVIDER_ID)
@@ -8,5 +8,5 @@ export type { ImageContent } from '../ai/types.js';
8
8
  export type { FileUploadData } from '../app/file-uploads.js';
9
9
  export { prepareRpcAttachments, type RpcAttachment } from './rpc-attachments.js';
10
10
  export { RpcClient, type ModelInfo, type RpcClientOptions, type RpcEventListener, type RpcHostEventListener, type RpcTerminationListener } from './rpc-client.js';
11
- export { RPC_PROTOCOL_VERSION, isRpcClientMessage, isRpcServerMessage, type RpcAgentTask, type RpcAuthProvider, type RpcAuthState, type RpcClientMessage, type RpcCommand, type RpcCommandResult, type RpcContextUsage, type RpcFastModeState, type RpcHostEvent, type RpcInteractionRequest, type RpcInteractionResponse, type RpcModelInfo, type RpcPermissionState, type RpcResourceSkill, type RpcServerMessage, type RpcSessionSnapshot, type RpcSessionSummary, type RpcSettingsState, type RpcSlashCommand } from './rpc-types.js';
11
+ export { RPC_PROTOCOL_VERSION, isRpcClientMessage, isRpcServerMessage, type RpcAgentTask, type RpcAuthProvider, type RpcAuthState, type RpcClientMessage, type RpcCommand, type RpcCommandResult, type RpcContextUsage, type RpcFastModeState, type RpcHostEvent, type RpcInteractionRequest, type RpcInteractionResponse, type RpcLocalFileOpenResult, type RpcModelInfo, type RpcPermissionState, type RpcResourceSkill, type RpcServerMessage, type RpcSessionSnapshot, type RpcSessionSummary, type RpcSettingsState, type RpcSlashCommand } from './rpc-types.js';
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -4,6 +4,7 @@ import type { AuthStorage } from '../app/auth/auth-storage.js';
4
4
  import type { ExtensionUIContext } from '../app/extensions/index.js';
5
5
  import { listAllSessions } from '../app/session/session-catalog.js';
6
6
  import type { RemoteApprovalController } from '../remote-control/approval-controller.js';
7
+ import { type LocalFileOpenResult } from '../shell/links/local-file-opener.js';
7
8
  import { type RpcClientMessage, type RpcServerMessage, type RpcSlashCommand } from './rpc-types.js';
8
9
  export interface RpcSessionHostOptions {
9
10
  listSessions?: typeof listAllSessions;
@@ -14,6 +15,7 @@ export interface RpcSessionHostOptions {
14
15
  logout(providerId?: string): Promise<void>;
15
16
  }) => Promise<boolean>;
16
17
  extraCommands?: RpcSlashCommand[];
18
+ openLocalFileHref?: (href: string) => Promise<LocalFileOpenResult>;
17
19
  }
18
20
  /** One ordered command/event surface, independent of JSONL or Node IPC. */
19
21
  export declare class RpcSessionHost {
@@ -27,11 +29,13 @@ export declare class RpcSessionHost {
27
29
  private readonly authStorage?;
28
30
  private readonly commandHandler?;
29
31
  private readonly extraCommands;
32
+ private readonly openLocalFileHref;
30
33
  private activeLogin?;
31
34
  private loginAbortController?;
32
35
  private pendingMode?;
33
36
  private sequence;
34
37
  private commandQueue;
38
+ private fileOpenQueue;
35
39
  private shutdownRequested;
36
40
  private started;
37
41
  private closed;
@@ -12,6 +12,7 @@ import { getTaskScopeId, taskManager } from '../app/tools/task/manager.js';
12
12
  import { getAgentDir } from '../config.js';
13
13
  import { getCurrentMode, onModeChange } from '../mode-names.js';
14
14
  import { exportSessionToHtml } from '../shell/export-html/index.js';
15
+ import { openLocalFileLink } from '../shell/links/local-file-opener.js';
15
16
  import { RPC_PROTOCOL_VERSION } from './rpc-types.js';
16
17
  function errorMessage(error) {
17
18
  return error instanceof Error ? error.message : String(error);
@@ -28,11 +29,13 @@ export class RpcSessionHost {
28
29
  authStorage;
29
30
  commandHandler;
30
31
  extraCommands;
32
+ openLocalFileHref;
31
33
  activeLogin;
32
34
  loginAbortController;
33
35
  pendingMode;
34
36
  sequence = 0;
35
37
  commandQueue = Promise.resolve();
38
+ fileOpenQueue = Promise.resolve();
36
39
  shutdownRequested = false;
37
40
  started = false;
38
41
  closed = false;
@@ -48,6 +51,7 @@ export class RpcSessionHost {
48
51
  this.authStorage = options.authStorage;
49
52
  this.commandHandler = options.commandHandler;
50
53
  this.extraCommands = options.extraCommands ?? [];
54
+ this.openLocalFileHref = options.openLocalFileHref ?? openLocalFileLink;
51
55
  }
52
56
  subscribe(listener) {
53
57
  this.listeners.add(listener);
@@ -134,6 +138,11 @@ export class RpcSessionHost {
134
138
  return Promise.reject(new Error('RPC session host is not started'));
135
139
  if (this.closed)
136
140
  return Promise.reject(new Error('RPC session host is closed'));
141
+ if (message.command.type === 'open_local_file') {
142
+ const operation = this.fileOpenQueue.then(() => this.processMessage(message));
143
+ this.fileOpenQueue = operation.catch(() => { });
144
+ return operation;
145
+ }
137
146
  const operation = this.commandQueue.then(() => this.processMessage(message));
138
147
  this.commandQueue = operation.catch(() => { });
139
148
  return operation;
@@ -640,22 +649,16 @@ export class RpcSessionHost {
640
649
  this.publishSnapshot();
641
650
  return this.success();
642
651
  }
643
- case 'send_collab_message': {
644
- const client = this.session.collabClient;
645
- if (!client?.state.roomId)
646
- return this.failure('Not in a collaboration session');
647
- const message = command.message.trim();
648
- if (!message)
649
- return this.failure('Collaboration message cannot be empty');
650
- client.sendChat(message);
651
- return this.success();
652
- }
653
652
  case 'get_session_stats':
654
653
  return this.success(this.session.getSessionStats());
655
654
  case 'export_html':
656
655
  return this.success({
657
656
  path: await exportSessionToHtml(this.session, command.outputPath)
658
657
  });
658
+ case 'open_local_file':
659
+ if (typeof command.href !== 'string')
660
+ return this.failure('File link must be a string');
661
+ return this.success(await this.openLocalFileHref(command.href));
659
662
  case 'switch_session':
660
663
  return this.success({
661
664
  cancelled: !(await this.session.switchSession(command.sessionPath))
@@ -810,20 +813,6 @@ export class RpcSessionHost {
810
813
  errorMessage: task.errorMessage
811
814
  }));
812
815
  })(),
813
- collaboration: (() => {
814
- const state = this.session.collabClient?.state;
815
- return {
816
- connected: state?.connected ?? false,
817
- roomId: state?.roomId ?? null,
818
- peers: state
819
- ? [...state.peers.values()].map((peer) => ({
820
- id: peer.peerId,
821
- displayName: peer.displayName,
822
- sheets: peer.sheets
823
- }))
824
- : []
825
- };
826
- })(),
827
816
  isStreaming: this.session.isStreaming,
828
817
  isCompacting: this.session.isCompacting,
829
818
  steeringMode: this.session.steeringMode,
@@ -97,19 +97,6 @@ export interface RpcAgentTask {
97
97
  resultText?: string;
98
98
  errorMessage?: string;
99
99
  }
100
- export interface RpcCollaborationState {
101
- connected: boolean;
102
- roomId: string | null;
103
- peers: Array<{
104
- id: string;
105
- displayName: string;
106
- sheets?: Array<{
107
- name: string;
108
- cellCount: number;
109
- usedRange?: string | null;
110
- }>;
111
- }>;
112
- }
113
100
  export interface RpcSessionSummary {
114
101
  id: string;
115
102
  path?: string;
@@ -124,6 +111,9 @@ export interface RpcContextUsage {
124
111
  contextWindow: number;
125
112
  percent: number | null;
126
113
  }
114
+ export interface RpcLocalFileOpenResult {
115
+ path: string;
116
+ }
127
117
  export interface RpcSessionSnapshot {
128
118
  session: RpcSessionSummary;
129
119
  environment: {
@@ -143,7 +133,6 @@ export interface RpcSessionSnapshot {
143
133
  settings: RpcSettingsState;
144
134
  goal: ShortcutXLThreadGoal | null;
145
135
  agentTasks: RpcAgentTask[];
146
- collaboration: RpcCollaborationState;
147
136
  isStreaming: boolean;
148
137
  isCompacting: boolean;
149
138
  steeringMode: 'all' | 'one-at-a-time';
@@ -287,14 +276,14 @@ export type RpcCommand = {
287
276
  type: 'message_agent_task';
288
277
  agentId: string;
289
278
  message: string;
290
- } | {
291
- type: 'send_collab_message';
292
- message: string;
293
279
  } | {
294
280
  type: 'get_session_stats';
295
281
  } | {
296
282
  type: 'export_html';
297
283
  outputPath?: string;
284
+ } | {
285
+ type: 'open_local_file';
286
+ href: string;
298
287
  } | {
299
288
  type: 'switch_session';
300
289
  sessionPath: string;
@@ -1,8 +1,11 @@
1
1
  /**
2
2
  * Cross-platform "open" utility — launches files/directories in the OS default handler.
3
3
  */
4
+ export interface OpenInEditorOptions {
5
+ directory?: boolean;
6
+ }
4
7
  /** Convert any error thrown by openInEditor into a human-readable string. */
5
8
  export declare function formatOpenError(error: unknown): string;
6
9
  /** Open a file or directory in the OS default editor/handler. */
7
- export declare function openInEditor(path: string): Promise<void>;
10
+ export declare function openInEditor(path: string, options?: OpenInEditorOptions): Promise<void>;
8
11
  //# sourceMappingURL=open.d.ts.map
@@ -1,15 +1,27 @@
1
1
  /**
2
2
  * Cross-platform "open" utility — launches files/directories in the OS default handler.
3
3
  */
4
- import { execFile } from 'child_process';
4
+ import { execFile, spawn } from 'child_process';
5
5
  /** Convert any error thrown by openInEditor into a human-readable string. */
6
6
  export function formatOpenError(error) {
7
7
  return error instanceof Error ? error.message : String(error);
8
8
  }
9
9
  /** Open a file or directory in the OS default editor/handler. */
10
- export function openInEditor(path) {
10
+ export function openInEditor(path, options = {}) {
11
11
  if (process.platform === 'win32') {
12
12
  return new Promise((resolve, reject) => {
13
+ if (options.directory) {
14
+ const child = spawn('explorer.exe', ['/n,', path], {
15
+ detached: true,
16
+ stdio: 'ignore'
17
+ });
18
+ child.once('error', reject);
19
+ child.once('spawn', () => {
20
+ child.unref();
21
+ resolve();
22
+ });
23
+ return;
24
+ }
13
25
  execFile('rundll32.exe', ['url.dll,FileProtocolHandler', path], { windowsHide: true }, (error) => {
14
26
  if (error) {
15
27
  reject(error);
@@ -7,6 +7,8 @@ import type { SkillUploadApprovalRequest } from '../../app/sync/skills-upload.js
7
7
  import type { WorkbookScopeStateRef } from '../../app/workbook-scope.js';
8
8
  import type { SelectItem } from '../../tui/index.js';
9
9
  import type { Terminal } from '../../tui/terminal.js';
10
+ import type { LocalFileOpenResult } from '../links/local-file-opener.js';
11
+ import type { InteractiveAvailableUpdate } from '../status/update-reminder.js';
10
12
  import type { SlashCommandDefinition } from './slash-commands.js';
11
13
  import type { WorkbookScopeDeps } from './workbook-scope-controller.js';
12
14
  export type CompactionQueuedMessage = {
@@ -29,6 +31,8 @@ export interface CreditBalance {
29
31
  export interface InteractiveModeOptions {
30
32
  /** Custom terminal implementation for the interactive shell. */
31
33
  terminal?: Terminal;
34
+ /** Override local file opening for deterministic shell tests. */
35
+ openLocalFileHref?: (href: string) => Promise<LocalFileOpenResult>;
32
36
  skipShortcutAuth?: boolean;
33
37
  exitProcessOnShutdown?: boolean;
34
38
  workbookScopeRef?: WorkbookScopeStateRef;
@@ -46,6 +50,12 @@ export interface InteractiveModeOptions {
46
50
  initialMessages?: string[];
47
51
  /** Force verbose startup (overrides quietStartup setting) */
48
52
  verbose?: boolean;
53
+ /** Update retained after the user skips the startup prompt. */
54
+ availableUpdate?: InteractiveAvailableUpdate;
55
+ /** Timestamp used to schedule the next non-blocking registry check. */
56
+ updateLastCheckedAt?: string;
57
+ /** Refresh available update state for the running shell. */
58
+ checkForUpdate?: () => Promise<InteractiveAvailableUpdate | undefined>;
49
59
  /**
50
60
  * Fetch credit balance for the current API key. Injected by main.ts.
51
61
  * Returns CreditBalance when credits apply, 'not_applicable' when the model
@@ -10,6 +10,7 @@ export declare class InteractiveMode {
10
10
  private options;
11
11
  private session;
12
12
  private ui;
13
+ private readonly localFileLinkInput;
13
14
  private renderTracePath;
14
15
  private shellLayout;
15
16
  private mainContentContainer;
@@ -111,17 +112,15 @@ export declare class InteractiveMode {
111
112
  private widgetContainerBelow;
112
113
  private customFooter;
113
114
  private headerContainer;
115
+ private updateReminderController;
114
116
  private builtInHeader;
115
117
  private customHeader;
116
118
  private isBashMode;
117
- private isChatMode;
118
119
  private creditPollInterval;
119
120
  private static readonly CREDIT_POLL_INTERVAL_MS;
120
121
  private readonly creditGate;
121
122
  private _commands;
122
123
  private _resourceDisplay;
123
- private _collabManager;
124
- private _superFight;
125
124
  private readonly manualMemoryCoordinator;
126
125
  private readonly manualSkillProposalBackground;
127
126
  /** AgentController for the current session. */
@@ -252,6 +251,7 @@ export declare class InteractiveMode {
252
251
  /** Wire interactive shell key handlers via registerInteractiveActions. */
253
252
  private setupKeyHandlers;
254
253
  private handleEditorSelectionInput;
254
+ private handleLocalFileLink;
255
255
  /**
256
256
  * Screen-row range (1-based, inclusive) occupied by the editor, derived from
257
257
  * geometry cached during the last frame render — no re-render per mouse event.
@@ -283,9 +283,7 @@ export declare class InteractiveMode {
283
283
  private tryAttachClipboardFilePath;
284
284
  /** Build a CommandContext for slash command handlers. */
285
285
  private _buildCommandContext;
286
- /** Lazily build the collaboration command client backed by CollabManager. */
287
- private getCollabCommandClient;
288
- /** Wire the default editor submit handler covering bash, chat, slash, and prompt dispatch. */
286
+ /** Wire the default editor submit handler covering bash, slash, and prompt dispatch. */
289
287
  private setupEditorSubmitHandler;
290
288
  /** Wire the InteractiveSessionController to all agent lifecycle events. */
291
289
  private subscribeToAgent;
@@ -375,13 +373,9 @@ export declare class InteractiveMode {
375
373
  private handleFollowUp;
376
374
  /** Handle dequeue keybind: pull queued messages back into the editor for editing. */
377
375
  private handleDequeue;
378
- /** Refresh the editor border color based on bash/chat/thinking state. */
376
+ /** Refresh the editor border color based on bash/thinking state. */
379
377
  private updateEditorBorderColor;
380
- /** Subscribe to CollabClient events and surface peer activity in chat. */
381
- private _attachCollabEvents;
382
- /** Launch the SuperFight collab mini-game UI for the current room. */
383
- private launchSuperFight;
384
- /** Watch editor text and toggle bash/chat-mode borders based on `!`/`:` prefixes. */
378
+ /** Watch editor text and toggle bash-mode borders based on the `!` prefix. */
385
379
  private setupBashModeDetection;
386
380
  /** Execute a `!`-prefixed bash command, streaming output into the chat container. */
387
381
  private executeBashCommand;