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,15 @@
1
+ var E=Object.defineProperty;var n=(a,e)=>E(a,"name",{value:e,configurable:!0});import{appendFileSync as v,readFileSync as k}from"node:fs";import{homedir as L}from"node:os";import{basename as P,dirname as I,join as f}from"node:path";import{isContextOverflow as b}from"@catui/ai/overflow";import{resetApiProviders as F}from"@catui/ai/registry";import{getDocsPath as C}from"../../config.js";import{stripFrontmatter as N}from"../../utils/frontmatter.js";import{calculateContextTokens as w,collectEntriesForBranchSummary as U,estimateContextTokens as B,shouldCompact as D}from"../session/compaction/index.js";import{ToolOrchestrator as O}from"../tools/orchestrator.js";import{DEFAULT_THINKING_LEVEL as $}from"../platform/config/defaults.js";import{createExtensionTelemetrySink as j}from"../platform/telemetry/index.js";import{ExtensionRunner as W}from"../extensions-host/index.js";import{expandPromptTemplate as y}from"../prompt/prompt-templates.js";import{getLatestCompactionEntry as x}from"../session/session-manager.js";import{t as H}from"../platform/i18n/index.js";import{toSoulContext as S,extractSessionContext as R}from"../soul-integration.js";import{createDefaultRuntimeTools as K}from"./default-tools.js";import{BashRunner as V}from"./bash-runner.js";import{Listeners as q}from"../platform/listeners.js";import{ModelController as Q}from"./model-controller.js";import{CompactionController as G}from"./compaction-controller.js";import{SessionLifecycleController as X}from"./session-lifecycle-controller.js";import{SessionTreeController as z}from"./session-tree-controller.js";import{ToolRuntimeController as J}from"./tool-runtime-controller.js";import{buildRuntimeSystemPrompt as Y,getActiveBaseToolNames as Z}from"./prompt-assembly.js";import{exportSessionHtml as ee,getLastAssistantText as te}from"./export-bridge.js";import{ExtensionEventBridge as se}from"./event-bridge.js";import{bindExtensionCore as ne}from"./extension-core-bindings.js";import{buildSessionSlashCommands as oe}from"./slash-command-catalog.js";import{RetryCoordinator as ie}from"./retry-coordinator.js";import{createLogger as re}from"../platform/utils/logger.js";import{createAgentTool as ae,createTaskToolAlias as le,createSendMessageTool as he,AGENT_TOOL_NAME as M,TASK_TOOL_NAME as ge,SEND_MESSAGE_TOOL_NAME as T}from"../sub-agent/index.js";import{CycleModelError as Je}from"./model-controller.js";function Qe(a){const e=a.match(/^<skill name="([^"]+)" location="([^"]+)">\n([\s\S]*?)\n<\/skill>(?:\n\n([\s\S]+))?$/);return e?{name:e[1],location:e[2],content:e[3],userMessage:e[4]?.trim()||void 0}:null}n(Qe,"parseSkillBlock");function A(a,e){const t=new Set(e.content.filter(o=>o.type==="toolCall").map(o=>o.id));let s=a.length;for(;s>0&&ce(a[s-1],t);)s--;return s>0&&me(a[s-1],e)&&s--,a.slice(0,s)}n(A,"pruneRecoverableErrorTail");function ce(a,e){return a.role==="toolResult"&&e.has(a.toolCallId)}n(ce,"isRecoverableTailToolResult");function me(a,e){return a.role==="assistant"&&a.stopReason===e.stopReason&&a.timestamp===e.timestamp&&a.provider===e.provider&&a.model===e.model&&a.api===e.api&&a.errorMessage===e.errorMessage}n(me,"isSameRecoverableAssistantMessage");function ue(a){switch(a.type){case"agent_start":return{type:"sub_agent_start",subAgentId:a.subAgentId,agentType:a.agentType,description:a.description,isAsync:a.isAsync};case"tool_start":return{type:"sub_agent_tool_start",subAgentId:a.subAgentId,toolName:a.toolName};case"tool_end":return{type:"sub_agent_tool_end",subAgentId:a.subAgentId,toolName:a.toolName,isError:a.isError};case"agent_end":return{type:"sub_agent_end",subAgentId:a.subAgentId,success:a.success};default:return}}n(ue,"mapSubAgentEvent");class Ge{static{n(this,"AgentSession")}agent;sessionManager;settingsManager;agentCtx;_scopedModels;_unsubscribeAgent;_detachExternalAbort;_listeners=new q;_steeringMessages=[];_followUpMessages=[];_pendingNextTurnMessages=[];_retryCoordinator;_logger;_bashRunner;_extensionRunner=void 0;_slashCommandExecutor=void 0;_extensionEventBridge;_resourceLoader;_theme;_debugLevel="off";_dbg(e){if(process.env.CATUI_DEBUG_SESSION==="1")try{const t=f(L(),".catui","agent","catui-debug.log");v(t,`[${new Date().toISOString()}] [session] ${e}
2
+ `)}catch{}}_customTools;_staticCustomTools;_mcpToolsFactory;_soulManagerFactory;_baseToolRegistry=new Map;_agentTool;_createSessionFactory;_cwd;_extensionRunnerRef;_soulManager;_lastSoulInjection;_initialActiveToolNames;_baseToolsOverride;_extensionUIContext;_extensionCommandContextActions;_extensionShutdownHandler;_extensionErrorListener;_extensionErrorUnsubscriber;_modelRegistry;_agentDir;_baseSystemPrompt="";_modelController;_compactionController;_sessionTreeController;_lifecycleController;_toolOrchestrator;_toolRuntimeController;constructor(e){if(this.agent=e.agent,this.sessionManager=e.sessionManager,this.settingsManager=e.settingsManager,this.agentCtx=e.agentCtx,this._scopedModels=e.scopedModels??[],this._resourceLoader=e.resourceLoader,this._theme=e.theme,this._debugLevel=e.debugLevel??"off",this._bashRunner=new V({getCwd:n(()=>this._cwd,"getCwd"),getShellCommandPrefix:n(()=>this.settingsManager.getShellCommandPrefix(),"getShellCommandPrefix"),appendToAgent:n(t=>this.agent.appendMessage(t),"appendToAgent"),appendToSession:n(t=>this.sessionManager.appendMessage(t),"appendToSession"),isStreaming:n(()=>this.isStreaming,"isStreaming")}),this._staticCustomTools=e.customTools??[],this._mcpToolsFactory=e.mcpToolsFactory,this._soulManagerFactory=e.soulManagerFactory,this._customTools=[...this._staticCustomTools,...e.initialMcpTools??[]],this._initialActiveToolNames=e.initialActiveToolNames,this._toolOrchestrator=new O({customTools:this._customTools,initialActiveToolNames:this._initialActiveToolNames,getExtensionTools:n(()=>new Map((this._extensionRunner?.getAllRegisteredTools()??[]).map(t=>[t.definition.name,t.definition])),"getExtensionTools")}),this._toolRuntimeController=new J(this._toolOrchestrator),this._cwd=e.cwd,this._agentDir=e.agentDir,this._modelRegistry=e.modelRegistry,this._extensionRunnerRef=e.extensionRunnerRef,this._soulManager=e.soulManager,this._baseToolsOverride=e.baseToolsOverride,this._createSessionFactory=e.createSession,this._extensionEventBridge=new se({getExtensionRunner:n(()=>this._extensionRunner,"getExtensionRunner")}),this._modelController=new Q({getModel:n(()=>this.model,"getModel"),getThinkingLevel:n(()=>this.thinkingLevel,"getThinkingLevel"),getScopedModels:n(()=>this._scopedModels,"getScopedModels"),setAgentModel:n(t=>this.agent.setModel(t),"setAgentModel"),setAgentThinkingLevel:n(t=>this.agent.setThinkingLevel(t),"setAgentThinkingLevel"),setAgentLoopFramework:n(t=>this.agent.setAgentLoopFramework(t),"setAgentLoopFramework"),setLoopPolicy:n(t=>this.agent.setLoopPolicy(t),"setLoopPolicy"),getApiKey:n(t=>this._modelRegistry.getApiKey(t),"getApiKey"),getApiKeyForProvider:n(t=>this._modelRegistry.getApiKeyForProvider(t),"getApiKeyForProvider"),getAvailableModels:n(()=>this._modelRegistry.getAvailableAsync(),"getAvailableModels"),getAuthCredential:n(t=>this._modelRegistry.authStorage.get(t),"getAuthCredential"),appendModelChange:n((t,s)=>this.sessionManager.appendModelChange(t,s),"appendModelChange"),appendThinkingLevelChange:n(t=>this.sessionManager.appendThinkingLevelChange(t),"appendThinkingLevelChange"),setDefaultModelAndProvider:n((t,s)=>this.settingsManager.setDefaultModelAndProvider(t,s),"setDefaultModelAndProvider"),setDefaultThinkingLevel:n(t=>this.settingsManager.setDefaultThinkingLevel(t),"setDefaultThinkingLevel"),emitModelSelect:n(async({model:t,previousModel:s,source:o})=>{this._extensionRunner&&await this._extensionRunner.emit({type:"model_select",model:t,previousModel:s,source:o})},"emitModelSelect")}),this._compactionController=new G({getModel:n(()=>this.model,"getModel"),getApiKey:n(t=>this._modelRegistry.getApiKey(t),"getApiKey"),getExtensionRunner:n(()=>this._extensionRunner,"getExtensionRunner"),getBranch:n(()=>this.sessionManager.getBranch(),"getBranch"),getEntries:n(()=>this.sessionManager.getEntries(),"getEntries"),getCompactionSettings:n(()=>this.settingsManager.getCompactionSettings(),"getCompactionSettings"),appendCompaction:n((t,s,o,r,i)=>this.sessionManager.appendCompaction(t,s,o,r,i),"appendCompaction"),applyCompactedMessages:n(()=>{const t=this.sessionManager.buildSessionContext();return this.agent.replaceMessages(t.messages),t.messages},"applyCompactedMessages"),logInfo:n((t,s)=>this._logger.info(t,s),"logInfo"),disconnectFromAgent:n(()=>this._disconnectFromAgent(),"disconnectFromAgent"),reconnectToAgent:n(()=>this._reconnectToAgent(),"reconnectToAgent"),abortAgent:n(()=>this.abort(),"abortAgent"),emitAutoCompactionStart:n(t=>this._emit({type:"auto_compaction_start",reason:t}),"emitAutoCompactionStart"),emitAutoCompactionEnd:n(t=>this._emit({type:"auto_compaction_end",...t}),"emitAutoCompactionEnd"),getAutoCompactionEnabled:n(()=>this.settingsManager.getCompactionEnabled(),"getAutoCompactionEnabled"),setAutoCompactionEnabled:n(t=>this.settingsManager.setCompactionEnabled(t),"setAutoCompactionEnabled")}),this._sessionTreeController=new z({getModel:n(()=>this.model,"getModel"),getApiKey:n(t=>this._modelRegistry.getApiKey(t),"getApiKey"),getExtensionRunner:n(()=>this._extensionRunner,"getExtensionRunner"),getLeafId:n(()=>this.sessionManager.getLeafId(),"getLeafId"),getEntry:n(t=>this.sessionManager.getEntry(t),"getEntry"),collectBranchSummaryEntries:n((t,s)=>U(this.sessionManager,t,s),"collectBranchSummaryEntries"),getBranchSummaryReserveTokens:n(()=>this.settingsManager.getBranchSummarySettings().reserveTokens,"getBranchSummaryReserveTokens"),branchWithSummary:n((t,s,o,r)=>this.sessionManager.branchWithSummary(t,s,o,r),"branchWithSummary"),appendLabelChange:n((t,s)=>this.sessionManager.appendLabelChange(t,s),"appendLabelChange"),resetLeaf:n(()=>this.sessionManager.resetLeaf(),"resetLeaf"),branch:n(t=>this.sessionManager.branch(t),"branch"),rebuildAgentMessages:n(()=>{const t=this.sessionManager.buildSessionContext();this.agent.replaceMessages(t.messages)},"rebuildAgentMessages"),extractUserMessageText:n(t=>this._extractUserMessageText(t),"extractUserMessageText")}),this._lifecycleController=new X({getSessionFile:n(()=>this.sessionManager.getSessionFile(),"getSessionFile"),getExtensionRunner:n(()=>this._extensionRunner,"getExtensionRunner"),disconnectFromAgent:n(()=>this._disconnectFromAgent(),"disconnectFromAgent"),reconnectToAgent:n(()=>this._reconnectToAgent(),"reconnectToAgent"),abortAgent:n(()=>this.abort(),"abortAgent"),resetAgent:n(()=>this.agent.reset(),"resetAgent"),syncAgentSessionId:n(()=>{this.agent.sessionId=this.sessionManager.getSessionId()},"syncAgentSessionId"),clearPendingQueues:n(()=>{this._steeringMessages=[],this._followUpMessages=[],this._pendingNextTurnMessages=[]},"clearPendingQueues"),clearPendingNextTurnMessages:n(()=>{this._pendingNextTurnMessages=[]},"clearPendingNextTurnMessages"),sessionNewSession:n(t=>this.sessionManager.newSession({parentSession:t}),"sessionNewSession"),sessionSetFile:n(t=>this.sessionManager.setSessionFile(t),"sessionSetFile"),sessionCreateBranchedSession:n(t=>this.sessionManager.createBranchedSession(t),"sessionCreateBranchedSession"),getEntry:n(t=>this.sessionManager.getEntry(t),"getEntry"),buildSessionContext:n(()=>this.sessionManager.buildSessionContext(),"buildSessionContext"),replaceAgentMessages:n(t=>this.agent.replaceMessages(t),"replaceAgentMessages"),appendThinkingLevelChange:n(t=>this.sessionManager.appendThinkingLevelChange(t),"appendThinkingLevelChange"),getThinkingLevel:n(()=>this.thinkingLevel,"getThinkingLevel"),getBranch:n(()=>this.sessionManager.getBranch(),"getBranch"),getDefaultThinkingLevel:n(()=>this.settingsManager.getDefaultThinkingLevel()??$,"getDefaultThinkingLevel"),getAvailableModels:n(()=>this._modelRegistry.getAvailable(),"getAvailableModels"),restoreModel:n(t=>this._modelController.restoreModel(t),"restoreModel"),restoreThinkingLevel:n(t=>this._modelController.restoreThinkingLevel(t),"restoreThinkingLevel"),runSetup:n(t=>t(this.sessionManager),"runSetup"),extractUserMessageText:n(t=>this._extractUserMessageText(t),"extractUserMessageText")}),this.agent.setModelErrorRecovery(t=>this._recoverModelErrorInLoop(t)),this._unsubscribeAgent=this.agent.subscribe(this._handleAgentEvent),e.signal){const t=n(()=>{this.abort()},"externalAbortHandler");e.signal.addEventListener("abort",t,{once:!0}),this._detachExternalAbort=()=>{e.signal?.removeEventListener("abort",t)}}this._buildRuntime({activeToolNames:this._initialActiveToolNames,includeAllExtensionTools:!0}),this._retryCoordinator=new ie(this._createRetryHost()),this._logger=re({sessionId:this.sessionManager.getSessionId(),component:"agent-session"}),this._emitDebug("basic","session","session_created",{sessionId:this.sessionManager.getSessionId()})}get modelRegistry(){return this._modelRegistry}get cwd(){return this._cwd}get agentDir(){return this._agentDir}getSlashCommands(){return oe({promptTemplates:this.promptTemplates,resourceLoader:this._resourceLoader,extensionRunner:this._extensionRunner},H)}async tryExecuteExtensionCommand(e){return this._tryExecuteExtensionCommand(e)}async executeSlashCommand(e){return e.startsWith("/")?this._slashCommandExecutor&&await this._slashCommandExecutor(e)?!0:this._tryExecuteExtensionCommand(e):!1}setSlashCommandExecutor(e){this._slashCommandExecutor=e}_emit(e){this._listeners.emit(e)}_emitDebug(e,t,s,o){this._debugLevel!=="off"&&(e==="verbose"&&this._debugLevel!=="verbose"||this._emit({type:"debug",level:e,source:t,message:s,data:o,timestamp:Date.now()}))}_lastAssistantMessage=void 0;_handleAgentEvent=n(async e=>{if(e.type==="message_start"&&e.message.role==="user"){const t=this._getUserMessageText(e.message);if(t){const s=this._steeringMessages.indexOf(t);if(s!==-1)this._steeringMessages.splice(s,1);else{const o=this._followUpMessages.indexOf(t);o!==-1&&this._followUpMessages.splice(o,1)}}}if(e.type==="message_update")this._emit(e),this._extensionEventBridge.emitExtensionEvent(e).catch(t=>{this._logger.error("[extension] message_update event error",{error:t})});else{const t=this._extensionEventBridge.emitExtensionEvent(e);this._emit(e),await t}if(e.type==="tool_execution_start"?this._emitDebug("verbose","tool","tool_start",{toolName:e.toolName,toolCallId:e.toolCallId}):e.type==="tool_execution_end"&&this._emitDebug("verbose","tool","tool_end",{toolName:e.toolName,isError:e.isError}),e.type==="message_end"&&(e.message.role==="custom"?this.sessionManager.appendCustomMessageEntry(e.message.customType,e.message.content,e.message.display,e.message.details):(e.message.role==="user"||e.message.role==="assistant"||e.message.role==="toolResult")&&this.sessionManager.appendMessage(e.message),e.message.role==="assistant"&&(this._lastAssistantMessage=e.message,e.message.stopReason!=="error"&&this._retryCoordinator.onSuccess())),e.type==="agent_end"&&this._lastAssistantMessage){const t=this._lastAssistantMessage;if(this._lastAssistantMessage=void 0,this._retryCoordinator.isRetryableError(t)&&await this._retryCoordinator.handleError(t))return;if(await this._checkCompaction(t),this._soulManager){const s=t.stopReason==="error"?"failure":"success",o=this._cwd.split(/[/\\]/).pop()||"unknown",{tags:r,complexity:i,toolUsage:l}=R(this.state.messages,this._cwd),m=S(o,r,i,l),g=r[0]||o;(async()=>{try{await this._soulManager.recordInteraction(m,s,"turn"),await this._soulManager.updateExpertise(g,r,s==="success")}catch(c){this._logger.warn("[soul] recordInteraction/updateExpertise failed",{error:c})}})()}}e.type==="agent_end"&&this._extensionRunner&&this._extensionRunner.emit({type:"agent_end",messages:e.messages}).catch(t=>{this._logger.error("[extension] agent_end event error",{error:t})})},"_handleAgentEvent");_getUserMessageText(e){if(e.role!=="user")return"";const t=e.content;return typeof t=="string"?t:t.filter(o=>o.type==="text").map(o=>o.text).join("")}_findLastAssistantMessage(){const e=this.agent.state.messages;for(let t=e.length-1;t>=0;t--){const s=e[t];if(s.role==="assistant")return s}}subscribe(e){return this._listeners.add(e)}_disconnectFromAgent(){this._unsubscribeAgent&&(this._unsubscribeAgent(),this._unsubscribeAgent=void 0)}_reconnectToAgent(){this._unsubscribeAgent||(this._unsubscribeAgent=this.agent.subscribe(this._handleAgentEvent))}dispose(){this._disconnectFromAgent(),this._extensionRunner?.dispose(),this._listeners.clear(),this._detachExternalAbort&&(this._detachExternalAbort(),this._detachExternalAbort=void 0)}get state(){return this.agent.state}get model(){return this.agent.state.model}get thinkingLevel(){return this.agent.state.thinkingLevel}get agentLoopFramework(){return this.agent.agentLoopFramework}get isStreaming(){return this.agent.state.isStreaming}get systemPrompt(){return this.agent.state.systemPrompt}get soulManager(){return this._soulManager}get retryAttempt(){return this._retryCoordinator.attempt}getActiveToolNames(){return this.agent.state.tools.map(e=>e.name)}getAllTools(){return this._toolOrchestrator.getAllTools()}setActiveToolsByName(e){const{tools:t,validToolNames:s}=this._toolOrchestrator.setActiveToolsByName(e);this.agent.setTools(t),this._baseSystemPrompt=this._rebuildSystemPrompt(s),this.agent.setSystemPrompt(this._baseSystemPrompt)}get isCompacting(){return this._compactionController.isCompacting}get messages(){return this.agent.state.messages}get steeringMode(){return this.agent.getSteeringMode()}get followUpMode(){return this.agent.getFollowUpMode()}get sessionFile(){return this.sessionManager.getSessionFile()}get sessionId(){return this.sessionManager.getSessionId()}get sessionName(){return this.sessionManager.getSessionName()}get scopedModels(){return this._scopedModels}setScopedModels(e){this._scopedModels=e}get promptTemplates(){return this._resourceLoader.getPrompts().prompts}_rebuildSystemPrompt(e,t){return Y({cwd:this._cwd,resourceLoader:this._resourceLoader,toolNames:e,baseToolRegistry:this._baseToolRegistry,soulInjection:t?.soulInjection??this._lastSoulInjection})}_getActiveBaseToolNames(){return Z(this.getActiveToolNames(),this._baseToolRegistry)}async _generateSoulInjection(){if(!this._soulManager){this._lastSoulInjection=void 0;return}try{const e=this._cwd.split(/[/\\]/).pop()||"unknown",{tags:t,complexity:s,toolUsage:o}=R(this.state.messages,this._cwd),r=await this._soulManager.generateInjection(S(e,t,s,o));return this._lastSoulInjection=typeof r=="string"&&r.trim().length>0?r:void 0,this._lastSoulInjection}catch(e){return this._emit({type:"sdk:error",source:"soul",error:e}),this._lastSoulInjection}}async prompt(e,t){const s=performance.now(),o=t?.expandPromptTemplates??!0;if(this._dbg(`prompt: "${e.slice(0,80)}" isStreaming=${this.isStreaming} hasModel=${!!this.model}`),o&&e.startsWith("/")){const u=await this.executeSlashCommand(e);if(this._dbg(`prompt: slash handled=${u}`),u)return}let r=e,i=t?.images;if(this._extensionRunner?.hasHandlers("input")){const u=await this._extensionRunner.emitInput(r,i,t?.source??"interactive");if(u.action==="handled")return;u.action==="transform"&&(r=u.text,i=u.images??i)}let l=r;if(o&&(l=this._expandSkillCommand(l),l=y(l,[...this.promptTemplates])),this.isStreaming){if(!t?.streamingBehavior)throw new Error("Agent is already processing. Specify streamingBehavior ('steer' or 'followUp') to queue the message.");t.streamingBehavior==="followUp"?await this._queueFollowUp(l,i):await this._queueSteer(l,i);return}if(this._bashRunner.flushPending(),!this.model)throw new Error(`No model selected.
3
+
4
+ Use /login or set an API key environment variable. See ${f(C(),"providers.md")}
5
+
6
+ Then use /model to select a model.`);if(!await this._modelRegistry.getApiKey(this.model))throw this._modelRegistry.isUsingOAuth(this.model)?new Error(`Authentication failed for "${this.model.provider}". Credentials may have expired or network is unavailable. Run '/login ${this.model.provider}' to re-authenticate.`):new Error(`No API key found for ${this.model.provider}.
7
+
8
+ Use /login or set an API key environment variable. See ${f(C(),"providers.md")}`);const g=this._findLastAssistantMessage();g&&await this._checkCompaction(g,!1);const c=[],h=[{type:"text",text:l}];i&&h.push(...i),c.push({role:"user",content:h,timestamp:Date.now()});for(const u of this._pendingNextTurnMessages)c.push(u);this._pendingNextTurnMessages=[];const d=this._getActiveBaseToolNames(),_=await this._generateSoulInjection();if(this._baseSystemPrompt=this._rebuildSystemPrompt(d,{soulInjection:_}),this._extensionRunner){const u=await this._extensionRunner.emitBeforeAgentStart(l,i,this._baseSystemPrompt);if(u?.messages)for(const p of u.messages)c.push({role:"custom",customType:p.customType,content:p.content,display:p.display,details:p.details,timestamp:Date.now()});u?.systemPrompt?this.agent.setSystemPrompt(u.systemPrompt):this.agent.setSystemPrompt(this._baseSystemPrompt)}else this.agent.setSystemPrompt(this._baseSystemPrompt);this._dbg(`calling agent.prompt with ${c.length} message(s)`),await this.agent.prompt(c),this._dbg(`agent.prompt returned (${(performance.now()-s).toFixed(0)}ms)`),await this.waitForRetry()}async _tryExecuteExtensionCommand(e){if(!this._extensionRunner)return!1;const t=e.indexOf(" "),s=t===-1?e.slice(1):e.slice(1,t),o=t===-1?"":e.slice(t+1),r=this._extensionRunner.createCommandContext();return(await this._extensionRunner.invokeCommand(s,o,r,{sessionId:this.sessionManager.getSessionId()})).found}_expandSkillCommand(e){if(!e.startsWith("/skill:"))return e;const t=e.indexOf(" "),s=t===-1?e.slice(7):e.slice(7,t),o=t===-1?"":e.slice(t+1).trim(),r=this.resourceLoader.getSkills().skills.find(i=>i.name===s);if(!r)return e;try{const i=k(r.filePath,"utf-8"),l=N(i).trim(),m=`<skill name="${r.name}" location="${r.filePath}">
9
+ References are relative to ${r.baseDir}.
10
+
11
+ ${l}
12
+ </skill>`;return o?`${m}
13
+
14
+ ${o}`:m}catch(i){return this._extensionRunner?.emitError({extensionPath:r.filePath,event:"skill_expansion",error:i instanceof Error?i.message:String(i)}),e}}async steer(e,t){e.startsWith("/")&&this._throwIfExtensionCommand(e);let s=this._expandSkillCommand(e);s=y(s,[...this.promptTemplates]),await this._queueSteer(s,t)}async followUp(e,t){e.startsWith("/")&&this._throwIfExtensionCommand(e);let s=this._expandSkillCommand(e);s=y(s,[...this.promptTemplates]),await this._queueFollowUp(s,t)}async _queueSteer(e,t){this._steeringMessages.push(e);const s=[{type:"text",text:e}];t&&s.push(...t),this.agent.steer({role:"user",content:s,timestamp:Date.now()})}async _queueFollowUp(e,t){this._followUpMessages.push(e);const s=[{type:"text",text:e}];t&&s.push(...t),this.agent.followUp({role:"user",content:s,timestamp:Date.now()})}_throwIfExtensionCommand(e){if(!this._extensionRunner)return;const t=e.indexOf(" "),s=t===-1?e.slice(1):e.slice(1,t);if(this._extensionRunner.getCommand(s))throw new Error(`Extension command "/${s}" cannot be queued. Use prompt() or execute the command when not streaming.`)}async sendCustomMessage(e,t){const s={role:"custom",customType:e.customType,content:e.content,display:e.display,details:e.details,timestamp:Date.now()};t?.deliverAs==="nextTurn"?this._pendingNextTurnMessages.push(s):this.isStreaming?t?.deliverAs==="followUp"?this.agent.followUp(s):this.agent.steer(s):t?.triggerTurn?await this.agent.prompt(s):(this.agent.appendMessage(s),this.sessionManager.appendCustomMessageEntry(e.customType,e.content,e.display,e.details),this._emit({type:"message_start",message:s}),this._emit({type:"message_end",message:s}))}async sendUserMessage(e,t){let s,o;if(typeof e=="string")s=e;else{const r=[];o=[];for(const i of e)i.type==="text"?r.push(i.text):i.type==="image"&&o.push(i);s=r.join(`
15
+ `),o.length===0&&(o=void 0)}await this.prompt(s,{expandPromptTemplates:!1,streamingBehavior:t?.deliverAs,images:o,source:"extension"})}clearQueue(){const e=[...this._steeringMessages],t=[...this._followUpMessages];return this._steeringMessages=[],this._followUpMessages=[],this.agent.clearAllQueues(),{steering:e,followUp:t}}get pendingMessageCount(){return this._steeringMessages.length+this._followUpMessages.length}getSteeringMessages(){return this._steeringMessages}getFollowUpMessages(){return this._followUpMessages}get resourceLoader(){return this._resourceLoader}async abort(){this.abortRetry(),this.agent.abort(),await this.agent.waitForIdle(),this._extensionRunner?.emit({type:"agent_abort"})}async newSession(e){return this._lifecycleController.newSession(e)}async setModel(e){await this._modelController.setModel(e),this._emitDebug("basic","model","model_change",{provider:e.api,modelId:e.id})}async cycleModel(e="forward"){const t=await this._modelController.cycleModel(e);return t&&this._emitDebug("basic","model","model_cycle",{direction:e,provider:t.model.api,modelId:t.model.id}),t}setThinkingLevel(e){this._modelController.setThinkingLevel(e)}setAgentLoopFramework(e){this._modelController.setAgentLoopFramework(e)}setLoopPolicy(e){this._modelController.setLoopPolicy(e)}cycleThinkingLevel(){return this._modelController.cycleThinkingLevel()}getAvailableThinkingLevels(){return this._modelController.getAvailableThinkingLevels()}supportsXhighThinking(){return this._modelController.supportsXhighThinking()}supportsThinking(){return this._modelController.supportsThinking()}setSteeringMode(e){this.agent.setSteeringMode(e),this.settingsManager.setSteeringMode(e)}setFollowUpMode(e){this.agent.setFollowUpMode(e),this.settingsManager.setFollowUpMode(e)}async compact(e){return this._compactionController.compact(e)}abortCompaction(){this._compactionController.abort()}abortBranchSummary(){this._sessionTreeController.abortBranchSummary()}async _checkCompaction(e,t=!0){const s=this.settingsManager.getCompactionSettings();if(!s.enabled||t&&e.stopReason==="aborted")return;const o=this.model?.contextWindow??0,r=this.model&&e.provider===this.model.provider&&e.model===this.model.id,i=x(this.sessionManager.getBranch()),l=i!==null&&e.timestamp<new Date(i.timestamp).getTime();if(r&&!l&&b(e,o)){const g=this.agent.state.messages;g.length>0&&g[g.length-1].role==="assistant"&&this.agent.replaceMessages(g.slice(0,-1)),await this._runAutoCompaction("overflow",!0);return}if(e.stopReason==="error")return;const m=w(e.usage);D(m,o,s)&&await this._runAutoCompaction("threshold",!1)}async _recoverModelErrorInLoop(e){const t=this.settingsManager.getCompactionSettings();if(e.message.role!=="assistant")return{action:"stop"};const s=e.message;if(e.errorSubtype!=="context_overflow"){if(!this._retryCoordinator.isRetryableError(s))return{action:"stop"};if(!await this._retryCoordinator.handleErrorInLoop(s))return{action:"stop"};const h=A(this.agent.state.messages,s);return this.agent.replaceMessages(h),{action:"retry",messages:h,transition:{reason:"model_error_recovery",subtype:e.errorSubtype,attempt:e.attempt}}}if(!t.enabled)return{action:"stop"};const o=this.model?.contextWindow??0;if(!(this.model&&s.provider===this.model.provider&&s.model===this.model.id)||!b(s,o))return{action:"stop"};const i=x(this.sessionManager.getBranch());if(i!==null&&s.timestamp<new Date(i.timestamp).getTime())return{action:"stop"};const m=this.agent.state.messages;this.agent.replaceMessages(A(m,s));const g=await this._runAutoCompaction("overflow",!0,{triggerContinue:!1});return g?{action:"retry",messages:g,transition:{reason:"model_error_recovery",subtype:e.errorSubtype,attempt:e.attempt}}:{action:"stop"}}async _runAutoCompaction(e,t,s){const o=s?.triggerContinue??!0,r=await this._compactionController.runAuto(e,t);if(r!==void 0){if(t&&o){const i=this.agent.state.messages,l=i[i.length-1];l?.role==="assistant"&&l.stopReason==="error"&&this.agent.replaceMessages(i.slice(0,-1)),setTimeout(()=>{this.agent.continue().catch(()=>{})},100)}else!t&&this.agent.hasQueuedMessages()&&setTimeout(()=>{this.agent.continue().catch(()=>{})},100);return r}}setAutoCompactionEnabled(e){this._compactionController.setAutoCompactionEnabled(e)}get autoCompactionEnabled(){return this._compactionController.autoCompactionEnabled}async bindExtensions(e){e.uiContext!==void 0&&(this._extensionUIContext=e.uiContext),e.commandContextActions!==void 0&&(this._extensionCommandContextActions=e.commandContextActions),e.shutdownHandler!==void 0&&(this._extensionShutdownHandler=e.shutdownHandler),e.onError!==void 0&&(this._extensionErrorListener=e.onError),this._extensionRunner&&(this._applyExtensionBindings(this._extensionRunner),await this._extensionRunner.emit({type:"session_start"}),await this.extendResourcesFromExtensions("startup")),this._emitDebug("basic","extension","extensions_bound")}async extendResourcesFromExtensions(e){if(!this._extensionRunner?.hasHandlers("resources_discover"))return;const{skillPaths:t,promptPaths:s,themePaths:o}=await this._extensionRunner.emitResourcesDiscover(this._cwd,e);if(t.length===0&&s.length===0&&o.length===0)return;const r={skillPaths:this.buildExtensionResourcePaths(t),promptPaths:this.buildExtensionResourcePaths(s),themePaths:this.buildExtensionResourcePaths(o)};this._resourceLoader.extendResources(r),this._baseSystemPrompt=this._rebuildSystemPrompt(this.getActiveToolNames()),this.agent.setSystemPrompt(this._baseSystemPrompt)}buildExtensionResourcePaths(e){return e.map(t=>{const s=this.getExtensionSourceLabel(t.extensionPath),o=t.extensionPath.startsWith("<")?void 0:I(t.extensionPath);return{path:t.path,metadata:{source:s,scope:"temporary",origin:"top-level",baseDir:o}}})}getExtensionSourceLabel(e){return e.startsWith("<")?`extension:${e.replace(/[<>]/g,"")}`:`extension:${P(e).replace(/\.(ts|js)$/,"")}`}_applyExtensionBindings(e){e.setUIContext(this._extensionUIContext),e.bindCommandContext(this._extensionCommandContextActions),this._extensionErrorUnsubscriber?.(),this._extensionErrorUnsubscriber=this._extensionErrorListener?e.onError(this._extensionErrorListener):void 0}_bindExtensionCore(e){const t=this;ne(e,{promptTemplates:this.promptTemplates,resourceLoader:this._resourceLoader,modelRegistry:this.modelRegistry,sessionManager:this.sessionManager,settingsManager:this.settingsManager,shutdownHandler:this._extensionShutdownHandler,soulManager:this._soulManager,get model(){return t.model},get thinkingLevel(){return t.thinkingLevel},get isStreaming(){return t.isStreaming},get pendingMessageCount(){return t.pendingMessageCount},get systemPrompt(){return t.systemPrompt},sendCustomMessage:n((s,o)=>this.sendCustomMessage(s,o),"sendCustomMessage"),sendUserMessage:n((s,o)=>this.sendUserMessage(s,o),"sendUserMessage"),executeSlashCommand:n(s=>this.executeSlashCommand(s),"executeSlashCommand"),getActiveToolNames:n(()=>this.getActiveToolNames(),"getActiveToolNames"),getAllTools:n(()=>this.getAllTools(),"getAllTools"),setActiveToolsByName:n(s=>this.setActiveToolsByName(s),"setActiveToolsByName"),setModel:n(s=>this.setModel(s),"setModel"),setThinkingLevel:n(s=>this.setThinkingLevel(s),"setThinkingLevel"),abort:n(()=>this.abort(),"abort"),clearFollowUpQueue:n(()=>{this.agent.clearFollowUpQueue(),this._followUpMessages=[]},"clearFollowUpQueue"),getContextUsage:n(()=>this.getContextUsage(),"getContextUsage"),compact:n(s=>this.compact(s),"compact")})}_buildRuntime(e){const t=this._baseToolsOverride?this._baseToolsOverride:K(this._cwd,this.settingsManager);this._baseToolRegistry=new Map(Object.entries(t).map(([c,h])=>[c,h]));const s=this._resourceLoader.getExtensions();if(e.flagValues)for(const[c,h]of e.flagValues)s.runtime.flagValues.set(c,h);const o=s.extensions.length>0,r=this._customTools.length>0;this._extensionRunner=o||r?new W(s.extensions,s.runtime,this._cwd,this._agentDir,this.sessionManager,this._modelRegistry):void 0,this._extensionRunnerRef&&(this._extensionRunnerRef.current=this._extensionRunner),this._extensionRunner&&(this._bindExtensionCore(this._extensionRunner),this._applyExtensionBindings(this._extensionRunner),this._extensionRunner.setTelemetrySink(j({workspaceRoot:this._cwd})));const i=this._toolRuntimeController.build({baseTools:this._baseToolRegistry,baseToolsOverride:this._baseToolsOverride,customTools:this._customTools,activeToolNames:e.activeToolNames,includeAllExtensionTools:e.includeAllExtensionTools,extensionRunner:this._extensionRunner}),l=n(c=>{const h=ue(c);h&&this._emit(h)},"onSubAgentEvent");this._agentTool=ae({parentSession:this,parentPermissionMode:"default",parentModel:this.model,createSession:this._createSessionFactory,onSubAgentEvent:l}),i.activeTools.push(this._agentTool),this._toolOrchestrator.registerTool(M,this._agentTool);const m=le({parentSession:this,parentPermissionMode:"default",parentModel:this.model,createSession:this._createSessionFactory,onSubAgentEvent:l});i.activeTools.push(m),this._toolOrchestrator.registerTool(ge,m);const g=he({parentSession:this,parentPermissionMode:"default",parentModel:this.model,createSession:this._createSessionFactory});i.activeTools.push(g),this._toolOrchestrator.registerTool(T,g),i.systemPromptToolNames.includes(M)||i.systemPromptToolNames.push(M),i.systemPromptToolNames.includes(T)||i.systemPromptToolNames.push(T),this.agent.setTools(i.activeTools),this._baseSystemPrompt=this._rebuildSystemPrompt(i.systemPromptToolNames),this.agent.setSystemPrompt(this._baseSystemPrompt)}async _refreshMcpTools(){if(!this._mcpToolsFactory)return 0;try{const e=await this._mcpToolsFactory();return this._customTools=[...this._staticCustomTools,...e],e.length}catch(e){this._emit({type:"sdk:error",source:"mcp",error:e});const t=this._customTools.filter(s=>s.name.startsWith("mcp_"));return this._customTools=[...this._staticCustomTools,...t],t.length}}async warmupMcpTools(){if(this._mcpToolsFactory)try{const e=await this._refreshMcpTools();this._buildRuntime({activeToolNames:this.getActiveToolNames(),flagValues:this._extensionRunner?.getFlagValues(),includeAllExtensionTools:!0}),this._emit({type:"sdk:mcp_ready",toolCount:e}),this._emitDebug("basic","mcp","mcp_warmup_complete",{toolCount:e})}catch(e){this._emit({type:"sdk:error",source:"mcp",error:e})}}async reload(){this._emitDebug("basic","resource","reload_start");const e=this._extensionRunner?.getFlagValues();if(await this._extensionRunner?.emit({type:"session_shutdown"}),this.settingsManager.reload(),F(),await this._resourceLoader.reload(),await this._refreshMcpTools(),this._soulManagerFactory)try{this._soulManager=await this._soulManagerFactory(),this._lastSoulInjection=void 0}catch(s){this._emit({type:"sdk:error",source:"soul",error:s})}this._buildRuntime({activeToolNames:this.getActiveToolNames(),flagValues:e,includeAllExtensionTools:!0});const t=this._extensionUIContext||this._extensionCommandContextActions||this._extensionShutdownHandler||this._extensionErrorListener;this._extensionRunner&&t&&(await this._extensionRunner.emit({type:"session_start"}),await this.extendResourcesFromExtensions("reload")),this._emitDebug("basic","resource","reload_end")}_createRetryHost(){return{getContextWindow:n(()=>this.model?.contextWindow??0,"getContextWindow"),getRetrySettings:n(()=>this.settingsManager.getRetrySettings(),"getRetrySettings"),removeLastAssistantMessage:n(()=>{const e=this.agent.state.messages;e.length>0&&e[e.length-1].role==="assistant"&&this.agent.replaceMessages(e.slice(0,-1))},"removeLastAssistantMessage"),triggerContinue:n(()=>{setTimeout(()=>{this.agent.continue().catch(()=>{})},0)},"triggerContinue"),emitEvent:n(e=>{this._emit(e)},"emitEvent")}}abortRetry(){this._retryCoordinator.abort()}async waitForRetry(){await this._retryCoordinator.waitForCompletion()}get isRetrying(){return this._retryCoordinator.isActive}get autoRetryEnabled(){return this.settingsManager.getRetryEnabled()}setAutoRetryEnabled(e){this.settingsManager.setRetryEnabled(e)}async executeBash(e,t,s){return this._bashRunner.execute(e,t,s)}recordBashResult(e,t,s){this._bashRunner.recordResult(e,t,s)}abortBash(){this._bashRunner.abort()}get isBashRunning(){return this._bashRunner.isRunning}get hasPendingBashMessages(){return this._bashRunner.hasPending}async switchSession(e){return this._lifecycleController.switchSession(e)}setSessionName(e){this.sessionManager.appendSessionInfo(e)}async fork(e){return this._lifecycleController.fork(e)}async navigateTree(e,t={}){return this._sessionTreeController.navigateTree(e,t)}getUserMessagesForForking(){const e=this.sessionManager.getEntries(),t=[];for(const s of e){if(s.type!=="message"||s.message.role!=="user")continue;const o=this._extractUserMessageText(s.message.content);o&&t.push({entryId:s.id,text:o})}return t}_extractUserMessageText(e){return typeof e=="string"?e:Array.isArray(e)?e.filter(t=>t.type==="text").map(t=>t.text).join(""):""}getSessionStats(){const e=this.state,t=e.messages.filter(h=>h.role==="user").length,s=e.messages.filter(h=>h.role==="assistant").length,o=e.messages.filter(h=>h.role==="toolResult").length;let r=0,i=0,l=0,m=0,g=0,c=0;for(const h of e.messages)if(h.role==="assistant"){const d=h;r+=d.content.filter(_=>_.type==="toolCall").length,i+=d.usage.input,l+=d.usage.output,m+=d.usage.cacheRead,g+=d.usage.cacheWrite,c+=d.usage.cost.total}return{sessionFile:this.sessionFile,sessionId:this.sessionId,userMessages:t,assistantMessages:s,toolCalls:r,toolResults:o,totalMessages:e.messages.length,tokens:{input:i,output:l,cacheRead:m,cacheWrite:g,total:i+l+m+g},cost:c}}getContextUsage(){const e=this.model;if(!e)return;const t=e.contextWindow??0;if(t<=0)return;const s=this.sessionManager.getBranch(),o=x(s);if(o){const l=s.lastIndexOf(o);let m=!1;for(let g=s.length-1;g>l;g--){const c=s[g];if(c.type==="message"&&c.message.role==="assistant"){const h=c.message;if(h.stopReason!=="aborted"&&h.stopReason!=="error"){w(h.usage)>0&&(m=!0);break}}}if(!m)return{tokens:null,contextWindow:t,percent:null}}const r=B(this.messages),i=r.tokens/t*100;return{tokens:r.tokens,contextWindow:t,percent:i}}async exportToHtml(e){return await ee({sessionManager:this.sessionManager,state:this.state,outputPath:e,themeName:this.settingsManager.getTheme(),extensionRunner:this._extensionRunner,theme:this._theme})}getLastAssistantText(){return te(this.messages)}hasExtensionHandlers(e){return this._extensionRunner?.hasHandlers(e)??!1}get extensionRunner(){return this._extensionRunner}}export{Ge as AgentSession,Je as CycleModelError,Qe as parseSkillBlock,A as pruneRecoverableErrorTail};
@@ -0,0 +1,56 @@
1
+ /**
2
+ * [WHO]: Provides BashRunner, BashRunnerDeps — bash execution + pending-message queue for a session
3
+ * [FROM]: Depends on core/platform/exec/bash-executor (execution), core/messages (BashExecutionMessage),
4
+ * core/tools/bash (BashOperations); host wiring passed in via closures (no agent/session import)
5
+ * [TO]: Consumed by core/runtime/agent-session.ts (composition root delegates executeBash/abortBash/…)
6
+ * [HERE]: core/runtime/agent-session.ts split — owns _bashAbortController + _pendingBashMessages
7
+ *
8
+ * Extracted from AgentSession (P4.1). Behavior-identical: the session's executeBash /
9
+ * recordBashResult / abortBash / isBashRunning / hasPendingBashMessages / flushPending methods
10
+ * now delegate here. Dependencies are injected as closures so this module stays decoupled from
11
+ * Agent / SessionManager / SettingsManager.
12
+ */
13
+ import { type BashResult } from "../platform/exec/bash-executor.js";
14
+ import type { BashExecutionMessage } from "../messages.js";
15
+ import type { BashOperations } from "../tools/bash.js";
16
+ export interface BashRunnerDeps {
17
+ /** Current working directory (read lazily — may change across session switches). */
18
+ getCwd: () => string;
19
+ /** Optional shell command prefix (e.g. alias expansion) from settings. */
20
+ getShellCommandPrefix: () => string | undefined;
21
+ /** Append a message to live agent state. */
22
+ appendToAgent: (message: BashExecutionMessage) => void;
23
+ /** Persist a message to the session. */
24
+ appendToSession: (message: BashExecutionMessage) => void;
25
+ /** Whether the agent is mid-stream (defer message to preserve tool ordering). */
26
+ isStreaming: () => boolean;
27
+ }
28
+ export declare class BashRunner {
29
+ private readonly deps;
30
+ private _abortController;
31
+ private _pending;
32
+ constructor(deps: BashRunnerDeps);
33
+ /** Run a bash command, recording its result in session history. */
34
+ execute(command: string, onChunk?: (chunk: string) => void, options?: {
35
+ excludeFromContext?: boolean;
36
+ operations?: BashOperations;
37
+ }): Promise<BashResult>;
38
+ /**
39
+ * Record a bash execution result in session history.
40
+ * Used by execute() and by extensions that handle bash execution themselves.
41
+ */
42
+ recordResult(command: string, result: BashResult, options?: {
43
+ excludeFromContext?: boolean;
44
+ }): void;
45
+ /** Cancel running bash command. */
46
+ abort(): void;
47
+ /** Whether a bash command is currently running. */
48
+ get isRunning(): boolean;
49
+ /** Whether there are pending bash messages waiting to be flushed. */
50
+ get hasPending(): boolean;
51
+ /**
52
+ * Flush pending bash messages to agent state and session.
53
+ * Called after agent turn completes to maintain proper message ordering.
54
+ */
55
+ flushPending(): void;
56
+ }
@@ -0,0 +1,2 @@
1
+ var l=Object.defineProperty;var d=(o,e)=>l(o,"name",{value:e,configurable:!0});import{executeBash as h,executeBashWithOperations as p}from"../platform/exec/bash-executor.js";class g{static{d(this,"BashRunner")}deps;_abortController=void 0;_pending=[];constructor(e){this.deps=e}async execute(e,t,s){this._abortController=new AbortController;const n=this.deps.getShellCommandPrefix(),i=n?`${n}
2
+ ${e}`:e,r=this.deps.getCwd();try{const a=s?.operations?await p(i,r,s.operations,{onChunk:t,signal:this._abortController.signal}):await h(i,{onChunk:t,signal:this._abortController.signal,cwd:r});return this.recordResult(e,a,s),a}finally{this._abortController=void 0}}recordResult(e,t,s){const n={role:"bashExecution",command:e,output:t.output,exitCode:t.exitCode,cancelled:t.cancelled,truncated:t.truncated,fullOutputPath:t.fullOutputPath,timestamp:Date.now(),excludeFromContext:s?.excludeFromContext};this.deps.isStreaming()?this._pending.push(n):(this.deps.appendToAgent(n),this.deps.appendToSession(n))}abort(){this._abortController?.abort()}get isRunning(){return this._abortController!==void 0}get hasPending(){return this._pending.length>0}flushPending(){if(this._pending.length!==0){for(const e of this._pending)this.deps.appendToAgent(e),this.deps.appendToSession(e);this._pending=[]}}}export{g as BashRunner};
@@ -0,0 +1,182 @@
1
+ /**
2
+ * [WHO]: CatuiAgent - Simplified SDK wrapper for better DX
3
+ * [FROM]: Depends on sdk.ts, agent-session.ts, tools/index.ts
4
+ * [TO]: Consumed by index.ts, external SDK users
5
+ * [HERE]: core/runtime/catui-agent.ts - high-level wrapper class with simplified API
6
+ */
7
+ import { type SDKLogger } from "./sdk.js";
8
+ import { type AgentSessionEvent } from "./agent-session.js";
9
+ import type { Api } from "@catui/ai/types";
10
+ import type { ThinkingLevel } from "@catui/agent-core";
11
+ /**
12
+ * Simplified options for CatuiAgent wrapper.
13
+ */
14
+ export interface CatuiAgentOptions {
15
+ /** API key for the provider. If omitted, uses environment variable. */
16
+ apiKey?: string;
17
+ /** Provider name: 'anthropic', 'openai', 'google', or any custom provider in models.json. */
18
+ provider?: string;
19
+ /** Model ID: 'claude-4-5-20250920', 'gpt-4o', etc. */
20
+ model?: string;
21
+ /**
22
+ * Optional base URL when registering a custom provider on the fly.
23
+ * Required when `provider` + `model` is not already defined in
24
+ * ~/.catui/agents/default/models.json. Ignored when the model is found.
25
+ */
26
+ baseUrl?: string;
27
+ /**
28
+ * Optional API protocol for the dynamically-registered provider.
29
+ * Defaults to "openai-completions". Ignored when the model is found.
30
+ */
31
+ api?: Api;
32
+ /** Thinking level: 'off' | 'low' | 'medium' | 'high' */
33
+ thinkingLevel?: ThinkingLevel;
34
+ /** Working directory. Default: process.cwd() */
35
+ cwd?: string;
36
+ /** Initial tool names: ['read', 'bash', 'edit', 'write'] */
37
+ tools?: string[];
38
+ /** Enable MCP tools */
39
+ enableMCP?: boolean;
40
+ /** Enable Soul personality */
41
+ enableSoul?: boolean;
42
+ /** Suppress all console output */
43
+ silent?: boolean;
44
+ /** Custom logger */
45
+ logger?: SDKLogger;
46
+ /** In-memory session (no persistence) */
47
+ inMemory?: boolean;
48
+ /** Abort signal for external control */
49
+ signal?: AbortSignal;
50
+ }
51
+ /**
52
+ * Simplified wrapper for Catui SDK.
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * // Minimal usage
57
+ * const agent = new CatuiAgent();
58
+ * await agent.init();
59
+ * const result = await agent.run('Hello');
60
+ *
61
+ * // With explicit config
62
+ * const agent = new CatuiAgent({
63
+ * apiKey: 'sk-xxx',
64
+ * silent: true,
65
+ * });
66
+ * await agent.init();
67
+ * ```
68
+ */
69
+ export declare class CatuiAgent {
70
+ private session;
71
+ private sessionResult;
72
+ private logger;
73
+ private options;
74
+ private cwd;
75
+ private initialized;
76
+ private collectedText;
77
+ private eventListeners;
78
+ constructor(options?: CatuiAgentOptions);
79
+ /**
80
+ * Initialize the agent session.
81
+ * Must be called before run/chat.
82
+ */
83
+ init(): Promise<void>;
84
+ /**
85
+ * Resolve constructor-provided provider/model into a Model<any>.
86
+ *
87
+ * Lookup order:
88
+ * 1. Existing entry in modelRegistry (e.g. ~/.catui/agents/default/models.json
89
+ * already declares this provider/model — common case for users who ran
90
+ * /sal:setup or hand-edited models.json).
91
+ * 2. Dynamic registration when caller supplied baseUrl + apiKey — lets a
92
+ * one-line constructor call wire up a brand-new OpenAI-compatible
93
+ * endpoint without touching disk.
94
+ * 3. Otherwise return undefined and let createAgentSession fall back to
95
+ * findInitialModel() (built-in default). The logger surfaces a warning
96
+ * in this case so the caller knows their args were not honoured.
97
+ */
98
+ private resolveRequestedModel;
99
+ /**
100
+ * Handle session events - collects text for run()
101
+ */
102
+ private handleEvent;
103
+ /**
104
+ * Ensure session is initialized.
105
+ */
106
+ private ensureInit;
107
+ /**
108
+ * Run a complete task - returns final result.
109
+ * Blocks until agent finishes all tool calls.
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * await agent.init();
114
+ * const result = await agent.run('Read README.md and summarize');
115
+ * ```
116
+ */
117
+ run(message: string): Promise<string>;
118
+ /**
119
+ * Send a prompt and collect events.
120
+ *
121
+ * @example
122
+ * ```typescript
123
+ * await agent.init();
124
+ * agent.subscribe((event) => {
125
+ * if (event.type === 'tool_call') {
126
+ * console.log('Tool:', event.name);
127
+ * }
128
+ * });
129
+ * await agent.prompt('Hello');
130
+ * ```
131
+ */
132
+ prompt(message: string): Promise<void>;
133
+ /**
134
+ * Reset the session (clear conversation history, start a new session).
135
+ */
136
+ reset(): Promise<void>;
137
+ /**
138
+ * Shutdown the session.
139
+ */
140
+ shutdown(): Promise<void>;
141
+ /**
142
+ * Subscribe to agent events.
143
+ *
144
+ * @example
145
+ * ```typescript
146
+ * await agent.init();
147
+ * agent.subscribe((event) => {
148
+ * if (event.type === 'sdk:error') {
149
+ * console.error('SDK error:', event.error);
150
+ * }
151
+ * });
152
+ * ```
153
+ */
154
+ subscribe(listener: (event: AgentSessionEvent) => void): void;
155
+ /**
156
+ * Remove event subscription.
157
+ */
158
+ unsubscribe(listener: (event: AgentSessionEvent) => void): void;
159
+ /**
160
+ * Check if agent is initialized.
161
+ */
162
+ isInitialized(): boolean;
163
+ /**
164
+ * Get last collected text.
165
+ */
166
+ getLastText(): string;
167
+ }
168
+ /**
169
+ * Quick factory for CatuiAgent with auto-init.
170
+ *
171
+ * @example
172
+ * ```typescript
173
+ * const agent = await quickAgent({ apiKey: 'sk-xxx' });
174
+ * ```
175
+ */
176
+ export declare function quickAgent(options?: CatuiAgentOptions): Promise<CatuiAgent>;
177
+ /**
178
+ * Legacy compatibility alias for SDK users migrating from the Pencil brand.
179
+ * New code should import CatuiAgent/CatuiAgentOptions from @catui/agent.
180
+ */
181
+ export { CatuiAgent as PencilAgent };
182
+ export type { CatuiAgentOptions as PencilAgentOptions };
@@ -0,0 +1 @@
1
+ var d=Object.defineProperty;var r=(o,e)=>d(o,"name",{value:e,configurable:!0});import{createAgentSession as c,silentLogger as p,defaultLogger as u}from"./sdk.js";import{allTools as g}from"../tools/index.js";import{AuthStorage as l}from"../platform/config/auth-storage.js";import{SessionManager as a}from"../session/session-manager.js";import{ModelRegistry as f}from"../model-registry.js";class h{static{r(this,"CatuiAgent")}session=null;sessionResult=null;logger;options;cwd;initialized=!1;collectedText="";eventListeners=[];constructor(e={}){this.cwd=e.cwd??process.cwd(),this.options=e,this.logger=e.silent?p:e.logger??u}async init(){if(this.initialized)return;const e=this.options.inMemory?l.inMemory():l.create(),s=new f(e);this.options.apiKey&&this.options.provider&&await e.set(this.options.provider,{type:"api_key",key:this.options.apiKey});const t=this.resolveRequestedModel(s);let n;this.options.tools&&this.options.tools.length>0&&(n=this.options.tools.map(i=>g[i]).filter(i=>i!==void 0)),this.sessionResult=await c({cwd:this.cwd,model:t,thinkingLevel:this.options.thinkingLevel,tools:n,authStorage:e,modelRegistry:s,sessionManager:this.options.inMemory?a.inMemory():a.create(this.cwd),enableMCP:this.options.enableMCP??!1,enableSoul:this.options.enableSoul??!1,silent:this.options.silent,logger:this.logger,signal:this.options.signal}),this.session=this.sessionResult.session,this.sessionResult.modelFallbackMessage&&this.logger.warn(this.sessionResult.modelFallbackMessage),this.session.subscribe(this.handleEvent.bind(this)),this.initialized=!0}resolveRequestedModel(e){const s=this.options.provider,t=this.options.model;if(!s||!t)return;const n=e.find(s,t);if(n)return n;if(this.options.baseUrl)try{e.registerProvider(s,{api:this.options.api??"openai-completions",baseUrl:this.options.baseUrl,apiKey:this.options.apiKey,models:[{id:t,name:t,reasoning:!1,input:["text"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192}]});const i=e.find(s,t);if(i)return i}catch(i){this.logger.warn(`[CatuiAgent] dynamic provider registration failed for ${s}/${t}: ${i.message}`)}this.logger.warn(`[CatuiAgent] model ${s}/${t} not found in registry. Either add it to ~/.catui/agent/models.json or pass { baseUrl, apiKey } to register it dynamically. Falling back to default model selection.`)}handleEvent(e){for(const s of this.eventListeners)s(e);if(e.type==="message_end"&&e.message?.role==="assistant"){const s=e.message.content;if(typeof s=="string")this.collectedText+=s;else if(Array.isArray(s))for(const t of s)t.type==="text"&&(this.collectedText+=t.text)}}ensureInit(){if(!this.initialized||!this.session)throw new Error("CatuiAgent not initialized. Call init() first.")}async run(e){return this.ensureInit(),this.collectedText="",await this.session.prompt(e),this.collectedText}async prompt(e){this.ensureInit(),await this.session.prompt(e)}async reset(){this.ensureInit(),this.collectedText="",await this.session.newSession()}async shutdown(){this.session&&(this.logger.info("Session shutdown"),this.initialized=!1,this.session=null,this.sessionResult=null)}subscribe(e){this.eventListeners.push(e)}unsubscribe(e){const s=this.eventListeners.indexOf(e);s>=0&&this.eventListeners.splice(s,1)}isInitialized(){return this.initialized}getLastText(){return this.collectedText}}async function M(o={}){const e=new h(o);return await e.init(),e}r(M,"quickAgent");export{h as CatuiAgent,h as PencilAgent,M as quickAgent};
@@ -0,0 +1,43 @@
1
+ /**
2
+ * [WHO]: Provides CompactionController — manual context-window compaction + its abort state
3
+ * [FROM]: Depends on session/compaction (compact, prepareCompaction, CompactionResult),
4
+ * session-manager (CompactionEntry), extensions-host (SessionBeforeCompactResult),
5
+ * platform/abort-slot, and ./session-context (CompactionControllerContext)
6
+ * [TO]: Consumed by core/runtime/agent-session.ts (constructs one, delegates compact()/abortCompaction())
7
+ * [HERE]: core/runtime/agent-session.ts split (P4.x-a) — owns the manual-compaction abort slot
8
+ *
9
+ * Extracted from AgentSession (AS04). Owns the manual compaction flow and its cancellation state.
10
+ * Auto-compaction (loop-driven) is a later slice (P4.x-b). Session state is reached through the
11
+ * narrow CompactionControllerContext; behavior is identical to the former AgentSession.compact().
12
+ */
13
+ import type { AgentMessage } from "@catui/agent-core";
14
+ import { type CompactionResult } from "../session/compaction/index.js";
15
+ import type { CompactionControllerContext } from "./session-context.js";
16
+ export declare class CompactionController {
17
+ private readonly ctx;
18
+ /** Cancellation slot for the in-flight manual compaction. */
19
+ private readonly _slot;
20
+ /** Cancellation slot for the in-flight auto (loop-driven) compaction. */
21
+ private readonly _autoSlot;
22
+ constructor(ctx: CompactionControllerContext);
23
+ /** Whether a manual or auto compaction is currently running. */
24
+ get isCompacting(): boolean;
25
+ /** Cancel an in-progress compaction (manual or auto). */
26
+ abort(): void;
27
+ /** Whether auto-compaction is enabled. */
28
+ get autoCompactionEnabled(): boolean;
29
+ /** Toggle auto-compaction. */
30
+ setAutoCompactionEnabled(enabled: boolean): void;
31
+ /**
32
+ * Compact the current branch: summarize older entries and rebuild agent messages.
33
+ * Detaches the agent during the operation and reconnects in finally.
34
+ */
35
+ compact(customInstructions?: string): Promise<CompactionResult>;
36
+ /**
37
+ * Run auto-compaction (loop-driven). Performs the compaction + emits
38
+ * auto_compaction_start/end, and returns the rebuilt messages on success (or undefined when
39
+ * compaction was skipped/aborted/failed). The loop-continuation decision (retry / kick the
40
+ * queue) stays in AgentSession — this only owns the compaction itself.
41
+ */
42
+ runAuto(reason: "overflow" | "threshold", willRetry: boolean): Promise<AgentMessage[] | undefined>;
43
+ }
@@ -0,0 +1 @@
1
+ var S=Object.defineProperty;var w=(E,e)=>S(E,"name",{value:e,configurable:!0});import{compact as C,prepareCompaction as b}from"../session/compaction/index.js";import{AbortSlot as A}from"../platform/abort-slot.js";class v{static{w(this,"CompactionController")}ctx;_slot=new A;_autoSlot=new A;constructor(e){this.ctx=e}get isCompacting(){return this._slot.active||this._autoSlot.active}abort(){this._slot.abort(),this._autoSlot.abort()}get autoCompactionEnabled(){return this.ctx.getAutoCompactionEnabled()}setAutoCompactionEnabled(e){this.ctx.setAutoCompactionEnabled(e)}async compact(e){this.ctx.logInfo("Manual compaction started",{hasCustomInstructions:!!e}),this.ctx.disconnectFromAgent(),await this.ctx.abortAgent();const d=this._slot.begin();try{const f=this.ctx.getModel();if(!f)throw new Error("No model selected");const u=await this.ctx.getApiKey(f);if(!u)throw new Error(`No API key for ${f.provider}`);const o=this.ctx.getBranch(),p=this.ctx.getCompactionSettings(),h=b(o,p);if(!h)throw o[o.length-1]?.type==="compaction"?new Error("Already compacted"):new Error("Nothing to compact (session too small)");let i,s=!1;const m=this.ctx.getExtensionRunner();if(m?.hasHandlers("session_before_compact")){const t=await m.emit({type:"session_before_compact",preparation:h,branchEntries:o,customInstructions:e,signal:d});if(t?.cancel)throw new Error("Compaction cancelled");t?.compaction&&(i=t.compaction,s=!0)}let a,r,c,l;if(i)a=i.summary,r=i.firstKeptEntryId,c=i.tokensBefore,l=i.details;else{const t=await C(h,f,u,e,d);a=t.summary,r=t.firstKeptEntryId,c=t.tokensBefore,l=t.details}if(d.aborted)throw new Error("Compaction cancelled");this.ctx.appendCompaction(a,r,c,l,s);const y=this.ctx.getEntries();this.ctx.applyCompactedMessages();const x=y.find(t=>t.type==="compaction"&&t.summary===a);return m&&x&&await m.emit({type:"session_compact",compactionEntry:x,fromExtension:s}),{summary:a,firstKeptEntryId:r,tokensBefore:c,details:l}}finally{this._slot.clear(),this.ctx.reconnectToAgent()}}async runAuto(e,d){this.ctx.logInfo("Auto-compaction triggered",{reason:e,willRetry:d});const f=this.ctx.getCompactionSettings();this.ctx.emitAutoCompactionStart(e);const u=this._autoSlot.begin();try{const o=this.ctx.getModel();if(!o){this.ctx.emitAutoCompactionEnd({result:void 0,aborted:!1,willRetry:!1});return}const p=await this.ctx.getApiKey(o);if(!p){this.ctx.emitAutoCompactionEnd({result:void 0,aborted:!1,willRetry:!1});return}const h=this.ctx.getBranch(),i=b(h,f);if(!i){this.ctx.emitAutoCompactionEnd({result:void 0,aborted:!1,willRetry:!1});return}let s,m=!1;const a=this.ctx.getExtensionRunner();if(a?.hasHandlers("session_before_compact")){const n=await a.emit({type:"session_before_compact",preparation:i,branchEntries:h,customInstructions:void 0,signal:u});if(n?.cancel){this.ctx.emitAutoCompactionEnd({result:void 0,aborted:!0,willRetry:!1});return}n?.compaction&&(s=n.compaction,m=!0)}let r,c,l,y;if(s)r=s.summary,c=s.firstKeptEntryId,l=s.tokensBefore,y=s.details;else{const n=await C(i,o,p,void 0,u);r=n.summary,c=n.firstKeptEntryId,l=n.tokensBefore,y=n.details}if(u.aborted){this.ctx.emitAutoCompactionEnd({result:void 0,aborted:!0,willRetry:!1});return}this.ctx.appendCompaction(r,c,l,y,m);const x=this.ctx.getEntries(),t=this.ctx.applyCompactedMessages(),g=x.find(n=>n.type==="compaction"&&n.summary===r);a&&g&&await a.emit({type:"session_compact",compactionEntry:g,fromExtension:m});const _={summary:r,firstKeptEntryId:c,tokensBefore:l,details:y};return this.ctx.emitAutoCompactionEnd({result:_,aborted:!1,willRetry:d}),t}catch(o){const p=o instanceof Error?o.message:"compaction failed";this.ctx.emitAutoCompactionEnd({result:void 0,aborted:!1,willRetry:!1,errorMessage:e==="overflow"?`Context overflow recovery failed: ${p}`:`Auto-compaction failed: ${p}`});return}finally{this._autoSlot.clear()}}}export{v as CompactionController};
@@ -0,0 +1,9 @@
1
+ /**
2
+ * [WHO]: Provides createDefaultRuntimeTools()
3
+ * [FROM]: Depends on SettingsManager and core/tools factories for default runtime tool wiring
4
+ * [TO]: Consumed by AgentSession runtime construction
5
+ * [HERE]: core/runtime/default-tools.ts - isolates default tool configuration from session orchestration
6
+ */
7
+ import type { SettingsManager } from "../platform/config/settings-manager.js";
8
+ import { type Tool, type ToolName } from "../tools/index.js";
9
+ export declare function createDefaultRuntimeTools(cwd: string, settingsManager: SettingsManager): Record<ToolName, Tool>;
@@ -0,0 +1 @@
1
+ var a=Object.defineProperty;var o=(e,r)=>a(e,"name",{value:r,configurable:!0});import{createAllTools as i,createWorkspaceWriteGuard as m}from"../tools/index.js";function f(e,r){const t=m(e);return i(e,{read:{autoResizeImages:r.getImageAutoResize()},bash:{commandPrefix:r.getShellCommandPrefix()},edit:{beforeWrite:t},write:{beforeWrite:t}})}o(f,"createDefaultRuntimeTools");export{f as createDefaultRuntimeTools};
@@ -0,0 +1,21 @@
1
+ /**
2
+ * [WHO]: Provides ExtensionEventBridge, ExtensionEventBridgeDeps
3
+ * [FROM]: Depends on agent-core AgentEvent, extensions-host event types, and ExtensionRunner
4
+ * [TO]: Consumed by core/runtime/agent-session.ts for extension-facing event fanout
5
+ * [HERE]: core/runtime/event-bridge.ts - narrow extension event mapping extracted from AgentSession
6
+ *
7
+ * Extracted from AgentSession (P4.7 / AS07). This bridge owns only AgentEvent ->
8
+ * extension event mapping and extension turn indexing. AgentSession keeps public
9
+ * subscribe(), session persistence, retry/compaction ordering, and Soul lifecycle work.
10
+ */
11
+ import type { AgentEvent } from "@catui/agent-core";
12
+ import { type ExtensionRunner } from "../extensions-host/index.js";
13
+ export interface ExtensionEventBridgeDeps {
14
+ getExtensionRunner: () => ExtensionRunner | undefined;
15
+ }
16
+ export declare class ExtensionEventBridge {
17
+ private readonly deps;
18
+ private _turnIndex;
19
+ constructor(deps: ExtensionEventBridgeDeps);
20
+ emitExtensionEvent(event: AgentEvent): Promise<void>;
21
+ }
@@ -0,0 +1 @@
1
+ var i=Object.defineProperty;var o=(a,t)=>i(a,"name",{value:t,configurable:!0});class l{static{o(this,"ExtensionEventBridge")}deps;_turnIndex=0;constructor(t){this.deps=t}async emitExtensionEvent(t){const s=this.deps.getExtensionRunner();if(s){if(t.type==="agent_start")this._turnIndex=0,await s.emit({type:"agent_start"});else if(t.type==="agent_result"){const e={...t};await s.emit(e)}else if(t.type==="turn_start"){const e={type:"turn_start",turnIndex:this._turnIndex,timestamp:Date.now()};await s.emit(e)}else if(t.type==="turn_end"){const e={type:"turn_end",turnIndex:this._turnIndex,message:t.message,toolResults:t.toolResults};await s.emit(e),this._turnIndex++}else if(t.type==="message_start"){const e={type:"message_start",message:t.message};await s.emit(e)}else if(t.type==="message_update"){const e={type:"message_update",message:t.message,assistantMessageEvent:t.assistantMessageEvent};await s.emit(e)}else if(t.type==="message_end"){const e={type:"message_end",message:t.message};await s.emit(e)}else if(t.type==="tool_execution_start"){const e={type:"tool_execution_start",toolCallId:t.toolCallId,toolName:t.toolName,args:t.args};await s.emit(e)}else if(t.type==="tool_execution_update"){const e={type:"tool_execution_update",toolCallId:t.toolCallId,toolName:t.toolName,args:t.args,partialResult:t.partialResult};await s.emit(e)}else if(t.type==="tool_execution_end"){const e={type:"tool_execution_end",toolCallId:t.toolCallId,toolName:t.toolName,result:t.result,isError:t.isError};await s.emit(e)}}}}export{l as ExtensionEventBridge};
@@ -0,0 +1,8 @@
1
+ export interface EventBus {
2
+ emit(channel: string, data: unknown): void;
3
+ on(channel: string, handler: (data: unknown) => void): () => void;
4
+ }
5
+ export interface EventBusController extends EventBus {
6
+ clear(): void;
7
+ }
8
+ export declare function createEventBus(): EventBusController;
@@ -0,0 +1 @@
1
+ var s=Object.defineProperty;var t=(e,r)=>s(e,"name",{value:r,configurable:!0});import{EventEmitter as a}from"node:events";function u(){const e=new a;return{emit:t((r,n)=>{e.emit(r,n)},"emit"),on:t((r,n)=>{const o=t(async i=>{try{await n(i)}catch(m){e.emit("eventbus:handler-error",{channel:r,error:m})}},"safeHandler");return e.on(r,o),()=>e.off(r,o)},"on"),clear:t(()=>{e.removeAllListeners()},"clear")}}t(u,"createEventBus");export{u as createEventBus};
@@ -0,0 +1,23 @@
1
+ /**
2
+ * [WHO]: Provides exportSessionHtml(), getLastAssistantText()
3
+ * [FROM]: Depends on agent-core/ai public message types, export-html, ExtensionRunner, SessionManager, Theme
4
+ * [TO]: Consumed by core/runtime/agent-session.ts facade methods
5
+ * [HERE]: core/runtime/export-bridge.ts - HTML export bridge extracted from AgentSession
6
+ *
7
+ * Extracted from AgentSession (P4.6). This module owns HTML export wiring and last-assistant
8
+ * text extraction. AgentSession remains the public facade and injects the optional Theme.
9
+ */
10
+ import type { AgentMessage, AgentState } from "@catui/agent-core";
11
+ import type { ExtensionRunner } from "../extensions-host/index.js";
12
+ import type { SessionManager } from "../session/session-manager.js";
13
+ import type { Theme } from "../theme-contract.js";
14
+ export interface ExportSessionHtmlOptions {
15
+ sessionManager: SessionManager;
16
+ state: AgentState;
17
+ outputPath?: string;
18
+ themeName?: string;
19
+ extensionRunner?: ExtensionRunner;
20
+ theme?: Theme;
21
+ }
22
+ export declare function exportSessionHtml(options: ExportSessionHtmlOptions): Promise<string>;
23
+ export declare function getLastAssistantText(messages: ReadonlyArray<AgentMessage>): string | undefined;
@@ -0,0 +1 @@
1
+ var i=Object.defineProperty;var o=(e,t)=>i(e,"name",{value:t,configurable:!0});import{exportSessionToHtml as s}from"../export-html/index.js";import{createToolHtmlRenderer as a}from"../export-html/tool-renderer.js";async function m(e){const t=e.extensionRunner&&e.theme?a({getToolDefinition:o(r=>e.extensionRunner.getToolDefinition(r),"getToolDefinition"),theme:e.theme}):void 0;return await s(e.sessionManager,e.state,{outputPath:e.outputPath,themeName:e.themeName,toolRenderer:t})}o(m,"exportSessionHtml");function c(e){const t=e.slice().reverse().find(n=>!(n.role!=="assistant"||n.stopReason==="aborted"&&n.content.length===0));if(!t)return;let r="";for(const n of t.content)n.type==="text"&&(r+=n.text);return r.trim()||void 0}o(c,"getLastAssistantText");export{m as exportSessionHtml,c as getLastAssistantText};
@@ -0,0 +1,46 @@
1
+ /**
2
+ * [WHO]: Provides bindExtensionCore() — wires AgentSession host methods to ExtensionRunner APIs, including LLM call telemetry (every ctx.completeSimple / completeSimpleWithUsage / completeJson emits one ext_llm_calls row)
3
+ * [FROM]: Depends on ExtensionRunner, model/session/resource abstractions, slash command metadata, core/platform/telemetry (getExtCallerContext for caller attribution + LlmCallEventInput shape)
4
+ * [TO]: Consumed by AgentSession when initializing extension runtime capabilities
5
+ * [HERE]: core/runtime/extension-core-bindings.ts - the LLM-call instrumentation point; reads AsyncLocalStorage context pushed by runner.invokeCommand (user-initiated=true) or runner.invokeHookHandler (user-initiated=false) to attribute each call. is_user_initiated=false rows grouped by extension_name + caller_context are the idle-thinking bug detector.
6
+ */
7
+ import type { Model } from "@catui/ai/types";
8
+ import type { ThinkingLevel } from "@catui/agent-core";
9
+ import type { SettingsManager } from "../platform/config/settings-manager.js";
10
+ import type { ResourceLoader } from "../platform/config/resource-loader.js";
11
+ import type { ExtensionActions, ExtensionRunner, ToolInfo } from "../extensions-host/index.js";
12
+ import type { ModelRegistry } from "../model-registry.js";
13
+ import type { PromptTemplate } from "../prompt/prompt-templates.js";
14
+ import type { SessionManager } from "../session/session-manager.js";
15
+ import type { ContextUsage } from "../extensions-host/types.js";
16
+ import type { CompactionResult } from "../session/compaction/index.js";
17
+ type SendMessage = ExtensionActions["sendMessage"];
18
+ type SendUserMessage = ExtensionActions["sendUserMessage"];
19
+ export interface ExtensionCoreBindingHost {
20
+ promptTemplates: ReadonlyArray<PromptTemplate>;
21
+ resourceLoader: ResourceLoader;
22
+ modelRegistry: ModelRegistry;
23
+ sessionManager: SessionManager;
24
+ settingsManager: SettingsManager;
25
+ shutdownHandler?: () => void;
26
+ soulManager?: unknown;
27
+ get model(): Model<any> | undefined;
28
+ get thinkingLevel(): ThinkingLevel;
29
+ get isStreaming(): boolean;
30
+ get pendingMessageCount(): number;
31
+ get systemPrompt(): string;
32
+ sendCustomMessage: (message: Parameters<SendMessage>[0], options?: Parameters<SendMessage>[1]) => Promise<void>;
33
+ sendUserMessage: (content: Parameters<SendUserMessage>[0], options?: Parameters<SendUserMessage>[1]) => Promise<void>;
34
+ executeSlashCommand(text: string): Promise<boolean>;
35
+ getActiveToolNames(): string[];
36
+ getAllTools(): ToolInfo[];
37
+ setActiveToolsByName(toolNames: string[]): void;
38
+ setModel(model: Model<any>): Promise<void>;
39
+ setThinkingLevel(level: ThinkingLevel): void;
40
+ abort(): Promise<void> | void;
41
+ clearFollowUpQueue(): void;
42
+ getContextUsage(): ContextUsage | undefined;
43
+ compact(customInstructions?: string): Promise<CompactionResult>;
44
+ }
45
+ export declare function bindExtensionCore(runner: ExtensionRunner, host: ExtensionCoreBindingHost): void;
46
+ export {};
@@ -0,0 +1,3 @@
1
+ var E=Object.defineProperty;var t=(n,e)=>E(n,"name",{value:e,configurable:!0});import{completeSimple as S}from"@catui/ai/stream";import{getExtCallerContext as T}from"../platform/telemetry/index.js";import{buildExtensionSlashCommands as A}from"./slash-command-catalog.js";function I(n,e){switch(n.api){case"openai-completions":return{type:"function",function:{name:e}};case"anthropic-messages":case"bedrock-converse-stream":return{type:"tool",name:e};case"google-generative-ai":case"google-gemini-cli":case"google-vertex":return"any";default:return"required"}}t(I,"getStructuredToolChoice");function L(n){return n.type==="text"}t(L,"isTextContent");function N(n,e){return n.type==="toolCall"&&"name"in n&&n.name===e}t(N,"isNamedToolCall");function v(n){const e=T();return{extensionName:e?.extensionName??"unknown",callerContext:e?.callerContext??"unknown",isUserInitiated:e?.isUserInitiated??!1,modelId:n.model?.id??null,tokensIn:n.usage?.input??null,tokensOut:n.usage?.output??null,costTotal:n.usage?.cost?.total??null,durationMs:Math.round(performance.now()-n.startPerf),ok:n.ok,errorCode:n.errorCode,startedAt:n.startedAt,endedAt:new Date,sessionId:e?.sessionId??n.host.sessionManager.getSessionId(),runId:e?.runId??null,variant:e?.variant??null}}t(v,"buildLlmCallEvent");async function P(n,e,o,r){return(await M(n,e,o,r))?.text}t(P,"completeTextWithCurrentModel");async function M(n,e,o,r){const a=e.model;if(!a)return;const s=await e.modelRegistry.getApiKey(a);if(!s)return;const c=new Date,d=performance.now();let i=!0,g=null,m,u;try{const l=await S(a,{systemPrompt:o,messages:[{role:"user",content:r,timestamp:Date.now()}]},{maxTokens:1500,temperature:.2,apiKey:s});m=l.usage,u=l.content?.filter(L).map(p=>p.text??"").join("")??""}catch(l){i=!1,g=l instanceof Error?l.constructor.name:"unknown"}if(n.writeLlmCallEvent(v({host:e,model:a,startedAt:c,startPerf:d,ok:i,errorCode:g,usage:m})),!(!i||u===void 0||m===void 0))return{text:u,usage:m}}t(M,"completeTextWithUsage");async function U(n,e,o,r,a,s){const c=e.model;if(!c)return;const d=await e.modelRegistry.getApiKey(c);if(!d)return;const i=s?.toolName||"submit_json",g=new Date,m=performance.now();let u=!0,l=null,p,w;try{const f=a,k={maxTokens:1500,temperature:0,apiKey:d,toolChoice:I(c,i)},x=await S(c,{systemPrompt:`${o}
2
+
3
+ You must call the ${i} tool exactly once with the final structured JSON payload. Do not answer in prose.`,messages:[{role:"user",content:r,timestamp:Date.now()}],tools:[{name:i,description:"Submit the final structured JSON payload.",parameters:f}]},k);p=x.usage;const y=x.content?.find(C=>N(C,i));if(y){const C=s?.resultKey?y.arguments?.[s.resultKey]:y.arguments;w=JSON.stringify(C)}}catch(f){u=!1,l=f instanceof Error?f.constructor.name:"unknown"}if(n.writeLlmCallEvent(v({host:e,model:c,startedAt:g,startPerf:m,ok:u,errorCode:l,usage:p})),!!u)return w}t(U,"completeJsonWithCurrentModel");function O(n,e){n.bindCore({sendMessage:t((o,r)=>{e.sendCustomMessage(o,r).catch(a=>{n.emitError({extensionPath:"<runtime>",event:"send_message",error:a instanceof Error?a.message:String(a)})})},"sendMessage"),sendUserMessage:t((o,r)=>{e.sendUserMessage(o,r).catch(a=>{n.emitError({extensionPath:"<runtime>",event:"send_user_message",error:a instanceof Error?a.message:String(a)})})},"sendUserMessage"),executeCommand:t(async o=>{try{return await e.executeSlashCommand(o)}catch(r){return n.emitError({extensionPath:"<runtime>",event:"execute_command",error:r instanceof Error?r.message:String(r)}),!1}},"executeCommand"),appendEntry:t((o,r)=>{e.sessionManager.appendCustomEntry(o,r)},"appendEntry"),setSessionName:t(o=>{e.sessionManager.appendSessionInfo(o)},"setSessionName"),getSessionName:t(()=>e.sessionManager.getSessionName(),"getSessionName"),setLabel:t((o,r)=>{e.sessionManager.appendLabelChange(o,r)},"setLabel"),getActiveTools:t(()=>e.getActiveToolNames(),"getActiveTools"),getAllTools:t(()=>e.getAllTools(),"getAllTools"),setActiveTools:t(o=>e.setActiveToolsByName(o),"setActiveTools"),getCommands:t(()=>A({promptTemplates:e.promptTemplates,resourceLoader:e.resourceLoader,extensionRunner:n}),"getCommands"),setModel:t(async o=>await e.modelRegistry.getApiKey(o)?(await e.setModel(o),!0):!1,"setModel"),getThinkingLevel:t(()=>e.thinkingLevel,"getThinkingLevel"),setThinkingLevel:t(o=>e.setThinkingLevel(o),"setThinkingLevel")},{getModel:t(()=>e.model,"getModel"),completeSimple:t((o,r)=>P(n,e,o,r),"completeSimple"),completeSimpleWithUsage:t((o,r)=>M(n,e,o,r),"completeSimpleWithUsage"),completeJson:t((o,r,a,s)=>U(n,e,o,r,a,s),"completeJson"),getSettings:t(()=>e.settingsManager.getSettings(),"getSettings"),isIdle:t(()=>!e.isStreaming,"isIdle"),abort:t(()=>{e.abort()},"abort"),clearFollowUpQueue:t(()=>e.clearFollowUpQueue(),"clearFollowUpQueue"),hasPendingMessages:t(()=>e.pendingMessageCount>0,"hasPendingMessages"),shutdown:t(()=>{e.shutdownHandler?.()},"shutdown"),getContextUsage:t(()=>e.getContextUsage(),"getContextUsage"),compact:t(o=>{(async()=>{try{const r=await e.compact(o?.customInstructions);o?.onComplete?.(r)}catch(r){const a=r instanceof Error?r:new Error(String(r));o?.onError?.(a)}})()},"compact"),getSystemPrompt:t(()=>e.systemPrompt,"getSystemPrompt"),getSoulManager:t(()=>e.soulManager,"getSoulManager"),getSkills:t(()=>e.resourceLoader.getSkills().skills,"getSkills")})}t(O,"bindExtensionCore");export{O as bindExtensionCore};