@namzu/cli 0.0.2 → 0.1.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 (365) hide show
  1. package/LICENSE.md +110 -0
  2. package/dist/bin.js +4 -32
  3. package/dist/bin.js.map +1 -1
  4. package/dist/cli.d.ts +14 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +124 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/cli.test.d.ts +2 -0
  9. package/dist/cli.test.d.ts.map +1 -0
  10. package/dist/cli.test.js +94 -0
  11. package/dist/cli.test.js.map +1 -0
  12. package/dist/commands/doctor.d.ts +6 -0
  13. package/dist/commands/doctor.d.ts.map +1 -1
  14. package/dist/commands/doctor.js +10 -0
  15. package/dist/commands/doctor.js.map +1 -1
  16. package/dist/commands/providers.d.ts +17 -0
  17. package/dist/commands/providers.d.ts.map +1 -0
  18. package/dist/commands/providers.js +274 -0
  19. package/dist/commands/providers.js.map +1 -0
  20. package/dist/commands/registry.d.ts +11 -0
  21. package/dist/commands/registry.d.ts.map +1 -0
  22. package/dist/commands/registry.js +28 -0
  23. package/dist/commands/registry.js.map +1 -0
  24. package/dist/commands/run.d.ts +14 -0
  25. package/dist/commands/run.d.ts.map +1 -0
  26. package/dist/commands/run.js +73 -0
  27. package/dist/commands/run.js.map +1 -0
  28. package/dist/commands/stubs.d.ts +12 -0
  29. package/dist/commands/stubs.d.ts.map +1 -0
  30. package/dist/commands/stubs.js +32 -0
  31. package/dist/commands/stubs.js.map +1 -0
  32. package/dist/commands/tools.d.ts +16 -0
  33. package/dist/commands/tools.d.ts.map +1 -0
  34. package/dist/commands/tools.js +161 -0
  35. package/dist/commands/tools.js.map +1 -0
  36. package/dist/commands/types.d.ts +25 -0
  37. package/dist/commands/types.d.ts.map +1 -0
  38. package/dist/commands/types.js +2 -0
  39. package/dist/commands/types.js.map +1 -0
  40. package/dist/config/load.d.ts +25 -0
  41. package/dist/config/load.d.ts.map +1 -0
  42. package/dist/config/load.js +92 -0
  43. package/dist/config/load.js.map +1 -0
  44. package/dist/config/load.test.d.ts +2 -0
  45. package/dist/config/load.test.d.ts.map +1 -0
  46. package/dist/config/load.test.js +57 -0
  47. package/dist/config/load.test.js.map +1 -0
  48. package/dist/config/schema.d.ts +29 -0
  49. package/dist/config/schema.d.ts.map +1 -0
  50. package/dist/config/schema.js +13 -0
  51. package/dist/config/schema.js.map +1 -0
  52. package/dist/doctor/registry.d.ts.map +1 -1
  53. package/dist/doctor/registry.js +3 -1
  54. package/dist/doctor/registry.js.map +1 -1
  55. package/dist/doctor/registry.test.js +4 -1
  56. package/dist/doctor/registry.test.js.map +1 -1
  57. package/dist/index.d.ts +6 -0
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +7 -0
  60. package/dist/index.js.map +1 -1
  61. package/dist/integrations/clawtool/agents.d.ts +31 -0
  62. package/dist/integrations/clawtool/agents.d.ts.map +1 -0
  63. package/dist/integrations/clawtool/agents.js +30 -0
  64. package/dist/integrations/clawtool/agents.js.map +1 -0
  65. package/dist/integrations/clawtool/agents.test.d.ts +2 -0
  66. package/dist/integrations/clawtool/agents.test.d.ts.map +1 -0
  67. package/dist/integrations/clawtool/agents.test.js +79 -0
  68. package/dist/integrations/clawtool/agents.test.js.map +1 -0
  69. package/dist/integrations/clawtool/auth.d.ts +26 -0
  70. package/dist/integrations/clawtool/auth.d.ts.map +1 -0
  71. package/dist/integrations/clawtool/auth.js +56 -0
  72. package/dist/integrations/clawtool/auth.js.map +1 -0
  73. package/dist/integrations/clawtool/auth.test.d.ts +2 -0
  74. package/dist/integrations/clawtool/auth.test.d.ts.map +1 -0
  75. package/dist/integrations/clawtool/auth.test.js +40 -0
  76. package/dist/integrations/clawtool/auth.test.js.map +1 -0
  77. package/dist/integrations/clawtool/binary.d.ts +25 -0
  78. package/dist/integrations/clawtool/binary.d.ts.map +1 -0
  79. package/dist/integrations/clawtool/binary.js +50 -0
  80. package/dist/integrations/clawtool/binary.js.map +1 -0
  81. package/dist/integrations/clawtool/binary.test.d.ts +2 -0
  82. package/dist/integrations/clawtool/binary.test.d.ts.map +1 -0
  83. package/dist/integrations/clawtool/binary.test.js +42 -0
  84. package/dist/integrations/clawtool/binary.test.js.map +1 -0
  85. package/dist/integrations/clawtool/daemon.d.ts +37 -0
  86. package/dist/integrations/clawtool/daemon.d.ts.map +1 -0
  87. package/dist/integrations/clawtool/daemon.js +109 -0
  88. package/dist/integrations/clawtool/daemon.js.map +1 -0
  89. package/dist/integrations/clawtool/daemon.test.d.ts +11 -0
  90. package/dist/integrations/clawtool/daemon.test.d.ts.map +1 -0
  91. package/dist/integrations/clawtool/daemon.test.js +118 -0
  92. package/dist/integrations/clawtool/daemon.test.js.map +1 -0
  93. package/dist/integrations/clawtool/dispatch.d.ts +33 -0
  94. package/dist/integrations/clawtool/dispatch.d.ts.map +1 -0
  95. package/dist/integrations/clawtool/dispatch.js +155 -0
  96. package/dist/integrations/clawtool/dispatch.js.map +1 -0
  97. package/dist/integrations/clawtool/dispatch.test.d.ts +2 -0
  98. package/dist/integrations/clawtool/dispatch.test.d.ts.map +1 -0
  99. package/dist/integrations/clawtool/dispatch.test.js +138 -0
  100. package/dist/integrations/clawtool/dispatch.test.js.map +1 -0
  101. package/dist/integrations/clawtool/index.d.ts +11 -0
  102. package/dist/integrations/clawtool/index.d.ts.map +1 -0
  103. package/dist/integrations/clawtool/index.js +10 -0
  104. package/dist/integrations/clawtool/index.js.map +1 -0
  105. package/dist/integrations/clawtool/mcp.d.ts +51 -0
  106. package/dist/integrations/clawtool/mcp.d.ts.map +1 -0
  107. package/dist/integrations/clawtool/mcp.js +156 -0
  108. package/dist/integrations/clawtool/mcp.js.map +1 -0
  109. package/dist/integrations/clawtool/mcp.test.d.ts +2 -0
  110. package/dist/integrations/clawtool/mcp.test.d.ts.map +1 -0
  111. package/dist/integrations/clawtool/mcp.test.js +126 -0
  112. package/dist/integrations/clawtool/mcp.test.js.map +1 -0
  113. package/dist/integrations/clawtool/paths.d.ts +8 -0
  114. package/dist/integrations/clawtool/paths.d.ts.map +1 -0
  115. package/dist/integrations/clawtool/paths.js +19 -0
  116. package/dist/integrations/clawtool/paths.js.map +1 -0
  117. package/dist/integrations/clawtool/peers.d.ts +67 -0
  118. package/dist/integrations/clawtool/peers.d.ts.map +1 -0
  119. package/dist/integrations/clawtool/peers.js +150 -0
  120. package/dist/integrations/clawtool/peers.js.map +1 -0
  121. package/dist/integrations/clawtool/plugin.d.ts +42 -0
  122. package/dist/integrations/clawtool/plugin.d.ts.map +1 -0
  123. package/dist/integrations/clawtool/plugin.js +38 -0
  124. package/dist/integrations/clawtool/plugin.js.map +1 -0
  125. package/dist/integrations/clawtool/state.d.ts +11 -0
  126. package/dist/integrations/clawtool/state.d.ts.map +1 -0
  127. package/dist/integrations/clawtool/state.js +41 -0
  128. package/dist/integrations/clawtool/state.js.map +1 -0
  129. package/dist/integrations/clawtool/state.test.d.ts +2 -0
  130. package/dist/integrations/clawtool/state.test.d.ts.map +1 -0
  131. package/dist/integrations/clawtool/state.test.js +38 -0
  132. package/dist/integrations/clawtool/state.test.js.map +1 -0
  133. package/dist/integrations/clawtool/tooling.d.ts +50 -0
  134. package/dist/integrations/clawtool/tooling.d.ts.map +1 -0
  135. package/dist/integrations/clawtool/tooling.js +89 -0
  136. package/dist/integrations/clawtool/tooling.js.map +1 -0
  137. package/dist/integrations/clawtool/tooling.test.d.ts +2 -0
  138. package/dist/integrations/clawtool/tooling.test.d.ts.map +1 -0
  139. package/dist/integrations/clawtool/tooling.test.js +58 -0
  140. package/dist/integrations/clawtool/tooling.test.js.map +1 -0
  141. package/dist/integrations/clawtool/types.d.ts +41 -0
  142. package/dist/integrations/clawtool/types.d.ts.map +1 -0
  143. package/dist/integrations/clawtool/types.js +9 -0
  144. package/dist/integrations/clawtool/types.js.map +1 -0
  145. package/dist/integrations/clipboard/image.d.ts +18 -0
  146. package/dist/integrations/clipboard/image.d.ts.map +1 -0
  147. package/dist/integrations/clipboard/image.js +88 -0
  148. package/dist/integrations/clipboard/image.js.map +1 -0
  149. package/dist/integrations/providers/discover.d.ts +68 -0
  150. package/dist/integrations/providers/discover.d.ts.map +1 -0
  151. package/dist/integrations/providers/discover.js +108 -0
  152. package/dist/integrations/providers/discover.js.map +1 -0
  153. package/dist/integrations/providers/discover.test.d.ts +2 -0
  154. package/dist/integrations/providers/discover.test.d.ts.map +1 -0
  155. package/dist/integrations/providers/discover.test.js +120 -0
  156. package/dist/integrations/providers/discover.test.js.map +1 -0
  157. package/dist/integrations/providers/index.d.ts +10 -0
  158. package/dist/integrations/providers/index.d.ts.map +1 -0
  159. package/dist/integrations/providers/index.js +12 -0
  160. package/dist/integrations/providers/index.js.map +1 -0
  161. package/dist/integrations/providers/keychain.d.ts +44 -0
  162. package/dist/integrations/providers/keychain.d.ts.map +1 -0
  163. package/dist/integrations/providers/keychain.js +154 -0
  164. package/dist/integrations/providers/keychain.js.map +1 -0
  165. package/dist/integrations/providers/keychain.test.d.ts +2 -0
  166. package/dist/integrations/providers/keychain.test.d.ts.map +1 -0
  167. package/dist/integrations/providers/keychain.test.js +21 -0
  168. package/dist/integrations/providers/keychain.test.js.map +1 -0
  169. package/dist/integrations/providers/mask.d.ts +7 -0
  170. package/dist/integrations/providers/mask.d.ts.map +1 -0
  171. package/dist/integrations/providers/mask.js +14 -0
  172. package/dist/integrations/providers/mask.js.map +1 -0
  173. package/dist/integrations/providers/mask.test.d.ts +2 -0
  174. package/dist/integrations/providers/mask.test.d.ts.map +1 -0
  175. package/dist/integrations/providers/mask.test.js +20 -0
  176. package/dist/integrations/providers/mask.test.js.map +1 -0
  177. package/dist/integrations/providers/oauth.d.ts +28 -0
  178. package/dist/integrations/providers/oauth.d.ts.map +1 -0
  179. package/dist/integrations/providers/oauth.js +65 -0
  180. package/dist/integrations/providers/oauth.js.map +1 -0
  181. package/dist/integrations/providers/oauth.test.d.ts +2 -0
  182. package/dist/integrations/providers/oauth.test.d.ts.map +1 -0
  183. package/dist/integrations/providers/oauth.test.js +86 -0
  184. package/dist/integrations/providers/oauth.test.js.map +1 -0
  185. package/dist/integrations/providers/preferences.d.ts +43 -0
  186. package/dist/integrations/providers/preferences.d.ts.map +1 -0
  187. package/dist/integrations/providers/preferences.js +111 -0
  188. package/dist/integrations/providers/preferences.js.map +1 -0
  189. package/dist/integrations/providers/preferences.test.d.ts +2 -0
  190. package/dist/integrations/providers/preferences.test.d.ts.map +1 -0
  191. package/dist/integrations/providers/preferences.test.js +68 -0
  192. package/dist/integrations/providers/preferences.test.js.map +1 -0
  193. package/dist/integrations/providers/registry.d.ts +31 -0
  194. package/dist/integrations/providers/registry.d.ts.map +1 -0
  195. package/dist/integrations/providers/registry.js +79 -0
  196. package/dist/integrations/providers/registry.js.map +1 -0
  197. package/dist/integrations/providers/schema.d.ts +73 -0
  198. package/dist/integrations/providers/schema.d.ts.map +1 -0
  199. package/dist/integrations/providers/schema.js +70 -0
  200. package/dist/integrations/providers/schema.js.map +1 -0
  201. package/dist/integrations/providers/schema.test.d.ts +2 -0
  202. package/dist/integrations/providers/schema.test.d.ts.map +1 -0
  203. package/dist/integrations/providers/schema.test.js +43 -0
  204. package/dist/integrations/providers/schema.test.js.map +1 -0
  205. package/dist/integrations/providers/secrets.d.ts +37 -0
  206. package/dist/integrations/providers/secrets.d.ts.map +1 -0
  207. package/dist/integrations/providers/secrets.js +69 -0
  208. package/dist/integrations/providers/secrets.js.map +1 -0
  209. package/dist/integrations/providers/store.d.ts +32 -0
  210. package/dist/integrations/providers/store.d.ts.map +1 -0
  211. package/dist/integrations/providers/store.js +133 -0
  212. package/dist/integrations/providers/store.js.map +1 -0
  213. package/dist/integrations/providers/store.test.d.ts +2 -0
  214. package/dist/integrations/providers/store.test.d.ts.map +1 -0
  215. package/dist/integrations/providers/store.test.js +127 -0
  216. package/dist/integrations/providers/store.test.js.map +1 -0
  217. package/dist/integrations/sessions/store.d.ts +40 -0
  218. package/dist/integrations/sessions/store.d.ts.map +1 -0
  219. package/dist/integrations/sessions/store.js +90 -0
  220. package/dist/integrations/sessions/store.js.map +1 -0
  221. package/dist/integrations/subagents/runtime.d.ts +37 -0
  222. package/dist/integrations/subagents/runtime.d.ts.map +1 -0
  223. package/dist/integrations/subagents/runtime.js +183 -0
  224. package/dist/integrations/subagents/runtime.js.map +1 -0
  225. package/dist/integrations/trust/store.d.ts +16 -0
  226. package/dist/integrations/trust/store.d.ts.map +1 -0
  227. package/dist/integrations/trust/store.js +59 -0
  228. package/dist/integrations/trust/store.js.map +1 -0
  229. package/dist/integrations/trust/store.test.d.ts +2 -0
  230. package/dist/integrations/trust/store.test.d.ts.map +1 -0
  231. package/dist/integrations/trust/store.test.js +50 -0
  232. package/dist/integrations/trust/store.test.js.map +1 -0
  233. package/dist/integrations/updates.d.ts +27 -0
  234. package/dist/integrations/updates.d.ts.map +1 -0
  235. package/dist/integrations/updates.js +99 -0
  236. package/dist/integrations/updates.js.map +1 -0
  237. package/dist/memory/store.d.ts +29 -0
  238. package/dist/memory/store.d.ts.map +1 -0
  239. package/dist/memory/store.js +74 -0
  240. package/dist/memory/store.js.map +1 -0
  241. package/dist/memory/store.test.d.ts +2 -0
  242. package/dist/memory/store.test.d.ts.map +1 -0
  243. package/dist/memory/store.test.js +63 -0
  244. package/dist/memory/store.test.js.map +1 -0
  245. package/dist/output/formatter.d.ts +30 -0
  246. package/dist/output/formatter.d.ts.map +1 -0
  247. package/dist/output/formatter.js +16 -0
  248. package/dist/output/formatter.js.map +1 -0
  249. package/dist/output/formatter.test.d.ts +2 -0
  250. package/dist/output/formatter.test.d.ts.map +1 -0
  251. package/dist/output/formatter.test.js +88 -0
  252. package/dist/output/formatter.test.js.map +1 -0
  253. package/dist/output/index.d.ts +5 -0
  254. package/dist/output/index.d.ts.map +1 -0
  255. package/dist/output/index.js +22 -0
  256. package/dist/output/index.js.map +1 -0
  257. package/dist/output/json.d.ts +13 -0
  258. package/dist/output/json.d.ts.map +1 -0
  259. package/dist/output/json.js +51 -0
  260. package/dist/output/json.js.map +1 -0
  261. package/dist/output/text.d.ts +13 -0
  262. package/dist/output/text.d.ts.map +1 -0
  263. package/dist/output/text.js +36 -0
  264. package/dist/output/text.js.map +1 -0
  265. package/dist/output/yaml.d.ts +13 -0
  266. package/dist/output/yaml.d.ts.map +1 -0
  267. package/dist/output/yaml.js +26 -0
  268. package/dist/output/yaml.js.map +1 -0
  269. package/dist/skills/store.d.ts +49 -0
  270. package/dist/skills/store.d.ts.map +1 -0
  271. package/dist/skills/store.js +109 -0
  272. package/dist/skills/store.js.map +1 -0
  273. package/dist/skills/store.test.d.ts +2 -0
  274. package/dist/skills/store.test.d.ts.map +1 -0
  275. package/dist/skills/store.test.js +80 -0
  276. package/dist/skills/store.test.js.map +1 -0
  277. package/dist/tui/App.d.ts +18 -0
  278. package/dist/tui/App.d.ts.map +1 -0
  279. package/dist/tui/App.js +742 -0
  280. package/dist/tui/App.js.map +1 -0
  281. package/dist/tui/Composer.d.ts +17 -0
  282. package/dist/tui/Composer.d.ts.map +1 -0
  283. package/dist/tui/Composer.js +123 -0
  284. package/dist/tui/Composer.js.map +1 -0
  285. package/dist/tui/LiveActivity.d.ts +22 -0
  286. package/dist/tui/LiveActivity.d.ts.map +1 -0
  287. package/dist/tui/LiveActivity.js +46 -0
  288. package/dist/tui/LiveActivity.js.map +1 -0
  289. package/dist/tui/Markdown.d.ts +18 -0
  290. package/dist/tui/Markdown.d.ts.map +1 -0
  291. package/dist/tui/Markdown.js +68 -0
  292. package/dist/tui/Markdown.js.map +1 -0
  293. package/dist/tui/PermissionOverlay.d.ts +14 -0
  294. package/dist/tui/PermissionOverlay.d.ts.map +1 -0
  295. package/dist/tui/PermissionOverlay.js +22 -0
  296. package/dist/tui/PermissionOverlay.js.map +1 -0
  297. package/dist/tui/Picker.d.ts +20 -0
  298. package/dist/tui/Picker.d.ts.map +1 -0
  299. package/dist/tui/Picker.js +72 -0
  300. package/dist/tui/Picker.js.map +1 -0
  301. package/dist/tui/ResumePicker.d.ts +12 -0
  302. package/dist/tui/ResumePicker.d.ts.map +1 -0
  303. package/dist/tui/ResumePicker.js +26 -0
  304. package/dist/tui/ResumePicker.js.map +1 -0
  305. package/dist/tui/StatusBar.d.ts +22 -0
  306. package/dist/tui/StatusBar.d.ts.map +1 -0
  307. package/dist/tui/StatusBar.js +73 -0
  308. package/dist/tui/StatusBar.js.map +1 -0
  309. package/dist/tui/Transcript.d.ts +29 -0
  310. package/dist/tui/Transcript.d.ts.map +1 -0
  311. package/dist/tui/Transcript.js +105 -0
  312. package/dist/tui/Transcript.js.map +1 -0
  313. package/dist/tui/TrustPrompt.d.ts +11 -0
  314. package/dist/tui/TrustPrompt.d.ts.map +1 -0
  315. package/dist/tui/TrustPrompt.js +13 -0
  316. package/dist/tui/TrustPrompt.js.map +1 -0
  317. package/dist/tui/agent.d.ts +163 -0
  318. package/dist/tui/agent.d.ts.map +1 -0
  319. package/dist/tui/agent.js +684 -0
  320. package/dist/tui/agent.js.map +1 -0
  321. package/dist/tui/agent.test.d.ts +2 -0
  322. package/dist/tui/agent.test.d.ts.map +1 -0
  323. package/dist/tui/agent.test.js +225 -0
  324. package/dist/tui/agent.test.js.map +1 -0
  325. package/dist/tui/index.d.ts +7 -0
  326. package/dist/tui/index.d.ts.map +1 -0
  327. package/dist/tui/index.js +29 -0
  328. package/dist/tui/index.js.map +1 -0
  329. package/dist/tui/logo.d.ts +23 -0
  330. package/dist/tui/logo.d.ts.map +1 -0
  331. package/dist/tui/logo.js +35 -0
  332. package/dist/tui/logo.js.map +1 -0
  333. package/dist/tui/markdownParser.d.ts +45 -0
  334. package/dist/tui/markdownParser.d.ts.map +1 -0
  335. package/dist/tui/markdownParser.js +127 -0
  336. package/dist/tui/markdownParser.js.map +1 -0
  337. package/dist/tui/markdownParser.test.d.ts +2 -0
  338. package/dist/tui/markdownParser.test.d.ts.map +1 -0
  339. package/dist/tui/markdownParser.test.js +90 -0
  340. package/dist/tui/markdownParser.test.js.map +1 -0
  341. package/dist/tui/mentions.d.ts +22 -0
  342. package/dist/tui/mentions.d.ts.map +1 -0
  343. package/dist/tui/mentions.js +59 -0
  344. package/dist/tui/mentions.js.map +1 -0
  345. package/dist/tui/mentions.test.d.ts +2 -0
  346. package/dist/tui/mentions.test.d.ts.map +1 -0
  347. package/dist/tui/mentions.test.js +35 -0
  348. package/dist/tui/mentions.test.js.map +1 -0
  349. package/dist/tui/slashCommands.d.ts +64 -0
  350. package/dist/tui/slashCommands.d.ts.map +1 -0
  351. package/dist/tui/slashCommands.js +153 -0
  352. package/dist/tui/slashCommands.js.map +1 -0
  353. package/dist/tui/slashCommands.test.d.ts +2 -0
  354. package/dist/tui/slashCommands.test.d.ts.map +1 -0
  355. package/dist/tui/slashCommands.test.js +114 -0
  356. package/dist/tui/slashCommands.test.js.map +1 -0
  357. package/dist/tui/theme.d.ts +34 -0
  358. package/dist/tui/theme.d.ts.map +1 -0
  359. package/dist/tui/theme.js +32 -0
  360. package/dist/tui/theme.js.map +1 -0
  361. package/dist/tui/types.d.ts +27 -0
  362. package/dist/tui/types.d.ts.map +1 -0
  363. package/dist/tui/types.js +7 -0
  364. package/dist/tui/types.js.map +1 -0
  365. package/package.json +67 -57
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peers.js","sourceRoot":"","sources":["../../../src/integrations/clawtool/peers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Clawtool default plugin.
3
+ *
4
+ * Connects to the local clawtool daemon (spawning it if necessary),
5
+ * discovers its tool catalog via MCP `tools/list`, and adapts each tool
6
+ * into the shape namzu's CLI consumes. The result is a proxy-tool list
7
+ * that the agent surfaces through `namzu tools ls/run` and (later) the
8
+ * M3 TUI's tool registry.
9
+ *
10
+ * Adapter contract is intentionally minimal — clawtool already enforces
11
+ * the per-tool schema, sandboxing, and timeouts server-side. We do not
12
+ * duplicate validation in TS; we forward the JSON Schema as-is so callers
13
+ * (and future codegen via `sync-types`) can render it.
14
+ */
15
+ import { type EnsureDaemonOptions } from './daemon.js';
16
+ import { ClawtoolMcpClient } from './mcp.js';
17
+ import type { DaemonEndpoint, McpCallResult } from './types.js';
18
+ export interface ClawtoolProxyTool {
19
+ /** Tool name as advertised by clawtool (e.g. `Bash`, `Read`). */
20
+ readonly name: string;
21
+ readonly description: string;
22
+ readonly inputSchema: Record<string, unknown>;
23
+ readonly source: 'clawtool';
24
+ /** Invoke the tool via clawtool's MCP `tools/call`. */
25
+ call(args: Record<string, unknown>): Promise<McpCallResult>;
26
+ }
27
+ export interface ClawtoolPlugin {
28
+ readonly name: 'clawtool';
29
+ readonly endpoint: DaemonEndpoint;
30
+ readonly tools: readonly ClawtoolProxyTool[];
31
+ /** Underlying client, exposed for diagnostics (do not use in CLI commands). */
32
+ readonly client: ClawtoolMcpClient;
33
+ }
34
+ export interface CreateClawtoolPluginOptions extends EnsureDaemonOptions {
35
+ /** clientInfo sent on `initialize`; default `{ name: 'namzu', version: '0.0.0' }`. */
36
+ readonly clientInfo?: {
37
+ name: string;
38
+ version: string;
39
+ };
40
+ }
41
+ export declare function createClawtoolPlugin(opts?: CreateClawtoolPluginOptions): Promise<ClawtoolPlugin>;
42
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/integrations/clawtool/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,KAAK,mBAAmB,EAAgB,MAAM,aAAa,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAqB,MAAM,YAAY,CAAA;AAElF,MAAM,WAAW,iBAAiB;IACjC,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7C,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,uDAAuD;IACvD,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;CAC3D;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAA;IAC5C,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;CAClC;AAED,MAAM,WAAW,2BAA4B,SAAQ,mBAAmB;IACvE,sFAAsF;IACtF,QAAQ,CAAC,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CACvD;AAED,wBAAsB,oBAAoB,CACzC,IAAI,GAAE,2BAAgC,GACpC,OAAO,CAAC,cAAc,CAAC,CAWzB"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Clawtool default plugin.
3
+ *
4
+ * Connects to the local clawtool daemon (spawning it if necessary),
5
+ * discovers its tool catalog via MCP `tools/list`, and adapts each tool
6
+ * into the shape namzu's CLI consumes. The result is a proxy-tool list
7
+ * that the agent surfaces through `namzu tools ls/run` and (later) the
8
+ * M3 TUI's tool registry.
9
+ *
10
+ * Adapter contract is intentionally minimal — clawtool already enforces
11
+ * the per-tool schema, sandboxing, and timeouts server-side. We do not
12
+ * duplicate validation in TS; we forward the JSON Schema as-is so callers
13
+ * (and future codegen via `sync-types`) can render it.
14
+ */
15
+ import { ensureDaemon } from './daemon.js';
16
+ import { ClawtoolMcpClient } from './mcp.js';
17
+ export async function createClawtoolPlugin(opts = {}) {
18
+ const endpoint = await ensureDaemon(opts);
19
+ const client = new ClawtoolMcpClient({
20
+ endpoint: endpoint.baseUrl,
21
+ token: endpoint.token,
22
+ clientInfo: opts.clientInfo,
23
+ fetch: opts.fetch,
24
+ });
25
+ const descriptors = await client.listTools();
26
+ const tools = descriptors.map((d) => toProxyTool(d, client));
27
+ return { name: 'clawtool', endpoint, tools, client };
28
+ }
29
+ function toProxyTool(d, client) {
30
+ return {
31
+ name: d.name,
32
+ description: d.description,
33
+ inputSchema: d.inputSchema,
34
+ source: 'clawtool',
35
+ call: (args) => client.callTool(d.name, args),
36
+ };
37
+ }
38
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/integrations/clawtool/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAA4B,YAAY,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AA0B5C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,OAAoC,EAAE;IAEtC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;IACzC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACpC,QAAQ,EAAE,QAAQ,CAAC,OAAO;QAC1B,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;KACjB,CAAC,CAAA;IACF,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;IAC5C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;IAC5D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AACrD,CAAC;AAED,SAAS,WAAW,CAAC,CAAoB,EAAE,MAAyB;IACnE,OAAO;QACN,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;KAC7C,CAAA;AACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { DaemonState } from './types.js';
2
+ /**
3
+ * Read clawtool's daemon state file. Returns `null` if the file is missing
4
+ * (daemon not yet started) or unparseable (corrupt state — caller decides
5
+ * whether to overwrite via auto-spawn).
6
+ *
7
+ * Path defaults to `${XDG_CONFIG_HOME:-~/.config}/clawtool/daemon.json`;
8
+ * override `path` for tests.
9
+ */
10
+ export declare function readDaemonState(path?: string): DaemonState | null;
11
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/integrations/clawtool/state.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAejE"}
@@ -0,0 +1,41 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { daemonStatePath } from './paths.js';
3
+ /**
4
+ * Read clawtool's daemon state file. Returns `null` if the file is missing
5
+ * (daemon not yet started) or unparseable (corrupt state — caller decides
6
+ * whether to overwrite via auto-spawn).
7
+ *
8
+ * Path defaults to `${XDG_CONFIG_HOME:-~/.config}/clawtool/daemon.json`;
9
+ * override `path` for tests.
10
+ */
11
+ export function readDaemonState(path) {
12
+ const target = path ?? daemonStatePath();
13
+ let raw;
14
+ try {
15
+ raw = readFileSync(target, 'utf8');
16
+ }
17
+ catch {
18
+ return null;
19
+ }
20
+ try {
21
+ const parsed = JSON.parse(raw);
22
+ if (!isValidState(parsed))
23
+ return null;
24
+ return parsed;
25
+ }
26
+ catch {
27
+ return null;
28
+ }
29
+ }
30
+ function isValidState(value) {
31
+ if (typeof value !== 'object' || value === null)
32
+ return false;
33
+ const v = value;
34
+ return (typeof v.version === 'number' &&
35
+ typeof v.pid === 'number' &&
36
+ typeof v.port === 'number' &&
37
+ typeof v.started_at === 'string' &&
38
+ typeof v.token_file === 'string' &&
39
+ typeof v.log_file === 'string');
40
+ }
41
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/integrations/clawtool/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAG5C;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,IAAa;IAC5C,MAAM,MAAM,GAAG,IAAI,IAAI,eAAe,EAAE,CAAA;IACxC,IAAI,GAAW,CAAA;IACf,IAAI,CAAC;QACJ,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAA;IACZ,CAAC;IACD,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAA;QACzC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAA;QACtC,OAAO,MAAM,CAAA;IACd,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAA;IACZ,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC7D,MAAM,CAAC,GAAG,KAAgC,CAAA;IAC1C,OAAO,CACN,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;QAC7B,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;QACzB,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAC1B,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;QAChC,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;QAChC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAC9B,CAAA;AACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=state.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.test.d.ts","sourceRoot":"","sources":["../../../src/integrations/clawtool/state.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ import { mkdtempSync, writeFileSync } from 'node:fs';
2
+ import { tmpdir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import { describe, expect, it } from 'vitest';
5
+ import { readDaemonState } from './state.js';
6
+ describe('readDaemonState', () => {
7
+ it('returns null when the file is missing', () => {
8
+ const dir = mkdtempSync(join(tmpdir(), 'namzu-state-'));
9
+ expect(readDaemonState(join(dir, 'nope.json'))).toBeNull();
10
+ });
11
+ it('returns null on malformed JSON', () => {
12
+ const dir = mkdtempSync(join(tmpdir(), 'namzu-state-'));
13
+ const path = join(dir, 'daemon.json');
14
+ writeFileSync(path, '{not json}');
15
+ expect(readDaemonState(path)).toBeNull();
16
+ });
17
+ it('returns null when required fields are missing', () => {
18
+ const dir = mkdtempSync(join(tmpdir(), 'namzu-state-'));
19
+ const path = join(dir, 'daemon.json');
20
+ writeFileSync(path, JSON.stringify({ pid: 1, port: 2 }));
21
+ expect(readDaemonState(path)).toBeNull();
22
+ });
23
+ it('parses a valid state file', () => {
24
+ const dir = mkdtempSync(join(tmpdir(), 'namzu-state-'));
25
+ const path = join(dir, 'daemon.json');
26
+ const state = {
27
+ version: 1,
28
+ pid: 1234,
29
+ port: 65432,
30
+ started_at: '2026-05-24T12:00:00Z',
31
+ token_file: '/tmp/token',
32
+ log_file: '/tmp/log',
33
+ };
34
+ writeFileSync(path, JSON.stringify(state));
35
+ expect(readDaemonState(path)).toEqual(state);
36
+ });
37
+ });
38
+ //# sourceMappingURL=state.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.test.js","sourceRoot":"","sources":["../../../src/integrations/clawtool/state.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAChD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAA;QACvD,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACzC,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAA;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QACrC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QACjC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACxD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAA;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QACrC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACxD,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACpC,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAA;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QACrC,MAAM,KAAK,GAAG;YACb,OAAO,EAAE,CAAC;YACV,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,KAAK;YACX,UAAU,EAAE,sBAAsB;YAClC,UAAU,EAAE,YAAY;YACxB,QAAQ,EAAE,UAAU;SACpB,CAAA;QACD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Adapt clawtool's MCP tool catalog into SDK `ToolDefinition`s so the
3
+ * agent loop can call clawtool's tools alongside the SDK builtins.
4
+ *
5
+ * The cli's `ClawtoolMcpClient` is not the SDK's `MCPClient`, so the SDK's
6
+ * `mcpToolToToolDefinition` can't be used directly — but its building
7
+ * blocks (`mcpJsonSchemaToZod`, `mcpToolResultToToolResult`) are public and
8
+ * the MCP wire shapes already match, so the adapter is a thin wrapper.
9
+ *
10
+ * Loading is best-effort: clawtool may be absent, down, or slow to spawn.
11
+ * `loadClawtoolToolDefinitions` never throws and never blocks longer than
12
+ * its timeout — on any failure it yields zero tools and the session runs on
13
+ * builtins alone.
14
+ */
15
+ import { type ToolDefinition } from '@namzu/sdk';
16
+ import { type CreateClawtoolPluginOptions } from './plugin.js';
17
+ import type { ClawtoolProxyTool } from './plugin.js';
18
+ /** Bridged clawtool tools are namespaced under this prefix. */
19
+ export declare const CLAWTOOL_TOOL_PREFIX = "clawtool_";
20
+ /**
21
+ * clawtool tools namzu never bridges (bare lowercased names). The `Agent*`
22
+ * family is clawtool's on-disk `.claude/agents/*.md` persona manager — a
23
+ * Claude-Code construct that writes into Claude Code's directory and is
24
+ * redundant with (and confusing alongside) namzu's own in-memory dynamic
25
+ * sub-agents. namzu owns sub-agent definition + dispatch natively, so these
26
+ * are dropped before they reach the model.
27
+ */
28
+ export declare const EXCLUDED_CLAWTOOL_TOOLS: Set<string>;
29
+ /** Whether a bridged clawtool tool (by its bare name) is excluded from namzu. */
30
+ export declare function isExcludedClawtoolTool(bareName: string): boolean;
31
+ /**
32
+ * Convert one clawtool proxy tool into an SDK `ToolDefinition`. Pure.
33
+ * Bridged tools are flagged destructive (clawtool's MCP descriptors carry
34
+ * no read-only hint, so they're treated as needing consent) and run by
35
+ * forwarding to clawtool's `tools/call`.
36
+ */
37
+ export declare function clawtoolToolToDefinition(proxy: ClawtoolProxyTool): ToolDefinition;
38
+ export interface LoadClawtoolToolsOptions extends CreateClawtoolPluginOptions {
39
+ /** Tool names already provided by builtins; clawtool dupes of these are skipped. */
40
+ readonly skipNames?: readonly string[];
41
+ /** Hard cap on how long to wait for the daemon before giving up. */
42
+ readonly timeoutMs?: number;
43
+ }
44
+ /**
45
+ * Connect to clawtool (spawning the daemon if needed) and adapt its tool
46
+ * catalog, skipping any tool whose bare lowercased name duplicates a
47
+ * builtin. Best-effort: returns `[]` on timeout or any error.
48
+ */
49
+ export declare function loadClawtoolToolDefinitions(opts?: LoadClawtoolToolsOptions): Promise<ToolDefinition[]>;
50
+ //# sourceMappingURL=tooling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooling.d.ts","sourceRoot":"","sources":["../../../src/integrations/clawtool/tooling.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACN,KAAK,cAAc,EAInB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,KAAK,2BAA2B,EAAwB,MAAM,aAAa,CAAA;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAIpD,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,cAAc,CAAA;AAE/C;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,aAAoD,CAAA;AAExF,iFAAiF;AACjF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,GAAG,cAAc,CAkBjF;AAED,MAAM,WAAW,wBAAyB,SAAQ,2BAA2B;IAC5E,oFAAoF;IACpF,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,oEAAoE;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAChD,IAAI,GAAE,wBAA6B,GACjC,OAAO,CAAC,cAAc,EAAE,CAAC,CAc3B"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Adapt clawtool's MCP tool catalog into SDK `ToolDefinition`s so the
3
+ * agent loop can call clawtool's tools alongside the SDK builtins.
4
+ *
5
+ * The cli's `ClawtoolMcpClient` is not the SDK's `MCPClient`, so the SDK's
6
+ * `mcpToolToToolDefinition` can't be used directly — but its building
7
+ * blocks (`mcpJsonSchemaToZod`, `mcpToolResultToToolResult`) are public and
8
+ * the MCP wire shapes already match, so the adapter is a thin wrapper.
9
+ *
10
+ * Loading is best-effort: clawtool may be absent, down, or slow to spawn.
11
+ * `loadClawtoolToolDefinitions` never throws and never blocks longer than
12
+ * its timeout — on any failure it yields zero tools and the session runs on
13
+ * builtins alone.
14
+ */
15
+ import { defineTool, mcpJsonSchemaToZod, mcpToolResultToToolResult, } from '@namzu/sdk';
16
+ import { createClawtoolPlugin } from './plugin.js';
17
+ const DEFAULT_LOAD_TIMEOUT_MS = 5_000;
18
+ /** Bridged clawtool tools are namespaced under this prefix. */
19
+ export const CLAWTOOL_TOOL_PREFIX = 'clawtool_';
20
+ /**
21
+ * clawtool tools namzu never bridges (bare lowercased names). The `Agent*`
22
+ * family is clawtool's on-disk `.claude/agents/*.md` persona manager — a
23
+ * Claude-Code construct that writes into Claude Code's directory and is
24
+ * redundant with (and confusing alongside) namzu's own in-memory dynamic
25
+ * sub-agents. namzu owns sub-agent definition + dispatch natively, so these
26
+ * are dropped before they reach the model.
27
+ */
28
+ export const EXCLUDED_CLAWTOOL_TOOLS = new Set(['agentnew', 'agentlist', 'agentdetect']);
29
+ /** Whether a bridged clawtool tool (by its bare name) is excluded from namzu. */
30
+ export function isExcludedClawtoolTool(bareName) {
31
+ return EXCLUDED_CLAWTOOL_TOOLS.has(bareName.toLowerCase());
32
+ }
33
+ /**
34
+ * Convert one clawtool proxy tool into an SDK `ToolDefinition`. Pure.
35
+ * Bridged tools are flagged destructive (clawtool's MCP descriptors carry
36
+ * no read-only hint, so they're treated as needing consent) and run by
37
+ * forwarding to clawtool's `tools/call`.
38
+ */
39
+ export function clawtoolToolToDefinition(proxy) {
40
+ const inputSchema = mcpJsonSchemaToZod(proxy.inputSchema);
41
+ return defineTool({
42
+ name: `${CLAWTOOL_TOOL_PREFIX}${proxy.name}`,
43
+ description: proxy.description ? `[clawtool] ${proxy.description}` : `[clawtool] ${proxy.name}`,
44
+ inputSchema,
45
+ category: 'custom',
46
+ permissions: [],
47
+ readOnly: false,
48
+ destructive: true,
49
+ concurrencySafe: false,
50
+ execute: async (input) => {
51
+ const result = await proxy.call((input ?? {}));
52
+ return mcpToolResultToToolResult(result);
53
+ },
54
+ });
55
+ }
56
+ /**
57
+ * Connect to clawtool (spawning the daemon if needed) and adapt its tool
58
+ * catalog, skipping any tool whose bare lowercased name duplicates a
59
+ * builtin. Best-effort: returns `[]` on timeout or any error.
60
+ */
61
+ export async function loadClawtoolToolDefinitions(opts = {}) {
62
+ const { skipNames = [], timeoutMs = DEFAULT_LOAD_TIMEOUT_MS, ...pluginOpts } = opts;
63
+ const skip = new Set(skipNames.map((n) => n.toLowerCase()));
64
+ try {
65
+ const plugin = await withTimeout(createClawtoolPlugin(pluginOpts), timeoutMs);
66
+ return plugin.tools
67
+ .filter((t) => {
68
+ const bare = t.name.toLowerCase();
69
+ return !skip.has(bare) && !EXCLUDED_CLAWTOOL_TOOLS.has(bare);
70
+ })
71
+ .map(clawtoolToolToDefinition);
72
+ }
73
+ catch {
74
+ return [];
75
+ }
76
+ }
77
+ function withTimeout(promise, ms) {
78
+ return new Promise((resolve, reject) => {
79
+ const timer = setTimeout(() => reject(new Error('clawtool connect timed out')), ms);
80
+ promise.then((value) => {
81
+ clearTimeout(timer);
82
+ resolve(value);
83
+ }, (err) => {
84
+ clearTimeout(timer);
85
+ reject(err);
86
+ });
87
+ });
88
+ }
89
+ //# sourceMappingURL=tooling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooling.js","sourceRoot":"","sources":["../../../src/integrations/clawtool/tooling.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tooling.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooling.test.d.ts","sourceRoot":"","sources":["../../../src/integrations/clawtool/tooling.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,58 @@
1
+ import { describe, expect, it, vi } from 'vitest';
2
+ import { CLAWTOOL_TOOL_PREFIX, clawtoolToolToDefinition } from './tooling.js';
3
+ function proxy(over = {}) {
4
+ return {
5
+ name: 'WebSearch',
6
+ description: 'Search the web',
7
+ inputSchema: {
8
+ type: 'object',
9
+ properties: { query: { type: 'string' } },
10
+ required: ['query'],
11
+ },
12
+ source: 'clawtool',
13
+ call: vi.fn(async () => ({ content: [{ type: 'text', text: 'ok' }], isError: false })),
14
+ ...over,
15
+ };
16
+ }
17
+ describe('clawtoolToolToDefinition', () => {
18
+ it('namespaces the name and tags the description', () => {
19
+ const def = clawtoolToolToDefinition(proxy());
20
+ expect(def.name).toBe(`${CLAWTOOL_TOOL_PREFIX}WebSearch`);
21
+ expect(def.description).toBe('[clawtool] Search the web');
22
+ });
23
+ it('builds a zod schema that accepts the declared input', () => {
24
+ const def = clawtoolToolToDefinition(proxy());
25
+ expect(def.inputSchema.safeParse({ query: 'hi' }).success).toBe(true);
26
+ });
27
+ it('flags bridged tools destructive (always prompt)', () => {
28
+ const def = clawtoolToolToDefinition(proxy());
29
+ expect(def.isDestructive?.({})).toBe(true);
30
+ expect(def.isReadOnly?.({})).toBe(false);
31
+ });
32
+ it('forwards execution to clawtool and maps the text result', async () => {
33
+ const call = vi.fn(async () => ({
34
+ content: [{ type: 'text', text: 'search results' }],
35
+ isError: false,
36
+ }));
37
+ const def = clawtoolToolToDefinition(proxy({ call }));
38
+ const result = await def.execute({ query: 'hi' }, {});
39
+ expect(call).toHaveBeenCalledWith({ query: 'hi' });
40
+ expect(result.success).toBe(true);
41
+ expect(result.output).toBe('search results');
42
+ });
43
+ it('maps an MCP error result to an unsuccessful ToolResult', async () => {
44
+ const call = vi.fn(async () => ({
45
+ content: [{ type: 'text', text: 'boom' }],
46
+ isError: true,
47
+ }));
48
+ const def = clawtoolToolToDefinition(proxy({ call }));
49
+ const result = await def.execute({ query: 'hi' }, {});
50
+ expect(result.success).toBe(false);
51
+ expect(result.error).toBe('boom');
52
+ });
53
+ it('falls back to the tool name when no description', () => {
54
+ const def = clawtoolToolToDefinition(proxy({ description: '' }));
55
+ expect(def.description).toBe('[clawtool] WebSearch');
56
+ });
57
+ });
58
+ //# sourceMappingURL=tooling.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooling.test.js","sourceRoot":"","sources":["../../../src/integrations/clawtool/tooling.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Shared types for the clawtool integration.
3
+ *
4
+ * Wire shapes mirror clawtool's Go source (cogitave/clawtool) verbatim so
5
+ * upgrades on the clawtool side stay backwards-compatible without TS
6
+ * changes. The source of truth for each shape is cited inline.
7
+ */
8
+ /**
9
+ * `~/.config/clawtool/daemon.json` schema. Matches the Go struct at
10
+ * `internal/daemon/daemon.go:41-48`. Written atomically by `daemon.Ensure`.
11
+ */
12
+ export interface DaemonState {
13
+ readonly version: number;
14
+ readonly pid: number;
15
+ readonly port: number;
16
+ readonly started_at: string;
17
+ readonly token_file: string;
18
+ readonly log_file: string;
19
+ }
20
+ /** Per-tool descriptor returned by MCP `tools/list`. */
21
+ export interface McpToolDescriptor {
22
+ readonly name: string;
23
+ readonly description: string;
24
+ readonly inputSchema: Record<string, unknown>;
25
+ }
26
+ /** Single text-content element returned in a `tools/call` result. */
27
+ export interface McpTextContent {
28
+ readonly type: 'text';
29
+ readonly text: string;
30
+ }
31
+ /** Result envelope of a `tools/call` request. */
32
+ export interface McpCallResult {
33
+ readonly content: readonly McpTextContent[];
34
+ readonly isError?: boolean;
35
+ }
36
+ /** Discovered + connected clawtool endpoint, returned by `ensureDaemon`. */
37
+ export interface DaemonEndpoint {
38
+ readonly baseUrl: string;
39
+ readonly token: string;
40
+ }
41
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/integrations/clawtool/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CACzB;AAED,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7C;AAED,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACrB;AAED,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAA;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACtB"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Shared types for the clawtool integration.
3
+ *
4
+ * Wire shapes mirror clawtool's Go source (cogitave/clawtool) verbatim so
5
+ * upgrades on the clawtool side stay backwards-compatible without TS
6
+ * changes. The source of truth for each shape is cited inline.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/integrations/clawtool/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Read an image off the system clipboard, for the composer's Ctrl+V paste.
3
+ *
4
+ * Terminals don't deliver pasted image bytes over stdin, so we shell out to
5
+ * the platform clipboard tool, write the image to a temp PNG, and read it
6
+ * back as base64. macOS uses `osascript` (`«class PNGf»`); Linux tries
7
+ * `xclip` then `wl-paste`; Windows uses PowerShell. Non-throwing — any
8
+ * failure (no image on the clipboard, tool missing) returns `null`.
9
+ *
10
+ * Pattern mirrors Claude Code's `utils/imagePaste.ts` clipboard plumbing.
11
+ */
12
+ export interface ClipboardImage {
13
+ /** Base64-encoded PNG bytes (no `data:` prefix). */
14
+ readonly data: string;
15
+ readonly mediaType: 'image/png';
16
+ }
17
+ export declare function readClipboardImage(): ClipboardImage | null;
18
+ //# sourceMappingURL=image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../src/integrations/clipboard/image.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,MAAM,WAAW,cAAc;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAA;CAC/B;AAID,wBAAgB,kBAAkB,IAAI,cAAc,GAAG,IAAI,CAgB1D"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Read an image off the system clipboard, for the composer's Ctrl+V paste.
3
+ *
4
+ * Terminals don't deliver pasted image bytes over stdin, so we shell out to
5
+ * the platform clipboard tool, write the image to a temp PNG, and read it
6
+ * back as base64. macOS uses `osascript` (`«class PNGf»`); Linux tries
7
+ * `xclip` then `wl-paste`; Windows uses PowerShell. Non-throwing — any
8
+ * failure (no image on the clipboard, tool missing) returns `null`.
9
+ *
10
+ * Pattern mirrors Claude Code's `utils/imagePaste.ts` clipboard plumbing.
11
+ */
12
+ import { execFileSync } from 'node:child_process';
13
+ import { readFileSync, rmSync } from 'node:fs';
14
+ import { tmpdir } from 'node:os';
15
+ import { platform } from 'node:os';
16
+ import { join } from 'node:path';
17
+ const TIMEOUT_MS = 5_000;
18
+ export function readClipboardImage() {
19
+ const file = join(tmpdir(), `namzu-clip-${Date.now()}.png`);
20
+ try {
21
+ if (!saveClipboardImageTo(file))
22
+ return null;
23
+ const buf = readFileSync(file);
24
+ if (buf.length === 0)
25
+ return null;
26
+ return { data: buf.toString('base64'), mediaType: 'image/png' };
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ finally {
32
+ try {
33
+ rmSync(file, { force: true });
34
+ }
35
+ catch {
36
+ // best-effort cleanup
37
+ }
38
+ }
39
+ }
40
+ /** Write the clipboard image to `file` as PNG; return false if there's none. */
41
+ function saveClipboardImageTo(file) {
42
+ const run = (cmd, args) => {
43
+ try {
44
+ execFileSync(cmd, args, { timeout: TIMEOUT_MS, stdio: ['ignore', 'ignore', 'ignore'] });
45
+ return true;
46
+ }
47
+ catch {
48
+ return false;
49
+ }
50
+ };
51
+ const runShell = (script) => {
52
+ try {
53
+ execFileSync('/bin/sh', ['-c', script], {
54
+ timeout: TIMEOUT_MS,
55
+ stdio: ['ignore', 'ignore', 'ignore'],
56
+ });
57
+ return true;
58
+ }
59
+ catch {
60
+ return false;
61
+ }
62
+ };
63
+ switch (platform()) {
64
+ case 'darwin':
65
+ return run('osascript', [
66
+ '-e',
67
+ 'set png_data to (the clipboard as «class PNGf»)',
68
+ '-e',
69
+ `set fp to open for access POSIX file "${file}" with write permission`,
70
+ '-e',
71
+ 'write png_data to fp',
72
+ '-e',
73
+ 'close access fp',
74
+ ]);
75
+ case 'linux':
76
+ return (runShell(`xclip -selection clipboard -t image/png -o > "${file}" 2>/dev/null`) ||
77
+ runShell(`wl-paste --type image/png > "${file}" 2>/dev/null`));
78
+ case 'win32':
79
+ return run('powershell', [
80
+ '-NoProfile',
81
+ '-Command',
82
+ `$img = Get-Clipboard -Format Image; if ($img) { $img.Save('${file.replace(/'/g, "''")}', [System.Drawing.Imaging.ImageFormat]::Png) } else { exit 1 }`,
83
+ ]);
84
+ default:
85
+ return false;
86
+ }
87
+ }
88
+ //# sourceMappingURL=image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../../../src/integrations/clipboard/image.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAQhC,MAAM,UAAU,GAAG,KAAK,CAAA;AAExB,MAAM,UAAU,kBAAkB;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAC3D,IAAI,CAAC;QACJ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAC5C,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QACjC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAA;IAChE,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAA;IACZ,CAAC;YAAS,CAAC;QACV,IAAI,CAAC;YACJ,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAC9B,CAAC;QAAC,MAAM,CAAC;YACR,sBAAsB;QACvB,CAAC;IACF,CAAC;AACF,CAAC;AAED,gFAAgF;AAChF,SAAS,oBAAoB,CAAC,IAAY;IACzC,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,IAAc,EAAW,EAAE;QACpD,IAAI,CAAC;YACJ,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAA;YACvF,OAAO,IAAI,CAAA;QACZ,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,KAAK,CAAA;QACb,CAAC;IACF,CAAC,CAAA;IACD,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAW,EAAE;QAC5C,IAAI,CAAC;YACJ,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;gBACvC,OAAO,EAAE,UAAU;gBACnB,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;aACrC,CAAC,CAAA;YACF,OAAO,IAAI,CAAA;QACZ,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,KAAK,CAAA;QACb,CAAC;IACF,CAAC,CAAA;IAED,QAAQ,QAAQ,EAAE,EAAE,CAAC;QACpB,KAAK,QAAQ;YACZ,OAAO,GAAG,CAAC,WAAW,EAAE;gBACvB,IAAI;gBACJ,iDAAiD;gBACjD,IAAI;gBACJ,yCAAyC,IAAI,yBAAyB;gBACtE,IAAI;gBACJ,sBAAsB;gBACtB,IAAI;gBACJ,iBAAiB;aACjB,CAAC,CAAA;QACH,KAAK,OAAO;YACX,OAAO,CACN,QAAQ,CAAC,iDAAiD,IAAI,eAAe,CAAC;gBAC9E,QAAQ,CAAC,gCAAgC,IAAI,eAAe,CAAC,CAC7D,CAAA;QACF,KAAK,OAAO;YACX,OAAO,GAAG,CAAC,YAAY,EAAE;gBACxB,YAAY;gBACZ,UAAU;gBACV,8DAA8D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,iEAAiE;aACvJ,CAAC,CAAA;QACH;YACC,OAAO,KAAK,CAAA;IACd,CAAC;AACF,CAAC"}