catui-agent 1.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1274) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +267 -0
  3. package/dist/build-meta.json +6 -0
  4. package/dist/builtin-extensions.d.ts +47 -0
  5. package/dist/builtin-extensions.js +1 -0
  6. package/dist/catui-defaults.d.ts +555 -0
  7. package/dist/catui-defaults.js +22 -0
  8. package/dist/cli/args.d.ts +70 -0
  9. package/dist/cli/args.js +158 -0
  10. package/dist/cli/config-selector.d.ts +10 -0
  11. package/dist/cli/config-selector.js +1 -0
  12. package/dist/cli/file-processor.d.ts +11 -0
  13. package/dist/cli/file-processor.js +6 -0
  14. package/dist/cli/list-models.d.ts +12 -0
  15. package/dist/cli/list-models.js +2 -0
  16. package/dist/cli/session-picker.d.ts +5 -0
  17. package/dist/cli/session-picker.js +1 -0
  18. package/dist/cli.d.ts +2 -0
  19. package/dist/cli.js +2 -0
  20. package/dist/config.d.ts +103 -0
  21. package/dist/config.js +1 -0
  22. package/dist/core/agent-dir/agent-dir-context.d.ts +60 -0
  23. package/dist/core/agent-dir/agent-dir-context.js +1 -0
  24. package/dist/core/agent-dir/agent-metadata.d.ts +48 -0
  25. package/dist/core/agent-dir/agent-metadata.js +1 -0
  26. package/dist/core/agent-dir/migration-tool.d.ts +40 -0
  27. package/dist/core/agent-dir/migration-tool.js +7 -0
  28. package/dist/core/export-html/AGENT.md +12 -0
  29. package/dist/core/export-html/ansi-to-html.d.ts +9 -0
  30. package/dist/core/export-html/ansi-to-html.js +2 -0
  31. package/dist/core/export-html/index.d.ts +39 -0
  32. package/dist/core/export-html/index.js +2 -0
  33. package/dist/core/export-html/template.css +971 -0
  34. package/dist/core/export-html/template.html +54 -0
  35. package/dist/core/export-html/template.js +66 -0
  36. package/dist/core/export-html/tool-renderer.d.ts +28 -0
  37. package/dist/core/export-html/tool-renderer.js +1 -0
  38. package/dist/core/export-html/vendor/highlight.min.js +4 -0
  39. package/dist/core/export-html/vendor/marked.min.js +56 -0
  40. package/dist/core/extensions-host/index.d.ts +13 -0
  41. package/dist/core/extensions-host/index.js +1 -0
  42. package/dist/core/extensions-host/loader.d.ts +21 -0
  43. package/dist/core/extensions-host/loader.js +1 -0
  44. package/dist/core/extensions-host/runner.d.ts +233 -0
  45. package/dist/core/extensions-host/runner.js +3 -0
  46. package/dist/core/extensions-host/types.d.ts +1079 -0
  47. package/dist/core/extensions-host/types.js +1 -0
  48. package/dist/core/extensions-host/wrapper.d.ts +29 -0
  49. package/dist/core/extensions-host/wrapper.js +2 -0
  50. package/dist/core/index.d.ts +17 -0
  51. package/dist/core/index.js +1 -0
  52. package/dist/core/lib/agent-core/src/agent-loop-continuations.d.ts +17 -0
  53. package/dist/core/lib/agent-core/src/agent-loop-continuations.js +1 -0
  54. package/dist/core/lib/agent-core/src/agent-loop-stream-events.d.ts +19 -0
  55. package/dist/core/lib/agent-core/src/agent-loop-stream-events.js +1 -0
  56. package/dist/core/lib/agent-core/src/agent-loop-tool-results.d.ts +10 -0
  57. package/dist/core/lib/agent-core/src/agent-loop-tool-results.js +3 -0
  58. package/dist/core/lib/agent-core/src/agent-loop-tool-summaries.d.ts +22 -0
  59. package/dist/core/lib/agent-core/src/agent-loop-tool-summaries.js +1 -0
  60. package/dist/core/lib/agent-core/src/agent-loop.d.ts +26 -0
  61. package/dist/core/lib/agent-core/src/agent-loop.js +4 -0
  62. package/dist/core/lib/agent-core/src/agent-run-result.d.ts +9 -0
  63. package/dist/core/lib/agent-core/src/agent-run-result.js +1 -0
  64. package/dist/core/lib/agent-core/src/agent.d.ts +215 -0
  65. package/dist/core/lib/agent-core/src/agent.js +1 -0
  66. package/dist/core/lib/agent-core/src/errors.d.ts +62 -0
  67. package/dist/core/lib/agent-core/src/errors.js +1 -0
  68. package/dist/core/lib/agent-core/src/index.d.ts +14 -0
  69. package/dist/core/lib/agent-core/src/index.js +1 -0
  70. package/dist/core/lib/agent-core/src/proxy.d.ts +91 -0
  71. package/dist/core/lib/agent-core/src/proxy.js +2 -0
  72. package/dist/core/lib/agent-core/src/structured-adaptive-agent-loop.d.ts +15 -0
  73. package/dist/core/lib/agent-core/src/structured-adaptive-agent-loop.js +2 -0
  74. package/dist/core/lib/agent-core/src/structured-adaptive-streaming-tool-executor.d.ts +33 -0
  75. package/dist/core/lib/agent-core/src/structured-adaptive-streaming-tool-executor.js +1 -0
  76. package/dist/core/lib/agent-core/src/structured-adaptive-tool-orchestration.d.ts +35 -0
  77. package/dist/core/lib/agent-core/src/structured-adaptive-tool-orchestration.js +3 -0
  78. package/dist/core/lib/agent-core/src/types.d.ts +417 -0
  79. package/dist/core/lib/agent-core/src/types.js +1 -0
  80. package/dist/core/lib/ai/src/api-registry.d.ts +27 -0
  81. package/dist/core/lib/ai/src/api-registry.js +1 -0
  82. package/dist/core/lib/ai/src/config-path.d.ts +1 -0
  83. package/dist/core/lib/ai/src/config-path.js +1 -0
  84. package/dist/core/lib/ai/src/debug-logger.d.ts +94 -0
  85. package/dist/core/lib/ai/src/debug-logger.js +4 -0
  86. package/dist/core/lib/ai/src/env-api-keys.d.ts +8 -0
  87. package/dist/core/lib/ai/src/env-api-keys.js +1 -0
  88. package/dist/core/lib/ai/src/env.d.ts +7 -0
  89. package/dist/core/lib/ai/src/env.js +1 -0
  90. package/dist/core/lib/ai/src/events.d.ts +8 -0
  91. package/dist/core/lib/ai/src/events.js +1 -0
  92. package/dist/core/lib/ai/src/index.d.ts +27 -0
  93. package/dist/core/lib/ai/src/index.js +1 -0
  94. package/dist/core/lib/ai/src/json.d.ts +7 -0
  95. package/dist/core/lib/ai/src/json.js +1 -0
  96. package/dist/core/lib/ai/src/models.d.ts +31 -0
  97. package/dist/core/lib/ai/src/models.generated.d.ts +15315 -0
  98. package/dist/core/lib/ai/src/models.generated.js +1 -0
  99. package/dist/core/lib/ai/src/models.js +1 -0
  100. package/dist/core/lib/ai/src/overflow.d.ts +7 -0
  101. package/dist/core/lib/ai/src/overflow.js +1 -0
  102. package/dist/core/lib/ai/src/providers/amazon-bedrock.d.ts +20 -0
  103. package/dist/core/lib/ai/src/providers/amazon-bedrock.js +1 -0
  104. package/dist/core/lib/ai/src/providers/anthropic.d.ts +38 -0
  105. package/dist/core/lib/ai/src/providers/anthropic.js +2 -0
  106. package/dist/core/lib/ai/src/providers/azure-openai-responses.d.ts +21 -0
  107. package/dist/core/lib/ai/src/providers/azure-openai-responses.js +1 -0
  108. package/dist/core/lib/ai/src/providers/github-copilot-headers.d.ts +13 -0
  109. package/dist/core/lib/ai/src/providers/github-copilot-headers.js +1 -0
  110. package/dist/core/lib/ai/src/providers/google-gemini-cli.d.ts +79 -0
  111. package/dist/core/lib/ai/src/providers/google-gemini-cli.js +2 -0
  112. package/dist/core/lib/ai/src/providers/google-shared.d.ts +70 -0
  113. package/dist/core/lib/ai/src/providers/google-shared.js +2 -0
  114. package/dist/core/lib/ai/src/providers/google-vertex.d.ts +20 -0
  115. package/dist/core/lib/ai/src/providers/google-vertex.js +1 -0
  116. package/dist/core/lib/ai/src/providers/google.d.ts +18 -0
  117. package/dist/core/lib/ai/src/providers/google.js +1 -0
  118. package/dist/core/lib/ai/src/providers/openai-codex-responses.d.ts +8 -0
  119. package/dist/core/lib/ai/src/providers/openai-codex-responses.js +7 -0
  120. package/dist/core/lib/ai/src/providers/openai-completions.d.ts +20 -0
  121. package/dist/core/lib/ai/src/providers/openai-completions.js +6 -0
  122. package/dist/core/lib/ai/src/providers/openai-responses-shared.d.ts +22 -0
  123. package/dist/core/lib/ai/src/providers/openai-responses-shared.js +10 -0
  124. package/dist/core/lib/ai/src/providers/openai-responses.d.ts +19 -0
  125. package/dist/core/lib/ai/src/providers/openai-responses.js +1 -0
  126. package/dist/core/lib/ai/src/providers/register-builtins.d.ts +8 -0
  127. package/dist/core/lib/ai/src/providers/register-builtins.js +1 -0
  128. package/dist/core/lib/ai/src/providers/simple-options.d.ts +13 -0
  129. package/dist/core/lib/ai/src/providers/simple-options.js +1 -0
  130. package/dist/core/lib/ai/src/providers/transform-messages.d.ts +13 -0
  131. package/dist/core/lib/ai/src/providers/transform-messages.js +1 -0
  132. package/dist/core/lib/ai/src/registry.d.ts +8 -0
  133. package/dist/core/lib/ai/src/registry.js +1 -0
  134. package/dist/core/lib/ai/src/schema.d.ts +10 -0
  135. package/dist/core/lib/ai/src/schema.js +1 -0
  136. package/dist/core/lib/ai/src/stream.d.ts +33 -0
  137. package/dist/core/lib/ai/src/stream.js +1 -0
  138. package/dist/core/lib/ai/src/types.d.ts +331 -0
  139. package/dist/core/lib/ai/src/types.js +0 -0
  140. package/dist/core/lib/ai/src/utils/event-stream-types.d.ts +12 -0
  141. package/dist/core/lib/ai/src/utils/event-stream-types.js +0 -0
  142. package/dist/core/lib/ai/src/utils/event-stream.d.ts +31 -0
  143. package/dist/core/lib/ai/src/utils/event-stream.js +1 -0
  144. package/dist/core/lib/ai/src/utils/http-proxy.d.ts +13 -0
  145. package/dist/core/lib/ai/src/utils/http-proxy.js +1 -0
  146. package/dist/core/lib/ai/src/utils/json-parse.d.ts +14 -0
  147. package/dist/core/lib/ai/src/utils/json-parse.js +1 -0
  148. package/dist/core/lib/ai/src/utils/oauth/anthropic.d.ts +22 -0
  149. package/dist/core/lib/ai/src/utils/oauth/anthropic.js +1 -0
  150. package/dist/core/lib/ai/src/utils/oauth/decode-credential.d.ts +12 -0
  151. package/dist/core/lib/ai/src/utils/oauth/decode-credential.js +1 -0
  152. package/dist/core/lib/ai/src/utils/oauth/github-copilot.d.ts +35 -0
  153. package/dist/core/lib/ai/src/utils/oauth/github-copilot.js +1 -0
  154. package/dist/core/lib/ai/src/utils/oauth/google-antigravity.d.ts +31 -0
  155. package/dist/core/lib/ai/src/utils/oauth/google-antigravity.js +1 -0
  156. package/dist/core/lib/ai/src/utils/oauth/google-gemini-cli.d.ts +31 -0
  157. package/dist/core/lib/ai/src/utils/oauth/google-gemini-cli.js +1 -0
  158. package/dist/core/lib/ai/src/utils/oauth/index.d.ts +60 -0
  159. package/dist/core/lib/ai/src/utils/oauth/index.js +1 -0
  160. package/dist/core/lib/ai/src/utils/oauth/openai-codex.d.ts +39 -0
  161. package/dist/core/lib/ai/src/utils/oauth/openai-codex.js +11 -0
  162. package/dist/core/lib/ai/src/utils/oauth/pkce.d.ts +18 -0
  163. package/dist/core/lib/ai/src/utils/oauth/pkce.js +1 -0
  164. package/dist/core/lib/ai/src/utils/oauth/types.d.ts +52 -0
  165. package/dist/core/lib/ai/src/utils/oauth/types.js +0 -0
  166. package/dist/core/lib/ai/src/utils/overflow.d.ts +57 -0
  167. package/dist/core/lib/ai/src/utils/overflow.js +1 -0
  168. package/dist/core/lib/ai/src/utils/sanitize-unicode.d.ts +16 -0
  169. package/dist/core/lib/ai/src/utils/sanitize-unicode.js +1 -0
  170. package/dist/core/lib/ai/src/utils/typebox-helpers.d.ts +22 -0
  171. package/dist/core/lib/ai/src/utils/typebox-helpers.js +1 -0
  172. package/dist/core/lib/ai/src/utils/validation.d.ts +23 -0
  173. package/dist/core/lib/ai/src/utils/validation.js +6 -0
  174. package/dist/core/lib/tui/src/autocomplete.d.ts +62 -0
  175. package/dist/core/lib/tui/src/autocomplete.js +2 -0
  176. package/dist/core/lib/tui/src/components/box.d.ts +27 -0
  177. package/dist/core/lib/tui/src/components/box.js +1 -0
  178. package/dist/core/lib/tui/src/components/cached-container.d.ts +42 -0
  179. package/dist/core/lib/tui/src/components/cached-container.js +1 -0
  180. package/dist/core/lib/tui/src/components/cancellable-loader.d.ts +27 -0
  181. package/dist/core/lib/tui/src/components/cancellable-loader.js +1 -0
  182. package/dist/core/lib/tui/src/components/editor.d.ts +222 -0
  183. package/dist/core/lib/tui/src/components/editor.js +21 -0
  184. package/dist/core/lib/tui/src/components/image.d.ts +33 -0
  185. package/dist/core/lib/tui/src/components/image.js +1 -0
  186. package/dist/core/lib/tui/src/components/input.d.ts +42 -0
  187. package/dist/core/lib/tui/src/components/input.js +2 -0
  188. package/dist/core/lib/tui/src/components/loader.d.ts +26 -0
  189. package/dist/core/lib/tui/src/components/loader.js +1 -0
  190. package/dist/core/lib/tui/src/components/markdown.d.ts +100 -0
  191. package/dist/core/lib/tui/src/components/markdown.js +7 -0
  192. package/dist/core/lib/tui/src/components/select-list.d.ts +37 -0
  193. package/dist/core/lib/tui/src/components/select-list.js +1 -0
  194. package/dist/core/lib/tui/src/components/settings-list.d.ts +55 -0
  195. package/dist/core/lib/tui/src/components/settings-list.js +1 -0
  196. package/dist/core/lib/tui/src/components/spacer.d.ts +17 -0
  197. package/dist/core/lib/tui/src/components/spacer.js +1 -0
  198. package/dist/core/lib/tui/src/components/text.d.ts +24 -0
  199. package/dist/core/lib/tui/src/components/text.js +1 -0
  200. package/dist/core/lib/tui/src/components/truncated-text.d.ts +18 -0
  201. package/dist/core/lib/tui/src/components/truncated-text.js +2 -0
  202. package/dist/core/lib/tui/src/editor-component.d.ts +51 -0
  203. package/dist/core/lib/tui/src/editor-component.js +0 -0
  204. package/dist/core/lib/tui/src/fuzzy.d.ts +32 -0
  205. package/dist/core/lib/tui/src/fuzzy.js +1 -0
  206. package/dist/core/lib/tui/src/index.d.ts +29 -0
  207. package/dist/core/lib/tui/src/index.js +1 -0
  208. package/dist/core/lib/tui/src/keybindings.d.ts +44 -0
  209. package/dist/core/lib/tui/src/keybindings.js +1 -0
  210. package/dist/core/lib/tui/src/keys.d.ts +149 -0
  211. package/dist/core/lib/tui/src/keys.js +5 -0
  212. package/dist/core/lib/tui/src/kill-ring.d.ts +33 -0
  213. package/dist/core/lib/tui/src/kill-ring.js +1 -0
  214. package/dist/core/lib/tui/src/stdin-buffer.d.ts +38 -0
  215. package/dist/core/lib/tui/src/stdin-buffer.js +1 -0
  216. package/dist/core/lib/tui/src/terminal-image.d.ts +73 -0
  217. package/dist/core/lib/tui/src/terminal-image.js +1 -0
  218. package/dist/core/lib/tui/src/terminal.d.ts +86 -0
  219. package/dist/core/lib/tui/src/terminal.js +1 -0
  220. package/dist/core/lib/tui/src/tui.d.ts +220 -0
  221. package/dist/core/lib/tui/src/tui.js +12 -0
  222. package/dist/core/lib/tui/src/undo-stack.d.ts +22 -0
  223. package/dist/core/lib/tui/src/undo-stack.js +1 -0
  224. package/dist/core/lib/tui/src/utils.d.ts +83 -0
  225. package/dist/core/lib/tui/src/utils.js +2 -0
  226. package/dist/core/mcp/figma-auth.d.ts +21 -0
  227. package/dist/core/mcp/figma-auth.js +22 -0
  228. package/dist/core/mcp/index.d.ts +11 -0
  229. package/dist/core/mcp/index.js +1 -0
  230. package/dist/core/mcp/mcp-adapter.d.ts +21 -0
  231. package/dist/core/mcp/mcp-adapter.js +3 -0
  232. package/dist/core/mcp/mcp-client.d.ts +91 -0
  233. package/dist/core/mcp/mcp-client.js +6 -0
  234. package/dist/core/mcp/mcp-config.d.ts +55 -0
  235. package/dist/core/mcp/mcp-config.js +1 -0
  236. package/dist/core/mcp/mcp-guidance.d.ts +52 -0
  237. package/dist/core/mcp/mcp-guidance.js +54 -0
  238. package/dist/core/mcp/mcp-manager.d.ts +51 -0
  239. package/dist/core/mcp/mcp-manager.js +1 -0
  240. package/dist/core/mcp/mcp-types.d.ts +62 -0
  241. package/dist/core/mcp/mcp-types.js +0 -0
  242. package/dist/core/messages.d.ts +77 -0
  243. package/dist/core/messages.js +17 -0
  244. package/dist/core/model/custom-providers.d.ts +34 -0
  245. package/dist/core/model/custom-providers.js +1 -0
  246. package/dist/core/model/discovery-cache.d.ts +65 -0
  247. package/dist/core/model/discovery-cache.js +1 -0
  248. package/dist/core/model/discovery-cache.test.d.ts +7 -0
  249. package/dist/core/model/discovery-cache.test.js +1 -0
  250. package/dist/core/model/discovery.d.ts +79 -0
  251. package/dist/core/model/discovery.js +1 -0
  252. package/dist/core/model/discovery.test.d.ts +7 -0
  253. package/dist/core/model/discovery.test.js +1 -0
  254. package/dist/core/model/index.d.ts +10 -0
  255. package/dist/core/model/index.js +1 -0
  256. package/dist/core/model/known-models.d.ts +65 -0
  257. package/dist/core/model/known-models.generated.d.ts +2 -0
  258. package/dist/core/model/known-models.generated.js +1 -0
  259. package/dist/core/model/known-models.js +1 -0
  260. package/dist/core/model/switcher.d.ts +80 -0
  261. package/dist/core/model/switcher.js +1 -0
  262. package/dist/core/model-registry.d.ts +186 -0
  263. package/dist/core/model-registry.js +9 -0
  264. package/dist/core/model-resolver.d.ts +106 -0
  265. package/dist/core/model-resolver.js +1 -0
  266. package/dist/core/package-manager.d.ts +156 -0
  267. package/dist/core/package-manager.js +3 -0
  268. package/dist/core/persona/persona-manager.d.ts +35 -0
  269. package/dist/core/persona/persona-manager.js +5 -0
  270. package/dist/core/platform/abort-slot.d.ts +26 -0
  271. package/dist/core/platform/abort-slot.js +1 -0
  272. package/dist/core/platform/config/auth-storage.d.ts +126 -0
  273. package/dist/core/platform/config/auth-storage.js +1 -0
  274. package/dist/core/platform/config/defaults.d.ts +8 -0
  275. package/dist/core/platform/config/defaults.js +1 -0
  276. package/dist/core/platform/config/diagnostics.d.ts +20 -0
  277. package/dist/core/platform/config/diagnostics.js +0 -0
  278. package/dist/core/platform/config/resolve-config-value.d.ts +12 -0
  279. package/dist/core/platform/config/resolve-config-value.js +1 -0
  280. package/dist/core/platform/config/resource-loader.d.ts +188 -0
  281. package/dist/core/platform/config/resource-loader.js +2 -0
  282. package/dist/core/platform/config/settings-manager.d.ts +314 -0
  283. package/dist/core/platform/config/settings-manager.js +1 -0
  284. package/dist/core/platform/exec/bash-executor.d.ts +41 -0
  285. package/dist/core/platform/exec/bash-executor.js +1 -0
  286. package/dist/core/platform/exec/exec.d.ts +25 -0
  287. package/dist/core/platform/exec/exec.js +1 -0
  288. package/dist/core/platform/i18n/index.d.ts +26 -0
  289. package/dist/core/platform/i18n/index.js +1 -0
  290. package/dist/core/platform/i18n/messages.d.ts +56 -0
  291. package/dist/core/platform/i18n/messages.js +1 -0
  292. package/dist/core/platform/i18n/messages.zh.d.ts +56 -0
  293. package/dist/core/platform/i18n/messages.zh.js +1 -0
  294. package/dist/core/platform/i18n/slash-commands.d.ts +53 -0
  295. package/dist/core/platform/i18n/slash-commands.js +1 -0
  296. package/dist/core/platform/i18n/slash-commands.zh.d.ts +53 -0
  297. package/dist/core/platform/i18n/slash-commands.zh.js +1 -0
  298. package/dist/core/platform/i18n/themes.d.ts +11 -0
  299. package/dist/core/platform/i18n/themes.js +1 -0
  300. package/dist/core/platform/i18n/themes.zh.d.ts +11 -0
  301. package/dist/core/platform/i18n/themes.zh.js +1 -0
  302. package/dist/core/platform/keybindings.d.ts +61 -0
  303. package/dist/core/platform/keybindings.js +1 -0
  304. package/dist/core/platform/listeners.d.ts +21 -0
  305. package/dist/core/platform/listeners.js +1 -0
  306. package/dist/core/platform/telemetry/batching-dispatcher.d.ts +41 -0
  307. package/dist/core/platform/telemetry/batching-dispatcher.js +1 -0
  308. package/dist/core/platform/telemetry/build-meta.d.ts +12 -0
  309. package/dist/core/platform/telemetry/build-meta.js +1 -0
  310. package/dist/core/platform/telemetry/caller-context.d.ts +32 -0
  311. package/dist/core/platform/telemetry/caller-context.js +1 -0
  312. package/dist/core/platform/telemetry/credentials.d.ts +27 -0
  313. package/dist/core/platform/telemetry/credentials.js +1 -0
  314. package/dist/core/platform/telemetry/ext-events.d.ts +89 -0
  315. package/dist/core/platform/telemetry/ext-events.js +1 -0
  316. package/dist/core/platform/telemetry/index.d.ts +13 -0
  317. package/dist/core/platform/telemetry/index.js +1 -0
  318. package/dist/core/platform/telemetry/insforge-base.d.ts +37 -0
  319. package/dist/core/platform/telemetry/insforge-base.js +1 -0
  320. package/dist/core/platform/telemetry/types.d.ts +33 -0
  321. package/dist/core/platform/telemetry/types.js +0 -0
  322. package/dist/core/platform/timings.d.ts +2 -0
  323. package/dist/core/platform/timings.js +3 -0
  324. package/dist/core/platform/utils/logger.d.ts +75 -0
  325. package/dist/core/platform/utils/logger.js +1 -0
  326. package/dist/core/platform/utils/shell.d.ts +25 -0
  327. package/dist/core/platform/utils/shell.js +9 -0
  328. package/dist/core/platform/utils/sleep.d.ts +7 -0
  329. package/dist/core/platform/utils/sleep.js +1 -0
  330. package/dist/core/platform/utils/tools-manager.d.ts +19 -0
  331. package/dist/core/platform/utils/tools-manager.js +1 -0
  332. package/dist/core/prompt/prompt-templates.d.ts +49 -0
  333. package/dist/core/prompt/prompt-templates.js +2 -0
  334. package/dist/core/prompt/system-prompt.d.ts +24 -0
  335. package/dist/core/prompt/system-prompt.js +139 -0
  336. package/dist/core/runtime/agent-session.d.ts +676 -0
  337. package/dist/core/runtime/agent-session.js +15 -0
  338. package/dist/core/runtime/bash-runner.d.ts +56 -0
  339. package/dist/core/runtime/bash-runner.js +2 -0
  340. package/dist/core/runtime/catui-agent.d.ts +182 -0
  341. package/dist/core/runtime/catui-agent.js +1 -0
  342. package/dist/core/runtime/compaction-controller.d.ts +43 -0
  343. package/dist/core/runtime/compaction-controller.js +1 -0
  344. package/dist/core/runtime/default-tools.d.ts +9 -0
  345. package/dist/core/runtime/default-tools.js +1 -0
  346. package/dist/core/runtime/event-bridge.d.ts +21 -0
  347. package/dist/core/runtime/event-bridge.js +1 -0
  348. package/dist/core/runtime/event-bus.d.ts +8 -0
  349. package/dist/core/runtime/event-bus.js +1 -0
  350. package/dist/core/runtime/export-bridge.d.ts +23 -0
  351. package/dist/core/runtime/export-bridge.js +1 -0
  352. package/dist/core/runtime/extension-core-bindings.d.ts +46 -0
  353. package/dist/core/runtime/extension-core-bindings.js +3 -0
  354. package/dist/core/runtime/model-controller.d.ts +84 -0
  355. package/dist/core/runtime/model-controller.js +1 -0
  356. package/dist/core/runtime/model-cycle.d.ts +20 -0
  357. package/dist/core/runtime/model-cycle.js +1 -0
  358. package/dist/core/runtime/prompt-assembly.d.ts +20 -0
  359. package/dist/core/runtime/prompt-assembly.js +3 -0
  360. package/dist/core/runtime/retry-coordinator.d.ts +84 -0
  361. package/dist/core/runtime/retry-coordinator.js +1 -0
  362. package/dist/core/runtime/sdk.d.ts +163 -0
  363. package/dist/core/runtime/sdk.js +1 -0
  364. package/dist/core/runtime/session-context.d.ts +155 -0
  365. package/dist/core/runtime/session-context.js +0 -0
  366. package/dist/core/runtime/session-lifecycle-controller.d.ts +42 -0
  367. package/dist/core/runtime/session-lifecycle-controller.js +1 -0
  368. package/dist/core/runtime/session-tree-controller.d.ts +40 -0
  369. package/dist/core/runtime/session-tree-controller.js +1 -0
  370. package/dist/core/runtime/slash-command-catalog.d.ts +27 -0
  371. package/dist/core/runtime/slash-command-catalog.js +1 -0
  372. package/dist/core/runtime/thinking-levels.d.ts +31 -0
  373. package/dist/core/runtime/thinking-levels.js +1 -0
  374. package/dist/core/runtime/tool-runtime-controller.d.ts +35 -0
  375. package/dist/core/runtime/tool-runtime-controller.js +1 -0
  376. package/dist/core/runtime/turn-context.d.ts +52 -0
  377. package/dist/core/runtime/turn-context.js +1 -0
  378. package/dist/core/session/compaction/branch-summarization.d.ts +85 -0
  379. package/dist/core/session/compaction/branch-summarization.js +38 -0
  380. package/dist/core/session/compaction/compaction.d.ts +120 -0
  381. package/dist/core/session/compaction/compaction.js +104 -0
  382. package/dist/core/session/compaction/index.d.ts +9 -0
  383. package/dist/core/session/compaction/index.js +1 -0
  384. package/dist/core/session/compaction/utils.d.ts +37 -0
  385. package/dist/core/session/compaction/utils.js +17 -0
  386. package/dist/core/session/session-manager.d.ts +359 -0
  387. package/dist/core/session/session-manager.js +14 -0
  388. package/dist/core/skills.d.ts +57 -0
  389. package/dist/core/skills.js +4 -0
  390. package/dist/core/slash-commands.d.ts +36 -0
  391. package/dist/core/slash-commands.js +1 -0
  392. package/dist/core/soul-integration.d.ts +77 -0
  393. package/dist/core/soul-integration.js +1 -0
  394. package/dist/core/soul-options-contract.d.ts +10 -0
  395. package/dist/core/soul-options-contract.js +0 -0
  396. package/dist/core/sub-agent/agent-definition-loader.d.ts +96 -0
  397. package/dist/core/sub-agent/agent-definition-loader.js +2 -0
  398. package/dist/core/sub-agent/agent-definition.d.ts +162 -0
  399. package/dist/core/sub-agent/agent-definition.js +6 -0
  400. package/dist/core/sub-agent/agent-handoff-safety.d.ts +39 -0
  401. package/dist/core/sub-agent/agent-handoff-safety.js +1 -0
  402. package/dist/core/sub-agent/agent-input-output.d.ts +143 -0
  403. package/dist/core/sub-agent/agent-input-output.js +1 -0
  404. package/dist/core/sub-agent/agent-output-persistence.d.ts +43 -0
  405. package/dist/core/sub-agent/agent-output-persistence.js +3 -0
  406. package/dist/core/sub-agent/agent-prompt-builder.d.ts +37 -0
  407. package/dist/core/sub-agent/agent-prompt-builder.js +2 -0
  408. package/dist/core/sub-agent/agent-registry.d.ts +145 -0
  409. package/dist/core/sub-agent/agent-registry.js +1 -0
  410. package/dist/core/sub-agent/agent-result-extractor.d.ts +28 -0
  411. package/dist/core/sub-agent/agent-result-extractor.js +3 -0
  412. package/dist/core/sub-agent/agent-telemetry.d.ts +71 -0
  413. package/dist/core/sub-agent/agent-telemetry.js +1 -0
  414. package/dist/core/sub-agent/agent-tool-filter.d.ts +89 -0
  415. package/dist/core/sub-agent/agent-tool-filter.js +2 -0
  416. package/dist/core/sub-agent/agent-tool.d.ts +69 -0
  417. package/dist/core/sub-agent/agent-tool.js +11 -0
  418. package/dist/core/sub-agent/index.d.ts +26 -0
  419. package/dist/core/sub-agent/index.js +1 -0
  420. package/dist/core/sub-agent/send-message-tool.d.ts +33 -0
  421. package/dist/core/sub-agent/send-message-tool.js +2 -0
  422. package/dist/core/sub-agent/sub-agent-backend.d.ts +26 -0
  423. package/dist/core/sub-agent/sub-agent-backend.js +7 -0
  424. package/dist/core/sub-agent/sub-agent-runtime.d.ts +34 -0
  425. package/dist/core/sub-agent/sub-agent-runtime.js +1 -0
  426. package/dist/core/sub-agent/sub-agent-types.d.ts +138 -0
  427. package/dist/core/sub-agent/sub-agent-types.js +0 -0
  428. package/dist/core/sub-agent/subprocess-backend.d.ts +35 -0
  429. package/dist/core/sub-agent/subprocess-backend.js +1 -0
  430. package/dist/core/sub-agent/subprocess-worker.d.ts +12 -0
  431. package/dist/core/sub-agent/subprocess-worker.js +1 -0
  432. package/dist/core/theme-contract.d.ts +32 -0
  433. package/dist/core/theme-contract.js +0 -0
  434. package/dist/core/tools/bash.d.ts +73 -0
  435. package/dist/core/tools/bash.js +21 -0
  436. package/dist/core/tools/edit-diff.d.ts +58 -0
  437. package/dist/core/tools/edit-diff.js +16 -0
  438. package/dist/core/tools/edit.d.ts +46 -0
  439. package/dist/core/tools/edit.js +1 -0
  440. package/dist/core/tools/file-state-cache.d.ts +30 -0
  441. package/dist/core/tools/file-state-cache.js +1 -0
  442. package/dist/core/tools/find.d.ts +46 -0
  443. package/dist/core/tools/find.js +8 -0
  444. package/dist/core/tools/grep.d.ts +58 -0
  445. package/dist/core/tools/grep.js +13 -0
  446. package/dist/core/tools/index.d.ts +116 -0
  447. package/dist/core/tools/index.js +1 -0
  448. package/dist/core/tools/input-validation.d.ts +13 -0
  449. package/dist/core/tools/input-validation.js +1 -0
  450. package/dist/core/tools/ls.d.ts +45 -0
  451. package/dist/core/tools/ls.js +4 -0
  452. package/dist/core/tools/orchestrator.d.ts +76 -0
  453. package/dist/core/tools/orchestrator.js +1 -0
  454. package/dist/core/tools/path-utils.d.ts +7 -0
  455. package/dist/core/tools/path-utils.js +1 -0
  456. package/dist/core/tools/pdf-extract.d.ts +11 -0
  457. package/dist/core/tools/pdf-extract.js +1 -0
  458. package/dist/core/tools/read.d.ts +46 -0
  459. package/dist/core/tools/read.js +11 -0
  460. package/dist/core/tools/source.d.ts +78 -0
  461. package/dist/core/tools/source.js +1 -0
  462. package/dist/core/tools/time.d.ts +19 -0
  463. package/dist/core/tools/time.js +2 -0
  464. package/dist/core/tools/truncate.d.ts +66 -0
  465. package/dist/core/tools/truncate.js +5 -0
  466. package/dist/core/tools/write-guard.d.ts +2 -0
  467. package/dist/core/tools/write-guard.js +1 -0
  468. package/dist/core/tools/write.d.ts +36 -0
  469. package/dist/core/tools/write.js +1 -0
  470. package/dist/core/workspace/index.d.ts +8 -0
  471. package/dist/core/workspace/index.js +1 -0
  472. package/dist/core/workspace/worktree-manager.d.ts +73 -0
  473. package/dist/core/workspace/worktree-manager.js +3 -0
  474. package/dist/extensions/builtin/AGENT.md +115 -0
  475. package/dist/extensions/builtin/ask-user-question/ask-user-question-tool.d.ts +9 -0
  476. package/dist/extensions/builtin/ask-user-question/ask-user-question-tool.js +4 -0
  477. package/dist/extensions/builtin/ask-user-question/index.d.ts +8 -0
  478. package/dist/extensions/builtin/ask-user-question/index.js +1 -0
  479. package/dist/extensions/builtin/ask-user-question/prompt.d.ts +14 -0
  480. package/dist/extensions/builtin/ask-user-question/prompt.js +30 -0
  481. package/dist/extensions/builtin/ask-user-question/types.d.ts +69 -0
  482. package/dist/extensions/builtin/ask-user-question/types.js +1 -0
  483. package/dist/extensions/builtin/browser/AGENT.md +17 -0
  484. package/dist/extensions/builtin/browser/agent-workspace/agent_helpers.py +12 -0
  485. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/amazon/product-search.md +198 -0
  486. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/archive-org/scraping.md +341 -0
  487. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv/scraping.md +311 -0
  488. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv-bulk/scraping.md +333 -0
  489. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/atlas/overview.md +70 -0
  490. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/booking-com/scraping.md +578 -0
  491. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/capterra/scraping.md +440 -0
  492. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/centilebrain/generate-estimates.md +110 -0
  493. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coingecko/scraping.md +325 -0
  494. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coinmarketcap/scraping.md +463 -0
  495. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coursera/scraping.md +360 -0
  496. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/craigslist/scraping.md +390 -0
  497. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/crossref/scraping.md +568 -0
  498. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/dev-to/scraping.md +323 -0
  499. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/duckduckgo/scraping.md +349 -0
  500. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/ebay/scraping.md +435 -0
  501. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/etsy/scraping.md +506 -0
  502. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/eventbrite/scraping.md +363 -0
  503. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/expedia/automation.md +168 -0
  504. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/groups.md +236 -0
  505. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/pages.md +295 -0
  506. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/framer/editor.md +108 -0
  507. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/fred/scraping.md +493 -0
  508. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/g2/scraping.md +580 -0
  509. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/genius/scraping.md +511 -0
  510. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/repo-actions.md +65 -0
  511. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/scraping.md +184 -0
  512. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/glassdoor/scraping.md +543 -0
  513. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gmail/compose.md +122 -0
  514. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/goodreads/scraping.md +461 -0
  515. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gutenberg/scraping.md +383 -0
  516. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/hackernews/scraping.md +243 -0
  517. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/howlongtobeat/scraping.md +473 -0
  518. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/imdb/scraping.md +271 -0
  519. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/itch-io/scraping.md +436 -0
  520. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/job-boards/indeed-glassdoor.md +1021 -0
  521. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/letterboxd/scraping.md +349 -0
  522. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/linkedin/invitation-manager.md +109 -0
  523. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/loom/folder-enumeration.md +170 -0
  524. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/macrotrends/scraping.md +537 -0
  525. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/article-hydration.md +120 -0
  526. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/scraping.md +414 -0
  527. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/metacritic/scraping.md +477 -0
  528. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/musicbrainz/scraping.md +478 -0
  529. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/nasa/scraping.md +339 -0
  530. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/news-aggregation/multi-source.md +205 -0
  531. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/open-library/scraping.md +472 -0
  532. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openalex/scraping.md +470 -0
  533. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openstreetmap/scraping.md +490 -0
  534. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/package-registries/npm-pypi.md +478 -0
  535. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/polymarket/scraping.md +234 -0
  536. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/producthunt/scraping.md +307 -0
  537. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/pubmed/scraping.md +421 -0
  538. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/quora/scraping.md +364 -0
  539. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rawg/scraping.md +352 -0
  540. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/reddit/scraping.md +124 -0
  541. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rest-countries/scraping.md +233 -0
  542. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/sec-edgar/scraping.md +361 -0
  543. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/README.md +36 -0
  544. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/embedded-apps.md +72 -0
  545. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/knowledge-base.md +109 -0
  546. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/polaris-inputs.md +137 -0
  547. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/soundcloud/scraping.md +362 -0
  548. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/spotify/scraping.md +339 -0
  549. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/stackoverflow/scraping.md +435 -0
  550. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/steam/scraping.md +575 -0
  551. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/substack/scraping.md +338 -0
  552. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/thetechgeeks/pricing.md +52 -0
  553. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tiktok/upload.md +107 -0
  554. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tradingview/scraping.md +309 -0
  555. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trello/boards-and-lists.md +88 -0
  556. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trustpilot/scraping.md +375 -0
  557. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/walmart/scraping.md +444 -0
  558. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wayback-machine/scraping.md +306 -0
  559. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/weather/scraping.md +398 -0
  560. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wellfound/scraping.md +596 -0
  561. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/world-bank/scraping.md +356 -0
  562. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/xiaohongshu/scraping.md +84 -0
  563. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/youtube/scraping.md +418 -0
  564. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/zillow/scraping.md +433 -0
  565. package/dist/extensions/builtin/browser/browser.md +73 -0
  566. package/dist/extensions/builtin/browser/index.d.ts +8 -0
  567. package/dist/extensions/builtin/browser/index.js +15 -0
  568. package/dist/extensions/builtin/browser/install.md +142 -0
  569. package/dist/extensions/builtin/browser/interaction-skills/connection.md +48 -0
  570. package/dist/extensions/builtin/browser/interaction-skills/cookies.md +3 -0
  571. package/dist/extensions/builtin/browser/interaction-skills/cross-origin-iframes.md +3 -0
  572. package/dist/extensions/builtin/browser/interaction-skills/dialogs.md +64 -0
  573. package/dist/extensions/builtin/browser/interaction-skills/downloads.md +3 -0
  574. package/dist/extensions/builtin/browser/interaction-skills/drag-and-drop.md +3 -0
  575. package/dist/extensions/builtin/browser/interaction-skills/dropdowns.md +3 -0
  576. package/dist/extensions/builtin/browser/interaction-skills/iframes.md +3 -0
  577. package/dist/extensions/builtin/browser/interaction-skills/network-requests.md +3 -0
  578. package/dist/extensions/builtin/browser/interaction-skills/print-as-pdf.md +3 -0
  579. package/dist/extensions/builtin/browser/interaction-skills/profile-sync.md +90 -0
  580. package/dist/extensions/builtin/browser/interaction-skills/screenshots.md +17 -0
  581. package/dist/extensions/builtin/browser/interaction-skills/scrolling.md +3 -0
  582. package/dist/extensions/builtin/browser/interaction-skills/shadow-dom.md +3 -0
  583. package/dist/extensions/builtin/browser/interaction-skills/tabs.md +69 -0
  584. package/dist/extensions/builtin/browser/interaction-skills/uploads.md +1 -0
  585. package/dist/extensions/builtin/browser/interaction-skills/viewport.md +3 -0
  586. package/dist/extensions/builtin/browser/src/browser_harness/AGENT.md +15 -0
  587. package/dist/extensions/builtin/browser/src/browser_harness/__init__.py +8 -0
  588. package/dist/extensions/builtin/browser/src/browser_harness/_ipc.py +90 -0
  589. package/dist/extensions/builtin/browser/src/browser_harness/admin.py +722 -0
  590. package/dist/extensions/builtin/browser/src/browser_harness/daemon.py +328 -0
  591. package/dist/extensions/builtin/browser/src/browser_harness/helpers.py +396 -0
  592. package/dist/extensions/builtin/browser/src/browser_harness/run.py +103 -0
  593. package/dist/extensions/builtin/btw/index.d.ts +8 -0
  594. package/dist/extensions/builtin/btw/index.js +15 -0
  595. package/dist/extensions/builtin/debug/collectors.d.ts +96 -0
  596. package/dist/extensions/builtin/debug/collectors.js +7 -0
  597. package/dist/extensions/builtin/debug/index.d.ts +8 -0
  598. package/dist/extensions/builtin/debug/index.js +49 -0
  599. package/dist/extensions/builtin/diagnostics/diagnostic-buffer.d.ts +19 -0
  600. package/dist/extensions/builtin/diagnostics/diagnostic-buffer.js +1 -0
  601. package/dist/extensions/builtin/diagnostics/index.d.ts +8 -0
  602. package/dist/extensions/builtin/diagnostics/index.js +1 -0
  603. package/dist/extensions/builtin/diagnostics/redaction.d.ts +8 -0
  604. package/dist/extensions/builtin/diagnostics/redaction.js +1 -0
  605. package/dist/extensions/builtin/diagnostics/reporter.d.ts +17 -0
  606. package/dist/extensions/builtin/diagnostics/reporter.js +1 -0
  607. package/dist/extensions/builtin/diagnostics/types.d.ts +62 -0
  608. package/dist/extensions/builtin/diagnostics/types.js +1 -0
  609. package/dist/extensions/builtin/discipline/index.d.ts +8 -0
  610. package/dist/extensions/builtin/discipline/index.js +7 -0
  611. package/dist/extensions/builtin/discipline/skills/brainstorming/SKILL.md +33 -0
  612. package/dist/extensions/builtin/discipline/skills/executing-plans/SKILL.md +25 -0
  613. package/dist/extensions/builtin/discipline/skills/finishing-development-branch/SKILL.md +25 -0
  614. package/dist/extensions/builtin/discipline/skills/receiving-code-review/SKILL.md +22 -0
  615. package/dist/extensions/builtin/discipline/skills/requesting-code-review/SKILL.md +31 -0
  616. package/dist/extensions/builtin/discipline/skills/systematic-debugging/SKILL.md +28 -0
  617. package/dist/extensions/builtin/discipline/skills/test-driven-development/SKILL.md +32 -0
  618. package/dist/extensions/builtin/discipline/skills/using-git-worktrees/SKILL.md +25 -0
  619. package/dist/extensions/builtin/discipline/skills/verification-before-completion/SKILL.md +27 -0
  620. package/dist/extensions/builtin/discipline/skills/writing-plans/SKILL.md +26 -0
  621. package/dist/extensions/builtin/goal/README.md +67 -0
  622. package/dist/extensions/builtin/goal/goal-command.d.ts +13 -0
  623. package/dist/extensions/builtin/goal/goal-command.js +9 -0
  624. package/dist/extensions/builtin/goal/goal-controller.d.ts +143 -0
  625. package/dist/extensions/builtin/goal/goal-controller.js +1 -0
  626. package/dist/extensions/builtin/goal/goal-format.d.ts +52 -0
  627. package/dist/extensions/builtin/goal/goal-format.js +1 -0
  628. package/dist/extensions/builtin/goal/goal-parser.d.ts +27 -0
  629. package/dist/extensions/builtin/goal/goal-parser.js +2 -0
  630. package/dist/extensions/builtin/goal/goal-prompts.d.ts +15 -0
  631. package/dist/extensions/builtin/goal/goal-prompts.js +5 -0
  632. package/dist/extensions/builtin/goal/goal-store.d.ts +28 -0
  633. package/dist/extensions/builtin/goal/goal-store.js +1 -0
  634. package/dist/extensions/builtin/goal/goal-tools.d.ts +26 -0
  635. package/dist/extensions/builtin/goal/goal-tools.js +3 -0
  636. package/dist/extensions/builtin/goal/goal-types.d.ts +87 -0
  637. package/dist/extensions/builtin/goal/goal-types.js +1 -0
  638. package/dist/extensions/builtin/goal/index.d.ts +8 -0
  639. package/dist/extensions/builtin/goal/index.js +10 -0
  640. package/dist/extensions/builtin/grub/README.md +112 -0
  641. package/dist/extensions/builtin/grub/grub-controller.d.ts +67 -0
  642. package/dist/extensions/builtin/grub/grub-controller.js +1 -0
  643. package/dist/extensions/builtin/grub/grub-decision.d.ts +8 -0
  644. package/dist/extensions/builtin/grub/grub-decision.js +1 -0
  645. package/dist/extensions/builtin/grub/grub-feature-list.d.ts +54 -0
  646. package/dist/extensions/builtin/grub/grub-feature-list.js +2 -0
  647. package/dist/extensions/builtin/grub/grub-format.d.ts +13 -0
  648. package/dist/extensions/builtin/grub/grub-format.js +4 -0
  649. package/dist/extensions/builtin/grub/grub-harness.d.ts +9 -0
  650. package/dist/extensions/builtin/grub/grub-harness.js +3 -0
  651. package/dist/extensions/builtin/grub/grub-i18n.d.ts +166 -0
  652. package/dist/extensions/builtin/grub/grub-i18n.js +1 -0
  653. package/dist/extensions/builtin/grub/grub-parser.d.ts +24 -0
  654. package/dist/extensions/builtin/grub/grub-parser.js +2 -0
  655. package/dist/extensions/builtin/grub/grub-persistence.d.ts +17 -0
  656. package/dist/extensions/builtin/grub/grub-persistence.js +2 -0
  657. package/dist/extensions/builtin/grub/grub-prompts.d.ts +12 -0
  658. package/dist/extensions/builtin/grub/grub-prompts.js +97 -0
  659. package/dist/extensions/builtin/grub/grub-turn.d.ts +16 -0
  660. package/dist/extensions/builtin/grub/grub-turn.js +1 -0
  661. package/dist/extensions/builtin/grub/grub-types.d.ts +110 -0
  662. package/dist/extensions/builtin/grub/grub-types.js +1 -0
  663. package/dist/extensions/builtin/grub/index.d.ts +8 -0
  664. package/dist/extensions/builtin/grub/index.js +6 -0
  665. package/dist/extensions/builtin/idle-think/curiosity.d.ts +46 -0
  666. package/dist/extensions/builtin/idle-think/curiosity.js +2 -0
  667. package/dist/extensions/builtin/idle-think/idle-think-runtime.d.ts +46 -0
  668. package/dist/extensions/builtin/idle-think/idle-think-runtime.js +1 -0
  669. package/dist/extensions/builtin/idle-think/index.d.ts +15 -0
  670. package/dist/extensions/builtin/idle-think/index.js +1 -0
  671. package/dist/extensions/builtin/idle-think/insights.d.ts +27 -0
  672. package/dist/extensions/builtin/idle-think/insights.js +5 -0
  673. package/dist/extensions/builtin/idle-think/thinker.d.ts +26 -0
  674. package/dist/extensions/builtin/idle-think/thinker.js +9 -0
  675. package/dist/extensions/builtin/insights/html-report.d.ts +21 -0
  676. package/dist/extensions/builtin/insights/html-report.js +463 -0
  677. package/dist/extensions/builtin/insights/index.d.ts +24 -0
  678. package/dist/extensions/builtin/insights/index.js +2 -0
  679. package/dist/extensions/builtin/insights/insights-engine.d.ts +18 -0
  680. package/dist/extensions/builtin/insights/insights-engine.js +39 -0
  681. package/dist/extensions/builtin/insights/prompts.d.ts +17 -0
  682. package/dist/extensions/builtin/insights/prompts.js +180 -0
  683. package/dist/extensions/builtin/insights/session-scanner.d.ts +27 -0
  684. package/dist/extensions/builtin/insights/session-scanner.js +19 -0
  685. package/dist/extensions/builtin/insights/stats.d.ts +13 -0
  686. package/dist/extensions/builtin/insights/stats.js +1 -0
  687. package/dist/extensions/builtin/insights/types.d.ts +199 -0
  688. package/dist/extensions/builtin/insights/types.js +0 -0
  689. package/dist/extensions/builtin/link-world/agent-workspace/README.md +16 -0
  690. package/dist/extensions/builtin/link-world/index.d.ts +8 -0
  691. package/dist/extensions/builtin/link-world/index.js +19 -0
  692. package/dist/extensions/builtin/link-world/internet-search/internet-search.md +65 -0
  693. package/dist/extensions/builtin/link-world/link-world-agent.md +82 -0
  694. package/dist/extensions/builtin/link-world/linkworld.md +313 -0
  695. package/dist/extensions/builtin/link-world/network-routing/network-routing.md +67 -0
  696. package/dist/extensions/builtin/loop/README.md +92 -0
  697. package/dist/extensions/builtin/loop/cron/cron-parser.d.ts +56 -0
  698. package/dist/extensions/builtin/loop/cron/cron-parser.js +1 -0
  699. package/dist/extensions/builtin/loop/cron/cron-scheduler.d.ts +85 -0
  700. package/dist/extensions/builtin/loop/cron/cron-scheduler.js +10 -0
  701. package/dist/extensions/builtin/loop/cron/cron-tasks-lock.d.ts +42 -0
  702. package/dist/extensions/builtin/loop/cron/cron-tasks-lock.js +1 -0
  703. package/dist/extensions/builtin/loop/cron/cron-tasks.d.ts +200 -0
  704. package/dist/extensions/builtin/loop/cron/cron-tasks.js +2 -0
  705. package/dist/extensions/builtin/loop/cron/index.d.ts +18 -0
  706. package/dist/extensions/builtin/loop/cron/index.js +1 -0
  707. package/dist/extensions/builtin/loop/cron-tools/cron-create-tool.d.ts +35 -0
  708. package/dist/extensions/builtin/loop/cron-tools/cron-create-tool.js +1 -0
  709. package/dist/extensions/builtin/loop/cron-tools/cron-delete-tool.d.ts +29 -0
  710. package/dist/extensions/builtin/loop/cron-tools/cron-delete-tool.js +1 -0
  711. package/dist/extensions/builtin/loop/cron-tools/cron-list-tool.d.ts +25 -0
  712. package/dist/extensions/builtin/loop/cron-tools/cron-list-tool.js +2 -0
  713. package/dist/extensions/builtin/loop/cron-tools/index.d.ts +16 -0
  714. package/dist/extensions/builtin/loop/cron-tools/index.js +1 -0
  715. package/dist/extensions/builtin/loop/cron-tools/prompt.d.ts +35 -0
  716. package/dist/extensions/builtin/loop/cron-tools/prompt.js +38 -0
  717. package/dist/extensions/builtin/loop/index.d.ts +19 -0
  718. package/dist/extensions/builtin/loop/index.js +2 -0
  719. package/dist/extensions/builtin/loop/loop-skill.d.ts +18 -0
  720. package/dist/extensions/builtin/loop/loop-skill.js +58 -0
  721. package/dist/extensions/builtin/lsp/index.d.ts +8 -0
  722. package/dist/extensions/builtin/lsp/index.js +1 -0
  723. package/dist/extensions/builtin/lsp/lsp-client.d.ts +22 -0
  724. package/dist/extensions/builtin/lsp/lsp-client.js +1 -0
  725. package/dist/extensions/builtin/lsp/lsp-config.d.ts +8 -0
  726. package/dist/extensions/builtin/lsp/lsp-config.js +1 -0
  727. package/dist/extensions/builtin/lsp/lsp-formatters.d.ts +15 -0
  728. package/dist/extensions/builtin/lsp/lsp-formatters.js +18 -0
  729. package/dist/extensions/builtin/lsp/lsp-server-instance.d.ts +24 -0
  730. package/dist/extensions/builtin/lsp/lsp-server-instance.js +1 -0
  731. package/dist/extensions/builtin/lsp/lsp-server-manager.d.ts +21 -0
  732. package/dist/extensions/builtin/lsp/lsp-server-manager.js +1 -0
  733. package/dist/extensions/builtin/lsp/lsp-tool.d.ts +33 -0
  734. package/dist/extensions/builtin/lsp/lsp-tool.js +2 -0
  735. package/dist/extensions/builtin/lsp/types.d.ts +31 -0
  736. package/dist/extensions/builtin/lsp/types.js +1 -0
  737. package/dist/extensions/builtin/mcp/figma-design.md +68 -0
  738. package/dist/extensions/builtin/mcp/index.d.ts +14 -0
  739. package/dist/extensions/builtin/mcp/index.js +25 -0
  740. package/dist/extensions/builtin/mcp/mcp-management.md +85 -0
  741. package/dist/extensions/builtin/plan/clear-context-state.d.ts +8 -0
  742. package/dist/extensions/builtin/plan/clear-context-state.js +1 -0
  743. package/dist/extensions/builtin/plan/enter-plan-mode-tool.d.ts +11 -0
  744. package/dist/extensions/builtin/plan/enter-plan-mode-tool.js +2 -0
  745. package/dist/extensions/builtin/plan/exit-plan-mode-tool.d.ts +18 -0
  746. package/dist/extensions/builtin/plan/exit-plan-mode-tool.js +13 -0
  747. package/dist/extensions/builtin/plan/index.d.ts +8 -0
  748. package/dist/extensions/builtin/plan/index.js +24 -0
  749. package/dist/extensions/builtin/plan/plan-agents.d.ts +23 -0
  750. package/dist/extensions/builtin/plan/plan-agents.js +43 -0
  751. package/dist/extensions/builtin/plan/plan-file-manager.d.ts +26 -0
  752. package/dist/extensions/builtin/plan/plan-file-manager.js +1 -0
  753. package/dist/extensions/builtin/plan/plan-permissions.d.ts +15 -0
  754. package/dist/extensions/builtin/plan/plan-permissions.js +12 -0
  755. package/dist/extensions/builtin/plan/plan-validation.d.ts +18 -0
  756. package/dist/extensions/builtin/plan/plan-validation.js +5 -0
  757. package/dist/extensions/builtin/plan/plan-workflow-prompt.d.ts +18 -0
  758. package/dist/extensions/builtin/plan/plan-workflow-prompt.js +102 -0
  759. package/dist/extensions/builtin/plan/teammate-approval.d.ts +49 -0
  760. package/dist/extensions/builtin/plan/teammate-approval.js +3 -0
  761. package/dist/extensions/builtin/plan/types.d.ts +133 -0
  762. package/dist/extensions/builtin/plan/types.js +1 -0
  763. package/dist/extensions/builtin/presence/index.d.ts +40 -0
  764. package/dist/extensions/builtin/presence/index.js +15 -0
  765. package/dist/extensions/builtin/presence/presence-memory.d.ts +47 -0
  766. package/dist/extensions/builtin/presence/presence-memory.js +1 -0
  767. package/dist/extensions/builtin/recap/AGENT.md +15 -0
  768. package/dist/extensions/builtin/recap/index.d.ts +8 -0
  769. package/dist/extensions/builtin/recap/index.js +1 -0
  770. package/dist/extensions/builtin/recap/recap-budget.d.ts +24 -0
  771. package/dist/extensions/builtin/recap/recap-budget.js +1 -0
  772. package/dist/extensions/builtin/recap/recap-extractor.d.ts +34 -0
  773. package/dist/extensions/builtin/recap/recap-extractor.js +3 -0
  774. package/dist/extensions/builtin/recap/recap-renderer.d.ts +19 -0
  775. package/dist/extensions/builtin/recap/recap-renderer.js +2 -0
  776. package/dist/extensions/builtin/recap/recap-synthesizer.d.ts +51 -0
  777. package/dist/extensions/builtin/recap/recap-synthesizer.js +19 -0
  778. package/dist/extensions/builtin/recap/recap-types.d.ts +40 -0
  779. package/dist/extensions/builtin/recap/recap-types.js +1 -0
  780. package/dist/extensions/builtin/sal/README.md +72 -0
  781. package/dist/extensions/builtin/sal/anchors.d.ts +46 -0
  782. package/dist/extensions/builtin/sal/anchors.js +1 -0
  783. package/dist/extensions/builtin/sal/eval/index.d.ts +18 -0
  784. package/dist/extensions/builtin/sal/eval/index.js +1 -0
  785. package/dist/extensions/builtin/sal/eval/insforge-sink.d.ts +30 -0
  786. package/dist/extensions/builtin/sal/eval/insforge-sink.js +1 -0
  787. package/dist/extensions/builtin/sal/eval/jsonl-sink.d.ts +27 -0
  788. package/dist/extensions/builtin/sal/eval/jsonl-sink.js +3 -0
  789. package/dist/extensions/builtin/sal/eval/noop-sink.d.ts +8 -0
  790. package/dist/extensions/builtin/sal/eval/noop-sink.js +1 -0
  791. package/dist/extensions/builtin/sal/eval/types.d.ts +60 -0
  792. package/dist/extensions/builtin/sal/eval/types.js +1 -0
  793. package/dist/extensions/builtin/sal/index.d.ts +12 -0
  794. package/dist/extensions/builtin/sal/index.js +7 -0
  795. package/dist/extensions/builtin/sal/sal-config.d.ts +46 -0
  796. package/dist/extensions/builtin/sal/sal-config.js +1 -0
  797. package/dist/extensions/builtin/sal/sal-context.d.ts +11 -0
  798. package/dist/extensions/builtin/sal/sal-context.js +2 -0
  799. package/dist/extensions/builtin/sal/sal-runtime.d.ts +72 -0
  800. package/dist/extensions/builtin/sal/sal-runtime.js +0 -0
  801. package/dist/extensions/builtin/sal/sal-trace.d.ts +11 -0
  802. package/dist/extensions/builtin/sal/sal-trace.js +1 -0
  803. package/dist/extensions/builtin/sal/terrain.d.ts +73 -0
  804. package/dist/extensions/builtin/sal/terrain.js +3 -0
  805. package/dist/extensions/builtin/sal/weights.d.ts +28 -0
  806. package/dist/extensions/builtin/sal/weights.js +1 -0
  807. package/dist/extensions/builtin/security-audit/README.md +289 -0
  808. package/dist/extensions/builtin/security-audit/engine/detector.d.ts +44 -0
  809. package/dist/extensions/builtin/security-audit/engine/detector.js +1 -0
  810. package/dist/extensions/builtin/security-audit/engine/interceptor.d.ts +61 -0
  811. package/dist/extensions/builtin/security-audit/engine/interceptor.js +27 -0
  812. package/dist/extensions/builtin/security-audit/engine/logger.d.ts +65 -0
  813. package/dist/extensions/builtin/security-audit/engine/logger.js +65 -0
  814. package/dist/extensions/builtin/security-audit/index.d.ts +13 -0
  815. package/dist/extensions/builtin/security-audit/index.js +49 -0
  816. package/dist/extensions/builtin/security-audit/interface.d.ts +167 -0
  817. package/dist/extensions/builtin/security-audit/interface.js +1 -0
  818. package/dist/extensions/builtin/soul/index.d.ts +13 -0
  819. package/dist/extensions/builtin/soul/index.js +1 -0
  820. package/dist/extensions/builtin/subagent/index.d.ts +8 -0
  821. package/dist/extensions/builtin/subagent/index.js +8 -0
  822. package/dist/extensions/builtin/subagent/subagent-parser.d.ts +30 -0
  823. package/dist/extensions/builtin/subagent/subagent-parser.js +15 -0
  824. package/dist/extensions/builtin/subagent/subagent-runner.d.ts +49 -0
  825. package/dist/extensions/builtin/subagent/subagent-runner.js +8 -0
  826. package/dist/extensions/builtin/subagent/subagent-types.d.ts +57 -0
  827. package/dist/extensions/builtin/subagent/subagent-types.js +0 -0
  828. package/dist/extensions/builtin/task/index.d.ts +8 -0
  829. package/dist/extensions/builtin/task/index.js +1 -0
  830. package/dist/extensions/builtin/task/task-store.d.ts +42 -0
  831. package/dist/extensions/builtin/task/task-store.js +1 -0
  832. package/dist/extensions/builtin/task/task-tools/task-create-tool.d.ts +37 -0
  833. package/dist/extensions/builtin/task/task-tools/task-create-tool.js +40 -0
  834. package/dist/extensions/builtin/task/task-tools/task-get-tool.d.ts +31 -0
  835. package/dist/extensions/builtin/task/task-tools/task-get-tool.js +23 -0
  836. package/dist/extensions/builtin/task/task-tools/task-list-tool.d.ts +27 -0
  837. package/dist/extensions/builtin/task/task-tools/task-list-tool.js +22 -0
  838. package/dist/extensions/builtin/task/task-tools/task-output-tool.d.ts +32 -0
  839. package/dist/extensions/builtin/task/task-tools/task-output-tool.js +10 -0
  840. package/dist/extensions/builtin/task/task-tools/task-stop-tool.d.ts +31 -0
  841. package/dist/extensions/builtin/task/task-tools/task-stop-tool.js +5 -0
  842. package/dist/extensions/builtin/task/task-tools/task-update-tool.d.ts +47 -0
  843. package/dist/extensions/builtin/task/task-tools/task-update-tool.js +77 -0
  844. package/dist/extensions/builtin/task/task-tools/tool-search-tool.d.ts +34 -0
  845. package/dist/extensions/builtin/task/task-tools/tool-search-tool.js +14 -0
  846. package/dist/extensions/builtin/task/task-types.d.ts +30 -0
  847. package/dist/extensions/builtin/task/task-types.js +1 -0
  848. package/dist/extensions/builtin/teach/README.md +197 -0
  849. package/dist/extensions/builtin/teach/index.d.ts +12 -0
  850. package/dist/extensions/builtin/teach/index.js +6 -0
  851. package/dist/extensions/builtin/teach/references/analogy-library.md +153 -0
  852. package/dist/extensions/builtin/teach/references/learning-paths.md +214 -0
  853. package/dist/extensions/builtin/teach/references/source-verification.md +268 -0
  854. package/dist/extensions/builtin/teach/references/teaching-template.md +237 -0
  855. package/dist/extensions/builtin/teach/teach-format.d.ts +35 -0
  856. package/dist/extensions/builtin/teach/teach-format.js +6 -0
  857. package/dist/extensions/builtin/teach/teach-i18n.d.ts +47 -0
  858. package/dist/extensions/builtin/teach/teach-i18n.js +1 -0
  859. package/dist/extensions/builtin/teach/teach-persistence.d.ts +36 -0
  860. package/dist/extensions/builtin/teach/teach-persistence.js +35 -0
  861. package/dist/extensions/builtin/teach/teach-prompts.d.ts +52 -0
  862. package/dist/extensions/builtin/teach/teach-prompts.js +35 -0
  863. package/dist/extensions/builtin/teach/teach-runtime.d.ts +93 -0
  864. package/dist/extensions/builtin/teach/teach-runtime.js +9 -0
  865. package/dist/extensions/builtin/teach/teach-types.d.ts +81 -0
  866. package/dist/extensions/builtin/teach/teach-types.js +0 -0
  867. package/dist/extensions/builtin/team/AGENT.md +112 -0
  868. package/dist/extensions/builtin/team/TESTING.md +299 -0
  869. package/dist/extensions/builtin/team/index.d.ts +26 -0
  870. package/dist/extensions/builtin/team/index.js +11 -0
  871. package/dist/extensions/builtin/team/team-dashboard.d.ts +13 -0
  872. package/dist/extensions/builtin/team/team-dashboard.js +1 -0
  873. package/dist/extensions/builtin/team/team-harness.d.ts +35 -0
  874. package/dist/extensions/builtin/team/team-harness.js +18 -0
  875. package/dist/extensions/builtin/team/team-mailbox.d.ts +50 -0
  876. package/dist/extensions/builtin/team/team-mailbox.js +4 -0
  877. package/dist/extensions/builtin/team/team-orchestrator.d.ts +39 -0
  878. package/dist/extensions/builtin/team/team-orchestrator.js +5 -0
  879. package/dist/extensions/builtin/team/team-parser.d.ts +84 -0
  880. package/dist/extensions/builtin/team/team-parser.js +38 -0
  881. package/dist/extensions/builtin/team/team-permissions.d.ts +63 -0
  882. package/dist/extensions/builtin/team/team-permissions.js +1 -0
  883. package/dist/extensions/builtin/team/team-presets.d.ts +45 -0
  884. package/dist/extensions/builtin/team/team-presets.js +2 -0
  885. package/dist/extensions/builtin/team/team-psyche.d.ts +14 -0
  886. package/dist/extensions/builtin/team/team-psyche.js +5 -0
  887. package/dist/extensions/builtin/team/team-runtime-helpers.d.ts +48 -0
  888. package/dist/extensions/builtin/team/team-runtime-helpers.js +2 -0
  889. package/dist/extensions/builtin/team/team-runtime.d.ts +91 -0
  890. package/dist/extensions/builtin/team/team-runtime.js +3 -0
  891. package/dist/extensions/builtin/team/team-state-store.d.ts +29 -0
  892. package/dist/extensions/builtin/team/team-state-store.js +2 -0
  893. package/dist/extensions/builtin/team/team-task-store.d.ts +35 -0
  894. package/dist/extensions/builtin/team/team-task-store.js +2 -0
  895. package/dist/extensions/builtin/team/team-transcript.d.ts +31 -0
  896. package/dist/extensions/builtin/team/team-transcript.js +2 -0
  897. package/dist/extensions/builtin/team/team-types.d.ts +250 -0
  898. package/dist/extensions/builtin/team/team-types.js +0 -0
  899. package/dist/extensions/builtin/team/team-ui.d.ts +50 -0
  900. package/dist/extensions/builtin/team/team-ui.js +2 -0
  901. package/dist/extensions/builtin/token-save/README.md +56 -0
  902. package/dist/extensions/builtin/token-save/config.d.ts +8 -0
  903. package/dist/extensions/builtin/token-save/config.js +1 -0
  904. package/dist/extensions/builtin/token-save/filters.d.ts +14 -0
  905. package/dist/extensions/builtin/token-save/filters.js +24 -0
  906. package/dist/extensions/builtin/token-save/index.d.ts +8 -0
  907. package/dist/extensions/builtin/token-save/index.js +4 -0
  908. package/dist/extensions/builtin/token-save/lexer.d.ts +11 -0
  909. package/dist/extensions/builtin/token-save/lexer.js +1 -0
  910. package/dist/extensions/builtin/token-save/recovery.d.ts +1 -0
  911. package/dist/extensions/builtin/token-save/recovery.js +1 -0
  912. package/dist/extensions/builtin/token-save/rewrite.d.ts +19 -0
  913. package/dist/extensions/builtin/token-save/rewrite.js +1 -0
  914. package/dist/extensions/builtin/token-save/runner.d.ts +14 -0
  915. package/dist/extensions/builtin/token-save/runner.js +3 -0
  916. package/dist/extensions/builtin/token-save/stream.d.ts +20 -0
  917. package/dist/extensions/builtin/token-save/stream.js +1 -0
  918. package/dist/extensions/builtin/token-save/toml-dsl.d.ts +25 -0
  919. package/dist/extensions/builtin/token-save/toml-dsl.js +3 -0
  920. package/dist/extensions/builtin/token-save/tracking.d.ts +24 -0
  921. package/dist/extensions/builtin/token-save/tracking.js +8 -0
  922. package/dist/extensions/optional/AGENT.md +11 -0
  923. package/dist/extensions/optional/export-html/index.d.ts +41 -0
  924. package/dist/extensions/optional/export-html/index.js +2 -0
  925. package/dist/extensions/optional/simplify/index.d.ts +35 -0
  926. package/dist/extensions/optional/simplify/index.js +77 -0
  927. package/dist/index.d.ts +9 -0
  928. package/dist/index.js +1 -0
  929. package/dist/main.d.ts +7 -0
  930. package/dist/main.js +41 -0
  931. package/dist/migrations.d.ts +30 -0
  932. package/dist/migrations.js +4 -0
  933. package/dist/models.d.ts +7 -0
  934. package/dist/models.js +1 -0
  935. package/dist/modes/acp/acp-mode.d.ts +30 -0
  936. package/dist/modes/acp/acp-mode.js +25 -0
  937. package/dist/modes/index.d.ts +14 -0
  938. package/dist/modes/index.js +1 -0
  939. package/dist/modes/interactive/agent-loop-status.d.ts +8 -0
  940. package/dist/modes/interactive/agent-loop-status.js +1 -0
  941. package/dist/modes/interactive/components/apikey-input.d.ts +10 -0
  942. package/dist/modes/interactive/components/apikey-input.js +3 -0
  943. package/dist/modes/interactive/components/armin.d.ts +39 -0
  944. package/dist/modes/interactive/components/armin.js +1 -0
  945. package/dist/modes/interactive/components/assistant-message.d.ts +21 -0
  946. package/dist/modes/interactive/components/assistant-message.js +1 -0
  947. package/dist/modes/interactive/components/attachments-bar.d.ts +37 -0
  948. package/dist/modes/interactive/components/attachments-bar.js +1 -0
  949. package/dist/modes/interactive/components/bash-execution.d.ts +40 -0
  950. package/dist/modes/interactive/components/bash-execution.js +13 -0
  951. package/dist/modes/interactive/components/bordered-loader.d.ts +21 -0
  952. package/dist/modes/interactive/components/bordered-loader.js +1 -0
  953. package/dist/modes/interactive/components/branch-summary-message.d.ts +21 -0
  954. package/dist/modes/interactive/components/branch-summary-message.js +3 -0
  955. package/dist/modes/interactive/components/buddy/pet-sprites.d.ts +31 -0
  956. package/dist/modes/interactive/components/buddy/pet-sprites.js +1 -0
  957. package/dist/modes/interactive/components/catui-loader.d.ts +55 -0
  958. package/dist/modes/interactive/components/catui-loader.js +1 -0
  959. package/dist/modes/interactive/components/compaction-summary-message.d.ts +21 -0
  960. package/dist/modes/interactive/components/compaction-summary-message.js +3 -0
  961. package/dist/modes/interactive/components/config-selector.d.ts +76 -0
  962. package/dist/modes/interactive/components/config-selector.js +1 -0
  963. package/dist/modes/interactive/components/countdown-timer.d.ts +19 -0
  964. package/dist/modes/interactive/components/countdown-timer.js +1 -0
  965. package/dist/modes/interactive/components/custom-editor.d.ts +37 -0
  966. package/dist/modes/interactive/components/custom-editor.js +1 -0
  967. package/dist/modes/interactive/components/custom-message.d.ts +26 -0
  968. package/dist/modes/interactive/components/custom-message.js +2 -0
  969. package/dist/modes/interactive/components/daxnuts.d.ts +28 -0
  970. package/dist/modes/interactive/components/daxnuts.js +1 -0
  971. package/dist/modes/interactive/components/diff.d.ts +17 -0
  972. package/dist/modes/interactive/components/diff.js +3 -0
  973. package/dist/modes/interactive/components/dynamic-border.d.ts +20 -0
  974. package/dist/modes/interactive/components/dynamic-border.js +1 -0
  975. package/dist/modes/interactive/components/editor-buddy-layout.d.ts +17 -0
  976. package/dist/modes/interactive/components/editor-buddy-layout.js +1 -0
  977. package/dist/modes/interactive/components/extension-editor.d.ts +25 -0
  978. package/dist/modes/interactive/components/extension-editor.js +1 -0
  979. package/dist/modes/interactive/components/extension-input.d.ts +29 -0
  980. package/dist/modes/interactive/components/extension-input.js +2 -0
  981. package/dist/modes/interactive/components/extension-selector.d.ts +32 -0
  982. package/dist/modes/interactive/components/extension-selector.js +2 -0
  983. package/dist/modes/interactive/components/footer.d.ts +34 -0
  984. package/dist/modes/interactive/components/footer.js +1 -0
  985. package/dist/modes/interactive/components/index.d.ts +44 -0
  986. package/dist/modes/interactive/components/index.js +1 -0
  987. package/dist/modes/interactive/components/keybinding-hints.d.ts +46 -0
  988. package/dist/modes/interactive/components/keybinding-hints.js +1 -0
  989. package/dist/modes/interactive/components/login-dialog.d.ts +47 -0
  990. package/dist/modes/interactive/components/login-dialog.js +1 -0
  991. package/dist/modes/interactive/components/memory-stats.d.ts +14 -0
  992. package/dist/modes/interactive/components/memory-stats.js +2 -0
  993. package/dist/modes/interactive/components/model-selector.d.ts +59 -0
  994. package/dist/modes/interactive/components/model-selector.js +2 -0
  995. package/dist/modes/interactive/components/notification-queue.d.ts +49 -0
  996. package/dist/modes/interactive/components/notification-queue.js +1 -0
  997. package/dist/modes/interactive/components/oauth-selector.d.ts +30 -0
  998. package/dist/modes/interactive/components/oauth-selector.js +1 -0
  999. package/dist/modes/interactive/components/persona-selector.d.ts +24 -0
  1000. package/dist/modes/interactive/components/persona-selector.js +1 -0
  1001. package/dist/modes/interactive/components/plan-progress-panel.d.ts +24 -0
  1002. package/dist/modes/interactive/components/plan-progress-panel.js +1 -0
  1003. package/dist/modes/interactive/components/provider-selector.d.ts +25 -0
  1004. package/dist/modes/interactive/components/provider-selector.js +1 -0
  1005. package/dist/modes/interactive/components/raw-text.d.ts +19 -0
  1006. package/dist/modes/interactive/components/raw-text.js +3 -0
  1007. package/dist/modes/interactive/components/scoped-models-selector.d.ts +54 -0
  1008. package/dist/modes/interactive/components/scoped-models-selector.js +1 -0
  1009. package/dist/modes/interactive/components/session-selector-search.d.ts +28 -0
  1010. package/dist/modes/interactive/components/session-selector-search.js +1 -0
  1011. package/dist/modes/interactive/components/session-selector.d.ts +100 -0
  1012. package/dist/modes/interactive/components/session-selector.js +2 -0
  1013. package/dist/modes/interactive/components/settings-selector.d.ts +77 -0
  1014. package/dist/modes/interactive/components/settings-selector.js +1 -0
  1015. package/dist/modes/interactive/components/show-images-selector.d.ts +15 -0
  1016. package/dist/modes/interactive/components/show-images-selector.js +1 -0
  1017. package/dist/modes/interactive/components/skill-invocation-message.d.ts +22 -0
  1018. package/dist/modes/interactive/components/skill-invocation-message.js +3 -0
  1019. package/dist/modes/interactive/components/soul-stats.d.ts +15 -0
  1020. package/dist/modes/interactive/components/soul-stats.js +2 -0
  1021. package/dist/modes/interactive/components/sub-agent-panel.d.ts +24 -0
  1022. package/dist/modes/interactive/components/sub-agent-panel.js +1 -0
  1023. package/dist/modes/interactive/components/task-status-panel.d.ts +36 -0
  1024. package/dist/modes/interactive/components/task-status-panel.js +1 -0
  1025. package/dist/modes/interactive/components/theme-selector.d.ts +16 -0
  1026. package/dist/modes/interactive/components/theme-selector.js +1 -0
  1027. package/dist/modes/interactive/components/thinking-selector.d.ts +16 -0
  1028. package/dist/modes/interactive/components/thinking-selector.js +1 -0
  1029. package/dist/modes/interactive/components/tool-execution.d.ts +80 -0
  1030. package/dist/modes/interactive/components/tool-execution.js +58 -0
  1031. package/dist/modes/interactive/components/tree-selector.d.ts +73 -0
  1032. package/dist/modes/interactive/components/tree-selector.js +1 -0
  1033. package/dist/modes/interactive/components/user-message-selector.d.ts +35 -0
  1034. package/dist/modes/interactive/components/user-message-selector.js +1 -0
  1035. package/dist/modes/interactive/components/user-message.d.ts +13 -0
  1036. package/dist/modes/interactive/components/user-message.js +1 -0
  1037. package/dist/modes/interactive/components/visual-truncate.d.ts +29 -0
  1038. package/dist/modes/interactive/components/visual-truncate.js +1 -0
  1039. package/dist/modes/interactive/controllers/auth-provider-config-controller.d.ts +64 -0
  1040. package/dist/modes/interactive/controllers/auth-provider-config-controller.js +1 -0
  1041. package/dist/modes/interactive/controllers/extension-ui/custom-overlay-host.d.ts +38 -0
  1042. package/dist/modes/interactive/controllers/extension-ui/custom-overlay-host.js +1 -0
  1043. package/dist/modes/interactive/controllers/extension-ui/editor-component-adapter.d.ts +37 -0
  1044. package/dist/modes/interactive/controllers/extension-ui/editor-component-adapter.js +1 -0
  1045. package/dist/modes/interactive/controllers/extension-ui/persistent-surface-registry.d.ts +53 -0
  1046. package/dist/modes/interactive/controllers/extension-ui/persistent-surface-registry.js +1 -0
  1047. package/dist/modes/interactive/controllers/extension-ui/prompt-host.d.ts +52 -0
  1048. package/dist/modes/interactive/controllers/extension-ui/prompt-host.js +2 -0
  1049. package/dist/modes/interactive/controllers/image-pipeline-controller.d.ts +106 -0
  1050. package/dist/modes/interactive/controllers/image-pipeline-controller.js +1 -0
  1051. package/dist/modes/interactive/controllers/input-submit-controller.d.ts +80 -0
  1052. package/dist/modes/interactive/controllers/input-submit-controller.js +2 -0
  1053. package/dist/modes/interactive/controllers/interrupt-controller.d.ts +75 -0
  1054. package/dist/modes/interactive/controllers/interrupt-controller.js +1 -0
  1055. package/dist/modes/interactive/controllers/model-overlay-controller.d.ts +127 -0
  1056. package/dist/modes/interactive/controllers/model-overlay-controller.js +3 -0
  1057. package/dist/modes/interactive/controllers/self-update-controller.d.ts +71 -0
  1058. package/dist/modes/interactive/controllers/self-update-controller.js +24 -0
  1059. package/dist/modes/interactive/controllers/settings-overlay-controller.d.ts +56 -0
  1060. package/dist/modes/interactive/controllers/settings-overlay-controller.js +2 -0
  1061. package/dist/modes/interactive/controllers/slash-dispatcher-controller.d.ts +74 -0
  1062. package/dist/modes/interactive/controllers/slash-dispatcher-controller.js +1 -0
  1063. package/dist/modes/interactive/controllers/stream-render-controller.d.ts +110 -0
  1064. package/dist/modes/interactive/controllers/stream-render-controller.js +2 -0
  1065. package/dist/modes/interactive/controllers/tree-overlay-controller.d.ts +55 -0
  1066. package/dist/modes/interactive/controllers/tree-overlay-controller.js +1 -0
  1067. package/dist/modes/interactive/footer-data-provider.d.ts +32 -0
  1068. package/dist/modes/interactive/footer-data-provider.js +1 -0
  1069. package/dist/modes/interactive/interactive-mode.d.ts +303 -0
  1070. package/dist/modes/interactive/interactive-mode.js +119 -0
  1071. package/dist/modes/interactive/services/tips.d.ts +20 -0
  1072. package/dist/modes/interactive/services/tips.js +1 -0
  1073. package/dist/modes/interactive/slash-command-arguments.d.ts +28 -0
  1074. package/dist/modes/interactive/slash-command-arguments.js +1 -0
  1075. package/dist/modes/interactive/state/interactive-state.d.ts +74 -0
  1076. package/dist/modes/interactive/state/interactive-state.js +1 -0
  1077. package/dist/modes/interactive/theme/dark.json +85 -0
  1078. package/dist/modes/interactive/theme/light.json +84 -0
  1079. package/dist/modes/interactive/theme/theme-schema.json +335 -0
  1080. package/dist/modes/interactive/theme/theme.d.ts +81 -0
  1081. package/dist/modes/interactive/theme/theme.js +16 -0
  1082. package/dist/modes/interactive/theme/warm.json +81 -0
  1083. package/dist/modes/print-mode.d.ts +38 -0
  1084. package/dist/modes/print-mode.js +2 -0
  1085. package/dist/modes/rpc/rpc-client.d.ts +221 -0
  1086. package/dist/modes/rpc/rpc-client.js +2 -0
  1087. package/dist/modes/rpc/rpc-mode.d.ts +14 -0
  1088. package/dist/modes/rpc/rpc-mode.js +1 -0
  1089. package/dist/modes/rpc/rpc-types.d.ts +449 -0
  1090. package/dist/modes/rpc/rpc-types.js +0 -0
  1091. package/dist/modes/utils/agent-loop-result-format.d.ts +10 -0
  1092. package/dist/modes/utils/agent-loop-result-format.js +1 -0
  1093. package/dist/modes/utils/clipboard-image.d.ts +10 -0
  1094. package/dist/modes/utils/clipboard-image.js +1 -0
  1095. package/dist/modes/utils/clipboard-native.d.ts +11 -0
  1096. package/dist/modes/utils/clipboard-native.js +1 -0
  1097. package/dist/modes/utils/clipboard.d.ts +1 -0
  1098. package/dist/modes/utils/clipboard.js +1 -0
  1099. package/dist/modes/utils/image-convert.d.ts +8 -0
  1100. package/dist/modes/utils/image-convert.js +1 -0
  1101. package/dist/modes/utils/image-resize.d.ts +41 -0
  1102. package/dist/modes/utils/image-resize.js +1 -0
  1103. package/dist/node_modules/@catui/agent-core/dist/agent-loop-continuations.js +1 -0
  1104. package/dist/node_modules/@catui/agent-core/dist/agent-loop-stream-events.js +1 -0
  1105. package/dist/node_modules/@catui/agent-core/dist/agent-loop-tool-results.js +3 -0
  1106. package/dist/node_modules/@catui/agent-core/dist/agent-loop-tool-summaries.js +1 -0
  1107. package/dist/node_modules/@catui/agent-core/dist/agent-loop.js +4 -0
  1108. package/dist/node_modules/@catui/agent-core/dist/agent-run-result.js +1 -0
  1109. package/dist/node_modules/@catui/agent-core/dist/agent.js +1 -0
  1110. package/dist/node_modules/@catui/agent-core/dist/errors.js +1 -0
  1111. package/dist/node_modules/@catui/agent-core/dist/index.js +1 -0
  1112. package/dist/node_modules/@catui/agent-core/dist/proxy.js +2 -0
  1113. package/dist/node_modules/@catui/agent-core/dist/structured-adaptive-agent-loop.js +2 -0
  1114. package/dist/node_modules/@catui/agent-core/dist/structured-adaptive-streaming-tool-executor.js +1 -0
  1115. package/dist/node_modules/@catui/agent-core/dist/structured-adaptive-tool-orchestration.js +3 -0
  1116. package/dist/node_modules/@catui/agent-core/dist/types.js +1 -0
  1117. package/dist/node_modules/@catui/agent-core/package.json +28 -0
  1118. package/dist/node_modules/@catui/ai/dist/api-registry.js +1 -0
  1119. package/dist/node_modules/@catui/ai/dist/cli.js +21 -0
  1120. package/dist/node_modules/@catui/ai/dist/config-path.js +1 -0
  1121. package/dist/node_modules/@catui/ai/dist/debug-logger.js +4 -0
  1122. package/dist/node_modules/@catui/ai/dist/env-api-keys.js +1 -0
  1123. package/dist/node_modules/@catui/ai/dist/env.js +1 -0
  1124. package/dist/node_modules/@catui/ai/dist/events.js +1 -0
  1125. package/dist/node_modules/@catui/ai/dist/index.js +1 -0
  1126. package/dist/node_modules/@catui/ai/dist/json.js +1 -0
  1127. package/dist/node_modules/@catui/ai/dist/models.generated.js +1 -0
  1128. package/dist/node_modules/@catui/ai/dist/models.js +1 -0
  1129. package/dist/node_modules/@catui/ai/dist/overflow.js +1 -0
  1130. package/dist/node_modules/@catui/ai/dist/providers/amazon-bedrock.js +1 -0
  1131. package/dist/node_modules/@catui/ai/dist/providers/anthropic.js +2 -0
  1132. package/dist/node_modules/@catui/ai/dist/providers/azure-openai-responses.js +1 -0
  1133. package/dist/node_modules/@catui/ai/dist/providers/github-copilot-headers.js +1 -0
  1134. package/dist/node_modules/@catui/ai/dist/providers/google-gemini-cli.js +2 -0
  1135. package/dist/node_modules/@catui/ai/dist/providers/google-shared.js +2 -0
  1136. package/dist/node_modules/@catui/ai/dist/providers/google-vertex.js +1 -0
  1137. package/dist/node_modules/@catui/ai/dist/providers/google.js +1 -0
  1138. package/dist/node_modules/@catui/ai/dist/providers/openai-codex-responses.js +7 -0
  1139. package/dist/node_modules/@catui/ai/dist/providers/openai-completions.js +6 -0
  1140. package/dist/node_modules/@catui/ai/dist/providers/openai-responses-shared.js +10 -0
  1141. package/dist/node_modules/@catui/ai/dist/providers/openai-responses.js +1 -0
  1142. package/dist/node_modules/@catui/ai/dist/providers/register-builtins.js +1 -0
  1143. package/dist/node_modules/@catui/ai/dist/providers/simple-options.js +1 -0
  1144. package/dist/node_modules/@catui/ai/dist/providers/transform-messages.js +1 -0
  1145. package/dist/node_modules/@catui/ai/dist/registry.js +1 -0
  1146. package/dist/node_modules/@catui/ai/dist/schema.js +1 -0
  1147. package/dist/node_modules/@catui/ai/dist/stream.js +1 -0
  1148. package/dist/node_modules/@catui/ai/dist/types.js +0 -0
  1149. package/dist/node_modules/@catui/ai/dist/utils/event-stream-types.js +0 -0
  1150. package/dist/node_modules/@catui/ai/dist/utils/event-stream.js +1 -0
  1151. package/dist/node_modules/@catui/ai/dist/utils/http-proxy.js +1 -0
  1152. package/dist/node_modules/@catui/ai/dist/utils/json-parse.js +1 -0
  1153. package/dist/node_modules/@catui/ai/dist/utils/oauth/anthropic.js +1 -0
  1154. package/dist/node_modules/@catui/ai/dist/utils/oauth/decode-credential.js +1 -0
  1155. package/dist/node_modules/@catui/ai/dist/utils/oauth/github-copilot.js +1 -0
  1156. package/dist/node_modules/@catui/ai/dist/utils/oauth/google-antigravity.js +1 -0
  1157. package/dist/node_modules/@catui/ai/dist/utils/oauth/google-gemini-cli.js +1 -0
  1158. package/dist/node_modules/@catui/ai/dist/utils/oauth/index.js +1 -0
  1159. package/dist/node_modules/@catui/ai/dist/utils/oauth/openai-codex.js +11 -0
  1160. package/dist/node_modules/@catui/ai/dist/utils/oauth/pkce.js +1 -0
  1161. package/dist/node_modules/@catui/ai/dist/utils/oauth/types.js +0 -0
  1162. package/dist/node_modules/@catui/ai/dist/utils/overflow.js +1 -0
  1163. package/dist/node_modules/@catui/ai/dist/utils/sanitize-unicode.js +1 -0
  1164. package/dist/node_modules/@catui/ai/dist/utils/typebox-helpers.js +1 -0
  1165. package/dist/node_modules/@catui/ai/dist/utils/validation.js +6 -0
  1166. package/dist/node_modules/@catui/ai/package.json +106 -0
  1167. package/dist/node_modules/@catui/tui/dist/autocomplete.js +2 -0
  1168. package/dist/node_modules/@catui/tui/dist/components/box.js +1 -0
  1169. package/dist/node_modules/@catui/tui/dist/components/cached-container.js +1 -0
  1170. package/dist/node_modules/@catui/tui/dist/components/cancellable-loader.js +1 -0
  1171. package/dist/node_modules/@catui/tui/dist/components/editor.js +21 -0
  1172. package/dist/node_modules/@catui/tui/dist/components/image.js +1 -0
  1173. package/dist/node_modules/@catui/tui/dist/components/input.js +2 -0
  1174. package/dist/node_modules/@catui/tui/dist/components/loader.js +1 -0
  1175. package/dist/node_modules/@catui/tui/dist/components/markdown.js +7 -0
  1176. package/dist/node_modules/@catui/tui/dist/components/select-list.js +1 -0
  1177. package/dist/node_modules/@catui/tui/dist/components/settings-list.js +1 -0
  1178. package/dist/node_modules/@catui/tui/dist/components/spacer.js +1 -0
  1179. package/dist/node_modules/@catui/tui/dist/components/text.js +1 -0
  1180. package/dist/node_modules/@catui/tui/dist/components/truncated-text.js +2 -0
  1181. package/dist/node_modules/@catui/tui/dist/editor-component.js +0 -0
  1182. package/dist/node_modules/@catui/tui/dist/fuzzy.js +1 -0
  1183. package/dist/node_modules/@catui/tui/dist/index.js +1 -0
  1184. package/dist/node_modules/@catui/tui/dist/keybindings.js +1 -0
  1185. package/dist/node_modules/@catui/tui/dist/keys.js +5 -0
  1186. package/dist/node_modules/@catui/tui/dist/kill-ring.js +1 -0
  1187. package/dist/node_modules/@catui/tui/dist/stdin-buffer.js +1 -0
  1188. package/dist/node_modules/@catui/tui/dist/terminal-image.js +1 -0
  1189. package/dist/node_modules/@catui/tui/dist/terminal.js +1 -0
  1190. package/dist/node_modules/@catui/tui/dist/tui.js +12 -0
  1191. package/dist/node_modules/@catui/tui/dist/undo-stack.js +1 -0
  1192. package/dist/node_modules/@catui/tui/dist/utils.js +2 -0
  1193. package/dist/node_modules/@catui/tui/package.json +37 -0
  1194. package/dist/packages/mem-core/src/store.d.ts +21 -0
  1195. package/dist/packages/mem-core/src/store.js +1 -0
  1196. package/dist/packages/mem-core/src/types.d.ts +329 -0
  1197. package/dist/packages/mem-core/src/types.js +0 -0
  1198. package/dist/packages/protocol/src/commands.d.ts +33 -0
  1199. package/dist/packages/protocol/src/commands.js +0 -0
  1200. package/dist/packages/protocol/src/flags.d.ts +20 -0
  1201. package/dist/packages/protocol/src/flags.js +0 -0
  1202. package/dist/packages/protocol/src/hooks.d.ts +17 -0
  1203. package/dist/packages/protocol/src/hooks.js +0 -0
  1204. package/dist/packages/protocol/src/index.d.ts +15 -0
  1205. package/dist/packages/protocol/src/index.js +1 -0
  1206. package/dist/packages/protocol/src/lifecycle.d.ts +61 -0
  1207. package/dist/packages/protocol/src/lifecycle.js +0 -0
  1208. package/dist/packages/protocol/src/tools.d.ts +77 -0
  1209. package/dist/packages/protocol/src/tools.js +0 -0
  1210. package/dist/packages/soul-core/src/config.d.ts +20 -0
  1211. package/dist/packages/soul-core/src/config.js +1 -0
  1212. package/dist/packages/soul-core/src/diagnostics.d.ts +23 -0
  1213. package/dist/packages/soul-core/src/diagnostics.js +1 -0
  1214. package/dist/packages/soul-core/src/evolution.d.ts +75 -0
  1215. package/dist/packages/soul-core/src/evolution.js +1 -0
  1216. package/dist/packages/soul-core/src/index.d.ts +13 -0
  1217. package/dist/packages/soul-core/src/index.js +1 -0
  1218. package/dist/packages/soul-core/src/injection.d.ts +35 -0
  1219. package/dist/packages/soul-core/src/injection.js +8 -0
  1220. package/dist/packages/soul-core/src/manager.d.ts +101 -0
  1221. package/dist/packages/soul-core/src/manager.js +1 -0
  1222. package/dist/packages/soul-core/src/store.d.ts +62 -0
  1223. package/dist/packages/soul-core/src/store.js +1 -0
  1224. package/dist/packages/soul-core/src/types.d.ts +317 -0
  1225. package/dist/packages/soul-core/src/types.js +0 -0
  1226. package/dist/public-config.d.ts +12 -0
  1227. package/dist/public-config.js +1 -0
  1228. package/dist/runtime.d.ts +9 -0
  1229. package/dist/runtime.js +1 -0
  1230. package/dist/session-compaction.d.ts +7 -0
  1231. package/dist/session-compaction.js +1 -0
  1232. package/dist/session.d.ts +7 -0
  1233. package/dist/session.js +1 -0
  1234. package/dist/skills.d.ts +7 -0
  1235. package/dist/skills.js +1 -0
  1236. package/dist/tools.d.ts +7 -0
  1237. package/dist/tools.js +1 -0
  1238. package/dist/utils/changelog.d.ts +20 -0
  1239. package/dist/utils/changelog.js +4 -0
  1240. package/dist/utils/diagnostics.d.ts +37 -0
  1241. package/dist/utils/diagnostics.js +1 -0
  1242. package/dist/utils/frontmatter.d.ts +7 -0
  1243. package/dist/utils/frontmatter.js +4 -0
  1244. package/dist/utils/git.d.ts +25 -0
  1245. package/dist/utils/git.js +1 -0
  1246. package/dist/utils/mime.d.ts +1 -0
  1247. package/dist/utils/mime.js +1 -0
  1248. package/dist/utils/photon.d.ts +6 -0
  1249. package/dist/utils/photon.js +1 -0
  1250. package/dist/utils/startup-profiler.d.ts +87 -0
  1251. package/dist/utils/startup-profiler.js +2 -0
  1252. package/docs/codex-goal-command-impl.md +1055 -0
  1253. package/docs/codex-goal-vs-grub.md +500 -0
  1254. package/docs/custom-provider.md +27 -0
  1255. package/docs/extensions.md +27 -0
  1256. package/docs/keybindings.md +27 -0
  1257. package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/200/273/347/273/223.md" +251 -0
  1258. package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/212/245/345/221/212.md" +123 -0
  1259. package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210.md" +1222 -0
  1260. package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210/345/256/236/347/216/260/346/212/245/345/221/212.md" +158 -0
  1261. package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210/345/257/271/346/257/224/345/210/206/346/236/220.md" +128 -0
  1262. package/docs/loop /351/207/215/346/236/204/350/256/241/345/210/222.md" +321 -0
  1263. package/docs/loop-usage-examples.md +215 -0
  1264. package/docs/models.md +27 -0
  1265. package/docs/packages.md +27 -0
  1266. package/docs/pi-design-philosophy.md +457 -0
  1267. package/docs/planmode.md +1987 -0
  1268. package/docs/prompt-templates.md +27 -0
  1269. package/docs/providers.md +27 -0
  1270. package/docs/sdk.md +27 -0
  1271. package/docs/skills.md +27 -0
  1272. package/docs/themes.md +27 -0
  1273. package/docs/tui.md +27 -0
  1274. package/package.json +191 -0
@@ -0,0 +1 @@
1
+ var s=Object.defineProperty;var r=(o,t)=>s(o,"name",{value:t,configurable:!0});import{MODELS as p}from"./models.generated.js";const e=new Map;for(const[o,t]of Object.entries(p)){const c=new Map;for(const[i,n]of Object.entries(t))c.set(i,n);e.set(o,c)}function f(o,t){return e.get(o)?.get(t)}r(f,"getModel");function l(){return Array.from(e.keys())}r(l,"getProviders");function a(o){const t=e.get(o);return t?Array.from(t.values()):[]}r(a,"getModels");function h(o,t){return t.cost.input=o.cost.input/1e6*t.input,t.cost.output=o.cost.output/1e6*t.output,t.cost.cacheRead=o.cost.cacheRead/1e6*t.cacheRead,t.cost.cacheWrite=o.cost.cacheWrite/1e6*t.cacheWrite,t.cost.total=t.cost.input+t.cost.output+t.cost.cacheRead+t.cost.cacheWrite,t.cost}r(h,"calculateCost");function v(o){return o.id.includes("gpt-5.2")||o.id.includes("gpt-5.3")?!0:o.api==="anthropic-messages"?o.id.includes("opus-4-6")||o.id.includes("opus-4.6"):!1}r(v,"supportsXhigh");function M(o,t){return!o||!t?!1:o.id===t.id&&o.provider===t.provider}r(M,"modelsAreEqual");export{h as calculateCost,f as getModel,a as getModels,l as getProviders,M as modelsAreEqual,v as supportsXhigh};
@@ -0,0 +1,7 @@
1
+ /**
2
+ * [WHO]: isContextOverflow, getOverflowPatterns
3
+ * [FROM]: Depends on overflow utility for provider context-window detection
4
+ * [TO]: Consumed by @catui/ai/overflow subpath consumers
5
+ * [HERE]: core/lib/ai/src/overflow.ts - additive overflow helper subpath entry for AI package
6
+ */
7
+ export * from "./utils/overflow.js";
@@ -0,0 +1 @@
1
+ export*from"./utils/overflow.js";
@@ -0,0 +1,20 @@
1
+ /**
2
+ * [WHO]: BedrockOptions, streamBedrock, streamSimpleBedrock
3
+ * [FROM]: Depends on ../models.js, ../utils/event-stream.js, ../utils/json-parse.js, ../utils/sanitize-unicode.js, ./simple-options.js
4
+ * [TO]: Consumed by core/lib/ai/src/index.ts
5
+ * [HERE]: core/lib/ai/src/providers/amazon-bedrock.ts -
6
+ */
7
+ import type { SimpleStreamOptions, StreamFunction, StreamOptions, ThinkingBudgets, ThinkingLevel } from "../types.js";
8
+ export interface BedrockOptions extends StreamOptions {
9
+ region?: string;
10
+ profile?: string;
11
+ toolChoice?: "auto" | "any" | "none" | {
12
+ type: "tool";
13
+ name: string;
14
+ };
15
+ reasoning?: ThinkingLevel;
16
+ thinkingBudgets?: ThinkingBudgets;
17
+ interleavedThinking?: boolean;
18
+ }
19
+ export declare const streamBedrock: StreamFunction<"bedrock-converse-stream", BedrockOptions>;
20
+ export declare const streamSimpleBedrock: StreamFunction<"bedrock-converse-stream", SimpleStreamOptions>;
@@ -0,0 +1 @@
1
+ var b=Object.defineProperty;var g=(e,n)=>b(e,"name",{value:n,configurable:!0});import{BedrockRuntimeClient as _,StopReason as h,CachePointType as S,CacheTTL as w,ConversationRole as f,ConverseStreamCommand as I,ImageFormat as m,ToolResultStatus as k}from"@aws-sdk/client-bedrock-runtime";import{calculateCost as B}from"../models.js";import{AssistantMessageEventStream as v}from"../utils/event-stream.js";import{parseStreamingJson as T}from"../utils/json-parse.js";import{sanitizeSurrogates as p}from"../utils/sanitize-unicode.js";import{adjustMaxTokensForThinking as U,buildBaseOptions as A,clampReasoning as O}from"./simple-options.js";import{transformMessages as N}from"./transform-messages.js";const x=g((e,n,t={})=>{const o=new v;return(async()=>{const s={role:"assistant",content:[],api:"bedrock-converse-stream",provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()},r=s.content,c={profile:t.profile};if(typeof process<"u"&&(process.versions?.node||process.versions?.bun)){const i=t.region||process.env.AWS_REGION||process.env.AWS_DEFAULT_REGION;if(i?c.region=i:process.env.AWS_PROFILE||(c.region="us-east-1"),process.env.AWS_BEDROCK_SKIP_AUTH==="1"&&(c.credentials={accessKeyId:"dummy-access-key",secretAccessKey:"dummy-secret-key"}),process.env.HTTP_PROXY||process.env.HTTPS_PROXY||process.env.NO_PROXY||process.env.http_proxy||process.env.https_proxy||process.env.no_proxy){const a=await import("@smithy/node-http-handler"),u=await import("proxy-agent"),d=new u.ProxyAgent;c.requestHandler=new a.NodeHttpHandler({httpAgent:d,httpsAgent:d})}else if(process.env.AWS_BEDROCK_FORCE_HTTP1==="1"){const a=await import("@smithy/node-http-handler");c.requestHandler=new a.NodeHttpHandler}}else c.region=t.region||"us-east-1";try{const i=new _(c),a=F(t.cacheRetention),u={modelId:e.id,messages:K(n,e,a),system:J(n.systemPrompt,e,a),inferenceConfig:{maxTokens:t.maxTokens,temperature:t.temperature},toolConfig:X(n.tools,t.toolChoice),additionalModelRequestFields:q(e,t)};t?.onPayload?.(u);const d=new I(u),R=await i.send(d,{abortSignal:t.signal});for await(const l of R.stream)if(l.messageStart){if(l.messageStart.role!==f.ASSISTANT)throw new Error("Unexpected assistant message start but got user message start instead");o.push({type:"start",partial:s})}else if(l.contentBlockStart)P(l.contentBlockStart,r,s,o);else if(l.contentBlockDelta)H(l.contentBlockDelta,r,s,o);else if(l.contentBlockStop)M(l.contentBlockStop,r,s,o);else if(l.messageStop)s.stopReason=$(l.messageStop.stopReason);else if(l.metadata)D(l.metadata,e,s);else{if(l.internalServerException)throw new Error(`Internal server error: ${l.internalServerException.message}`);if(l.modelStreamErrorException)throw new Error(`Model stream error: ${l.modelStreamErrorException.message}`);if(l.validationException)throw new Error(`Validation error: ${l.validationException.message}`);if(l.throttlingException)throw new Error(`Throttling error: ${l.throttlingException.message}`);if(l.serviceUnavailableException)throw new Error(`Service unavailable: ${l.serviceUnavailableException.message}`)}if(t.signal?.aborted)throw new Error("Request was aborted");if(s.stopReason==="error"||s.stopReason==="aborted")throw new Error("An unknown error occurred");o.push({type:"done",reason:s.stopReason,message:s}),o.end()}catch(i){for(const a of s.content)delete a.index,delete a.partialJson;s.stopReason=t.signal?.aborted?"aborted":"error",s.errorMessage=i instanceof Error?i.message:JSON.stringify(i),o.push({type:"error",reason:s.stopReason,error:s}),o.end()}})(),o},"streamBedrock"),ne=g((e,n,t)=>{const o=A(e,t,void 0),s=t?.toolChoice;if(!t?.reasoning)return x(e,n,{...o,toolChoice:s,reasoning:void 0});if(e.id.includes("anthropic.claude")||e.id.includes("anthropic/claude")){if(E(e.id))return x(e,n,{...o,toolChoice:s,reasoning:t.reasoning,thinkingBudgets:t.thinkingBudgets});const r=U(o.maxTokens||0,e.maxTokens,t.reasoning,t.thinkingBudgets);return x(e,n,{...o,toolChoice:s,maxTokens:r.maxTokens,reasoning:t.reasoning,thinkingBudgets:{...t.thinkingBudgets||{},[O(t.reasoning)]:r.thinkingBudget}})}return x(e,n,{...o,toolChoice:s,reasoning:t.reasoning,thinkingBudgets:t.thinkingBudgets})},"streamSimpleBedrock");function P(e,n,t,o){const s=e.contentBlockIndex,r=e.start;if(r?.toolUse){const c={type:"toolCall",id:r.toolUse.toolUseId||"",name:r.toolUse.name||"",arguments:{},partialJson:"",index:s};t.content.push(c),o.push({type:"toolcall_start",contentIndex:n.length-1,partial:t})}}g(P,"handleContentBlockStart");function H(e,n,t,o){const s=e.contentBlockIndex,r=e.delta;let c=n.findIndex(a=>a.index===s),i=n[c];if(r?.text!==void 0){if(!i){const a={type:"text",text:"",index:s};t.content.push(a),c=n.length-1,i=n[c],o.push({type:"text_start",contentIndex:c,partial:t})}i.type==="text"&&(i.text+=r.text,o.push({type:"text_delta",contentIndex:c,delta:r.text,partial:t}))}else if(r?.toolUse&&i?.type==="toolCall")i.partialJson=(i.partialJson||"")+(r.toolUse.input||""),i.arguments=T(i.partialJson),o.push({type:"toolcall_delta",contentIndex:c,delta:r.toolUse.input||"",partial:t});else if(r?.reasoningContent){let a=i,u=c;if(!a){const d={type:"thinking",thinking:"",thinkingSignature:"",index:s};t.content.push(d),u=n.length-1,a=n[u],o.push({type:"thinking_start",contentIndex:u,partial:t})}a?.type==="thinking"&&(r.reasoningContent.text&&(a.thinking+=r.reasoningContent.text,o.push({type:"thinking_delta",contentIndex:u,delta:r.reasoningContent.text,partial:t})),r.reasoningContent.signature&&(a.thinkingSignature=(a.thinkingSignature||"")+r.reasoningContent.signature))}}g(H,"handleContentBlockDelta");function D(e,n,t){e.usage&&(t.usage.input=e.usage.inputTokens||0,t.usage.output=e.usage.outputTokens||0,t.usage.cacheRead=e.usage.cacheReadInputTokens||0,t.usage.cacheWrite=e.usage.cacheWriteInputTokens||0,t.usage.totalTokens=e.usage.totalTokens||t.usage.input+t.usage.output,B(n,t.usage))}g(D,"handleMetadata");function M(e,n,t,o){const s=n.findIndex(c=>c.index===e.contentBlockIndex),r=n[s];if(r)switch(delete r.index,r.type){case"text":o.push({type:"text_end",contentIndex:s,content:r.text,partial:t});break;case"thinking":o.push({type:"thinking_end",contentIndex:s,content:r.thinking,partial:t});break;case"toolCall":r.arguments=T(r.partialJson),delete r.partialJson,o.push({type:"toolcall_end",contentIndex:s,toolCall:r,partial:t});break}}g(M,"handleContentBlockStop");function E(e){return e.includes("opus-4-6")||e.includes("opus-4.6")||e.includes("sonnet-4-6")||e.includes("sonnet-4.6")}g(E,"supportsAdaptiveThinking");function W(e,n){switch(e){case"minimal":case"low":return"low";case"medium":return"medium";case"high":return"high";case"xhigh":return n.includes("opus-4-6")||n.includes("opus-4.6")?"max":"high";default:return"high"}}g(W,"mapThinkingLevelToEffort");function F(e){return e||(typeof process<"u"&&(process.env.CATUI_CACHE_RETENTION??process.env.NANOPENCIL_CACHE_RETENTION)==="long"?"long":"short")}g(F,"resolveCacheRetention");function C(e){if(e.cost.cacheRead||e.cost.cacheWrite)return!0;const n=e.id.toLowerCase();return!!(n.includes("claude")&&(n.includes("-4-")||n.includes("-4."))||n.includes("claude-3-7-sonnet")||n.includes("claude-3-5-haiku"))}g(C,"supportsPromptCaching");function L(e){const n=e.id.toLowerCase();return n.includes("anthropic.claude")||n.includes("anthropic/claude")}g(L,"supportsThinkingSignature");function J(e,n,t){if(!e)return;const o=[{text:p(e)}];return t!=="none"&&C(n)&&o.push({cachePoint:{type:S.DEFAULT,...t==="long"?{ttl:w.ONE_HOUR}:{}}}),o}g(J,"buildSystemPrompt");function j(e){const n=e.replace(/[^a-zA-Z0-9_-]/g,"_");return n.length>64?n.slice(0,64):n}g(j,"normalizeToolCallId");function K(e,n,t){const o=[],s=N(e.messages,n,j);for(let r=0;r<s.length;r++){const c=s[r];switch(c.role){case"user":o.push({role:f.USER,content:typeof c.content=="string"?[{text:p(c.content)}]:c.content.map(i=>{switch(i.type){case"text":return{text:p(i.text)};case"image":return{image:y(i.mimeType,i.data)};default:throw new Error("Unknown user content type")}})});break;case"assistant":{if(c.content.length===0)continue;const i=[];for(const a of c.content)switch(a.type){case"text":if(a.text.trim().length===0)continue;i.push({text:p(a.text)});break;case"toolCall":i.push({toolUse:{toolUseId:a.id,name:a.name,input:a.arguments}});break;case"thinking":if(a.thinking.trim().length===0)continue;L(n)?i.push({reasoningContent:{reasoningText:{text:p(a.thinking),signature:a.thinkingSignature}}}):i.push({reasoningContent:{reasoningText:{text:p(a.thinking)}}});break;default:throw new Error("Unknown assistant content type")}if(i.length===0)continue;o.push({role:f.ASSISTANT,content:i});break}case"toolResult":{const i=[];i.push({toolResult:{toolUseId:c.toolCallId,content:c.content.map(u=>u.type==="image"?{image:y(u.mimeType,u.data)}:u.type==="document"?{text:"[PDF document - content not available in Bedrock format]"}:{text:p(u.text)}),status:c.isError?k.ERROR:k.SUCCESS}});let a=r+1;for(;a<s.length&&s[a].role==="toolResult";){const u=s[a];i.push({toolResult:{toolUseId:u.toolCallId,content:u.content.map(d=>d.type==="image"?{image:y(d.mimeType,d.data)}:d.type==="document"?{text:"[PDF document - content not available in Bedrock format]"}:{text:p(d.text)}),status:u.isError?k.ERROR:k.SUCCESS}}),a++}r=a-1,o.push({role:f.USER,content:i});break}default:throw new Error("Unknown message role")}}if(t!=="none"&&C(n)&&o.length>0){const r=o[o.length-1];r.role===f.USER&&r.content&&r.content.push({cachePoint:{type:S.DEFAULT,...t==="long"?{ttl:w.ONE_HOUR}:{}}})}return o}g(K,"convertMessages");function X(e,n){if(!e?.length||n==="none")return;const t=e.map(s=>({toolSpec:{name:s.name,description:s.description,inputSchema:{json:s.parameters}}}));let o;switch(n){case"auto":o={auto:{}};break;case"any":o={any:{}};break;default:n?.type==="tool"&&(o={tool:{name:n.name}})}return{tools:t,toolChoice:o}}g(X,"convertToolConfig");function $(e){switch(e){case h.END_TURN:case h.STOP_SEQUENCE:return"stop";case h.MAX_TOKENS:case h.MODEL_CONTEXT_WINDOW_EXCEEDED:return"length";case h.TOOL_USE:return"toolUse";default:return"error"}}g($,"mapStopReason");function q(e,n){if(!(!n.reasoning||!e.reasoning)&&(e.id.includes("anthropic.claude")||e.id.includes("anthropic/claude"))){const t=E(e.id)?{thinking:{type:"adaptive"},output_config:{effort:W(n.reasoning,e.id)}}:(()=>{const o={minimal:1024,low:2048,medium:8192,high:16384,xhigh:16384},s=n.reasoning==="xhigh"?"high":n.reasoning;return{thinking:{type:"enabled",budget_tokens:n.thinkingBudgets?.[s]??o[n.reasoning]}}})();return!E(e.id)&&(n.interleavedThinking??!0)&&(t.anthropic_beta=["interleaved-thinking-2025-05-14"]),t}}g(q,"buildAdditionalModelRequestFields");function y(e,n){let t;switch(e){case"image/jpeg":case"image/jpg":t=m.JPEG;break;case"image/png":t=m.PNG;break;case"image/gif":t=m.GIF;break;case"image/webp":t=m.WEBP;break;default:throw new Error(`Unknown image type: ${e}`)}const o=atob(n),s=new Uint8Array(o.length);for(let r=0;r<o.length;r++)s[r]=o.charCodeAt(r);return{source:{bytes:s},format:t}}g(y,"createImageBlock");export{x as streamBedrock,ne as streamSimpleBedrock};
@@ -0,0 +1,38 @@
1
+ /**
2
+ * [WHO]: AnthropicOptions, streamAnthropic, streamSimpleAnthropic
3
+ * [FROM]: Depends on @anthropic-ai/sdk, ../env-api-keys.js, ../models.js, ../utils/event-stream.js, ../utils/json-parse.js
4
+ * [TO]: Consumed by core/lib/ai/src/index.ts
5
+ * [HERE]: core/lib/ai/src/providers/anthropic.ts -
6
+ */
7
+ import type { SimpleStreamOptions, StreamFunction, StreamOptions } from "../types.js";
8
+ export type AnthropicEffort = "low" | "medium" | "high" | "max";
9
+ export interface AnthropicOptions extends StreamOptions {
10
+ /**
11
+ * Enable extended thinking.
12
+ * For Opus 4.6 and Sonnet 4.6: uses adaptive thinking (model decides when/how much to think).
13
+ * For older models: uses budget-based thinking with thinkingBudgetTokens.
14
+ */
15
+ thinkingEnabled?: boolean;
16
+ /**
17
+ * Token budget for extended thinking (older models only).
18
+ * Ignored for Opus 4.6 and Sonnet 4.6, which use adaptive thinking.
19
+ */
20
+ thinkingBudgetTokens?: number;
21
+ /**
22
+ * Effort level for adaptive thinking (Opus 4.6 and Sonnet 4.6).
23
+ * Controls how much thinking Claude allocates:
24
+ * - "max": Always thinks with no constraints (Opus 4.6 only)
25
+ * - "high": Always thinks, deep reasoning (default)
26
+ * - "medium": Moderate thinking, may skip for simple queries
27
+ * - "low": Minimal thinking, skips for simple tasks
28
+ * Ignored for older models.
29
+ */
30
+ effort?: AnthropicEffort;
31
+ interleavedThinking?: boolean;
32
+ toolChoice?: "auto" | "any" | "none" | {
33
+ type: "tool";
34
+ name: string;
35
+ };
36
+ }
37
+ export declare const streamAnthropic: StreamFunction<"anthropic-messages", AnthropicOptions>;
38
+ export declare const streamSimpleAnthropic: StreamFunction<"anthropic-messages", SimpleStreamOptions>;
@@ -0,0 +1,2 @@
1
+ var E=Object.defineProperty;var h=(t,o)=>E(t,"name",{value:o,configurable:!0});import m from"@anthropic-ai/sdk";import{getEnvApiKey as C}from"../env-api-keys.js";import{calculateCost as T}from"../models.js";import{AssistantMessageEventStream as I}from"../utils/event-stream.js";import{parseStreamingJson as w}from"../utils/json-parse.js";import{sanitizeSurrogates as y}from"../utils/sanitize-unicode.js";import{buildCopilotDynamicHeaders as A,hasCopilotVisionInput as S}from"./github-copilot-headers.js";import{adjustMaxTokensForThinking as j,buildBaseOptions as B}from"./simple-options.js";import{transformMessages as L}from"./transform-messages.js";function M(t){return t||(typeof process<"u"&&process.env.CATUI_CACHE_RETENTION==="long"?"long":"short")}h(M,"resolveCacheRetention");function U(t,o){const s=M(o);if(s==="none")return{retention:s};const n=s==="long"&&t.includes("api.anthropic.com")?"1h":void 0;return{retention:s,cacheControl:{type:"ephemeral",...n&&{ttl:n}}}}h(U,"getCacheControl");const N="2.1.62",O=["Read","Write","Edit","Bash","Grep","Glob","AskUserQuestion","EnterPlanMode","ExitPlanMode","KillShell","NotebookEdit","Skill","Task","TaskOutput","TodoWrite","WebFetch","WebSearch"],W=new Map(O.map(t=>[t.toLowerCase(),t])),R=h(t=>W.get(t.toLowerCase())??t,"toClaudeCodeName"),P=h((t,o)=>{if(o&&o.length>0){const s=t.toLowerCase(),n=o.find(e=>e.name.toLowerCase()===s);if(n)return n.name}return t},"fromClaudeCodeName");function v(t){if(!t.some(e=>e.type!=="text"))return y(t.map(e=>e.text).join(`
2
+ `));const s=t.map(e=>e.type==="text"?{type:"text",text:y(e.text)}:e.type==="document"?{type:"document",source:{type:"base64",media_type:"application/pdf",data:e.source.data}}:{type:"image",source:{type:"base64",media_type:e.mimeType,data:e.data}});return s.some(e=>e.type==="text")||s.unshift({type:"text",text:"(see attached document)"}),s}h(v,"convertContentBlocks");function _(...t){const o={};for(const s of t)s&&Object.assign(o,s);return o}h(_,"mergeHeaders");const x=h((t,o,s)=>{const n=new I;return(async()=>{const e={role:"assistant",content:[],api:t.api,provider:t.provider,model:t.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{const r=s?.apiKey??C(t.provider)??"";let i;if(t.provider==="github-copilot"){const a=S(o.messages);i=A({messages:o.messages,hasImages:a})}const{client:l,isOAuthToken:p}=K(t,r,s?.interleavedThinking??!0,s?.headers,i),c=q(t,o,p,s);s?.onPayload?.(c);const g=l.messages.stream({...c,stream:!0},{signal:s?.signal});n.push({type:"start",partial:e});const f=e.content;for await(const a of g)if(a.type==="message_start")e.usage.input=a.message.usage.input_tokens||0,e.usage.output=a.message.usage.output_tokens||0,e.usage.cacheRead=a.message.usage.cache_read_input_tokens||0,e.usage.cacheWrite=a.message.usage.cache_creation_input_tokens||0,e.usage.totalTokens=e.usage.input+e.usage.output+e.usage.cacheRead+e.usage.cacheWrite,T(t,e.usage);else if(a.type==="content_block_start"){if(a.content_block.type==="text"){const d={type:"text",text:"",index:a.index};e.content.push(d),n.push({type:"text_start",contentIndex:e.content.length-1,partial:e})}else if(a.content_block.type==="thinking"){const d={type:"thinking",thinking:"",thinkingSignature:"",index:a.index};e.content.push(d),n.push({type:"thinking_start",contentIndex:e.content.length-1,partial:e})}else if(a.content_block.type==="redacted_thinking"){const d={type:"thinking",thinking:"[Reasoning redacted]",thinkingSignature:a.content_block.data,redacted:!0,index:a.index};e.content.push(d),n.push({type:"thinking_start",contentIndex:e.content.length-1,partial:e})}else if(a.content_block.type==="tool_use"){const d={type:"toolCall",id:a.content_block.id,name:p?P(a.content_block.name,o.tools):a.content_block.name,arguments:a.content_block.input??{},partialJson:"",index:a.index};e.content.push(d),n.push({type:"toolcall_start",contentIndex:e.content.length-1,partial:e})}}else if(a.type==="content_block_delta"){if(a.delta.type==="text_delta"){const d=f.findIndex(k=>k.index===a.index),u=f[d];u&&u.type==="text"&&(u.text+=a.delta.text,n.push({type:"text_delta",contentIndex:d,delta:a.delta.text,partial:e}))}else if(a.delta.type==="thinking_delta"){const d=f.findIndex(k=>k.index===a.index),u=f[d];u&&u.type==="thinking"&&(u.thinking+=a.delta.thinking,n.push({type:"thinking_delta",contentIndex:d,delta:a.delta.thinking,partial:e}))}else if(a.delta.type==="input_json_delta"){const d=f.findIndex(k=>k.index===a.index),u=f[d];u&&u.type==="toolCall"&&(u.partialJson+=a.delta.partial_json,u.arguments=w(u.partialJson),n.push({type:"toolcall_delta",contentIndex:d,delta:a.delta.partial_json,partial:e}))}else if(a.delta.type==="signature_delta"){const d=f.findIndex(k=>k.index===a.index),u=f[d];u&&u.type==="thinking"&&(u.thinkingSignature=u.thinkingSignature||"",u.thinkingSignature+=a.delta.signature)}}else if(a.type==="content_block_stop"){const d=f.findIndex(k=>k.index===a.index),u=f[d];u&&(delete u.index,u.type==="text"?n.push({type:"text_end",contentIndex:d,content:u.text,partial:e}):u.type==="thinking"?n.push({type:"thinking_end",contentIndex:d,content:u.thinking,partial:e}):u.type==="toolCall"&&(u.arguments=w(u.partialJson),delete u.partialJson,n.push({type:"toolcall_end",contentIndex:d,toolCall:u,partial:e})))}else a.type==="message_delta"&&(a.delta.stop_reason&&(e.stopReason=D(a.delta.stop_reason)),a.usage.input_tokens!=null&&(e.usage.input=a.usage.input_tokens),a.usage.output_tokens!=null&&(e.usage.output=a.usage.output_tokens),a.usage.cache_read_input_tokens!=null&&(e.usage.cacheRead=a.usage.cache_read_input_tokens),a.usage.cache_creation_input_tokens!=null&&(e.usage.cacheWrite=a.usage.cache_creation_input_tokens),e.usage.totalTokens=e.usage.input+e.usage.output+e.usage.cacheRead+e.usage.cacheWrite,T(t,e.usage));if(s?.signal?.aborted)throw new Error("Request was aborted");if(e.stopReason==="aborted"||e.stopReason==="error")throw new Error("An unknown error occurred");n.push({type:"done",reason:e.stopReason,message:e}),n.end()}catch(r){for(const i of e.content)delete i.index;if(e.stopReason=s?.signal?.aborted?"aborted":"error",e.errorMessage=r instanceof Error?r.message:JSON.stringify(r),r&&typeof r=="object"&&"headers"in r){const i=r.headers;i&&typeof i=="object"&&(e.errorHeaders=Object.fromEntries(Object.entries(i).map(([l,p])=>[l.toLowerCase(),String(p)])))}n.push({type:"error",reason:e.stopReason,error:e}),n.end()}})(),n},"streamAnthropic");function b(t){return t.includes("opus-4-6")||t.includes("opus-4.6")||t.includes("sonnet-4-6")||t.includes("sonnet-4.6")}h(b,"supportsAdaptiveThinking");function J(t,o){switch(t){case"minimal":return"low";case"low":return"low";case"medium":return"medium";case"high":return"high";case"xhigh":return o.includes("opus-4-6")||o.includes("opus-4.6")?"max":"high";default:return"high"}}h(J,"mapThinkingLevelToEffort");const se=h((t,o,s)=>{const n=s?.apiKey||C(t.provider);if(!n)throw new Error(`No API key for provider: ${t.provider}`);const e=B(t,s,n),r=s?.toolChoice;if(!s?.reasoning)return x(t,o,{...e,toolChoice:r,thinkingEnabled:!1});if(b(t.id)){const l=J(s.reasoning,t.id);return x(t,o,{...e,toolChoice:r,thinkingEnabled:!0,effort:l})}const i=j(e.maxTokens||0,t.maxTokens,s.reasoning,s.thinkingBudgets);return x(t,o,{...e,toolChoice:r,maxTokens:i.maxTokens,thinkingEnabled:!0,thinkingBudgetTokens:i.thinkingBudget})},"streamSimpleAnthropic");function H(t){return t.includes("sk-ant-oat")}h(H,"isOAuthToken");function K(t,o,s,n,e){const r=s&&!b(t.id);if(t.provider==="github-copilot"){const p=[];return r&&p.push("interleaved-thinking-2025-05-14"),{client:new m({apiKey:null,authToken:o,baseURL:t.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:_({accept:"application/json","anthropic-dangerous-direct-browser-access":"true",...p.length>0?{"anthropic-beta":p.join(",")}:{}},t.headers,e,n)}),isOAuthToken:!1}}const i=["fine-grained-tool-streaming-2025-05-14"];return r&&i.push("interleaved-thinking-2025-05-14"),H(o)?{client:new m({apiKey:null,authToken:o,baseURL:t.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:_({accept:"application/json","anthropic-dangerous-direct-browser-access":"true","anthropic-beta":`claude-code-20250219,oauth-2025-04-20,${i.join(",")}`,"user-agent":`claude-cli/${N}`,"x-app":"cli"},t.headers,n)}),isOAuthToken:!0}:{client:new m({apiKey:o,baseURL:t.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:_({accept:"application/json","anthropic-dangerous-direct-browser-access":"true","anthropic-beta":i.join(",")},t.headers,n)}),isOAuthToken:!1}}h(K,"createClient");function q(t,o,s,n){const{cacheControl:e}=U(t.baseUrl,n?.cacheRetention),r={model:t.id,messages:$(o.messages,t,s,e),max_tokens:n?.maxTokens||t.maxTokens/3|0,stream:!0};if(s?(r.system=[{type:"text",text:"You are Claude Code, Anthropic's official CLI for Claude.",...e?{cache_control:e}:{}}],o.systemPrompt&&r.system.push({type:"text",text:y(o.systemPrompt),...e?{cache_control:e}:{}})):o.systemPrompt&&(r.system=[{type:"text",text:y(o.systemPrompt),...e?{cache_control:e}:{}}]),n?.temperature!==void 0&&!n?.thinkingEnabled&&(r.temperature=n.temperature),o.tools&&(r.tools=z(o.tools,s)),n?.thinkingEnabled&&t.reasoning&&(b(t.id)?(r.thinking={type:"adaptive"},n.effort&&(r.output_config={effort:n.effort})):r.thinking={type:"enabled",budget_tokens:n.thinkingBudgetTokens||1024}),n?.metadata){const i=n.metadata.user_id;typeof i=="string"&&(r.metadata={user_id:i})}return n?.toolChoice&&(typeof n.toolChoice=="string"?r.tool_choice={type:n.toolChoice}:r.tool_choice=n.toolChoice),r}h(q,"buildParams");function F(t){return t.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,64)}h(F,"normalizeToolCallId");function $(t,o,s,n){const e=[],r=L(t,o,F);for(let i=0;i<r.length;i++){const l=r[i];if(l.role==="user")if(typeof l.content=="string")l.content.trim().length>0&&e.push({role:"user",content:y(l.content)});else{const p=l.content.map(g=>g.type==="text"?{type:"text",text:y(g.text)}:g.type==="document"?{type:"document",source:{type:"base64",media_type:"application/pdf",data:g.source.data}}:{type:"image",source:{type:"base64",media_type:g.mimeType,data:g.data}});let c=o?.input.includes("image")?p:p.filter(g=>g.type!=="image");if(c=c.filter(g=>g.type==="text"?g.text.trim().length>0:!0),c.length===0)continue;e.push({role:"user",content:c})}else if(l.role==="assistant"){const p=[];for(const c of l.content)if(c.type==="text"){if(c.text.trim().length===0)continue;p.push({type:"text",text:y(c.text)})}else if(c.type==="thinking"){if(c.redacted){p.push({type:"redacted_thinking",data:c.thinkingSignature});continue}if(c.thinking.trim().length===0)continue;!c.thinkingSignature||c.thinkingSignature.trim().length===0?p.push({type:"text",text:y(c.thinking)}):p.push({type:"thinking",thinking:y(c.thinking),signature:c.thinkingSignature})}else c.type==="toolCall"&&p.push({type:"tool_use",id:c.id,name:s?R(c.name):c.name,input:c.arguments??{}});if(p.length===0)continue;e.push({role:"assistant",content:p})}else if(l.role==="toolResult"){const p=[];p.push({type:"tool_result",tool_use_id:l.toolCallId,content:v(l.content),is_error:l.isError});let c=i+1;for(;c<r.length&&r[c].role==="toolResult";){const g=r[c];p.push({type:"tool_result",tool_use_id:g.toolCallId,content:v(g.content),is_error:g.isError}),c++}i=c-1,e.push({role:"user",content:p})}}if(n&&e.length>0){const i=e[e.length-1];if(i.role==="user")if(Array.isArray(i.content)){const l=i.content[i.content.length-1];l&&(l.type==="text"||l.type==="image"||l.type==="tool_result")&&(l.cache_control=n)}else typeof i.content=="string"&&(i.content=[{type:"text",text:i.content,cache_control:n}])}return e}h($,"convertMessages");function z(t,o){return t?t.map(s=>{const n=s.parameters;return{name:o?R(s.name):s.name,description:s.description,input_schema:{type:"object",properties:n.properties||{},required:n.required||[]}}}):[]}h(z,"convertTools");function D(t){switch(t){case"end_turn":return"stop";case"max_tokens":return"length";case"tool_use":return"toolUse";case"refusal":return"error";case"pause_turn":return"stop";case"stop_sequence":return"stop";case"sensitive":return"error";default:throw new Error(`Unhandled stop reason: ${t}`)}}h(D,"mapStopReason");export{x as streamAnthropic,se as streamSimpleAnthropic};
@@ -0,0 +1,21 @@
1
+ /**
2
+ * [WHO]: AzureOpenAIResponsesOptions, streamAzureOpenAIResponses, streamSimpleAzureOpenAIResponses
3
+ * [FROM]: Depends on openai, ../env-api-keys.js, ../models.js, ../utils/event-stream.js, ./openai-responses-shared.js
4
+ * [TO]: Consumed by core/lib/ai/src/index.ts
5
+ * [HERE]: core/lib/ai/src/providers/azure-openai-responses.ts -
6
+ */
7
+ import type { SimpleStreamOptions, StreamFunction, StreamOptions } from "../types.js";
8
+ export interface AzureOpenAIResponsesOptions extends StreamOptions {
9
+ reasoningEffort?: "minimal" | "low" | "medium" | "high" | "xhigh";
10
+ reasoningSummary?: "auto" | "detailed" | "concise" | null;
11
+ toolChoice?: unknown;
12
+ azureApiVersion?: string;
13
+ azureResourceName?: string;
14
+ azureBaseUrl?: string;
15
+ azureDeploymentName?: string;
16
+ }
17
+ /**
18
+ * Generate function for Azure OpenAI Responses API
19
+ */
20
+ export declare const streamAzureOpenAIResponses: StreamFunction<"azure-openai-responses", AzureOpenAIResponsesOptions>;
21
+ export declare const streamSimpleAzureOpenAIResponses: StreamFunction<"azure-openai-responses", SimpleStreamOptions>;
@@ -0,0 +1 @@
1
+ var f=Object.defineProperty;var o=(r,t)=>f(r,"name",{value:t,configurable:!0});import{AzureOpenAI as l}from"openai";import{getEnvApiKey as u}from"../env-api-keys.js";import{supportsXhigh as A}from"../models.js";import{AssistantMessageEventStream as E}from"../utils/event-stream.js";import{convertResponsesMessages as d,convertResponsesTools as _,processResponsesStream as R}from"./openai-responses-shared.js";import{buildBaseOptions as g,clampReasoning as U}from"./simple-options.js";const h="v1",y=new Set(["openai","openai-codex","opencode","azure-openai-responses"]);function I(r){const t=new Map;if(!r)return t;for(const e of r.split(",")){const n=e.trim();if(!n)continue;const[a,s]=n.split("=",2);!a||!s||t.set(a.trim(),s.trim())}return t}o(I,"parseDeploymentNameMap");function N(r,t){return t?.azureDeploymentName?t.azureDeploymentName:I(process.env.AZURE_OPENAI_DEPLOYMENT_NAME_MAP).get(r.id)||r.id}o(N,"resolveDeploymentName");const O=o((r,t,e)=>{const n=new E;return(async()=>{const a=N(r,e),s={role:"assistant",content:[],api:"azure-openai-responses",provider:r.provider,model:r.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{const i=e?.apiKey||u(r.provider)||"",c=b(r,i,e),p=z(r,t,e,a);e?.onPayload?.(p);const m=await c.responses.create(p,e?.signal?{signal:e.signal}:void 0);if(n.push({type:"start",partial:s}),await R(m,s,n,r),e?.signal?.aborted)throw new Error("Request was aborted");if(s.stopReason==="aborted"||s.stopReason==="error")throw new Error("An unknown error occurred");n.push({type:"done",reason:s.stopReason,message:s}),n.end()}catch(i){for(const c of s.content)delete c.index;s.stopReason=e?.signal?.aborted?"aborted":"error",s.errorMessage=i instanceof Error?i.message:JSON.stringify(i),n.push({type:"error",reason:s.stopReason,error:s}),n.end()}})(),n},"streamAzureOpenAIResponses"),B=o((r,t,e)=>{const n=e?.apiKey||u(r.provider);if(!n)throw new Error(`No API key for provider: ${r.provider}`);const a=g(r,e,n),s=A(r)?e?.reasoning:U(e?.reasoning);return O(r,t,{...a,reasoningEffort:s,toolChoice:e?.toolChoice})},"streamSimpleAzureOpenAIResponses");function v(r){return r.replace(/\/+$/,"")}o(v,"normalizeAzureBaseUrl");function w(r){return`https://${r}.openai.azure.com/openai/v1`}o(w,"buildDefaultBaseUrl");function P(r,t){const e=t?.azureApiVersion||process.env.AZURE_OPENAI_API_VERSION||h,n=t?.azureBaseUrl?.trim()||process.env.AZURE_OPENAI_BASE_URL?.trim()||void 0,a=t?.azureResourceName||process.env.AZURE_OPENAI_RESOURCE_NAME;let s=n;if(!s&&a&&(s=w(a)),!s&&r.baseUrl&&(s=r.baseUrl),!s)throw new Error("Azure OpenAI base URL is required. Set AZURE_OPENAI_BASE_URL or AZURE_OPENAI_RESOURCE_NAME, or pass azureBaseUrl, azureResourceName, or model.baseUrl.");return{baseUrl:v(s),apiVersion:e}}o(P,"resolveAzureConfig");function b(r,t,e){if(!t){if(!process.env.AZURE_OPENAI_API_KEY)throw new Error("Azure OpenAI API key is required. Set AZURE_OPENAI_API_KEY environment variable or pass it as an argument.");t=process.env.AZURE_OPENAI_API_KEY}const n={...r.headers};e?.headers&&Object.assign(n,e.headers);const{baseUrl:a,apiVersion:s}=P(r,e);return new l({apiKey:t,apiVersion:s,dangerouslyAllowBrowser:!0,defaultHeaders:n,baseURL:a})}o(b,"createClient");function z(r,t,e,n){const a=d(r,t,y),s={model:n,input:a,stream:!0,prompt_cache_key:e?.sessionId};return e?.maxTokens&&(s.max_output_tokens=e?.maxTokens),e?.temperature!==void 0&&(s.temperature=e?.temperature),t.tools&&(s.tools=_(t.tools)),e?.toolChoice!==void 0&&(s.tool_choice=e.toolChoice),r.reasoning&&(e?.reasoningEffort||e?.reasoningSummary?(s.reasoning={effort:e?.reasoningEffort||"medium",summary:e?.reasoningSummary||"auto"},s.include=["reasoning.encrypted_content"]):r.name.toLowerCase().startsWith("gpt-5")&&a.push({role:"developer",content:[{type:"input_text",text:"# Juice: 0 !important"}]})),s}o(z,"buildParams");export{O as streamAzureOpenAIResponses,B as streamSimpleAzureOpenAIResponses};
@@ -0,0 +1,13 @@
1
+ /**
2
+ * [WHO]: inferCopilotInitiator, hasCopilotVisionInput, buildCopilotDynamicHeaders
3
+ * [FROM]: No external dependencies
4
+ * [TO]: Consumed by core/lib/ai/src/index.ts
5
+ * [HERE]: core/lib/ai/src/providers/github-copilot-headers.ts -
6
+ */
7
+ import type { Message } from "../types.js";
8
+ export declare function inferCopilotInitiator(messages: Message[]): "user" | "agent";
9
+ export declare function hasCopilotVisionInput(messages: Message[]): boolean;
10
+ export declare function buildCopilotDynamicHeaders(params: {
11
+ messages: Message[];
12
+ hasImages: boolean;
13
+ }): Record<string, string>;
@@ -0,0 +1 @@
1
+ var o=Object.defineProperty;var n=(e,t)=>o(e,"name",{value:t,configurable:!0});function i(e){const t=e[e.length-1];return t&&t.role!=="user"?"agent":"user"}n(i,"inferCopilotInitiator");function s(e){return e.some(t=>t.role==="user"&&Array.isArray(t.content)?t.content.some(r=>r.type==="image"):t.role==="toolResult"&&Array.isArray(t.content)?t.content.some(r=>r.type==="image"):!1)}n(s,"hasCopilotVisionInput");function u(e){const t={"X-Initiator":i(e.messages),"Openai-Intent":"conversation-edits"};return e.hasImages&&(t["Copilot-Vision-Request"]="true"),t}n(u,"buildCopilotDynamicHeaders");export{u as buildCopilotDynamicHeaders,s as hasCopilotVisionInput,i as inferCopilotInitiator};
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Google Gemini CLI / Antigravity provider.
3
+ * Shared implementation for both google-gemini-cli and google-antigravity providers.
4
+ * Uses the Cloud Code Assist API endpoint to access Gemini and Claude models.
5
+ */
6
+ /**
7
+ * [WHO]: GoogleGeminiCliOptions, extractRetryDelay, streamGoogleGeminiCli, streamSimpleGoogleGeminiCli, buildRequest
8
+ * [FROM]: Depends on ../models.js, ../utils/event-stream.js, ../utils/sanitize-unicode.js, ./simple-options.js
9
+ * [TO]: Consumed by core/lib/ai/src/index.ts
10
+ * [HERE]: core/lib/ai/src/providers/google-gemini-cli.ts -
11
+ */
12
+ import type { Content, ThinkingConfig } from "@google/genai";
13
+ import type { Context, Model, SimpleStreamOptions, StreamFunction, StreamOptions } from "../types.js";
14
+ import { convertTools, mapToolChoice } from "./google-shared.js";
15
+ /**
16
+ * Thinking level for Gemini 3 models.
17
+ * Mirrors Google's ThinkingLevel enum values.
18
+ */
19
+ export type GoogleThinkingLevel = "THINKING_LEVEL_UNSPECIFIED" | "MINIMAL" | "LOW" | "MEDIUM" | "HIGH";
20
+ export interface GoogleGeminiCliOptions extends StreamOptions {
21
+ toolChoice?: "auto" | "none" | "any";
22
+ /**
23
+ * Thinking/reasoning configuration.
24
+ * - Gemini 2.x models: use `budgetTokens` to set the thinking budget
25
+ * - Gemini 3 models (gemini-3-pro-*, gemini-3-flash-*): use `level` instead
26
+ *
27
+ * When using `streamSimple`, this is handled automatically based on the model.
28
+ */
29
+ thinking?: {
30
+ enabled: boolean;
31
+ /** Thinking budget in tokens. Use for Gemini 2.x models. */
32
+ budgetTokens?: number;
33
+ /** Thinking level. Use for Gemini 3 models (LOW/HIGH for Pro, MINIMAL/LOW/MEDIUM/HIGH for Flash). */
34
+ level?: GoogleThinkingLevel;
35
+ };
36
+ projectId?: string;
37
+ }
38
+ /**
39
+ * Extract retry delay from Gemini error response (in milliseconds).
40
+ * Checks headers first (Retry-After, x-ratelimit-reset, x-ratelimit-reset-after),
41
+ * then parses body patterns like:
42
+ * - "Your quota will reset after 39s"
43
+ * - "Your quota will reset after 18h31m10s"
44
+ * - "Please retry in Xs" or "Please retry in Xms"
45
+ * - "retryDelay": "34.074824224s" (JSON field)
46
+ */
47
+ export declare function extractRetryDelay(errorText: string, response?: Response | Headers): number | undefined;
48
+ interface CloudCodeAssistRequest {
49
+ project: string;
50
+ model: string;
51
+ request: {
52
+ contents: Content[];
53
+ sessionId?: string;
54
+ systemInstruction?: {
55
+ role?: string;
56
+ parts: {
57
+ text: string;
58
+ }[];
59
+ };
60
+ generationConfig?: {
61
+ maxOutputTokens?: number;
62
+ temperature?: number;
63
+ thinkingConfig?: ThinkingConfig;
64
+ };
65
+ tools?: ReturnType<typeof convertTools>;
66
+ toolConfig?: {
67
+ functionCallingConfig: {
68
+ mode: ReturnType<typeof mapToolChoice>;
69
+ };
70
+ };
71
+ };
72
+ requestType?: string;
73
+ userAgent?: string;
74
+ requestId?: string;
75
+ }
76
+ export declare const streamGoogleGeminiCli: StreamFunction<"google-gemini-cli", GoogleGeminiCliOptions>;
77
+ export declare const streamSimpleGoogleGeminiCli: StreamFunction<"google-gemini-cli", SimpleStreamOptions>;
78
+ export declare function buildRequest(model: Model<"google-gemini-cli">, context: Context, projectId: string, options?: GoogleGeminiCliOptions, isAntigravity?: boolean): CloudCodeAssistRequest;
79
+ export {};
@@ -0,0 +1,2 @@
1
+ var ne=Object.defineProperty;var c=(t,s)=>ne(t,"name",{value:s,configurable:!0});import{calculateCost as re}from"../models.js";import{AssistantMessageEventStream as oe}from"../utils/event-stream.js";import{sanitizeSurrogates as ae}from"../utils/sanitize-unicode.js";import{convertMessages as se,convertTools as ie,isThinkingPart as ce,mapStopReasonString as le,mapToolChoice as ue,retainThoughtSignature as W}from"./google-shared.js";import{buildBaseOptions as de,clampReasoning as ge}from"./simple-options.js";const J="https://cloudcode-pa.googleapis.com",he="https://daily-cloudcode-pa.sandbox.googleapis.com",fe=[he,J],pe={"User-Agent":"google-cloud-sdk vscode_cloudshelleditor/0.1","X-Goog-Api-Client":"gl-node/22.17.0","Client-Metadata":JSON.stringify({ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"})},me="1.18.3";function ye(){return{"User-Agent":`antigravity/${process.env.CATUI_AI_ANTIGRAVITY_VERSION||me} darwin/arm64`,"X-Goog-Api-Client":"google-cloud-sdk vscode_cloudshelleditor/0.1","Client-Metadata":JSON.stringify({ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"})}}c(ye,"getAntigravityHeaders");const V="You are Antigravity, a powerful agentic AI coding assistant designed by the Google Deepmind team working on Advanced Agentic Coding.You are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.**Absolute paths only****Proactiveness**";let we=0;const G=3,j=1e3,K=2,Ie=500,ke="interleaved-thinking-2025-05-14";function Ee(t,s){const r=c(a=>a>0?Math.ceil(a+1e3):void 0,"normalizeDelay"),n=s instanceof Headers?s:s?.headers;if(n){const a=n.get("retry-after");if(a){const g=Number(a);if(Number.isFinite(g)){const E=r(g*1e3);if(E!==void 0)return E}const x=new Date(a).getTime();if(!Number.isNaN(x)){const E=r(x-Date.now());if(E!==void 0)return E}}const d=n.get("x-ratelimit-reset");if(d){const g=Number.parseInt(d,10);if(!Number.isNaN(g)){const p=r(g*1e3-Date.now());if(p!==void 0)return p}}const f=n.get("x-ratelimit-reset-after");if(f){const g=Number(f);if(Number.isFinite(g)){const p=r(g*1e3);if(p!==void 0)return p}}}const e=t.match(/reset after (?:(\d+)h)?(?:(\d+)m)?(\d+(?:\.\d+)?)s/i);if(e){const a=e[1]?parseInt(e[1],10):0,d=e[2]?parseInt(e[2],10):0,f=parseFloat(e[3]);if(!Number.isNaN(f)){const g=((a*60+d)*60+f)*1e3,p=r(g);if(p!==void 0)return p}}const h=t.match(/Please retry in ([0-9.]+)(ms|s)/i);if(h?.[1]){const a=parseFloat(h[1]);if(!Number.isNaN(a)&&a>0){const d=h[2].toLowerCase()==="ms"?a:a*1e3,f=r(d);if(f!==void 0)return f}}const i=t.match(/"retryDelay":\s*"([0-9.]+)(ms|s)"/i);if(i?.[1]){const a=parseFloat(i[1]);if(!Number.isNaN(a)&&a>0){const d=i[2].toLowerCase()==="ms"?a:a*1e3,f=r(d);if(f!==void 0)return f}}}c(Ee,"extractRetryDelay");function Ce(t){const s=t.toLowerCase();return s.includes("claude")&&s.includes("thinking")}c(Ce,"isClaudeThinkingModel");function z(t){return/gemini-3(?:\.1)?-pro/.test(t.toLowerCase())}c(z,"isGemini3ProModel");function Te(t){return/gemini-3(?:\.1)?-flash/.test(t.toLowerCase())}c(Te,"isGemini3FlashModel");function be(t){return z(t)||Te(t)}c(be,"isGemini3Model");function Ae(t,s){return t===429||t===500||t===502||t===503||t===504?!0:/resource.?exhausted|rate.?limit|overloaded|service.?unavailable|other.?side.?closed/i.test(s)}c(Ae,"isRetryableError");function X(t){try{const s=JSON.parse(t);if(s.error?.message)return s.error.message}catch{}return t}c(X,"extractErrorMessage");function L(t,s){return new Promise((r,n)=>{if(s?.aborted){n(new Error("Request was aborted"));return}const e=setTimeout(r,t);s?.addEventListener("abort",()=>{clearTimeout(e),n(new Error("Request was aborted"))})})}c(L,"sleep");const O=c((t,s,r)=>{const n=new oe;return(async()=>{const e={role:"assistant",content:[],api:"google-gemini-cli",provider:t.provider,model:t.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{const h=r?.apiKey;if(!h)throw new Error("Google Cloud Code Assist requires OAuth authentication. Use /login to authenticate.");let i,a;try{const l=JSON.parse(h);i=l.token,a=l.projectId}catch{throw new Error("Invalid Google Cloud Code Assist credentials. Use /login to re-authenticate.")}if(!i||!a)throw new Error("Missing token or projectId in Google Cloud credentials. Use /login to re-authenticate.");const d=t.provider==="google-antigravity",f=t.baseUrl?.trim(),g=f?[f]:d?fe:[J],p=xe(t,s,a,r,d);r?.onPayload?.(p);const x=d?ye():pe,E={Authorization:`Bearer ${i}`,"Content-Type":"application/json",Accept:"text/event-stream",...x,...Ce(t.id)?{"anthropic-beta":ke}:{},...r?.headers},P=JSON.stringify(p);let I,T,N;for(let l=0;l<=G;l++){if(r?.signal?.aborted)throw new Error("Request was aborted");try{if(N=`${g[Math.min(l,g.length-1)]}/v1internal:streamGenerateContent?alt=sse`,I=await fetch(N,{method:"POST",headers:E,body:P,signal:r?.signal}),I.ok)break;const o=await I.text();if(l<G&&Ae(I.status,o)){const k=Ee(o,I),m=k??j*2**l,b=r?.maxRetryDelayMs??6e4;if(b>0&&k&&k>b){const _=Math.ceil(k/1e3);throw new Error(`Server requested ${_}s retry delay (max: ${Math.ceil(b/1e3)}s). ${X(o)}`)}await L(m,r?.signal);continue}throw new Error(`Cloud Code Assist API error (${I.status}): ${X(o)}`)}catch(y){if(y instanceof Error&&(y.name==="AbortError"||y.message==="Request was aborted"))throw new Error("Request was aborted");if(T=y instanceof Error?y:new Error(String(y)),T.message==="fetch failed"&&T.cause instanceof Error&&(T=new Error(`Network error: ${T.cause.message}`)),l<G){const o=j*2**l;await L(o,r?.signal);continue}throw T}}if(!I||!I.ok)throw T??new Error("Failed to get response after retries");let S=!1;const M=c(()=>{S||(n.push({type:"start",partial:e}),S=!0)},"ensureStarted"),Q=c(()=>{e.content=[],e.usage={input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},e.stopReason="stop",e.errorMessage=void 0,e.timestamp=Date.now(),S=!1},"resetOutput"),Z=c(async l=>{if(!l.body)throw new Error("No response body");let y=!1,o=null;const k=e.content,m=c(()=>k.length-1,"blockIndex"),b=l.body.getReader(),_=new TextDecoder;let v="";const U=c(()=>{b.cancel().catch(()=>{})},"abortHandler");r?.signal?.addEventListener("abort",U);try{for(;;){if(r?.signal?.aborted)throw new Error("Request was aborted");const{done:ee,value:te}=await b.read();if(ee)break;v+=_.decode(te,{stream:!0});const $=v.split(`
2
+ `);v=$.pop()||"";for(const F of $){if(!F.startsWith("data:"))continue;const B=F.slice(5).trim();if(!B)continue;let Y;try{Y=JSON.parse(B)}catch{continue}const C=Y.response;if(!C)continue;const R=C.candidates?.[0];if(R?.content?.parts)for(const u of R.content.parts){if(u.text!==void 0){y=!0;const w=ce(u);(!o||w&&o.type!=="thinking"||!w&&o.type!=="text")&&(o&&(o.type==="text"?n.push({type:"text_end",contentIndex:k.length-1,content:o.text,partial:e}):n.push({type:"thinking_end",contentIndex:m(),content:o.thinking,partial:e})),w?(o={type:"thinking",thinking:"",thinkingSignature:void 0},e.content.push(o),M(),n.push({type:"thinking_start",contentIndex:m(),partial:e})):(o={type:"text",text:""},e.content.push(o),M(),n.push({type:"text_start",contentIndex:m(),partial:e}))),o.type==="thinking"?(o.thinking+=u.text,o.thinkingSignature=W(o.thinkingSignature,u.thoughtSignature),n.push({type:"thinking_delta",contentIndex:m(),delta:u.text,partial:e})):(o.text+=u.text,o.textSignature=W(o.textSignature,u.thoughtSignature),n.push({type:"text_delta",contentIndex:m(),delta:u.text,partial:e}))}if(u.functionCall){y=!0,o&&(o.type==="text"?n.push({type:"text_end",contentIndex:m(),content:o.text,partial:e}):n.push({type:"thinking_end",contentIndex:m(),content:o.thinking,partial:e}),o=null);const w=u.functionCall.id,D={type:"toolCall",id:!w||e.content.some(H=>H.type==="toolCall"&&H.id===w)?`${u.functionCall.name}_${Date.now()}_${++we}`:w,name:u.functionCall.name||"",arguments:u.functionCall.args??{},...u.thoughtSignature&&{thoughtSignature:u.thoughtSignature}};e.content.push(D),M(),n.push({type:"toolcall_start",contentIndex:m(),partial:e}),n.push({type:"toolcall_delta",contentIndex:m(),delta:JSON.stringify(D.arguments),partial:e}),n.push({type:"toolcall_end",contentIndex:m(),toolCall:D,partial:e})}}if(R?.finishReason&&(e.stopReason=le(R.finishReason),e.content.some(u=>u.type==="toolCall")&&(e.stopReason="toolUse")),C.usageMetadata){const u=C.usageMetadata.promptTokenCount||0,w=C.usageMetadata.cachedContentTokenCount||0;e.usage={input:u-w,output:(C.usageMetadata.candidatesTokenCount||0)+(C.usageMetadata.thoughtsTokenCount||0),cacheRead:w,cacheWrite:0,totalTokens:C.usageMetadata.totalTokenCount||0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},re(t,e.usage)}}}}finally{r?.signal?.removeEventListener("abort",U)}return o&&(o.type==="text"?n.push({type:"text_end",contentIndex:m(),content:o.text,partial:e}):n.push({type:"thinking_end",contentIndex:m(),content:o.thinking,partial:e})),y},"streamResponse");let q=!1,A=I;for(let l=0;l<=K;l++){if(r?.signal?.aborted)throw new Error("Request was aborted");if(l>0){const o=Ie*2**(l-1);if(await L(o,r?.signal),!N)throw new Error("Missing request URL");if(A=await fetch(N,{method:"POST",headers:E,body:P,signal:r?.signal}),!A.ok){const k=await A.text();throw new Error(`Cloud Code Assist API error (${A.status}): ${k}`)}}if(await Z(A)){q=!0;break}l<K&&Q()}if(!q)throw new Error("Cloud Code Assist API returned an empty response");if(r?.signal?.aborted)throw new Error("Request was aborted");if(e.stopReason==="aborted"||e.stopReason==="error")throw new Error("An unknown error occurred");n.push({type:"done",reason:e.stopReason,message:e}),n.end()}catch(h){for(const i of e.content)"index"in i&&delete i.index;e.stopReason=r?.signal?.aborted?"aborted":"error",e.errorMessage=h instanceof Error?h.message:JSON.stringify(h),n.push({type:"error",reason:e.stopReason,error:e}),n.end()}})(),n},"streamGoogleGeminiCli"),Oe=c((t,s,r)=>{const n=r?.apiKey;if(!n)throw new Error("Google Cloud Code Assist requires OAuth authentication. Use /login to authenticate.");const e=de(t,r,n),h=r?.toolChoice;if(!r?.reasoning)return O(t,s,{...e,toolChoice:h,thinking:{enabled:!1}});const i=ge(r.reasoning);if(be(t.id))return O(t,s,{...e,toolChoice:h,thinking:{enabled:!0,level:Ne(i,t.id)}});const d={...{minimal:1024,low:2048,medium:8192,high:16384},...r.thinkingBudgets},f=1024;let g=d[i];const p=Math.min((e.maxTokens||0)+g,t.maxTokens);return p<=g&&(g=Math.max(0,p-f)),O(t,s,{...e,toolChoice:h,maxTokens:p,thinking:{enabled:!0,budgetTokens:g}})},"streamSimpleGoogleGeminiCli");function xe(t,s,r,n={},e=!1){const h=se(t,s),i={};n.temperature!==void 0&&(i.temperature=n.temperature),n.maxTokens!==void 0&&(i.maxOutputTokens=n.maxTokens),n.thinking?.enabled&&t.reasoning&&(i.thinkingConfig={includeThoughts:!0},n.thinking.level!==void 0?i.thinkingConfig.thinkingLevel=n.thinking.level:n.thinking.budgetTokens!==void 0&&(i.thinkingConfig.thinkingBudget=n.thinking.budgetTokens));const a={contents:h};if(a.sessionId=n.sessionId,s.systemPrompt&&(a.systemInstruction={parts:[{text:ae(s.systemPrompt)}]}),Object.keys(i).length>0&&(a.generationConfig=i),s.tools&&s.tools.length>0){const d=t.id.startsWith("claude-");a.tools=ie(s.tools,d),n.toolChoice&&(a.toolConfig={functionCallingConfig:{mode:ue(n.toolChoice)}})}if(e){const d=a.systemInstruction?.parts??[];a.systemInstruction={role:"user",parts:[{text:V},{text:`Please ignore following [ignore]${V}[/ignore]`},...d]}}return{project:r,model:t.id,request:a,...e?{requestType:"agent"}:{},userAgent:e?"antigravity":"catui-coding-agent",requestId:`${e?"agent":"catui"}-${Date.now()}-${Math.random().toString(36).slice(2,11)}`}}c(xe,"buildRequest");function Ne(t,s){if(z(s))switch(t){case"minimal":case"low":return"LOW";case"medium":case"high":return"HIGH"}switch(t){case"minimal":return"MINIMAL";case"low":return"LOW";case"medium":return"MEDIUM";case"high":return"HIGH"}}c(Ne,"getGeminiCliThinkingLevel");export{xe as buildRequest,Ee as extractRetryDelay,O as streamGoogleGeminiCli,Oe as streamSimpleGoogleGeminiCli};
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Shared utilities for Google Generative AI and Google Cloud Code Assist providers.
3
+ */
4
+ /**
5
+ * [WHO]: isThinkingPart, retainThoughtSignature, requiresToolCallId, convertMessages, convertTools
6
+ * [FROM]: Depends on @google/genai, ../utils/sanitize-unicode.js, ./transform-messages.js
7
+ * [TO]: Consumed by core/lib/ai/src/index.ts
8
+ * [HERE]: core/lib/ai/src/providers/google-shared.ts -
9
+ */
10
+ import { type Content, FinishReason, FunctionCallingConfigMode, type Part } from "@google/genai";
11
+ import type { Context, Model, StopReason, Tool } from "../types.js";
12
+ type GoogleApiType = "google-generative-ai" | "google-gemini-cli" | "google-vertex";
13
+ /**
14
+ * Determines whether a streamed Gemini `Part` should be treated as "thinking".
15
+ *
16
+ * Protocol note (Gemini / Vertex AI thought signatures):
17
+ * - `thought: true` is the definitive marker for thinking content (thought summaries).
18
+ * - `thoughtSignature` is an encrypted representation of the model's internal thought process
19
+ * used to preserve reasoning context across multi-turn interactions.
20
+ * - `thoughtSignature` can appear on ANY part type (text, functionCall, etc.) - it does NOT
21
+ * indicate the part itself is thinking content.
22
+ * - For non-functionCall responses, the signature appears on the last part for context replay.
23
+ * - When persisting/replaying model outputs, signature-bearing parts must be preserved as-is;
24
+ * do not merge/move signatures across parts.
25
+ *
26
+ * See: https://ai.google.dev/gemini-api/docs/thought-signatures
27
+ */
28
+ export declare function isThinkingPart(part: Pick<Part, "thought" | "thoughtSignature">): boolean;
29
+ /**
30
+ * Retain thought signatures during streaming.
31
+ *
32
+ * Some backends only send `thoughtSignature` on the first delta for a given part/block; later deltas may omit it.
33
+ * This helper preserves the last non-empty signature for the current block.
34
+ *
35
+ * Note: this does NOT merge or move signatures across distinct response parts. It only prevents
36
+ * a signature from being overwritten with `undefined` within the same streamed block.
37
+ */
38
+ export declare function retainThoughtSignature(existing: string | undefined, incoming: string | undefined): string | undefined;
39
+ /**
40
+ * Models via Google APIs that require explicit tool call IDs in function calls/responses.
41
+ */
42
+ export declare function requiresToolCallId(modelId: string): boolean;
43
+ /**
44
+ * Convert internal messages to Gemini Content[] format.
45
+ */
46
+ export declare function convertMessages<T extends GoogleApiType>(model: Model<T>, context: Context): Content[];
47
+ /**
48
+ * Convert tools to Gemini function declarations format.
49
+ *
50
+ * By default uses `parametersJsonSchema` which supports full JSON Schema (including
51
+ * anyOf, oneOf, const, etc.). Set `useParameters` to true to use the legacy `parameters`
52
+ * field instead (OpenAPI 3.03 Schema). This is needed for Cloud Code Assist with Claude
53
+ * models, where the API translates `parameters` into Anthropic's `input_schema`.
54
+ */
55
+ export declare function convertTools(tools: Tool[], useParameters?: boolean): {
56
+ functionDeclarations: Record<string, unknown>[];
57
+ }[] | undefined;
58
+ /**
59
+ * Map tool choice string to Gemini FunctionCallingConfigMode.
60
+ */
61
+ export declare function mapToolChoice(choice: string): FunctionCallingConfigMode;
62
+ /**
63
+ * Map Gemini FinishReason to our StopReason.
64
+ */
65
+ export declare function mapStopReason(reason: FinishReason): StopReason;
66
+ /**
67
+ * Map string finish reason to our StopReason (for raw API responses).
68
+ */
69
+ export declare function mapStopReasonString(reason: string): StopReason;
70
+ export {};
@@ -0,0 +1,2 @@
1
+ var O=Object.defineProperty;var i=(t,s)=>O(t,"name",{value:s,configurable:!0});import{FinishReason as r,FunctionCallingConfigMode as g}from"@google/genai";import{sanitizeSurrogates as f}from"../utils/sanitize-unicode.js";import{transformMessages as N}from"./transform-messages.js";function F(t){return t.thought===!0}i(F,"isThinkingPart");function G(t,s){return typeof s=="string"&&s.length>0?s:t}i(G,"retainThoughtSignature");const _=/^[A-Za-z0-9+/]+={0,2}$/;function R(t){return!t||t.length%4!==0?!1:_.test(t)}i(R,"isValidThoughtSignature");function d(t,s){return t&&R(s)?s:void 0}i(d,"resolveThoughtSignature");function T(t){return t.startsWith("claude-")||t.startsWith("gpt-oss-")}i(T,"requiresToolCallId");function L(t,s){const o=[],I=i(n=>T(t.id)?n.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,64):n,"normalizeToolCallId"),A=N(s.messages,t,I);for(const n of A)if(n.role==="user")if(typeof n.content=="string")o.push({role:"user",parts:[{text:f(n.content)}]});else{const a=n.content.map(e=>e.type==="text"?{text:f(e.text)}:e.type==="document"?{text:"[PDF document - content not available in Google format]"}:{inlineData:{mimeType:e.mimeType,data:e.data}}),c=t.input.includes("image")?a:a.filter(e=>e.text!==void 0);if(c.length===0)continue;o.push({role:"user",parts:c})}else if(n.role==="assistant"){const a=[],c=n.provider===t.provider&&n.model===t.id;for(const e of n.content)if(e.type==="text"){if(!e.text||e.text.trim()==="")continue;const u=d(c,e.textSignature);a.push({text:f(e.text),...u&&{thoughtSignature:u}})}else if(e.type==="thinking"){if(!e.thinking||e.thinking.trim()==="")continue;if(c){const u=d(c,e.thinkingSignature);a.push({thought:!0,text:f(e.thinking),...u&&{thoughtSignature:u}})}else a.push({text:f(e.thinking)})}else if(e.type==="toolCall"){const u=d(c,e.thoughtSignature);if(t.id.toLowerCase().includes("gemini-3")&&!u){const p=JSON.stringify(e.arguments??{},null,2);a.push({text:`[Historical context: a different model called tool "${e.name}" with arguments: ${p}. Do not mimic this format - use proper function calling.]`})}else{const p={functionCall:{name:e.name,args:e.arguments??{},...T(t.id)?{id:e.id}:{}}};u&&(p.thoughtSignature=u),a.push(p)}}if(a.length===0)continue;o.push({role:"model",parts:a})}else if(n.role==="toolResult"){const c=n.content.filter(l=>l.type==="text").map(l=>l.text).join(`
2
+ `),e=t.input.includes("image")?n.content.filter(l=>l.type==="image"):[],u=c.length>0,h=e.length>0,p=t.id.includes("gemini-3"),x=u?f(c):h?"(see attached image)":"",S=e.map(l=>({inlineData:{mimeType:l.mimeType,data:l.data}})),C=T(t.id),E={functionResponse:{name:n.toolName,response:n.isError?{error:x}:{output:x},...h&&p&&{parts:S},...C?{id:n.toolCallId}:{}}},m=o[o.length-1];m?.role==="user"&&m.parts?.some(l=>l.functionResponse)?m.parts.push(E):o.push({role:"user",parts:[E]}),h&&!p&&o.push({role:"user",parts:[{text:"Tool result image:"},...S]})}return o}i(L,"convertMessages");function v(t,s=!1){if(t.length!==0)return[{functionDeclarations:t.map(o=>({name:o.name,description:o.description,...s?{parameters:o.parameters}:{parametersJsonSchema:o.parameters}}))}]}i(v,"convertTools");function k(t){switch(t){case"auto":return g.AUTO;case"none":return g.NONE;case"any":return g.ANY;default:return g.AUTO}}i(k,"mapToolChoice");function w(t){switch(t){case r.STOP:return"stop";case r.MAX_TOKENS:return"length";case r.BLOCKLIST:case r.PROHIBITED_CONTENT:case r.SPII:case r.SAFETY:case r.IMAGE_SAFETY:case r.IMAGE_PROHIBITED_CONTENT:case r.IMAGE_RECITATION:case r.IMAGE_OTHER:case r.RECITATION:case r.FINISH_REASON_UNSPECIFIED:case r.OTHER:case r.LANGUAGE:case r.MALFORMED_FUNCTION_CALL:case r.UNEXPECTED_TOOL_CALL:case r.NO_IMAGE:return"error";default:{const s=t;throw new Error(`Unhandled stop reason: ${s}`)}}}i(w,"mapStopReason");function U(t){switch(t){case"STOP":return"stop";case"MAX_TOKENS":return"length";default:return"error"}}i(U,"mapStopReasonString");export{L as convertMessages,v as convertTools,F as isThinkingPart,w as mapStopReason,U as mapStopReasonString,k as mapToolChoice,T as requiresToolCallId,G as retainThoughtSignature};
@@ -0,0 +1,20 @@
1
+ /**
2
+ * [WHO]: GoogleVertexOptions, streamGoogleVertex, streamSimpleGoogleVertex
3
+ * [FROM]: Depends on ../models.js, ../utils/event-stream.js, ../utils/sanitize-unicode.js, ./simple-options.js
4
+ * [TO]: Consumed by core/lib/ai/src/index.ts
5
+ * [HERE]: core/lib/ai/src/providers/google-vertex.ts -
6
+ */
7
+ import type { SimpleStreamOptions, StreamFunction, StreamOptions } from "../types.js";
8
+ import type { GoogleThinkingLevel } from "./google-gemini-cli.js";
9
+ export interface GoogleVertexOptions extends StreamOptions {
10
+ toolChoice?: "auto" | "none" | "any";
11
+ thinking?: {
12
+ enabled: boolean;
13
+ budgetTokens?: number;
14
+ level?: GoogleThinkingLevel;
15
+ };
16
+ project?: string;
17
+ location?: string;
18
+ }
19
+ export declare const streamGoogleVertex: StreamFunction<"google-vertex", GoogleVertexOptions>;
20
+ export declare const streamSimpleGoogleVertex: StreamFunction<"google-vertex", SimpleStreamOptions>;
@@ -0,0 +1 @@
1
+ var T=Object.defineProperty;var c=(e,o)=>T(e,"name",{value:o,configurable:!0});import{GoogleGenAI as E,ThinkingLevel as p}from"@google/genai";import{calculateCost as L}from"../models.js";import{AssistantMessageEventStream as b}from"../utils/event-stream.js";import{sanitizeSurrogates as w}from"../utils/sanitize-unicode.js";import{convertMessages as G,convertTools as M,isThinkingPart as S,mapStopReason as R,mapToolChoice as v,retainThoughtSignature as y}from"./google-shared.js";import{buildBaseOptions as N,clampReasoning as P}from"./simple-options.js";const D="v1",A={THINKING_LEVEL_UNSPECIFIED:p.THINKING_LEVEL_UNSPECIFIED,MINIMAL:p.MINIMAL,LOW:p.LOW,MEDIUM:p.MEDIUM,HIGH:p.HIGH};let U=0;const k=c((e,o,n)=>{const i=new b;return(async()=>{const t={role:"assistant",content:[],api:"google-vertex",provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{const s=V(n),u=j(n),h=H(e,s,u,n?.headers),I=W(e,o,n);n?.onPayload?.(I);const _=await h.models.generateContentStream(I);i.push({type:"start",partial:t});let a=null;const C=t.content,l=c(()=>C.length-1,"blockIndex");for await(const d of _){const f=d.candidates?.[0];if(f?.content?.parts)for(const r of f.content.parts){if(r.text!==void 0){const g=S(r);(!a||g&&a.type!=="thinking"||!g&&a.type!=="text")&&(a&&(a.type==="text"?i.push({type:"text_end",contentIndex:C.length-1,content:a.text,partial:t}):i.push({type:"thinking_end",contentIndex:l(),content:a.thinking,partial:t})),g?(a={type:"thinking",thinking:"",thinkingSignature:void 0},t.content.push(a),i.push({type:"thinking_start",contentIndex:l(),partial:t})):(a={type:"text",text:""},t.content.push(a),i.push({type:"text_start",contentIndex:l(),partial:t}))),a.type==="thinking"?(a.thinking+=r.text,a.thinkingSignature=y(a.thinkingSignature,r.thoughtSignature),i.push({type:"thinking_delta",contentIndex:l(),delta:r.text,partial:t})):(a.text+=r.text,a.textSignature=y(a.textSignature,r.thoughtSignature),i.push({type:"text_delta",contentIndex:l(),delta:r.text,partial:t}))}if(r.functionCall){a&&(a.type==="text"?i.push({type:"text_end",contentIndex:l(),content:a.text,partial:t}):i.push({type:"thinking_end",contentIndex:l(),content:a.thinking,partial:t}),a=null);const g=r.functionCall.id,m={type:"toolCall",id:!g||t.content.some(x=>x.type==="toolCall"&&x.id===g)?`${r.functionCall.name}_${Date.now()}_${++U}`:g,name:r.functionCall.name||"",arguments:r.functionCall.args??{},...r.thoughtSignature&&{thoughtSignature:r.thoughtSignature}};t.content.push(m),i.push({type:"toolcall_start",contentIndex:l(),partial:t}),i.push({type:"toolcall_delta",contentIndex:l(),delta:JSON.stringify(m.arguments),partial:t}),i.push({type:"toolcall_end",contentIndex:l(),toolCall:m,partial:t})}}f?.finishReason&&(t.stopReason=R(f.finishReason),t.content.some(r=>r.type==="toolCall")&&(t.stopReason="toolUse")),d.usageMetadata&&(t.usage={input:d.usageMetadata.promptTokenCount||0,output:(d.usageMetadata.candidatesTokenCount||0)+(d.usageMetadata.thoughtsTokenCount||0),cacheRead:d.usageMetadata.cachedContentTokenCount||0,cacheWrite:0,totalTokens:d.usageMetadata.totalTokenCount||0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},L(e,t.usage))}if(a&&(a.type==="text"?i.push({type:"text_end",contentIndex:l(),content:a.text,partial:t}):i.push({type:"thinking_end",contentIndex:l(),content:a.thinking,partial:t})),n?.signal?.aborted)throw new Error("Request was aborted");if(t.stopReason==="aborted"||t.stopReason==="error")throw new Error("An unknown error occurred");i.push({type:"done",reason:t.stopReason,message:t}),i.end()}catch(s){for(const u of t.content)"index"in u&&delete u.index;t.stopReason=n?.signal?.aborted?"aborted":"error",t.errorMessage=s instanceof Error?s.message:JSON.stringify(s),i.push({type:"error",reason:t.stopReason,error:t}),i.end()}})(),i},"streamGoogleVertex"),et=c((e,o,n)=>{const i=N(e,n,void 0),t=n?.toolChoice;if(!n?.reasoning)return k(e,o,{...i,toolChoice:t,thinking:{enabled:!1}});const s=P(n.reasoning),u=e;return O(u)||J(u)?k(e,o,{...i,toolChoice:t,thinking:{enabled:!0,level:B(s,u)}}):k(e,o,{...i,toolChoice:t,thinking:{enabled:!0,budgetTokens:q(u,s,n.thinkingBudgets)}})},"streamSimpleGoogleVertex");function H(e,o,n,i){const t={};(e.headers||i)&&(t.headers={...e.headers,...i});const s=Object.values(t).some(Boolean);return new E({vertexai:!0,project:o,location:n,apiVersion:D,httpOptions:s?t:void 0})}c(H,"createClient");function V(e){const o=e?.project||process.env.GOOGLE_CLOUD_PROJECT||process.env.GCLOUD_PROJECT;if(!o)throw new Error("Vertex AI requires a project ID. Set GOOGLE_CLOUD_PROJECT/GCLOUD_PROJECT or pass project in options.");return o}c(V,"resolveProject");function j(e){const o=e?.location||process.env.GOOGLE_CLOUD_LOCATION;if(!o)throw new Error("Vertex AI requires a location. Set GOOGLE_CLOUD_LOCATION or pass location in options.");return o}c(j,"resolveLocation");function W(e,o,n={}){const i=G(e,o),t={};n.temperature!==void 0&&(t.temperature=n.temperature),n.maxTokens!==void 0&&(t.maxOutputTokens=n.maxTokens);const s={...Object.keys(t).length>0&&t,...o.systemPrompt&&{systemInstruction:w(o.systemPrompt)},...o.tools&&o.tools.length>0&&{tools:M(o.tools)}};if(o.tools&&o.tools.length>0&&n.toolChoice?s.toolConfig={functionCallingConfig:{mode:v(n.toolChoice)}}:s.toolConfig=void 0,n.thinking?.enabled&&e.reasoning){const h={includeThoughts:!0};n.thinking.level!==void 0?h.thinkingLevel=A[n.thinking.level]:n.thinking.budgetTokens!==void 0&&(h.thinkingBudget=n.thinking.budgetTokens),s.thinkingConfig=h}if(n.signal){if(n.signal.aborted)throw new Error("Request aborted");s.abortSignal=n.signal}return{model:e.id,contents:i,config:s}}c(W,"buildParams");function O(e){return e.id.includes("3-pro")}c(O,"isGemini3ProModel");function J(e){return e.id.includes("3-flash")}c(J,"isGemini3FlashModel");function B(e,o){if(O(o))switch(e){case"minimal":case"low":return"LOW";case"medium":case"high":return"HIGH"}switch(e){case"minimal":return"MINIMAL";case"low":return"LOW";case"medium":return"MEDIUM";case"high":return"HIGH"}}c(B,"getGemini3ThinkingLevel");function q(e,o,n){return n?.[o]!==void 0?n[o]:e.id.includes("2.5-pro")?{minimal:128,low:2048,medium:8192,high:32768}[o]:e.id.includes("2.5-flash")?{minimal:128,low:2048,medium:8192,high:24576}[o]:-1}c(q,"getGoogleBudget");export{k as streamGoogleVertex,et as streamSimpleGoogleVertex};
@@ -0,0 +1,18 @@
1
+ /**
2
+ * [WHO]: GoogleOptions, streamGoogle, streamSimpleGoogle
3
+ * [FROM]: Depends on ../env-api-keys.js, ../models.js, ../utils/event-stream.js, ../utils/sanitize-unicode.js, ./simple-options.js
4
+ * [TO]: Consumed by core/lib/ai/src/index.ts
5
+ * [HERE]: core/lib/ai/src/providers/google.ts -
6
+ */
7
+ import type { SimpleStreamOptions, StreamFunction, StreamOptions } from "../types.js";
8
+ import type { GoogleThinkingLevel } from "./google-gemini-cli.js";
9
+ export interface GoogleOptions extends StreamOptions {
10
+ toolChoice?: "auto" | "none" | "any";
11
+ thinking?: {
12
+ enabled: boolean;
13
+ budgetTokens?: number;
14
+ level?: GoogleThinkingLevel;
15
+ };
16
+ }
17
+ export declare const streamGoogle: StreamFunction<"google-generative-ai", GoogleOptions>;
18
+ export declare const streamSimpleGoogle: StreamFunction<"google-generative-ai", SimpleStreamOptions>;
@@ -0,0 +1 @@
1
+ var w=Object.defineProperty;var c=(e,o)=>w(e,"name",{value:o,configurable:!0});import{GoogleGenAI as S}from"@google/genai";import{getEnvApiKey as x}from"../env-api-keys.js";import{calculateCost as T}from"../models.js";import{AssistantMessageEventStream as R}from"../utils/event-stream.js";import{sanitizeSurrogates as v}from"../utils/sanitize-unicode.js";import{convertMessages as M,convertTools as _,isThinkingPart as G,mapStopReason as O,mapToolChoice as E,retainThoughtSignature as C}from"./google-shared.js";import{buildBaseOptions as P,clampReasoning as A}from"./simple-options.js";let N=0;const m=c((e,o,n)=>{const i=new R;return(async()=>{const t={role:"assistant",content:[],api:"google-generative-ai",provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{const s=n?.apiKey||x(e.provider)||"",g=W(e,s,n?.headers),u=K(e,o,n);n?.onPayload?.(u);const I=await g.models.generateContentStream(u);i.push({type:"start",partial:t});let a=null;const k=t.content,l=c(()=>k.length-1,"blockIndex");for await(const d of I){const p=d.candidates?.[0];if(p?.content?.parts)for(const r of p.content.parts){if(r.text!==void 0){const h=G(r);(!a||h&&a.type!=="thinking"||!h&&a.type!=="text")&&(a&&(a.type==="text"?i.push({type:"text_end",contentIndex:k.length-1,content:a.text,partial:t}):i.push({type:"thinking_end",contentIndex:l(),content:a.thinking,partial:t})),h?(a={type:"thinking",thinking:"",thinkingSignature:void 0},t.content.push(a),i.push({type:"thinking_start",contentIndex:l(),partial:t})):(a={type:"text",text:""},t.content.push(a),i.push({type:"text_start",contentIndex:l(),partial:t}))),a.type==="thinking"?(a.thinking+=r.text,a.thinkingSignature=C(a.thinkingSignature,r.thoughtSignature),i.push({type:"thinking_delta",contentIndex:l(),delta:r.text,partial:t})):(a.text+=r.text,a.textSignature=C(a.textSignature,r.thoughtSignature),i.push({type:"text_delta",contentIndex:l(),delta:r.text,partial:t}))}if(r.functionCall){a&&(a.type==="text"?i.push({type:"text_end",contentIndex:l(),content:a.text,partial:t}):i.push({type:"thinking_end",contentIndex:l(),content:a.thinking,partial:t}),a=null);const h=r.functionCall.id,f={type:"toolCall",id:!h||t.content.some(y=>y.type==="toolCall"&&y.id===h)?`${r.functionCall.name}_${Date.now()}_${++N}`:h,name:r.functionCall.name||"",arguments:r.functionCall.args??{},...r.thoughtSignature&&{thoughtSignature:r.thoughtSignature}};t.content.push(f),i.push({type:"toolcall_start",contentIndex:l(),partial:t}),i.push({type:"toolcall_delta",contentIndex:l(),delta:JSON.stringify(f.arguments),partial:t}),i.push({type:"toolcall_end",contentIndex:l(),toolCall:f,partial:t})}}p?.finishReason&&(t.stopReason=O(p.finishReason),t.content.some(r=>r.type==="toolCall")&&(t.stopReason="toolUse")),d.usageMetadata&&(t.usage={input:d.usageMetadata.promptTokenCount||0,output:(d.usageMetadata.candidatesTokenCount||0)+(d.usageMetadata.thoughtsTokenCount||0),cacheRead:d.usageMetadata.cachedContentTokenCount||0,cacheWrite:0,totalTokens:d.usageMetadata.totalTokenCount||0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},T(e,t.usage))}if(a&&(a.type==="text"?i.push({type:"text_end",contentIndex:l(),content:a.text,partial:t}):i.push({type:"thinking_end",contentIndex:l(),content:a.thinking,partial:t})),n?.signal?.aborted)throw new Error("Request was aborted");if(t.stopReason==="aborted"||t.stopReason==="error")throw new Error("An unknown error occurred");i.push({type:"done",reason:t.stopReason,message:t}),i.end()}catch(s){for(const g of t.content)"index"in g&&delete g.index;t.stopReason=n?.signal?.aborted?"aborted":"error",t.errorMessage=s instanceof Error?s.message:JSON.stringify(s),i.push({type:"error",reason:t.stopReason,error:t}),i.end()}})(),i},"streamGoogle"),X=c((e,o,n)=>{const i=n?.apiKey||x(e.provider);if(!i)throw new Error(`No API key for provider: ${e.provider}`);const t=P(e,n,i),s=n?.toolChoice;if(!n?.reasoning)return m(e,o,{...t,toolChoice:s,thinking:{enabled:!1}});const g=A(n.reasoning),u=e;return b(u)||L(u)?m(e,o,{...t,toolChoice:s,thinking:{enabled:!0,level:U(g,u)}}):m(e,o,{...t,toolChoice:s,thinking:{enabled:!0,budgetTokens:B(u,g,n.thinkingBudgets)}})},"streamSimpleGoogle");function W(e,o,n){const i={};return e.baseUrl&&(i.baseUrl=e.baseUrl,i.apiVersion=""),(e.headers||n)&&(i.headers={...e.headers,...n}),new S({apiKey:o,httpOptions:Object.keys(i).length>0?i:void 0})}c(W,"createClient");function K(e,o,n={}){const i=M(e,o),t={};n.temperature!==void 0&&(t.temperature=n.temperature),n.maxTokens!==void 0&&(t.maxOutputTokens=n.maxTokens);const s={...Object.keys(t).length>0&&t,...o.systemPrompt&&{systemInstruction:v(o.systemPrompt)},...o.tools&&o.tools.length>0&&{tools:_(o.tools)}};if(o.tools&&o.tools.length>0&&n.toolChoice?s.toolConfig={functionCallingConfig:{mode:E(n.toolChoice)}}:s.toolConfig=void 0,n.thinking?.enabled&&e.reasoning){const u={includeThoughts:!0};n.thinking.level!==void 0?u.thinkingLevel=n.thinking.level:n.thinking.budgetTokens!==void 0&&(u.thinkingBudget=n.thinking.budgetTokens),s.thinkingConfig=u}if(n.signal){if(n.signal.aborted)throw new Error("Request aborted");s.abortSignal=n.signal}return{model:e.id,contents:i,config:s}}c(K,"buildParams");function b(e){return e.id.includes("3-pro")}c(b,"isGemini3ProModel");function L(e){return e.id.includes("3-flash")}c(L,"isGemini3FlashModel");function U(e,o){if(b(o))switch(e){case"minimal":case"low":return"LOW";case"medium":case"high":return"HIGH"}switch(e){case"minimal":return"MINIMAL";case"low":return"LOW";case"medium":return"MEDIUM";case"high":return"HIGH"}}c(U,"getGemini3ThinkingLevel");function B(e,o,n){return n?.[o]!==void 0?n[o]:e.id.includes("2.5-pro")?{minimal:128,low:2048,medium:8192,high:32768}[o]:e.id.includes("2.5-flash")?{minimal:128,low:2048,medium:8192,high:24576}[o]:-1}c(B,"getGoogleBudget");export{m as streamGoogle,X as streamSimpleGoogle};
@@ -0,0 +1,8 @@
1
+ import type { SimpleStreamOptions, StreamFunction, StreamOptions } from "../types.js";
2
+ export interface OpenAICodexResponsesOptions extends StreamOptions {
3
+ reasoningEffort?: "none" | "minimal" | "low" | "medium" | "high" | "xhigh";
4
+ reasoningSummary?: "auto" | "concise" | "detailed" | "off" | "on" | null;
5
+ textVerbosity?: "low" | "medium" | "high";
6
+ }
7
+ export declare const streamOpenAICodexResponses: StreamFunction<"openai-codex-responses", OpenAICodexResponsesOptions>;
8
+ export declare const streamSimpleOpenAICodexResponses: StreamFunction<"openai-codex-responses", SimpleStreamOptions>;
@@ -0,0 +1,7 @@
1
+ var N=Object.defineProperty;var a=(e,t)=>N(e,"name",{value:t,configurable:!0});let g=null;typeof process<"u"&&(process.versions?.node||process.versions?.bun)&&import("node:os").then(e=>{g=e});import{getEnvApiKey as R}from"../env-api-keys.js";import{supportsXhigh as q}from"../models.js";import{AssistantMessageEventStream as B}from"../utils/event-stream.js";import{convertResponsesMessages as D,convertResponsesTools as M,processResponsesStream as T}from"./openai-responses-shared.js";import{buildBaseOptions as P,clampReasoning as U}from"./simple-options.js";const I="https://chatgpt.com/backend-api",J="https://api.openai.com/auth",S=3,_=1e3,K=new Set(["openai","openai-codex","opencode"]),H=new Set(["completed","incomplete","failed","cancelled","queued","in_progress"]);function X(e,t){return e===429||e===500||e===502||e===503||e===504?!0:/rate.?limit|overloaded|service.?unavailable|upstream.?connect|connection.?refused/i.test(t)}a(X,"isRetryableError");function x(e,t){return new Promise((r,n)=>{if(t?.aborted){n(new Error("Request was aborted"));return}const o=setTimeout(r,e);t?.addEventListener("abort",()=>{clearTimeout(o),n(new Error("Request was aborted"))})})}a(x,"sleep");const z=a((e,t,r)=>{const n=new B;return(async()=>{const o={role:"assistant",content:[],api:"openai-codex-responses",provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{const s=r?.apiKey||R(e.provider)||"";if(!s)throw new Error(`No API key for provider: ${e.provider}`);const c=ue(s),i=j(e,t,r);r?.onPayload?.(i);const u=de(e.headers,r?.headers,c,s,r?.sessionId),l=JSON.stringify(i),y=r?.transport||"sse";if(y!=="sse"){let w=!1;try{if(await ie(V(e.baseUrl),i,u,o,n,e,()=>{w=!0},r),r?.signal?.aborted)throw new Error("Request was aborted");n.push({type:"done",reason:o.stopReason,message:o}),n.end();return}catch(d){if(y==="websocket"||w)throw d}}let p,f;for(let w=0;w<=S;w++){if(r?.signal?.aborted)throw new Error("Request was aborted");try{if(p=await fetch(A(e.baseUrl),{method:"POST",headers:u,body:l,signal:r?.signal}),p.ok)break;const d=await p.text();if(w<S&&X(p.status,d)){const $=_*2**w;await x($,r?.signal);continue}const b=new Response(d,{status:p.status,statusText:p.statusText}),v=await ce(b);throw new Error(v.friendlyMessage||v.message)}catch(d){if(d instanceof Error&&(d.name==="AbortError"||d.message==="Request was aborted"))throw new Error("Request was aborted");if(f=d instanceof Error?d:new Error(String(d)),w<S&&!f.message.includes("usage limit")){const b=_*2**w;await x(b,r?.signal);continue}throw f}}if(!p?.ok)throw f??new Error("Failed after retries");if(!p.body)throw new Error("No response body");if(n.push({type:"start",partial:o}),await Y(p,o,n,e),r?.signal?.aborted)throw new Error("Request was aborted");n.push({type:"done",reason:o.stopReason,message:o}),n.end()}catch(s){o.stopReason=r?.signal?.aborted?"aborted":"error",o.errorMessage=s instanceof Error?s.message:String(s),n.push({type:"error",reason:o.stopReason,error:o}),n.end()}})(),n},"streamOpenAICodexResponses"),he=a((e,t,r)=>{const n=r?.apiKey||R(e.provider);if(!n)throw new Error(`No API key for provider: ${e.provider}`);const o=P(e,r,n),s=q(e)?r?.reasoning:U(r?.reasoning);return z(e,t,{...o,reasoningEffort:s})},"streamSimpleOpenAICodexResponses");function j(e,t,r){const n=D(e,t,K,{includeSystemPrompt:!1}),o={model:e.id,store:!1,stream:!0,instructions:t.systemPrompt,input:n,text:{verbosity:r?.textVerbosity||"medium"},include:["reasoning.encrypted_content"],prompt_cache_key:r?.sessionId,tool_choice:"auto",parallel_tool_calls:!0};return r?.temperature!==void 0&&(o.temperature=r.temperature),t.tools&&(o.tools=M(t.tools,{strict:null})),r?.reasoningEffort!==void 0&&(o.reasoning={effort:F(e.id,r.reasoningEffort),summary:r.reasoningSummary??"auto"}),o}a(j,"buildRequestBody");function F(e,t){const r=e.includes("/")?e.split("/").pop():e;return(r.startsWith("gpt-5.2")||r.startsWith("gpt-5.3"))&&t==="minimal"?"low":r==="gpt-5.1"&&t==="xhigh"?"high":r==="gpt-5.1-codex-mini"?t==="high"||t==="xhigh"?"high":"medium":t}a(F,"clampReasoningEffort");function A(e){const r=(e&&e.trim().length>0?e:I).replace(/\/+$/,"");return r.endsWith("/codex/responses")?r:r.endsWith("/codex")?`${r}/responses`:`${r}/codex/responses`}a(A,"resolveCodexUrl");function V(e){const t=new URL(A(e));return t.protocol==="https:"&&(t.protocol="wss:"),t.protocol==="http:"&&(t.protocol="ws:"),t.toString()}a(V,"resolveCodexWebSocketUrl");async function Y(e,t,r,n){await T(L(Q(e)),t,r,n)}a(Y,"processStream");async function*L(e){for await(const t of e){const r=typeof t.type=="string"?t.type:void 0;if(r){if(r==="error"){const n=t.code||"",o=t.message||"";throw new Error(`Codex error: ${o||n||JSON.stringify(t)}`)}if(r==="response.failed"){const n=t.response?.error?.message;throw new Error(n||"Codex response failed")}if(r==="response.done"||r==="response.completed"){const n=t.response,o=n&&{...n,status:G(n.status)};yield{...t,type:"response.completed",response:o};continue}yield t}}}a(L,"mapCodexEvents");function G(e){if(typeof e=="string")return H.has(e)?e:void 0}a(G,"normalizeCodexStatus");async function*Q(e){if(!e.body)return;const t=e.body.getReader(),r=new TextDecoder;let n="";for(;;){const{done:o,value:s}=await t.read();if(o)break;n+=r.decode(s,{stream:!0});let c=n.indexOf(`
2
+
3
+ `);for(;c!==-1;){const i=n.slice(0,c);n=n.slice(c+2);const u=i.split(`
4
+ `).filter(l=>l.startsWith("data:")).map(l=>l.slice(5).trim());if(u.length>0){const l=u.join(`
5
+ `).trim();if(l&&l!=="[DONE]")try{yield JSON.parse(l)}catch{}}c=n.indexOf(`
6
+
7
+ `)}}}a(Q,"parseSSE");const Z="responses_websockets=2026-02-06",ee=300*1e3,m=new Map;function te(){const e=globalThis.WebSocket;return typeof e!="function"?null:e}a(te,"getWebSocketConstructor");function re(e){const t={};for(const[r,n]of e.entries())t[r]=n;return t}a(re,"headersToRecord");function ne(e){const t=e.readyState;return typeof t=="number"?t:void 0}a(ne,"getWebSocketReadyState");function E(e){const t=ne(e);return t===void 0||t===1}a(E,"isWebSocketReusable");function h(e,t=1e3,r="done"){try{e.close(t,r)}catch{}}a(h,"closeWebSocketSilently");function O(e,t){t.idleTimer&&clearTimeout(t.idleTimer),t.idleTimer=setTimeout(()=>{t.busy||(h(t.socket,1e3,"idle_timeout"),m.delete(e))},ee)}a(O,"scheduleSessionWebSocketExpiry");async function k(e,t,r){const n=te();if(!n)throw new Error("WebSocket transport is not available in this runtime");const o=re(t);return o["OpenAI-Beta"]=Z,new Promise((s,c)=>{let i=!1,u;try{u=new n(e,{headers:o})}catch(d){c(d instanceof Error?d:new Error(String(d)));return}const l=a(()=>{i||(i=!0,w(),s(u))},"onOpen"),y=a(d=>{i||(i=!0,w(),c(W(d)))},"onError"),p=a(d=>{i||(i=!0,w(),c(C(d)))},"onClose"),f=a(()=>{i||(i=!0,w(),u.close(1e3,"aborted"),c(new Error("Request was aborted")))},"onAbort"),w=a(()=>{u.removeEventListener("open",l),u.removeEventListener("error",y),u.removeEventListener("close",p),r?.removeEventListener("abort",f)},"cleanup");u.addEventListener("open",l),u.addEventListener("error",y),u.addEventListener("close",p),r?.addEventListener("abort",f)})}a(k,"connectWebSocket");async function oe(e,t,r,n){if(!r){const i=await k(e,t,n);return{socket:i,release:a(({keep:u}={})=>{if(u===!1){h(i);return}h(i)},"release")}}const o=m.get(r);if(o){if(o.idleTimer&&(clearTimeout(o.idleTimer),o.idleTimer=void 0),!o.busy&&E(o.socket))return o.busy=!0,{socket:o.socket,release:a(({keep:i}={})=>{if(!i||!E(o.socket)){h(o.socket),m.delete(r);return}o.busy=!1,O(r,o)},"release")};if(o.busy){const i=await k(e,t,n);return{socket:i,release:a(()=>{h(i)},"release")}}E(o.socket)||(h(o.socket),m.delete(r))}const s=await k(e,t,n),c={socket:s,busy:!0};return m.set(r,c),{socket:s,release:a(({keep:i}={})=>{if(!i||!E(c.socket)){h(c.socket),c.idleTimer&&clearTimeout(c.idleTimer),m.get(r)===c&&m.delete(r);return}c.busy=!1,O(r,c)},"release")}}a(oe,"acquireWebSocket");function W(e){if(e&&typeof e=="object"&&"message"in e){const t=e.message;if(typeof t=="string"&&t.length>0)return new Error(t)}return new Error("WebSocket error")}a(W,"extractWebSocketError");function C(e){if(e&&typeof e=="object"){const t="code"in e?e.code:void 0,r="reason"in e?e.reason:void 0,n=typeof t=="number"?` ${t}`:"",o=typeof r=="string"&&r.length>0?` ${r}`:"";return new Error(`WebSocket closed${n}${o}`.trim())}return new Error("WebSocket closed")}a(C,"extractWebSocketCloseError");async function se(e){if(typeof e=="string")return e;if(e instanceof ArrayBuffer)return new TextDecoder().decode(new Uint8Array(e));if(ArrayBuffer.isView(e)){const t=e;return new TextDecoder().decode(new Uint8Array(t.buffer,t.byteOffset,t.byteLength))}if(e&&typeof e=="object"&&"arrayBuffer"in e){const r=await e.arrayBuffer();return new TextDecoder().decode(new Uint8Array(r))}return null}a(se,"decodeWebSocketData");async function*ae(e,t){const r=[];let n=null,o=!1,s=null,c=!1;const i=a(()=>{if(!n)return;const f=n;n=null,f()},"wake"),u=a(f=>{(async()=>{if(!f||typeof f!="object"||!("data"in f))return;const w=await se(f.data);if(w)try{const d=JSON.parse(w),b=typeof d.type=="string"?d.type:"";(b==="response.completed"||b==="response.done")&&(c=!0,o=!0),r.push(d),i()}catch{}})()},"onMessage"),l=a(f=>{s=W(f),o=!0,i()},"onError"),y=a(f=>{if(c){o=!0,i();return}s||(s=C(f)),o=!0,i()},"onClose"),p=a(()=>{s=new Error("Request was aborted"),o=!0,i()},"onAbort");e.addEventListener("message",u),e.addEventListener("error",l),e.addEventListener("close",y),t?.addEventListener("abort",p);try{for(;;){if(t?.aborted)throw new Error("Request was aborted");if(r.length>0){yield r.shift();continue}if(o)break;await new Promise(f=>{n=f})}if(s)throw s;if(!c)throw new Error("WebSocket stream closed before response.completed")}finally{e.removeEventListener("message",u),e.removeEventListener("error",l),e.removeEventListener("close",y),t?.removeEventListener("abort",p)}}a(ae,"parseWebSocket");async function ie(e,t,r,n,o,s,c,i){const{socket:u,release:l}=await oe(e,r,i?.sessionId,i?.signal);let y=!0;try{u.send(JSON.stringify({type:"response.create",...t})),c(),o.push({type:"start",partial:n}),await T(L(ae(u,i?.signal)),n,o,s),i?.signal?.aborted&&(y=!1)}catch(p){throw y=!1,p}finally{l({keep:y})}}a(ie,"processWebSocketStream");async function ce(e){const t=await e.text();let r=t||e.statusText||"Request failed",n;try{const s=JSON.parse(t)?.error;if(s){const c=s.code||s.type||"";if(/usage_limit_reached|usage_not_included|rate_limit_exceeded/i.test(c)||e.status===429){const i=s.plan_type?` (${s.plan_type.toLowerCase()} plan)`:"",u=s.resets_at?Math.max(0,Math.round((s.resets_at*1e3-Date.now())/6e4)):void 0,l=u!==void 0?` Try again in ~${u} min.`:"";n=`You have hit your ChatGPT usage limit${i}.${l}`.trim()}r=s.message||n||r}}catch{}return{message:r,friendlyMessage:n}}a(ce,"parseErrorResponse");function ue(e){try{const t=e.split(".");if(t.length!==3)throw new Error("Invalid token");const n=JSON.parse(atob(t[1]))?.[J]?.chatgpt_account_id;if(!n)throw new Error("No account ID in token");return n}catch{throw new Error("Failed to extract accountId from token")}}a(ue,"extractAccountId");function de(e,t,r,n,o){const s=new Headers(e);s.set("Authorization",`Bearer ${n}`),s.set("chatgpt-account-id",r),s.set("OpenAI-Beta","responses=experimental"),s.set("originator","catui");const c=g?`catui (${g.platform()} ${g.release()}; ${g.arch()})`:"catui (browser)";s.set("User-Agent",c),s.set("accept","text/event-stream"),s.set("content-type","application/json");for(const[i,u]of Object.entries(t||{}))s.set(i,u);return o&&s.set("session_id",o),s}a(de,"buildHeaders");export{z as streamOpenAICodexResponses,he as streamSimpleOpenAICodexResponses};
@@ -0,0 +1,20 @@
1
+ /**
2
+ * [WHO]: OpenAICompletionsOptions, streamOpenAICompletions, streamSimpleOpenAICompletions, convertMessages
3
+ * [FROM]: Depends on openai, ../env-api-keys.js, ../models.js, ../utils/event-stream.js, ../utils/json-parse.js
4
+ * [TO]: Consumed by core/lib/ai/src/index.ts
5
+ * [HERE]: core/lib/ai/src/providers/openai-completions.ts -
6
+ */
7
+ import type { ChatCompletionMessageParam } from "openai/resources/chat/completions.js";
8
+ import type { Context, Model, OpenAICompletionsCompat, SimpleStreamOptions, StreamFunction, StreamOptions } from "../types.js";
9
+ export interface OpenAICompletionsOptions extends StreamOptions {
10
+ toolChoice?: "auto" | "none" | "required" | {
11
+ type: "function";
12
+ function: {
13
+ name: string;
14
+ };
15
+ };
16
+ reasoningEffort?: "minimal" | "low" | "medium" | "high" | "xhigh";
17
+ }
18
+ export declare const streamOpenAICompletions: StreamFunction<"openai-completions", OpenAICompletionsOptions>;
19
+ export declare const streamSimpleOpenAICompletions: StreamFunction<"openai-completions", SimpleStreamOptions>;
20
+ export declare function convertMessages(model: Model<"openai-completions">, context: Context, compat: Required<OpenAICompletionsCompat>): ChatCompletionMessageParam[];
@@ -0,0 +1,6 @@
1
+ var M=Object.defineProperty;var _=(t,e)=>M(t,"name",{value:e,configurable:!0});import O from"openai";import{getEnvApiKey as q}from"../env-api-keys.js";import{calculateCost as N,supportsXhigh as P}from"../models.js";import{AssistantMessageEventStream as B}from"../utils/event-stream.js";import{parseStreamingJson as b}from"../utils/json-parse.js";import{sanitizeSurrogates as S}from"../utils/sanitize-unicode.js";import{buildCopilotDynamicHeaders as F,hasCopilotVisionInput as j}from"./github-copilot-headers.js";import{buildBaseOptions as D,clampReasoning as U}from"./simple-options.js";import{transformMessages as z}from"./transform-messages.js";import{getDebugLogger as G}from"../debug-logger.js";function $(t){let e=t.replace(/[^a-zA-Z0-9]/g,"");return e.length<9?e=e+"ABCDEFGHI".slice(0,9-e.length):e.length>9&&(e=e.slice(0,9)),e}_($,"normalizeMistralToolId");function K(t){for(const e of t)if(e.role==="toolResult"||e.role==="assistant"&&e.content.some(o=>o.type==="toolCall"))return!0;return!1}_(K,"hasToolHistory");const L=_((t,e,o)=>{const i=new B;return(async()=>{const s={role:"assistant",content:[],api:t.api,provider:t.provider,model:t.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{const r=o?.apiKey||q(t.provider)||"",u=H(t,e,r,o?.headers),a=J(t,e,o);o?.onPayload?.(a);const g=G();g.logProviderRequest(t.provider||"unknown",t.id||"unknown",a);const f=await u.chat.completions.create(a,{signal:o?.signal});i.push({type:"start",partial:s});let n=null;const d=s.content,y=_(()=>d.length-1,"blockIndex"),R=_(c=>{c&&(c.type==="text"?i.push({type:"text_end",contentIndex:y(),content:c.text,partial:s}):c.type==="thinking"?i.push({type:"thinking_end",contentIndex:y(),content:c.thinking,partial:s}):c.type==="toolCall"&&(c.arguments=b(c.partialArgs),delete c.partialArgs,i.push({type:"toolcall_end",contentIndex:y(),toolCall:c,partial:s})))},"finishCurrentBlock");let m="",T=!1;const A=t.provider||"unknown",p=t.id||"unknown";for await(const c of f){if(g.logProviderChunk(A,p,c),c.usage){const E=c.usage.prompt_tokens_details?.cached_tokens||0,v=c.usage.completion_tokens_details?.reasoning_tokens||0,C=(c.usage.prompt_tokens||0)-E,l=(c.usage.completion_tokens||0)+v;s.usage={input:C,output:l,cacheRead:E,cacheWrite:0,totalTokens:C+l+E,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},N(t,s.usage)}const h=c.choices?.[0];if(h&&(h.finish_reason&&(s.stopReason=X(h.finish_reason)),h.delta)){if((h.delta.content!==void 0||h.delta.tool_calls!==void 0)&&g.logContentParse("choice.delta",{content:h.delta.content,tool_calls:h.delta.tool_calls,reasoning_content:h.delta.reasoning_content,reasoning:h.delta.reasoning}),h.delta.content!==null&&h.delta.content!==void 0&&h.delta.content.length>0)for(m+=h.delta.content;m.length>0;)if(T){const l=["</thinking>","</think>"];let k=-1,I=0;for(const x of l){const w=m.indexOf(x);w!==-1&&(k===-1||w<k)&&(k=w,I=x.length)}if(k!==-1){const x=m.slice(0,k);x&&((!n||n.type!=="thinking")&&(R(n),n={type:"thinking",thinking:"",thinkingSignature:"minimax-thinking-tag"},s.content.push(n),i.push({type:"thinking_start",contentIndex:y(),partial:s})),n.type==="thinking"&&(n.thinking+=x,i.push({type:"thinking_delta",contentIndex:y(),delta:x,partial:s}))),m=m.slice(k+I),T=!1,n&&n.type==="thinking"&&(R(n),n=null)}else{const x=m;m="",(!n||n.type!=="thinking")&&(R(n),n={type:"thinking",thinking:"",thinkingSignature:"minimax-thinking-tag"},s.content.push(n),i.push({type:"thinking_start",contentIndex:y(),partial:s})),n.type==="thinking"&&(n.thinking+=x,i.push({type:"thinking_delta",contentIndex:y(),delta:x,partial:s}))}}else{const l=["<thinking>","<think>"];let k=-1,I=0;for(const x of l){const w=m.indexOf(x);w!==-1&&(k===-1||w<k)&&(k=w,I=x.length)}if(k!==-1){const x=m.slice(0,k);m=m.slice(k+I),T=!0,x&&((!n||n.type!=="text")&&(R(n),n={type:"text",text:""},s.content.push(n),i.push({type:"text_start",contentIndex:y(),partial:s})),n.type==="text"&&(n.text+=x,i.push({type:"text_delta",contentIndex:y(),delta:x,partial:s})))}else{const x=m;m="",(!n||n.type!=="text")&&(R(n),n={type:"text",text:""},s.content.push(n),i.push({type:"text_start",contentIndex:y(),partial:s})),n.type==="text"&&(n.text+=x,i.push({type:"text_delta",contentIndex:y(),delta:x,partial:s}))}}const E=["reasoning_content","reasoning","reasoning_text"];let v=null;for(const l of E)if(h.delta[l]!==null&&h.delta[l]!==void 0&&h.delta[l].length>0&&!v){v=l;break}if(v&&((!n||n.type!=="thinking")&&(R(n),n={type:"thinking",thinking:"",thinkingSignature:v},s.content.push(n),i.push({type:"thinking_start",contentIndex:y(),partial:s})),n.type==="thinking")){const l=h.delta[v];n.thinking+=l,i.push({type:"thinking_delta",contentIndex:y(),delta:l,partial:s})}if(h?.delta?.tool_calls){for(const l of h.delta.tool_calls)if((!n||n.type!=="toolCall"||l.id&&n.id!==l.id)&&(R(n),n={type:"toolCall",id:l.id||"",name:l.function?.name||"",arguments:{},partialArgs:""},s.content.push(n),i.push({type:"toolcall_start",contentIndex:y(),partial:s})),n.type==="toolCall"){l.id&&(n.id=l.id),l.function?.name&&(n.name=l.function.name);let k="";l.function?.arguments&&(k=l.function.arguments,n.partialArgs+=l.function.arguments,n.arguments=b(n.partialArgs)),i.push({type:"toolcall_delta",contentIndex:y(),delta:k,partial:s})}}const C=h.delta.reasoning_details;if(C&&Array.isArray(C)){for(const l of C)if(l.type==="reasoning.encrypted"&&l.id&&l.data){const k=s.content.find(I=>I.type==="toolCall"&&I.id===l.id);k&&(k.thoughtSignature=JSON.stringify(l))}}}}if(R(n),o?.signal?.aborted)throw new Error("Request was aborted");if(s.stopReason==="aborted"||s.stopReason==="error")throw new Error("An unknown error occurred");i.push({type:"done",reason:s.stopReason,message:s}),i.end()}catch(r){for(const a of s.content)delete a.index;s.stopReason=o?.signal?.aborted?"aborted":"error",s.errorMessage=r instanceof Error?r.message:JSON.stringify(r);const u=r?.error?.metadata?.raw;if(u&&(s.errorMessage+=`
2
+ ${u}`),r&&typeof r=="object"&&"headers"in r){const a=r.headers;a&&typeof a=="object"&&(s.errorHeaders=Object.fromEntries(Object.entries(a).map(([g,f])=>[g.toLowerCase(),String(f)])))}i.push({type:"error",reason:s.stopReason,error:s}),i.end()}})(),i},"streamOpenAICompletions"),gt=_((t,e,o)=>{const i=o?.apiKey||q(t.provider);if(!i)throw new Error(`No API key for provider: ${t.provider}`);const s=D(t,o,i),r=P(t)?o?.reasoning:U(o?.reasoning),u=o?.toolChoice;return L(t,e,{...s,reasoningEffort:r,toolChoice:u})},"streamSimpleOpenAICompletions");function H(t,e,o,i){if(!o){if(!process.env.OPENAI_API_KEY)throw new Error("OpenAI API key is required. Set OPENAI_API_KEY environment variable or pass it as an argument.");o=process.env.OPENAI_API_KEY}const s={...t.headers};if(t.provider==="github-copilot"){const r=j(e.messages),u=F({messages:e.messages,hasImages:r});Object.assign(s,u)}return i&&Object.assign(s,i),new O({apiKey:o,baseURL:t.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:s})}_(H,"createClient");function J(t,e,o){const i=tt(t),s=Z(t,e,i);Y(t,s);const r={model:t.id,messages:s,stream:!0};if(i.supportsUsageInStreaming!==!1&&(r.stream_options={include_usage:!0}),i.supportsStore&&(r.store=!1),o?.maxTokens&&(i.maxTokensField==="max_tokens"?r.max_tokens=o.maxTokens:r.max_completion_tokens=o.maxTokens),o?.temperature!==void 0&&(r.temperature=o.temperature),e.tools?r.tools=V(e.tools,i):K(e.messages)&&(r.tools=[]),o?.toolChoice&&(r.tool_choice=o.toolChoice),(i.thinkingFormat==="zai"||i.thinkingFormat==="qwen")&&t.reasoning?r.enable_thinking=!!o?.reasoningEffort:o?.reasoningEffort&&t.reasoning&&i.supportsReasoningEffort&&(r.reasoning_effort=W(o.reasoningEffort,i.reasoningEffortMap)),t.baseUrl.includes("openrouter.ai")&&t.compat?.openRouterRouting&&(r.provider=t.compat.openRouterRouting),t.baseUrl.includes("ai-gateway.vercel.sh")&&t.compat?.vercelGatewayRouting){const u=t.compat.vercelGatewayRouting;if(u.only||u.order){const a={};u.only&&(a.only=u.only),u.order&&(a.order=u.order),r.providerOptions={gateway:a}}}return r}_(J,"buildParams");function W(t,e){return e[t]??t}_(W,"mapReasoningEffort");function Y(t,e){if(!(t.provider!=="openrouter"||!t.id.startsWith("anthropic/")))for(let o=e.length-1;o>=0;o--){const i=e[o];if(i.role!=="user"&&i.role!=="assistant")continue;const s=i.content;if(typeof s=="string"){i.content=[Object.assign({type:"text",text:s},{cache_control:{type:"ephemeral"}})];return}if(Array.isArray(s))for(let r=s.length-1;r>=0;r--){const u=s[r];if(u?.type==="text"){Object.assign(u,{cache_control:{type:"ephemeral"}});return}}}}_(Y,"maybeAddOpenRouterAnthropicCacheControl");function Z(t,e,o){const i=[],s=_(a=>{if(o.requiresMistralToolIds)return $(a);if(a.includes("|")){const[g]=a.split("|");return g.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,40)}return t.provider==="openai"&&a.length>40?a.slice(0,40):a},"normalizeToolCallId"),r=z(e.messages,t,a=>s(a));if(e.systemPrompt){const g=t.reasoning&&o.supportsDeveloperRole?"developer":"system";i.push({role:g,content:S(e.systemPrompt)})}let u=null;for(let a=0;a<r.length;a++){const g=r[a];if(o.requiresAssistantAfterToolResult&&u==="toolResult"&&g.role==="user"&&i.push({role:"assistant",content:"I have processed the tool results."}),g.role==="user")if(typeof g.content=="string")i.push({role:"user",content:S(g.content)});else{const f=g.content.map(d=>d.type==="text"?{type:"text",text:S(d.text)}:d.type==="document"?{type:"text",text:"[PDF document - content not available in OpenAI format]"}:{type:"image_url",image_url:{url:`data:${d.mimeType};base64,${d.data}`}}),n=t.input.includes("image")?f:f.filter(d=>d.type!=="image_url");if(n.length===0)continue;i.push({role:"user",content:n})}else if(g.role==="assistant"){const f={role:"assistant",content:o.requiresAssistantAfterToolResult?"":null},d=g.content.filter(p=>p.type==="text").filter(p=>p.text&&p.text.trim().length>0);d.length>0&&(t.provider==="github-copilot"?f.content=d.map(p=>S(p.text)).join(""):f.content=d.map(p=>({type:"text",text:S(p.text)})));const R=g.content.filter(p=>p.type==="thinking").filter(p=>p.thinking&&p.thinking.trim().length>0);if(R.length>0)if(o.requiresThinkingAsText){const p=R.map(h=>h.thinking).join(`
3
+
4
+ `),c=f.content;c?c.unshift({type:"text",text:p}):f.content=[{type:"text",text:p}]}else{const p=R[0].thinkingSignature;p&&p.length>0&&(f[p]=R.map(c=>c.thinking).join(`
5
+ `))}const m=g.content.filter(p=>p.type==="toolCall");if(m.length>0){f.tool_calls=m.map(c=>({id:c.id,type:"function",function:{name:c.name,arguments:JSON.stringify(c.arguments)}}));const p=m.filter(c=>c.thoughtSignature).map(c=>{try{return JSON.parse(c.thoughtSignature)}catch{return null}}).filter(Boolean);p.length>0&&(f.reasoning_details=p)}const T=f.content;if(!(T!=null&&T.length>0)&&!f.tool_calls)continue;i.push(f)}else if(g.role==="toolResult"){const f=[];let n=a;for(;n<r.length&&r[n].role==="toolResult";n++){const d=r[n],y=d.content.filter(A=>A.type==="text").map(A=>A.text).join(`
6
+ `),R=d.content.some(A=>A.type==="image"),m=y.length>0,T={role:"tool",content:S(m?y:"(see attached image)"),tool_call_id:d.toolCallId};if(o.requiresToolResultName&&d.toolName&&(T.name=d.toolName),i.push(T),R&&t.input.includes("image"))for(const A of d.content)A.type==="image"&&f.push({type:"image_url",image_url:{url:`data:${A.mimeType};base64,${A.data}`}})}a=n-1,f.length>0?(o.requiresAssistantAfterToolResult&&i.push({role:"assistant",content:"I have processed the tool results."}),i.push({role:"user",content:[{type:"text",text:"Attached image(s) from tool result:"},...f]}),u="user"):u="toolResult";continue}u=g.role}return i}_(Z,"convertMessages");function V(t,e){return t.map(o=>({type:"function",function:{name:o.name,description:o.description,parameters:o.parameters,...e.supportsStrictMode!==!1&&{strict:!1}}}))}_(V,"convertTools");function X(t){if(t===null)return"stop";switch(t){case"stop":return"stop";case"length":return"length";case"function_call":case"tool_calls":return"toolUse";case"content_filter":return"error";default:{const e=t;throw new Error(`Unhandled stop reason: ${e}`)}}}_(X,"mapStopReason");function Q(t){const e=t.provider,o=t.baseUrl,i=e==="zai"||o.includes("api.z.ai"),s=e==="cerebras"||o.includes("cerebras.ai")||e==="xai"||o.includes("api.x.ai")||e==="mistral"||o.includes("mistral.ai")||o.includes("chutes.ai")||o.includes("deepseek.com")||i||e==="opencode"||o.includes("opencode.ai"),r=e==="mistral"||o.includes("mistral.ai")||o.includes("chutes.ai"),u=e==="xai"||o.includes("api.x.ai"),a=e==="groq"||o.includes("groq.com"),g=e==="mistral"||o.includes("mistral.ai"),f=a&&t.id==="qwen/qwen3-32b"?{minimal:"default",low:"default",medium:"default",high:"default",xhigh:"default"}:{};return{supportsStore:!s,supportsDeveloperRole:!s,supportsReasoningEffort:!u&&!i,reasoningEffortMap:f,supportsUsageInStreaming:!0,maxTokensField:r?"max_tokens":"max_completion_tokens",requiresToolResultName:g,requiresAssistantAfterToolResult:!1,requiresThinkingAsText:g,requiresMistralToolIds:g,thinkingFormat:i?"zai":"openai",openRouterRouting:{},vercelGatewayRouting:{},supportsStrictMode:!0}}_(Q,"detectCompat");function tt(t){const e=Q(t);return t.compat?{supportsStore:t.compat.supportsStore??e.supportsStore,supportsDeveloperRole:t.compat.supportsDeveloperRole??e.supportsDeveloperRole,supportsReasoningEffort:t.compat.supportsReasoningEffort??e.supportsReasoningEffort,reasoningEffortMap:t.compat.reasoningEffortMap??e.reasoningEffortMap,supportsUsageInStreaming:t.compat.supportsUsageInStreaming??e.supportsUsageInStreaming,maxTokensField:t.compat.maxTokensField??e.maxTokensField,requiresToolResultName:t.compat.requiresToolResultName??e.requiresToolResultName,requiresAssistantAfterToolResult:t.compat.requiresAssistantAfterToolResult??e.requiresAssistantAfterToolResult,requiresThinkingAsText:t.compat.requiresThinkingAsText??e.requiresThinkingAsText,requiresMistralToolIds:t.compat.requiresMistralToolIds??e.requiresMistralToolIds,thinkingFormat:t.compat.thinkingFormat??e.thinkingFormat,openRouterRouting:t.compat.openRouterRouting??{},vercelGatewayRouting:t.compat.vercelGatewayRouting??e.vercelGatewayRouting,supportsStrictMode:t.compat.supportsStrictMode??e.supportsStrictMode}:e}_(tt,"getCompat");export{Z as convertMessages,L as streamOpenAICompletions,gt as streamSimpleOpenAICompletions};