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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "generatedAt": "2026-07-28T23:48:58.499Z",
3
+ "generatedAt": "2026-07-31T01:21:34.635Z",
4
4
  "package": "shortcutxl",
5
5
  "binaryExtensions": [
6
6
  ".dll",
@@ -11,7 +11,7 @@
11
11
  "files": [
12
12
  {
13
13
  "path": "xll/ShortcutXL.xll",
14
- "sha256": "47870ca8a337a4bf1c589825ff2b3c71d56db48729660a925d9a76ace4da5367",
14
+ "sha256": "f5fb7fe280524977d746bd2145fe6106f68af14bf252c8ec7e0531a958293d19",
15
15
  "source": "ShortcutXL native XLL build",
16
16
  "version": "package",
17
17
  "builtBy": "shortcut",
@@ -523,7 +523,7 @@
523
523
  },
524
524
  {
525
525
  "path": "xll/python/Scripts/httpx.exe",
526
- "sha256": "bb9c6335b1b3f9901d072bd24324bf626a8472c4c272f1ca3c7cb2d2c9cd69fe",
526
+ "sha256": "ce6aa4fa98e8669779d14dfa81d7aba7659132525e38ca376cc747e5032801f5",
527
527
  "source": "httpx console launcher installed into embedded Python",
528
528
  "version": "see packaged httpx distribution",
529
529
  "builtBy": "third-party",
@@ -531,7 +531,7 @@
531
531
  },
532
532
  {
533
533
  "path": "xll/python/Scripts/idna.exe",
534
- "sha256": "02a133c4c3c39adb9e83e6326fe6118bc8c5433ac7a061acf02400f2cb753311",
534
+ "sha256": "53fc2e979b03a27cf3c7f752a6862966469095fc5194b9e07810fc20125209b1",
535
535
  "source": "Python package console launcher installed into embedded Python",
536
536
  "version": "see owning Python package metadata in site-packages",
537
537
  "builtBy": "third-party",
@@ -539,7 +539,7 @@
539
539
  },
540
540
  {
541
541
  "path": "xll/python/Scripts/pip.exe",
542
- "sha256": "9d872f7ca3375874562352dad0fa7dfed3098081765b3dc961f00017410d86d8",
542
+ "sha256": "e71df67dcf21cda30991bf1e75794ae1b0687e6585c9b181b13fa363ecf6b19c",
543
543
  "source": "pip console launcher installed into embedded Python",
544
544
  "version": "see packaged pip distribution",
545
545
  "builtBy": "third-party",
@@ -547,7 +547,7 @@
547
547
  },
548
548
  {
549
549
  "path": "xll/python/Scripts/pip3.13.exe",
550
- "sha256": "9d872f7ca3375874562352dad0fa7dfed3098081765b3dc961f00017410d86d8",
550
+ "sha256": "e71df67dcf21cda30991bf1e75794ae1b0687e6585c9b181b13fa363ecf6b19c",
551
551
  "source": "pip console launcher installed into embedded Python",
552
552
  "version": "see packaged pip distribution",
553
553
  "builtBy": "third-party",
@@ -555,7 +555,7 @@
555
555
  },
556
556
  {
557
557
  "path": "xll/python/Scripts/pip3.exe",
558
- "sha256": "9d872f7ca3375874562352dad0fa7dfed3098081765b3dc961f00017410d86d8",
558
+ "sha256": "e71df67dcf21cda30991bf1e75794ae1b0687e6585c9b181b13fa363ecf6b19c",
559
559
  "source": "pip console launcher installed into embedded Python",
560
560
  "version": "see packaged pip distribution",
561
561
  "builtBy": "third-party",
@@ -563,7 +563,7 @@
563
563
  },
564
564
  {
565
565
  "path": "xll/python/Scripts/pywin32_postinstall.exe",
566
- "sha256": "f86cd7eab9df33ccd6113b2728066f304afe4cb7918a74633d6c814445d78c1b",
566
+ "sha256": "f7f95b72e1260c6a23e2faabd4a90f067ec35e9b02587dec1a80f8d2b2bff931",
567
567
  "source": "Python package console launcher installed into embedded Python",
568
568
  "version": "see owning Python package metadata in site-packages",
569
569
  "builtBy": "third-party",
@@ -571,7 +571,7 @@
571
571
  },
572
572
  {
573
573
  "path": "xll/python/Scripts/pywin32_testall.exe",
574
- "sha256": "9fc079ece204431434b3684bb0d2ba9fb7bb21a7a899e9a5d4aba99fb93e7ba6",
574
+ "sha256": "2597a03f242c12d8e4d6563ee761c7f7ee25455b83db032c6d4bfd6df46a0c4d",
575
575
  "source": "Python package console launcher installed into embedded Python",
576
576
  "version": "see owning Python package metadata in site-packages",
577
577
  "builtBy": "third-party",
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.3.78]
4
+
5
+ - **More performant spreadsheet operations** - Read/write operations should be much faster and less buggy.
6
+ - **Linked local files** - Open local file links from agent responses in both the CLI and native app.
7
+ - **Safer read-only modes** - Ask and Plan modes no longer expose shell execution, and mode switching avoids unnecessary skill scans.
8
+ - **Native app polish** - Refreshed the native app design and improved chat autoscrolling during active sessions.
9
+ - **Auto-update reminders** - Update reminders will be surfaced in open terminal windows.
10
+
3
11
  ## [0.3.77]
4
12
 
5
13
  - **Native app file mentions** - Type `@` in the native app to search and attach workspace files with the same completion behavior as the CLI.
@@ -170,10 +170,7 @@ export declare class AgentSession {
170
170
  /** Details from the last prePromptContext call (e.g. { workbooks: string[] }). Read by TUI for annotations. */
171
171
  lastPrePromptDetails?: unknown;
172
172
  private readonly _sessionState;
173
- private _collabClient;
174
173
  private _sheetPool;
175
- private _collabAwareness;
176
- private _collabSync;
177
174
  private _modelRegistry;
178
175
  /** Fire-and-forget tool-call summary generation. */
179
176
  private _summaryEmitter;
@@ -419,22 +416,10 @@ export declare class AgentSession {
419
416
  getFollowUpMessages(): readonly string[];
420
417
  /** Resource loader for skills, prompts, and context files used by this session. */
421
418
  get resourceLoader(): RuntimeResourceLoader;
422
- /** Active collaboration client when the session is part of a collab room, otherwise null. */
423
- get collabClient(): import('./collab/collab-client.js').CollabClient | null;
424
- /** Attach or detach the collaboration client for this session. */
425
- set collabClient(client: import('./collab/collab-client.js').CollabClient | null);
426
419
  /** Sheet-engine pool currently bound to this session, or null if unbound. */
427
420
  get sheetPool(): import('@shortcut/mog-sandbox-runtime').SheetEnginePool | null;
428
421
  /** Attach or detach the sheet-engine pool used by new-sheet flows. */
429
422
  set sheetPool(pool: import('@shortcut/mog-sandbox-runtime').SheetEnginePool | null);
430
- /** Awareness layer for the active collab session (peer cursors, presence), or null. */
431
- get collabAwareness(): import('./collab/awareness.js').CollabAwareness | null;
432
- /** Attach or detach the collab awareness layer. */
433
- set collabAwareness(awareness: import('./collab/awareness.js').CollabAwareness | null);
434
- /** Collab document sync controller for this session, or null if not in a room. */
435
- get collabSync(): import('./collab/collab-sync.js').CollabSync | null;
436
- /** Attach or detach the collab document sync controller. */
437
- set collabSync(sync: import('./collab/collab-sync.js').CollabSync | null);
438
423
  /**
439
424
  * Abort current operation and wait for agent to become idle.
440
425
  */
@@ -98,14 +98,8 @@ export class AgentSession {
98
98
  /** Details from the last prePromptContext call (e.g. { workbooks: string[] }). Read by TUI for annotations. */
99
99
  lastPrePromptDetails;
100
100
  _sessionState = new SessionState();
101
- // Collaboration client (lazily created on first /collab use)
102
- _collabClient = null;
103
101
  // Sheet engine pool (set from main.ts when new-sheet mode is active)
104
102
  _sheetPool = null;
105
- // Collaboration awareness (created after joining a room with an active workbook)
106
- _collabAwareness = null;
107
- // CRDT sync orchestrator (created after joining a room)
108
- _collabSync = null;
109
103
  // Model registry for API key resolution
110
104
  _modelRegistry;
111
105
  /** Fire-and-forget tool-call summary generation. */
@@ -614,13 +608,6 @@ export class AgentSession {
614
608
  this._disconnectFromAgent();
615
609
  this._summaryEmitter.abort();
616
610
  this._eventListeners = [];
617
- // Clean up collaboration resources
618
- this._collabSync?.destroy();
619
- this._collabSync = null;
620
- this._collabAwareness?.destroy();
621
- this._collabAwareness = null;
622
- this._collabClient?.destroy();
623
- this._collabClient = null;
624
611
  }
625
612
  /**
626
613
  * Wait for any in-flight suggestion generation to complete.
@@ -1239,14 +1226,6 @@ export class AgentSession {
1239
1226
  get resourceLoader() {
1240
1227
  return this._resourceLoader;
1241
1228
  }
1242
- /** Active collaboration client when the session is part of a collab room, otherwise null. */
1243
- get collabClient() {
1244
- return this._collabClient;
1245
- }
1246
- /** Attach or detach the collaboration client for this session. */
1247
- set collabClient(client) {
1248
- this._collabClient = client;
1249
- }
1250
1229
  /** Sheet-engine pool currently bound to this session, or null if unbound. */
1251
1230
  get sheetPool() {
1252
1231
  return this._sheetPool;
@@ -1255,22 +1234,6 @@ export class AgentSession {
1255
1234
  set sheetPool(pool) {
1256
1235
  this._sheetPool = pool;
1257
1236
  }
1258
- /** Awareness layer for the active collab session (peer cursors, presence), or null. */
1259
- get collabAwareness() {
1260
- return this._collabAwareness;
1261
- }
1262
- /** Attach or detach the collab awareness layer. */
1263
- set collabAwareness(awareness) {
1264
- this._collabAwareness = awareness;
1265
- }
1266
- /** Collab document sync controller for this session, or null if not in a room. */
1267
- get collabSync() {
1268
- return this._collabSync;
1269
- }
1270
- /** Attach or detach the collab document sync controller. */
1271
- set collabSync(sync) {
1272
- this._collabSync = sync;
1273
- }
1274
1237
  /**
1275
1238
  * Abort current operation and wait for agent to become idle.
1276
1239
  */
@@ -42,9 +42,7 @@ const ALL_BUILTIN_SLASH_COMMANDS = [
42
42
  { name: 'port-skills', description: 'Discover and register external skill roots' },
43
43
  { name: 'download-skills', description: 'Download skills from cloud' },
44
44
  { name: 'upload-skills', description: 'Upload local skills to cloud' },
45
- { name: 'reload', description: 'Reload extensions, skills, prompts, and themes' },
46
- // Collaboration
47
- { name: 'collab', description: 'Create or join a collaboration room' }
45
+ { name: 'reload', description: 'Reload extensions, skills, prompts, and themes' }
48
46
  ];
49
47
  /** All builtin command names, used to prevent extension collisions. */
50
48
  export const ALL_BUILTIN_SLASH_COMMAND_NAMES = new Set(ALL_BUILTIN_SLASH_COMMANDS.map((cmd) => cmd.name));
@@ -4,10 +4,9 @@
4
4
  * Provides the spreadsheet execution tool set for making changes to the workbook.
5
5
  * Can switch to plan or installation mode.
6
6
  */
7
- import { MODE } from '../../../mode-names.js';
8
7
  import { ACTION_SWITCH_MODE, BASH, EXECUTE_CODE, EXECUTE_TOOL, GET_TOOL_INFO, MCP_TOOL_NAMES, REFRESH_CONTEXT, SEND_MESSAGE, TAKE_SCREENSHOT, TASK, WRITE } from '../../../tool-names.js';
8
+ import { ACTION_MODE_METADATA } from '../metadata.js';
9
9
  import { buildActionPrompt } from './prompt.js';
10
- const DESCRIPTION = 'Execute changes to the spreadsheet.';
11
10
  export const ACTION_AGENT_TOOL_NAMES = [
12
11
  BASH,
13
12
  WRITE,
@@ -24,11 +23,11 @@ export const ACTION_AGENT_TOOL_NAMES = [
24
23
  /** Construct the action-mode agent definition with the full execution toolset. */
25
24
  export function actionAgent() {
26
25
  return {
27
- name: MODE.ACTION,
28
- description: DESCRIPTION,
26
+ name: ACTION_MODE_METADATA.name,
27
+ description: ACTION_MODE_METADATA.description,
29
28
  systemPrompt: buildActionPrompt(),
30
29
  tools: ACTION_AGENT_TOOL_NAMES,
31
- switchTo: [MODE.PLAN, MODE.INSTALLATION]
30
+ switchTo: ACTION_MODE_METADATA.switchTo
32
31
  };
33
32
  }
34
33
  //# sourceMappingURL=agent.js.map
@@ -4,12 +4,10 @@
4
4
  * Reviews, audits, and explains spreadsheet content without modification.
5
5
  * This is a sink state: the agent cannot switch out of ask mode.
6
6
  */
7
- import { MODE } from '../../../mode-names.js';
8
- import { BASH, EXECUTE_CODE, EXECUTE_TOOL, FIND, GET_TOOL_INFO, GREP, LLM_ANALYSIS, LS, MCP_TOOL_NAMES, READ, TAKE_SCREENSHOT } from '../../../tool-names.js';
7
+ import { EXECUTE_CODE, EXECUTE_TOOL, FIND, GET_TOOL_INFO, GREP, LLM_ANALYSIS, LS, MCP_TOOL_NAMES, READ, TAKE_SCREENSHOT } from '../../../tool-names.js';
8
+ import { ASK_MODE_METADATA } from '../metadata.js';
9
9
  import { buildAskPrompt } from './prompt.js';
10
- const DESCRIPTION = 'Read-only analysis mode — reviews, audits, and explains spreadsheet content. Switch to ask mode for user queries that center on audit, review, and understanding without any spreadsheet modifications.';
11
10
  const TOOLS = [
12
- BASH,
13
11
  EXECUTE_CODE,
14
12
  READ,
15
13
  GREP,
@@ -23,8 +21,8 @@ const TOOLS = [
23
21
  ];
24
22
  export function askAgent() {
25
23
  return {
26
- name: MODE.ASK,
27
- description: DESCRIPTION,
24
+ name: ASK_MODE_METADATA.name,
25
+ description: ASK_MODE_METADATA.description,
28
26
  systemPrompt: buildAskPrompt(),
29
27
  tools: TOOLS
30
28
  };
@@ -9,29 +9,39 @@ export { askAgent } from './ask/agent.js';
9
9
  export { installationAgent } from './installation/agent.js';
10
10
  export { manageAgent } from './manage/agent.js';
11
11
  export { planAgent } from './plan/agent.js';
12
+ import { MODE } from '../../mode-names.js';
12
13
  import { actionAgent } from './action/agent.js';
13
14
  import { askAgent } from './ask/agent.js';
14
15
  import { installationAgent } from './installation/agent.js';
15
16
  import { manageAgent } from './manage/agent.js';
17
+ import { MODE_METADATA } from './metadata.js';
16
18
  import { planAgent } from './plan/agent.js';
17
- function buildModes() {
18
- return [installationAgent(), actionAgent(), planAgent(), askAgent(), manageAgent()];
19
- }
19
+ const MODE_FACTORIES = new Map([
20
+ [MODE.INSTALLATION, installationAgent],
21
+ [MODE.ACTION, actionAgent],
22
+ [MODE.PLAN, planAgent],
23
+ [MODE.ASK, askAgent],
24
+ [MODE.MANAGE, manageAgent]
25
+ ]);
20
26
  export function getModes() {
21
- return buildModes();
27
+ return MODE_METADATA.map((metadata) => {
28
+ const factory = MODE_FACTORIES.get(metadata.name);
29
+ if (!factory) {
30
+ throw new Error(`No mode factory registered for "${metadata.name}".`);
31
+ }
32
+ return factory();
33
+ });
22
34
  }
23
35
  export function getMode(name) {
24
- return buildModes().find((mode) => mode.name === name);
36
+ return MODE_FACTORIES.get(name)?.();
25
37
  }
26
38
  export function getModeNames() {
27
- return buildModes().map((mode) => mode.name);
39
+ return MODE_METADATA.map((mode) => mode.name);
28
40
  }
29
41
  export function buildModeList() {
30
- return buildModes()
31
- .map((mode) => {
42
+ return MODE_METADATA.map((mode) => {
32
43
  const targets = mode.switchTo?.join(', ') ?? 'none';
33
44
  return `- **${mode.name}**: ${mode.description} (can switch to: ${targets})`;
34
- })
35
- .join('\n');
45
+ }).join('\n');
36
46
  }
37
47
  //# sourceMappingURL=index.js.map
@@ -6,8 +6,8 @@
6
6
  * Accepts optional preflight log entries to communicate what the deterministic
7
7
  * preflight script already accomplished before the agent took over.
8
8
  */
9
- import { MODE } from '../../../mode-names.js';
10
9
  import { BASH, EDIT, EXECUTE_CODE, GREP, INSTALLATION_SWITCH_MODE, READ, WRITE } from '../../../tool-names.js';
10
+ import { INSTALLATION_MODE_METADATA } from '../metadata.js';
11
11
  import { buildMacInstallationPrompt } from './prompt-mac.js';
12
12
  import { buildWindowsInstallationPrompt } from './prompt-windows.js';
13
13
  function buildInstallationPrompt(preflightLog) {
@@ -16,15 +16,14 @@ function buildInstallationPrompt(preflightLog) {
16
16
  }
17
17
  return buildWindowsInstallationPrompt(preflightLog);
18
18
  }
19
- const DESCRIPTION = 'First-time setup for ShortcutXL.';
20
19
  const TOOLS = [READ, BASH, EDIT, WRITE, GREP, EXECUTE_CODE, INSTALLATION_SWITCH_MODE];
21
20
  export function installationAgent(preflightLog) {
22
21
  return {
23
- name: MODE.INSTALLATION,
24
- description: DESCRIPTION,
22
+ name: INSTALLATION_MODE_METADATA.name,
23
+ description: INSTALLATION_MODE_METADATA.description,
25
24
  systemPrompt: buildInstallationPrompt(preflightLog),
26
25
  tools: TOOLS,
27
- switchTo: [MODE.ACTION]
26
+ switchTo: INSTALLATION_MODE_METADATA.switchTo
28
27
  };
29
28
  }
30
29
  //# sourceMappingURL=agent.js.map
@@ -4,16 +4,15 @@
4
4
  * Delegates workbook work to subagents, with bash for coordination files and inspection.
5
5
  * Explicit /manage can enter it, but it does not switch out again.
6
6
  */
7
- import { MODE } from '../../../mode-names.js';
8
7
  import { BASH, EXECUTE_TOOL, GET_TOOL_INFO, MCP_TOOL_NAMES, SEND_MESSAGE, TASK } from '../../../tool-names.js';
8
+ import { MANAGE_MODE_METADATA } from '../metadata.js';
9
9
  import { buildManagePrompt } from './prompt.js';
10
- const DESCRIPTION = 'Orchestration mode — decomposes complex tasks, delegates to subagents in parallel, and synthesizes results.';
11
10
  const TOOLS = [TASK, SEND_MESSAGE, GET_TOOL_INFO, EXECUTE_TOOL, BASH, ...MCP_TOOL_NAMES];
12
11
  /** Construct the manage-mode agent definition that orchestrates work via subagents. */
13
12
  export function manageAgent() {
14
13
  return {
15
- name: MODE.MANAGE,
16
- description: DESCRIPTION,
14
+ name: MANAGE_MODE_METADATA.name,
15
+ description: MANAGE_MODE_METADATA.description,
17
16
  systemPrompt: buildManagePrompt(),
18
17
  tools: TOOLS
19
18
  };
@@ -4,7 +4,6 @@
4
4
  * Pure orchestration mode: decomposes tasks, delegates to subagents,
5
5
  * and synthesizes results. No direct file/spreadsheet access.
6
6
  */
7
- import { buildCurrentSkillsSection } from '../../prompts/shared-guidelines.js';
8
7
  const MANAGE_BASE = `\
9
8
  You are Shortcut in Manage Mode — an orchestrator. You decompose tasks, delegate workbook/document work to subagents via the task tool, use bash for coordination files and lightweight inspection, and synthesize results.
10
9
 
@@ -79,6 +78,6 @@ Every task query to a subagent must include:
79
78
 
80
79
  `;
81
80
  export function buildManagePrompt() {
82
- return [MANAGE_BASE, buildCurrentSkillsSection()].join('\n\n');
81
+ return MANAGE_BASE;
83
82
  }
84
83
  //# sourceMappingURL=prompt.js.map
@@ -0,0 +1,31 @@
1
+ export interface ModeMetadata {
2
+ readonly name: string;
3
+ readonly description: string;
4
+ readonly switchTo?: readonly string[];
5
+ }
6
+ export declare const INSTALLATION_MODE_METADATA: {
7
+ readonly name: "installation";
8
+ readonly description: "First-time setup for ShortcutXL.";
9
+ readonly switchTo: readonly ["action"];
10
+ };
11
+ export declare const ACTION_MODE_METADATA: {
12
+ readonly name: "action";
13
+ readonly description: "Execute changes to the spreadsheet.";
14
+ readonly switchTo: readonly ["plan", "installation"];
15
+ };
16
+ export declare const PLAN_MODE_METADATA: {
17
+ readonly name: "plan";
18
+ readonly description: "Read-only planning mode for exploration, clarifying requirements and drafting an implementation plan.";
19
+ readonly switchTo: readonly ["action"];
20
+ };
21
+ export declare const ASK_MODE_METADATA: {
22
+ readonly name: "ask";
23
+ readonly description: "Read-only analysis mode — reviews, audits, and explains spreadsheet content. Switch to ask mode for user queries that center on audit, review, and understanding without any spreadsheet modifications.";
24
+ };
25
+ export declare const MANAGE_MODE_METADATA: {
26
+ readonly name: "manage";
27
+ readonly description: "Orchestration mode — decomposes complex tasks, delegates to subagents in parallel, and synthesizes results.";
28
+ };
29
+ export declare const MODE_METADATA: readonly ModeMetadata[];
30
+ export declare function getModeMetadata(name: string): ModeMetadata | undefined;
31
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1,35 @@
1
+ import { MODE } from '../../mode-names.js';
2
+ export const INSTALLATION_MODE_METADATA = {
3
+ name: MODE.INSTALLATION,
4
+ description: 'First-time setup for ShortcutXL.',
5
+ switchTo: [MODE.ACTION]
6
+ };
7
+ export const ACTION_MODE_METADATA = {
8
+ name: MODE.ACTION,
9
+ description: 'Execute changes to the spreadsheet.',
10
+ switchTo: [MODE.PLAN, MODE.INSTALLATION]
11
+ };
12
+ export const PLAN_MODE_METADATA = {
13
+ name: MODE.PLAN,
14
+ description: 'Read-only planning mode for exploration, clarifying requirements and drafting an implementation plan.',
15
+ switchTo: [MODE.ACTION]
16
+ };
17
+ export const ASK_MODE_METADATA = {
18
+ name: MODE.ASK,
19
+ description: 'Read-only analysis mode — reviews, audits, and explains spreadsheet content. Switch to ask mode for user queries that center on audit, review, and understanding without any spreadsheet modifications.'
20
+ };
21
+ export const MANAGE_MODE_METADATA = {
22
+ name: MODE.MANAGE,
23
+ description: 'Orchestration mode — decomposes complex tasks, delegates to subagents in parallel, and synthesizes results.'
24
+ };
25
+ export const MODE_METADATA = [
26
+ INSTALLATION_MODE_METADATA,
27
+ ACTION_MODE_METADATA,
28
+ PLAN_MODE_METADATA,
29
+ ASK_MODE_METADATA,
30
+ MANAGE_MODE_METADATA
31
+ ];
32
+ export function getModeMetadata(name) {
33
+ return MODE_METADATA.find((mode) => mode.name === name);
34
+ }
35
+ //# sourceMappingURL=metadata.js.map
@@ -4,13 +4,10 @@
4
4
  * Explores the workbook, asks clarifying questions, and produces an
5
5
  * implementation plan before switching to action mode for execution.
6
6
  */
7
- import { MODE } from '../../../mode-names.js';
8
- import { BASH, EXECUTE_CODE, EXECUTE_TOOL, FIND, GET_TOOL_INFO, GREP, LLM_ANALYSIS, LS, MCP_TOOL_NAMES, PLAN_SWITCH_MODE, READ, TAKE_SCREENSHOT } from '../../../tool-names.js';
7
+ import { EXECUTE_CODE, EXECUTE_TOOL, FIND, GET_TOOL_INFO, GREP, LLM_ANALYSIS, LS, MCP_TOOL_NAMES, PLAN_SWITCH_MODE, READ, TAKE_SCREENSHOT } from '../../../tool-names.js';
8
+ import { PLAN_MODE_METADATA } from '../metadata.js';
9
9
  import { buildPlanPrompt } from './prompt.js';
10
- const DESCRIPTION = `\
11
- Read-only planning mode for exploration, clarifying requirements and drafting an implementation plan.`;
12
10
  const TOOLS = [
13
- BASH,
14
11
  EXECUTE_CODE,
15
12
  READ,
16
13
  GREP,
@@ -25,11 +22,11 @@ const TOOLS = [
25
22
  ];
26
23
  export function planAgent() {
27
24
  return {
28
- name: MODE.PLAN,
29
- description: DESCRIPTION,
25
+ name: PLAN_MODE_METADATA.name,
26
+ description: PLAN_MODE_METADATA.description,
30
27
  systemPrompt: buildPlanPrompt(),
31
28
  tools: TOOLS,
32
- switchTo: [MODE.ACTION]
29
+ switchTo: PLAN_MODE_METADATA.switchTo
33
30
  };
34
31
  }
35
32
  //# sourceMappingURL=agent.js.map
@@ -37,7 +37,7 @@ ${engine.execTool}
37
37
  1. Gauge user experience: If unclear from their query, ASK about their spreadsheet familiarity first - then adapt all explanations accordingly (beginners need more context, experts want concise trade-offs)
38
38
  2. After exploration: State (1) task understanding (MAX 3-4 lines), (2) list ALL open questions upfront with a brief description of each (e.g., "I need to clarify 3 things: 1) how to handle missing data, 2) whether to use formulas or static values, 3) where to place output"), (3) first question
39
39
  3. ONE question per response. Before each question, state which open items remain (e.g., "Still need to resolve: output location, formula vs static values."). If a user's answer resolves multiple items, acknowledge that and move on. Do NOT re-count or renumber — just reference the open items by topic.
40
- 4. Write the final plan as markdown to a file under /tmp, then call switch_from_plan_mode(mode: "action", documentPath: "<that file path>").
40
+ 4. Pass the final plan directly to switch_from_plan_mode(mode: "action", reason: "<the full plan>").
41
41
  5. If plan rejected: Restart question cycle to understand needed changes
42
42
 
43
43
  **Critical Rules:**
@@ -66,7 +66,7 @@ Structure:
66
66
  - **[Bold question]?**
67
67
 
68
68
  **Final Plan Format:**
69
- Write the full plan as markdown to a file under /tmp. Then call switch_from_plan_mode(mode: "action", documentPath: "<that file path>").
69
+ Pass the full plan as markdown directly in the reason argument to switch_from_plan_mode(mode: "action", reason: "<the full plan>").
70
70
 
71
71
  \`\`\`
72
72
  Task: [One sentence]
@@ -83,7 +83,7 @@ Things to Watch Out For:
83
83
  - [Key considerations and edge cases]
84
84
  \`\`\`
85
85
 
86
- MUST call switch_from_plan_mode(mode: "action", documentPath: "<that file path>") - do NOT output plan directly.
86
+ MUST call switch_from_plan_mode(mode: "action", reason: "<the full plan>") - do NOT output plan directly.
87
87
  `;
88
88
  // ---------------------------------------------------------------------------
89
89
  // Assembly
@@ -52,7 +52,7 @@ Multiple agents may operate on the same Excel instance concurrently. Follow thes
52
52
 
53
53
  ### Guidelines
54
54
  - Use wb.getWorkbookSummary() to get sheet names and used ranges for a workbook before deeper reads
55
- - Use wrappers over raw COM when wrappers are available, and use COM for everything else
55
+ - Use wrapper methods for cell writes so their exact destination ranges are tracked; raw COM writes execute but do not produce cell diffs. Use COM when no wrapper exists
56
56
  - NEVER use Sheet.Copy — it silently creates new workbooks via pywin32. Use range.Copy for data transfer
57
57
  - NEVER use Sheet.Move with keyword args (After=x, Before=x) — pywin32 bug creates new workbooks. Use wb.moveSheet(name, index) instead
58
58
  - Watch out for indexing: COM collections are 1-based (ws.Cells(1,1) is A1), but Python tuples are 0-based
@@ -31,6 +31,10 @@ const COM_RUNTIME_TROUBLESHOOTING = `## Debugging HTTP server health
31
31
  - if a single Excel process is running and execute_code fails, it could be due to pop-up blockage. Confirm and debug however you can and then stop. Don't do anything fancy, just tell the user that nothing can proceed until popups are gone
32
32
  - if that did not work, we need to close the excel process and restart it. Ask the user to save work, close Excel, and then re-open
33
33
  - always wait ~2 seconds to health check`;
34
+ const LOCAL_FILE_LINKS = `
35
+ - Markdown file links will be rendered such that the user can click and open the file in their OS.
36
+ - For auditability, you MUST ALWAYS expose local filesystem changes to the user using Markdown links whose destination is the canonical absolute file URL.
37
+ - Keep the visible label concise while preserving the full path in the destination.`;
34
38
  /**
35
39
  * Return the correct engine prompts for the given engine.
36
40
  *
@@ -112,10 +116,10 @@ export function buildCurrentSkillsSection(options = {}) {
112
116
  // ---------------------------------------------------------------------------
113
117
  /** Append action-mode shared guidelines + engine API reference to a sections array. */
114
118
  export function pushActionSharedGuidelines(sections, engine) {
115
- sections.push(TASK_EXECUTION, COMMUNICATION, WRITING_CODE, DATA_FORMATTING, engine.apiGuidelines);
119
+ sections.push(TASK_EXECUTION, COMMUNICATION, LOCAL_FILE_LINKS, WRITING_CODE, DATA_FORMATTING, engine.apiGuidelines);
116
120
  }
117
121
  /** Append read-only shared guidelines + engine API reference to a sections array. */
118
122
  export function pushReadOnlySharedGuidelines(sections, engine) {
119
- sections.push(COMMUNICATION, engine.apiGuidelines);
123
+ sections.push(COMMUNICATION, LOCAL_FILE_LINKS, engine.apiGuidelines);
120
124
  }
121
125
  //# sourceMappingURL=shared-guidelines.js.map
@@ -58,6 +58,9 @@ function createShortcutApiV2AttributionHeaders(options) {
58
58
  };
59
59
  const userMessageId = headerValue(attribution?.userMessageId);
60
60
  const continuationRunId = headerValue(attribution?.continuationRunId) ?? userMessageId;
61
+ const sessionId = headerValue(attribution?.sessionId);
62
+ if (sessionId)
63
+ headers['X-Session-Id'] = sessionId;
61
64
  if (continuationRunId)
62
65
  headers['X-Agent-Run-Id'] = continuationRunId;
63
66
  if (userMessageId)
@@ -139,6 +142,7 @@ export function createShortcutApiV2Dispatcher(getExtraHeaders) {
139
142
  export function registerShortcutProvider(modelRegistry, apiV2Url, options) {
140
143
  const getExtraHeaders = () => ({
141
144
  'X-Client-Platform': 'shortcutxl',
145
+ 'X-Client-Version': VERSION,
142
146
  // Override the provider SDK's default User-Agent (e.g. "Anthropic/JS <ver>").
143
147
  // The api-v2 gateway's WAF blocks provider-SDK user-agents to prevent the
144
148
  // gateway being used as a raw upstream proxy, which otherwise surfaces to
@@ -19,7 +19,7 @@ const TOOL_DESCRIPTION_BASE = `
19
19
  Execute a bash command in the current working directory. Returns stdout and stderr.
20
20
  Output is truncated to ${DEFAULT_MAX_CHARS} characters. If truncated, full output is saved to a temp file.
21
21
  For external APIs, prefer Python packages over raw curl (e.g. yfinance for market data). pip install if missing.
22
- Default timeout is 30 seconds. Override with the timeout parameter for long-running commands.
22
+ Default timeout is 60 seconds. Override with the timeout parameter for long-running commands.
23
23
  `;
24
24
  const WINDOWS_SECTION = `
25
25
  Python and pip are available for data processing, scripting, and package installation.
@@ -75,7 +75,7 @@ const bashSchema = Type.Object({
75
75
  }),
76
76
  command: Type.String({ description: 'Bash command to execute' }),
77
77
  timeout: Type.Optional(Type.Number({
78
- description: 'Timeout in seconds (default: 30). Increase for long-running commands.'
78
+ description: 'Timeout in seconds (default: 60). Increase for long-running commands.'
79
79
  })),
80
80
  connections: Type.Optional(Type.Array(Type.String(), {
81
81
  description: 'Names of configured connections whose credentials should be injected as environment variables for this command. ' +
@@ -209,7 +209,7 @@ export function createBashTool(cwd, options) {
209
209
  parameters: bashSchema,
210
210
  execute: async (_toolCallId, { command, timeout: explicitTimeout, connections }, signal, onUpdate, ctx) => {
211
211
  assertShellPolicy(command, ctx);
212
- const timeout = explicitTimeout ?? 30;
212
+ const timeout = explicitTimeout ?? 60;
213
213
  const resolvedCommand = commandPrefix ? `${commandPrefix}\n${command}` : command;
214
214
  // Resolve connection credentials into env vars for this subprocess only
215
215
  let connectionEnv;
@@ -15,13 +15,13 @@ import { readFile } from 'node:fs/promises';
15
15
  import { MODE } from '../../mode-names.js';
16
16
  import { ACTION_SWITCH_MODE, INSTALLATION_SWITCH_MODE, PLAN_SWITCH_MODE } from '../../tool-names.js';
17
17
  import { APPROVAL } from '../approvals/types.js';
18
- import { getMode } from '../modes/index.js';
18
+ import { getModeMetadata } from '../modes/metadata.js';
19
19
  import { switchMode } from '../modes/switch-mode.js';
20
20
  function buildDescription(sourceModeName, allowedTargets) {
21
21
  const modeList = allowedTargets.length > 0
22
22
  ? allowedTargets
23
23
  .map((modeName) => {
24
- const mode = getMode(modeName);
24
+ const mode = getModeMetadata(modeName);
25
25
  return `- **${modeName}**: ${mode?.description ?? ''}`;
26
26
  })
27
27
  .join('\n')