shortcutxl 0.3.76 → 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 (480) hide show
  1. package/BINARY-INVENTORY.json +813 -813
  2. package/CHANGELOG.md +14 -0
  3. package/dist/ai/models.d.ts +10 -6
  4. package/dist/ai/models.generated.d.ts +72 -0
  5. package/dist/ai/models.generated.js +33 -0
  6. package/dist/ai/models.js +36 -13
  7. package/dist/ai/providers/anthropic.d.ts +4 -2
  8. package/dist/ai/providers/anthropic.js +59 -29
  9. package/dist/ai/providers/azure-openai-responses.d.ts +2 -1
  10. package/dist/ai/providers/azure-openai-responses.js +4 -20
  11. package/dist/ai/providers/google-vertex.d.ts +8 -2
  12. package/dist/ai/providers/google-vertex.js +66 -54
  13. package/dist/ai/providers/google.js +15 -48
  14. package/dist/ai/providers/openai-completions.d.ts +4 -1
  15. package/dist/ai/providers/openai-completions.js +26 -10
  16. package/dist/ai/providers/openai-reasoning.d.ts +5 -0
  17. package/dist/ai/providers/openai-reasoning.js +13 -0
  18. package/dist/ai/providers/openai-responses-shared.js +1 -1
  19. package/dist/ai/providers/openai-responses.d.ts +6 -2
  20. package/dist/ai/providers/openai-responses.js +28 -23
  21. package/dist/ai/providers/simple-options.d.ts +2 -3
  22. package/dist/ai/providers/simple-options.js +4 -6
  23. package/dist/ai/types.d.ts +19 -2
  24. package/dist/app/agent-session-runtime-adapter.js +7 -6
  25. package/dist/app/agent-session.d.ts +0 -15
  26. package/dist/app/agent-session.js +0 -37
  27. package/dist/app/approvals/approval-errors.d.ts +15 -0
  28. package/dist/app/approvals/approval-errors.js +14 -0
  29. package/dist/app/approvals/runtime-approval-gates.d.ts +1 -2
  30. package/dist/app/approvals/tool-approval.d.ts +1 -0
  31. package/dist/app/approvals/tool-approval.js +11 -23
  32. package/dist/app/approvals/types.d.ts +0 -14
  33. package/dist/app/approvals/types.js +0 -2
  34. package/dist/app/background/tool-summaries.js +0 -2
  35. package/dist/app/extensions/slash-commands.js +1 -3
  36. package/dist/app/local/tools/execute-code/executor.d.ts +1 -1
  37. package/dist/app/local/tools/execute-code/executor.js +20 -10
  38. package/dist/app/local/tools/execute-code/tool.js +21 -2
  39. package/dist/app/modes/action/agent.js +4 -5
  40. package/dist/app/modes/ask/agent.js +4 -6
  41. package/dist/app/modes/index.js +20 -10
  42. package/dist/app/modes/installation/agent.js +4 -5
  43. package/dist/app/modes/manage/agent.js +3 -4
  44. package/dist/app/modes/manage/prompt.js +1 -2
  45. package/dist/app/modes/metadata.d.ts +31 -0
  46. package/dist/app/modes/metadata.js +35 -0
  47. package/dist/app/modes/plan/agent.js +5 -8
  48. package/dist/app/modes/plan/prompt.js +3 -3
  49. package/dist/app/permissions/runtime-approval-flow.d.ts +1 -5
  50. package/dist/app/permissions/runtime-approval-flow.js +0 -28
  51. package/dist/app/permissions/tool-gates.d.ts +2 -3
  52. package/dist/app/permissions/tool-gates.js +3 -81
  53. package/dist/app/prompts/com-api.js +1 -1
  54. package/dist/app/prompts/shared-guidelines.js +7 -3
  55. package/dist/app/providers/google-vertex-gateway.js +4 -51
  56. package/dist/app/providers/model-registry.d.ts +1 -0
  57. package/dist/app/providers/model-registry.js +39 -0
  58. package/dist/app/providers/model-resolver.js +10 -7
  59. package/dist/app/providers/register-shortcut-provider.js +6 -6
  60. package/dist/app/providers/shortcut-api-v2-transport.js +4 -0
  61. package/dist/app/providers/shortcut-llm-proxy-client.d.ts +2 -2
  62. package/dist/app/providers/shortcut-llm-proxy-client.js +1 -0
  63. package/dist/app/resources/package-manager.js +2 -123
  64. package/dist/app/resources/resource-patterns.d.ts +9 -0
  65. package/dist/app/resources/resource-patterns.js +120 -0
  66. package/dist/app/session/forked-agent.d.ts +2 -2
  67. package/dist/app/session/model-manager.js +3 -2
  68. package/dist/app/session/session-lifecycle.js +3 -2
  69. package/dist/app/session/session-models.d.ts +2 -0
  70. package/dist/app/session/session-models.js +14 -6
  71. package/dist/app/settings-manager.d.ts +3 -3
  72. package/dist/app/shared/tools/execute-code/mog.d.ts +3 -1
  73. package/dist/app/shared/tools/execute-code/mog.js +18 -2
  74. package/dist/app/tools/bash.js +3 -3
  75. package/dist/app/tools/execute-code/index.d.ts +1 -0
  76. package/dist/app/tools/execute-code/index.js +3 -1
  77. package/dist/app/tools/find-ignore-files.d.ts +3 -0
  78. package/dist/app/tools/find-ignore-files.js +33 -0
  79. package/dist/app/tools/find.js +2 -21
  80. package/dist/app/tools/llm-analysis.js +0 -2
  81. package/dist/app/tools/refresh-context.d.ts +1 -1
  82. package/dist/app/tools/session-settings/update-session-settings.js +2 -2
  83. package/dist/app/tools/switch-mode.js +2 -2
  84. package/dist/app/tools/take-screenshot.js +0 -2
  85. package/dist/app/tools/task/runner.js +1 -2
  86. package/dist/app/tools/task/task.d.ts +1 -3
  87. package/dist/app/tools/task/task.js +20 -40
  88. package/dist/app/tools/web-search.js +12 -2
  89. package/dist/autocomplete/core.d.ts +33 -0
  90. package/dist/autocomplete/core.js +113 -0
  91. package/dist/{tui → autocomplete}/fuzzy.d.ts +0 -1
  92. package/dist/{tui → autocomplete}/fuzzy.js +0 -1
  93. package/dist/{tui/autocomplete.d.ts → autocomplete/index.d.ts} +0 -1
  94. package/dist/{tui/autocomplete.js → autocomplete/index.js} +62 -158
  95. package/dist/cli/args.js +1 -1
  96. package/dist/cli/list-models.js +1 -1
  97. package/dist/cli.js +26227 -30480
  98. package/dist/constants.d.ts +0 -2
  99. package/dist/constants.js +0 -3
  100. package/dist/contracts/agent-session-store.d.ts +1 -1
  101. package/dist/contracts/agent-settings.d.ts +1 -0
  102. package/dist/contracts/agent-settings.js +2 -1
  103. package/dist/contracts/model-call.d.ts +1 -2
  104. package/dist/contracts/model-call.js +1 -2
  105. package/dist/contracts/model-stream.d.ts +1 -0
  106. package/dist/contracts/model-stream.js +1 -0
  107. package/dist/contracts/wire.d.ts +10 -7
  108. package/dist/contracts/wire.js +8 -0
  109. package/dist/core/agent-engine.js +1 -1
  110. package/dist/core/core-types.d.ts +1 -21
  111. package/dist/core/defaults.d.ts +1 -1
  112. package/dist/core/defaults.js +9 -1
  113. package/dist/core/prompts/agent-guidelines.d.ts +4 -5
  114. package/dist/core/prompts/agent-guidelines.js +28 -42
  115. package/dist/core/session-schema.d.ts +1 -1
  116. package/dist/embedded-agent/ai-invoke.d.ts +1 -2
  117. package/dist/embedded-agent/ai-invoke.js +2 -70
  118. package/dist/embedded-agent/anthropic-messages-transport.d.ts +4 -20
  119. package/dist/embedded-agent/anthropic-messages-transport.js +23 -786
  120. package/dist/embedded-agent/bootstrap.js +2 -2
  121. package/dist/embedded-agent/compose.js +8 -7
  122. package/dist/embedded-agent/gateway-base-url.d.ts +3 -0
  123. package/dist/embedded-agent/gateway-base-url.js +35 -0
  124. package/dist/embedded-agent/google-vertex-transport.d.ts +2 -11
  125. package/dist/embedded-agent/google-vertex-transport.js +20 -117
  126. package/dist/embedded-agent/host-runtime-options.d.ts +0 -8
  127. package/dist/embedded-agent/host-runtime-options.js +10 -2
  128. package/dist/embedded-agent/host-tools/invoke-llm/contract.d.ts +2 -2
  129. package/dist/embedded-agent/host-tools/invoke-llm/contract.js +4 -2
  130. package/dist/embedded-agent/host-tools/sandbox-llm/contract.d.ts +8 -3
  131. package/dist/embedded-agent/host-tools/sandbox-llm/contract.js +12 -8
  132. package/dist/embedded-agent/host-tools/sandbox-llm/index.d.ts +1 -1
  133. package/dist/embedded-agent/host-tools/sandbox-llm/index.js +1 -1
  134. package/dist/embedded-agent/host-tools/shared/index.d.ts +1 -1
  135. package/dist/embedded-agent/host-tools/shared/index.js +1 -1
  136. package/dist/embedded-agent/host-tools/shared/llm-stream-error.d.ts +7 -0
  137. package/dist/embedded-agent/host-tools/shared/llm-stream-error.js +10 -0
  138. package/dist/embedded-agent/host-tools/take-screenshot/contract.d.ts +0 -2
  139. package/dist/embedded-agent/host-tools/take-screenshot/contract.js +1 -3
  140. package/dist/embedded-agent/host-tools/take-screenshot/index.d.ts +1 -1
  141. package/dist/embedded-agent/host-tools/take-screenshot/index.js +1 -1
  142. package/dist/embedded-agent/host-tools/task/agents/clone.js +1 -2
  143. package/dist/embedded-agent/host-tools/task/contract.js +1 -1
  144. package/dist/embedded-agent/index.d.ts +3 -4
  145. package/dist/embedded-agent/index.js +2 -3
  146. package/dist/embedded-agent/model-selection.d.ts +0 -6
  147. package/dist/embedded-agent/model-selection.js +15 -8
  148. package/dist/embedded-agent/openai-completions-transport.d.ts +2 -11
  149. package/dist/embedded-agent/openai-completions-transport.js +20 -120
  150. package/dist/embedded-agent/openai-responses-transport.d.ts +2 -11
  151. package/dist/embedded-agent/openai-responses-transport.js +15 -170
  152. package/dist/embedded-agent/prompt/build.js +1 -2
  153. package/dist/embedded-agent/prompt/sections.d.ts +1 -1
  154. package/dist/embedded-agent/prompt/sections.js +2 -0
  155. package/dist/embedded-agent/provider-native-request.d.ts +29 -0
  156. package/dist/embedded-agent/provider-native-request.js +65 -0
  157. package/dist/embedded-agent/run-stats.d.ts +1 -1
  158. package/dist/embedded-agent/stream.d.ts +10 -96
  159. package/dist/embedded-agent/stream.js +31 -556
  160. package/dist/embedded-agent/suggestions.d.ts +1 -1
  161. package/dist/embedded-agent/suggestions.js +1 -1
  162. package/dist/embedded-agent/worker-bridge/host-client.d.ts +7 -0
  163. package/dist/embedded-agent/worker-bridge/host-client.js +15 -0
  164. package/dist/embedded-agent/worker-bridge/worker-port.js +17 -1
  165. package/dist/main.js +18 -14
  166. package/dist/rpc/index.d.ts +1 -1
  167. package/dist/rpc/rpc-approval-gates.js +1 -2
  168. package/dist/rpc/rpc-host.d.ts +4 -0
  169. package/dist/rpc/rpc-host.js +13 -24
  170. package/dist/rpc/rpc-types.d.ts +6 -17
  171. package/dist/shared/platform/open.d.ts +4 -1
  172. package/dist/shared/platform/open.js +14 -2
  173. package/dist/shell/approvals/runtime-approval-gates.js +1 -3
  174. package/dist/shell/components/selectors/model-selector.js +2 -1
  175. package/dist/shell/components/selectors/session-selector-search.js +1 -1
  176. package/dist/shell/components/selectors/thinking-selector.js +7 -6
  177. package/dist/shell/index.d.ts +0 -1
  178. package/dist/shell/index.js +0 -1
  179. package/dist/shell/interactive/interactive-mode-options.d.ts +10 -0
  180. package/dist/shell/interactive/interactive-mode.d.ts +6 -12
  181. package/dist/shell/interactive/interactive-mode.js +39 -158
  182. package/dist/shell/interactive/slash-commands.d.ts +0 -34
  183. package/dist/shell/interactive/slash-commands.js +0 -2
  184. package/dist/shell/links/local-file-link-input.d.ts +15 -0
  185. package/dist/shell/links/local-file-link-input.js +38 -0
  186. package/dist/shell/links/local-file-link.d.ts +7 -0
  187. package/dist/shell/links/local-file-link.js +35 -0
  188. package/dist/shell/links/local-file-opener.d.ts +16 -0
  189. package/dist/shell/links/local-file-opener.js +90 -0
  190. package/dist/shell/session-client.d.ts +0 -1
  191. package/dist/shell/session-client.js +0 -6
  192. package/dist/shell/status/update-check-scheduler.d.ts +30 -0
  193. package/dist/shell/status/update-check-scheduler.js +71 -0
  194. package/dist/shell/status/update-reminder-controller.d.ts +22 -0
  195. package/dist/shell/status/update-reminder-controller.js +40 -0
  196. package/dist/shell/status/update-reminder.d.ts +6 -0
  197. package/dist/shell/status/update-reminder.js +4 -0
  198. package/dist/shell/theme/dark.json +1 -2
  199. package/dist/shell/theme/light.json +1 -2
  200. package/dist/shell/theme/runtime.d.ts +2 -3
  201. package/dist/shell/theme/runtime.js +2 -6
  202. package/dist/shell/theme/theme-schema.json +1 -6
  203. package/dist/shortcut-model-catalog.d.ts +7 -2
  204. package/dist/shortcut-model-catalog.js +134 -10
  205. package/dist/startup/update-manager.d.ts +6 -6
  206. package/dist/startup/update-manager.js +23 -38
  207. package/dist/startup/update-prompt.d.ts +1 -0
  208. package/dist/startup/update-prompt.js +2 -2
  209. package/dist/tui/components/editor.d.ts +1 -1
  210. package/dist/tui/components/editor.js +1 -1
  211. package/dist/tui/components/markdown.js +15 -6
  212. package/dist/tui/components/settings-list.js +1 -1
  213. package/dist/tui/editor-component.d.ts +1 -1
  214. package/dist/tui/index.d.ts +7 -8
  215. package/dist/tui/index.js +7 -6
  216. package/dist/tui/tui.d.ts +2 -0
  217. package/dist/tui/tui.js +16 -1
  218. package/dist/tui/utils.d.ts +7 -0
  219. package/dist/tui/utils.js +58 -8
  220. package/native-app/main/index.js +3200 -48
  221. package/native-app/main/{photon_rs-SoVDgheu.js → photon_rs-XkYyYTVA.js} +2 -2
  222. package/native-app/package.json +1 -1
  223. package/native-app/preload/index.cjs +2 -0
  224. package/native-app/renderer/assets/{index-CFc-oZuS.js → index-B4jz6epR.js} +825 -155
  225. package/native-app/renderer/assets/{index-OhGE0UY4.css → index-C__g36ft.css} +412 -162
  226. package/native-app/renderer/assets/shortcutagent-DxFsGSkw.png +0 -0
  227. package/native-app/renderer/index.html +2 -2
  228. package/package.json +17 -3
  229. package/skills/add-custom-model/SKILL.md +52 -0
  230. package/user-docs/dist/index.html +1 -1
  231. package/user-docs/dist/shortcutxl-docs.pdf +0 -0
  232. package/xll/ShortcutXL.xll +0 -0
  233. package/xll/modules/shortcut_xl/_managed.py +26 -7
  234. package/xll/modules/shortcut_xl/_tracking.py +141 -251
  235. package/xll/modules/shortcut_xl/api/__init__.py +60 -0
  236. package/xll/modules/shortcut_xl/api/workbook.py +9 -1
  237. package/xll/modules/shortcut_xl/api/worksheet.py +4 -1
  238. package/xll/python/Lib/site-packages/httpx-0.28.1.dist-info/RECORD +1 -1
  239. package/xll/python/Lib/site-packages/idna-3.18.dist-info/RECORD +1 -1
  240. package/xll/python/Lib/site-packages/pip/__init__.py +1 -1
  241. package/xll/python/Lib/site-packages/pip/_internal/build_env/__init__.py +25 -0
  242. package/xll/python/Lib/site-packages/pip/_internal/build_env/base.py +103 -0
  243. package/xll/python/Lib/site-packages/pip/_internal/build_env/installer.py +333 -0
  244. package/xll/python/Lib/site-packages/pip/_internal/build_env/noop.py +42 -0
  245. package/xll/python/Lib/site-packages/pip/_internal/build_env/venv.py +145 -0
  246. package/xll/python/Lib/site-packages/pip/_internal/build_env/virtual.py +139 -0
  247. package/xll/python/Lib/site-packages/pip/_internal/cache.py +4 -1
  248. package/xll/python/Lib/site-packages/pip/_internal/cli/autocompletion.py +4 -1
  249. package/xll/python/Lib/site-packages/pip/_internal/cli/base_command.py +11 -14
  250. package/xll/python/Lib/site-packages/pip/_internal/cli/cmdoptions.py +133 -22
  251. package/xll/python/Lib/site-packages/pip/_internal/cli/index_command.py +11 -6
  252. package/xll/python/Lib/site-packages/pip/_internal/cli/main.py +2 -1
  253. package/xll/python/Lib/site-packages/pip/_internal/cli/main_parser.py +1 -2
  254. package/xll/python/Lib/site-packages/pip/_internal/cli/parser.py +10 -2
  255. package/xll/python/Lib/site-packages/pip/_internal/cli/progress_bars.py +2 -2
  256. package/xll/python/Lib/site-packages/pip/_internal/cli/req_command.py +57 -25
  257. package/xll/python/Lib/site-packages/pip/_internal/cli/status_codes.py +1 -0
  258. package/xll/python/Lib/site-packages/pip/_internal/commands/cache.py +7 -6
  259. package/xll/python/Lib/site-packages/pip/_internal/commands/configuration.py +2 -1
  260. package/xll/python/Lib/site-packages/pip/_internal/commands/debug.py +4 -5
  261. package/xll/python/Lib/site-packages/pip/_internal/commands/download.py +4 -0
  262. package/xll/python/Lib/site-packages/pip/_internal/commands/freeze.py +1 -1
  263. package/xll/python/Lib/site-packages/pip/_internal/commands/index.py +10 -3
  264. package/xll/python/Lib/site-packages/pip/_internal/commands/inspect.py +1 -1
  265. package/xll/python/Lib/site-packages/pip/_internal/commands/install.py +6 -6
  266. package/xll/python/Lib/site-packages/pip/_internal/commands/list.py +11 -6
  267. package/xll/python/Lib/site-packages/pip/_internal/commands/lock.py +4 -6
  268. package/xll/python/Lib/site-packages/pip/_internal/commands/show.py +14 -8
  269. package/xll/python/Lib/site-packages/pip/_internal/commands/wheel.py +7 -1
  270. package/xll/python/Lib/site-packages/pip/_internal/configuration.py +2 -3
  271. package/xll/python/Lib/site-packages/pip/_internal/distributions/base.py +5 -3
  272. package/xll/python/Lib/site-packages/pip/_internal/distributions/installed.py +3 -2
  273. package/xll/python/Lib/site-packages/pip/_internal/distributions/sdist.py +45 -20
  274. package/xll/python/Lib/site-packages/pip/_internal/distributions/wheel.py +3 -2
  275. package/xll/python/Lib/site-packages/pip/_internal/exceptions.py +174 -0
  276. package/xll/python/Lib/site-packages/pip/_internal/index/collector.py +70 -48
  277. package/xll/python/Lib/site-packages/pip/_internal/index/package_finder.py +46 -7
  278. package/xll/python/Lib/site-packages/pip/_internal/index/sources.py +1 -2
  279. package/xll/python/Lib/site-packages/pip/_internal/locations/_sysconfig.py +1 -1
  280. package/xll/python/Lib/site-packages/pip/_internal/locations/base.py +1 -1
  281. package/xll/python/Lib/site-packages/pip/_internal/metadata/base.py +10 -5
  282. package/xll/python/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py +1 -1
  283. package/xll/python/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py +8 -3
  284. package/xll/python/Lib/site-packages/pip/_internal/models/candidate.py +5 -1
  285. package/xll/python/Lib/site-packages/pip/_internal/models/link.py +53 -13
  286. package/xll/python/Lib/site-packages/pip/_internal/network/auth.py +38 -21
  287. package/xll/python/Lib/site-packages/pip/_internal/network/cache.py +2 -2
  288. package/xll/python/Lib/site-packages/pip/_internal/network/download.py +58 -11
  289. package/xll/python/Lib/site-packages/pip/_internal/network/session.py +35 -40
  290. package/xll/python/Lib/site-packages/pip/_internal/network/utils.py +109 -1
  291. package/xll/python/Lib/site-packages/pip/_internal/operations/check.py +2 -3
  292. package/xll/python/Lib/site-packages/pip/_internal/operations/install/wheel.py +23 -18
  293. package/xll/python/Lib/site-packages/pip/_internal/operations/prepare.py +152 -7
  294. package/xll/python/Lib/site-packages/pip/_internal/req/__init__.py +2 -0
  295. package/xll/python/Lib/site-packages/pip/_internal/req/constructors.py +54 -69
  296. package/xll/python/Lib/site-packages/pip/_internal/req/req_file.py +6 -6
  297. package/xll/python/Lib/site-packages/pip/_internal/req/req_install.py +25 -21
  298. package/xll/python/Lib/site-packages/pip/_internal/req/req_uninstall.py +13 -8
  299. package/xll/python/Lib/site-packages/pip/_internal/resolution/base.py +2 -2
  300. package/xll/python/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +2 -2
  301. package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +1 -1
  302. package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +0 -1
  303. package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +39 -52
  304. package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +3 -3
  305. package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +3 -0
  306. package/xll/python/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +9 -0
  307. package/xll/python/Lib/site-packages/pip/_internal/utils/compat.py +15 -9
  308. package/xll/python/Lib/site-packages/pip/_internal/utils/deprecation.py +6 -1
  309. package/xll/python/Lib/site-packages/pip/_internal/utils/filesystem.py +2 -2
  310. package/xll/python/Lib/site-packages/pip/_internal/utils/logging.py +11 -3
  311. package/xll/python/Lib/site-packages/pip/_internal/utils/misc.py +48 -4
  312. package/xll/python/Lib/site-packages/pip/_internal/utils/pylock.py +18 -2
  313. package/xll/python/Lib/site-packages/pip/_internal/utils/retry.py +2 -1
  314. package/xll/python/Lib/site-packages/pip/_internal/utils/subprocess.py +4 -3
  315. package/xll/python/Lib/site-packages/pip/_internal/utils/temp_dir.py +1 -2
  316. package/xll/python/Lib/site-packages/pip/_internal/utils/unpacking.py +30 -4
  317. package/xll/python/Lib/site-packages/pip/_internal/utils/urls.py +5 -2
  318. package/xll/python/Lib/site-packages/pip/_internal/utils/virtualenv.py +2 -36
  319. package/xll/python/Lib/site-packages/pip/_internal/vcs/git.py +8 -5
  320. package/xll/python/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +1 -2
  321. package/xll/python/Lib/site-packages/pip/_internal/wheel_builder.py +5 -1
  322. package/xll/python/Lib/site-packages/pip/_vendor/bom.cdx.json +231 -0
  323. package/xll/python/Lib/site-packages/pip/_vendor/certifi/__init__.py +1 -1
  324. package/xll/python/Lib/site-packages/pip/_vendor/certifi/cacert.pem +0 -631
  325. package/xll/python/Lib/site-packages/pip/_vendor/distlib/__init__.py +1 -1
  326. package/xll/python/Lib/site-packages/pip/_vendor/distlib/compat.py +34 -64
  327. package/xll/python/Lib/site-packages/pip/_vendor/distlib/resources.py +28 -14
  328. package/xll/python/Lib/site-packages/pip/_vendor/distlib/scripts.py +7 -3
  329. package/xll/python/Lib/site-packages/pip/_vendor/distlib/util.py +48 -11
  330. package/xll/python/Lib/site-packages/pip/_vendor/idna/LICENSE.md +1 -1
  331. package/xll/python/Lib/site-packages/pip/_vendor/idna/__main__.py +6 -0
  332. package/xll/python/Lib/site-packages/pip/_vendor/idna/cli.py +128 -0
  333. package/xll/python/Lib/site-packages/pip/_vendor/idna/codec.py +50 -13
  334. package/xll/python/Lib/site-packages/pip/_vendor/idna/compat.py +26 -0
  335. package/xll/python/Lib/site-packages/pip/_vendor/idna/core.py +352 -141
  336. package/xll/python/Lib/site-packages/pip/_vendor/idna/idnadata.py +571 -2983
  337. package/xll/python/Lib/site-packages/pip/_vendor/idna/intranges.py +5 -7
  338. package/xll/python/Lib/site-packages/pip/_vendor/idna/package_data.py +1 -1
  339. package/xll/python/Lib/site-packages/pip/_vendor/idna/uts46data.py +16887 -8832
  340. package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/__init__.py +352 -66
  341. package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/__main__.py +11 -0
  342. package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/_xdg.py +171 -0
  343. package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/android.py +92 -41
  344. package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/api.py +213 -49
  345. package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/macos.py +128 -51
  346. package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/unix.py +176 -127
  347. package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/version.py +8 -18
  348. package/xll/python/Lib/site-packages/pip/_vendor/platformdirs/windows.py +185 -68
  349. package/xll/python/Lib/site-packages/pip/_vendor/pygments/__init__.py +2 -2
  350. package/xll/python/Lib/site-packages/pip/_vendor/pygments/__main__.py +1 -1
  351. package/xll/python/Lib/site-packages/pip/_vendor/pygments/console.py +1 -1
  352. package/xll/python/Lib/site-packages/pip/_vendor/pygments/filter.py +1 -1
  353. package/xll/python/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py +10 -8
  354. package/xll/python/Lib/site-packages/pip/_vendor/pygments/formatter.py +1 -1
  355. package/xll/python/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py +1 -1
  356. package/xll/python/Lib/site-packages/pip/_vendor/pygments/lexer.py +7 -5
  357. package/xll/python/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py +1 -1
  358. package/xll/python/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.py +9 -8
  359. package/xll/python/Lib/site-packages/pip/_vendor/pygments/lexers/python.py +35 -32
  360. package/xll/python/Lib/site-packages/pip/_vendor/pygments/modeline.py +1 -1
  361. package/xll/python/Lib/site-packages/pip/_vendor/pygments/plugin.py +3 -1
  362. package/xll/python/Lib/site-packages/pip/_vendor/pygments/regexopt.py +13 -2
  363. package/xll/python/Lib/site-packages/pip/_vendor/pygments/scanner.py +1 -1
  364. package/xll/python/Lib/site-packages/pip/_vendor/pygments/sphinxext.py +1 -1
  365. package/xll/python/Lib/site-packages/pip/_vendor/pygments/style.py +1 -1
  366. package/xll/python/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py +1 -1
  367. package/xll/python/Lib/site-packages/pip/_vendor/pygments/token.py +1 -1
  368. package/xll/python/Lib/site-packages/pip/_vendor/pygments/unistring.py +1 -1
  369. package/xll/python/Lib/site-packages/pip/_vendor/pygments/util.py +2 -2
  370. package/xll/python/Lib/site-packages/pip/_vendor/requests/__init__.py +52 -16
  371. package/xll/python/Lib/site-packages/pip/_vendor/requests/__version__.py +2 -2
  372. package/xll/python/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +2 -2
  373. package/xll/python/Lib/site-packages/pip/_vendor/requests/_types.py +183 -0
  374. package/xll/python/Lib/site-packages/pip/_vendor/requests/adapters.py +101 -50
  375. package/xll/python/Lib/site-packages/pip/_vendor/requests/api.py +31 -8
  376. package/xll/python/Lib/site-packages/pip/_vendor/requests/auth.py +80 -40
  377. package/xll/python/Lib/site-packages/pip/_vendor/requests/compat.py +9 -3
  378. package/xll/python/Lib/site-packages/pip/_vendor/requests/cookies.py +143 -79
  379. package/xll/python/Lib/site-packages/pip/_vendor/requests/exceptions.py +15 -5
  380. package/xll/python/Lib/site-packages/pip/_vendor/requests/help.py +13 -10
  381. package/xll/python/Lib/site-packages/pip/_vendor/requests/hooks.py +23 -9
  382. package/xll/python/Lib/site-packages/pip/_vendor/requests/models.py +265 -126
  383. package/xll/python/Lib/site-packages/pip/_vendor/requests/py.typed +0 -0
  384. package/xll/python/Lib/site-packages/pip/_vendor/requests/sessions.py +164 -78
  385. package/xll/python/Lib/site-packages/pip/_vendor/requests/status_codes.py +2 -2
  386. package/xll/python/Lib/site-packages/pip/_vendor/requests/structures.py +51 -20
  387. package/xll/python/Lib/site-packages/pip/_vendor/requests/utils.py +161 -89
  388. package/xll/python/Lib/site-packages/pip/_vendor/tomli/__init__.py +1 -1
  389. package/xll/python/Lib/site-packages/pip/_vendor/tomli/_parser.py +9 -4
  390. package/xll/python/Lib/site-packages/pip/_vendor/tomli/_re.py +13 -9
  391. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/_base_connection.py +3 -1
  392. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/_collections.py +0 -1
  393. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/_version.py +8 -18
  394. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/connection.py +4 -4
  395. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +23 -10
  396. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/contrib/emscripten/response.py +5 -1
  397. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +7 -8
  398. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py +1 -1
  399. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/exceptions.py +2 -2
  400. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/fields.py +14 -14
  401. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +8 -6
  402. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/response.py +35 -22
  403. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/util/retry.py +8 -0
  404. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py +11 -61
  405. package/xll/python/Lib/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +5 -11
  406. package/xll/python/Lib/site-packages/pip/_vendor/vendor.txt +8 -8
  407. package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/METADATA +3 -2
  408. package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/RECORD +208 -188
  409. package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/AUTHORS.txt +20 -0
  410. 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
  411. package/xll/python/Lib/site-packages/pywin32-311.dist-info/RECORD +2 -2
  412. package/xll/python/Scripts/httpx.exe +0 -0
  413. package/xll/python/Scripts/idna.exe +0 -0
  414. package/xll/python/Scripts/pip.exe +0 -0
  415. package/xll/python/Scripts/pip3.13.exe +0 -0
  416. package/xll/python/Scripts/pip3.exe +0 -0
  417. package/xll/python/Scripts/pywin32_postinstall.exe +0 -0
  418. package/xll/python/Scripts/pywin32_testall.exe +0 -0
  419. package/dist/app/collab/awareness.d.ts +0 -32
  420. package/dist/app/collab/awareness.js +0 -52
  421. package/dist/app/collab/collab-client.d.ts +0 -37
  422. package/dist/app/collab/collab-client.js +0 -208
  423. package/dist/app/collab/collab-manager.d.ts +0 -91
  424. package/dist/app/collab/collab-manager.js +0 -218
  425. package/dist/app/collab/collab-sync.d.ts +0 -62
  426. package/dist/app/collab/collab-sync.js +0 -215
  427. package/dist/app/collab/index.d.ts +0 -9
  428. package/dist/app/collab/index.js +0 -6
  429. package/dist/app/collab/super-fight.d.ts +0 -90
  430. package/dist/app/collab/super-fight.js +0 -310
  431. package/dist/app/collab/sync-bridge.d.ts +0 -35
  432. package/dist/app/collab/sync-bridge.js +0 -109
  433. package/dist/app/collab/types.d.ts +0 -75
  434. package/dist/app/collab/types.js +0 -5
  435. package/dist/embedded-agent/ai-content.d.ts +0 -52
  436. package/dist/embedded-agent/ai-content.js +0 -101
  437. package/dist/embedded-agent/host-tools/shared/llm-stream.d.ts +0 -31
  438. package/dist/embedded-agent/host-tools/shared/llm-stream.js +0 -136
  439. package/dist/embedded-agent/model-call-orchestrator.d.ts +0 -22
  440. package/dist/embedded-agent/model-call-orchestrator.js +0 -22
  441. package/dist/embedded-agent/stream-errors.d.ts +0 -10
  442. package/dist/embedded-agent/stream-errors.js +0 -73
  443. package/dist/embedded-agent/stream-message-state.d.ts +0 -14
  444. package/dist/embedded-agent/stream-message-state.js +0 -271
  445. package/dist/embedded-agent/stream-sse.d.ts +0 -78
  446. package/dist/embedded-agent/stream-sse.js +0 -73
  447. package/dist/shell/approvals/task-spawn-approval.d.ts +0 -20
  448. package/dist/shell/approvals/task-spawn-approval.js +0 -93
  449. package/dist/shell/interactive/collab-command.d.ts +0 -9
  450. package/dist/shell/interactive/collab-command.js +0 -115
  451. package/dist/shell/interactive/super-fight-ui.d.ts +0 -80
  452. package/dist/shell/interactive/super-fight-ui.js +0 -484
  453. package/dist/shell/status/collab-status.d.ts +0 -18
  454. package/dist/shell/status/collab-status.js +0 -46
  455. package/xll/python/Lib/site-packages/pip/_internal/build_env.py +0 -606
  456. /package/dist/{tui → autocomplete}/skill-autocomplete.js +0 -0
  457. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/INSTALLER +0 -0
  458. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/REQUESTED +0 -0
  459. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/WHEEL +0 -0
  460. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/entry_points.txt +0 -0
  461. /package/xll/python/Lib/site-packages/{pip-26.1.2.dist-info → pip-26.2.dist-info}/licenses/LICENSE.txt +0 -0
  462. /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
  463. /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
  464. /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
  465. /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
  466. /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
  467. /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
  468. /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
  469. /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
  470. /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
  471. /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
  472. /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
  473. /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
  474. /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
  475. /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
  476. /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
  477. /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
  478. /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
  479. /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
  480. /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
@@ -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
  */
@@ -0,0 +1,15 @@
1
+ import type { AgentToolResult } from '../../core/core-types.js';
2
+ export declare const APPROVAL_ERROR_CODE: {
3
+ readonly INTERACTIVE_APPROVAL_UNAVAILABLE: "interactive_approval_unavailable";
4
+ readonly USER_REJECTED: "approval_rejected";
5
+ };
6
+ export type ApprovalErrorCode = (typeof APPROVAL_ERROR_CODE)[keyof typeof APPROVAL_ERROR_CODE];
7
+ export interface ApprovalErrorDetails {
8
+ code: ApprovalErrorCode;
9
+ approvalKind: string;
10
+ toolName: string;
11
+ }
12
+ export declare const INTERACTIVE_APPROVAL_UNAVAILABLE_MESSAGE = "Tool execution requires approval, but this runtime does not support interactive approvals.";
13
+ export declare const USER_REJECTED_APPROVAL_MESSAGE = "Tool execution rejected by user.";
14
+ export declare function createApprovalErrorResult(code: ApprovalErrorCode, message: string, approvalKind: string, toolName: string): AgentToolResult<ApprovalErrorDetails>;
15
+ //# sourceMappingURL=approval-errors.d.ts.map
@@ -0,0 +1,14 @@
1
+ export const APPROVAL_ERROR_CODE = {
2
+ INTERACTIVE_APPROVAL_UNAVAILABLE: 'interactive_approval_unavailable',
3
+ USER_REJECTED: 'approval_rejected'
4
+ };
5
+ export const INTERACTIVE_APPROVAL_UNAVAILABLE_MESSAGE = 'Tool execution requires approval, but this runtime does not support interactive approvals.';
6
+ export const USER_REJECTED_APPROVAL_MESSAGE = 'Tool execution rejected by user.';
7
+ export function createApprovalErrorResult(code, message, approvalKind, toolName) {
8
+ return {
9
+ content: [{ type: 'text', text: message }],
10
+ details: { code, approvalKind, toolName },
11
+ isError: true
12
+ };
13
+ }
14
+ //# sourceMappingURL=approval-errors.js.map
@@ -1,11 +1,10 @@
1
1
  import type { ExcelApprovalPayload } from '../local/tools/execute-code/approval-payload.js';
2
- import type { ApprovalGate, BashApprovalData, FileAccessApprovalData, SwitchModeApprovalData, TaskSpawnApprovalData } from './types.js';
2
+ import type { ApprovalGate, BashApprovalData, FileAccessApprovalData, SwitchModeApprovalData } from './types.js';
3
3
  /** Approval gates required by the local Shortcut runtime composition root. */
4
4
  export interface RuntimeApprovalGates {
5
5
  readonly bash: ApprovalGate<BashApprovalData>;
6
6
  readonly excel: ApprovalGate<ExcelApprovalPayload>;
7
7
  readonly fileAccess: ApprovalGate<FileAccessApprovalData>;
8
8
  readonly switchMode: ApprovalGate<SwitchModeApprovalData>;
9
- readonly taskSpawn: ApprovalGate<TaskSpawnApprovalData>;
10
9
  }
11
10
  //# sourceMappingURL=runtime-approval-gates.d.ts.map
@@ -10,6 +10,7 @@ import { type ApprovalChoice, type ApprovalGate, type ApprovalRequest } from './
10
10
  export declare function withPreApproval<T extends TSchema, D>(tool: ToolDefinition<T>, approval: ApprovalGate<D>, buildRequest: (params: Record<string, unknown>, ctx: ToolExecutionContext | undefined) => ApprovalRequest<D> | Promise<ApprovalRequest<D>>, options?: {
11
11
  alwaysPrompt?: boolean;
12
12
  isContentSafe?: (params: Record<string, unknown>, ctx: ToolExecutionContext | undefined) => boolean | Promise<boolean>;
13
+ isHeadlessApprovalAllowed?: (ctx: ToolExecutionContext | undefined) => boolean;
13
14
  onRequested?: (request: ApprovalRequest<D>) => void;
14
15
  onAccepted?: (request: ApprovalRequest<D>, choice: ApprovalChoice) => void;
15
16
  onRejected?: (request: ApprovalRequest<D>) => void;
@@ -4,6 +4,7 @@
4
4
  * Wraps a ToolDefinition with a user-approval prompt before executing.
5
5
  */
6
6
  import { getApprovalSurface, resolveApprovalExecutionDecision } from '../permissions/approval-surface.js';
7
+ import { APPROVAL_ERROR_CODE, INTERACTIVE_APPROVAL_UNAVAILABLE_MESSAGE, USER_REJECTED_APPROVAL_MESSAGE, createApprovalErrorResult } from './approval-errors.js';
7
8
  import { APPROVAL } from './types.js';
8
9
  /** Map an ApprovalChoice to a default summary message prepended to the tool result. */
9
10
  function defaultApprovalSummary(choice) {
@@ -12,10 +13,6 @@ function defaultApprovalSummary(choice) {
12
13
  return 'User approved this.';
13
14
  case APPROVAL.ACCEPT_ALL:
14
15
  return 'User enabled session auto-approve.';
15
- case APPROVAL.RUN_FOREGROUND:
16
- return 'User approved running this task in the foreground.';
17
- case APPROVAL.RUN_BACKGROUND:
18
- return 'User approved running this task in the background.';
19
16
  case APPROVAL.ALLOW_ONCE:
20
17
  return 'User allowed this once.';
21
18
  case APPROVAL.ALLOW_FILE:
@@ -35,7 +32,7 @@ function prependApprovalSummary(result, summary) {
35
32
  }
36
33
  /** Wrap a tool with a pre-execution approval gate that prompts when policy requires it. */
37
34
  export function withPreApproval(tool, approval, buildRequest, options = {}) {
38
- const { alwaysPrompt, isContentSafe, onRequested, onAccepted, onRejected, isApprovedChoiceAllowed, describeApprovedChoice, applyApprovalContext } = options;
35
+ const { alwaysPrompt, isContentSafe, isHeadlessApprovalAllowed, onRequested, onAccepted, onRejected, isApprovedChoiceAllowed, describeApprovedChoice, applyApprovalContext } = options;
39
36
  return {
40
37
  name: tool.name,
41
38
  label: tool.label,
@@ -44,48 +41,39 @@ export function withPreApproval(tool, approval, buildRequest, options = {}) {
44
41
  isReadOnly: tool.isReadOnly,
45
42
  promptGuidelines: tool.promptGuidelines,
46
43
  async execute(toolCallId, params, signal, onUpdate, ctx) {
44
+ const extCtx = ctx;
47
45
  const safe = alwaysPrompt
48
46
  ? false
49
47
  : ((await isContentSafe?.(params, ctx)) ?? false);
50
- const extCtx = ctx;
51
48
  const request = await buildRequest(params, ctx);
52
49
  const decision = resolveApprovalExecutionDecision({
53
50
  surface: getApprovalSurface(extCtx),
54
51
  isSafe: safe,
55
52
  isAutoApproved: approval.isAutoApproved(),
56
53
  alwaysRequireExplicitApproval: request.alwaysRequireExplicitApproval === true,
57
- allowHeadlessApproval: ctx?.permissionPolicy?.approvals.allowHeadlessApproval ?? false
54
+ allowHeadlessApproval: isHeadlessApprovalAllowed?.(ctx) ??
55
+ ctx?.permissionPolicy?.approvals.allowHeadlessApproval ??
56
+ false
58
57
  });
59
58
  if (decision === 'deny') {
60
- return {
61
- content: [{ type: 'text', text: 'Tool execution rejected by user.' }],
62
- details: undefined
63
- };
59
+ onRejected?.(request);
60
+ return createApprovalErrorResult(APPROVAL_ERROR_CODE.INTERACTIVE_APPROVAL_UNAVAILABLE, INTERACTIVE_APPROVAL_UNAVAILABLE_MESSAGE, request.kind, tool.name);
64
61
  }
65
62
  if (decision === 'prompt') {
66
63
  if (!extCtx) {
67
64
  onRejected?.(request);
68
- return {
69
- content: [{ type: 'text', text: 'Tool execution rejected by user.' }],
70
- details: undefined
71
- };
65
+ return createApprovalErrorResult(APPROVAL_ERROR_CODE.INTERACTIVE_APPROVAL_UNAVAILABLE, INTERACTIVE_APPROVAL_UNAVAILABLE_MESSAGE, request.kind, tool.name);
72
66
  }
73
67
  onRequested?.(request);
74
68
  const choice = await approval.requestApproval(request, extCtx);
75
69
  if (choice === APPROVAL.REJECT || choice === undefined) {
76
70
  onRejected?.(request);
77
- return {
78
- content: [{ type: 'text', text: 'Tool execution rejected by user.' }],
79
- details: undefined
80
- };
71
+ return createApprovalErrorResult(APPROVAL_ERROR_CODE.USER_REJECTED, USER_REJECTED_APPROVAL_MESSAGE, request.kind, tool.name);
81
72
  }
82
73
  const allowedChoice = (await isApprovedChoiceAllowed?.(request, choice)) ?? true;
83
74
  if (!allowedChoice) {
84
75
  onRejected?.(request);
85
- return {
86
- content: [{ type: 'text', text: 'Tool execution rejected by user.' }],
87
- details: undefined
88
- };
76
+ return createApprovalErrorResult(APPROVAL_ERROR_CODE.USER_REJECTED, USER_REJECTED_APPROVAL_MESSAGE, request.kind, tool.name);
89
77
  }
90
78
  onAccepted?.(request, choice);
91
79
  if (choice === APPROVAL.ACCEPT_ALL) {
@@ -9,8 +9,6 @@ import type { ExtensionContext } from '../extensions/index.js';
9
9
  export declare const APPROVAL: {
10
10
  readonly ACCEPT: "Accept";
11
11
  readonly ACCEPT_ALL: "Accept All";
12
- readonly RUN_FOREGROUND: "Run foreground";
13
- readonly RUN_BACKGROUND: "Run background";
14
12
  readonly ALLOW_ONCE: "Allow Once";
15
13
  readonly ALLOW_FILE: "Always Allow File";
16
14
  readonly ALLOW_FOLDER: "Always Allow Folder";
@@ -61,18 +59,6 @@ export interface BashApprovalData {
61
59
  reason: string;
62
60
  }>;
63
61
  }
64
- export interface TaskSpawnApprovalData {
65
- subagentType: string;
66
- name: string;
67
- query: string;
68
- model?: string;
69
- /** Task spawn approval is all-or-nothing: approved children run as full workers. */
70
- fullWorker: true;
71
- /** True when this subagent can recursively spawn more full-worker children. */
72
- canSpawnSubagents: boolean;
73
- /** Launch mode requested by the tool call before user approval overrides. */
74
- requestedRunInBackground: boolean;
75
- }
76
62
  export interface SwitchModeApprovalData {
77
63
  currentMode: string;
78
64
  targetMode: string;
@@ -8,8 +8,6 @@
8
8
  export const APPROVAL = {
9
9
  ACCEPT: 'Accept',
10
10
  ACCEPT_ALL: 'Accept All',
11
- RUN_FOREGROUND: 'Run foreground',
12
- RUN_BACKGROUND: 'Run background',
13
11
  ALLOW_ONCE: 'Allow Once',
14
12
  ALLOW_FILE: 'Always Allow File',
15
13
  ALLOW_FOLDER: 'Always Allow Folder',
@@ -35,8 +35,6 @@ export async function generateToolSummaryDetailed(input, shortcutLlmProxy, optio
35
35
  { role: 'human', content: userContent }
36
36
  ],
37
37
  max_output_tokens: maxOutputTokens,
38
- effort_level: 'low',
39
- thinking_type: 'off',
40
38
  llmOperation: 'summarize'
41
39
  }, {
42
40
  signal
@@ -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));
@@ -23,7 +23,7 @@ export interface ComExecResult {
23
23
  cfTxId?: string;
24
24
  editMode?: boolean;
25
25
  }
26
- export type ApprovalOutcome = 'accepted' | 'failed' | 'reverted' | 'revert-failed' | 'rejected';
26
+ export type ApprovalOutcome = 'accepted' | 'approval-unavailable' | 'failed' | 'reverted' | 'revert-failed' | 'rejected';
27
27
  export interface LocalExecResult {
28
28
  result: ComExecResult;
29
29
  outcome: ApprovalOutcome;
@@ -10,6 +10,7 @@
10
10
  * - `createExcelExecTool()` (COM ToolDefinition wrapper)
11
11
  */
12
12
  import { log } from '../../../../shared/logging/agent-log.js';
13
+ import { INTERACTIVE_APPROVAL_UNAVAILABLE_MESSAGE } from '../../../approvals/approval-errors.js';
13
14
  import { APPROVAL } from '../../../approvals/types.js';
14
15
  import { getApprovalSurface, resolveApprovalExecutionDecision } from '../../../permissions/approval-surface.js';
15
16
  import { getEffectiveExcelHttpUrl } from '../../../xll/endpoint.js';
@@ -60,7 +61,7 @@ function isDangerousExcelLifecycleBypassed(ctx) {
60
61
  }
61
62
  async function requestAlwaysConfirmApproval(approval, ctx, description, dangerousOperations, observability) {
62
63
  if (isDangerousExcelLifecycleBypassed(ctx)) {
63
- return APPROVAL.ACCEPT;
64
+ return { choice: APPROVAL.ACCEPT, unavailable: false };
64
65
  }
65
66
  const request = {
66
67
  kind: 'execute_code',
@@ -85,16 +86,16 @@ async function requestAlwaysConfirmApproval(approval, ctx, description, dangerou
85
86
  });
86
87
  if (decision !== 'prompt' || !approval || !ctx) {
87
88
  observability?.onRejected?.(request);
88
- return APPROVAL.REJECT;
89
+ return { choice: APPROVAL.REJECT, unavailable: decision === 'deny' };
89
90
  }
90
91
  observability?.onRequested?.(request);
91
92
  const choice = await approval.requestApproval(request, ctx);
92
93
  if (choice === APPROVAL.REJECT || choice === undefined) {
93
94
  observability?.onRejected?.(request);
94
- return choice;
95
+ return { choice, unavailable: false };
95
96
  }
96
97
  observability?.onAccepted?.(request, choice);
97
- return choice;
98
+ return { choice, unavailable: false };
98
99
  }
99
100
  // ---------------------------------------------------------------------------
100
101
  // Approval resolution
@@ -146,7 +147,7 @@ export async function resolveApproval(result, approval, postControl, ctx, descri
146
147
  try {
147
148
  await postControl({ control: CONTROL.REVERT, cfTxId });
148
149
  observability?.onReverted?.(request);
149
- return { outcome: 'reverted' };
150
+ return { outcome: 'rejected' };
150
151
  }
151
152
  catch {
152
153
  if (cfTxId != null) {
@@ -239,11 +240,17 @@ export async function executeComLocally(excelHttpUrl, code, options) {
239
240
  const analysis = analyzeComWriteCode(code);
240
241
  const dangerousLifecycleBypassed = analysis.alwaysRequireApproval && isDangerousExcelLifecycleBypassed(ctx);
241
242
  if (analysis.alwaysRequireApproval) {
242
- const choice = await requestAlwaysConfirmApproval(approval, ctx, description, analysis.dangerousOperations, observability);
243
+ const approvalResult = await requestAlwaysConfirmApproval(approval, ctx, description, analysis.dangerousOperations, observability);
244
+ const { choice } = approvalResult;
243
245
  if (choice !== APPROVAL.ACCEPT && choice !== APPROVAL.ACCEPT_ALL) {
244
246
  return {
245
- result: { ok: true, output: 'Excel operation rejected by user.' },
246
- outcome: 'rejected'
247
+ result: {
248
+ ok: true,
249
+ output: approvalResult.unavailable
250
+ ? INTERACTIVE_APPROVAL_UNAVAILABLE_MESSAGE
251
+ : 'Excel operation rejected by user.'
252
+ },
253
+ outcome: approvalResult.unavailable ? 'approval-unavailable' : 'rejected'
247
254
  };
248
255
  }
249
256
  if (choice === APPROVAL.ACCEPT_ALL) {
@@ -264,8 +271,11 @@ export async function executeComLocally(excelHttpUrl, code, options) {
264
271
  });
265
272
  if (executionDecision === 'deny') {
266
273
  return {
267
- result: { ok: true, output: 'Excel operation rejected by user.' },
268
- outcome: 'rejected'
274
+ result: {
275
+ ok: true,
276
+ output: INTERACTIVE_APPROVAL_UNAVAILABLE_MESSAGE
277
+ },
278
+ outcome: 'approval-unavailable'
269
279
  };
270
280
  }
271
281
  let result = await sendExecRequest();
@@ -8,6 +8,7 @@
8
8
  import { Type } from '@sinclair/typebox';
9
9
  import { EXECUTE_CODE } from '../../../../tool-names.js';
10
10
  import { truncateOutput } from '../../../../utils/truncate.js';
11
+ import { APPROVAL_ERROR_CODE, INTERACTIVE_APPROVAL_UNAVAILABLE_MESSAGE, USER_REJECTED_APPROVAL_MESSAGE } from '../../../approvals/approval-errors.js';
11
12
  import { buildLocalExcelHttpUrl, parseExcelHttpPort } from '../../../xll/http-url.js';
12
13
  import { executeComLocally } from './executor.js';
13
14
  const TOOL_NAME = EXECUTE_CODE;
@@ -90,8 +91,26 @@ export function createExcelExecTool(httpPort, approval, observability) {
90
91
  }
91
92
  if (outcome === 'rejected') {
92
93
  return {
93
- content: [{ type: 'text', text: 'Excel operation rejected by user.' }],
94
- details: result
94
+ content: [{ type: 'text', text: USER_REJECTED_APPROVAL_MESSAGE }],
95
+ details: {
96
+ ...result,
97
+ code: APPROVAL_ERROR_CODE.USER_REJECTED,
98
+ approvalKind: EXECUTE_CODE,
99
+ toolName: EXECUTE_CODE
100
+ },
101
+ isError: true
102
+ };
103
+ }
104
+ if (outcome === 'approval-unavailable') {
105
+ return {
106
+ content: [{ type: 'text', text: INTERACTIVE_APPROVAL_UNAVAILABLE_MESSAGE }],
107
+ details: {
108
+ ...result,
109
+ code: APPROVAL_ERROR_CODE.INTERACTIVE_APPROVAL_UNAVAILABLE,
110
+ approvalKind: EXECUTE_CODE,
111
+ toolName: EXECUTE_CODE
112
+ },
113
+ isError: true
95
114
  };
96
115
  }
97
116
  if (outcome === 'failed' || !result.ok) {
@@ -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