editormate 1.0.2 → 1.0.7

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 (385) hide show
  1. package/bin/cli.js +113 -12
  2. package/dist/adapters/ide/ide_adapters.js +147 -7
  3. package/dist/adapters/messaging/discord_adapter.js +606 -7
  4. package/dist/adapters/messaging/discord_menu.js +125 -7
  5. package/dist/adapters/messaging/matrix_adapter.js +98 -7
  6. package/dist/adapters/messaging/slack_adapter.js +420 -7
  7. package/dist/adapters/messaging/telegram_adapter.d.ts.map +1 -1
  8. package/dist/adapters/messaging/telegram_adapter.js +634 -7
  9. package/dist/adapters/messaging/telegram_adapter.js.map +1 -1
  10. package/dist/adapters/messaging/telegram_client.js +383 -7
  11. package/dist/adapters/messaging/telegram_keyboards.js +219 -7
  12. package/dist/adapters/messaging/whatsapp_adapter.js +153 -7
  13. package/dist/adapters/messaging/whatsapp_baileys.js +880 -7
  14. package/dist/core/blocking_prompt_bridge.js +255 -7
  15. package/dist/core/chat_switchboard.js +243 -7
  16. package/dist/core/companion_daemon.d.ts +4 -0
  17. package/dist/core/companion_daemon.d.ts.map +1 -1
  18. package/dist/core/companion_daemon.js +1191 -7
  19. package/dist/core/companion_daemon.js.map +1 -1
  20. package/dist/core/email_reporter.js +510 -7
  21. package/dist/core/licensing.d.ts.map +1 -1
  22. package/dist/core/licensing.js +335 -7
  23. package/dist/core/licensing.js.map +1 -1
  24. package/dist/core/media_handler.js +449 -7
  25. package/dist/core/os_keychain.js +155 -7
  26. package/dist/core/outbound_dispatcher.js +80 -7
  27. package/dist/core/pdf_generator.js +226 -7
  28. package/dist/core/process_checker.js +47 -7
  29. package/dist/core/prompt_sanitizer.js +93 -7
  30. package/dist/core/security.js +385 -7
  31. package/dist/core/session_manager.d.ts.map +1 -1
  32. package/dist/core/session_manager.js +1241 -7
  33. package/dist/core/session_manager.js.map +1 -1
  34. package/dist/core/standalone_dashboard/client_script.js +479 -7
  35. package/dist/core/standalone_dashboard/components/header.js +23 -7
  36. package/dist/core/standalone_dashboard/components/modals.js +11 -7
  37. package/dist/core/standalone_dashboard/components/remote_deck.js +228 -7
  38. package/dist/core/standalone_dashboard/components/settings_deck.js +205 -7
  39. package/dist/core/standalone_dashboard/index.js +49 -7
  40. package/dist/core/standalone_dashboard/styles.js +546 -7
  41. package/dist/core/standalone_dashboard.js +4 -7
  42. package/dist/core/telemetry.js +225 -7
  43. package/dist/core/transcript_watcher.d.ts.map +1 -1
  44. package/dist/core/transcript_watcher.js +257 -7
  45. package/dist/core/transcript_watcher.js.map +1 -1
  46. package/dist/core/transcription_refiner.js +203 -7
  47. package/dist/core/tui_dashboard.js +454 -7
  48. package/dist/index.js +13 -7
  49. package/dist/types.js +12 -7
  50. package/extension/editormate-1.0.7.vsix +0 -0
  51. package/extension/editormate-latest.vsix +0 -0
  52. package/package.json +4 -3
  53. package/extension/.vscodeignore +0 -4
  54. package/extension/LICENSE.md +0 -31
  55. package/extension/README.md +0 -55
  56. package/extension/assets/icon.png +0 -0
  57. package/extension/assets/icon.svg +0 -16
  58. package/extension/bin/cli.js +0 -264
  59. package/extension/bin/package.json +0 -3
  60. package/extension/daemon/adapters/ide/ide_adapters.d.ts +0 -45
  61. package/extension/daemon/adapters/ide/ide_adapters.d.ts.map +0 -1
  62. package/extension/daemon/adapters/ide/ide_adapters.js +0 -9
  63. package/extension/daemon/adapters/ide/ide_adapters.js.map +0 -1
  64. package/extension/daemon/adapters/messaging/discord_adapter.d.ts +0 -56
  65. package/extension/daemon/adapters/messaging/discord_adapter.d.ts.map +0 -1
  66. package/extension/daemon/adapters/messaging/discord_adapter.js +0 -9
  67. package/extension/daemon/adapters/messaging/discord_adapter.js.map +0 -1
  68. package/extension/daemon/adapters/messaging/discord_menu.d.ts +0 -15
  69. package/extension/daemon/adapters/messaging/discord_menu.d.ts.map +0 -1
  70. package/extension/daemon/adapters/messaging/discord_menu.js +0 -9
  71. package/extension/daemon/adapters/messaging/discord_menu.js.map +0 -1
  72. package/extension/daemon/adapters/messaging/matrix_adapter.d.ts +0 -39
  73. package/extension/daemon/adapters/messaging/matrix_adapter.d.ts.map +0 -1
  74. package/extension/daemon/adapters/messaging/matrix_adapter.js +0 -9
  75. package/extension/daemon/adapters/messaging/matrix_adapter.js.map +0 -1
  76. package/extension/daemon/adapters/messaging/slack_adapter.d.ts +0 -115
  77. package/extension/daemon/adapters/messaging/slack_adapter.d.ts.map +0 -1
  78. package/extension/daemon/adapters/messaging/slack_adapter.js +0 -9
  79. package/extension/daemon/adapters/messaging/slack_adapter.js.map +0 -1
  80. package/extension/daemon/adapters/messaging/telegram_adapter.d.ts +0 -90
  81. package/extension/daemon/adapters/messaging/telegram_adapter.d.ts.map +0 -1
  82. package/extension/daemon/adapters/messaging/telegram_adapter.js +0 -9
  83. package/extension/daemon/adapters/messaging/telegram_adapter.js.map +0 -1
  84. package/extension/daemon/adapters/messaging/telegram_client.d.ts +0 -75
  85. package/extension/daemon/adapters/messaging/telegram_client.d.ts.map +0 -1
  86. package/extension/daemon/adapters/messaging/telegram_client.js +0 -9
  87. package/extension/daemon/adapters/messaging/telegram_client.js.map +0 -1
  88. package/extension/daemon/adapters/messaging/telegram_keyboards.d.ts +0 -55
  89. package/extension/daemon/adapters/messaging/telegram_keyboards.d.ts.map +0 -1
  90. package/extension/daemon/adapters/messaging/telegram_keyboards.js +0 -9
  91. package/extension/daemon/adapters/messaging/telegram_keyboards.js.map +0 -1
  92. package/extension/daemon/adapters/messaging/whatsapp_adapter.d.ts +0 -30
  93. package/extension/daemon/adapters/messaging/whatsapp_adapter.d.ts.map +0 -1
  94. package/extension/daemon/adapters/messaging/whatsapp_adapter.js +0 -9
  95. package/extension/daemon/adapters/messaging/whatsapp_adapter.js.map +0 -1
  96. package/extension/daemon/adapters/messaging/whatsapp_baileys.d.ts +0 -84
  97. package/extension/daemon/adapters/messaging/whatsapp_baileys.d.ts.map +0 -1
  98. package/extension/daemon/adapters/messaging/whatsapp_baileys.js +0 -9
  99. package/extension/daemon/adapters/messaging/whatsapp_baileys.js.map +0 -1
  100. package/extension/daemon/core/blocking_prompt_bridge.d.ts +0 -99
  101. package/extension/daemon/core/blocking_prompt_bridge.d.ts.map +0 -1
  102. package/extension/daemon/core/blocking_prompt_bridge.js +0 -9
  103. package/extension/daemon/core/blocking_prompt_bridge.js.map +0 -1
  104. package/extension/daemon/core/chat_switchboard.d.ts +0 -35
  105. package/extension/daemon/core/chat_switchboard.d.ts.map +0 -1
  106. package/extension/daemon/core/chat_switchboard.js +0 -9
  107. package/extension/daemon/core/chat_switchboard.js.map +0 -1
  108. package/extension/daemon/core/companion_daemon.d.ts +0 -23
  109. package/extension/daemon/core/companion_daemon.d.ts.map +0 -1
  110. package/extension/daemon/core/companion_daemon.js +0 -9
  111. package/extension/daemon/core/companion_daemon.js.map +0 -1
  112. package/extension/daemon/core/email_reporter.d.ts +0 -109
  113. package/extension/daemon/core/email_reporter.d.ts.map +0 -1
  114. package/extension/daemon/core/email_reporter.js +0 -9
  115. package/extension/daemon/core/email_reporter.js.map +0 -1
  116. package/extension/daemon/core/licensing.d.ts +0 -44
  117. package/extension/daemon/core/licensing.d.ts.map +0 -1
  118. package/extension/daemon/core/licensing.js +0 -9
  119. package/extension/daemon/core/licensing.js.map +0 -1
  120. package/extension/daemon/core/media_handler.d.ts +0 -67
  121. package/extension/daemon/core/media_handler.d.ts.map +0 -1
  122. package/extension/daemon/core/media_handler.js +0 -9
  123. package/extension/daemon/core/media_handler.js.map +0 -1
  124. package/extension/daemon/core/os_keychain.d.ts +0 -41
  125. package/extension/daemon/core/os_keychain.d.ts.map +0 -1
  126. package/extension/daemon/core/os_keychain.js +0 -9
  127. package/extension/daemon/core/os_keychain.js.map +0 -1
  128. package/extension/daemon/core/outbound_dispatcher.d.ts +0 -33
  129. package/extension/daemon/core/outbound_dispatcher.d.ts.map +0 -1
  130. package/extension/daemon/core/outbound_dispatcher.js +0 -9
  131. package/extension/daemon/core/outbound_dispatcher.js.map +0 -1
  132. package/extension/daemon/core/pdf_generator.d.ts +0 -66
  133. package/extension/daemon/core/pdf_generator.d.ts.map +0 -1
  134. package/extension/daemon/core/pdf_generator.js +0 -9
  135. package/extension/daemon/core/pdf_generator.js.map +0 -1
  136. package/extension/daemon/core/process_checker.d.ts +0 -10
  137. package/extension/daemon/core/process_checker.d.ts.map +0 -1
  138. package/extension/daemon/core/process_checker.js +0 -9
  139. package/extension/daemon/core/process_checker.js.map +0 -1
  140. package/extension/daemon/core/prompt_sanitizer.d.ts +0 -15
  141. package/extension/daemon/core/prompt_sanitizer.d.ts.map +0 -1
  142. package/extension/daemon/core/prompt_sanitizer.js +0 -9
  143. package/extension/daemon/core/prompt_sanitizer.js.map +0 -1
  144. package/extension/daemon/core/security.d.ts +0 -75
  145. package/extension/daemon/core/security.d.ts.map +0 -1
  146. package/extension/daemon/core/security.js +0 -9
  147. package/extension/daemon/core/security.js.map +0 -1
  148. package/extension/daemon/core/session_manager.d.ts +0 -67
  149. package/extension/daemon/core/session_manager.d.ts.map +0 -1
  150. package/extension/daemon/core/session_manager.js +0 -9
  151. package/extension/daemon/core/session_manager.js.map +0 -1
  152. package/extension/daemon/core/standalone_dashboard/client_script.d.ts +0 -5
  153. package/extension/daemon/core/standalone_dashboard/client_script.d.ts.map +0 -1
  154. package/extension/daemon/core/standalone_dashboard/client_script.js +0 -9
  155. package/extension/daemon/core/standalone_dashboard/client_script.js.map +0 -1
  156. package/extension/daemon/core/standalone_dashboard/components/header.d.ts +0 -5
  157. package/extension/daemon/core/standalone_dashboard/components/header.d.ts.map +0 -1
  158. package/extension/daemon/core/standalone_dashboard/components/header.js +0 -9
  159. package/extension/daemon/core/standalone_dashboard/components/header.js.map +0 -1
  160. package/extension/daemon/core/standalone_dashboard/components/modals.d.ts +0 -5
  161. package/extension/daemon/core/standalone_dashboard/components/modals.d.ts.map +0 -1
  162. package/extension/daemon/core/standalone_dashboard/components/modals.js +0 -9
  163. package/extension/daemon/core/standalone_dashboard/components/modals.js.map +0 -1
  164. package/extension/daemon/core/standalone_dashboard/components/remote_deck.d.ts +0 -5
  165. package/extension/daemon/core/standalone_dashboard/components/remote_deck.d.ts.map +0 -1
  166. package/extension/daemon/core/standalone_dashboard/components/remote_deck.js +0 -9
  167. package/extension/daemon/core/standalone_dashboard/components/remote_deck.js.map +0 -1
  168. package/extension/daemon/core/standalone_dashboard/components/settings_deck.d.ts +0 -5
  169. package/extension/daemon/core/standalone_dashboard/components/settings_deck.d.ts.map +0 -1
  170. package/extension/daemon/core/standalone_dashboard/components/settings_deck.js +0 -9
  171. package/extension/daemon/core/standalone_dashboard/components/settings_deck.js.map +0 -1
  172. package/extension/daemon/core/standalone_dashboard/index.d.ts +0 -13
  173. package/extension/daemon/core/standalone_dashboard/index.d.ts.map +0 -1
  174. package/extension/daemon/core/standalone_dashboard/index.js +0 -9
  175. package/extension/daemon/core/standalone_dashboard/index.js.map +0 -1
  176. package/extension/daemon/core/standalone_dashboard/styles.d.ts +0 -6
  177. package/extension/daemon/core/standalone_dashboard/styles.d.ts.map +0 -1
  178. package/extension/daemon/core/standalone_dashboard/styles.js +0 -9
  179. package/extension/daemon/core/standalone_dashboard/styles.js.map +0 -1
  180. package/extension/daemon/core/standalone_dashboard.d.ts +0 -6
  181. package/extension/daemon/core/standalone_dashboard.d.ts.map +0 -1
  182. package/extension/daemon/core/standalone_dashboard.js +0 -9
  183. package/extension/daemon/core/standalone_dashboard.js.map +0 -1
  184. package/extension/daemon/core/telemetry.d.ts +0 -62
  185. package/extension/daemon/core/telemetry.d.ts.map +0 -1
  186. package/extension/daemon/core/telemetry.js +0 -9
  187. package/extension/daemon/core/telemetry.js.map +0 -1
  188. package/extension/daemon/core/transcript_watcher.d.ts +0 -23
  189. package/extension/daemon/core/transcript_watcher.d.ts.map +0 -1
  190. package/extension/daemon/core/transcript_watcher.js +0 -9
  191. package/extension/daemon/core/transcript_watcher.js.map +0 -1
  192. package/extension/daemon/core/transcription_refiner.d.ts +0 -34
  193. package/extension/daemon/core/transcription_refiner.d.ts.map +0 -1
  194. package/extension/daemon/core/transcription_refiner.js +0 -9
  195. package/extension/daemon/core/transcription_refiner.js.map +0 -1
  196. package/extension/daemon/core/tui_dashboard.d.ts +0 -8
  197. package/extension/daemon/core/tui_dashboard.d.ts.map +0 -1
  198. package/extension/daemon/core/tui_dashboard.js +0 -9
  199. package/extension/daemon/core/tui_dashboard.js.map +0 -1
  200. package/extension/daemon/index.d.ts +0 -15
  201. package/extension/daemon/index.d.ts.map +0 -1
  202. package/extension/daemon/index.js +0 -9
  203. package/extension/daemon/index.js.map +0 -1
  204. package/extension/daemon/types.d.ts +0 -159
  205. package/extension/daemon/types.d.ts.map +0 -1
  206. package/extension/daemon/types.js +0 -9
  207. package/extension/daemon/types.js.map +0 -1
  208. package/extension/dist/adapters/ide/ide_adapters.d.ts +0 -45
  209. package/extension/dist/adapters/ide/ide_adapters.d.ts.map +0 -1
  210. package/extension/dist/adapters/ide/ide_adapters.js +0 -9
  211. package/extension/dist/adapters/ide/ide_adapters.js.map +0 -1
  212. package/extension/dist/adapters/messaging/discord_adapter.d.ts +0 -56
  213. package/extension/dist/adapters/messaging/discord_adapter.d.ts.map +0 -1
  214. package/extension/dist/adapters/messaging/discord_adapter.js +0 -9
  215. package/extension/dist/adapters/messaging/discord_adapter.js.map +0 -1
  216. package/extension/dist/adapters/messaging/discord_menu.d.ts +0 -15
  217. package/extension/dist/adapters/messaging/discord_menu.d.ts.map +0 -1
  218. package/extension/dist/adapters/messaging/discord_menu.js +0 -9
  219. package/extension/dist/adapters/messaging/discord_menu.js.map +0 -1
  220. package/extension/dist/adapters/messaging/matrix_adapter.d.ts +0 -39
  221. package/extension/dist/adapters/messaging/matrix_adapter.d.ts.map +0 -1
  222. package/extension/dist/adapters/messaging/matrix_adapter.js +0 -9
  223. package/extension/dist/adapters/messaging/matrix_adapter.js.map +0 -1
  224. package/extension/dist/adapters/messaging/slack_adapter.d.ts +0 -115
  225. package/extension/dist/adapters/messaging/slack_adapter.d.ts.map +0 -1
  226. package/extension/dist/adapters/messaging/slack_adapter.js +0 -9
  227. package/extension/dist/adapters/messaging/slack_adapter.js.map +0 -1
  228. package/extension/dist/adapters/messaging/telegram_adapter.d.ts +0 -90
  229. package/extension/dist/adapters/messaging/telegram_adapter.d.ts.map +0 -1
  230. package/extension/dist/adapters/messaging/telegram_adapter.js +0 -9
  231. package/extension/dist/adapters/messaging/telegram_adapter.js.map +0 -1
  232. package/extension/dist/adapters/messaging/telegram_client.d.ts +0 -75
  233. package/extension/dist/adapters/messaging/telegram_client.d.ts.map +0 -1
  234. package/extension/dist/adapters/messaging/telegram_client.js +0 -9
  235. package/extension/dist/adapters/messaging/telegram_client.js.map +0 -1
  236. package/extension/dist/adapters/messaging/telegram_keyboards.d.ts +0 -55
  237. package/extension/dist/adapters/messaging/telegram_keyboards.d.ts.map +0 -1
  238. package/extension/dist/adapters/messaging/telegram_keyboards.js +0 -9
  239. package/extension/dist/adapters/messaging/telegram_keyboards.js.map +0 -1
  240. package/extension/dist/adapters/messaging/whatsapp_adapter.d.ts +0 -30
  241. package/extension/dist/adapters/messaging/whatsapp_adapter.d.ts.map +0 -1
  242. package/extension/dist/adapters/messaging/whatsapp_adapter.js +0 -9
  243. package/extension/dist/adapters/messaging/whatsapp_adapter.js.map +0 -1
  244. package/extension/dist/adapters/messaging/whatsapp_baileys.d.ts +0 -84
  245. package/extension/dist/adapters/messaging/whatsapp_baileys.d.ts.map +0 -1
  246. package/extension/dist/adapters/messaging/whatsapp_baileys.js +0 -9
  247. package/extension/dist/adapters/messaging/whatsapp_baileys.js.map +0 -1
  248. package/extension/dist/adapters/package.json +0 -3
  249. package/extension/dist/command_guard.js +0 -9
  250. package/extension/dist/commands_manager.js +0 -9
  251. package/extension/dist/core/blocking_prompt_bridge.d.ts +0 -99
  252. package/extension/dist/core/blocking_prompt_bridge.d.ts.map +0 -1
  253. package/extension/dist/core/blocking_prompt_bridge.js +0 -9
  254. package/extension/dist/core/blocking_prompt_bridge.js.map +0 -1
  255. package/extension/dist/core/chat_switchboard.d.ts +0 -35
  256. package/extension/dist/core/chat_switchboard.d.ts.map +0 -1
  257. package/extension/dist/core/chat_switchboard.js +0 -9
  258. package/extension/dist/core/chat_switchboard.js.map +0 -1
  259. package/extension/dist/core/companion_daemon.d.ts +0 -23
  260. package/extension/dist/core/companion_daemon.d.ts.map +0 -1
  261. package/extension/dist/core/companion_daemon.js +0 -9
  262. package/extension/dist/core/companion_daemon.js.map +0 -1
  263. package/extension/dist/core/email_reporter.d.ts +0 -109
  264. package/extension/dist/core/email_reporter.d.ts.map +0 -1
  265. package/extension/dist/core/email_reporter.js +0 -9
  266. package/extension/dist/core/email_reporter.js.map +0 -1
  267. package/extension/dist/core/licensing.d.ts +0 -44
  268. package/extension/dist/core/licensing.d.ts.map +0 -1
  269. package/extension/dist/core/licensing.js +0 -9
  270. package/extension/dist/core/licensing.js.map +0 -1
  271. package/extension/dist/core/media_handler.d.ts +0 -67
  272. package/extension/dist/core/media_handler.d.ts.map +0 -1
  273. package/extension/dist/core/media_handler.js +0 -9
  274. package/extension/dist/core/media_handler.js.map +0 -1
  275. package/extension/dist/core/os_keychain.d.ts +0 -41
  276. package/extension/dist/core/os_keychain.d.ts.map +0 -1
  277. package/extension/dist/core/os_keychain.js +0 -9
  278. package/extension/dist/core/os_keychain.js.map +0 -1
  279. package/extension/dist/core/outbound_dispatcher.d.ts +0 -33
  280. package/extension/dist/core/outbound_dispatcher.d.ts.map +0 -1
  281. package/extension/dist/core/outbound_dispatcher.js +0 -9
  282. package/extension/dist/core/outbound_dispatcher.js.map +0 -1
  283. package/extension/dist/core/package.json +0 -3
  284. package/extension/dist/core/pdf_generator.d.ts +0 -66
  285. package/extension/dist/core/pdf_generator.d.ts.map +0 -1
  286. package/extension/dist/core/pdf_generator.js +0 -9
  287. package/extension/dist/core/pdf_generator.js.map +0 -1
  288. package/extension/dist/core/process_checker.d.ts +0 -10
  289. package/extension/dist/core/process_checker.d.ts.map +0 -1
  290. package/extension/dist/core/process_checker.js +0 -9
  291. package/extension/dist/core/process_checker.js.map +0 -1
  292. package/extension/dist/core/prompt_sanitizer.d.ts +0 -15
  293. package/extension/dist/core/prompt_sanitizer.d.ts.map +0 -1
  294. package/extension/dist/core/prompt_sanitizer.js +0 -9
  295. package/extension/dist/core/prompt_sanitizer.js.map +0 -1
  296. package/extension/dist/core/security.d.ts +0 -75
  297. package/extension/dist/core/security.d.ts.map +0 -1
  298. package/extension/dist/core/security.js +0 -9
  299. package/extension/dist/core/security.js.map +0 -1
  300. package/extension/dist/core/session_manager.d.ts +0 -67
  301. package/extension/dist/core/session_manager.d.ts.map +0 -1
  302. package/extension/dist/core/session_manager.js +0 -9
  303. package/extension/dist/core/session_manager.js.map +0 -1
  304. package/extension/dist/core/standalone_dashboard/client_script.d.ts +0 -5
  305. package/extension/dist/core/standalone_dashboard/client_script.d.ts.map +0 -1
  306. package/extension/dist/core/standalone_dashboard/client_script.js +0 -9
  307. package/extension/dist/core/standalone_dashboard/client_script.js.map +0 -1
  308. package/extension/dist/core/standalone_dashboard/components/header.d.ts +0 -5
  309. package/extension/dist/core/standalone_dashboard/components/header.d.ts.map +0 -1
  310. package/extension/dist/core/standalone_dashboard/components/header.js +0 -9
  311. package/extension/dist/core/standalone_dashboard/components/header.js.map +0 -1
  312. package/extension/dist/core/standalone_dashboard/components/modals.d.ts +0 -5
  313. package/extension/dist/core/standalone_dashboard/components/modals.d.ts.map +0 -1
  314. package/extension/dist/core/standalone_dashboard/components/modals.js +0 -9
  315. package/extension/dist/core/standalone_dashboard/components/modals.js.map +0 -1
  316. package/extension/dist/core/standalone_dashboard/components/remote_deck.d.ts +0 -5
  317. package/extension/dist/core/standalone_dashboard/components/remote_deck.d.ts.map +0 -1
  318. package/extension/dist/core/standalone_dashboard/components/remote_deck.js +0 -9
  319. package/extension/dist/core/standalone_dashboard/components/remote_deck.js.map +0 -1
  320. package/extension/dist/core/standalone_dashboard/components/settings_deck.d.ts +0 -5
  321. package/extension/dist/core/standalone_dashboard/components/settings_deck.d.ts.map +0 -1
  322. package/extension/dist/core/standalone_dashboard/components/settings_deck.js +0 -9
  323. package/extension/dist/core/standalone_dashboard/components/settings_deck.js.map +0 -1
  324. package/extension/dist/core/standalone_dashboard/index.d.ts +0 -13
  325. package/extension/dist/core/standalone_dashboard/index.d.ts.map +0 -1
  326. package/extension/dist/core/standalone_dashboard/index.js +0 -9
  327. package/extension/dist/core/standalone_dashboard/index.js.map +0 -1
  328. package/extension/dist/core/standalone_dashboard/styles.d.ts +0 -6
  329. package/extension/dist/core/standalone_dashboard/styles.d.ts.map +0 -1
  330. package/extension/dist/core/standalone_dashboard/styles.js +0 -9
  331. package/extension/dist/core/standalone_dashboard/styles.js.map +0 -1
  332. package/extension/dist/core/standalone_dashboard.d.ts +0 -6
  333. package/extension/dist/core/standalone_dashboard.d.ts.map +0 -1
  334. package/extension/dist/core/standalone_dashboard.js +0 -9
  335. package/extension/dist/core/standalone_dashboard.js.map +0 -1
  336. package/extension/dist/core/telemetry.d.ts +0 -62
  337. package/extension/dist/core/telemetry.d.ts.map +0 -1
  338. package/extension/dist/core/telemetry.js +0 -9
  339. package/extension/dist/core/telemetry.js.map +0 -1
  340. package/extension/dist/core/transcript_watcher.d.ts +0 -23
  341. package/extension/dist/core/transcript_watcher.d.ts.map +0 -1
  342. package/extension/dist/core/transcript_watcher.js +0 -9
  343. package/extension/dist/core/transcript_watcher.js.map +0 -1
  344. package/extension/dist/core/transcription_refiner.d.ts +0 -34
  345. package/extension/dist/core/transcription_refiner.d.ts.map +0 -1
  346. package/extension/dist/core/transcription_refiner.js +0 -9
  347. package/extension/dist/core/transcription_refiner.js.map +0 -1
  348. package/extension/dist/core/tui_dashboard.d.ts +0 -8
  349. package/extension/dist/core/tui_dashboard.d.ts.map +0 -1
  350. package/extension/dist/core/tui_dashboard.js +0 -9
  351. package/extension/dist/core/tui_dashboard.js.map +0 -1
  352. package/extension/dist/extension.js +0 -9
  353. package/extension/dist/ide_detector.js +0 -9
  354. package/extension/dist/index.js +0 -9
  355. package/extension/dist/remote_actions.js +0 -9
  356. package/extension/dist/sidebar_provider.js +0 -9
  357. package/extension/dist/types.js +0 -9
  358. package/extension/dist/webview/webview_html.js +0 -830
  359. package/extension/dist/webview/webview_scripts.js +0 -701
  360. package/extension/dist/webview/webview_styles.js +0 -1075
  361. package/extension/dist/webview_template.js +0 -9
  362. package/extension/editormate-1.0.0.vsix +0 -0
  363. package/extension/editormate-1.0.1.vsix +0 -0
  364. package/extension/editormate-1.0.2.vsix +0 -0
  365. package/extension/editormate-companion-1.0.0.vsix +0 -0
  366. package/extension/node_modules/.package-lock.json +0 -15
  367. package/extension/node_modules/@types/vscode/LICENSE +0 -21
  368. package/extension/node_modules/@types/vscode/README.md +0 -15
  369. package/extension/node_modules/@types/vscode/index.d.ts +0 -21244
  370. package/extension/node_modules/@types/vscode/package.json +0 -26
  371. package/extension/package-lock.json +0 -25
  372. package/extension/package.json +0 -154
  373. package/extension/scripts/build_protected.js +0 -88
  374. package/extension/scripts/transcribe_audio.py +0 -42
  375. package/extension/src/command_guard.ts +0 -201
  376. package/extension/src/commands_manager.ts +0 -466
  377. package/extension/src/extension.ts +0 -458
  378. package/extension/src/ide_detector.ts +0 -60
  379. package/extension/src/remote_actions.ts +0 -284
  380. package/extension/src/sidebar_provider.ts +0 -471
  381. package/extension/src/webview/webview_html.ts +0 -895
  382. package/extension/src/webview/webview_scripts.ts +0 -698
  383. package/extension/src/webview/webview_styles.ts +0 -1073
  384. package/extension/src/webview_template.ts +0 -33
  385. package/extension/tsconfig.json +0 -16
@@ -1,458 +0,0 @@
1
- import * as vscode from 'vscode';
2
- import * as http from 'http';
3
- import * as os from 'os';
4
- import * as fs from 'fs';
5
- import * as path from 'path';
6
- import * as child_process from 'child_process';
7
- import { EditorMateViewProvider } from './sidebar_provider';
8
- import { getRealIdeName } from './ide_detector';
9
-
10
- export function activate(context: vscode.ExtensionContext) {
11
- // 0. Check Companion Daemon health
12
- ensureDaemonRunning(context);
13
-
14
- // 1. Bottom Status Bar Item (Click directly opens sidebar)
15
- const savedIcon = context.globalState.get<string>('editormate.icon') || 'remote';
16
- const statusBar = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 100);
17
- statusBar.text = `$(${savedIcon}) EditorMate`;
18
- statusBar.tooltip = 'EditorMate — Companion Status & Workflow Monitor • Click to open sidebar';
19
- statusBar.command = 'editormate.openSidebar';
20
- statusBar.show();
21
- context.subscriptions.push(statusBar);
22
-
23
- // 2. Webview Control Panel Provider (Activity Bar & Explorer Sidebar)
24
- const provider = new EditorMateViewProvider(context.extensionUri, context);
25
- provider.setStatusBarItem(statusBar);
26
- context.subscriptions.push(
27
- vscode.window.registerWebviewViewProvider('editormate.controlPanel', provider, {
28
- webviewOptions: { retainContextWhenHidden: true }
29
- }),
30
- vscode.window.registerWebviewViewProvider('editormate.explorerPanel', provider, {
31
- webviewOptions: { retainContextWhenHidden: true }
32
- })
33
- );
34
-
35
- // 3. Helper: Route incoming mobile message directly to the desired chat surface
36
- async function dispatchToIdeAgent(text: string, autoSubmit: boolean = false): Promise<boolean> {
37
- try {
38
- const allCmds = new Set(await vscode.commands.getCommands(true));
39
-
40
- // 1. Antigravity IDE Native AI Agent Panel
41
- if (allCmds.has('antigravity.sendPromptToAgentPanel')) {
42
- if (allCmds.has('antigravity.openAgent')) {
43
- try { await vscode.commands.executeCommand('antigravity.openAgent'); } catch {}
44
- }
45
- await vscode.commands.executeCommand('antigravity.sendPromptToAgentPanel', text);
46
- return true;
47
- }
48
-
49
- // 2. Cursor IDE Chat
50
- if (allCmds.has('cursor.chat')) {
51
- await vscode.commands.executeCommand('cursor.chat', text);
52
- return true;
53
- }
54
-
55
- // 3. VS Code Copilot Chat
56
- if (allCmds.has('workbench.action.chat.open')) {
57
- await vscode.commands.executeCommand('workbench.action.chat.open', {
58
- query: text,
59
- isPartialQuery: !autoSubmit
60
- });
61
- if (autoSubmit) {
62
- setTimeout(async () => {
63
- try { await vscode.commands.executeCommand('workbench.action.chat.submit'); } catch {}
64
- }, 150);
65
- }
66
- return true;
67
- }
68
-
69
- // 4. Quick Chat fallback
70
- if (allCmds.has('workbench.action.quickchat.toggle')) {
71
- await vscode.commands.executeCommand('workbench.action.quickchat.toggle');
72
- return true;
73
- }
74
- } catch {}
75
- return false;
76
- }
77
-
78
- function cleanIncomingPrompt(raw: string): string {
79
- if (!raw) return '';
80
- let text = raw;
81
- const userReq = text.match(/<USER_REQUEST>([\s\S]*?)<\/USER_REQUEST>/i);
82
- if (userReq) text = userReq[1];
83
- text = text.replace(/<ADDITIONAL_METADATA>[\s\S]*?<\/ADDITIONAL_METADATA>/gi, '');
84
- text = text.replace(/<ADDITIONAL_METADATA>[\s\S]*$/gi, '');
85
- text = text.replace(/<\/?(USER_REQUEST|ADDITIONAL_METADATA|USER_SETTINGS_CHANGE|SYSTEM_MESSAGE)[^>]*>/gi, '');
86
- text = text.replace(/The user has uploaded \d+ audio file\(s\)\. Consider them as a part of their message\./gi, '');
87
- return text.trim();
88
- }
89
-
90
- async function routeMessageToChat(rawText: string, sender: string, forcedRouting?: string) {
91
- const text = cleanIncomingPrompt(rawText) || rawText;
92
- const config = vscode.workspace.getConfiguration('editormate');
93
- const mode = forcedRouting ||
94
- context.globalState.get<string>('editormate.chatRouting') ||
95
- config.get<string>('chatRouting', 'autoPin');
96
-
97
- // 1. Always copy to clipboard for instant pasting anywhere
98
- try {
99
- await vscode.env.clipboard.writeText(text);
100
- } catch {}
101
-
102
- // 2. Insert into active text editor if configured
103
- if (mode === 'insertEditor') {
104
- const activeEditor = vscode.window.activeTextEditor;
105
- if (activeEditor) {
106
- activeEditor.edit((builder) => {
107
- builder.insert(activeEditor.selection.active, text);
108
- });
109
- }
110
- }
111
-
112
- // 3. Direct injection into active AI chat surface (clean message only)
113
- const agentPayload = text;
114
- const injected = await dispatchToIdeAgent(agentPayload, mode === 'autoSubmit');
115
-
116
- // 4. Interactive Notification Toast
117
- const preview = text.length > 60 ? text.substring(0, 57) + '...' : text;
118
- vscode.window.showInformationMessage(
119
- `📱 Mobile [${sender}]: ${preview}`,
120
- '💬 Send to Agent',
121
- '📝 Insert in Editor',
122
- '📋 Copy'
123
- ).then(async (action) => {
124
- if (action === '💬 Send to Agent') {
125
- await dispatchToIdeAgent(text, true);
126
- } else if (action === '📝 Insert in Editor') {
127
- const editor = vscode.window.activeTextEditor;
128
- if (editor) {
129
- editor.edit((builder) => {
130
- builder.insert(editor.selection.active, text);
131
- });
132
- } else {
133
- vscode.window.showWarningMessage('No active editor open to insert text.');
134
- }
135
- } else if (action === '📋 Copy') {
136
- await vscode.env.clipboard.writeText(text);
137
- }
138
- });
139
- }
140
-
141
- async function resolvePendingIdeApprovals(type: 'allow' | 'allow_conversation' | 'allow_all' | 'deny'): Promise<void> {
142
- try {
143
- // 0. Resolve any active CommandGuard prompt promises
144
- await provider.guard.resolvePendingExecution(type === 'deny' ? 'deny' : (type === 'allow_all' ? 'allow_all' : 'allow'));
145
-
146
- // 1. If allow_all, update execution guard mode
147
- if (type === 'allow_all') {
148
- try { await provider.guard.setApprovalMode('allow_all'); } catch {}
149
- }
150
-
151
- if (type === 'allow' || type === 'allow_conversation' || type === 'allow_all') {
152
- // 2. Cross-IDE Native Commands (Antigravity, Cursor, VS Code, Windsurf)
153
- try { await vscode.commands.executeCommand('notifications.acceptPrimaryAction'); } catch {}
154
- try { await vscode.commands.executeCommand('workbench.action.modalConfirmation.confirm'); } catch {}
155
- try { await vscode.commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem'); } catch {}
156
-
157
- vscode.window.setStatusBarMessage(`📱 EditorMate: Approved pending security dialog (${type}) via remote mobile command`, 4000);
158
- } else if (type === 'deny') {
159
- try { await vscode.commands.executeCommand('workbench.action.modalConfirmation.cancel'); } catch {}
160
- try { await vscode.commands.executeCommand('notifications.hideToasts'); } catch {}
161
-
162
- vscode.window.setStatusBarMessage('📱 EditorMate: Denied pending prompt via remote mobile command', 4000);
163
- }
164
- } catch (err: any) {
165
- console.error('[EditorMate] Error resolving IDE approvals:', err);
166
- }
167
- }
168
-
169
- // 4. Register VS Code Commands
170
- context.subscriptions.push(
171
- vscode.commands.registerCommand('editormate.openSidebar', () => {
172
- vscode.commands.executeCommand('editormate.controlPanel.focus');
173
- }),
174
- vscode.commands.registerCommand('editormate.status', async () => {
175
- vscode.commands.executeCommand('editormate.controlPanel.focus');
176
- }),
177
- vscode.commands.registerCommand('editormate.changeIcon', async () => {
178
- await provider.remoteActions.triggerChangeIcon(statusBar);
179
- }),
180
- vscode.commands.registerCommand('editormate.terminal', async () => {
181
- await provider.remoteActions.triggerRemoteTerminal();
182
- }),
183
- vscode.commands.registerCommand('editormate.connectTelegram', () => {
184
- provider.remoteActions.triggerPairing('telegram');
185
- }),
186
- vscode.commands.registerCommand('editormate.connectDiscord', () => {
187
- provider.remoteActions.triggerPairing('discord');
188
- }),
189
- vscode.commands.registerCommand('editormate.connectWhatsApp', () => {
190
- provider.remoteActions.triggerPairing('whatsapp');
191
- }),
192
- vscode.commands.registerCommand('editormate.enterLicense', async () => {
193
- await provider.remoteActions.triggerEnterLicense();
194
- }),
195
- vscode.commands.registerCommand('editormate.renameDevice', async () => {
196
- await provider.remoteActions.triggerRenameDevice();
197
- }),
198
- vscode.commands.registerCommand('editormate.manageAliases', async () => {
199
- await provider.commandsManager.promptManageAliases();
200
- }),
201
- vscode.commands.registerCommand('editormate.addAlias', async () => {
202
- await provider.commandsManager.promptAddAlias();
203
- }),
204
- vscode.commands.registerCommand('editormate.enableCompanionService', async () => {
205
- await startCompanionDaemon(context, true);
206
- setTimeout(() => provider.refresh(), 1200);
207
- }),
208
- vscode.commands.registerCommand('editormate.startDaemon', async () => {
209
- await startCompanionDaemon(context, true);
210
- setTimeout(() => provider.refresh(), 1200);
211
- })
212
- );
213
-
214
- // 5. Background Remote Inbox Stream & Session Sync
215
- const processedMessageIds = new Set<string>();
216
- let activeTargetSessionId = '';
217
- const mySessionId = provider.getMySessionId();
218
- const extensionStartTime = Date.now();
219
-
220
- const pollInterval = setInterval(() => {
221
- http.get('http://127.0.0.1:4588/api/inbox', (res) => {
222
- let data = '';
223
- res.on('data', (c) => (data += c));
224
- res.on('end', async () => {
225
- try {
226
- const parsed = JSON.parse(data);
227
- if (parsed.activeSessionId) {
228
- activeTargetSessionId = parsed.activeSessionId;
229
- }
230
- if (parsed.success && Array.isArray(parsed.messages) && parsed.messages.length > 0) {
231
- provider.updateCachedInbox(parsed.messages);
232
-
233
- // Filter all unseen messages and mark as processed
234
- const unseen = parsed.messages.filter((m: any) => m && m.id && !processedMessageIds.has(m.id));
235
- for (const m of unseen) {
236
- processedMessageIds.add(m.id);
237
- }
238
-
239
- // Only dispatch unseen messages arriving after or close to extension start (within 30s)
240
- const freshMessages = unseen
241
- .filter((m: any) => (m.timestamp || 0) > (extensionStartTime - 30000))
242
- .reverse(); // Route chronologically
243
-
244
- for (const newest of freshMessages) {
245
- // CRITICAL: TARGET IDE CHECK
246
- // If only 1 session is connected or activeTarget matches, route here
247
- const designatedTarget = newest.targetSessionId || activeTargetSessionId;
248
- const isTargetActive = designatedTarget ? designatedTarget === mySessionId : true;
249
-
250
- if (isTargetActive) {
251
- const rawTrimmed = (newest.text || '').trim().toLowerCase();
252
- if (
253
- rawTrimmed === '1' ||
254
- rawTrimmed === '1.' ||
255
- rawTrimmed === '/1' ||
256
- rawTrimmed === '/allow' ||
257
- rawTrimmed === 'allow' ||
258
- rawTrimmed === '/approve' ||
259
- rawTrimmed === 'approve' ||
260
- rawTrimmed === '/yes' ||
261
- rawTrimmed === 'yes' ||
262
- rawTrimmed === '/ok' ||
263
- rawTrimmed === 'ok'
264
- ) {
265
- await resolvePendingIdeApprovals('allow');
266
- } else if (
267
- rawTrimmed === '2' ||
268
- rawTrimmed === '2.' ||
269
- rawTrimmed === '/2' ||
270
- rawTrimmed === '/allow_conversation' ||
271
- rawTrimmed === 'allow conversation'
272
- ) {
273
- await resolvePendingIdeApprovals('allow_conversation');
274
- } else if (
275
- rawTrimmed === '3' ||
276
- rawTrimmed === '3.' ||
277
- rawTrimmed === '/3' ||
278
- rawTrimmed === '/allowall' ||
279
- rawTrimmed === '/allow_all' ||
280
- rawTrimmed === 'allow all' ||
281
- rawTrimmed === 'allowall' ||
282
- rawTrimmed === '/whitelist' ||
283
- rawTrimmed === 'always'
284
- ) {
285
- await resolvePendingIdeApprovals('allow_all');
286
- } else if (
287
- rawTrimmed === '4' ||
288
- rawTrimmed === '4.' ||
289
- rawTrimmed === '/4' ||
290
- rawTrimmed === '/deny' ||
291
- rawTrimmed === 'deny' ||
292
- rawTrimmed === '/reject' ||
293
- rawTrimmed === 'reject' ||
294
- rawTrimmed === '/no' ||
295
- rawTrimmed === 'no' ||
296
- rawTrimmed === '/cancel'
297
- ) {
298
- await resolvePendingIdeApprovals('deny');
299
- } else {
300
- await routeMessageToChat(newest.text, newest.sender);
301
- }
302
- }
303
- }
304
- if (unseen.length > 0) {
305
- provider.refresh();
306
- }
307
- }
308
- } catch {}
309
- });
310
- }).on('error', () => {
311
- ensureDaemonRunning(context);
312
- });
313
-
314
- // Session Sync: Synchronize custom shortcuts with daemon and check for pending remote executions
315
- try {
316
- const wsFolder = vscode.workspace.workspaceFolders?.[0];
317
- const wsName = wsFolder?.name || 'editormate';
318
- const wsPath = wsFolder?.uri.fsPath || '';
319
- const shortcuts = context.globalState.get<any[]>('editormate.customShortcuts') || [];
320
- const syncPayload = JSON.stringify({
321
- sessionId: mySessionId,
322
- workspaceName: wsName,
323
- workspacePath: wsPath,
324
- ideType: getRealIdeName(),
325
- customShortcuts: shortcuts,
326
- });
327
-
328
- const sReq = http.request(
329
- 'http://127.0.0.1:4588/api/session/sync',
330
- {
331
- method: 'POST',
332
- headers: {
333
- 'Content-Type': 'application/json',
334
- 'Content-Length': Buffer.byteLength(syncPayload)
335
- }
336
- },
337
- (sRes) => {
338
- let sBuf = '';
339
- sRes.on('data', (c) => (sBuf += c));
340
- sRes.on('end', () => {
341
- try {
342
- const sJson = JSON.parse(sBuf);
343
- if (sJson.success) {
344
- if (sJson.activeSessionId) {
345
- activeTargetSessionId = sJson.activeSessionId;
346
- }
347
- provider.updateDaemonStatus(sJson);
348
- if (sJson.pendingExecutionCommand) {
349
- provider.guard.requestExecution(sJson.pendingExecutionCommand, undefined, 'Connected Mobile Device');
350
- }
351
- }
352
- } catch {}
353
- });
354
- }
355
- );
356
- sReq.on('error', () => {});
357
- sReq.write(syncPayload);
358
- sReq.end();
359
- } catch {}
360
-
361
- // Also fetch status to keep licensing and target WA number up to date
362
- try {
363
- http.get('http://127.0.0.1:4588/api/status', (res) => {
364
- let buf = '';
365
- res.on('data', (c) => (buf += c));
366
- res.on('end', () => {
367
- try {
368
- const st = JSON.parse(buf);
369
- if (st.status === 'OK') {
370
- if (st.activeSessionId) activeTargetSessionId = st.activeSessionId;
371
- provider.updateDaemonStatus(st);
372
- }
373
- } catch {}
374
- });
375
- }).on('error', () => {});
376
- } catch {}
377
- }, 2500);
378
-
379
- context.subscriptions.push({ dispose: () => clearInterval(pollInterval) });
380
- }
381
-
382
- export function ensureDaemonRunning(context: vscode.ExtensionContext, interactive: boolean = false) {
383
- const req = http.get('http://127.0.0.1:4588/health', () => {});
384
- req.on('error', () => {
385
- const autoStart = context.globalState.get<boolean>('editormate.autoStartService');
386
- if (autoStart) {
387
- startCompanionDaemon(context, false);
388
- return;
389
- }
390
- const promptShown = context.globalState.get<boolean>('editormate.enablePromptShown');
391
- if (!promptShown || interactive) {
392
- context.globalState.update('editormate.enablePromptShown', true);
393
- vscode.window.showInformationMessage(
394
- '📱 EditorMate: Local companion service is required to render Telegram/WhatsApp QR codes & stream window frames.',
395
- '⚡ Enable Companion Service',
396
- 'Later'
397
- ).then(async (selection) => {
398
- if (selection === '⚡ Enable Companion Service') {
399
- await context.globalState.update('editormate.autoStartService', true);
400
- await startCompanionDaemon(context, true);
401
- }
402
- });
403
- }
404
- });
405
- req.setTimeout(800, () => req.destroy());
406
- }
407
-
408
- export async function startCompanionDaemon(context: vscode.ExtensionContext, interactive: boolean = false): Promise<boolean> {
409
- const candidates = [
410
- path.join(context.extensionPath, 'bin', 'cli.js'),
411
- path.join(context.extensionPath, 'daemon', 'bin', 'cli.js'),
412
- path.join(context.extensionPath, 'daemon', 'index.js'),
413
- path.join(context.extensionPath, '..', 'bin', 'cli.js'),
414
- path.join(os.homedir(), 'Desktop', 'work', 'portfolio-engine', 'ai-tools', 'editormate', 'bin', 'cli.js'),
415
- ];
416
- const target = candidates.find((t) => fs.existsSync(t));
417
- const isWin = process.platform === 'win32';
418
- const env = { ...process.env, ELECTRON_RUN_AS_NODE: '1' };
419
-
420
- if (target) {
421
- try {
422
- const child = child_process.spawn('node', [target, 'daemon'], {
423
- detached: true,
424
- stdio: 'ignore',
425
- windowsHide: isWin,
426
- env,
427
- });
428
- child.on('error', () => {
429
- try {
430
- const fallbackChild = child_process.spawn(process.execPath, [target, 'daemon'], {
431
- detached: true,
432
- stdio: 'ignore',
433
- windowsHide: isWin,
434
- env,
435
- });
436
- fallbackChild.unref();
437
- } catch {
438
- const term = vscode.window.createTerminal({ name: 'EditorMate Companion' });
439
- term.sendText(`node "${target}" daemon`);
440
- }
441
- });
442
- child.unref();
443
- if (interactive) {
444
- vscode.window.setStatusBarMessage('🚀 EditorMate: Companion service launched on port 4588', 3500);
445
- }
446
- return true;
447
- } catch {
448
- const term = vscode.window.createTerminal({ name: 'EditorMate Companion' });
449
- term.sendText(`node "${target}" daemon`);
450
- return true;
451
- }
452
- } else {
453
- const term = vscode.window.createTerminal({ name: 'EditorMate Companion' });
454
- term.sendText('npx editormate daemon || editormate daemon');
455
- return true;
456
- }
457
- }
458
-
@@ -1,60 +0,0 @@
1
- import * as vscode from 'vscode';
2
-
3
- /**
4
- * Returns the actual IDE application name where this extension is running.
5
- * Dynamic and accurate across VS Code, Cursor, Antigravity, Windsurf, VSCodium, etc.
6
- */
7
- export function getRealIdeName(): string {
8
- const appName = vscode.env.appName || '';
9
- if (/antigravity/i.test(appName)) return 'Antigravity';
10
- if (/cursor/i.test(appName)) return 'Cursor';
11
- if (/windsurf/i.test(appName)) return 'Windsurf';
12
- if (/codium/i.test(appName)) return 'VSCodium';
13
- if (/code/i.test(appName)) return 'VS Code';
14
- return appName || 'VS Code';
15
- }
16
-
17
- /**
18
- * Validates that an account is a genuine, authenticated paired companion device.
19
- * Excludes test mock accounts, test handles, fake 555 numbers, and WhatsApp group JIDs.
20
- */
21
- export function isRealPairedAccount(a: any): boolean {
22
- if (!a || !a.userId || !a.platform) return false;
23
- const uid = String(a.userId).trim();
24
- const handle = String(a.userHandle || '').trim().toLowerCase();
25
-
26
- const mockIds = new Set([
27
- 'tg_test_user_777',
28
- '777123',
29
- 'disc_user_555',
30
- 'u_slack_dev_123',
31
- 'u12345678',
32
- '8979609593',
33
- 'test_user',
34
- 'mock_user',
35
- 'dummy_user',
36
- '14155552671',
37
- '23201547579578',
38
- ]);
39
- if (mockIds.has(uid.toLowerCase())) return false;
40
- if (/^(test_|mock_|dummy_|fake_)/i.test(uid)) return false;
41
- if (/^(devtester|telegramhacker|discordgamer|@slackdeveloper)$/i.test(handle)) return false;
42
-
43
- // Filter mock 555 phone numbers
44
- if (/\b555\d{4}\b/.test(uid)) return false;
45
-
46
- // Filter WhatsApp groups
47
- if (uid.includes('@g.us') || uid.startsWith('120363')) return false;
48
-
49
- return ['whatsapp', 'telegram', 'discord', 'slack', 'matrix'].includes(a.platform);
50
- }
51
-
52
- /**
53
- * Checks whether an IDE is currently active in this workspace context.
54
- */
55
- export function isHostIdeRunning(ide: string): boolean {
56
- const norm = (ide || '').toLowerCase();
57
- const currentIde = getRealIdeName().toLowerCase();
58
- return currentIde.includes(norm) || norm.includes(currentIde);
59
- }
60
-