editormate 0.0.0-stage → 1.0.2

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 (485) hide show
  1. package/LICENSE.md +31 -0
  2. package/README.md +119 -2
  3. package/bin/cli.js +264 -0
  4. package/dist/adapters/ide/ide_adapters.d.ts +45 -0
  5. package/dist/adapters/ide/ide_adapters.d.ts.map +1 -0
  6. package/dist/adapters/ide/ide_adapters.js +9 -0
  7. package/dist/adapters/ide/ide_adapters.js.map +1 -0
  8. package/dist/adapters/messaging/discord_adapter.d.ts +56 -0
  9. package/dist/adapters/messaging/discord_adapter.d.ts.map +1 -0
  10. package/dist/adapters/messaging/discord_adapter.js +9 -0
  11. package/dist/adapters/messaging/discord_adapter.js.map +1 -0
  12. package/dist/adapters/messaging/discord_menu.d.ts +15 -0
  13. package/dist/adapters/messaging/discord_menu.d.ts.map +1 -0
  14. package/dist/adapters/messaging/discord_menu.js +9 -0
  15. package/dist/adapters/messaging/discord_menu.js.map +1 -0
  16. package/dist/adapters/messaging/matrix_adapter.d.ts +39 -0
  17. package/dist/adapters/messaging/matrix_adapter.d.ts.map +1 -0
  18. package/dist/adapters/messaging/matrix_adapter.js +9 -0
  19. package/dist/adapters/messaging/matrix_adapter.js.map +1 -0
  20. package/dist/adapters/messaging/slack_adapter.d.ts +115 -0
  21. package/dist/adapters/messaging/slack_adapter.d.ts.map +1 -0
  22. package/dist/adapters/messaging/slack_adapter.js +9 -0
  23. package/dist/adapters/messaging/slack_adapter.js.map +1 -0
  24. package/dist/adapters/messaging/telegram_adapter.d.ts +90 -0
  25. package/dist/adapters/messaging/telegram_adapter.d.ts.map +1 -0
  26. package/dist/adapters/messaging/telegram_adapter.js +9 -0
  27. package/dist/adapters/messaging/telegram_adapter.js.map +1 -0
  28. package/dist/adapters/messaging/telegram_client.d.ts +75 -0
  29. package/dist/adapters/messaging/telegram_client.d.ts.map +1 -0
  30. package/dist/adapters/messaging/telegram_client.js +9 -0
  31. package/dist/adapters/messaging/telegram_client.js.map +1 -0
  32. package/dist/adapters/messaging/telegram_keyboards.d.ts +55 -0
  33. package/dist/adapters/messaging/telegram_keyboards.d.ts.map +1 -0
  34. package/dist/adapters/messaging/telegram_keyboards.js +9 -0
  35. package/dist/adapters/messaging/telegram_keyboards.js.map +1 -0
  36. package/dist/adapters/messaging/whatsapp_adapter.d.ts +30 -0
  37. package/dist/adapters/messaging/whatsapp_adapter.d.ts.map +1 -0
  38. package/dist/adapters/messaging/whatsapp_adapter.js +9 -0
  39. package/dist/adapters/messaging/whatsapp_adapter.js.map +1 -0
  40. package/dist/adapters/messaging/whatsapp_baileys.d.ts +84 -0
  41. package/dist/adapters/messaging/whatsapp_baileys.d.ts.map +1 -0
  42. package/dist/adapters/messaging/whatsapp_baileys.js +9 -0
  43. package/dist/adapters/messaging/whatsapp_baileys.js.map +1 -0
  44. package/dist/core/blocking_prompt_bridge.d.ts +99 -0
  45. package/dist/core/blocking_prompt_bridge.d.ts.map +1 -0
  46. package/dist/core/blocking_prompt_bridge.js +9 -0
  47. package/dist/core/blocking_prompt_bridge.js.map +1 -0
  48. package/dist/core/chat_switchboard.d.ts +35 -0
  49. package/dist/core/chat_switchboard.d.ts.map +1 -0
  50. package/dist/core/chat_switchboard.js +9 -0
  51. package/dist/core/chat_switchboard.js.map +1 -0
  52. package/dist/core/companion_daemon.d.ts +23 -0
  53. package/dist/core/companion_daemon.d.ts.map +1 -0
  54. package/dist/core/companion_daemon.js +9 -0
  55. package/dist/core/companion_daemon.js.map +1 -0
  56. package/dist/core/email_reporter.d.ts +109 -0
  57. package/dist/core/email_reporter.d.ts.map +1 -0
  58. package/dist/core/email_reporter.js +9 -0
  59. package/dist/core/email_reporter.js.map +1 -0
  60. package/dist/core/licensing.d.ts +44 -0
  61. package/dist/core/licensing.d.ts.map +1 -0
  62. package/dist/core/licensing.js +9 -0
  63. package/dist/core/licensing.js.map +1 -0
  64. package/dist/core/media_handler.d.ts +67 -0
  65. package/dist/core/media_handler.d.ts.map +1 -0
  66. package/dist/core/media_handler.js +9 -0
  67. package/dist/core/media_handler.js.map +1 -0
  68. package/dist/core/os_keychain.d.ts +41 -0
  69. package/dist/core/os_keychain.d.ts.map +1 -0
  70. package/dist/core/os_keychain.js +9 -0
  71. package/dist/core/os_keychain.js.map +1 -0
  72. package/dist/core/outbound_dispatcher.d.ts +33 -0
  73. package/dist/core/outbound_dispatcher.d.ts.map +1 -0
  74. package/dist/core/outbound_dispatcher.js +9 -0
  75. package/dist/core/outbound_dispatcher.js.map +1 -0
  76. package/dist/core/pdf_generator.d.ts +66 -0
  77. package/dist/core/pdf_generator.d.ts.map +1 -0
  78. package/dist/core/pdf_generator.js +9 -0
  79. package/dist/core/pdf_generator.js.map +1 -0
  80. package/dist/core/process_checker.d.ts +10 -0
  81. package/dist/core/process_checker.d.ts.map +1 -0
  82. package/dist/core/process_checker.js +9 -0
  83. package/dist/core/process_checker.js.map +1 -0
  84. package/dist/core/prompt_sanitizer.d.ts +15 -0
  85. package/dist/core/prompt_sanitizer.d.ts.map +1 -0
  86. package/dist/core/prompt_sanitizer.js +9 -0
  87. package/dist/core/prompt_sanitizer.js.map +1 -0
  88. package/dist/core/security.d.ts +75 -0
  89. package/dist/core/security.d.ts.map +1 -0
  90. package/dist/core/security.js +9 -0
  91. package/dist/core/security.js.map +1 -0
  92. package/dist/core/session_manager.d.ts +67 -0
  93. package/dist/core/session_manager.d.ts.map +1 -0
  94. package/dist/core/session_manager.js +9 -0
  95. package/dist/core/session_manager.js.map +1 -0
  96. package/dist/core/standalone_dashboard/client_script.d.ts +5 -0
  97. package/dist/core/standalone_dashboard/client_script.d.ts.map +1 -0
  98. package/dist/core/standalone_dashboard/client_script.js +9 -0
  99. package/dist/core/standalone_dashboard/client_script.js.map +1 -0
  100. package/dist/core/standalone_dashboard/components/header.d.ts +5 -0
  101. package/dist/core/standalone_dashboard/components/header.d.ts.map +1 -0
  102. package/dist/core/standalone_dashboard/components/header.js +9 -0
  103. package/dist/core/standalone_dashboard/components/header.js.map +1 -0
  104. package/dist/core/standalone_dashboard/components/modals.d.ts +5 -0
  105. package/dist/core/standalone_dashboard/components/modals.d.ts.map +1 -0
  106. package/dist/core/standalone_dashboard/components/modals.js +9 -0
  107. package/dist/core/standalone_dashboard/components/modals.js.map +1 -0
  108. package/dist/core/standalone_dashboard/components/remote_deck.d.ts +5 -0
  109. package/dist/core/standalone_dashboard/components/remote_deck.d.ts.map +1 -0
  110. package/dist/core/standalone_dashboard/components/remote_deck.js +9 -0
  111. package/dist/core/standalone_dashboard/components/remote_deck.js.map +1 -0
  112. package/dist/core/standalone_dashboard/components/settings_deck.d.ts +5 -0
  113. package/dist/core/standalone_dashboard/components/settings_deck.d.ts.map +1 -0
  114. package/dist/core/standalone_dashboard/components/settings_deck.js +9 -0
  115. package/dist/core/standalone_dashboard/components/settings_deck.js.map +1 -0
  116. package/dist/core/standalone_dashboard/index.d.ts +13 -0
  117. package/dist/core/standalone_dashboard/index.d.ts.map +1 -0
  118. package/dist/core/standalone_dashboard/index.js +9 -0
  119. package/dist/core/standalone_dashboard/index.js.map +1 -0
  120. package/dist/core/standalone_dashboard/styles.d.ts +6 -0
  121. package/dist/core/standalone_dashboard/styles.d.ts.map +1 -0
  122. package/dist/core/standalone_dashboard/styles.js +9 -0
  123. package/dist/core/standalone_dashboard/styles.js.map +1 -0
  124. package/dist/core/standalone_dashboard.d.ts +6 -0
  125. package/dist/core/standalone_dashboard.d.ts.map +1 -0
  126. package/dist/core/standalone_dashboard.js +9 -0
  127. package/dist/core/standalone_dashboard.js.map +1 -0
  128. package/dist/core/telemetry.d.ts +62 -0
  129. package/dist/core/telemetry.d.ts.map +1 -0
  130. package/dist/core/telemetry.js +9 -0
  131. package/dist/core/telemetry.js.map +1 -0
  132. package/dist/core/transcript_watcher.d.ts +23 -0
  133. package/dist/core/transcript_watcher.d.ts.map +1 -0
  134. package/dist/core/transcript_watcher.js +9 -0
  135. package/dist/core/transcript_watcher.js.map +1 -0
  136. package/dist/core/transcription_refiner.d.ts +34 -0
  137. package/dist/core/transcription_refiner.d.ts.map +1 -0
  138. package/dist/core/transcription_refiner.js +9 -0
  139. package/dist/core/transcription_refiner.js.map +1 -0
  140. package/dist/core/tui_dashboard.d.ts +8 -0
  141. package/dist/core/tui_dashboard.d.ts.map +1 -0
  142. package/dist/core/tui_dashboard.js +9 -0
  143. package/dist/core/tui_dashboard.js.map +1 -0
  144. package/dist/index.d.ts +15 -0
  145. package/dist/index.d.ts.map +1 -0
  146. package/dist/index.js +9 -0
  147. package/dist/index.js.map +1 -0
  148. package/dist/types.d.ts +159 -0
  149. package/dist/types.d.ts.map +1 -0
  150. package/dist/types.js +9 -0
  151. package/dist/types.js.map +1 -0
  152. package/extension/.vscodeignore +4 -0
  153. package/extension/LICENSE.md +31 -0
  154. package/extension/README.md +55 -0
  155. package/extension/assets/icon.png +0 -0
  156. package/extension/assets/icon.svg +16 -0
  157. package/extension/bin/cli.js +264 -0
  158. package/extension/bin/package.json +3 -0
  159. package/extension/daemon/adapters/ide/ide_adapters.d.ts +45 -0
  160. package/extension/daemon/adapters/ide/ide_adapters.d.ts.map +1 -0
  161. package/extension/daemon/adapters/ide/ide_adapters.js +9 -0
  162. package/extension/daemon/adapters/ide/ide_adapters.js.map +1 -0
  163. package/extension/daemon/adapters/messaging/discord_adapter.d.ts +56 -0
  164. package/extension/daemon/adapters/messaging/discord_adapter.d.ts.map +1 -0
  165. package/extension/daemon/adapters/messaging/discord_adapter.js +9 -0
  166. package/extension/daemon/adapters/messaging/discord_adapter.js.map +1 -0
  167. package/extension/daemon/adapters/messaging/discord_menu.d.ts +15 -0
  168. package/extension/daemon/adapters/messaging/discord_menu.d.ts.map +1 -0
  169. package/extension/daemon/adapters/messaging/discord_menu.js +9 -0
  170. package/extension/daemon/adapters/messaging/discord_menu.js.map +1 -0
  171. package/extension/daemon/adapters/messaging/matrix_adapter.d.ts +39 -0
  172. package/extension/daemon/adapters/messaging/matrix_adapter.d.ts.map +1 -0
  173. package/extension/daemon/adapters/messaging/matrix_adapter.js +9 -0
  174. package/extension/daemon/adapters/messaging/matrix_adapter.js.map +1 -0
  175. package/extension/daemon/adapters/messaging/slack_adapter.d.ts +115 -0
  176. package/extension/daemon/adapters/messaging/slack_adapter.d.ts.map +1 -0
  177. package/extension/daemon/adapters/messaging/slack_adapter.js +9 -0
  178. package/extension/daemon/adapters/messaging/slack_adapter.js.map +1 -0
  179. package/extension/daemon/adapters/messaging/telegram_adapter.d.ts +90 -0
  180. package/extension/daemon/adapters/messaging/telegram_adapter.d.ts.map +1 -0
  181. package/extension/daemon/adapters/messaging/telegram_adapter.js +9 -0
  182. package/extension/daemon/adapters/messaging/telegram_adapter.js.map +1 -0
  183. package/extension/daemon/adapters/messaging/telegram_client.d.ts +75 -0
  184. package/extension/daemon/adapters/messaging/telegram_client.d.ts.map +1 -0
  185. package/extension/daemon/adapters/messaging/telegram_client.js +9 -0
  186. package/extension/daemon/adapters/messaging/telegram_client.js.map +1 -0
  187. package/extension/daemon/adapters/messaging/telegram_keyboards.d.ts +55 -0
  188. package/extension/daemon/adapters/messaging/telegram_keyboards.d.ts.map +1 -0
  189. package/extension/daemon/adapters/messaging/telegram_keyboards.js +9 -0
  190. package/extension/daemon/adapters/messaging/telegram_keyboards.js.map +1 -0
  191. package/extension/daemon/adapters/messaging/whatsapp_adapter.d.ts +30 -0
  192. package/extension/daemon/adapters/messaging/whatsapp_adapter.d.ts.map +1 -0
  193. package/extension/daemon/adapters/messaging/whatsapp_adapter.js +9 -0
  194. package/extension/daemon/adapters/messaging/whatsapp_adapter.js.map +1 -0
  195. package/extension/daemon/adapters/messaging/whatsapp_baileys.d.ts +84 -0
  196. package/extension/daemon/adapters/messaging/whatsapp_baileys.d.ts.map +1 -0
  197. package/extension/daemon/adapters/messaging/whatsapp_baileys.js +9 -0
  198. package/extension/daemon/adapters/messaging/whatsapp_baileys.js.map +1 -0
  199. package/extension/daemon/core/blocking_prompt_bridge.d.ts +99 -0
  200. package/extension/daemon/core/blocking_prompt_bridge.d.ts.map +1 -0
  201. package/extension/daemon/core/blocking_prompt_bridge.js +9 -0
  202. package/extension/daemon/core/blocking_prompt_bridge.js.map +1 -0
  203. package/extension/daemon/core/chat_switchboard.d.ts +35 -0
  204. package/extension/daemon/core/chat_switchboard.d.ts.map +1 -0
  205. package/extension/daemon/core/chat_switchboard.js +9 -0
  206. package/extension/daemon/core/chat_switchboard.js.map +1 -0
  207. package/extension/daemon/core/companion_daemon.d.ts +23 -0
  208. package/extension/daemon/core/companion_daemon.d.ts.map +1 -0
  209. package/extension/daemon/core/companion_daemon.js +9 -0
  210. package/extension/daemon/core/companion_daemon.js.map +1 -0
  211. package/extension/daemon/core/email_reporter.d.ts +109 -0
  212. package/extension/daemon/core/email_reporter.d.ts.map +1 -0
  213. package/extension/daemon/core/email_reporter.js +9 -0
  214. package/extension/daemon/core/email_reporter.js.map +1 -0
  215. package/extension/daemon/core/licensing.d.ts +44 -0
  216. package/extension/daemon/core/licensing.d.ts.map +1 -0
  217. package/extension/daemon/core/licensing.js +9 -0
  218. package/extension/daemon/core/licensing.js.map +1 -0
  219. package/extension/daemon/core/media_handler.d.ts +67 -0
  220. package/extension/daemon/core/media_handler.d.ts.map +1 -0
  221. package/extension/daemon/core/media_handler.js +9 -0
  222. package/extension/daemon/core/media_handler.js.map +1 -0
  223. package/extension/daemon/core/os_keychain.d.ts +41 -0
  224. package/extension/daemon/core/os_keychain.d.ts.map +1 -0
  225. package/extension/daemon/core/os_keychain.js +9 -0
  226. package/extension/daemon/core/os_keychain.js.map +1 -0
  227. package/extension/daemon/core/outbound_dispatcher.d.ts +33 -0
  228. package/extension/daemon/core/outbound_dispatcher.d.ts.map +1 -0
  229. package/extension/daemon/core/outbound_dispatcher.js +9 -0
  230. package/extension/daemon/core/outbound_dispatcher.js.map +1 -0
  231. package/extension/daemon/core/pdf_generator.d.ts +66 -0
  232. package/extension/daemon/core/pdf_generator.d.ts.map +1 -0
  233. package/extension/daemon/core/pdf_generator.js +9 -0
  234. package/extension/daemon/core/pdf_generator.js.map +1 -0
  235. package/extension/daemon/core/process_checker.d.ts +10 -0
  236. package/extension/daemon/core/process_checker.d.ts.map +1 -0
  237. package/extension/daemon/core/process_checker.js +9 -0
  238. package/extension/daemon/core/process_checker.js.map +1 -0
  239. package/extension/daemon/core/prompt_sanitizer.d.ts +15 -0
  240. package/extension/daemon/core/prompt_sanitizer.d.ts.map +1 -0
  241. package/extension/daemon/core/prompt_sanitizer.js +9 -0
  242. package/extension/daemon/core/prompt_sanitizer.js.map +1 -0
  243. package/extension/daemon/core/security.d.ts +75 -0
  244. package/extension/daemon/core/security.d.ts.map +1 -0
  245. package/extension/daemon/core/security.js +9 -0
  246. package/extension/daemon/core/security.js.map +1 -0
  247. package/extension/daemon/core/session_manager.d.ts +67 -0
  248. package/extension/daemon/core/session_manager.d.ts.map +1 -0
  249. package/extension/daemon/core/session_manager.js +9 -0
  250. package/extension/daemon/core/session_manager.js.map +1 -0
  251. package/extension/daemon/core/standalone_dashboard/client_script.d.ts +5 -0
  252. package/extension/daemon/core/standalone_dashboard/client_script.d.ts.map +1 -0
  253. package/extension/daemon/core/standalone_dashboard/client_script.js +9 -0
  254. package/extension/daemon/core/standalone_dashboard/client_script.js.map +1 -0
  255. package/extension/daemon/core/standalone_dashboard/components/header.d.ts +5 -0
  256. package/extension/daemon/core/standalone_dashboard/components/header.d.ts.map +1 -0
  257. package/extension/daemon/core/standalone_dashboard/components/header.js +9 -0
  258. package/extension/daemon/core/standalone_dashboard/components/header.js.map +1 -0
  259. package/extension/daemon/core/standalone_dashboard/components/modals.d.ts +5 -0
  260. package/extension/daemon/core/standalone_dashboard/components/modals.d.ts.map +1 -0
  261. package/extension/daemon/core/standalone_dashboard/components/modals.js +9 -0
  262. package/extension/daemon/core/standalone_dashboard/components/modals.js.map +1 -0
  263. package/extension/daemon/core/standalone_dashboard/components/remote_deck.d.ts +5 -0
  264. package/extension/daemon/core/standalone_dashboard/components/remote_deck.d.ts.map +1 -0
  265. package/extension/daemon/core/standalone_dashboard/components/remote_deck.js +9 -0
  266. package/extension/daemon/core/standalone_dashboard/components/remote_deck.js.map +1 -0
  267. package/extension/daemon/core/standalone_dashboard/components/settings_deck.d.ts +5 -0
  268. package/extension/daemon/core/standalone_dashboard/components/settings_deck.d.ts.map +1 -0
  269. package/extension/daemon/core/standalone_dashboard/components/settings_deck.js +9 -0
  270. package/extension/daemon/core/standalone_dashboard/components/settings_deck.js.map +1 -0
  271. package/extension/daemon/core/standalone_dashboard/index.d.ts +13 -0
  272. package/extension/daemon/core/standalone_dashboard/index.d.ts.map +1 -0
  273. package/extension/daemon/core/standalone_dashboard/index.js +9 -0
  274. package/extension/daemon/core/standalone_dashboard/index.js.map +1 -0
  275. package/extension/daemon/core/standalone_dashboard/styles.d.ts +6 -0
  276. package/extension/daemon/core/standalone_dashboard/styles.d.ts.map +1 -0
  277. package/extension/daemon/core/standalone_dashboard/styles.js +9 -0
  278. package/extension/daemon/core/standalone_dashboard/styles.js.map +1 -0
  279. package/extension/daemon/core/standalone_dashboard.d.ts +6 -0
  280. package/extension/daemon/core/standalone_dashboard.d.ts.map +1 -0
  281. package/extension/daemon/core/standalone_dashboard.js +9 -0
  282. package/extension/daemon/core/standalone_dashboard.js.map +1 -0
  283. package/extension/daemon/core/telemetry.d.ts +62 -0
  284. package/extension/daemon/core/telemetry.d.ts.map +1 -0
  285. package/extension/daemon/core/telemetry.js +9 -0
  286. package/extension/daemon/core/telemetry.js.map +1 -0
  287. package/extension/daemon/core/transcript_watcher.d.ts +23 -0
  288. package/extension/daemon/core/transcript_watcher.d.ts.map +1 -0
  289. package/extension/daemon/core/transcript_watcher.js +9 -0
  290. package/extension/daemon/core/transcript_watcher.js.map +1 -0
  291. package/extension/daemon/core/transcription_refiner.d.ts +34 -0
  292. package/extension/daemon/core/transcription_refiner.d.ts.map +1 -0
  293. package/extension/daemon/core/transcription_refiner.js +9 -0
  294. package/extension/daemon/core/transcription_refiner.js.map +1 -0
  295. package/extension/daemon/core/tui_dashboard.d.ts +8 -0
  296. package/extension/daemon/core/tui_dashboard.d.ts.map +1 -0
  297. package/extension/daemon/core/tui_dashboard.js +9 -0
  298. package/extension/daemon/core/tui_dashboard.js.map +1 -0
  299. package/extension/daemon/index.d.ts +15 -0
  300. package/extension/daemon/index.d.ts.map +1 -0
  301. package/extension/daemon/index.js +9 -0
  302. package/extension/daemon/index.js.map +1 -0
  303. package/extension/daemon/types.d.ts +159 -0
  304. package/extension/daemon/types.d.ts.map +1 -0
  305. package/extension/daemon/types.js +9 -0
  306. package/extension/daemon/types.js.map +1 -0
  307. package/extension/dist/adapters/ide/ide_adapters.d.ts +45 -0
  308. package/extension/dist/adapters/ide/ide_adapters.d.ts.map +1 -0
  309. package/extension/dist/adapters/ide/ide_adapters.js +9 -0
  310. package/extension/dist/adapters/ide/ide_adapters.js.map +1 -0
  311. package/extension/dist/adapters/messaging/discord_adapter.d.ts +56 -0
  312. package/extension/dist/adapters/messaging/discord_adapter.d.ts.map +1 -0
  313. package/extension/dist/adapters/messaging/discord_adapter.js +9 -0
  314. package/extension/dist/adapters/messaging/discord_adapter.js.map +1 -0
  315. package/extension/dist/adapters/messaging/discord_menu.d.ts +15 -0
  316. package/extension/dist/adapters/messaging/discord_menu.d.ts.map +1 -0
  317. package/extension/dist/adapters/messaging/discord_menu.js +9 -0
  318. package/extension/dist/adapters/messaging/discord_menu.js.map +1 -0
  319. package/extension/dist/adapters/messaging/matrix_adapter.d.ts +39 -0
  320. package/extension/dist/adapters/messaging/matrix_adapter.d.ts.map +1 -0
  321. package/extension/dist/adapters/messaging/matrix_adapter.js +9 -0
  322. package/extension/dist/adapters/messaging/matrix_adapter.js.map +1 -0
  323. package/extension/dist/adapters/messaging/slack_adapter.d.ts +115 -0
  324. package/extension/dist/adapters/messaging/slack_adapter.d.ts.map +1 -0
  325. package/extension/dist/adapters/messaging/slack_adapter.js +9 -0
  326. package/extension/dist/adapters/messaging/slack_adapter.js.map +1 -0
  327. package/extension/dist/adapters/messaging/telegram_adapter.d.ts +90 -0
  328. package/extension/dist/adapters/messaging/telegram_adapter.d.ts.map +1 -0
  329. package/extension/dist/adapters/messaging/telegram_adapter.js +9 -0
  330. package/extension/dist/adapters/messaging/telegram_adapter.js.map +1 -0
  331. package/extension/dist/adapters/messaging/telegram_client.d.ts +75 -0
  332. package/extension/dist/adapters/messaging/telegram_client.d.ts.map +1 -0
  333. package/extension/dist/adapters/messaging/telegram_client.js +9 -0
  334. package/extension/dist/adapters/messaging/telegram_client.js.map +1 -0
  335. package/extension/dist/adapters/messaging/telegram_keyboards.d.ts +55 -0
  336. package/extension/dist/adapters/messaging/telegram_keyboards.d.ts.map +1 -0
  337. package/extension/dist/adapters/messaging/telegram_keyboards.js +9 -0
  338. package/extension/dist/adapters/messaging/telegram_keyboards.js.map +1 -0
  339. package/extension/dist/adapters/messaging/whatsapp_adapter.d.ts +30 -0
  340. package/extension/dist/adapters/messaging/whatsapp_adapter.d.ts.map +1 -0
  341. package/extension/dist/adapters/messaging/whatsapp_adapter.js +9 -0
  342. package/extension/dist/adapters/messaging/whatsapp_adapter.js.map +1 -0
  343. package/extension/dist/adapters/messaging/whatsapp_baileys.d.ts +84 -0
  344. package/extension/dist/adapters/messaging/whatsapp_baileys.d.ts.map +1 -0
  345. package/extension/dist/adapters/messaging/whatsapp_baileys.js +9 -0
  346. package/extension/dist/adapters/messaging/whatsapp_baileys.js.map +1 -0
  347. package/extension/dist/adapters/package.json +3 -0
  348. package/extension/dist/command_guard.js +9 -0
  349. package/extension/dist/commands_manager.js +9 -0
  350. package/extension/dist/core/blocking_prompt_bridge.d.ts +99 -0
  351. package/extension/dist/core/blocking_prompt_bridge.d.ts.map +1 -0
  352. package/extension/dist/core/blocking_prompt_bridge.js +9 -0
  353. package/extension/dist/core/blocking_prompt_bridge.js.map +1 -0
  354. package/extension/dist/core/chat_switchboard.d.ts +35 -0
  355. package/extension/dist/core/chat_switchboard.d.ts.map +1 -0
  356. package/extension/dist/core/chat_switchboard.js +9 -0
  357. package/extension/dist/core/chat_switchboard.js.map +1 -0
  358. package/extension/dist/core/companion_daemon.d.ts +23 -0
  359. package/extension/dist/core/companion_daemon.d.ts.map +1 -0
  360. package/extension/dist/core/companion_daemon.js +9 -0
  361. package/extension/dist/core/companion_daemon.js.map +1 -0
  362. package/extension/dist/core/email_reporter.d.ts +109 -0
  363. package/extension/dist/core/email_reporter.d.ts.map +1 -0
  364. package/extension/dist/core/email_reporter.js +9 -0
  365. package/extension/dist/core/email_reporter.js.map +1 -0
  366. package/extension/dist/core/licensing.d.ts +44 -0
  367. package/extension/dist/core/licensing.d.ts.map +1 -0
  368. package/extension/dist/core/licensing.js +9 -0
  369. package/extension/dist/core/licensing.js.map +1 -0
  370. package/extension/dist/core/media_handler.d.ts +67 -0
  371. package/extension/dist/core/media_handler.d.ts.map +1 -0
  372. package/extension/dist/core/media_handler.js +9 -0
  373. package/extension/dist/core/media_handler.js.map +1 -0
  374. package/extension/dist/core/os_keychain.d.ts +41 -0
  375. package/extension/dist/core/os_keychain.d.ts.map +1 -0
  376. package/extension/dist/core/os_keychain.js +9 -0
  377. package/extension/dist/core/os_keychain.js.map +1 -0
  378. package/extension/dist/core/outbound_dispatcher.d.ts +33 -0
  379. package/extension/dist/core/outbound_dispatcher.d.ts.map +1 -0
  380. package/extension/dist/core/outbound_dispatcher.js +9 -0
  381. package/extension/dist/core/outbound_dispatcher.js.map +1 -0
  382. package/extension/dist/core/package.json +3 -0
  383. package/extension/dist/core/pdf_generator.d.ts +66 -0
  384. package/extension/dist/core/pdf_generator.d.ts.map +1 -0
  385. package/extension/dist/core/pdf_generator.js +9 -0
  386. package/extension/dist/core/pdf_generator.js.map +1 -0
  387. package/extension/dist/core/process_checker.d.ts +10 -0
  388. package/extension/dist/core/process_checker.d.ts.map +1 -0
  389. package/extension/dist/core/process_checker.js +9 -0
  390. package/extension/dist/core/process_checker.js.map +1 -0
  391. package/extension/dist/core/prompt_sanitizer.d.ts +15 -0
  392. package/extension/dist/core/prompt_sanitizer.d.ts.map +1 -0
  393. package/extension/dist/core/prompt_sanitizer.js +9 -0
  394. package/extension/dist/core/prompt_sanitizer.js.map +1 -0
  395. package/extension/dist/core/security.d.ts +75 -0
  396. package/extension/dist/core/security.d.ts.map +1 -0
  397. package/extension/dist/core/security.js +9 -0
  398. package/extension/dist/core/security.js.map +1 -0
  399. package/extension/dist/core/session_manager.d.ts +67 -0
  400. package/extension/dist/core/session_manager.d.ts.map +1 -0
  401. package/extension/dist/core/session_manager.js +9 -0
  402. package/extension/dist/core/session_manager.js.map +1 -0
  403. package/extension/dist/core/standalone_dashboard/client_script.d.ts +5 -0
  404. package/extension/dist/core/standalone_dashboard/client_script.d.ts.map +1 -0
  405. package/extension/dist/core/standalone_dashboard/client_script.js +9 -0
  406. package/extension/dist/core/standalone_dashboard/client_script.js.map +1 -0
  407. package/extension/dist/core/standalone_dashboard/components/header.d.ts +5 -0
  408. package/extension/dist/core/standalone_dashboard/components/header.d.ts.map +1 -0
  409. package/extension/dist/core/standalone_dashboard/components/header.js +9 -0
  410. package/extension/dist/core/standalone_dashboard/components/header.js.map +1 -0
  411. package/extension/dist/core/standalone_dashboard/components/modals.d.ts +5 -0
  412. package/extension/dist/core/standalone_dashboard/components/modals.d.ts.map +1 -0
  413. package/extension/dist/core/standalone_dashboard/components/modals.js +9 -0
  414. package/extension/dist/core/standalone_dashboard/components/modals.js.map +1 -0
  415. package/extension/dist/core/standalone_dashboard/components/remote_deck.d.ts +5 -0
  416. package/extension/dist/core/standalone_dashboard/components/remote_deck.d.ts.map +1 -0
  417. package/extension/dist/core/standalone_dashboard/components/remote_deck.js +9 -0
  418. package/extension/dist/core/standalone_dashboard/components/remote_deck.js.map +1 -0
  419. package/extension/dist/core/standalone_dashboard/components/settings_deck.d.ts +5 -0
  420. package/extension/dist/core/standalone_dashboard/components/settings_deck.d.ts.map +1 -0
  421. package/extension/dist/core/standalone_dashboard/components/settings_deck.js +9 -0
  422. package/extension/dist/core/standalone_dashboard/components/settings_deck.js.map +1 -0
  423. package/extension/dist/core/standalone_dashboard/index.d.ts +13 -0
  424. package/extension/dist/core/standalone_dashboard/index.d.ts.map +1 -0
  425. package/extension/dist/core/standalone_dashboard/index.js +9 -0
  426. package/extension/dist/core/standalone_dashboard/index.js.map +1 -0
  427. package/extension/dist/core/standalone_dashboard/styles.d.ts +6 -0
  428. package/extension/dist/core/standalone_dashboard/styles.d.ts.map +1 -0
  429. package/extension/dist/core/standalone_dashboard/styles.js +9 -0
  430. package/extension/dist/core/standalone_dashboard/styles.js.map +1 -0
  431. package/extension/dist/core/standalone_dashboard.d.ts +6 -0
  432. package/extension/dist/core/standalone_dashboard.d.ts.map +1 -0
  433. package/extension/dist/core/standalone_dashboard.js +9 -0
  434. package/extension/dist/core/standalone_dashboard.js.map +1 -0
  435. package/extension/dist/core/telemetry.d.ts +62 -0
  436. package/extension/dist/core/telemetry.d.ts.map +1 -0
  437. package/extension/dist/core/telemetry.js +9 -0
  438. package/extension/dist/core/telemetry.js.map +1 -0
  439. package/extension/dist/core/transcript_watcher.d.ts +23 -0
  440. package/extension/dist/core/transcript_watcher.d.ts.map +1 -0
  441. package/extension/dist/core/transcript_watcher.js +9 -0
  442. package/extension/dist/core/transcript_watcher.js.map +1 -0
  443. package/extension/dist/core/transcription_refiner.d.ts +34 -0
  444. package/extension/dist/core/transcription_refiner.d.ts.map +1 -0
  445. package/extension/dist/core/transcription_refiner.js +9 -0
  446. package/extension/dist/core/transcription_refiner.js.map +1 -0
  447. package/extension/dist/core/tui_dashboard.d.ts +8 -0
  448. package/extension/dist/core/tui_dashboard.d.ts.map +1 -0
  449. package/extension/dist/core/tui_dashboard.js +9 -0
  450. package/extension/dist/core/tui_dashboard.js.map +1 -0
  451. package/extension/dist/extension.js +9 -0
  452. package/extension/dist/ide_detector.js +9 -0
  453. package/extension/dist/index.js +9 -0
  454. package/extension/dist/remote_actions.js +9 -0
  455. package/extension/dist/sidebar_provider.js +9 -0
  456. package/extension/dist/types.js +9 -0
  457. package/extension/dist/webview/webview_html.js +830 -0
  458. package/extension/dist/webview/webview_scripts.js +701 -0
  459. package/extension/dist/webview/webview_styles.js +1075 -0
  460. package/extension/dist/webview_template.js +9 -0
  461. package/extension/editormate-1.0.0.vsix +0 -0
  462. package/extension/editormate-1.0.1.vsix +0 -0
  463. package/extension/editormate-1.0.2.vsix +0 -0
  464. package/extension/editormate-companion-1.0.0.vsix +0 -0
  465. package/extension/node_modules/.package-lock.json +15 -0
  466. package/extension/node_modules/@types/vscode/LICENSE +21 -0
  467. package/extension/node_modules/@types/vscode/README.md +15 -0
  468. package/extension/node_modules/@types/vscode/index.d.ts +21244 -0
  469. package/extension/node_modules/@types/vscode/package.json +26 -0
  470. package/extension/package-lock.json +25 -0
  471. package/extension/package.json +154 -0
  472. package/extension/scripts/build_protected.js +88 -0
  473. package/extension/scripts/transcribe_audio.py +42 -0
  474. package/extension/src/command_guard.ts +201 -0
  475. package/extension/src/commands_manager.ts +466 -0
  476. package/extension/src/extension.ts +458 -0
  477. package/extension/src/ide_detector.ts +60 -0
  478. package/extension/src/remote_actions.ts +284 -0
  479. package/extension/src/sidebar_provider.ts +471 -0
  480. package/extension/src/webview/webview_html.ts +895 -0
  481. package/extension/src/webview/webview_scripts.ts +698 -0
  482. package/extension/src/webview/webview_styles.ts +1073 -0
  483. package/extension/src/webview_template.ts +33 -0
  484. package/extension/tsconfig.json +16 -0
  485. package/package.json +52 -3
@@ -0,0 +1,466 @@
1
+ /**
2
+ * EditorMate — IDE Commands & Alias Manager
3
+ * Manages EditorMate supported remote commands, 3 custom assignable IDE slots, and aliases.
4
+ */
5
+
6
+ import * as vscode from 'vscode';
7
+ import * as http from 'http';
8
+
9
+ export interface CommandAlias {
10
+ alias: string;
11
+ command: string;
12
+ description?: string;
13
+ createdAt: number;
14
+ }
15
+
16
+ export interface SupportedCommand {
17
+ id: string;
18
+ label: string;
19
+ description: string;
20
+ }
21
+
22
+ export const EDITORMATE_PRIMARY_COMMANDS: SupportedCommand[] = [
23
+ { id: '/status', label: '/status', description: 'Agent Working State & Health' },
24
+ { id: '/snap', label: '/snap', description: 'Capture Silent IDE Window Snapshot' },
25
+ { id: '/terminal', label: '/terminal', description: 'Execute Workstation Shell Command' },
26
+ { id: '/approve', label: '/approve', description: 'One-Tap Turn Approval' },
27
+ ];
28
+
29
+ export const EDITORMATE_BUILTIN_COMMANDS: SupportedCommand[] = [
30
+ ...EDITORMATE_PRIMARY_COMMANDS,
31
+ { id: '/diff', label: '/diff', description: 'Git Modified Status & Diff Summary' },
32
+ { id: '/pdf', label: '/pdf', description: 'Generate Executive PDF Status Report' },
33
+ { id: '/chats', label: '/chats', description: 'Switchboard: List Recent Sessions' },
34
+ { id: '/select', label: '/select', description: 'Switch Active IDE Chat Session' },
35
+ { id: '/reject', label: '/reject', description: 'Decline / Abort Pending Action' },
36
+ { id: '/stop', label: '/stop', description: 'Stop Long-Running Coding Loop' },
37
+ ];
38
+
39
+ export interface IdeCustomSlot {
40
+ slotIndex: number;
41
+ alias: string;
42
+ command: string;
43
+ label: string;
44
+ description: string;
45
+ }
46
+
47
+ export class CommandsManager {
48
+ private _cachedCommands: string[] = [];
49
+ private _lastFetchTime = 0;
50
+
51
+ constructor(private readonly _context: vscode.ExtensionContext) {}
52
+
53
+ /**
54
+ * Retrieves all available IDE commands (cached 60s) for slot assignment.
55
+ */
56
+ public async getAvailableCommands(forceRefresh: boolean = false): Promise<string[]> {
57
+ const now = Date.now();
58
+ if (!forceRefresh && this._cachedCommands.length > 0 && now - this._lastFetchTime < 60000) {
59
+ return this._cachedCommands;
60
+ }
61
+
62
+ try {
63
+ const all = await vscode.commands.getCommands(true);
64
+ this._cachedCommands = all
65
+ .filter(
66
+ (c) =>
67
+ !c.startsWith('_') &&
68
+ !c.includes('internal') &&
69
+ !c.startsWith('vscode.') &&
70
+ (c.includes('.') || c.includes(':'))
71
+ )
72
+ .sort();
73
+ this._lastFetchTime = now;
74
+ return this._cachedCommands;
75
+ } catch {
76
+ return this._cachedCommands;
77
+ }
78
+ }
79
+
80
+ public getPrimaryCommands(): SupportedCommand[] {
81
+ return EDITORMATE_PRIMARY_COMMANDS;
82
+ }
83
+
84
+ public getBuiltinCommands(): SupportedCommand[] {
85
+ return EDITORMATE_BUILTIN_COMMANDS;
86
+ }
87
+
88
+ public getCustomSlots(): IdeCustomSlot[] {
89
+ return (
90
+ this._context.globalState.get<IdeCustomSlot[]>('editormate.ideCustomSlots') || [
91
+ {
92
+ slotIndex: 1,
93
+ alias: 'fmt',
94
+ command: 'editor.action.formatDocument',
95
+ label: 'Format Document',
96
+ description: 'Format active document in editor',
97
+ },
98
+ {
99
+ slotIndex: 2,
100
+ alias: 'save',
101
+ command: 'workbench.action.files.save',
102
+ label: 'Save File',
103
+ description: 'Save current active file',
104
+ },
105
+ {
106
+ slotIndex: 3,
107
+ alias: 'term',
108
+ command: 'workbench.action.terminal.toggleTerminal',
109
+ label: 'Toggle Terminal',
110
+ description: 'Toggle integrated terminal panel',
111
+ },
112
+ ]
113
+ );
114
+ }
115
+
116
+ public async setCustomSlots(slots: IdeCustomSlot[]): Promise<void> {
117
+ await this._context.globalState.update('editormate.ideCustomSlots', slots);
118
+ // Mirror slots to customShortcuts for daemon sync
119
+ const shortcuts = slots.map((s) => ({
120
+ id: String(s.slotIndex),
121
+ label: s.alias,
122
+ command: s.command,
123
+ description: s.description,
124
+ }));
125
+ await this._context.globalState.update('editormate.customShortcuts', shortcuts);
126
+ await this.syncSlotsToDaemon(slots);
127
+ }
128
+
129
+ public async updateSlot(
130
+ slotIndex: number,
131
+ alias: string,
132
+ command: string,
133
+ label?: string
134
+ ): Promise<boolean> {
135
+ const slots = this.getCustomSlots();
136
+ const target = slots.find((s) => s.slotIndex === slotIndex);
137
+ const cleanAlias = alias.trim().replace(/^\//, '').toLowerCase();
138
+ const cleanCmd = command.trim();
139
+ const friendlyLabel = label?.trim() || cleanCmd.split('.').pop() || cleanCmd;
140
+
141
+ if (target) {
142
+ target.alias = cleanAlias;
143
+ target.command = cleanCmd;
144
+ target.label = friendlyLabel;
145
+ target.description = `Execute ${cleanCmd}`;
146
+ } else {
147
+ slots.push({
148
+ slotIndex,
149
+ alias: cleanAlias,
150
+ command: cleanCmd,
151
+ label: friendlyLabel,
152
+ description: `Execute ${cleanCmd}`,
153
+ });
154
+ }
155
+
156
+ await this.setCustomSlots(slots);
157
+ vscode.window.showInformationMessage(`✅ EditorMate: Slot ${slotIndex} updated to /${cleanAlias} ➔ ${cleanCmd}`);
158
+ return true;
159
+ }
160
+
161
+ public async configureSlot(slotIndex: number): Promise<boolean> {
162
+ vscode.window.setStatusBarMessage('🔍 Loading IDE commands...', 1500);
163
+ const commands = await this.getAvailableCommands();
164
+ const picked = await vscode.window.showQuickPick(
165
+ commands.map((c) => ({ label: c, description: 'VS Code Command' })),
166
+ { placeHolder: `Assign IDE Command to Slot ${slotIndex}:` }
167
+ );
168
+ if (!picked) return false;
169
+
170
+ const friendlyLabel = await vscode.window.showInputBox({
171
+ prompt: `Enter friendly label for Slot ${slotIndex} (command: ${picked.label}):`,
172
+ value: picked.label.split('.').pop() || picked.label,
173
+ });
174
+ if (!friendlyLabel) return false;
175
+
176
+ const slots = this.getCustomSlots();
177
+ const target = slots.find((s) => s.slotIndex === slotIndex);
178
+ if (target) {
179
+ target.command = picked.label;
180
+ target.label = friendlyLabel.trim();
181
+ target.description = `Execute ${picked.label}`;
182
+ } else {
183
+ const defaultAlias = slotIndex === 1 ? 'fmt' : slotIndex === 2 ? 'save' : 'term';
184
+ slots.push({
185
+ slotIndex,
186
+ alias: defaultAlias,
187
+ command: picked.label,
188
+ label: friendlyLabel.trim(),
189
+ description: `Execute ${picked.label}`,
190
+ });
191
+ }
192
+ await this.setCustomSlots(slots);
193
+ vscode.window.showInformationMessage(`✅ EditorMate: Slot ${slotIndex} assigned to "${picked.label}"`);
194
+ return true;
195
+ }
196
+
197
+ public async promptConfigureAllSlots(): Promise<void> {
198
+ const slots = this.getCustomSlots();
199
+ const items = slots.map((s) => ({
200
+ label: `Slot ${s.slotIndex}: ${s.label}`,
201
+ description: `➔ ${s.command}`,
202
+ slotIndex: s.slotIndex,
203
+ }));
204
+
205
+ const pick = await vscode.window.showQuickPick(items, {
206
+ placeHolder: 'Select which Assignable IDE Slot to configure:',
207
+ });
208
+
209
+ if (pick) {
210
+ await this.configureSlot(pick.slotIndex);
211
+ }
212
+ }
213
+
214
+ public getAliases(): CommandAlias[] {
215
+ return (
216
+ this._context.globalState.get<CommandAlias[]>('editormate.commandAliases') || [
217
+ { alias: 'fmt', command: 'editor.action.formatDocument', description: 'Format active document', createdAt: Date.now() },
218
+ { alias: 'save', command: 'workbench.action.files.save', description: 'Save current active file', createdAt: Date.now() },
219
+ { alias: 'terminal', command: 'workbench.action.terminal.toggleTerminal', description: 'Toggle integrated terminal', createdAt: Date.now() },
220
+ { alias: 'snap', command: '/snap', description: 'Capture silent IDE window snapshot', createdAt: Date.now() },
221
+ { alias: 'st', command: '/status', description: 'Inspect agent working state', createdAt: Date.now() },
222
+ ]
223
+ );
224
+ }
225
+
226
+ public async setAliases(aliases: CommandAlias[]): Promise<void> {
227
+ await this._context.globalState.update('editormate.commandAliases', aliases);
228
+ const shortcuts = aliases.map((a, i) => ({
229
+ id: String(i + 1),
230
+ label: a.alias,
231
+ command: a.command,
232
+ description: a.description,
233
+ }));
234
+ await this._context.globalState.update('editormate.customShortcuts', shortcuts);
235
+ await this.syncAliasesToDaemon(aliases);
236
+ }
237
+
238
+ public async validateNewAlias(newAlias: string, currentOldAlias?: string): Promise<{ valid: boolean; error?: string; cleanAlias: string }> {
239
+ const cleanAlias = newAlias.trim().toLowerCase().replace(/^\//, '');
240
+ if (!cleanAlias) {
241
+ return { valid: false, error: 'Alias name cannot be empty.', cleanAlias };
242
+ }
243
+
244
+ const existingAliases = this.getAliases();
245
+ const conflictAlias = existingAliases.find(
246
+ (a) => a.alias.toLowerCase() === cleanAlias && a.alias.toLowerCase() !== (currentOldAlias?.toLowerCase() || '')
247
+ );
248
+ if (conflictAlias) {
249
+ return {
250
+ valid: false,
251
+ error: `Alias "${cleanAlias}" is already taken by command "${conflictAlias.command}".`,
252
+ cleanAlias,
253
+ };
254
+ }
255
+
256
+ return { valid: true, cleanAlias };
257
+ }
258
+
259
+ public async addAlias(alias: string, command: string, description?: string): Promise<boolean> {
260
+ const validation = await this.validateNewAlias(alias);
261
+ if (!validation.valid) {
262
+ vscode.window.showErrorMessage(`❌ EditorMate: ${validation.error}`);
263
+ return false;
264
+ }
265
+ const cleanAlias = validation.cleanAlias;
266
+ const aliases = this.getAliases().filter((a) => a.alias.toLowerCase() !== cleanAlias);
267
+ aliases.push({
268
+ alias: cleanAlias,
269
+ command: command.trim(),
270
+ description: description?.trim() || `Execute ${command}`,
271
+ createdAt: Date.now(),
272
+ });
273
+ await this.setAliases(aliases);
274
+ vscode.window.showInformationMessage(`✅ EditorMate: Added alias "/${cleanAlias}" ➔ ${command}`);
275
+ return true;
276
+ }
277
+
278
+ public async editAlias(oldAlias: string, newAlias: string, targetCommand: string): Promise<boolean> {
279
+ const validation = await this.validateNewAlias(newAlias, oldAlias);
280
+ if (!validation.valid) {
281
+ vscode.window.showErrorMessage(`❌ EditorMate: ${validation.error}`);
282
+ return false;
283
+ }
284
+ const cleanNewAlias = validation.cleanAlias;
285
+ const cleanOld = oldAlias.trim().toLowerCase().replace(/^\//, '');
286
+
287
+ const aliases = this.getAliases().filter(
288
+ (a) => a.alias.toLowerCase() !== cleanOld && a.alias.toLowerCase() !== cleanNewAlias
289
+ );
290
+ aliases.push({
291
+ alias: cleanNewAlias,
292
+ command: targetCommand.trim(),
293
+ description: `Execute ${targetCommand}`,
294
+ createdAt: Date.now(),
295
+ });
296
+ await this.setAliases(aliases);
297
+ vscode.window.showInformationMessage(`✅ EditorMate: Updated alias "/${cleanOld}" ➔ "/${cleanNewAlias}"`);
298
+ return true;
299
+ }
300
+
301
+ public async removeAlias(alias: string): Promise<boolean> {
302
+ const aliases = this.getAliases().filter((a) => a.alias.toLowerCase() !== alias.trim().toLowerCase());
303
+ await this.setAliases(aliases);
304
+ vscode.window.showInformationMessage(`🗑️ EditorMate: Removed alias "${alias}"`);
305
+ return true;
306
+ }
307
+
308
+ public findCommandByAlias(input: string): string | null {
309
+ const clean = input.trim().toLowerCase().replace(/^\//, '');
310
+ const slot = this.getCustomSlots().find((s) => s.alias.toLowerCase() === clean);
311
+ if (slot) return slot.command;
312
+ const primary = this.getPrimaryCommands().find((p) => p.id.replace(/^\//, '').toLowerCase() === clean);
313
+ if (primary) return primary.id;
314
+ const match = this.getAliases().find((a) => a.alias.toLowerCase() === clean);
315
+ return match ? match.command : null;
316
+ }
317
+
318
+ /**
319
+ * Prompts user to add an alias for either a supported command or an assignable IDE command.
320
+ */
321
+ public async promptAddAlias(preselectedCommand?: string): Promise<void> {
322
+ let targetCommand = preselectedCommand;
323
+
324
+ if (!targetCommand) {
325
+ const builtin = this.getBuiltinCommands().map((b) => ({
326
+ label: b.id,
327
+ description: b.description,
328
+ detail: 'EditorMate Built-in Remote Command',
329
+ }));
330
+
331
+ const slots = this.getCustomSlots().map((s) => ({
332
+ label: s.command,
333
+ description: `Slot ${s.slotIndex}: ${s.label}`,
334
+ detail: 'Assignable IDE Command',
335
+ }));
336
+
337
+ const picked = await vscode.window.showQuickPick([...builtin, ...slots], {
338
+ placeHolder: 'Select a supported command or assignable slot to create an alias for:',
339
+ });
340
+ if (!picked) return;
341
+ targetCommand = picked.label;
342
+ }
343
+
344
+ const defaultAlias = targetCommand.startsWith('/') ? targetCommand.replace(/^\//, '') : targetCommand.split('.').pop() || '';
345
+ const aliasName = await vscode.window.showInputBox({
346
+ prompt: `Enter alias shortcut name for: ${targetCommand}`,
347
+ placeHolder: 'e.g. s, snap, st, fmt, save, run, test',
348
+ value: defaultAlias,
349
+ validateInput: (val) => (!val || !val.trim() ? 'Alias name cannot be empty' : null),
350
+ });
351
+
352
+ if (!aliasName) return;
353
+
354
+ const desc = await vscode.window.showInputBox({
355
+ prompt: `Optional description for alias "${aliasName.trim()}":`,
356
+ placeHolder: `Runs ${targetCommand}`,
357
+ value: `Runs ${targetCommand}`,
358
+ });
359
+
360
+ await this.addAlias(aliasName.trim(), targetCommand, desc);
361
+ }
362
+
363
+ /**
364
+ * Interactive dropdown to manage, test, or delete existing aliases.
365
+ */
366
+ public async promptManageAliases(): Promise<void> {
367
+ const aliases = this.getAliases();
368
+ const items = [
369
+ { label: '$(plus) Add New Command Alias...', action: 'add' },
370
+ { label: '$(gear) Configure 3 Assignable IDE Slots...', action: 'configureSlots' },
371
+ ...aliases.map((a) => ({
372
+ label: `$(symbol-keyword) /${a.alias}`,
373
+ description: `➔ ${a.command}`,
374
+ detail: a.description || undefined,
375
+ action: 'edit',
376
+ alias: a,
377
+ })),
378
+ ];
379
+
380
+ const pick: any = await vscode.window.showQuickPick(items, {
381
+ placeHolder: 'Manage EditorMate Command Aliases & IDE Slots:',
382
+ });
383
+
384
+ if (!pick) return;
385
+
386
+ if (pick.action === 'add') {
387
+ await this.promptAddAlias();
388
+ } else if (pick.action === 'configureSlots') {
389
+ await this.promptConfigureAllSlots();
390
+ } else if (pick.alias) {
391
+ const a = pick.alias as CommandAlias;
392
+ const subAction = await vscode.window.showQuickPick(
393
+ [
394
+ { label: '$(play) Test Run Command', id: 'run' },
395
+ { label: '$(trash) Delete Alias', id: 'delete' },
396
+ ],
397
+ { placeHolder: `Alias "/${a.alias}" (runs: ${a.command})` }
398
+ );
399
+
400
+ if (subAction?.id === 'run') {
401
+ try {
402
+ if (a.command.startsWith('/')) {
403
+ vscode.window.showInformationMessage(`⚡ EditorMate: Executed remote command ${a.command}`);
404
+ } else {
405
+ await vscode.commands.executeCommand(a.command);
406
+ vscode.window.setStatusBarMessage(`⚡ Executed alias [/${a.alias}]`, 3000);
407
+ }
408
+ } catch (e: any) {
409
+ vscode.window.showErrorMessage(`Failed to run ${a.command}: ${e.message}`);
410
+ }
411
+ } else if (subAction?.id === 'delete') {
412
+ await this.removeAlias(a.alias);
413
+ }
414
+ }
415
+ }
416
+
417
+ private async syncAliasesToDaemon(aliases: CommandAlias[]): Promise<void> {
418
+ try {
419
+ const shortcuts = aliases.slice(0, 8).map((a, i) => ({
420
+ id: String(i + 1),
421
+ label: a.alias,
422
+ command: a.command,
423
+ }));
424
+ const payload = JSON.stringify({ shortcuts });
425
+ const req = http.request(
426
+ 'http://127.0.0.1:4588/api/shortcuts/save',
427
+ {
428
+ method: 'POST',
429
+ headers: {
430
+ 'Content-Type': 'application/json',
431
+ 'Content-Length': Buffer.byteLength(payload),
432
+ },
433
+ },
434
+ () => {}
435
+ );
436
+ req.on('error', () => {});
437
+ req.write(payload);
438
+ req.end();
439
+ } catch {}
440
+ }
441
+
442
+ private async syncSlotsToDaemon(slots: IdeCustomSlot[]): Promise<void> {
443
+ try {
444
+ const shortcuts = slots.map((s) => ({
445
+ id: String(s.slotIndex),
446
+ label: s.alias,
447
+ command: s.command,
448
+ }));
449
+ const payload = JSON.stringify({ shortcuts });
450
+ const req = http.request(
451
+ 'http://127.0.0.1:4588/api/shortcuts/save',
452
+ {
453
+ method: 'POST',
454
+ headers: {
455
+ 'Content-Type': 'application/json',
456
+ 'Content-Length': Buffer.byteLength(payload),
457
+ },
458
+ },
459
+ () => {}
460
+ );
461
+ req.on('error', () => {});
462
+ req.write(payload);
463
+ req.end();
464
+ } catch {}
465
+ }
466
+ }