@aigne/afs-cli 1.11.0-beta.1 → 1.11.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/README.md +262 -15
  2. package/dist/_virtual/rolldown_runtime.cjs +29 -0
  3. package/dist/_virtual/rolldown_runtime.mjs +7 -0
  4. package/dist/cli.cjs +40 -0
  5. package/dist/cli.d.cts +2 -0
  6. package/dist/cli.d.mts +2 -1
  7. package/dist/cli.mjs +36 -24
  8. package/dist/cli.mjs.map +1 -0
  9. package/dist/config/afs-loader.cjs +578 -0
  10. package/dist/config/afs-loader.d.cts +19 -0
  11. package/dist/config/afs-loader.d.cts.map +1 -0
  12. package/dist/config/afs-loader.d.mts +19 -0
  13. package/dist/config/afs-loader.d.mts.map +1 -0
  14. package/dist/config/afs-loader.mjs +576 -0
  15. package/dist/config/afs-loader.mjs.map +1 -0
  16. package/dist/config/env.cjs +46 -0
  17. package/dist/config/env.mjs +46 -0
  18. package/dist/config/env.mjs.map +1 -0
  19. package/dist/config/loader.cjs +219 -0
  20. package/dist/config/loader.mjs +217 -0
  21. package/dist/config/loader.mjs.map +1 -0
  22. package/dist/config/mount-commands.cjs +226 -0
  23. package/dist/config/mount-commands.d.cts +14 -0
  24. package/dist/config/mount-commands.d.cts.map +1 -0
  25. package/dist/config/mount-commands.d.mts +14 -0
  26. package/dist/config/mount-commands.d.mts.map +1 -0
  27. package/dist/config/mount-commands.mjs +220 -0
  28. package/dist/config/mount-commands.mjs.map +1 -0
  29. package/dist/config/schema.cjs +99 -0
  30. package/dist/config/schema.mjs +98 -0
  31. package/dist/config/schema.mjs.map +1 -0
  32. package/dist/core/commands/delete.cjs +41 -0
  33. package/dist/core/commands/delete.d.cts +18 -0
  34. package/dist/core/commands/delete.d.cts.map +1 -0
  35. package/dist/core/commands/delete.d.mts +18 -0
  36. package/dist/core/commands/delete.d.mts.map +1 -0
  37. package/dist/core/commands/delete.mjs +42 -0
  38. package/dist/core/commands/delete.mjs.map +1 -0
  39. package/dist/core/commands/exec.cjs +98 -0
  40. package/dist/core/commands/exec.d.cts +26 -0
  41. package/dist/core/commands/exec.d.cts.map +1 -0
  42. package/dist/core/commands/exec.d.mts +26 -0
  43. package/dist/core/commands/exec.d.mts.map +1 -0
  44. package/dist/core/commands/exec.mjs +99 -0
  45. package/dist/core/commands/exec.mjs.map +1 -0
  46. package/dist/core/commands/explain.cjs +278 -0
  47. package/dist/core/commands/explain.d.cts +25 -0
  48. package/dist/core/commands/explain.d.cts.map +1 -0
  49. package/dist/core/commands/explain.d.mts +25 -0
  50. package/dist/core/commands/explain.d.mts.map +1 -0
  51. package/dist/core/commands/explain.mjs +279 -0
  52. package/dist/core/commands/explain.mjs.map +1 -0
  53. package/dist/core/commands/explore.cjs +30 -0
  54. package/dist/core/commands/explore.d.mts +2 -0
  55. package/dist/core/commands/explore.mjs +31 -0
  56. package/dist/core/commands/explore.mjs.map +1 -0
  57. package/dist/core/commands/index.cjs +36 -0
  58. package/dist/core/commands/index.d.cts +21 -0
  59. package/dist/core/commands/index.d.cts.map +1 -0
  60. package/dist/core/commands/index.d.mts +24 -0
  61. package/dist/core/commands/index.d.mts.map +1 -0
  62. package/dist/core/commands/index.mjs +37 -0
  63. package/dist/core/commands/index.mjs.map +1 -0
  64. package/dist/core/commands/ls.cjs +57 -0
  65. package/dist/core/commands/ls.d.cts +21 -0
  66. package/dist/core/commands/ls.d.cts.map +1 -0
  67. package/dist/core/commands/ls.d.mts +21 -0
  68. package/dist/core/commands/ls.d.mts.map +1 -0
  69. package/dist/core/commands/ls.mjs +58 -0
  70. package/dist/core/commands/ls.mjs.map +1 -0
  71. package/dist/core/commands/mount.cjs +222 -0
  72. package/dist/core/commands/mount.d.cts +35 -0
  73. package/dist/core/commands/mount.d.cts.map +1 -0
  74. package/dist/core/commands/mount.d.mts +35 -0
  75. package/dist/core/commands/mount.d.mts.map +1 -0
  76. package/dist/core/commands/mount.mjs +223 -0
  77. package/dist/core/commands/mount.mjs.map +1 -0
  78. package/dist/core/commands/read.cjs +48 -0
  79. package/dist/core/commands/read.d.cts +17 -0
  80. package/dist/core/commands/read.d.cts.map +1 -0
  81. package/dist/core/commands/read.d.mts +17 -0
  82. package/dist/core/commands/read.d.mts.map +1 -0
  83. package/dist/core/commands/read.mjs +49 -0
  84. package/dist/core/commands/read.mjs.map +1 -0
  85. package/dist/core/commands/search.cjs +40 -0
  86. package/dist/core/commands/search.d.mts +2 -0
  87. package/dist/core/commands/search.mjs +41 -0
  88. package/dist/core/commands/search.mjs.map +1 -0
  89. package/dist/core/commands/serve.cjs +267 -0
  90. package/dist/core/commands/serve.d.mts +2 -0
  91. package/dist/core/commands/serve.mjs +267 -0
  92. package/dist/core/commands/serve.mjs.map +1 -0
  93. package/dist/core/commands/stat.cjs +53 -0
  94. package/dist/core/commands/stat.d.cts +17 -0
  95. package/dist/core/commands/stat.d.cts.map +1 -0
  96. package/dist/core/commands/stat.d.mts +17 -0
  97. package/dist/core/commands/stat.d.mts.map +1 -0
  98. package/dist/core/commands/stat.mjs +54 -0
  99. package/dist/core/commands/stat.mjs.map +1 -0
  100. package/dist/core/commands/types.cjs +18 -0
  101. package/dist/core/commands/types.d.cts +54 -0
  102. package/dist/core/commands/types.d.cts.map +1 -0
  103. package/dist/core/commands/types.d.mts +54 -0
  104. package/dist/core/commands/types.d.mts.map +1 -0
  105. package/dist/core/commands/types.mjs +19 -0
  106. package/dist/core/commands/types.mjs.map +1 -0
  107. package/dist/core/commands/write.cjs +70 -0
  108. package/dist/core/commands/write.d.cts +20 -0
  109. package/dist/core/commands/write.d.cts.map +1 -0
  110. package/dist/core/commands/write.d.mts +20 -0
  111. package/dist/core/commands/write.d.mts.map +1 -0
  112. package/dist/core/commands/write.mjs +71 -0
  113. package/dist/core/commands/write.mjs.map +1 -0
  114. package/dist/core/executor/index.cjs +196 -0
  115. package/dist/core/executor/index.d.cts +77 -0
  116. package/dist/core/executor/index.d.cts.map +1 -0
  117. package/dist/core/executor/index.d.mts +77 -0
  118. package/dist/core/executor/index.d.mts.map +1 -0
  119. package/dist/core/executor/index.mjs +195 -0
  120. package/dist/core/executor/index.mjs.map +1 -0
  121. package/dist/core/formatters/delete.cjs +37 -0
  122. package/dist/core/formatters/delete.d.cts +18 -0
  123. package/dist/core/formatters/delete.d.cts.map +1 -0
  124. package/dist/core/formatters/delete.d.mts +18 -0
  125. package/dist/core/formatters/delete.d.mts.map +1 -0
  126. package/dist/core/formatters/delete.mjs +37 -0
  127. package/dist/core/formatters/delete.mjs.map +1 -0
  128. package/dist/core/formatters/exec.cjs +60 -0
  129. package/dist/core/formatters/exec.d.cts +18 -0
  130. package/dist/core/formatters/exec.d.cts.map +1 -0
  131. package/dist/core/formatters/exec.d.mts +18 -0
  132. package/dist/core/formatters/exec.d.mts.map +1 -0
  133. package/dist/core/formatters/exec.mjs +60 -0
  134. package/dist/core/formatters/exec.mjs.map +1 -0
  135. package/dist/core/formatters/explain.cjs +99 -0
  136. package/dist/core/formatters/explain.d.cts +11 -0
  137. package/dist/core/formatters/explain.d.cts.map +1 -0
  138. package/dist/core/formatters/explain.d.mts +11 -0
  139. package/dist/core/formatters/explain.d.mts.map +1 -0
  140. package/dist/core/formatters/explain.mjs +98 -0
  141. package/dist/core/formatters/explain.mjs.map +1 -0
  142. package/dist/core/formatters/index.d.mts +9 -0
  143. package/dist/core/formatters/ls.cjs +179 -0
  144. package/dist/core/formatters/ls.d.cts +20 -0
  145. package/dist/core/formatters/ls.d.cts.map +1 -0
  146. package/dist/core/formatters/ls.d.mts +20 -0
  147. package/dist/core/formatters/ls.d.mts.map +1 -0
  148. package/dist/core/formatters/ls.mjs +179 -0
  149. package/dist/core/formatters/ls.mjs.map +1 -0
  150. package/dist/core/formatters/mount.cjs +55 -0
  151. package/dist/core/formatters/mount.d.cts +15 -0
  152. package/dist/core/formatters/mount.d.cts.map +1 -0
  153. package/dist/core/formatters/mount.d.mts +15 -0
  154. package/dist/core/formatters/mount.d.mts.map +1 -0
  155. package/dist/core/formatters/mount.mjs +55 -0
  156. package/dist/core/formatters/mount.mjs.map +1 -0
  157. package/dist/core/formatters/read.cjs +100 -0
  158. package/dist/core/formatters/read.d.cts +22 -0
  159. package/dist/core/formatters/read.d.cts.map +1 -0
  160. package/dist/core/formatters/read.d.mts +22 -0
  161. package/dist/core/formatters/read.d.mts.map +1 -0
  162. package/dist/core/formatters/read.mjs +100 -0
  163. package/dist/core/formatters/read.mjs.map +1 -0
  164. package/dist/core/formatters/search.cjs +44 -0
  165. package/dist/core/formatters/search.d.mts +1 -0
  166. package/dist/core/formatters/search.mjs +44 -0
  167. package/dist/core/formatters/search.mjs.map +1 -0
  168. package/dist/core/formatters/stat.cjs +155 -0
  169. package/dist/core/formatters/stat.d.cts +15 -0
  170. package/dist/core/formatters/stat.d.cts.map +1 -0
  171. package/dist/core/formatters/stat.d.mts +15 -0
  172. package/dist/core/formatters/stat.d.mts.map +1 -0
  173. package/dist/core/formatters/stat.mjs +155 -0
  174. package/dist/core/formatters/stat.mjs.map +1 -0
  175. package/dist/core/formatters/write.cjs +51 -0
  176. package/dist/core/formatters/write.d.cts +22 -0
  177. package/dist/core/formatters/write.d.cts.map +1 -0
  178. package/dist/core/formatters/write.d.mts +22 -0
  179. package/dist/core/formatters/write.d.mts.map +1 -0
  180. package/dist/core/formatters/write.mjs +51 -0
  181. package/dist/core/formatters/write.mjs.map +1 -0
  182. package/dist/core/helpers/exec-args.cjs +142 -0
  183. package/dist/core/helpers/exec-args.d.cts +46 -0
  184. package/dist/core/helpers/exec-args.d.cts.map +1 -0
  185. package/dist/core/helpers/exec-args.d.mts +46 -0
  186. package/dist/core/helpers/exec-args.d.mts.map +1 -0
  187. package/dist/core/helpers/exec-args.mjs +139 -0
  188. package/dist/core/helpers/exec-args.mjs.map +1 -0
  189. package/dist/core/helpers/stdin.cjs +41 -0
  190. package/dist/core/helpers/stdin.d.cts +15 -0
  191. package/dist/core/helpers/stdin.d.cts.map +1 -0
  192. package/dist/core/helpers/stdin.d.mts +15 -0
  193. package/dist/core/helpers/stdin.d.mts.map +1 -0
  194. package/dist/core/helpers/stdin.mjs +41 -0
  195. package/dist/core/helpers/stdin.mjs.map +1 -0
  196. package/dist/core/index.cjs +49 -0
  197. package/dist/core/index.d.cts +24 -0
  198. package/dist/core/index.d.mts +25 -0
  199. package/dist/core/index.mjs +24 -0
  200. package/dist/core/path-utils.cjs +1 -0
  201. package/dist/core/path-utils.mjs +3 -0
  202. package/dist/core/types.d.cts +24 -0
  203. package/dist/core/types.d.cts.map +1 -0
  204. package/dist/core/types.d.mts +24 -0
  205. package/dist/core/types.d.mts.map +1 -0
  206. package/dist/credential/auth-server.cjs +247 -0
  207. package/dist/credential/auth-server.mjs +247 -0
  208. package/dist/credential/auth-server.mjs.map +1 -0
  209. package/dist/credential/cli-auth-context.cjs +86 -0
  210. package/dist/credential/cli-auth-context.d.mts +1 -0
  211. package/dist/credential/cli-auth-context.mjs +86 -0
  212. package/dist/credential/cli-auth-context.mjs.map +1 -0
  213. package/dist/credential/index.cjs +5 -0
  214. package/dist/credential/index.d.mts +4 -0
  215. package/dist/credential/index.mjs +7 -0
  216. package/dist/credential/mcp-auth-context.cjs +186 -0
  217. package/dist/credential/mcp-auth-context.d.mts +1 -0
  218. package/dist/credential/mcp-auth-context.mjs +186 -0
  219. package/dist/credential/mcp-auth-context.mjs.map +1 -0
  220. package/dist/credential/resolver.cjs +127 -0
  221. package/dist/credential/resolver.d.mts +1 -0
  222. package/dist/credential/resolver.mjs +127 -0
  223. package/dist/credential/resolver.mjs.map +1 -0
  224. package/dist/credential/store.cjs +106 -0
  225. package/dist/credential/store.d.cts +30 -0
  226. package/dist/credential/store.d.cts.map +1 -0
  227. package/dist/credential/store.d.mts +30 -0
  228. package/dist/credential/store.d.mts.map +1 -0
  229. package/dist/credential/store.mjs +106 -0
  230. package/dist/credential/store.mjs.map +1 -0
  231. package/dist/errors.cjs +18 -0
  232. package/dist/errors.mjs +18 -0
  233. package/dist/errors.mjs.map +1 -0
  234. package/dist/explorer/actions.cjs +311 -0
  235. package/dist/explorer/actions.mjs +305 -0
  236. package/dist/explorer/actions.mjs.map +1 -0
  237. package/dist/explorer/components/dialog.cjs +508 -0
  238. package/dist/explorer/components/dialog.mjs +509 -0
  239. package/dist/explorer/components/dialog.mjs.map +1 -0
  240. package/dist/explorer/components/file-list.cjs +107 -0
  241. package/dist/explorer/components/file-list.mjs +107 -0
  242. package/dist/explorer/components/file-list.mjs.map +1 -0
  243. package/dist/explorer/components/function-bar.cjs +55 -0
  244. package/dist/explorer/components/function-bar.mjs +55 -0
  245. package/dist/explorer/components/function-bar.mjs.map +1 -0
  246. package/dist/explorer/components/index.cjs +5 -0
  247. package/dist/explorer/components/index.mjs +7 -0
  248. package/dist/explorer/components/metadata-panel.cjs +219 -0
  249. package/dist/explorer/components/metadata-panel.mjs +219 -0
  250. package/dist/explorer/components/metadata-panel.mjs.map +1 -0
  251. package/dist/explorer/components/status-bar.cjs +53 -0
  252. package/dist/explorer/components/status-bar.mjs +54 -0
  253. package/dist/explorer/components/status-bar.mjs.map +1 -0
  254. package/dist/explorer/keybindings.cjs +214 -0
  255. package/dist/explorer/keybindings.mjs +213 -0
  256. package/dist/explorer/keybindings.mjs.map +1 -0
  257. package/dist/explorer/screen.cjs +251 -0
  258. package/dist/explorer/screen.d.cts +23 -0
  259. package/dist/explorer/screen.d.cts.map +1 -0
  260. package/dist/explorer/screen.d.mts +23 -0
  261. package/dist/explorer/screen.d.mts.map +1 -0
  262. package/dist/explorer/screen.mjs +250 -0
  263. package/dist/explorer/screen.mjs.map +1 -0
  264. package/dist/explorer/state.cjs +53 -0
  265. package/dist/explorer/state.mjs +53 -0
  266. package/dist/explorer/state.mjs.map +1 -0
  267. package/dist/explorer/theme.cjs +160 -0
  268. package/dist/explorer/theme.mjs +157 -0
  269. package/dist/explorer/theme.mjs.map +1 -0
  270. package/dist/index.cjs +12 -0
  271. package/dist/index.d.cts +6 -0
  272. package/dist/index.d.mts +7 -4
  273. package/dist/index.mjs +7 -2
  274. package/dist/mcp/http-transport.cjs +87 -0
  275. package/dist/mcp/http-transport.mjs +87 -0
  276. package/dist/mcp/http-transport.mjs.map +1 -0
  277. package/dist/mcp/prompts.cjs +48 -0
  278. package/dist/mcp/prompts.mjs +48 -0
  279. package/dist/mcp/prompts.mjs.map +1 -0
  280. package/dist/mcp/resources.cjs +25 -0
  281. package/dist/mcp/resources.mjs +25 -0
  282. package/dist/mcp/resources.mjs.map +1 -0
  283. package/dist/mcp/server.cjs +74 -0
  284. package/dist/mcp/server.mjs +73 -0
  285. package/dist/mcp/server.mjs.map +1 -0
  286. package/dist/mcp/tools.cjs +152 -0
  287. package/dist/mcp/tools.mjs +152 -0
  288. package/dist/mcp/tools.mjs.map +1 -0
  289. package/dist/node_modules/.pnpm/urlpattern-polyfill@10.1.0/node_modules/urlpattern-polyfill/dist/index.d.cts +10 -0
  290. package/dist/node_modules/.pnpm/urlpattern-polyfill@10.1.0/node_modules/urlpattern-polyfill/dist/index.d.cts.map +1 -0
  291. package/dist/node_modules/.pnpm/urlpattern-polyfill@10.1.0/node_modules/urlpattern-polyfill/dist/index.d.mts +10 -0
  292. package/dist/node_modules/.pnpm/urlpattern-polyfill@10.1.0/node_modules/urlpattern-polyfill/dist/index.d.mts.map +1 -0
  293. package/dist/node_modules/.pnpm/urlpattern-polyfill@10.1.0/node_modules/urlpattern-polyfill/dist/types.d.cts +46 -0
  294. package/dist/node_modules/.pnpm/urlpattern-polyfill@10.1.0/node_modules/urlpattern-polyfill/dist/types.d.cts.map +1 -0
  295. package/dist/node_modules/.pnpm/urlpattern-polyfill@10.1.0/node_modules/urlpattern-polyfill/dist/types.d.mts +46 -0
  296. package/dist/node_modules/.pnpm/urlpattern-polyfill@10.1.0/node_modules/urlpattern-polyfill/dist/types.d.mts.map +1 -0
  297. package/dist/node_modules/.pnpm/urlpattern-polyfill@10.1.0/node_modules/urlpattern-polyfill/dist/urlpattern.cjs +902 -0
  298. package/dist/node_modules/.pnpm/urlpattern-polyfill@10.1.0/node_modules/urlpattern-polyfill/dist/urlpattern.mjs +902 -0
  299. package/dist/node_modules/.pnpm/urlpattern-polyfill@10.1.0/node_modules/urlpattern-polyfill/dist/urlpattern.mjs.map +1 -0
  300. package/dist/node_modules/.pnpm/urlpattern-polyfill@10.1.0/node_modules/urlpattern-polyfill/index.cjs +6 -0
  301. package/dist/node_modules/.pnpm/urlpattern-polyfill@10.1.0/node_modules/urlpattern-polyfill/index.mjs +8 -0
  302. package/dist/node_modules/.pnpm/urlpattern-polyfill@10.1.0/node_modules/urlpattern-polyfill/index.mjs.map +1 -0
  303. package/dist/path-utils.cjs +105 -0
  304. package/dist/path-utils.d.cts +50 -0
  305. package/dist/path-utils.d.cts.map +1 -0
  306. package/dist/path-utils.d.mts +50 -0
  307. package/dist/path-utils.d.mts.map +1 -0
  308. package/dist/path-utils.mjs +104 -0
  309. package/dist/path-utils.mjs.map +1 -0
  310. package/dist/repl.cjs +491 -0
  311. package/dist/repl.d.cts +15 -0
  312. package/dist/repl.d.cts.map +1 -0
  313. package/dist/repl.d.mts +16 -0
  314. package/dist/repl.d.mts.map +1 -0
  315. package/dist/repl.mjs +491 -0
  316. package/dist/repl.mjs.map +1 -0
  317. package/dist/serve.cjs +146 -0
  318. package/dist/serve.d.cts +41 -0
  319. package/dist/serve.d.cts.map +1 -0
  320. package/dist/serve.d.mts +41 -0
  321. package/dist/serve.d.mts.map +1 -0
  322. package/dist/serve.mjs +146 -0
  323. package/dist/serve.mjs.map +1 -0
  324. package/dist/ui/header.cjs +12 -0
  325. package/dist/ui/header.mjs +13 -0
  326. package/dist/ui/header.mjs.map +1 -0
  327. package/dist/ui/index.cjs +8 -0
  328. package/dist/ui/index.mjs +9 -0
  329. package/dist/ui/index.mjs.map +1 -0
  330. package/dist/ui/terminal.cjs +88 -0
  331. package/dist/ui/terminal.mjs +88 -0
  332. package/dist/ui/terminal.mjs.map +1 -0
  333. package/dist/version.cjs +9 -0
  334. package/dist/version.d.cts +5 -0
  335. package/dist/version.d.cts.map +1 -0
  336. package/dist/version.d.mts +5 -0
  337. package/dist/version.d.mts.map +1 -0
  338. package/dist/version.mjs +9 -0
  339. package/dist/version.mjs.map +1 -0
  340. package/package.json +77 -11
  341. package/.turbo/turbo-build.log +0 -18
  342. package/.turbo/turbo-check-types.log +0 -4
  343. package/dist/version--p6A8sKX.mjs +0 -5
  344. package/src/cli.test.ts +0 -8
  345. package/src/cli.ts +0 -29
  346. package/src/index.ts +0 -7
  347. package/src/version.ts +0 -1
  348. package/tsconfig.json +0 -16
@@ -0,0 +1,508 @@
1
+ const require_keybindings = require('../keybindings.cjs');
2
+ const require_theme = require('../theme.cjs');
3
+
4
+ //#region src/explorer/components/dialog.ts
5
+ /**
6
+ * Create dialog manager
7
+ */
8
+ function createDialogManager(blessed, options) {
9
+ const { parent } = options;
10
+ let currentDialog = null;
11
+ let currentOverlay = null;
12
+ let currentCloseHandler = null;
13
+ /**
14
+ * Create a modal overlay to capture mouse events behind the dialog
15
+ */
16
+ function createOverlay() {
17
+ const overlay = blessed.box({
18
+ parent,
19
+ top: 0,
20
+ left: 0,
21
+ width: "100%",
22
+ height: "100%",
23
+ mouse: true,
24
+ style: { transparent: true }
25
+ });
26
+ overlay.on("wheeldown", () => {});
27
+ overlay.on("wheelup", () => {});
28
+ overlay.on("click", () => {});
29
+ return overlay;
30
+ }
31
+ /**
32
+ * Create a basic dialog box
33
+ */
34
+ function createDialog(title, width, height, options$1) {
35
+ currentOverlay = createOverlay();
36
+ const dialog = blessed.box({
37
+ parent,
38
+ top: "center",
39
+ left: "center",
40
+ width,
41
+ height,
42
+ tags: true,
43
+ keys: true,
44
+ vi: true,
45
+ mouse: true,
46
+ scrollable: true,
47
+ alwaysScroll: true,
48
+ scrollbar: {
49
+ ch: " ",
50
+ track: { bg: require_theme.Colors.bg.main },
51
+ style: { inverse: true }
52
+ },
53
+ style: {
54
+ fg: require_theme.Colors.fg.normal,
55
+ bg: require_theme.Colors.bg.main,
56
+ border: { fg: require_theme.Colors.fg.border }
57
+ },
58
+ border: { type: "line" },
59
+ label: ` ${title} `,
60
+ shadow: true
61
+ });
62
+ dialog.on("wheeldown", () => {
63
+ dialog.scroll(1);
64
+ parent.render();
65
+ });
66
+ dialog.on("wheelup", () => {
67
+ dialog.scroll(-1);
68
+ parent.render();
69
+ });
70
+ if (!options$1?.skipDefaultKeys) dialog.key([
71
+ "escape",
72
+ "q",
73
+ "enter"
74
+ ], () => {
75
+ close();
76
+ });
77
+ return dialog;
78
+ }
79
+ /**
80
+ * Close current dialog
81
+ */
82
+ function close() {
83
+ if (currentCloseHandler) {
84
+ parent.unkey("escape", currentCloseHandler);
85
+ parent.unkey("q", currentCloseHandler);
86
+ parent.unkey("enter", currentCloseHandler);
87
+ currentCloseHandler = null;
88
+ }
89
+ if (currentOverlay) {
90
+ currentOverlay.destroy();
91
+ currentOverlay = null;
92
+ }
93
+ if (currentDialog) {
94
+ currentDialog.destroy();
95
+ currentDialog = null;
96
+ parent.render();
97
+ }
98
+ }
99
+ return {
100
+ showHelp(registry) {
101
+ close();
102
+ const dialog = createDialog("Help - AFS Explorer", "60%", "70%");
103
+ currentDialog = dialog;
104
+ const lines = [
105
+ " AFS Explorer - Navigate your Agentic File System",
106
+ "",
107
+ " {bold}Commands:{/bold}",
108
+ ""
109
+ ];
110
+ const bindings = registry.getFunctionBarBindings();
111
+ for (const binding of bindings) {
112
+ const key = require_keybindings.formatKeyName(binding.key).padEnd(6);
113
+ lines.push(` ${key} ${binding.description}`);
114
+ }
115
+ lines.push("");
116
+ lines.push(" {bold}Navigation:{/bold}");
117
+ lines.push("");
118
+ lines.push(" ↑/k Move up");
119
+ lines.push(" ↓/j Move down");
120
+ lines.push(" Enter/l Enter directory or view file");
121
+ lines.push(" Bksp/h Go to parent directory");
122
+ lines.push(" g/Home Go to first item");
123
+ lines.push(" G/End Go to last item");
124
+ lines.push(" ^U/PgUp Page up");
125
+ lines.push(" ^D/PgDn Page down");
126
+ lines.push("");
127
+ lines.push(" {bold}Other:{/bold}");
128
+ lines.push("");
129
+ lines.push(" / Filter entries");
130
+ lines.push(" ? Show this help");
131
+ lines.push("");
132
+ lines.push(" {gray-fg}Press Esc, Enter, or Q to close{/gray-fg}");
133
+ dialog.setContent(lines.join("\n"));
134
+ dialog.focus();
135
+ parent.render();
136
+ },
137
+ showExplain(path, content) {
138
+ close();
139
+ const dialog = createDialog(`Explain: ${path}`, "80%", "80%");
140
+ currentDialog = dialog;
141
+ dialog.setContent(` ${content.split("\n").join("\n ")}`);
142
+ dialog.focus();
143
+ parent.render();
144
+ },
145
+ showFileView(path, content) {
146
+ close();
147
+ const dialog = createDialog(`View: ${path}`, "90%", "90%");
148
+ currentDialog = dialog;
149
+ const numbered = content.split("\n").map((line, i) => {
150
+ return `{gray-fg}${(i + 1).toString().padStart(4)}{/gray-fg} │ ${line.replace(/\{/g, "\\{").replace(/\}/g, "\\}")}`;
151
+ });
152
+ dialog.setContent(numbered.join("\n"));
153
+ dialog.focus();
154
+ parent.render();
155
+ },
156
+ showActionResult(action, success, message, data) {
157
+ close();
158
+ const dialog = createDialog(`Action: ${action}`, "60%", "50%", { skipDefaultKeys: true });
159
+ currentDialog = dialog;
160
+ const lines = [];
161
+ if (success) lines.push(" {green-fg}✓ Action completed successfully{/green-fg}");
162
+ else lines.push(" {red-fg}✗ Action failed{/red-fg}");
163
+ if (message) {
164
+ lines.push("");
165
+ lines.push(` ${message}`);
166
+ }
167
+ if (data !== void 0) {
168
+ lines.push("");
169
+ lines.push(" {bold}Result:{/bold}");
170
+ lines.push("");
171
+ const formatted = JSON.stringify(data, null, 2);
172
+ for (const line of formatted.split("\n")) lines.push(` ${line}`);
173
+ }
174
+ lines.push("");
175
+ lines.push(" {gray-fg}Press Esc, Enter, or Q to close{/gray-fg}");
176
+ dialog.setContent(lines.join("\n"));
177
+ currentCloseHandler = () => {
178
+ close();
179
+ };
180
+ parent.key([
181
+ "escape",
182
+ "q",
183
+ "enter"
184
+ ], currentCloseHandler);
185
+ dialog.focus();
186
+ parent.render();
187
+ },
188
+ showError(title, error) {
189
+ close();
190
+ const dialog = createDialog(title, "50%", "30%");
191
+ currentDialog = dialog;
192
+ const lines = [
193
+ " {red-fg}Error:{/red-fg}",
194
+ "",
195
+ ` ${error}`,
196
+ "",
197
+ " {gray-fg}Press Esc to close{/gray-fg}"
198
+ ];
199
+ dialog.setContent(lines.join("\n"));
200
+ dialog.focus();
201
+ parent.render();
202
+ },
203
+ showLoading(message) {
204
+ close();
205
+ const dialog = createDialog("Loading", "40%", "20%");
206
+ currentDialog = dialog;
207
+ dialog.setContent(`\n ${message}...`);
208
+ parent.render();
209
+ },
210
+ showConfirm(message, onConfirm) {
211
+ close();
212
+ const dialog = createDialog("Confirm", "50%", "25%", { skipDefaultKeys: true });
213
+ currentDialog = dialog;
214
+ let selectedYes = false;
215
+ const renderContent = () => {
216
+ const yesStyle = selectedYes ? "{inverse} Yes {/inverse}" : " Yes ";
217
+ const noStyle = selectedYes ? " No " : "{inverse} No {/inverse}";
218
+ const lines = [
219
+ "",
220
+ ` ${message}`,
221
+ "",
222
+ ` [ ${yesStyle} ] [ ${noStyle} ]`,
223
+ "",
224
+ " {gray-fg}←/→: switch | Enter: confirm | Y/N: quick select | Esc: cancel{/gray-fg}"
225
+ ];
226
+ dialog.setContent(lines.join("\n"));
227
+ parent.render();
228
+ };
229
+ renderContent();
230
+ dialog.key(["left", "right"], () => {
231
+ selectedYes = !selectedYes;
232
+ renderContent();
233
+ });
234
+ dialog.key(["enter"], async () => {
235
+ close();
236
+ if (selectedYes) await onConfirm();
237
+ });
238
+ dialog.key(["y", "Y"], async () => {
239
+ close();
240
+ await onConfirm();
241
+ });
242
+ dialog.key([
243
+ "n",
244
+ "N",
245
+ "escape"
246
+ ], () => {
247
+ close();
248
+ });
249
+ dialog.focus();
250
+ parent.render();
251
+ },
252
+ showParamsInput(path, inputSchema, onSubmit) {
253
+ close();
254
+ const properties = inputSchema?.properties || {};
255
+ const required = inputSchema?.required || [];
256
+ const propNames = Object.keys(properties);
257
+ if (propNames.length === 0) {
258
+ this.showConfirm(`Execute action on ${path}?`, () => {
259
+ onSubmit({});
260
+ });
261
+ return;
262
+ }
263
+ const dialogHeight = Math.min(propNames.length * 3 + 8, 25);
264
+ const dialog = createDialog(`Exec: ${path}`, "70%", dialogHeight, { skipDefaultKeys: true });
265
+ currentDialog = dialog;
266
+ const form = blessed.form({
267
+ parent: dialog,
268
+ top: 1,
269
+ left: 1,
270
+ right: 1,
271
+ bottom: 3,
272
+ keys: true,
273
+ vi: false
274
+ });
275
+ const inputs = [];
276
+ let yPos = 0;
277
+ for (const propName of propNames) {
278
+ const prop = properties[propName];
279
+ const isRequired = required.includes(propName);
280
+ const typeStr = prop?.type || "string";
281
+ const description = prop?.description || "";
282
+ const labelText = `${propName}${isRequired ? "{red-fg}*{/red-fg}" : ""} {gray-fg}(${typeStr}){/gray-fg}${description ? ` - ${description}` : ""}`;
283
+ blessed.text({
284
+ parent: form,
285
+ top: yPos,
286
+ left: 0,
287
+ tags: true,
288
+ content: labelText,
289
+ style: { fg: require_theme.Colors.fg.normal }
290
+ });
291
+ yPos += 1;
292
+ const inputBox = blessed.box({
293
+ parent: form,
294
+ top: yPos,
295
+ left: 0,
296
+ width: "100%-2",
297
+ height: 1,
298
+ tags: true,
299
+ style: {
300
+ fg: require_theme.Colors.fg.normal,
301
+ bg: require_theme.Colors.bg.input
302
+ }
303
+ });
304
+ inputs.push({
305
+ name: propName,
306
+ value: "",
307
+ cursor: 0,
308
+ box: inputBox
309
+ });
310
+ yPos += 2;
311
+ }
312
+ blessed.text({
313
+ parent: dialog,
314
+ bottom: 1,
315
+ left: 1,
316
+ tags: true,
317
+ content: "{gray-fg}Tab: next | ←→: move cursor | Enter: submit | Esc: cancel{/gray-fg}"
318
+ });
319
+ let focusIndex = 0;
320
+ const renderInput = (state, focused) => {
321
+ if (focused) {
322
+ const before = state.value.slice(0, state.cursor);
323
+ const cursorChar = state.value[state.cursor] || "█";
324
+ const after = state.value.slice(state.cursor + 1);
325
+ state.box.setContent(`${before}{white-bg}{black-fg}${cursorChar}{/black-fg}{/white-bg}${after}`);
326
+ state.box.style.bg = require_theme.Colors.bg.inputFocus;
327
+ } else {
328
+ state.box.setContent(state.value || "");
329
+ state.box.style.bg = require_theme.Colors.bg.input;
330
+ }
331
+ };
332
+ const focusInput = (index) => {
333
+ const prevState = inputs[focusIndex];
334
+ const nextState = inputs[index];
335
+ if (nextState) {
336
+ if (prevState) renderInput(prevState, false);
337
+ focusIndex = index;
338
+ renderInput(nextState, true);
339
+ parent.render();
340
+ }
341
+ };
342
+ const keypressHandler = (ch, key) => {
343
+ const state = inputs[focusIndex];
344
+ if (!state) return;
345
+ const keyName = key?.name || "";
346
+ if (keyName === "tab") {
347
+ if (key.shift) focusInput((focusIndex - 1 + inputs.length) % inputs.length);
348
+ else focusInput((focusIndex + 1) % inputs.length);
349
+ return;
350
+ }
351
+ if (keyName === "enter" || keyName === "return") {
352
+ submitForm();
353
+ return;
354
+ }
355
+ if (keyName === "escape") return;
356
+ if (keyName === "left") {
357
+ state.cursor = Math.max(0, state.cursor - 1);
358
+ renderInput(state, true);
359
+ parent.render();
360
+ return;
361
+ }
362
+ if (keyName === "right") {
363
+ state.cursor = Math.min(state.value.length, state.cursor + 1);
364
+ renderInput(state, true);
365
+ parent.render();
366
+ return;
367
+ }
368
+ if (keyName === "home") {
369
+ state.cursor = 0;
370
+ renderInput(state, true);
371
+ parent.render();
372
+ return;
373
+ }
374
+ if (keyName === "end") {
375
+ state.cursor = state.value.length;
376
+ renderInput(state, true);
377
+ parent.render();
378
+ return;
379
+ }
380
+ if (keyName === "backspace") {
381
+ if (state.cursor > 0) {
382
+ state.value = state.value.slice(0, state.cursor - 1) + state.value.slice(state.cursor);
383
+ state.cursor--;
384
+ renderInput(state, true);
385
+ parent.render();
386
+ }
387
+ return;
388
+ }
389
+ if (keyName === "delete") {
390
+ if (state.cursor < state.value.length) {
391
+ state.value = state.value.slice(0, state.cursor) + state.value.slice(state.cursor + 1);
392
+ renderInput(state, true);
393
+ parent.render();
394
+ }
395
+ return;
396
+ }
397
+ if (ch && ch.length === 1 && !key.ctrl && !key.meta) {
398
+ state.value = state.value.slice(0, state.cursor) + ch + state.value.slice(state.cursor);
399
+ state.cursor++;
400
+ renderInput(state, true);
401
+ parent.render();
402
+ }
403
+ };
404
+ const submitForm = () => {
405
+ parent.removeListener("keypress", keypressHandler);
406
+ const params = {};
407
+ for (const { name, value } of inputs) {
408
+ const trimmed = value.trim();
409
+ if (trimmed) {
410
+ const expectedType = properties[name]?.type || "string";
411
+ if (expectedType === "string") params[name] = trimmed;
412
+ else if (expectedType === "number" || expectedType === "integer") {
413
+ const num = Number(trimmed);
414
+ params[name] = Number.isNaN(num) ? trimmed : num;
415
+ } else if (expectedType === "boolean") params[name] = trimmed.toLowerCase() === "true";
416
+ else if (expectedType === "object" || expectedType === "array") try {
417
+ params[name] = JSON.parse(trimmed);
418
+ } catch {
419
+ params[name] = trimmed;
420
+ }
421
+ else try {
422
+ params[name] = JSON.parse(trimmed);
423
+ } catch {
424
+ params[name] = trimmed;
425
+ }
426
+ }
427
+ }
428
+ close();
429
+ onSubmit(params);
430
+ };
431
+ const originalClose = close;
432
+ const closeWithCleanup = () => {
433
+ parent.removeListener("keypress", keypressHandler);
434
+ originalClose();
435
+ };
436
+ dialog.key(["escape"], () => {
437
+ closeWithCleanup();
438
+ });
439
+ dialog.focus();
440
+ parent.render();
441
+ setTimeout(() => {
442
+ parent.on("keypress", keypressHandler);
443
+ focusInput(0);
444
+ }, 50);
445
+ },
446
+ showActionPicker(nodePath, actions, onSelect) {
447
+ close();
448
+ const nodeName = nodePath.split("/").pop() || nodePath;
449
+ const dialogHeight = Math.min(actions.length + 6, 20);
450
+ const dialog = createDialog(`Actions: ${nodeName}`, "50%", dialogHeight, { skipDefaultKeys: true });
451
+ currentDialog = dialog;
452
+ let selectedIndex = 0;
453
+ const renderContent = () => {
454
+ const lines = [""];
455
+ for (let i = 0; i < actions.length; i++) {
456
+ const action = actions[i];
457
+ if (!action) continue;
458
+ const prefix = i === selectedIndex ? " {inverse}" : " ";
459
+ const suffix = i === selectedIndex ? "{/inverse}" : "";
460
+ lines.push(`${prefix}[${i + 1}] ${action.name}${suffix}`);
461
+ if (action.description) lines.push(` {gray-fg}${action.description}{/gray-fg}`);
462
+ }
463
+ lines.push("");
464
+ lines.push(" {gray-fg}↑/↓: select | Enter: execute | Esc: cancel{/gray-fg}");
465
+ dialog.setContent(lines.join("\n"));
466
+ parent.render();
467
+ };
468
+ renderContent();
469
+ dialog.key(["up", "k"], () => {
470
+ selectedIndex = (selectedIndex - 1 + actions.length) % actions.length;
471
+ renderContent();
472
+ });
473
+ dialog.key(["down", "j"], () => {
474
+ selectedIndex = (selectedIndex + 1) % actions.length;
475
+ renderContent();
476
+ });
477
+ for (let i = 1; i <= Math.min(9, actions.length); i++) dialog.key([String(i)], () => {
478
+ const action = actions[i - 1];
479
+ if (action) {
480
+ close();
481
+ onSelect(action);
482
+ }
483
+ });
484
+ dialog.key(["enter"], () => {
485
+ const action = actions[selectedIndex];
486
+ if (action) {
487
+ close();
488
+ onSelect(action);
489
+ }
490
+ });
491
+ dialog.key(["escape", "q"], () => {
492
+ close();
493
+ });
494
+ dialog.focus();
495
+ parent.render();
496
+ },
497
+ close,
498
+ isOpen() {
499
+ return currentDialog !== null;
500
+ },
501
+ destroy() {
502
+ close();
503
+ }
504
+ };
505
+ }
506
+
507
+ //#endregion
508
+ exports.createDialogManager = createDialogManager;