@hyperspaceng/neural-coding-agent 0.62.1 → 0.63.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 (348) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/README.md +10 -0
  3. package/dist/bun/register-bedrock.d.ts.map +1 -1
  4. package/dist/bun/register-bedrock.js +2 -2
  5. package/dist/bun/register-bedrock.js.map +1 -1
  6. package/dist/cli/args.d.ts +1 -1
  7. package/dist/cli/args.d.ts.map +1 -1
  8. package/dist/cli/args.js.map +1 -1
  9. package/dist/cli/config-selector.d.ts.map +1 -1
  10. package/dist/cli/config-selector.js +1 -1
  11. package/dist/cli/config-selector.js.map +1 -1
  12. package/dist/cli/file-processor.d.ts +1 -1
  13. package/dist/cli/file-processor.d.ts.map +1 -1
  14. package/dist/cli/file-processor.js +4 -0
  15. package/dist/cli/file-processor.js.map +1 -1
  16. package/dist/cli/initial-message.d.ts +1 -1
  17. package/dist/cli/initial-message.d.ts.map +1 -1
  18. package/dist/cli/initial-message.js.map +1 -1
  19. package/dist/cli/list-models.d.ts.map +1 -1
  20. package/dist/cli/list-models.js +1 -1
  21. package/dist/cli/list-models.js.map +1 -1
  22. package/dist/cli/session-picker.d.ts.map +1 -1
  23. package/dist/cli/session-picker.js +1 -1
  24. package/dist/cli/session-picker.js.map +1 -1
  25. package/dist/core/agent-session.d.ts +12 -5
  26. package/dist/core/agent-session.d.ts.map +1 -1
  27. package/dist/core/agent-session.js +61 -47
  28. package/dist/core/agent-session.js.map +1 -1
  29. package/dist/core/auth-storage.d.ts +2 -2
  30. package/dist/core/auth-storage.d.ts.map +1 -1
  31. package/dist/core/auth-storage.js +2 -2
  32. package/dist/core/auth-storage.js.map +1 -1
  33. package/dist/core/compaction/branch-summarization.d.ts +2 -2
  34. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  35. package/dist/core/compaction/branch-summarization.js +1 -1
  36. package/dist/core/compaction/branch-summarization.js.map +1 -1
  37. package/dist/core/compaction/compaction.d.ts +2 -2
  38. package/dist/core/compaction/compaction.d.ts.map +1 -1
  39. package/dist/core/compaction/compaction.js +1 -1
  40. package/dist/core/compaction/compaction.js.map +1 -1
  41. package/dist/core/compaction/utils.d.ts +2 -2
  42. package/dist/core/compaction/utils.d.ts.map +1 -1
  43. package/dist/core/compaction/utils.js.map +1 -1
  44. package/dist/core/defaults.d.ts +1 -1
  45. package/dist/core/defaults.d.ts.map +1 -1
  46. package/dist/core/defaults.js.map +1 -1
  47. package/dist/core/export-html/index.d.ts +3 -3
  48. package/dist/core/export-html/index.d.ts.map +1 -1
  49. package/dist/core/export-html/index.js +2 -2
  50. package/dist/core/export-html/index.js.map +1 -1
  51. package/dist/core/export-html/tool-renderer.d.ts +2 -2
  52. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  53. package/dist/core/export-html/tool-renderer.js +41 -16
  54. package/dist/core/export-html/tool-renderer.js.map +1 -1
  55. package/dist/core/extensions/index.d.ts +3 -2
  56. package/dist/core/extensions/index.d.ts.map +1 -1
  57. package/dist/core/extensions/index.js.map +1 -1
  58. package/dist/core/extensions/loader.d.ts.map +1 -1
  59. package/dist/core/extensions/loader.js +27 -17
  60. package/dist/core/extensions/loader.js.map +1 -1
  61. package/dist/core/extensions/runner.d.ts +7 -10
  62. package/dist/core/extensions/runner.d.ts.map +1 -1
  63. package/dist/core/extensions/runner.js +27 -38
  64. package/dist/core/extensions/runner.js.map +1 -1
  65. package/dist/core/extensions/types.d.ts +49 -14
  66. package/dist/core/extensions/types.d.ts.map +1 -1
  67. package/dist/core/extensions/types.js.map +1 -1
  68. package/dist/core/extensions/wrapper.d.ts +1 -1
  69. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  70. package/dist/core/extensions/wrapper.js +2 -8
  71. package/dist/core/extensions/wrapper.js.map +1 -1
  72. package/dist/core/index.d.ts +2 -1
  73. package/dist/core/index.d.ts.map +1 -1
  74. package/dist/core/index.js +1 -0
  75. package/dist/core/index.js.map +1 -1
  76. package/dist/core/keybindings.d.ts +2 -2
  77. package/dist/core/keybindings.d.ts.map +1 -1
  78. package/dist/core/keybindings.js +1 -1
  79. package/dist/core/keybindings.js.map +1 -1
  80. package/dist/core/messages.d.ts +3 -3
  81. package/dist/core/messages.d.ts.map +1 -1
  82. package/dist/core/messages.js.map +1 -1
  83. package/dist/core/model-registry.d.ts +1 -1
  84. package/dist/core/model-registry.d.ts.map +1 -1
  85. package/dist/core/model-registry.js +2 -2
  86. package/dist/core/model-registry.js.map +1 -1
  87. package/dist/core/model-resolver.d.ts +2 -2
  88. package/dist/core/model-resolver.d.ts.map +1 -1
  89. package/dist/core/model-resolver.js +1 -1
  90. package/dist/core/model-resolver.js.map +1 -1
  91. package/dist/core/output-guard.d.ts +6 -0
  92. package/dist/core/output-guard.d.ts.map +1 -0
  93. package/dist/core/output-guard.js +59 -0
  94. package/dist/core/output-guard.js.map +1 -0
  95. package/dist/core/package-manager.d.ts +3 -0
  96. package/dist/core/package-manager.d.ts.map +1 -1
  97. package/dist/core/package-manager.js +69 -9
  98. package/dist/core/package-manager.js.map +1 -1
  99. package/dist/core/prompt-templates.d.ts +2 -1
  100. package/dist/core/prompt-templates.d.ts.map +1 -1
  101. package/dist/core/prompt-templates.js +30 -32
  102. package/dist/core/prompt-templates.js.map +1 -1
  103. package/dist/core/resource-loader.d.ts +6 -5
  104. package/dist/core/resource-loader.d.ts.map +1 -1
  105. package/dist/core/resource-loader.js +136 -108
  106. package/dist/core/resource-loader.js.map +1 -1
  107. package/dist/core/sdk.d.ts +4 -4
  108. package/dist/core/sdk.d.ts.map +1 -1
  109. package/dist/core/sdk.js +2 -2
  110. package/dist/core/sdk.js.map +1 -1
  111. package/dist/core/session-manager.d.ts +2 -2
  112. package/dist/core/session-manager.d.ts.map +1 -1
  113. package/dist/core/session-manager.js.map +1 -1
  114. package/dist/core/settings-manager.d.ts +1 -1
  115. package/dist/core/settings-manager.d.ts.map +1 -1
  116. package/dist/core/settings-manager.js.map +1 -1
  117. package/dist/core/skills.d.ts +2 -1
  118. package/dist/core/skills.d.ts.map +1 -1
  119. package/dist/core/skills.js +25 -1
  120. package/dist/core/skills.js.map +1 -1
  121. package/dist/core/slash-commands.d.ts +2 -3
  122. package/dist/core/slash-commands.d.ts.map +1 -1
  123. package/dist/core/slash-commands.js.map +1 -1
  124. package/dist/core/source-info.d.ts +18 -0
  125. package/dist/core/source-info.d.ts.map +1 -0
  126. package/dist/core/source-info.js +19 -0
  127. package/dist/core/source-info.js.map +1 -0
  128. package/dist/core/system-prompt.d.ts.map +1 -1
  129. package/dist/core/system-prompt.js +3 -38
  130. package/dist/core/system-prompt.js.map +1 -1
  131. package/dist/core/tools/bash.d.ts +20 -10
  132. package/dist/core/tools/bash.d.ts.map +1 -1
  133. package/dist/core/tools/bash.js +151 -59
  134. package/dist/core/tools/bash.js.map +1 -1
  135. package/dist/core/tools/edit.d.ts +15 -3
  136. package/dist/core/tools/edit.d.ts.map +1 -1
  137. package/dist/core/tools/edit.js +92 -21
  138. package/dist/core/tools/edit.js.map +1 -1
  139. package/dist/core/tools/find.d.ts +12 -5
  140. package/dist/core/tools/find.d.ts.map +1 -1
  141. package/dist/core/tools/find.js +76 -27
  142. package/dist/core/tools/find.js.map +1 -1
  143. package/dist/core/tools/grep.d.ts +16 -5
  144. package/dist/core/tools/grep.d.ts.map +1 -1
  145. package/dist/core/tools/grep.js +83 -29
  146. package/dist/core/tools/grep.js.map +1 -1
  147. package/dist/core/tools/index.d.ts +58 -20
  148. package/dist/core/tools/index.d.ts.map +1 -1
  149. package/dist/core/tools/index.js +50 -26
  150. package/dist/core/tools/index.js.map +1 -1
  151. package/dist/core/tools/ls.d.ts +10 -4
  152. package/dist/core/tools/ls.d.ts.map +1 -1
  153. package/dist/core/tools/ls.js +67 -13
  154. package/dist/core/tools/ls.js.map +1 -1
  155. package/dist/core/tools/read.d.ts +11 -4
  156. package/dist/core/tools/read.d.ts.map +1 -1
  157. package/dist/core/tools/read.js +110 -51
  158. package/dist/core/tools/read.js.map +1 -1
  159. package/dist/core/tools/render-utils.d.ts +21 -0
  160. package/dist/core/tools/render-utils.d.ts.map +1 -0
  161. package/dist/core/tools/render-utils.js +49 -0
  162. package/dist/core/tools/render-utils.js.map +1 -0
  163. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
  164. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  165. package/dist/core/tools/tool-definition-wrapper.js +30 -0
  166. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  167. package/dist/core/tools/write.d.ts +10 -4
  168. package/dist/core/tools/write.d.ts.map +1 -1
  169. package/dist/core/tools/write.js +162 -27
  170. package/dist/core/tools/write.js.map +1 -1
  171. package/dist/index.d.ts +3 -2
  172. package/dist/index.d.ts.map +1 -1
  173. package/dist/index.js +2 -1
  174. package/dist/index.js.map +1 -1
  175. package/dist/main.d.ts.map +1 -1
  176. package/dist/main.js +30 -10
  177. package/dist/main.js.map +1 -1
  178. package/dist/modes/interactive/components/armin.d.ts +1 -1
  179. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  180. package/dist/modes/interactive/components/armin.js.map +1 -1
  181. package/dist/modes/interactive/components/assistant-message.d.ts +2 -2
  182. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  183. package/dist/modes/interactive/components/assistant-message.js +1 -1
  184. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  185. package/dist/modes/interactive/components/bash-execution.d.ts +1 -1
  186. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  187. package/dist/modes/interactive/components/bash-execution.js +1 -1
  188. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  189. package/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
  190. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  191. package/dist/modes/interactive/components/bordered-loader.js +1 -1
  192. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  193. package/dist/modes/interactive/components/branch-summary-message.d.ts +1 -1
  194. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  195. package/dist/modes/interactive/components/branch-summary-message.js +1 -1
  196. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  197. package/dist/modes/interactive/components/compaction-summary-message.d.ts +1 -1
  198. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  199. package/dist/modes/interactive/components/compaction-summary-message.js +1 -1
  200. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  201. package/dist/modes/interactive/components/config-selector.d.ts +1 -1
  202. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  203. package/dist/modes/interactive/components/config-selector.js +1 -1
  204. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  205. package/dist/modes/interactive/components/countdown-timer.d.ts +1 -1
  206. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  207. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  208. package/dist/modes/interactive/components/custom-editor.d.ts +1 -1
  209. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  210. package/dist/modes/interactive/components/custom-editor.js +1 -1
  211. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  212. package/dist/modes/interactive/components/custom-message.d.ts +1 -1
  213. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  214. package/dist/modes/interactive/components/custom-message.js +1 -1
  215. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  216. package/dist/modes/interactive/components/daxnuts.d.ts +1 -1
  217. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  218. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  219. package/dist/modes/interactive/components/dynamic-border.d.ts +1 -1
  220. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  221. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  222. package/dist/modes/interactive/components/extension-editor.d.ts +1 -1
  223. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  224. package/dist/modes/interactive/components/extension-editor.js +1 -1
  225. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  226. package/dist/modes/interactive/components/extension-input.d.ts +1 -1
  227. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  228. package/dist/modes/interactive/components/extension-input.js +1 -1
  229. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  230. package/dist/modes/interactive/components/extension-selector.d.ts +1 -1
  231. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  232. package/dist/modes/interactive/components/extension-selector.js +1 -1
  233. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  234. package/dist/modes/interactive/components/footer.d.ts +1 -1
  235. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  236. package/dist/modes/interactive/components/footer.js +1 -1
  237. package/dist/modes/interactive/components/footer.js.map +1 -1
  238. package/dist/modes/interactive/components/keybinding-hints.d.ts +1 -1
  239. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  240. package/dist/modes/interactive/components/keybinding-hints.js +1 -1
  241. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  242. package/dist/modes/interactive/components/login-dialog.d.ts +1 -1
  243. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  244. package/dist/modes/interactive/components/login-dialog.js +2 -2
  245. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  246. package/dist/modes/interactive/components/model-selector.d.ts +2 -2
  247. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  248. package/dist/modes/interactive/components/model-selector.js +2 -2
  249. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  250. package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
  251. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  252. package/dist/modes/interactive/components/oauth-selector.js +2 -2
  253. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  254. package/dist/modes/interactive/components/scoped-models-selector.d.ts +2 -2
  255. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  256. package/dist/modes/interactive/components/scoped-models-selector.js +1 -1
  257. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  258. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  259. package/dist/modes/interactive/components/session-selector-search.js +1 -1
  260. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  261. package/dist/modes/interactive/components/session-selector.d.ts +1 -1
  262. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  263. package/dist/modes/interactive/components/session-selector.js +1 -1
  264. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  265. package/dist/modes/interactive/components/settings-selector.d.ts +3 -3
  266. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  267. package/dist/modes/interactive/components/settings-selector.js +1 -1
  268. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  269. package/dist/modes/interactive/components/show-images-selector.d.ts +1 -1
  270. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  271. package/dist/modes/interactive/components/show-images-selector.js +1 -1
  272. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  273. package/dist/modes/interactive/components/skill-invocation-message.d.ts +1 -1
  274. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  275. package/dist/modes/interactive/components/skill-invocation-message.js +1 -1
  276. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  277. package/dist/modes/interactive/components/theme-selector.d.ts +1 -1
  278. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  279. package/dist/modes/interactive/components/theme-selector.js +1 -1
  280. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  281. package/dist/modes/interactive/components/thinking-selector.d.ts +2 -2
  282. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  283. package/dist/modes/interactive/components/thinking-selector.js +1 -1
  284. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  285. package/dist/modes/interactive/components/tool-execution.d.ts +16 -41
  286. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  287. package/dist/modes/interactive/components/tool-execution.js +126 -679
  288. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  289. package/dist/modes/interactive/components/tree-selector.d.ts +1 -1
  290. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  291. package/dist/modes/interactive/components/tree-selector.js +1 -1
  292. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  293. package/dist/modes/interactive/components/user-message-selector.d.ts +1 -1
  294. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  295. package/dist/modes/interactive/components/user-message-selector.js +1 -1
  296. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  297. package/dist/modes/interactive/components/user-message.d.ts +1 -1
  298. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  299. package/dist/modes/interactive/components/user-message.js +1 -1
  300. package/dist/modes/interactive/components/user-message.js.map +1 -1
  301. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  302. package/dist/modes/interactive/components/visual-truncate.js +1 -1
  303. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  304. package/dist/modes/interactive/interactive-mode.d.ts +5 -12
  305. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  306. package/dist/modes/interactive/interactive-mode.js +147 -95
  307. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  308. package/dist/modes/interactive/theme/theme.d.ts +5 -2
  309. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  310. package/dist/modes/interactive/theme/theme.js +15 -1
  311. package/dist/modes/interactive/theme/theme.js.map +1 -1
  312. package/dist/modes/print-mode.d.ts +1 -1
  313. package/dist/modes/print-mode.d.ts.map +1 -1
  314. package/dist/modes/print-mode.js +5 -11
  315. package/dist/modes/print-mode.js.map +1 -1
  316. package/dist/modes/rpc/rpc-client.d.ts +2 -2
  317. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  318. package/dist/modes/rpc/rpc-client.js.map +1 -1
  319. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  320. package/dist/modes/rpc/rpc-mode.js +27 -20
  321. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  322. package/dist/modes/rpc/rpc-types.d.ts +5 -6
  323. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  324. package/dist/modes/rpc/rpc-types.js.map +1 -1
  325. package/dist/utils/image-resize.d.ts +6 -6
  326. package/dist/utils/image-resize.d.ts.map +1 -1
  327. package/dist/utils/image-resize.js +45 -94
  328. package/dist/utils/image-resize.js.map +1 -1
  329. package/docs/extensions.md +72 -32
  330. package/docs/tui.md +2 -2
  331. package/examples/extensions/built-in-tool-renderer.ts +8 -8
  332. package/examples/extensions/commands.ts +3 -3
  333. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  334. package/examples/extensions/custom-provider-anthropic/package.json +17 -17
  335. package/examples/extensions/custom-provider-gitlab-duo/package.json +14 -14
  336. package/examples/extensions/custom-provider-qwen-cli/package.json +14 -14
  337. package/examples/extensions/minimal-mode.ts +14 -14
  338. package/examples/extensions/question.ts +2 -2
  339. package/examples/extensions/questionnaire.ts +2 -2
  340. package/examples/extensions/subagent/index.ts +23 -3
  341. package/examples/extensions/todo.ts +2 -2
  342. package/examples/extensions/truncated-tool.ts +2 -2
  343. package/examples/extensions/with-deps/package-lock.json +2 -2
  344. package/examples/extensions/with-deps/package.json +20 -20
  345. package/examples/sdk/04-skills.ts +8 -2
  346. package/examples/sdk/08-prompt-templates.ts +2 -1
  347. package/examples/sdk/12-full-control.ts +0 -1
  348. package/package.json +4 -4
@@ -14,7 +14,7 @@
14
14
  */
15
15
  import { copyFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
16
16
  import { basename, dirname, join, resolve } from "node:path";
17
- import { isContextOverflow, modelsAreEqual, resetApiProviders, supportsXhigh } from "@mariozechner/pi-ai";
17
+ import { isContextOverflow, modelsAreEqual, resetApiProviders, supportsXhigh } from "@hyperspaceng/neural-ai";
18
18
  import { getDocsPath } from "../config.js";
19
19
  import { theme } from "../modes/interactive/theme/theme.js";
20
20
  import { stripFrontmatter } from "../utils/frontmatter.js";
@@ -27,9 +27,10 @@ import { createToolHtmlRenderer } from "./export-html/tool-renderer.js";
27
27
  import { ExtensionRunner, wrapRegisteredTools, } from "./extensions/index.js";
28
28
  import { expandPromptTemplate } from "./prompt-templates.js";
29
29
  import { CURRENT_SESSION_VERSION, getLatestCompactionEntry } from "./session-manager.js";
30
- import { BUILTIN_SLASH_COMMANDS } from "./slash-commands.js";
30
+ import { createSyntheticSourceInfo } from "./source-info.js";
31
31
  import { buildSystemPrompt } from "./system-prompt.js";
32
- import { createAllTools } from "./tools/index.js";
32
+ import { createAllToolDefinitions } from "./tools/index.js";
33
+ import { createToolDefinitionFromAgentTool, wrapToolDefinition } from "./tools/tool-definition-wrapper.js";
33
34
  /**
34
35
  * Parse a skill block from message text.
35
36
  * Returns null if the text doesn't contain a skill block.
@@ -89,7 +90,7 @@ export class AgentSession {
89
90
  _turnIndex = 0;
90
91
  _resourceLoader;
91
92
  _customTools;
92
- _baseToolRegistry = new Map();
93
+ _baseToolDefinitions = new Map();
93
94
  _cwd;
94
95
  _extensionRunnerRef;
95
96
  _initialActiveToolNames;
@@ -103,6 +104,7 @@ export class AgentSession {
103
104
  _modelRegistry;
104
105
  // Tool registry for extension getTools/setTools
105
106
  _toolRegistry = new Map();
107
+ _toolDefinitions = new Map();
106
108
  _toolPromptSnippets = new Map();
107
109
  _toolPromptGuidelines = new Map();
108
110
  // Base system prompt (without extension appends) - used to apply fresh appends each turn
@@ -493,15 +495,19 @@ export class AgentSession {
493
495
  return this.agent.state.tools.map((t) => t.name);
494
496
  }
495
497
  /**
496
- * Get all configured tools with name, description, and parameter schema.
498
+ * Get all configured tools with name, description, parameter schema, and source metadata.
497
499
  */
498
500
  getAllTools() {
499
- return Array.from(this._toolRegistry.values()).map((t) => ({
500
- name: t.name,
501
- description: t.description,
502
- parameters: t.parameters,
501
+ return Array.from(this._toolDefinitions.values()).map(({ definition, sourceInfo }) => ({
502
+ name: definition.name,
503
+ description: definition.description,
504
+ parameters: definition.parameters,
505
+ sourceInfo,
503
506
  }));
504
507
  }
508
+ getToolDefinition(name) {
509
+ return this._toolDefinitions.get(name)?.definition;
510
+ }
505
511
  /**
506
512
  * Set active tools by name.
507
513
  * Only tools in the registry can be enabled. Unknown tool names are ignored.
@@ -1656,36 +1662,24 @@ export class AgentSession {
1656
1662
  this.agent.setModel(refreshedModel);
1657
1663
  }
1658
1664
  _bindExtensionCore(runner) {
1659
- const normalizeLocation = (source) => {
1660
- if (source === "user" || source === "project" || source === "path") {
1661
- return source;
1662
- }
1663
- return undefined;
1664
- };
1665
- const reservedBuiltins = new Set(BUILTIN_SLASH_COMMANDS.map((command) => command.name));
1666
1665
  const getCommands = () => {
1667
- const extensionCommands = runner
1668
- .getRegisteredCommandsWithPaths()
1669
- .filter(({ command }) => !reservedBuiltins.has(command.name))
1670
- .map(({ command, extensionPath }) => ({
1671
- name: command.name,
1666
+ const extensionCommands = runner.getRegisteredCommands().map((command) => ({
1667
+ name: command.invocationName,
1672
1668
  description: command.description,
1673
1669
  source: "extension",
1674
- path: extensionPath,
1670
+ sourceInfo: command.sourceInfo,
1675
1671
  }));
1676
1672
  const templates = this.promptTemplates.map((template) => ({
1677
1673
  name: template.name,
1678
1674
  description: template.description,
1679
1675
  source: "prompt",
1680
- location: normalizeLocation(template.source),
1681
- path: template.filePath,
1676
+ sourceInfo: template.sourceInfo,
1682
1677
  }));
1683
1678
  const skills = this._resourceLoader.getSkills().skills.map((skill) => ({
1684
1679
  name: `skill:${skill.name}`,
1685
1680
  description: skill.description,
1686
1681
  source: "skill",
1687
- location: normalizeLocation(skill.source),
1688
- path: skill.filePath,
1682
+ sourceInfo: skill.sourceInfo,
1689
1683
  }));
1690
1684
  return [...extensionCommands, ...templates, ...skills];
1691
1685
  };
@@ -1773,24 +1767,44 @@ export class AgentSession {
1773
1767
  const registeredTools = this._extensionRunner?.getAllRegisteredTools() ?? [];
1774
1768
  const allCustomTools = [
1775
1769
  ...registeredTools,
1776
- ...this._customTools.map((def) => ({ definition: def, extensionPath: "<sdk>" })),
1770
+ ...this._customTools.map((definition) => ({
1771
+ definition,
1772
+ sourceInfo: createSyntheticSourceInfo(`<sdk:${definition.name}>`, { source: "sdk" }),
1773
+ })),
1777
1774
  ];
1778
- this._toolPromptSnippets = new Map(allCustomTools
1779
- .map((registeredTool) => {
1780
- const snippet = this._normalizePromptSnippet(registeredTool.definition.promptSnippet);
1781
- return snippet ? [registeredTool.definition.name, snippet] : undefined;
1775
+ const definitionRegistry = new Map(Array.from(this._baseToolDefinitions.entries()).map(([name, definition]) => [
1776
+ name,
1777
+ {
1778
+ definition,
1779
+ sourceInfo: createSyntheticSourceInfo(`<builtin:${name}>`, { source: "builtin" }),
1780
+ },
1781
+ ]));
1782
+ for (const tool of allCustomTools) {
1783
+ definitionRegistry.set(tool.definition.name, {
1784
+ definition: tool.definition,
1785
+ sourceInfo: tool.sourceInfo,
1786
+ });
1787
+ }
1788
+ this._toolDefinitions = definitionRegistry;
1789
+ this._toolPromptSnippets = new Map(Array.from(definitionRegistry.values())
1790
+ .map(({ definition }) => {
1791
+ const snippet = this._normalizePromptSnippet(definition.promptSnippet);
1792
+ return snippet ? [definition.name, snippet] : undefined;
1782
1793
  })
1783
1794
  .filter((entry) => entry !== undefined));
1784
- this._toolPromptGuidelines = new Map(allCustomTools
1785
- .map((registeredTool) => {
1786
- const guidelines = this._normalizePromptGuidelines(registeredTool.definition.promptGuidelines);
1787
- return guidelines.length > 0 ? [registeredTool.definition.name, guidelines] : undefined;
1795
+ this._toolPromptGuidelines = new Map(Array.from(definitionRegistry.values())
1796
+ .map(({ definition }) => {
1797
+ const guidelines = this._normalizePromptGuidelines(definition.promptGuidelines);
1798
+ return guidelines.length > 0 ? [definition.name, guidelines] : undefined;
1788
1799
  })
1789
1800
  .filter((entry) => entry !== undefined));
1790
1801
  const wrappedExtensionTools = this._extensionRunner
1791
1802
  ? wrapRegisteredTools(allCustomTools, this._extensionRunner)
1792
1803
  : [];
1793
- const toolRegistry = new Map(this._baseToolRegistry);
1804
+ const toolRegistry = new Map(Array.from(this._baseToolDefinitions.values()).map((definition) => [
1805
+ definition.name,
1806
+ wrapToolDefinition(definition),
1807
+ ]));
1794
1808
  for (const tool of wrappedExtensionTools) {
1795
1809
  toolRegistry.set(tool.name, tool);
1796
1810
  }
@@ -1815,13 +1829,16 @@ export class AgentSession {
1815
1829
  _buildRuntime(options) {
1816
1830
  const autoResizeImages = this.settingsManager.getImageAutoResize();
1817
1831
  const shellCommandPrefix = this.settingsManager.getShellCommandPrefix();
1818
- const baseTools = this._baseToolsOverride
1819
- ? this._baseToolsOverride
1820
- : createAllTools(this._cwd, {
1832
+ const baseToolDefinitions = this._baseToolsOverride
1833
+ ? Object.fromEntries(Object.entries(this._baseToolsOverride).map(([name, tool]) => [
1834
+ name,
1835
+ createToolDefinitionFromAgentTool(tool),
1836
+ ]))
1837
+ : createAllToolDefinitions(this._cwd, {
1821
1838
  read: { autoResizeImages },
1822
1839
  bash: { commandPrefix: shellCommandPrefix },
1823
1840
  });
1824
- this._baseToolRegistry = new Map(Object.entries(baseTools).map(([name, tool]) => [name, tool]));
1841
+ this._baseToolDefinitions = new Map(Object.entries(baseToolDefinitions).map(([name, tool]) => [name, tool]));
1825
1842
  const extensionsResult = this._resourceLoader.getExtensions();
1826
1843
  if (options.flagValues) {
1827
1844
  for (const [name, value] of options.flagValues) {
@@ -2500,13 +2517,10 @@ export class AgentSession {
2500
2517
  async exportToHtml(outputPath) {
2501
2518
  const themeName = this.settingsManager.getTheme();
2502
2519
  // Create tool renderer if we have an extension runner (for custom tool HTML rendering)
2503
- let toolRenderer;
2504
- if (this._extensionRunner) {
2505
- toolRenderer = createToolHtmlRenderer({
2506
- getToolDefinition: (name) => this._extensionRunner.getToolDefinition(name),
2507
- theme,
2508
- });
2509
- }
2520
+ const toolRenderer = createToolHtmlRenderer({
2521
+ getToolDefinition: (name) => this.getToolDefinition(name),
2522
+ theme,
2523
+ });
2510
2524
  return await exportSessionToHtml(this.sessionManager, this.state, {
2511
2525
  outputPath,
2512
2526
  themeName,