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
@@ -1,9 +1,9 @@
1
1
  import { GoogleGenAI, ThinkingLevel } from '@google/genai';
2
- import { calculateCost } from '../models.js';
2
+ import { assertModelSupportsReasoningLevel, calculateCost } from '../models.js';
3
3
  import { AssistantMessageEventStream } from '../utils/event-stream.js';
4
4
  import { sanitizeSurrogates } from '../utils/sanitize-unicode.js';
5
5
  import { convertMessages, convertTools, isGemini3FlashModelId, isGemini3ProModelId, isThinkingPart, mapStopReason, mapToolChoice, retainThoughtSignature } from './google-shared.js';
6
- import { buildBaseOptions, clampReasoning } from './simple-options.js';
6
+ import { buildBaseOptions } from './simple-options.js';
7
7
  const API_VERSION = 'v1';
8
8
  const THINKING_LEVEL_MAP = {
9
9
  THINKING_LEVEL_UNSPECIFIED: ThinkingLevel.THINKING_LEVEL_UNSPECIFIED,
@@ -226,32 +226,36 @@ export const streamGoogleVertex = (model, context, options) => {
226
226
  return stream;
227
227
  };
228
228
  export const streamSimpleGoogleVertex = (model, context, options) => {
229
- const base = buildBaseOptions(model, options, undefined);
230
- if (!options?.reasoning) {
231
- return streamGoogleVertex(model, context, {
232
- ...base,
233
- thinking: { enabled: false }
234
- });
235
- }
236
- const effort = clampReasoning(options.reasoning);
229
+ return streamGoogleVertex(model, context, resolveSimpleGoogleVertexOptions(model, options));
230
+ };
231
+ function resolveSimpleGoogleVertexOptions(model, options) {
232
+ const base = {
233
+ ...buildBaseOptions(model, options, undefined),
234
+ toolChoice: typeof options?.toolChoice === 'object'
235
+ ? options.toolChoice
236
+ : options?.toolChoice === 'required'
237
+ ? 'any'
238
+ : options?.toolChoice
239
+ };
240
+ if (options?.reasoning === undefined)
241
+ return base;
242
+ if (!model.capabilities?.reasoning)
243
+ return base;
244
+ assertModelSupportsReasoningLevel(model, options.reasoning);
245
+ if (options.reasoning === 'off')
246
+ return { ...base, thinking: { enabled: false } };
237
247
  const geminiModel = model;
238
248
  if (isGemini3ProModelId(geminiModel.id) || isGemini3FlashModelId(geminiModel.id)) {
239
- return streamGoogleVertex(model, context, {
249
+ return {
240
250
  ...base,
241
251
  thinking: {
242
252
  enabled: true,
243
- level: getGemini3ThinkingLevel(effort, geminiModel)
253
+ level: getGemini3ThinkingLevel(options.reasoning)
244
254
  }
245
- });
255
+ };
246
256
  }
247
- return streamGoogleVertex(model, context, {
248
- ...base,
249
- thinking: {
250
- enabled: true,
251
- budgetTokens: getGoogleBudget(geminiModel, effort)
252
- }
253
- });
254
- };
257
+ throw new Error(`No reasoning serialization is configured for Vertex model "${model.id}".`);
258
+ }
255
259
  function createClient(model, project, location, optionsHeaders) {
256
260
  const httpOptions = {};
257
261
  if (model.headers || optionsHeaders) {
@@ -297,7 +301,10 @@ function buildParams(model, context, options = {}) {
297
301
  if (context.tools && context.tools.length > 0 && options.toolChoice) {
298
302
  config.toolConfig = {
299
303
  functionCallingConfig: {
300
- mode: mapToolChoice(options.toolChoice)
304
+ ...(typeof options.toolChoice === 'object'
305
+ ? { allowedFunctionNames: [options.toolChoice.name] }
306
+ : {}),
307
+ mode: mapToolChoice(typeof options.toolChoice === 'object' ? 'any' : options.toolChoice)
301
308
  }
302
309
  };
303
310
  }
@@ -327,17 +334,40 @@ function buildParams(model, context, options = {}) {
327
334
  };
328
335
  return params;
329
336
  }
330
- function getGemini3ThinkingLevel(effort, model) {
331
- if (isGemini3ProModelId(model.id)) {
332
- switch (effort) {
333
- case 'minimal':
334
- case 'low':
335
- return 'LOW';
336
- case 'medium':
337
- case 'high':
338
- return 'HIGH';
339
- }
340
- }
337
+ /** Serialize the provider-neutral request into the Vertex REST wire shape. */
338
+ export function buildGoogleVertexRequest(model, context, options) {
339
+ const params = buildParams(model, context, resolveSimpleGoogleVertexOptions(model, options));
340
+ const config = { ...(params.config ?? {}) };
341
+ delete config.abortSignal;
342
+ const systemInstruction = config.systemInstruction;
343
+ const tools = config.tools;
344
+ const toolConfig = config.toolConfig;
345
+ const thinkingConfig = config.thinkingConfig;
346
+ delete config.systemInstruction;
347
+ delete config.tools;
348
+ delete config.toolConfig;
349
+ delete config.thinkingConfig;
350
+ if (thinkingConfig !== undefined)
351
+ config.thinkingConfig = thinkingConfig;
352
+ return {
353
+ contents: params.contents,
354
+ ...(typeof systemInstruction === 'string'
355
+ ? { systemInstruction: { parts: [{ text: systemInstruction }] } }
356
+ : systemInstruction
357
+ ? { systemInstruction }
358
+ : {}),
359
+ ...(tools ? { tools } : {}),
360
+ ...(toolConfig ? { toolConfig } : {}),
361
+ ...(Object.keys(config).length > 0 ? { generationConfig: config } : {})
362
+ };
363
+ }
364
+ /** Build the api-v2 Vertex-shaped endpoint used by CLI and embedded transports. */
365
+ export function googleVertexGatewayEndpoint(baseUrl, modelId, operation) {
366
+ const normalized = baseUrl.replace(/\/+$/, '');
367
+ return (`${normalized}/v1/projects/-/locations/global/publishers/google/models/` +
368
+ `${encodeURIComponent(modelId)}:${operation}`);
369
+ }
370
+ function getGemini3ThinkingLevel(effort) {
341
371
  switch (effort) {
342
372
  case 'minimal':
343
373
  return 'MINIMAL';
@@ -347,27 +377,9 @@ function getGemini3ThinkingLevel(effort, model) {
347
377
  return 'MEDIUM';
348
378
  case 'high':
349
379
  return 'HIGH';
380
+ case 'xhigh':
381
+ case 'max':
382
+ throw new Error(`Gemini 3 does not support reasoning level "${effort}".`);
350
383
  }
351
384
  }
352
- function getGoogleBudget(model, effort) {
353
- if (model.id.includes('2.5-pro')) {
354
- const budgets = {
355
- minimal: 128,
356
- low: 2048,
357
- medium: 8192,
358
- high: 32768
359
- };
360
- return budgets[effort];
361
- }
362
- if (model.id.includes('2.5-flash')) {
363
- const budgets = {
364
- minimal: 128,
365
- low: 2048,
366
- medium: 8192,
367
- high: 24576
368
- };
369
- return budgets[effort];
370
- }
371
- return -1;
372
- }
373
385
  //# sourceMappingURL=google-vertex.js.map
@@ -1,10 +1,10 @@
1
1
  import { GoogleGenAI } from '@google/genai';
2
2
  import { getEnvApiKey } from '../env-api-keys.js';
3
- import { calculateCost } from '../models.js';
3
+ import { assertModelSupportsReasoningLevel, calculateCost } from '../models.js';
4
4
  import { AssistantMessageEventStream } from '../utils/event-stream.js';
5
5
  import { sanitizeSurrogates } from '../utils/sanitize-unicode.js';
6
6
  import { convertMessages, convertTools, isGemini3FlashModelId, isGemini3ProModelId, isThinkingPart, mapStopReason, mapToolChoice, retainThoughtSignature } from './google-shared.js';
7
- import { buildBaseOptions, clampReasoning } from './simple-options.js';
7
+ import { buildBaseOptions } from './simple-options.js';
8
8
  // Counter for generating unique tool call IDs
9
9
  let toolCallCounter = 0;
10
10
  export const streamGoogle = (model, context, options) => {
@@ -224,30 +224,25 @@ export const streamSimpleGoogle = (model, context, options) => {
224
224
  throw new Error(`No API key for provider: ${model.provider}`);
225
225
  }
226
226
  const base = buildBaseOptions(model, options, apiKey);
227
- if (!options?.reasoning) {
228
- return streamGoogle(model, context, {
229
- ...base,
230
- thinking: { enabled: false }
231
- });
227
+ if (options?.reasoning === undefined)
228
+ return streamGoogle(model, context, base);
229
+ if (!model.capabilities?.reasoning)
230
+ return streamGoogle(model, context, base);
231
+ assertModelSupportsReasoningLevel(model, options.reasoning);
232
+ if (options.reasoning === 'off') {
233
+ return streamGoogle(model, context, { ...base, thinking: { enabled: false } });
232
234
  }
233
- const effort = clampReasoning(options.reasoning);
234
235
  const googleModel = model;
235
236
  if (isGemini3ProModelId(googleModel.id) || isGemini3FlashModelId(googleModel.id)) {
236
237
  return streamGoogle(model, context, {
237
238
  ...base,
238
239
  thinking: {
239
240
  enabled: true,
240
- level: getGemini3ThinkingLevel(effort, googleModel)
241
+ level: getGemini3ThinkingLevel(options.reasoning)
241
242
  }
242
243
  });
243
244
  }
244
- return streamGoogle(model, context, {
245
- ...base,
246
- thinking: {
247
- enabled: true,
248
- budgetTokens: getGoogleBudget(googleModel, effort)
249
- }
250
- });
245
+ throw new Error(`No reasoning serialization is configured for Google model "${model.id}".`);
251
246
  };
252
247
  function createClient(model, apiKey, optionsHeaders) {
253
248
  const httpOptions = {};
@@ -311,17 +306,7 @@ function buildParams(model, context, options = {}) {
311
306
  };
312
307
  return params;
313
308
  }
314
- function getGemini3ThinkingLevel(effort, model) {
315
- if (isGemini3ProModelId(model.id)) {
316
- switch (effort) {
317
- case 'minimal':
318
- case 'low':
319
- return 'LOW';
320
- case 'medium':
321
- case 'high':
322
- return 'HIGH';
323
- }
324
- }
309
+ function getGemini3ThinkingLevel(effort) {
325
310
  switch (effort) {
326
311
  case 'minimal':
327
312
  return 'MINIMAL';
@@ -331,27 +316,9 @@ function getGemini3ThinkingLevel(effort, model) {
331
316
  return 'MEDIUM';
332
317
  case 'high':
333
318
  return 'HIGH';
319
+ case 'xhigh':
320
+ case 'max':
321
+ throw new Error(`Gemini 3 does not support reasoning level "${effort}".`);
334
322
  }
335
323
  }
336
- function getGoogleBudget(model, effort) {
337
- if (model.id.includes('2.5-pro')) {
338
- const budgets = {
339
- minimal: 128,
340
- low: 2048,
341
- medium: 8192,
342
- high: 32768
343
- };
344
- return budgets[effort];
345
- }
346
- if (model.id.includes('2.5-flash')) {
347
- const budgets = {
348
- minimal: 128,
349
- low: 2048,
350
- medium: 8192,
351
- high: 24576
352
- };
353
- return budgets[effort];
354
- }
355
- return -1;
356
- }
357
324
  //# sourceMappingURL=google.js.map
@@ -1,5 +1,6 @@
1
1
  import type { ChatCompletionMessageParam } from 'openai/resources/chat/completions.js';
2
2
  import type { Context, Model, OpenAICompletionsCompat, SimpleStreamOptions, StreamFunction, StreamOptions } from '../types.js';
3
+ import { type OpenAIReasoningEffort } from './openai-reasoning.js';
3
4
  export interface OpenAICompletionsOptions extends StreamOptions {
4
5
  toolChoice?: 'auto' | 'none' | 'required' | {
5
6
  type: 'function';
@@ -7,9 +8,11 @@ export interface OpenAICompletionsOptions extends StreamOptions {
7
8
  name: string;
8
9
  };
9
10
  };
10
- reasoningEffort?: 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
11
+ reasoningEffort?: OpenAIReasoningEffort;
11
12
  }
12
13
  export declare const streamOpenAICompletions: StreamFunction<'openai-completions', OpenAICompletionsOptions>;
13
14
  export declare const streamSimpleOpenAICompletions: StreamFunction<'openai-completions', SimpleStreamOptions>;
15
+ /** Serialize one Chat Completions request for either streaming or invoke. */
16
+ export declare function buildOpenAICompletionsRequest(model: Model<'openai-completions'>, context: Context, options: SimpleStreamOptions | undefined, stream: boolean): Record<string, unknown>;
14
17
  export declare function convertMessages(model: Model<'openai-completions'>, context: Context, compat: Required<OpenAICompletionsCompat>): ChatCompletionMessageParam[];
15
18
  //# sourceMappingURL=openai-completions.d.ts.map
@@ -1,11 +1,12 @@
1
1
  import OpenAI from 'openai';
2
2
  import { getEnvApiKey } from '../env-api-keys.js';
3
- import { calculateCost, supportsXhigh } from '../models.js';
3
+ import { calculateCost } from '../models.js';
4
4
  import { AssistantMessageEventStream } from '../utils/event-stream.js';
5
5
  import { parseStreamingJson } from '../utils/json-parse.js';
6
6
  import { sanitizeSurrogates } from '../utils/sanitize-unicode.js';
7
+ import { resolveOpenAIReasoningEffort } from './openai-reasoning.js';
7
8
  import { applyNormalizedProviderError } from './provider-error-normalization.js';
8
- import { buildBaseOptions, clampReasoning } from './simple-options.js';
9
+ import { buildBaseOptions } from './simple-options.js';
9
10
  import { transformMessages } from './transform-messages.js';
10
11
  /**
11
12
  * Normalize tool call ID for Mistral.
@@ -278,17 +279,23 @@ export const streamSimpleOpenAICompletions = (model, context, options) => {
278
279
  if (!apiKey) {
279
280
  throw new Error(`No API key for provider: ${model.provider}`);
280
281
  }
281
- const base = buildBaseOptions(model, options, apiKey);
282
- const reasoningEffort = supportsXhigh(model)
283
- ? options?.reasoning
284
- : clampReasoning(options?.reasoning);
285
- const toolChoice = options?.toolChoice;
286
282
  return streamOpenAICompletions(model, context, {
287
- ...base,
288
- reasoningEffort,
289
- toolChoice
283
+ ...resolveSimpleOpenAICompletionsOptions(model, options),
284
+ apiKey
290
285
  });
291
286
  };
287
+ function mapToolChoice(toolChoice) {
288
+ if (!toolChoice || typeof toolChoice === 'string')
289
+ return toolChoice;
290
+ return { function: { name: toolChoice.name }, type: 'function' };
291
+ }
292
+ function resolveSimpleOpenAICompletionsOptions(model, options) {
293
+ return {
294
+ ...buildBaseOptions(model, options, options?.apiKey),
295
+ reasoningEffort: resolveOpenAIReasoningEffort(model, options?.reasoning),
296
+ toolChoice: mapToolChoice(options?.toolChoice)
297
+ };
298
+ }
292
299
  function createClient(model, context, apiKey, optionsHeaders, fetchOptions, fetchImpl) {
293
300
  if (!apiKey) {
294
301
  if (!process.env.OPENAI_API_KEY) {
@@ -371,6 +378,15 @@ function buildParams(model, context, options) {
371
378
  }
372
379
  return params;
373
380
  }
381
+ /** Serialize one Chat Completions request for either streaming or invoke. */
382
+ export function buildOpenAICompletionsRequest(model, context, options, stream) {
383
+ const params = buildParams(model, context, resolveSimpleOpenAICompletionsOptions(model, options));
384
+ const body = { ...params };
385
+ body.stream = stream;
386
+ if (!stream)
387
+ delete body.stream_options;
388
+ return body;
389
+ }
374
390
  function maybeAddOpenRouterAnthropicCacheControl(model, messages) {
375
391
  if (model.provider !== 'openrouter' || !model.id.startsWith('anthropic/'))
376
392
  return;
@@ -0,0 +1,5 @@
1
+ import type { Api, Model, ReasoningLevel } from '../types.js';
2
+ export type OpenAIReasoningEffort = 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max';
3
+ /** Preserve exact native effort names; explicit `off` maps to OpenAI `none`. */
4
+ export declare function resolveOpenAIReasoningEffort(model: Model<Api>, level: ReasoningLevel | undefined): OpenAIReasoningEffort | undefined;
5
+ //# sourceMappingURL=openai-reasoning.d.ts.map
@@ -0,0 +1,13 @@
1
+ import { assertModelSupportsReasoningLevel } from '../models.js';
2
+ /** Preserve exact native effort names; explicit `off` maps to OpenAI `none`. */
3
+ export function resolveOpenAIReasoningEffort(model, level) {
4
+ if (level === undefined)
5
+ return undefined;
6
+ // Unclassified custom/third-party models use their provider default. A
7
+ // configurable wire value requires an explicit model capability contract.
8
+ if (!model.capabilities?.reasoning)
9
+ return undefined;
10
+ assertModelSupportsReasoningLevel(model, level);
11
+ return level === 'off' ? 'none' : level;
12
+ }
13
+ //# sourceMappingURL=openai-reasoning.js.map
@@ -85,7 +85,7 @@ function convertUserInputContent(item) {
85
85
  return {
86
86
  type: 'input_file',
87
87
  file_data: `data:${item.mimeType};base64,${item.data}`,
88
- filename: item.filename ?? 'document'
88
+ filename: item.filename ?? 'document.pdf'
89
89
  };
90
90
  }
91
91
  return {
@@ -1,14 +1,18 @@
1
1
  import type { ResponseCreateParamsStreaming } from 'openai/resources/responses/responses.js';
2
- import type { SimpleStreamOptions, StreamFunction, StreamOptions } from '../types.js';
2
+ import type { Context, Model, SimpleStreamOptions, StreamFunction, StreamOptions } from '../types.js';
3
+ import { type OpenAIReasoningEffort } from './openai-reasoning.js';
3
4
  export interface OpenAIResponsesOptions extends StreamOptions {
4
- reasoningEffort?: 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
5
+ reasoningEffort?: OpenAIReasoningEffort;
5
6
  reasoningSummary?: 'auto' | 'detailed' | 'concise' | null;
6
7
  serviceTier?: ResponseCreateParamsStreaming['service_tier'];
8
+ toolChoice?: ResponseCreateParamsStreaming['tool_choice'];
7
9
  }
8
10
  /**
9
11
  * Generate function for OpenAI Responses API
10
12
  */
11
13
  export declare const streamOpenAIResponses: StreamFunction<'openai-responses', OpenAIResponsesOptions>;
12
14
  export declare const streamSimpleOpenAIResponses: StreamFunction<'openai-responses', SimpleStreamOptions>;
15
+ /** Serialize one Responses API request for either streaming or invoke. */
16
+ export declare function buildOpenAIResponsesRequest(model: Model<'openai-responses'>, context: Context, options: SimpleStreamOptions | undefined, stream: boolean): Record<string, unknown>;
13
17
  export declare function getServiceTierCostMultiplier(serviceTier: ResponseCreateParamsStreaming['service_tier'] | undefined): number;
14
18
  //# sourceMappingURL=openai-responses.d.ts.map
@@ -1,10 +1,10 @@
1
1
  import OpenAI from 'openai';
2
2
  import { getEnvApiKey } from '../env-api-keys.js';
3
- import { supportsXhigh } from '../models.js';
4
3
  import { AssistantMessageEventStream } from '../utils/event-stream.js';
4
+ import { resolveOpenAIReasoningEffort } from './openai-reasoning.js';
5
5
  import { convertResponsesMessages, convertResponsesTools, processResponsesStream } from './openai-responses-shared.js';
6
6
  import { applyNormalizedProviderError } from './provider-error-normalization.js';
7
- import { buildBaseOptions, clampReasoning } from './simple-options.js';
7
+ import { buildBaseOptions } from './simple-options.js';
8
8
  const OPENAI_TOOL_CALL_PROVIDERS = new Set(['openai', 'opencode']);
9
9
  /**
10
10
  * Resolve cache retention preference.
@@ -93,17 +93,26 @@ export const streamSimpleOpenAIResponses = (model, context, options) => {
93
93
  if (!apiKey) {
94
94
  throw new Error(`No API key for provider: ${model.provider}`);
95
95
  }
96
- const base = buildBaseOptions(model, options, apiKey);
97
- const reasoningEffort = supportsXhigh(model)
98
- ? options?.reasoning
99
- : clampReasoning(options?.reasoning);
100
96
  const serviceTier = options?.serviceTier;
101
97
  return streamOpenAIResponses(model, context, {
102
- ...base,
103
- reasoningEffort,
98
+ ...resolveSimpleOpenAIResponsesOptions(model, options),
99
+ apiKey,
104
100
  serviceTier
105
101
  });
106
102
  };
103
+ function mapToolChoice(toolChoice) {
104
+ if (!toolChoice || typeof toolChoice === 'string')
105
+ return toolChoice;
106
+ return { name: toolChoice.name, type: 'function' };
107
+ }
108
+ function resolveSimpleOpenAIResponsesOptions(model, options) {
109
+ return {
110
+ ...buildBaseOptions(model, options, options?.apiKey),
111
+ reasoningEffort: resolveOpenAIReasoningEffort(model, options?.reasoning),
112
+ serviceTier: options?.serviceTier,
113
+ toolChoice: mapToolChoice(options?.toolChoice)
114
+ };
115
+ }
107
116
  function createClient(model, context, apiKey, optionsHeaders, fetchOptions, fetchImpl) {
108
117
  if (!apiKey) {
109
118
  if (!process.env.OPENAI_API_KEY) {
@@ -147,31 +156,27 @@ function buildParams(model, context, options) {
147
156
  if (context.tools) {
148
157
  params.tools = convertResponsesTools(context.tools);
149
158
  }
159
+ if (options?.toolChoice) {
160
+ params.tool_choice = options.toolChoice;
161
+ }
150
162
  if (model.reasoning) {
151
163
  if (options?.reasoningEffort || options?.reasoningSummary) {
152
164
  params.reasoning = {
153
- effort: options?.reasoningEffort || 'medium',
165
+ effort: (options?.reasoningEffort || 'medium'),
154
166
  summary: options?.reasoningSummary || 'auto'
155
167
  };
156
168
  params.include = ['reasoning.encrypted_content'];
157
169
  }
158
- else {
159
- if (model.name.startsWith('gpt-5')) {
160
- // Jesus Christ, see https://community.openai.com/t/need-reasoning-false-option-for-gpt-5/1351588/7
161
- messages.push({
162
- role: 'developer',
163
- content: [
164
- {
165
- type: 'input_text',
166
- text: '# Juice: 0 !important'
167
- }
168
- ]
169
- });
170
- }
171
- }
172
170
  }
173
171
  return params;
174
172
  }
173
+ /** Serialize one Responses API request for either streaming or invoke. */
174
+ export function buildOpenAIResponsesRequest(model, context, options, stream) {
175
+ return {
176
+ ...buildParams(model, context, resolveSimpleOpenAIResponsesOptions(model, options)),
177
+ stream
178
+ };
179
+ }
175
180
  export function getServiceTierCostMultiplier(serviceTier) {
176
181
  switch (serviceTier) {
177
182
  case 'flex':
@@ -1,7 +1,6 @@
1
- import type { Api, Model, SimpleStreamOptions, StreamOptions, ThinkingLevel } from '../types.js';
1
+ import type { Api, EnabledReasoningLevel, Model, SimpleStreamOptions, StreamOptions } from '../types.js';
2
2
  export declare function buildBaseOptions(model: Model<Api>, options?: SimpleStreamOptions, apiKey?: string): StreamOptions;
3
- export declare function clampReasoning(effort: ThinkingLevel | undefined): Exclude<ThinkingLevel, 'xhigh'> | undefined;
4
- export declare function adjustMaxTokensForThinking(baseMaxTokens: number, modelMaxTokens: number, reasoningLevel: ThinkingLevel): {
3
+ export declare function adjustMaxTokensForThinking(baseMaxTokens: number, modelMaxTokens: number, reasoningLevel: EnabledReasoningLevel): {
5
4
  maxTokens: number;
6
5
  thinkingBudget: number;
7
6
  };
@@ -14,19 +14,17 @@ export function buildBaseOptions(model, options, apiKey) {
14
14
  metadata: options?.metadata
15
15
  };
16
16
  }
17
- export function clampReasoning(effort) {
18
- return effort === 'xhigh' ? 'high' : effort;
19
- }
20
17
  export function adjustMaxTokensForThinking(baseMaxTokens, modelMaxTokens, reasoningLevel) {
21
18
  const budgets = {
22
19
  minimal: 1024,
23
20
  low: 2048,
24
21
  medium: 8192,
25
- high: 16384
22
+ high: 16384,
23
+ xhigh: 32768,
24
+ max: 49152
26
25
  };
27
26
  const minOutputTokens = 1024;
28
- const level = clampReasoning(reasoningLevel);
29
- let thinkingBudget = budgets[level];
27
+ let thinkingBudget = budgets[reasoningLevel];
30
28
  const maxTokens = Math.min(baseMaxTokens + thinkingBudget, modelMaxTokens);
31
29
  if (maxTokens <= thinkingBudget) {
32
30
  thinkingBudget = Math.max(0, maxTokens - minOutputTokens);
@@ -4,7 +4,22 @@ export type KnownApi = 'openai-completions' | 'openai-responses' | 'azure-openai
4
4
  export type Api = KnownApi | (string & {});
5
5
  export type KnownProvider = 'anthropic' | 'google' | 'google-vertex' | 'xai' | 'groq' | 'cerebras' | 'openrouter' | 'vercel-ai-gateway' | 'zai' | 'minimax' | 'minimax-cn' | 'huggingface' | 'opencode' | 'kimi-coding';
6
6
  export type Provider = KnownProvider | string;
7
- export type ThinkingLevel = 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
7
+ /** Product-level reasoning selection. Absence means "use the provider/model default". */
8
+ export type ReasoningLevel = 'off' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max';
9
+ export type EnabledReasoningLevel = Exclude<ReasoningLevel, 'off'>;
10
+ /** Provider-neutral tool selection policy. Providers own the wire-format mapping. */
11
+ export type ToolChoice = 'auto' | 'none' | 'required' | {
12
+ readonly name: string;
13
+ };
14
+ export interface ModelCapabilities {
15
+ /** Exact reasoning controls exposed by this model. */
16
+ readonly reasoning?: {
17
+ readonly control: 'adaptive-effort' | 'effort' | 'thinking-level' | 'budget' | 'fixed';
18
+ readonly levels: readonly EnabledReasoningLevel[];
19
+ readonly defaultLevel: EnabledReasoningLevel;
20
+ readonly supportsOff: boolean;
21
+ };
22
+ }
8
23
  export type CacheRetention = 'none' | 'short' | 'long';
9
24
  export type Transport = 'sse' | 'websocket' | 'auto';
10
25
  export interface StreamOptions {
@@ -64,7 +79,8 @@ export interface StreamOptions {
64
79
  }
65
80
  export type ProviderStreamOptions = StreamOptions & Record<string, unknown>;
66
81
  export interface SimpleStreamOptions extends StreamOptions {
67
- reasoning?: ThinkingLevel;
82
+ reasoning?: ReasoningLevel;
83
+ toolChoice?: ToolChoice;
68
84
  }
69
85
  export type StreamFunction<TApi extends Api = Api, TOptions extends StreamOptions = StreamOptions> = (model: Model<TApi>, context: Context, options?: TOptions) => AssistantMessageEventStream;
70
86
  export type StreamFn = StreamFunction;
@@ -281,6 +297,7 @@ export interface Model<TApi extends Api> {
281
297
  };
282
298
  contextWindow: number;
283
299
  maxTokens: number;
300
+ capabilities?: ModelCapabilities;
284
301
  headers?: Record<string, string>;
285
302
  /** Compatibility overrides for OpenAI-compatible APIs. If not set, auto-detected from baseUrl. */
286
303
  compat?: TApi extends 'openai-completions' ? OpenAICompletionsCompat : never;
@@ -7,11 +7,12 @@
7
7
  * only exposes a subset of methods and resolves model/thinking-level
8
8
  * defaults consistently with how the CLI bootstrapped sessions previously.
9
9
  */
10
+ import { resolveModelReasoningLevel } from '../ai/models.js';
10
11
  import { completeSimple, streamSimple } from '../ai/stream.js';
11
12
  import { AgentStopReason } from '../contracts/agent-snapshot.js';
12
13
  import { createAgentSnapshotFromAgentMessages } from '../core/agent-snapshot-builder.js';
13
14
  import { createEmbeddedAgentRuntime } from '../core/embedded-agent-facade.js';
14
- import { AgentController, AgentEngine, DEFAULT_THINKING_LEVEL } from '../core/index.js';
15
+ import { AgentController, AgentEngine } from '../core/index.js';
15
16
  import { createPendingHostToolRequests } from '../core/pending-host-tool-requests.js';
16
17
  import { getHostToolTimeoutMs } from '../embedded-agent/host-tools/timeouts.js';
17
18
  import { AgentSession, LoginRequiredError } from './agent-session.js';
@@ -121,14 +122,14 @@ export async function createAgentSessionRuntimeAdapter(options) {
121
122
  if (thinkingLevel === undefined && hasExistingSession) {
122
123
  thinkingLevel = hasThinkingEntry
123
124
  ? existingSession.thinkingLevel
124
- : (settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL);
125
+ : settingsManager.getDefaultThinkingLevel();
125
126
  }
126
127
  if (thinkingLevel === undefined) {
127
- thinkingLevel = settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL;
128
- }
129
- if (!model || !model.reasoning) {
130
- thinkingLevel = 'off';
128
+ thinkingLevel = settingsManager.getDefaultThinkingLevel();
131
129
  }
130
+ thinkingLevel = model
131
+ ? resolveModelReasoningLevel(model, thinkingLevel)
132
+ : 'off';
132
133
  // Mutable holder so the AgentEngine constructor's `getApiKey` can resolve
133
134
  // off the agent that we'll build below. Lets us construct the runtime (and
134
135
  // pending host-tool requests that depend on its heartbeat) before the
@@ -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
  */