@edwardlee5423/magi 0.1.0-alpha.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 (531) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +184 -0
  3. package/dist/agent/headless-agent.d.ts +15 -0
  4. package/dist/agent/headless-agent.js +105 -0
  5. package/dist/agent/headless-agent.js.map +1 -0
  6. package/dist/agent/local-plan.d.ts +20 -0
  7. package/dist/agent/local-plan.js +30 -0
  8. package/dist/agent/local-plan.js.map +1 -0
  9. package/dist/agent/query-engine.d.ts +71 -0
  10. package/dist/agent/query-engine.js +938 -0
  11. package/dist/agent/query-engine.js.map +1 -0
  12. package/dist/agent/query.d.ts +128 -0
  13. package/dist/agent/query.js +674 -0
  14. package/dist/agent/query.js.map +1 -0
  15. package/dist/agent/system-prompt.d.ts +12 -0
  16. package/dist/agent/system-prompt.js +104 -0
  17. package/dist/agent/system-prompt.js.map +1 -0
  18. package/dist/agent/tools.d.ts +71 -0
  19. package/dist/agent/tools.js +37 -0
  20. package/dist/agent/tools.js.map +1 -0
  21. package/dist/agents/roles.d.ts +9 -0
  22. package/dist/agents/roles.js +18 -0
  23. package/dist/agents/roles.js.map +1 -0
  24. package/dist/agents/task-queue.d.ts +13 -0
  25. package/dist/agents/task-queue.js +50 -0
  26. package/dist/agents/task-queue.js.map +1 -0
  27. package/dist/cli.d.ts +7 -0
  28. package/dist/cli.js +1540 -0
  29. package/dist/cli.js.map +1 -0
  30. package/dist/colors.d.ts +20 -0
  31. package/dist/colors.js +92 -0
  32. package/dist/colors.js.map +1 -0
  33. package/dist/commands/agents.d.ts +9 -0
  34. package/dist/commands/agents.js +37 -0
  35. package/dist/commands/agents.js.map +1 -0
  36. package/dist/commands/clear.d.ts +9 -0
  37. package/dist/commands/clear.js +20 -0
  38. package/dist/commands/clear.js.map +1 -0
  39. package/dist/commands/commit.d.ts +8 -0
  40. package/dist/commands/commit.js +35 -0
  41. package/dist/commands/commit.js.map +1 -0
  42. package/dist/commands/compact.d.ts +8 -0
  43. package/dist/commands/compact.js +29 -0
  44. package/dist/commands/compact.js.map +1 -0
  45. package/dist/commands/copy.d.ts +8 -0
  46. package/dist/commands/copy.js +49 -0
  47. package/dist/commands/copy.js.map +1 -0
  48. package/dist/commands/cost.d.ts +8 -0
  49. package/dist/commands/cost.js +94 -0
  50. package/dist/commands/cost.js.map +1 -0
  51. package/dist/commands/diff.d.ts +8 -0
  52. package/dist/commands/diff.js +38 -0
  53. package/dist/commands/diff.js.map +1 -0
  54. package/dist/commands/doctor.d.ts +8 -0
  55. package/dist/commands/doctor.js +23 -0
  56. package/dist/commands/doctor.js.map +1 -0
  57. package/dist/commands/export.d.ts +8 -0
  58. package/dist/commands/export.js +42 -0
  59. package/dist/commands/export.js.map +1 -0
  60. package/dist/commands/fork.d.ts +8 -0
  61. package/dist/commands/fork.js +20 -0
  62. package/dist/commands/fork.js.map +1 -0
  63. package/dist/commands/goal.d.ts +9 -0
  64. package/dist/commands/goal.js +54 -0
  65. package/dist/commands/goal.js.map +1 -0
  66. package/dist/commands/help.d.ts +8 -0
  67. package/dist/commands/help.js +65 -0
  68. package/dist/commands/help.js.map +1 -0
  69. package/dist/commands/hooks.d.ts +8 -0
  70. package/dist/commands/hooks.js +56 -0
  71. package/dist/commands/hooks.js.map +1 -0
  72. package/dist/commands/image.d.ts +17 -0
  73. package/dist/commands/image.js +74 -0
  74. package/dist/commands/image.js.map +1 -0
  75. package/dist/commands/init.d.ts +26 -0
  76. package/dist/commands/init.js +214 -0
  77. package/dist/commands/init.js.map +1 -0
  78. package/dist/commands/mcp.d.ts +8 -0
  79. package/dist/commands/mcp.js +217 -0
  80. package/dist/commands/mcp.js.map +1 -0
  81. package/dist/commands/memory.d.ts +8 -0
  82. package/dist/commands/memory.js +79 -0
  83. package/dist/commands/memory.js.map +1 -0
  84. package/dist/commands/model.d.ts +8 -0
  85. package/dist/commands/model.js +21 -0
  86. package/dist/commands/model.js.map +1 -0
  87. package/dist/commands/permissions.d.ts +9 -0
  88. package/dist/commands/permissions.js +30 -0
  89. package/dist/commands/permissions.js.map +1 -0
  90. package/dist/commands/proactive.d.ts +9 -0
  91. package/dist/commands/proactive.js +24 -0
  92. package/dist/commands/proactive.js.map +1 -0
  93. package/dist/commands/register-all.d.ts +1 -0
  94. package/dist/commands/register-all.js +68 -0
  95. package/dist/commands/register-all.js.map +1 -0
  96. package/dist/commands/registry.d.ts +64 -0
  97. package/dist/commands/registry.js +235 -0
  98. package/dist/commands/registry.js.map +1 -0
  99. package/dist/commands/rename.d.ts +8 -0
  100. package/dist/commands/rename.js +16 -0
  101. package/dist/commands/rename.js.map +1 -0
  102. package/dist/commands/review.d.ts +8 -0
  103. package/dist/commands/review.js +13 -0
  104. package/dist/commands/review.js.map +1 -0
  105. package/dist/commands/rewind.d.ts +8 -0
  106. package/dist/commands/rewind.js +45 -0
  107. package/dist/commands/rewind.js.map +1 -0
  108. package/dist/commands/route.d.ts +9 -0
  109. package/dist/commands/route.js +83 -0
  110. package/dist/commands/route.js.map +1 -0
  111. package/dist/commands/sessions.d.ts +9 -0
  112. package/dist/commands/sessions.js +25 -0
  113. package/dist/commands/sessions.js.map +1 -0
  114. package/dist/commands/skill.d.ts +9 -0
  115. package/dist/commands/skill.js +46 -0
  116. package/dist/commands/skill.js.map +1 -0
  117. package/dist/commands/status.d.ts +8 -0
  118. package/dist/commands/status.js +41 -0
  119. package/dist/commands/status.js.map +1 -0
  120. package/dist/commands/summary.d.ts +8 -0
  121. package/dist/commands/summary.js +39 -0
  122. package/dist/commands/summary.js.map +1 -0
  123. package/dist/commands/tasks.d.ts +9 -0
  124. package/dist/commands/tasks.js +70 -0
  125. package/dist/commands/tasks.js.map +1 -0
  126. package/dist/commands/todos.d.ts +9 -0
  127. package/dist/commands/todos.js +27 -0
  128. package/dist/commands/todos.js.map +1 -0
  129. package/dist/commands/tutorial.d.ts +8 -0
  130. package/dist/commands/tutorial.js +159 -0
  131. package/dist/commands/tutorial.js.map +1 -0
  132. package/dist/commands/upgrade.d.ts +9 -0
  133. package/dist/commands/upgrade.js +73 -0
  134. package/dist/commands/upgrade.js.map +1 -0
  135. package/dist/commands/usage.d.ts +8 -0
  136. package/dist/commands/usage.js +54 -0
  137. package/dist/commands/usage.js.map +1 -0
  138. package/dist/commands/vim.d.ts +10 -0
  139. package/dist/commands/vim.js +34 -0
  140. package/dist/commands/vim.js.map +1 -0
  141. package/dist/config.d.ts +104 -0
  142. package/dist/config.js +533 -0
  143. package/dist/config.js.map +1 -0
  144. package/dist/context/compaction.d.ts +66 -0
  145. package/dist/context/compaction.js +353 -0
  146. package/dist/context/compaction.js.map +1 -0
  147. package/dist/context/layers.d.ts +32 -0
  148. package/dist/context/layers.js +114 -0
  149. package/dist/context/layers.js.map +1 -0
  150. package/dist/context/token-budget.d.ts +21 -0
  151. package/dist/context/token-budget.js +70 -0
  152. package/dist/context/token-budget.js.map +1 -0
  153. package/dist/control/auth.d.ts +17 -0
  154. package/dist/control/auth.js +31 -0
  155. package/dist/control/auth.js.map +1 -0
  156. package/dist/control/daemon.d.ts +38 -0
  157. package/dist/control/daemon.js +135 -0
  158. package/dist/control/daemon.js.map +1 -0
  159. package/dist/control/mdns.d.ts +51 -0
  160. package/dist/control/mdns.js +344 -0
  161. package/dist/control/mdns.js.map +1 -0
  162. package/dist/control/peer-client.d.ts +49 -0
  163. package/dist/control/peer-client.js +170 -0
  164. package/dist/control/peer-client.js.map +1 -0
  165. package/dist/control/server.d.ts +30 -0
  166. package/dist/control/server.js +887 -0
  167. package/dist/control/server.js.map +1 -0
  168. package/dist/cost.d.ts +23 -0
  169. package/dist/cost.js +80 -0
  170. package/dist/cost.js.map +1 -0
  171. package/dist/doctor.d.ts +8 -0
  172. package/dist/doctor.js +22 -0
  173. package/dist/doctor.js.map +1 -0
  174. package/dist/env.d.ts +7 -0
  175. package/dist/env.js +70 -0
  176. package/dist/env.js.map +1 -0
  177. package/dist/errors.d.ts +6 -0
  178. package/dist/errors.js +13 -0
  179. package/dist/errors.js.map +1 -0
  180. package/dist/events.d.ts +19 -0
  181. package/dist/events.js +236 -0
  182. package/dist/events.js.map +1 -0
  183. package/dist/fs-utils.d.ts +21 -0
  184. package/dist/fs-utils.js +48 -0
  185. package/dist/fs-utils.js.map +1 -0
  186. package/dist/goal.d.ts +32 -0
  187. package/dist/goal.js +172 -0
  188. package/dist/goal.js.map +1 -0
  189. package/dist/headless.d.ts +38 -0
  190. package/dist/headless.js +547 -0
  191. package/dist/headless.js.map +1 -0
  192. package/dist/history.d.ts +8 -0
  193. package/dist/history.js +77 -0
  194. package/dist/history.js.map +1 -0
  195. package/dist/hooks/events.d.ts +14 -0
  196. package/dist/hooks/events.js +37 -0
  197. package/dist/hooks/events.js.map +1 -0
  198. package/dist/hooks/runner.d.ts +73 -0
  199. package/dist/hooks/runner.js +256 -0
  200. package/dist/hooks/runner.js.map +1 -0
  201. package/dist/hooks/trigger.d.ts +9 -0
  202. package/dist/hooks/trigger.js +18 -0
  203. package/dist/hooks/trigger.js.map +1 -0
  204. package/dist/index.d.ts +61 -0
  205. package/dist/index.js +62 -0
  206. package/dist/index.js.map +1 -0
  207. package/dist/interactions.d.ts +102 -0
  208. package/dist/interactions.js +250 -0
  209. package/dist/interactions.js.map +1 -0
  210. package/dist/logger.d.ts +32 -0
  211. package/dist/logger.js +115 -0
  212. package/dist/logger.js.map +1 -0
  213. package/dist/markdown.d.ts +18 -0
  214. package/dist/markdown.js +293 -0
  215. package/dist/markdown.js.map +1 -0
  216. package/dist/mcp/approval.d.ts +9 -0
  217. package/dist/mcp/approval.js +27 -0
  218. package/dist/mcp/approval.js.map +1 -0
  219. package/dist/mcp/client.d.ts +61 -0
  220. package/dist/mcp/client.js +276 -0
  221. package/dist/mcp/client.js.map +1 -0
  222. package/dist/mcp/connection-manager.d.ts +30 -0
  223. package/dist/mcp/connection-manager.js +126 -0
  224. package/dist/mcp/connection-manager.js.map +1 -0
  225. package/dist/mcp/oauth-callback.d.ts +23 -0
  226. package/dist/mcp/oauth-callback.js +108 -0
  227. package/dist/mcp/oauth-callback.js.map +1 -0
  228. package/dist/mcp/oauth-flow.d.ts +45 -0
  229. package/dist/mcp/oauth-flow.js +145 -0
  230. package/dist/mcp/oauth-flow.js.map +1 -0
  231. package/dist/mcp/oauth.d.ts +82 -0
  232. package/dist/mcp/oauth.js +169 -0
  233. package/dist/mcp/oauth.js.map +1 -0
  234. package/dist/mcp/tool-registry.d.ts +29 -0
  235. package/dist/mcp/tool-registry.js +207 -0
  236. package/dist/mcp/tool-registry.js.map +1 -0
  237. package/dist/mcp/transport.d.ts +33 -0
  238. package/dist/mcp/transport.js +493 -0
  239. package/dist/mcp/transport.js.map +1 -0
  240. package/dist/mcp/types.d.ts +57 -0
  241. package/dist/mcp/types.js +2 -0
  242. package/dist/mcp/types.js.map +1 -0
  243. package/dist/memdir.d.ts +58 -0
  244. package/dist/memdir.js +219 -0
  245. package/dist/memdir.js.map +1 -0
  246. package/dist/memory-selection.d.ts +30 -0
  247. package/dist/memory-selection.js +102 -0
  248. package/dist/memory-selection.js.map +1 -0
  249. package/dist/memory.d.ts +85 -0
  250. package/dist/memory.js +259 -0
  251. package/dist/memory.js.map +1 -0
  252. package/dist/paths.d.ts +25 -0
  253. package/dist/paths.js +99 -0
  254. package/dist/paths.js.map +1 -0
  255. package/dist/permissions.d.ts +17 -0
  256. package/dist/permissions.js +72 -0
  257. package/dist/permissions.js.map +1 -0
  258. package/dist/plugins/manifest.d.ts +17 -0
  259. package/dist/plugins/manifest.js +98 -0
  260. package/dist/plugins/manifest.js.map +1 -0
  261. package/dist/plugins/marketplace.d.ts +22 -0
  262. package/dist/plugins/marketplace.js +98 -0
  263. package/dist/plugins/marketplace.js.map +1 -0
  264. package/dist/proactive.d.ts +15 -0
  265. package/dist/proactive.js +49 -0
  266. package/dist/proactive.js.map +1 -0
  267. package/dist/providers/errors.d.ts +14 -0
  268. package/dist/providers/errors.js +66 -0
  269. package/dist/providers/errors.js.map +1 -0
  270. package/dist/providers/format-proxy.d.ts +100 -0
  271. package/dist/providers/format-proxy.js +235 -0
  272. package/dist/providers/format-proxy.js.map +1 -0
  273. package/dist/providers/http.d.ts +4 -0
  274. package/dist/providers/http.js +21 -0
  275. package/dist/providers/http.js.map +1 -0
  276. package/dist/providers/ir.d.ts +84 -0
  277. package/dist/providers/ir.js +76 -0
  278. package/dist/providers/ir.js.map +1 -0
  279. package/dist/providers/messages-compatible.d.ts +19 -0
  280. package/dist/providers/messages-compatible.js +592 -0
  281. package/dist/providers/messages-compatible.js.map +1 -0
  282. package/dist/providers/openai.d.ts +18 -0
  283. package/dist/providers/openai.js +430 -0
  284. package/dist/providers/openai.js.map +1 -0
  285. package/dist/providers/registry.d.ts +10 -0
  286. package/dist/providers/registry.js +16 -0
  287. package/dist/providers/registry.js.map +1 -0
  288. package/dist/providers/sse.d.ts +6 -0
  289. package/dist/providers/sse.js +104 -0
  290. package/dist/providers/sse.js.map +1 -0
  291. package/dist/routing/model-alias.d.ts +8 -0
  292. package/dist/routing/model-alias.js +23 -0
  293. package/dist/routing/model-alias.js.map +1 -0
  294. package/dist/routing/model-router.d.ts +55 -0
  295. package/dist/routing/model-router.js +233 -0
  296. package/dist/routing/model-router.js.map +1 -0
  297. package/dist/routing/router.d.ts +26 -0
  298. package/dist/routing/router.js +63 -0
  299. package/dist/routing/router.js.map +1 -0
  300. package/dist/rules/agents-loader.d.ts +12 -0
  301. package/dist/rules/agents-loader.js +61 -0
  302. package/dist/rules/agents-loader.js.map +1 -0
  303. package/dist/runner/client.d.ts +67 -0
  304. package/dist/runner/client.js +175 -0
  305. package/dist/runner/client.js.map +1 -0
  306. package/dist/session-store.d.ts +250 -0
  307. package/dist/session-store.js +629 -0
  308. package/dist/session-store.js.map +1 -0
  309. package/dist/skills/bundled.d.ts +14 -0
  310. package/dist/skills/bundled.js +148 -0
  311. package/dist/skills/bundled.js.map +1 -0
  312. package/dist/skills/loader.d.ts +11 -0
  313. package/dist/skills/loader.js +73 -0
  314. package/dist/skills/loader.js.map +1 -0
  315. package/dist/slash-menu.d.ts +14 -0
  316. package/dist/slash-menu.js +166 -0
  317. package/dist/slash-menu.js.map +1 -0
  318. package/dist/slash.d.ts +75 -0
  319. package/dist/slash.js +126 -0
  320. package/dist/slash.js.map +1 -0
  321. package/dist/spinner.d.ts +27 -0
  322. package/dist/spinner.js +68 -0
  323. package/dist/spinner.js.map +1 -0
  324. package/dist/ssh/exec.d.ts +20 -0
  325. package/dist/ssh/exec.js +39 -0
  326. package/dist/ssh/exec.js.map +1 -0
  327. package/dist/ssh/file.d.ts +32 -0
  328. package/dist/ssh/file.js +60 -0
  329. package/dist/ssh/file.js.map +1 -0
  330. package/dist/syntax-highlight.d.ts +19 -0
  331. package/dist/syntax-highlight.js +181 -0
  332. package/dist/syntax-highlight.js.map +1 -0
  333. package/dist/tools/agent-tool.d.ts +53 -0
  334. package/dist/tools/agent-tool.js +62 -0
  335. package/dist/tools/agent-tool.js.map +1 -0
  336. package/dist/tools/archive-create.d.ts +35 -0
  337. package/dist/tools/archive-create.js +37 -0
  338. package/dist/tools/archive-create.js.map +1 -0
  339. package/dist/tools/archive-extract.d.ts +28 -0
  340. package/dist/tools/archive-extract.js +36 -0
  341. package/dist/tools/archive-extract.js.map +1 -0
  342. package/dist/tools/base64.d.ts +27 -0
  343. package/dist/tools/base64.js +19 -0
  344. package/dist/tools/base64.js.map +1 -0
  345. package/dist/tools/browser.d.ts +125 -0
  346. package/dist/tools/browser.js +241 -0
  347. package/dist/tools/browser.js.map +1 -0
  348. package/dist/tools/config-tool.d.ts +31 -0
  349. package/dist/tools/config-tool.js +167 -0
  350. package/dist/tools/config-tool.js.map +1 -0
  351. package/dist/tools/cron.d.ts +110 -0
  352. package/dist/tools/cron.js +299 -0
  353. package/dist/tools/cron.js.map +1 -0
  354. package/dist/tools/date.d.ts +24 -0
  355. package/dist/tools/date.js +26 -0
  356. package/dist/tools/date.js.map +1 -0
  357. package/dist/tools/dir-create.d.ts +21 -0
  358. package/dist/tools/dir-create.js +19 -0
  359. package/dist/tools/dir-create.js.map +1 -0
  360. package/dist/tools/dir-list.d.ts +36 -0
  361. package/dist/tools/dir-list.js +47 -0
  362. package/dist/tools/dir-list.js.map +1 -0
  363. package/dist/tools/disk-usage.d.ts +30 -0
  364. package/dist/tools/disk-usage.js +22 -0
  365. package/dist/tools/disk-usage.js.map +1 -0
  366. package/dist/tools/download-file.d.ts +28 -0
  367. package/dist/tools/download-file.js +42 -0
  368. package/dist/tools/download-file.js.map +1 -0
  369. package/dist/tools/environment.d.ts +31 -0
  370. package/dist/tools/environment.js +33 -0
  371. package/dist/tools/environment.js.map +1 -0
  372. package/dist/tools/errors.d.ts +5 -0
  373. package/dist/tools/errors.js +9 -0
  374. package/dist/tools/errors.js.map +1 -0
  375. package/dist/tools/file-copy.d.ts +34 -0
  376. package/dist/tools/file-copy.js +45 -0
  377. package/dist/tools/file-copy.js.map +1 -0
  378. package/dist/tools/file-delete.d.ts +34 -0
  379. package/dist/tools/file-delete.js +42 -0
  380. package/dist/tools/file-delete.js.map +1 -0
  381. package/dist/tools/file-find.d.ts +46 -0
  382. package/dist/tools/file-find.js +33 -0
  383. package/dist/tools/file-find.js.map +1 -0
  384. package/dist/tools/file-move.d.ts +33 -0
  385. package/dist/tools/file-move.js +32 -0
  386. package/dist/tools/file-move.js.map +1 -0
  387. package/dist/tools/files.d.ts +38 -0
  388. package/dist/tools/files.js +123 -0
  389. package/dist/tools/files.js.map +1 -0
  390. package/dist/tools/git-branch-delete.d.ts +27 -0
  391. package/dist/tools/git-branch-delete.js +25 -0
  392. package/dist/tools/git-branch-delete.js.map +1 -0
  393. package/dist/tools/git-reset.d.ts +30 -0
  394. package/dist/tools/git-reset.js +28 -0
  395. package/dist/tools/git-reset.js.map +1 -0
  396. package/dist/tools/git-stash.d.ts +28 -0
  397. package/dist/tools/git-stash.js +24 -0
  398. package/dist/tools/git-stash.js.map +1 -0
  399. package/dist/tools/git.d.ts +77 -0
  400. package/dist/tools/git.js +300 -0
  401. package/dist/tools/git.js.map +1 -0
  402. package/dist/tools/github.d.ts +68 -0
  403. package/dist/tools/github.js +77 -0
  404. package/dist/tools/github.js.map +1 -0
  405. package/dist/tools/head-tail.d.ts +34 -0
  406. package/dist/tools/head-tail.js +23 -0
  407. package/dist/tools/head-tail.js.map +1 -0
  408. package/dist/tools/http-request.d.ts +44 -0
  409. package/dist/tools/http-request.js +57 -0
  410. package/dist/tools/http-request.js.map +1 -0
  411. package/dist/tools/json-query.d.ts +27 -0
  412. package/dist/tools/json-query.js +90 -0
  413. package/dist/tools/json-query.js.map +1 -0
  414. package/dist/tools/kill-process.d.ts +32 -0
  415. package/dist/tools/kill-process.js +51 -0
  416. package/dist/tools/kill-process.js.map +1 -0
  417. package/dist/tools/lsp.d.ts +98 -0
  418. package/dist/tools/lsp.js +398 -0
  419. package/dist/tools/lsp.js.map +1 -0
  420. package/dist/tools/monitor.d.ts +29 -0
  421. package/dist/tools/monitor.js +78 -0
  422. package/dist/tools/monitor.js.map +1 -0
  423. package/dist/tools/network-check.d.ts +34 -0
  424. package/dist/tools/network-check.js +57 -0
  425. package/dist/tools/network-check.js.map +1 -0
  426. package/dist/tools/notebook.d.ts +63 -0
  427. package/dist/tools/notebook.js +158 -0
  428. package/dist/tools/notebook.js.map +1 -0
  429. package/dist/tools/plan-mode.d.ts +48 -0
  430. package/dist/tools/plan-mode.js +57 -0
  431. package/dist/tools/plan-mode.js.map +1 -0
  432. package/dist/tools/process-list.d.ts +35 -0
  433. package/dist/tools/process-list.js +42 -0
  434. package/dist/tools/process-list.js.map +1 -0
  435. package/dist/tools/registry.d.ts +132 -0
  436. package/dist/tools/registry.js +2262 -0
  437. package/dist/tools/registry.js.map +1 -0
  438. package/dist/tools/search.d.ts +38 -0
  439. package/dist/tools/search.js +327 -0
  440. package/dist/tools/search.js.map +1 -0
  441. package/dist/tools/shell.d.ts +18 -0
  442. package/dist/tools/shell.js +249 -0
  443. package/dist/tools/shell.js.map +1 -0
  444. package/dist/tools/skill-tool.d.ts +22 -0
  445. package/dist/tools/skill-tool.js +66 -0
  446. package/dist/tools/skill-tool.js.map +1 -0
  447. package/dist/tools/sleep.d.ts +16 -0
  448. package/dist/tools/sleep.js +24 -0
  449. package/dist/tools/sleep.js.map +1 -0
  450. package/dist/tools/snip.d.ts +26 -0
  451. package/dist/tools/snip.js +95 -0
  452. package/dist/tools/snip.js.map +1 -0
  453. package/dist/tools/system-info.d.ts +17 -0
  454. package/dist/tools/system-info.js +33 -0
  455. package/dist/tools/system-info.js.map +1 -0
  456. package/dist/tools/tasks.d.ts +191 -0
  457. package/dist/tools/tasks.js +348 -0
  458. package/dist/tools/tasks.js.map +1 -0
  459. package/dist/tools/text-stats.d.ts +25 -0
  460. package/dist/tools/text-stats.js +25 -0
  461. package/dist/tools/text-stats.js.map +1 -0
  462. package/dist/tools/todo.d.ts +69 -0
  463. package/dist/tools/todo.js +197 -0
  464. package/dist/tools/todo.js.map +1 -0
  465. package/dist/tools/tool-search.d.ts +29 -0
  466. package/dist/tools/tool-search.js +114 -0
  467. package/dist/tools/tool-search.js.map +1 -0
  468. package/dist/tools/tree-view.d.ts +34 -0
  469. package/dist/tools/tree-view.js +39 -0
  470. package/dist/tools/tree-view.js.map +1 -0
  471. package/dist/tools/user-message.d.ts +39 -0
  472. package/dist/tools/user-message.js +70 -0
  473. package/dist/tools/user-message.js.map +1 -0
  474. package/dist/tools/user-question.d.ts +88 -0
  475. package/dist/tools/user-question.js +236 -0
  476. package/dist/tools/user-question.js.map +1 -0
  477. package/dist/tools/web-browser.d.ts +53 -0
  478. package/dist/tools/web-browser.js +373 -0
  479. package/dist/tools/web-browser.js.map +1 -0
  480. package/dist/tools/web-fetch.d.ts +22 -0
  481. package/dist/tools/web-fetch.js +146 -0
  482. package/dist/tools/web-fetch.js.map +1 -0
  483. package/dist/tools/web-search.d.ts +51 -0
  484. package/dist/tools/web-search.js +198 -0
  485. package/dist/tools/web-search.js.map +1 -0
  486. package/dist/tools/which.d.ts +22 -0
  487. package/dist/tools/which.js +21 -0
  488. package/dist/tools/which.js.map +1 -0
  489. package/dist/tools/whoami.d.ts +17 -0
  490. package/dist/tools/whoami.js +24 -0
  491. package/dist/tools/whoami.js.map +1 -0
  492. package/dist/tools/workspace-diagnostics.d.ts +62 -0
  493. package/dist/tools/workspace-diagnostics.js +421 -0
  494. package/dist/tools/workspace-diagnostics.js.map +1 -0
  495. package/dist/tools/workspace.d.ts +14 -0
  496. package/dist/tools/workspace.js +65 -0
  497. package/dist/tools/workspace.js.map +1 -0
  498. package/dist/tools/worktree.d.ts +70 -0
  499. package/dist/tools/worktree.js +150 -0
  500. package/dist/tools/worktree.js.map +1 -0
  501. package/dist/tui/interactions.d.ts +25 -0
  502. package/dist/tui/interactions.js +232 -0
  503. package/dist/tui/interactions.js.map +1 -0
  504. package/dist/tui/multiline-input.d.ts +14 -0
  505. package/dist/tui/multiline-input.js +550 -0
  506. package/dist/tui/multiline-input.js.map +1 -0
  507. package/dist/tui/paste.d.ts +40 -0
  508. package/dist/tui/paste.js +113 -0
  509. package/dist/tui/paste.js.map +1 -0
  510. package/dist/tui/prompt-reader.d.ts +26 -0
  511. package/dist/tui/prompt-reader.js +553 -0
  512. package/dist/tui/prompt-reader.js.map +1 -0
  513. package/dist/tui/transcript.d.ts +34 -0
  514. package/dist/tui/transcript.js +275 -0
  515. package/dist/tui/transcript.js.map +1 -0
  516. package/dist/tui.d.ts +53 -0
  517. package/dist/tui.js +669 -0
  518. package/dist/tui.js.map +1 -0
  519. package/dist/version.d.ts +1 -0
  520. package/dist/version.js +2 -0
  521. package/dist/version.js.map +1 -0
  522. package/dist/vim/lineEditor.d.ts +18 -0
  523. package/dist/vim/lineEditor.js +420 -0
  524. package/dist/vim/lineEditor.js.map +1 -0
  525. package/dist/web/panel-html.d.ts +1 -0
  526. package/dist/web/panel-html.js +532 -0
  527. package/dist/web/panel-html.js.map +1 -0
  528. package/dist/web/panel.d.ts +4 -0
  529. package/dist/web/panel.js +121 -0
  530. package/dist/web/panel.js.map +1 -0
  531. package/package.json +42 -0
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Notebook tools: NotebookEdit and NotebookRead.
3
+ * Jupyter notebook (.ipynb) cell manipulation and inspection.
4
+ */
5
+ export declare const NotebookReadInputSchema: {
6
+ type: string;
7
+ properties: {
8
+ notebook_path: {
9
+ type: string;
10
+ description: string;
11
+ };
12
+ max_cells: {
13
+ type: string;
14
+ description: string;
15
+ };
16
+ };
17
+ required: string[];
18
+ additionalProperties: boolean;
19
+ };
20
+ export declare const NotebookEditInputSchema: {
21
+ type: string;
22
+ properties: {
23
+ notebook_path: {
24
+ type: string;
25
+ description: string;
26
+ };
27
+ cell_number: {
28
+ type: string;
29
+ description: string;
30
+ };
31
+ new_source: {
32
+ type: string;
33
+ description: string;
34
+ };
35
+ cell_type: {
36
+ type: string;
37
+ enum: string[];
38
+ description: string;
39
+ };
40
+ edit_mode: {
41
+ type: string;
42
+ enum: string[];
43
+ description: string;
44
+ };
45
+ };
46
+ required: string[];
47
+ additionalProperties: boolean;
48
+ };
49
+ export interface NotebookEditInput {
50
+ notebookPath: string;
51
+ cellNumber?: number;
52
+ newSource: string;
53
+ cellType?: "code" | "markdown";
54
+ editMode: "replace" | "insert" | "delete";
55
+ }
56
+ export declare function parseNotebookEditInput(input: Record<string, unknown>): NotebookEditInput;
57
+ export declare function executeNotebookEdit(cwd: string, input: NotebookEditInput): string;
58
+ export interface NotebookReadInput {
59
+ notebookPath: string;
60
+ maxCells?: number;
61
+ }
62
+ export declare function parseNotebookReadInput(input: Record<string, unknown>): NotebookReadInput;
63
+ export declare function executeNotebookRead(cwd: string, input: NotebookReadInput): string;
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Notebook tools: NotebookEdit and NotebookRead.
3
+ * Jupyter notebook (.ipynb) cell manipulation and inspection.
4
+ */
5
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
6
+ import { resolveWorkspacePath } from "./workspace.js";
7
+ export const NotebookReadInputSchema = {
8
+ type: "object",
9
+ properties: {
10
+ notebook_path: { type: "string", description: "Absolute path to the .ipynb file" },
11
+ max_cells: { type: "number", description: "Max cells to display (default all)" }
12
+ },
13
+ required: ["notebook_path"],
14
+ additionalProperties: false
15
+ };
16
+ export const NotebookEditInputSchema = {
17
+ type: "object",
18
+ properties: {
19
+ notebook_path: { type: "string", description: "Absolute path to the .ipynb file" },
20
+ cell_number: { type: "number", description: "0-indexed cell number to edit" },
21
+ new_source: { type: "string", description: "New source content for the cell" },
22
+ cell_type: { type: "string", enum: ["code", "markdown"], description: "Cell type (required for insert)" },
23
+ edit_mode: { type: "string", enum: ["replace", "insert", "delete"], description: "Edit mode (default: replace)" }
24
+ },
25
+ required: ["notebook_path", "new_source"],
26
+ additionalProperties: false
27
+ };
28
+ export function parseNotebookEditInput(input) {
29
+ const notebookPath = input.notebook_path;
30
+ if (typeof notebookPath !== "string" || !notebookPath.trim()) {
31
+ throw new Error("notebook_path is required");
32
+ }
33
+ const newSource = input.new_source;
34
+ if (typeof newSource !== "string") {
35
+ throw new Error("new_source is required");
36
+ }
37
+ let editMode = "replace";
38
+ if (input.edit_mode !== undefined) {
39
+ if (input.edit_mode !== "replace" && input.edit_mode !== "insert" && input.edit_mode !== "delete") {
40
+ throw new Error("edit_mode must be replace, insert, or delete");
41
+ }
42
+ editMode = input.edit_mode;
43
+ }
44
+ let cellType;
45
+ if (input.cell_type !== undefined) {
46
+ if (input.cell_type !== "code" && input.cell_type !== "markdown") {
47
+ throw new Error("cell_type must be code or markdown");
48
+ }
49
+ cellType = input.cell_type;
50
+ }
51
+ return {
52
+ notebookPath: notebookPath.trim(),
53
+ cellNumber: typeof input.cell_number === "number" ? input.cell_number : undefined,
54
+ newSource,
55
+ cellType,
56
+ editMode
57
+ };
58
+ }
59
+ export function executeNotebookEdit(cwd, input) {
60
+ const resolved = resolveWorkspacePath(cwd, input.notebookPath);
61
+ if (!existsSync(resolved.absolutePath)) {
62
+ throw new Error(`Notebook not found: ${resolved.relativePath}`);
63
+ }
64
+ if (!resolved.absolutePath.endsWith(".ipynb")) {
65
+ throw new Error("File must be a .ipynb notebook");
66
+ }
67
+ const raw = readFileSync(resolved.absolutePath, "utf8");
68
+ const notebook = JSON.parse(raw);
69
+ if (!notebook.cells || !Array.isArray(notebook.cells)) {
70
+ throw new Error("Invalid notebook format: missing cells array");
71
+ }
72
+ const cellIndex = input.cellNumber ?? 0;
73
+ if (input.editMode === "delete") {
74
+ if (cellIndex < 0 || cellIndex >= notebook.cells.length) {
75
+ throw new Error(`Cell index ${cellIndex} out of range (0-${notebook.cells.length - 1})`);
76
+ }
77
+ notebook.cells.splice(cellIndex, 1);
78
+ writeFileSync(resolved.absolutePath, JSON.stringify(notebook, null, 1) + "\n", "utf8");
79
+ return `Deleted cell ${cellIndex} from ${resolved.relativePath} (${notebook.cells.length} cells remaining)`;
80
+ }
81
+ if (input.editMode === "insert") {
82
+ if (!input.cellType) {
83
+ throw new Error("cell_type is required for insert mode");
84
+ }
85
+ const newCell = createCell(input.cellType, input.newSource);
86
+ const insertAt = Math.min(cellIndex, notebook.cells.length);
87
+ notebook.cells.splice(insertAt, 0, newCell);
88
+ writeFileSync(resolved.absolutePath, JSON.stringify(notebook, null, 1) + "\n", "utf8");
89
+ return `Inserted ${input.cellType} cell at index ${insertAt} in ${resolved.relativePath} (${notebook.cells.length} cells)`;
90
+ }
91
+ // replace
92
+ if (cellIndex < 0 || cellIndex >= notebook.cells.length) {
93
+ throw new Error(`Cell index ${cellIndex} out of range (0-${notebook.cells.length - 1})`);
94
+ }
95
+ const cell = notebook.cells[cellIndex];
96
+ cell.source = input.newSource.split("\n").map((line, i, arr) => i < arr.length - 1 ? line + "\n" : line);
97
+ if (input.cellType) {
98
+ cell.cell_type = input.cellType;
99
+ }
100
+ writeFileSync(resolved.absolutePath, JSON.stringify(notebook, null, 1) + "\n", "utf8");
101
+ return `Replaced cell ${cellIndex} in ${resolved.relativePath} (${input.cellType ?? cell.cell_type})`;
102
+ }
103
+ function createCell(cellType, source) {
104
+ const sourceLines = source.split("\n").map((line, i, arr) => i < arr.length - 1 ? line + "\n" : line);
105
+ if (cellType === "code") {
106
+ return {
107
+ cell_type: "code",
108
+ execution_count: null,
109
+ metadata: {},
110
+ outputs: [],
111
+ source: sourceLines
112
+ };
113
+ }
114
+ return {
115
+ cell_type: "markdown",
116
+ metadata: {},
117
+ source: sourceLines
118
+ };
119
+ }
120
+ export function parseNotebookReadInput(input) {
121
+ const notebookPath = input.notebook_path;
122
+ if (typeof notebookPath !== "string" || !notebookPath.trim()) {
123
+ throw new Error("notebook_path is required");
124
+ }
125
+ return {
126
+ notebookPath: notebookPath.trim(),
127
+ maxCells: typeof input.max_cells === "number" && input.max_cells > 0 ? input.max_cells : undefined
128
+ };
129
+ }
130
+ export function executeNotebookRead(cwd, input) {
131
+ const resolved = resolveWorkspacePath(cwd, input.notebookPath);
132
+ if (!existsSync(resolved.absolutePath)) {
133
+ throw new Error(`Notebook not found: ${resolved.relativePath}`);
134
+ }
135
+ if (!resolved.absolutePath.endsWith(".ipynb")) {
136
+ throw new Error("File must be a .ipynb notebook");
137
+ }
138
+ const raw = readFileSync(resolved.absolutePath, "utf8");
139
+ const notebook = JSON.parse(raw);
140
+ if (!notebook.cells || !Array.isArray(notebook.cells)) {
141
+ throw new Error("Invalid notebook format: missing cells array");
142
+ }
143
+ const cells = input.maxCells ? notebook.cells.slice(0, input.maxCells) : notebook.cells;
144
+ const output = [`Notebook: ${resolved.relativePath}`];
145
+ output.push(`Cells: ${notebook.cells.length} total${input.maxCells ? ` (showing first ${input.maxCells})` : ""}`);
146
+ output.push("");
147
+ for (let i = 0; i < cells.length; i++) {
148
+ const cell = cells[i];
149
+ const cellType = cell.cell_type ?? "unknown";
150
+ const source = Array.isArray(cell.source) ? cell.source.join("") : (typeof cell.source === "string" ? cell.source : "");
151
+ const execCount = cell.execution_count != null ? ` [exec: ${cell.execution_count}]` : "";
152
+ output.push(`--- Cell ${i} (${cellType})${execCount} ---`);
153
+ output.push(source || "(empty)");
154
+ output.push("");
155
+ }
156
+ return output.join("\n");
157
+ }
158
+ //# sourceMappingURL=notebook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook.js","sourceRoot":"","sources":["../../src/tools/notebook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Planning mode tools: EnterPlanMode and ExitPlanMode.
3
+ *
4
+ * EnterPlanMode switches the agent into a read-only exploration mode where
5
+ * mutations are blocked. The agent explores the codebase and designs a plan.
6
+ *
7
+ * ExitPlanMode signals that the plan is ready for user approval.
8
+ * The plan content is returned to the user for review.
9
+ */
10
+ export interface PlanModeState {
11
+ active: boolean;
12
+ planContent?: string;
13
+ enteredAt?: string;
14
+ }
15
+ export declare const EnterPlanModeInputSchema: {
16
+ type: string;
17
+ properties: {
18
+ reason: {
19
+ type: string;
20
+ description: string;
21
+ };
22
+ };
23
+ required: never[];
24
+ additionalProperties: boolean;
25
+ };
26
+ export declare const ExitPlanModeInputSchema: {
27
+ type: string;
28
+ properties: {
29
+ plan: {
30
+ type: string;
31
+ description: string;
32
+ };
33
+ };
34
+ required: string[];
35
+ additionalProperties: boolean;
36
+ };
37
+ export declare function parseEnterPlanModeInput(input: Record<string, unknown>): {
38
+ reason?: string;
39
+ };
40
+ export declare function parseExitPlanModeInput(input: Record<string, unknown>): {
41
+ plan: string;
42
+ };
43
+ export declare function formatEnterPlanModeResult(input: {
44
+ reason?: string;
45
+ }): string;
46
+ export declare function formatExitPlanModeResult(input: {
47
+ plan: string;
48
+ }): string;
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Planning mode tools: EnterPlanMode and ExitPlanMode.
3
+ *
4
+ * EnterPlanMode switches the agent into a read-only exploration mode where
5
+ * mutations are blocked. The agent explores the codebase and designs a plan.
6
+ *
7
+ * ExitPlanMode signals that the plan is ready for user approval.
8
+ * The plan content is returned to the user for review.
9
+ */
10
+ export const EnterPlanModeInputSchema = {
11
+ type: "object",
12
+ properties: {
13
+ reason: { type: "string", description: "Why planning is needed before implementation" }
14
+ },
15
+ required: [],
16
+ additionalProperties: false
17
+ };
18
+ export const ExitPlanModeInputSchema = {
19
+ type: "object",
20
+ properties: {
21
+ plan: { type: "string", description: "The implementation plan for user approval" }
22
+ },
23
+ required: ["plan"],
24
+ additionalProperties: false
25
+ };
26
+ export function parseEnterPlanModeInput(input) {
27
+ return {
28
+ reason: typeof input.reason === "string" ? input.reason.trim() || undefined : undefined
29
+ };
30
+ }
31
+ export function parseExitPlanModeInput(input) {
32
+ const plan = input.plan;
33
+ if (typeof plan !== "string" || !plan.trim()) {
34
+ throw new Error("ExitPlanMode requires a non-empty plan");
35
+ }
36
+ return { plan: plan.trim() };
37
+ }
38
+ export function formatEnterPlanModeResult(input) {
39
+ return [
40
+ "Entered plan mode. Mutations are blocked until the plan is approved.",
41
+ "Use read-only tools (FileRead, Grep, Glob, GitLog, etc.) to explore the codebase.",
42
+ "When ready, call ExitPlanMode with your implementation plan.",
43
+ input.reason ? `\nReason: ${input.reason}` : ""
44
+ ].filter(Boolean).join("\n");
45
+ }
46
+ export function formatExitPlanModeResult(input) {
47
+ return [
48
+ "Plan submitted for user approval.",
49
+ "",
50
+ "---",
51
+ input.plan,
52
+ "---",
53
+ "",
54
+ "Waiting for user to approve or provide feedback."
55
+ ].join("\n");
56
+ }
57
+ //# sourceMappingURL=plan-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-mode.js","sourceRoot":"","sources":["../../src/tools/plan-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8CAA8C,EAAE;KACxF;IACD,QAAQ,EAAE,EAAE;IACZ,oBAAoB,EAAE,KAAK;CACM,CAAC;AAEpC,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;KACnF;IACD,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,oBAAoB,EAAE,KAAK;CACM,CAAC;AAEpC,MAAM,UAAU,uBAAuB,CAAC,KAA8B;IACpE,OAAO;QACL,MAAM,EAAE,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS;KACxF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAA8B;IACnE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAA0B;IAClE,OAAO;QACL,sEAAsE;QACtE,mFAAmF;QACnF,8DAA8D;QAC9D,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;KAChD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAuB;IAC9D,OAAO;QACL,mCAAmC;QACnC,EAAE;QACF,KAAK;QACL,KAAK,CAAC,IAAI;QACV,KAAK;QACL,EAAE;QACF,kDAAkD;KACnD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,35 @@
1
+ export interface ProcessInfo {
2
+ pid: number;
3
+ name: string;
4
+ cpuPercent: string;
5
+ memPercent: string;
6
+ state: string;
7
+ }
8
+ export declare const ProcessListInputSchema: {
9
+ type: string;
10
+ properties: {
11
+ filter: {
12
+ type: string;
13
+ };
14
+ sort_by: {
15
+ type: string;
16
+ enum: string[];
17
+ };
18
+ limit: {
19
+ type: string;
20
+ };
21
+ };
22
+ required: never[];
23
+ additionalProperties: boolean;
24
+ };
25
+ export declare function parseProcessListInput(input: Record<string, unknown>): {
26
+ filter?: string;
27
+ sortBy: string;
28
+ limit: number;
29
+ };
30
+ export declare function executeProcessList(input: {
31
+ filter?: string;
32
+ sortBy: string;
33
+ limit: number;
34
+ }): ProcessInfo[];
35
+ export declare function formatProcessListResult(processes: ProcessInfo[]): string;
@@ -0,0 +1,42 @@
1
+ import { execSync } from "node:child_process";
2
+ import os from "node:os";
3
+ export const ProcessListInputSchema = { type: "object", properties: { filter: { type: "string" }, sort_by: { type: "string", enum: ["cpu", "mem", "pid", "name"] }, limit: { type: "number" } }, required: [], additionalProperties: false };
4
+ export function parseProcessListInput(input) {
5
+ return {
6
+ filter: typeof input.filter === "string" ? input.filter : undefined,
7
+ sortBy: input.sort_by === "cpu" ? "cpu" : input.sort_by === "mem" ? "mem" : input.sort_by === "pid" ? "pid" : "cpu",
8
+ limit: typeof input.limit === "number" ? Math.min(input.limit, 100) : 20
9
+ };
10
+ }
11
+ export function executeProcessList(input) {
12
+ // macOS uses -r for reverse CPU sort, Linux uses --sort=-%cpu
13
+ const isMac = os.platform() === "darwin";
14
+ const sortFlag = isMac
15
+ ? (input.sortBy === "mem" ? "-m" : input.sortBy === "pid" ? "" : "-r")
16
+ : `--sort=-${input.sortBy === "mem" ? "%mem" : input.sortBy === "pid" ? "pid" : "%cpu"}`;
17
+ const sortPart = sortFlag ? ` ${sortFlag}` : "";
18
+ const filter = input.filter ? ` | awk 'tolower($0) ~ /${input.filter.toLowerCase().replace(/[^a-z0-9]/g, "")}/'` : "";
19
+ const raw = execSync(`ps aux${sortPart}${filter}`, { encoding: "utf8", timeout: 5000 });
20
+ const lines = raw.trim().split("\n");
21
+ // Skip header, take limit
22
+ const dataLines = lines.slice(1, input.limit + 1);
23
+ return dataLines.map(line => {
24
+ const parts = line.split(/\s+/);
25
+ const pid = parseInt(parts[1] ?? "0", 10);
26
+ const cpu = parts[2] ?? "0";
27
+ const mem = parts[3] ?? "0";
28
+ const state = parts[7] ?? "?";
29
+ const name = parts.slice(10).join(" ") || "unknown";
30
+ return { pid, name, cpuPercent: cpu, memPercent: mem, state };
31
+ });
32
+ }
33
+ export function formatProcessListResult(processes) {
34
+ if (processes.length === 0)
35
+ return "No matching processes";
36
+ const lines = ["PID CPU% MEM% NAME"];
37
+ for (const p of processes) {
38
+ lines.push(`${String(p.pid).padEnd(8)} ${p.cpuPercent.padEnd(5)} ${p.memPercent.padEnd(5)} ${p.name.slice(0, 60)}`);
39
+ }
40
+ return lines.join("\n");
41
+ }
42
+ //# sourceMappingURL=process-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-list.js","sourceRoot":"","sources":["../../src/tools/process-list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ import { MagiMessage, MagiToolDefinition, MagiToolUsePart } from "../providers/ir.js";
2
+ import { UserMessageSink } from "./user-message.js";
3
+ import { UserQuestionResolver } from "./user-question.js";
4
+ import { WebSearchConfig } from "../config.js";
5
+ export type ToolPermissionMode = "default" | "acceptEdits" | "bypassPermissions" | "plan";
6
+ export type ToolPermissionDecision = "allow" | "ask" | "deny";
7
+ export interface ToolPermissionRules {
8
+ allow: string[];
9
+ ask: string[];
10
+ deny: string[];
11
+ }
12
+ export interface ToolPermissionResult {
13
+ decision: ToolPermissionDecision;
14
+ reason: string;
15
+ diff?: string;
16
+ }
17
+ export interface RegisteredTool {
18
+ name: string;
19
+ description?: string;
20
+ category?: string;
21
+ tags?: string[];
22
+ inputSchema: Record<string, unknown>;
23
+ call(input: Record<string, unknown>, context: ToolExecutionContext): Promise<string> | string;
24
+ isReadOnly(input: Record<string, unknown>): boolean;
25
+ isDestructive(input: Record<string, unknown>): boolean;
26
+ isConcurrencySafe(input: Record<string, unknown>): boolean;
27
+ checkPermissions?(input: Record<string, unknown>, context: ToolExecutionContext): ToolPermissionResult | undefined;
28
+ }
29
+ export interface SubAgentRequest {
30
+ prompt: string;
31
+ description: string;
32
+ subagentType: string;
33
+ runInBackground: boolean;
34
+ /** Optional peer name or URL to dispatch the sub-agent to. */
35
+ target?: string;
36
+ }
37
+ export interface SubAgentResult {
38
+ agentId: string;
39
+ status: "completed" | "running" | "failed";
40
+ result?: string;
41
+ error?: string;
42
+ }
43
+ export interface ToolExecutionContext {
44
+ cwd: string;
45
+ env?: NodeJS.ProcessEnv;
46
+ permissionMode: ToolPermissionMode;
47
+ rules?: ToolPermissionRules;
48
+ outputRoot?: string;
49
+ stateRoot?: string;
50
+ sessionId?: string;
51
+ webSearchConfig?: WebSearchConfig;
52
+ promptModel?: (request: {
53
+ messages: MagiMessage[];
54
+ }) => Promise<{
55
+ text: string;
56
+ }>;
57
+ userQuestionResolver?: UserQuestionResolver;
58
+ userMessageSink?: UserMessageSink;
59
+ toolUse?: MagiToolUsePart;
60
+ spawnSubAgent?: (request: SubAgentRequest) => Promise<SubAgentResult>;
61
+ signal?: AbortSignal;
62
+ }
63
+ export interface RegisteredToolResult {
64
+ toolCallId: string;
65
+ toolName: string;
66
+ content: string;
67
+ isError?: boolean;
68
+ permission?: ToolPermissionResult;
69
+ }
70
+ export declare function getBuiltinToolRegistry(): Map<string, RegisteredTool>;
71
+ export declare function getBuiltinToolDefinitions(): MagiToolDefinition[];
72
+ export declare function executeRegisteredTool(input: {
73
+ cwd: string;
74
+ toolUse: MagiToolUsePart;
75
+ env?: NodeJS.ProcessEnv;
76
+ permissionMode?: ToolPermissionMode;
77
+ rules?: ToolPermissionRules;
78
+ outputRoot?: string;
79
+ stateRoot?: string;
80
+ sessionId?: string;
81
+ webSearchConfig?: WebSearchConfig;
82
+ promptModel?: (request: {
83
+ messages: MagiMessage[];
84
+ }) => Promise<{
85
+ text: string;
86
+ }>;
87
+ userQuestionResolver?: UserQuestionResolver;
88
+ userMessageSink?: UserMessageSink;
89
+ spawnSubAgent?: (request: SubAgentRequest) => Promise<SubAgentResult>;
90
+ approvalResolver?: (request: {
91
+ toolUse: MagiToolUsePart;
92
+ permission: ToolPermissionResult;
93
+ }) => Promise<boolean> | boolean;
94
+ signal?: AbortSignal;
95
+ }): Promise<RegisteredToolResult>;
96
+ export declare function executeRegisteredTools(input: {
97
+ cwd: string;
98
+ toolUses: MagiToolUsePart[];
99
+ env?: NodeJS.ProcessEnv;
100
+ permissionMode?: ToolPermissionMode;
101
+ rules?: ToolPermissionRules;
102
+ outputRoot?: string;
103
+ stateRoot?: string;
104
+ sessionId?: string;
105
+ webSearchConfig?: WebSearchConfig;
106
+ promptModel?: (request: {
107
+ messages: MagiMessage[];
108
+ }) => Promise<{
109
+ text: string;
110
+ }>;
111
+ userQuestionResolver?: UserQuestionResolver;
112
+ userMessageSink?: UserMessageSink;
113
+ spawnSubAgent?: (request: SubAgentRequest) => Promise<SubAgentResult>;
114
+ approvalResolver?: (request: {
115
+ toolUse: MagiToolUsePart;
116
+ permission: ToolPermissionResult;
117
+ }) => Promise<boolean> | boolean;
118
+ signal?: AbortSignal;
119
+ }): Promise<RegisteredToolResult[]>;
120
+ export declare function checkToolPermission(input: {
121
+ toolUse: MagiToolUsePart;
122
+ mode: ToolPermissionMode;
123
+ rules?: ToolPermissionRules;
124
+ env?: NodeJS.ProcessEnv;
125
+ tool?: RegisteredTool;
126
+ }): ToolPermissionResult;
127
+ export declare function formatToolResult(input: {
128
+ content: string;
129
+ outputRoot?: string;
130
+ maxChars?: number;
131
+ previewChars?: number;
132
+ }): string;