@qotaq/lalphgram 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. package/Events/package.json +6 -0
  2. package/LICENSE +21 -0
  3. package/Main/package.json +6 -0
  4. package/README.md +1 -0
  5. package/dist/cjs/Events.js +55 -0
  6. package/dist/cjs/Events.js.map +1 -0
  7. package/dist/cjs/LalphMain.js +59 -0
  8. package/dist/cjs/LalphMain.js.map +1 -0
  9. package/dist/cjs/Main.js +115 -0
  10. package/dist/cjs/Main.js.map +1 -0
  11. package/dist/cjs/index.js +281 -0
  12. package/dist/cjs/index.js.map +1 -0
  13. package/dist/cjs/lib/AnalysisPrompts.js +61 -0
  14. package/dist/cjs/lib/AnalysisPrompts.js.map +1 -0
  15. package/dist/cjs/lib/BranchParser.js +45 -0
  16. package/dist/cjs/lib/BranchParser.js.map +1 -0
  17. package/dist/cjs/lib/MermaidToPlantUml.js +96 -0
  18. package/dist/cjs/lib/MermaidToPlantUml.js.map +1 -0
  19. package/dist/cjs/lib/SpecHtmlGenerator.js +160 -0
  20. package/dist/cjs/lib/SpecHtmlGenerator.js.map +1 -0
  21. package/dist/cjs/lib/StreamJsonParser.js +88 -0
  22. package/dist/cjs/lib/StreamJsonParser.js.map +1 -0
  23. package/dist/cjs/lib/TelegramFormatter.js +122 -0
  24. package/dist/cjs/lib/TelegramFormatter.js.map +1 -0
  25. package/dist/cjs/lib/TelegraphHtml.js +65 -0
  26. package/dist/cjs/lib/TelegraphHtml.js.map +1 -0
  27. package/dist/cjs/lib/TelegraphMarkdown.js +346 -0
  28. package/dist/cjs/lib/TelegraphMarkdown.js.map +1 -0
  29. package/dist/cjs/schemas/CredentialSchemas.js +31 -0
  30. package/dist/cjs/schemas/CredentialSchemas.js.map +1 -0
  31. package/dist/cjs/schemas/GitHubSchemas.js +60 -0
  32. package/dist/cjs/schemas/GitHubSchemas.js.map +1 -0
  33. package/dist/cjs/schemas/LinearSchemas.js +63 -0
  34. package/dist/cjs/schemas/LinearSchemas.js.map +1 -0
  35. package/dist/cjs/schemas/ProjectSchemas.js +26 -0
  36. package/dist/cjs/schemas/ProjectSchemas.js.map +1 -0
  37. package/dist/cjs/schemas/TrackerSchemas.js +35 -0
  38. package/dist/cjs/schemas/TrackerSchemas.js.map +1 -0
  39. package/dist/cjs/services/AppContext.js +57 -0
  40. package/dist/cjs/services/AppContext.js.map +1 -0
  41. package/dist/cjs/services/AppRuntimeConfig.js +35 -0
  42. package/dist/cjs/services/AppRuntimeConfig.js.map +1 -0
  43. package/dist/cjs/services/AutoMerge.js +140 -0
  44. package/dist/cjs/services/AutoMerge.js.map +1 -0
  45. package/dist/cjs/services/ChatMachine.js +873 -0
  46. package/dist/cjs/services/ChatMachine.js.map +1 -0
  47. package/dist/cjs/services/CommentTimer.js +81 -0
  48. package/dist/cjs/services/CommentTimer.js.map +1 -0
  49. package/dist/cjs/services/CredentialStore.js +68 -0
  50. package/dist/cjs/services/CredentialStore.js.map +1 -0
  51. package/dist/cjs/services/CredentialWatcher.js +76 -0
  52. package/dist/cjs/services/CredentialWatcher.js.map +1 -0
  53. package/dist/cjs/services/Credentials.js +130 -0
  54. package/dist/cjs/services/Credentials.js.map +1 -0
  55. package/dist/cjs/services/EventLoop.js +203 -0
  56. package/dist/cjs/services/EventLoop.js.map +1 -0
  57. package/dist/cjs/services/GitHubClient/GitHubClient.js +236 -0
  58. package/dist/cjs/services/GitHubClient/GitHubClient.js.map +1 -0
  59. package/dist/cjs/services/GitHubClient/OctokitClient.js +329 -0
  60. package/dist/cjs/services/GitHubClient/OctokitClient.js.map +1 -0
  61. package/dist/cjs/services/GitHubClient.js +236 -0
  62. package/dist/cjs/services/GitHubClient.js.map +1 -0
  63. package/dist/cjs/services/GitHubEventSource.js +145 -0
  64. package/dist/cjs/services/GitHubEventSource.js.map +1 -0
  65. package/dist/cjs/services/GitHubIssueTracker.js +118 -0
  66. package/dist/cjs/services/GitHubIssueTracker.js.map +1 -0
  67. package/dist/cjs/services/LalphConfig.js +139 -0
  68. package/dist/cjs/services/LalphConfig.js.map +1 -0
  69. package/dist/cjs/services/LalphConfigReader.js +82 -0
  70. package/dist/cjs/services/LalphConfigReader.js.map +1 -0
  71. package/dist/cjs/services/LalphDirectory.js +45 -0
  72. package/dist/cjs/services/LalphDirectory.js.map +1 -0
  73. package/dist/cjs/services/LinearSdkClient.js +149 -0
  74. package/dist/cjs/services/LinearSdkClient.js.map +1 -0
  75. package/dist/cjs/services/LinearTracker.js +89 -0
  76. package/dist/cjs/services/LinearTracker.js.map +1 -0
  77. package/dist/cjs/services/MessengerAdapter/MessengerAdapter.js +30 -0
  78. package/dist/cjs/services/MessengerAdapter/MessengerAdapter.js.map +1 -0
  79. package/dist/cjs/services/MessengerAdapter/TelegramAdapter.js +131 -0
  80. package/dist/cjs/services/MessengerAdapter/TelegramAdapter.js.map +1 -0
  81. package/dist/cjs/services/MessengerAdapter/TelegramConfig.js +81 -0
  82. package/dist/cjs/services/MessengerAdapter/TelegramConfig.js.map +1 -0
  83. package/dist/cjs/services/MessengerAdapter.js +30 -0
  84. package/dist/cjs/services/MessengerAdapter.js.map +1 -0
  85. package/dist/cjs/services/OctokitClient.js +350 -0
  86. package/dist/cjs/services/OctokitClient.js.map +1 -0
  87. package/dist/cjs/services/PlanOverviewUploader.js +119 -0
  88. package/dist/cjs/services/PlanOverviewUploader.js.map +1 -0
  89. package/dist/cjs/services/PlanOverviewUploaderMap.js +25 -0
  90. package/dist/cjs/services/PlanOverviewUploaderMap.js.map +1 -0
  91. package/dist/cjs/services/PlanSession.js +489 -0
  92. package/dist/cjs/services/PlanSession.js.map +1 -0
  93. package/dist/cjs/services/ProjectStore.js +107 -0
  94. package/dist/cjs/services/ProjectStore.js.map +1 -0
  95. package/dist/cjs/services/PullRequestTracker.js +186 -0
  96. package/dist/cjs/services/PullRequestTracker.js.map +1 -0
  97. package/dist/cjs/services/SpecUploader.js +111 -0
  98. package/dist/cjs/services/SpecUploader.js.map +1 -0
  99. package/dist/cjs/services/SpecUploaderMap.js +25 -0
  100. package/dist/cjs/services/SpecUploaderMap.js.map +1 -0
  101. package/dist/cjs/services/TaskEventSource.js +58 -0
  102. package/dist/cjs/services/TaskEventSource.js.map +1 -0
  103. package/dist/cjs/services/TaskTracker/GitHubIssueTracker.js +155 -0
  104. package/dist/cjs/services/TaskTracker/GitHubIssueTracker.js.map +1 -0
  105. package/dist/cjs/services/TaskTracker/LinearSdkClient.js +149 -0
  106. package/dist/cjs/services/TaskTracker/LinearSdkClient.js.map +1 -0
  107. package/dist/cjs/services/TaskTracker/LinearTracker.js +126 -0
  108. package/dist/cjs/services/TaskTracker/LinearTracker.js.map +1 -0
  109. package/dist/cjs/services/TaskTracker/TaskTracker.js +20 -0
  110. package/dist/cjs/services/TaskTracker/TaskTracker.js.map +1 -0
  111. package/dist/cjs/services/TaskTracker/TrackerLayerMap.js +27 -0
  112. package/dist/cjs/services/TaskTracker/TrackerLayerMap.js.map +1 -0
  113. package/dist/cjs/services/TaskTracker/buildEventStream.js +55 -0
  114. package/dist/cjs/services/TaskTracker/buildEventStream.js.map +1 -0
  115. package/dist/cjs/services/TaskTracker.js +20 -0
  116. package/dist/cjs/services/TaskTracker.js.map +1 -0
  117. package/dist/cjs/services/TelegramAdapter.js +125 -0
  118. package/dist/cjs/services/TelegramAdapter.js.map +1 -0
  119. package/dist/cjs/services/TelegramConfig.js +81 -0
  120. package/dist/cjs/services/TelegramConfig.js.map +1 -0
  121. package/dist/cjs/services/TelegramConfigStore.js +81 -0
  122. package/dist/cjs/services/TelegramConfigStore.js.map +1 -0
  123. package/dist/cjs/services/TelegramNotifier.js +50 -0
  124. package/dist/cjs/services/TelegramNotifier.js.map +1 -0
  125. package/dist/cjs/services/TrackerLayerMap.js +27 -0
  126. package/dist/cjs/services/TrackerLayerMap.js.map +1 -0
  127. package/dist/cjs/services/TrackerResolver.js +45 -0
  128. package/dist/cjs/services/TrackerResolver.js.map +1 -0
  129. package/dist/cjs/services/messenger/MessengerAdapter.js +30 -0
  130. package/dist/cjs/services/messenger/MessengerAdapter.js.map +1 -0
  131. package/dist/cjs/services/messenger/TelegramAdapter.js +125 -0
  132. package/dist/cjs/services/messenger/TelegramAdapter.js.map +1 -0
  133. package/dist/cjs/services/task-tracker/GitHubIssueTracker.js +157 -0
  134. package/dist/cjs/services/task-tracker/GitHubIssueTracker.js.map +1 -0
  135. package/dist/cjs/services/task-tracker/LinearTracker.js +127 -0
  136. package/dist/cjs/services/task-tracker/LinearTracker.js.map +1 -0
  137. package/dist/cjs/services/task-tracker/TaskTracker.js +20 -0
  138. package/dist/cjs/services/task-tracker/TaskTracker.js.map +1 -0
  139. package/dist/cjs/services/task-tracker/TrackerLayerMap.js +27 -0
  140. package/dist/cjs/services/task-tracker/TrackerLayerMap.js.map +1 -0
  141. package/dist/cjs/shim/bin.js +31 -0
  142. package/dist/cjs/shim/bin.js.map +1 -0
  143. package/dist/cjs/shim/main.js +217 -0
  144. package/dist/cjs/shim/main.js.map +1 -0
  145. package/dist/cjs/shim/parseArgs.js +45 -0
  146. package/dist/cjs/shim/parseArgs.js.map +1 -0
  147. package/dist/cjs/shim/schemas.js +35 -0
  148. package/dist/cjs/shim/schemas.js.map +1 -0
  149. package/dist/dts/Events.d.ts +108 -0
  150. package/dist/dts/Events.d.ts.map +1 -0
  151. package/dist/dts/LalphMain.d.ts +2 -0
  152. package/dist/dts/LalphMain.d.ts.map +1 -0
  153. package/dist/dts/Main.d.ts +2 -0
  154. package/dist/dts/Main.d.ts.map +1 -0
  155. package/dist/dts/index.d.ts +101 -0
  156. package/dist/dts/index.d.ts.map +1 -0
  157. package/dist/dts/lib/AnalysisPrompts.d.ts +12 -0
  158. package/dist/dts/lib/AnalysisPrompts.d.ts.map +1 -0
  159. package/dist/dts/lib/BranchParser.d.ts +40 -0
  160. package/dist/dts/lib/BranchParser.d.ts.map +1 -0
  161. package/dist/dts/lib/MermaidToPlantUml.d.ts +19 -0
  162. package/dist/dts/lib/MermaidToPlantUml.d.ts.map +1 -0
  163. package/dist/dts/lib/SpecHtmlGenerator.d.ts +18 -0
  164. package/dist/dts/lib/SpecHtmlGenerator.d.ts.map +1 -0
  165. package/dist/dts/lib/StreamJsonParser.d.ts +147 -0
  166. package/dist/dts/lib/StreamJsonParser.d.ts.map +1 -0
  167. package/dist/dts/lib/TelegramFormatter.d.ts +35 -0
  168. package/dist/dts/lib/TelegramFormatter.d.ts.map +1 -0
  169. package/dist/dts/lib/TelegraphHtml.d.ts +11 -0
  170. package/dist/dts/lib/TelegraphHtml.d.ts.map +1 -0
  171. package/dist/dts/lib/TelegraphMarkdown.d.ts +21 -0
  172. package/dist/dts/lib/TelegraphMarkdown.d.ts.map +1 -0
  173. package/dist/dts/schemas/CredentialSchemas.d.ts +41 -0
  174. package/dist/dts/schemas/CredentialSchemas.d.ts.map +1 -0
  175. package/dist/dts/schemas/GitHubSchemas.d.ts +130 -0
  176. package/dist/dts/schemas/GitHubSchemas.d.ts.map +1 -0
  177. package/dist/dts/schemas/LinearSchemas.d.ts +121 -0
  178. package/dist/dts/schemas/LinearSchemas.d.ts.map +1 -0
  179. package/dist/dts/schemas/ProjectSchemas.d.ts +40 -0
  180. package/dist/dts/schemas/ProjectSchemas.d.ts.map +1 -0
  181. package/dist/dts/schemas/TrackerSchemas.d.ts +57 -0
  182. package/dist/dts/schemas/TrackerSchemas.d.ts.map +1 -0
  183. package/dist/dts/services/AppContext.d.ts +40 -0
  184. package/dist/dts/services/AppContext.d.ts.map +1 -0
  185. package/dist/dts/services/AppRuntimeConfig.d.ts +51 -0
  186. package/dist/dts/services/AppRuntimeConfig.d.ts.map +1 -0
  187. package/dist/dts/services/AutoMerge.d.ts +42 -0
  188. package/dist/dts/services/AutoMerge.d.ts.map +1 -0
  189. package/dist/dts/services/ChatMachine.d.ts +478 -0
  190. package/dist/dts/services/ChatMachine.d.ts.map +1 -0
  191. package/dist/dts/services/CommentTimer.d.ts +44 -0
  192. package/dist/dts/services/CommentTimer.d.ts.map +1 -0
  193. package/dist/dts/services/CredentialStore.d.ts +43 -0
  194. package/dist/dts/services/CredentialStore.d.ts.map +1 -0
  195. package/dist/dts/services/CredentialWatcher.d.ts +41 -0
  196. package/dist/dts/services/CredentialWatcher.d.ts.map +1 -0
  197. package/dist/dts/services/Credentials.d.ts +44 -0
  198. package/dist/dts/services/Credentials.d.ts.map +1 -0
  199. package/dist/dts/services/EventLoop.d.ts +26 -0
  200. package/dist/dts/services/EventLoop.d.ts.map +1 -0
  201. package/dist/dts/services/GitHubClient/GitHubClient.d.ts +69 -0
  202. package/dist/dts/services/GitHubClient/GitHubClient.d.ts.map +1 -0
  203. package/dist/dts/services/GitHubClient/OctokitClient.d.ts +214 -0
  204. package/dist/dts/services/GitHubClient/OctokitClient.d.ts.map +1 -0
  205. package/dist/dts/services/GitHubClient.d.ts +69 -0
  206. package/dist/dts/services/GitHubClient.d.ts.map +1 -0
  207. package/dist/dts/services/GitHubEventSource.d.ts +43 -0
  208. package/dist/dts/services/GitHubEventSource.d.ts.map +1 -0
  209. package/dist/dts/services/GitHubIssueTracker.d.ts +9 -0
  210. package/dist/dts/services/GitHubIssueTracker.d.ts.map +1 -0
  211. package/dist/dts/services/LalphConfig.d.ts +44 -0
  212. package/dist/dts/services/LalphConfig.d.ts.map +1 -0
  213. package/dist/dts/services/LalphConfigReader.d.ts +66 -0
  214. package/dist/dts/services/LalphConfigReader.d.ts.map +1 -0
  215. package/dist/dts/services/LalphDirectory.d.ts +39 -0
  216. package/dist/dts/services/LalphDirectory.d.ts.map +1 -0
  217. package/dist/dts/services/LinearSdkClient.d.ts +71 -0
  218. package/dist/dts/services/LinearSdkClient.d.ts.map +1 -0
  219. package/dist/dts/services/LinearTracker.d.ts +9 -0
  220. package/dist/dts/services/LinearTracker.d.ts.map +1 -0
  221. package/dist/dts/services/MessengerAdapter/MessengerAdapter.d.ts +69 -0
  222. package/dist/dts/services/MessengerAdapter/MessengerAdapter.d.ts.map +1 -0
  223. package/dist/dts/services/MessengerAdapter/TelegramAdapter.d.ts +13 -0
  224. package/dist/dts/services/MessengerAdapter/TelegramAdapter.d.ts.map +1 -0
  225. package/dist/dts/services/MessengerAdapter/TelegramConfig.d.ts +58 -0
  226. package/dist/dts/services/MessengerAdapter/TelegramConfig.d.ts.map +1 -0
  227. package/dist/dts/services/MessengerAdapter.d.ts +69 -0
  228. package/dist/dts/services/MessengerAdapter.d.ts.map +1 -0
  229. package/dist/dts/services/OctokitClient.d.ts +232 -0
  230. package/dist/dts/services/OctokitClient.d.ts.map +1 -0
  231. package/dist/dts/services/PlanOverviewUploader.d.ts +55 -0
  232. package/dist/dts/services/PlanOverviewUploader.d.ts.map +1 -0
  233. package/dist/dts/services/PlanOverviewUploaderMap.d.ts +14 -0
  234. package/dist/dts/services/PlanOverviewUploaderMap.d.ts.map +1 -0
  235. package/dist/dts/services/PlanSession.d.ts +169 -0
  236. package/dist/dts/services/PlanSession.d.ts.map +1 -0
  237. package/dist/dts/services/ProjectStore.d.ts +50 -0
  238. package/dist/dts/services/ProjectStore.d.ts.map +1 -0
  239. package/dist/dts/services/PullRequestTracker.d.ts +42 -0
  240. package/dist/dts/services/PullRequestTracker.d.ts.map +1 -0
  241. package/dist/dts/services/SpecUploader.d.ts +51 -0
  242. package/dist/dts/services/SpecUploader.d.ts.map +1 -0
  243. package/dist/dts/services/SpecUploaderMap.d.ts +14 -0
  244. package/dist/dts/services/SpecUploaderMap.d.ts.map +1 -0
  245. package/dist/dts/services/TaskEventSource.d.ts +21 -0
  246. package/dist/dts/services/TaskEventSource.d.ts.map +1 -0
  247. package/dist/dts/services/TaskTracker/GitHubIssueTracker.d.ts +10 -0
  248. package/dist/dts/services/TaskTracker/GitHubIssueTracker.d.ts.map +1 -0
  249. package/dist/dts/services/TaskTracker/LinearSdkClient.d.ts +71 -0
  250. package/dist/dts/services/TaskTracker/LinearSdkClient.d.ts.map +1 -0
  251. package/dist/dts/services/TaskTracker/LinearTracker.d.ts +10 -0
  252. package/dist/dts/services/TaskTracker/LinearTracker.d.ts.map +1 -0
  253. package/dist/dts/services/TaskTracker/TaskTracker.d.ts +39 -0
  254. package/dist/dts/services/TaskTracker/TaskTracker.d.ts.map +1 -0
  255. package/dist/dts/services/TaskTracker/TrackerLayerMap.d.ts +14 -0
  256. package/dist/dts/services/TaskTracker/TrackerLayerMap.d.ts.map +1 -0
  257. package/dist/dts/services/TaskTracker/buildEventStream.d.ts +16 -0
  258. package/dist/dts/services/TaskTracker/buildEventStream.d.ts.map +1 -0
  259. package/dist/dts/services/TaskTracker.d.ts +38 -0
  260. package/dist/dts/services/TaskTracker.d.ts.map +1 -0
  261. package/dist/dts/services/TelegramAdapter.d.ts +13 -0
  262. package/dist/dts/services/TelegramAdapter.d.ts.map +1 -0
  263. package/dist/dts/services/TelegramConfig.d.ts +58 -0
  264. package/dist/dts/services/TelegramConfig.d.ts.map +1 -0
  265. package/dist/dts/services/TelegramConfigStore.d.ts +57 -0
  266. package/dist/dts/services/TelegramConfigStore.d.ts.map +1 -0
  267. package/dist/dts/services/TelegramNotifier.d.ts +40 -0
  268. package/dist/dts/services/TelegramNotifier.d.ts.map +1 -0
  269. package/dist/dts/services/TrackerLayerMap.d.ts +14 -0
  270. package/dist/dts/services/TrackerLayerMap.d.ts.map +1 -0
  271. package/dist/dts/services/TrackerResolver.d.ts +43 -0
  272. package/dist/dts/services/TrackerResolver.d.ts.map +1 -0
  273. package/dist/dts/services/messenger/MessengerAdapter.d.ts +69 -0
  274. package/dist/dts/services/messenger/MessengerAdapter.d.ts.map +1 -0
  275. package/dist/dts/services/messenger/TelegramAdapter.d.ts +13 -0
  276. package/dist/dts/services/messenger/TelegramAdapter.d.ts.map +1 -0
  277. package/dist/dts/services/task-tracker/GitHubIssueTracker.d.ts +10 -0
  278. package/dist/dts/services/task-tracker/GitHubIssueTracker.d.ts.map +1 -0
  279. package/dist/dts/services/task-tracker/LinearTracker.d.ts +10 -0
  280. package/dist/dts/services/task-tracker/LinearTracker.d.ts.map +1 -0
  281. package/dist/dts/services/task-tracker/TaskTracker.d.ts +38 -0
  282. package/dist/dts/services/task-tracker/TaskTracker.d.ts.map +1 -0
  283. package/dist/dts/services/task-tracker/TrackerLayerMap.d.ts +14 -0
  284. package/dist/dts/services/task-tracker/TrackerLayerMap.d.ts.map +1 -0
  285. package/dist/dts/shim/bin.d.ts +3 -0
  286. package/dist/dts/shim/bin.d.ts.map +1 -0
  287. package/dist/dts/shim/main.d.ts +36 -0
  288. package/dist/dts/shim/main.d.ts.map +1 -0
  289. package/dist/dts/shim/parseArgs.d.ts +11 -0
  290. package/dist/dts/shim/parseArgs.d.ts.map +1 -0
  291. package/dist/dts/shim/schemas.d.ts +55 -0
  292. package/dist/dts/shim/schemas.d.ts.map +1 -0
  293. package/dist/esm/Events.js +41 -0
  294. package/dist/esm/Events.js.map +1 -0
  295. package/dist/esm/LalphMain.js +56 -0
  296. package/dist/esm/LalphMain.js.map +1 -0
  297. package/dist/esm/Main.js +112 -0
  298. package/dist/esm/Main.js.map +1 -0
  299. package/dist/esm/index.js +101 -0
  300. package/dist/esm/index.js.map +1 -0
  301. package/dist/esm/lib/AnalysisPrompts.js +54 -0
  302. package/dist/esm/lib/AnalysisPrompts.js.map +1 -0
  303. package/dist/esm/lib/BranchParser.js +36 -0
  304. package/dist/esm/lib/BranchParser.js.map +1 -0
  305. package/dist/esm/lib/MermaidToPlantUml.js +89 -0
  306. package/dist/esm/lib/MermaidToPlantUml.js.map +1 -0
  307. package/dist/esm/lib/SpecHtmlGenerator.js +153 -0
  308. package/dist/esm/lib/SpecHtmlGenerator.js.map +1 -0
  309. package/dist/esm/lib/StreamJsonParser.js +79 -0
  310. package/dist/esm/lib/StreamJsonParser.js.map +1 -0
  311. package/dist/esm/lib/TelegramFormatter.js +114 -0
  312. package/dist/esm/lib/TelegramFormatter.js.map +1 -0
  313. package/dist/esm/lib/TelegraphHtml.js +57 -0
  314. package/dist/esm/lib/TelegraphHtml.js.map +1 -0
  315. package/dist/esm/lib/TelegraphMarkdown.js +338 -0
  316. package/dist/esm/lib/TelegraphMarkdown.js.map +1 -0
  317. package/dist/esm/package.json +4 -0
  318. package/dist/esm/schemas/CredentialSchemas.js +22 -0
  319. package/dist/esm/schemas/CredentialSchemas.js.map +1 -0
  320. package/dist/esm/schemas/GitHubSchemas.js +50 -0
  321. package/dist/esm/schemas/GitHubSchemas.js.map +1 -0
  322. package/dist/esm/schemas/LinearSchemas.js +52 -0
  323. package/dist/esm/schemas/LinearSchemas.js.map +1 -0
  324. package/dist/esm/schemas/ProjectSchemas.js +18 -0
  325. package/dist/esm/schemas/ProjectSchemas.js.map +1 -0
  326. package/dist/esm/schemas/TrackerSchemas.js +26 -0
  327. package/dist/esm/schemas/TrackerSchemas.js.map +1 -0
  328. package/dist/esm/services/AppContext.js +48 -0
  329. package/dist/esm/services/AppContext.js.map +1 -0
  330. package/dist/esm/services/AppRuntimeConfig.js +26 -0
  331. package/dist/esm/services/AppRuntimeConfig.js.map +1 -0
  332. package/dist/esm/services/AutoMerge.js +131 -0
  333. package/dist/esm/services/AutoMerge.js.map +1 -0
  334. package/dist/esm/services/ChatMachine.js +855 -0
  335. package/dist/esm/services/ChatMachine.js.map +1 -0
  336. package/dist/esm/services/CommentTimer.js +72 -0
  337. package/dist/esm/services/CommentTimer.js.map +1 -0
  338. package/dist/esm/services/CredentialStore.js +59 -0
  339. package/dist/esm/services/CredentialStore.js.map +1 -0
  340. package/dist/esm/services/CredentialWatcher.js +67 -0
  341. package/dist/esm/services/CredentialWatcher.js.map +1 -0
  342. package/dist/esm/services/Credentials.js +121 -0
  343. package/dist/esm/services/Credentials.js.map +1 -0
  344. package/dist/esm/services/EventLoop.js +128 -0
  345. package/dist/esm/services/EventLoop.js.map +1 -0
  346. package/dist/esm/services/GitHubClient/GitHubClient.js +227 -0
  347. package/dist/esm/services/GitHubClient/GitHubClient.js.map +1 -0
  348. package/dist/esm/services/GitHubClient/OctokitClient.js +320 -0
  349. package/dist/esm/services/GitHubClient/OctokitClient.js.map +1 -0
  350. package/dist/esm/services/GitHubClient.js +227 -0
  351. package/dist/esm/services/GitHubClient.js.map +1 -0
  352. package/dist/esm/services/GitHubEventSource.js +136 -0
  353. package/dist/esm/services/GitHubEventSource.js.map +1 -0
  354. package/dist/esm/services/GitHubIssueTracker.js +111 -0
  355. package/dist/esm/services/GitHubIssueTracker.js.map +1 -0
  356. package/dist/esm/services/LalphConfig.js +130 -0
  357. package/dist/esm/services/LalphConfig.js.map +1 -0
  358. package/dist/esm/services/LalphConfigReader.js +71 -0
  359. package/dist/esm/services/LalphConfigReader.js.map +1 -0
  360. package/dist/esm/services/LalphDirectory.js +36 -0
  361. package/dist/esm/services/LalphDirectory.js.map +1 -0
  362. package/dist/esm/services/LinearSdkClient.js +140 -0
  363. package/dist/esm/services/LinearSdkClient.js.map +1 -0
  364. package/dist/esm/services/LinearTracker.js +82 -0
  365. package/dist/esm/services/LinearTracker.js.map +1 -0
  366. package/dist/esm/services/MessengerAdapter/MessengerAdapter.js +21 -0
  367. package/dist/esm/services/MessengerAdapter/MessengerAdapter.js.map +1 -0
  368. package/dist/esm/services/MessengerAdapter/TelegramAdapter.js +124 -0
  369. package/dist/esm/services/MessengerAdapter/TelegramAdapter.js.map +1 -0
  370. package/dist/esm/services/MessengerAdapter/TelegramConfig.js +71 -0
  371. package/dist/esm/services/MessengerAdapter/TelegramConfig.js.map +1 -0
  372. package/dist/esm/services/MessengerAdapter.js +21 -0
  373. package/dist/esm/services/MessengerAdapter.js.map +1 -0
  374. package/dist/esm/services/OctokitClient.js +341 -0
  375. package/dist/esm/services/OctokitClient.js.map +1 -0
  376. package/dist/esm/services/PlanOverviewUploader.js +109 -0
  377. package/dist/esm/services/PlanOverviewUploader.js.map +1 -0
  378. package/dist/esm/services/PlanOverviewUploaderMap.js +17 -0
  379. package/dist/esm/services/PlanOverviewUploaderMap.js.map +1 -0
  380. package/dist/esm/services/PlanSession.js +471 -0
  381. package/dist/esm/services/PlanSession.js.map +1 -0
  382. package/dist/esm/services/ProjectStore.js +98 -0
  383. package/dist/esm/services/ProjectStore.js.map +1 -0
  384. package/dist/esm/services/PullRequestTracker.js +177 -0
  385. package/dist/esm/services/PullRequestTracker.js.map +1 -0
  386. package/dist/esm/services/SpecUploader.js +101 -0
  387. package/dist/esm/services/SpecUploader.js.map +1 -0
  388. package/dist/esm/services/SpecUploaderMap.js +17 -0
  389. package/dist/esm/services/SpecUploaderMap.js.map +1 -0
  390. package/dist/esm/services/TaskEventSource.js +50 -0
  391. package/dist/esm/services/TaskEventSource.js.map +1 -0
  392. package/dist/esm/services/TaskTracker/GitHubIssueTracker.js +148 -0
  393. package/dist/esm/services/TaskTracker/GitHubIssueTracker.js.map +1 -0
  394. package/dist/esm/services/TaskTracker/LinearSdkClient.js +140 -0
  395. package/dist/esm/services/TaskTracker/LinearSdkClient.js.map +1 -0
  396. package/dist/esm/services/TaskTracker/LinearTracker.js +119 -0
  397. package/dist/esm/services/TaskTracker/LinearTracker.js.map +1 -0
  398. package/dist/esm/services/TaskTracker/TaskTracker.js +12 -0
  399. package/dist/esm/services/TaskTracker/TaskTracker.js.map +1 -0
  400. package/dist/esm/services/TaskTracker/TrackerLayerMap.js +19 -0
  401. package/dist/esm/services/TaskTracker/TrackerLayerMap.js.map +1 -0
  402. package/dist/esm/services/TaskTracker/buildEventStream.js +47 -0
  403. package/dist/esm/services/TaskTracker/buildEventStream.js.map +1 -0
  404. package/dist/esm/services/TaskTracker.js +12 -0
  405. package/dist/esm/services/TaskTracker.js.map +1 -0
  406. package/dist/esm/services/TelegramAdapter.js +118 -0
  407. package/dist/esm/services/TelegramAdapter.js.map +1 -0
  408. package/dist/esm/services/TelegramConfig.js +71 -0
  409. package/dist/esm/services/TelegramConfig.js.map +1 -0
  410. package/dist/esm/services/TelegramConfigStore.js +71 -0
  411. package/dist/esm/services/TelegramConfigStore.js.map +1 -0
  412. package/dist/esm/services/TelegramNotifier.js +41 -0
  413. package/dist/esm/services/TelegramNotifier.js.map +1 -0
  414. package/dist/esm/services/TrackerLayerMap.js +19 -0
  415. package/dist/esm/services/TrackerLayerMap.js.map +1 -0
  416. package/dist/esm/services/TrackerResolver.js +36 -0
  417. package/dist/esm/services/TrackerResolver.js.map +1 -0
  418. package/dist/esm/services/messenger/MessengerAdapter.js +21 -0
  419. package/dist/esm/services/messenger/MessengerAdapter.js.map +1 -0
  420. package/dist/esm/services/messenger/TelegramAdapter.js +118 -0
  421. package/dist/esm/services/messenger/TelegramAdapter.js.map +1 -0
  422. package/dist/esm/services/task-tracker/GitHubIssueTracker.js +150 -0
  423. package/dist/esm/services/task-tracker/GitHubIssueTracker.js.map +1 -0
  424. package/dist/esm/services/task-tracker/LinearTracker.js +120 -0
  425. package/dist/esm/services/task-tracker/LinearTracker.js.map +1 -0
  426. package/dist/esm/services/task-tracker/TaskTracker.js +12 -0
  427. package/dist/esm/services/task-tracker/TaskTracker.js.map +1 -0
  428. package/dist/esm/services/task-tracker/TrackerLayerMap.js +19 -0
  429. package/dist/esm/services/task-tracker/TrackerLayerMap.js.map +1 -0
  430. package/dist/esm/shim/bin.js +28 -0
  431. package/dist/esm/shim/bin.js.map +1 -0
  432. package/dist/esm/shim/main.js +196 -0
  433. package/dist/esm/shim/main.js.map +1 -0
  434. package/dist/esm/shim/parseArgs.js +39 -0
  435. package/dist/esm/shim/parseArgs.js.map +1 -0
  436. package/dist/esm/shim/schemas.js +28 -0
  437. package/dist/esm/shim/schemas.js.map +1 -0
  438. package/lib/AnalysisPrompts/package.json +6 -0
  439. package/lib/BranchParser/package.json +6 -0
  440. package/lib/MermaidToPlantUml/package.json +6 -0
  441. package/lib/SpecHtmlGenerator/package.json +6 -0
  442. package/lib/StreamJsonParser/package.json +6 -0
  443. package/lib/TelegramFormatter/package.json +6 -0
  444. package/lib/TelegraphMarkdown/package.json +6 -0
  445. package/package.json +360 -0
  446. package/schemas/CredentialSchemas/package.json +6 -0
  447. package/schemas/GitHubSchemas/package.json +6 -0
  448. package/schemas/LinearSchemas/package.json +6 -0
  449. package/schemas/ProjectSchemas/package.json +6 -0
  450. package/schemas/TrackerSchemas/package.json +6 -0
  451. package/services/AppContext/package.json +6 -0
  452. package/services/AppRuntimeConfig/package.json +6 -0
  453. package/services/AutoMerge/package.json +6 -0
  454. package/services/ChatMachine/package.json +6 -0
  455. package/services/CommentTimer/package.json +6 -0
  456. package/services/EventLoop/package.json +6 -0
  457. package/services/GitHubClient/package.json +6 -0
  458. package/services/LalphConfig/package.json +6 -0
  459. package/services/LinearSdkClient/package.json +6 -0
  460. package/services/MessengerAdapter/MessengerAdapter/package.json +6 -0
  461. package/services/MessengerAdapter/TelegramAdapter/package.json +6 -0
  462. package/services/OctokitClient/package.json +6 -0
  463. package/services/PlanOverviewUploader/package.json +6 -0
  464. package/services/PlanOverviewUploaderMap/package.json +6 -0
  465. package/services/PlanSession/package.json +6 -0
  466. package/services/ProjectStore/package.json +6 -0
  467. package/services/PullRequestTracker/package.json +6 -0
  468. package/services/TaskTracker/GitHubIssueTracker/package.json +6 -0
  469. package/services/TaskTracker/LinearTracker/package.json +6 -0
  470. package/services/TaskTracker/TaskTracker/package.json +6 -0
  471. package/services/TelegramConfig/package.json +6 -0
  472. package/services/TrackerLayerMap/package.json +6 -0
  473. package/shim/bin/package.json +6 -0
  474. package/shim/main/package.json +6 -0
  475. package/shim/parseArgs/package.json +6 -0
  476. package/shim/schemas/package.json +6 -0
  477. package/src/Events.ts +98 -0
  478. package/src/Main.ts +177 -0
  479. package/src/index.ts +124 -0
  480. package/src/lib/AnalysisPrompts.ts +54 -0
  481. package/src/lib/BranchParser.ts +58 -0
  482. package/src/lib/MermaidToPlantUml.ts +103 -0
  483. package/src/lib/SpecHtmlGenerator.ts +199 -0
  484. package/src/lib/StreamJsonParser.ts +99 -0
  485. package/src/lib/TelegramFormatter.ts +151 -0
  486. package/src/lib/TelegraphMarkdown.ts +305 -0
  487. package/src/schemas/CredentialSchemas.ts +23 -0
  488. package/src/schemas/GitHubSchemas.ts +50 -0
  489. package/src/schemas/LinearSchemas.ts +57 -0
  490. package/src/schemas/ProjectSchemas.ts +18 -0
  491. package/src/schemas/TrackerSchemas.ts +27 -0
  492. package/src/services/AppContext.ts +72 -0
  493. package/src/services/AppRuntimeConfig.ts +23 -0
  494. package/src/services/AutoMerge.ts +198 -0
  495. package/src/services/ChatMachine.ts +911 -0
  496. package/src/services/CommentTimer.ts +133 -0
  497. package/src/services/EventLoop.ts +321 -0
  498. package/src/services/GitHubClient.ts +282 -0
  499. package/src/services/LalphConfig.ts +218 -0
  500. package/src/services/LinearSdkClient.ts +181 -0
  501. package/src/services/MessengerAdapter/MessengerAdapter.ts +53 -0
  502. package/src/services/MessengerAdapter/TelegramAdapter.ts +145 -0
  503. package/src/services/OctokitClient.ts +628 -0
  504. package/src/services/PlanOverviewUploader.ts +160 -0
  505. package/src/services/PlanOverviewUploaderMap.ts +17 -0
  506. package/src/services/PlanSession.ts +589 -0
  507. package/src/services/ProjectStore.ts +140 -0
  508. package/src/services/PullRequestTracker.ts +253 -0
  509. package/src/services/TaskTracker/GitHubIssueTracker.ts +162 -0
  510. package/src/services/TaskTracker/LinearTracker.ts +141 -0
  511. package/src/services/TaskTracker/TaskTracker.ts +34 -0
  512. package/src/services/TelegramConfig.ts +120 -0
  513. package/src/services/TrackerLayerMap.ts +19 -0
  514. package/src/shim/bin.ts +36 -0
  515. package/src/shim/main.ts +255 -0
  516. package/src/shim/parseArgs.ts +43 -0
  517. package/src/shim/schemas.ts +38 -0
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getAnalysisPrompt = void 0;
7
+ /**
8
+ * Plan-type-specific analysis prompts for spec file follow-ups
9
+ * @since 1.0.0
10
+ */
11
+ /**
12
+ * Returns an analysis prompt tailored to the given plan type.
13
+ * The prompt instructs Claude to write analysis output to `.specs/analysis.md`.
14
+ * @since 1.0.0
15
+ * @category prompts
16
+ */
17
+ const getAnalysisPrompt = planType => {
18
+ switch (planType) {
19
+ case "Feature":
20
+ return `\
21
+ Now analyze the spec you just wrote. Create the following files:
22
+
23
+ 1. \`.specs/analysis.md\` — high-level design summary in plain text:
24
+ - What services are added or changed and why
25
+ - Layer composition: what depends on what
26
+ - Key design decisions and trade-offs
27
+
28
+ 2. \`.specs/services.mmd\` — a Mermaid classDiagram showing all new/changed service interfaces with their methods and return types. Use \`<<interface>>\` annotations. Show dependency arrows between services. Use \`~\` for generics (e.g. \`Effect~void, MyError~\`).
29
+
30
+ 3. \`.specs/test.md\` — detailed test plan using AAA (Arrange/Act/Assert) structure. For each test case:
31
+ - **Name**: descriptive test name in \`it("...")\` style
32
+ - **Arrange**: what mocks, layers, and initial state to set up
33
+ - **Act**: the single effect/function call under test
34
+ - **Assert**: expected outcome and why this case matters
35
+
36
+ Do NOT display file contents in your response. The system will send them to the user.`;
37
+ case "Bug":
38
+ return `\
39
+ Now analyze the spec you just wrote. Write your analysis to \`.specs/analysis.md\` covering:
40
+ - Root cause analysis
41
+ - A failing TDD test case that reproduces the bug
42
+ - Resolution strategy
43
+ - Regression prevention measures`;
44
+ case "Refactor":
45
+ return `\
46
+ Now analyze the spec you just wrote. Write your analysis to \`.specs/analysis.md\` covering:
47
+ - Current state vs target state
48
+ - Migration steps in order
49
+ - Risk assessment for each step
50
+ - Test impact: which tests need updating?`;
51
+ default:
52
+ return `\
53
+ Now analyze the spec you just wrote. Write your analysis to \`.specs/analysis.md\` covering:
54
+ - Scope summary
55
+ - Implementation approach
56
+ - Dependencies and prerequisites
57
+ - Test strategy`;
58
+ }
59
+ };
60
+ exports.getAnalysisPrompt = getAnalysisPrompt;
61
+ //# sourceMappingURL=AnalysisPrompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalysisPrompts.js","names":["getAnalysisPrompt","planType","exports"],"sources":["../../../src/lib/AnalysisPrompts.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA;;;;AAKA;;;;;;AAMO,MAAMA,iBAAiB,GAAIC,QAAgB,IAAY;EAC5D,QAAQA,QAAQ;IACd,KAAK,SAAS;MACZ,OAAO;;;;;;;;;;;;;;;;sFAgByE;IAClF,KAAK,KAAK;MACR,OAAO;;;;;iCAKoB;IAC7B,KAAK,UAAU;MACb,OAAO;;;;;0CAK6B;IACtC;MACE,OAAO;;;;;gBAKG;EACd;AACF,CAAC;AAAAC,OAAA,CAAAF,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.extractIssueId = exports.BranchParserLive = exports.BranchParser = void 0;
7
+ var _effect = require("effect");
8
+ /**
9
+ * Branch name parser service to extract and resolve issue IDs
10
+ * @since 1.0.0
11
+ */
12
+
13
+ const linearPattern = /^([A-Z]+-\d+)\//;
14
+ const linearAnywhere = /([A-Z]+-\d+)/;
15
+ const githubIssuePattern = /^#?(\d+)\//;
16
+ const githubIssueAnywhere = /(?:^|\/)#?(\d+)(?:\/|$)/;
17
+ const linearIdPattern = /^[A-Z]+-\d+$/;
18
+ /**
19
+ * Extract a raw issue ID from a git branch name.
20
+ *
21
+ * Tries patterns in order:
22
+ * 1. Linear-style prefix: `ABC-123/description` → `ABC-123`
23
+ * 2. Linear-style anywhere: `feature/ABC-123-description` → `ABC-123`
24
+ * 3. GitHub issue prefix: `#42/description` or `42/description` → `42`
25
+ * 4. GitHub issue anywhere: `feature/#42/description` → `42`
26
+ *
27
+ * @since 1.0.0
28
+ * @category parsers
29
+ */
30
+ const extractIssueId = branch => _effect.Option.fromNullable(linearPattern.exec(branch)?.[1]).pipe(_effect.Option.orElse(() => _effect.Option.fromNullable(linearAnywhere.exec(branch)?.[1])), _effect.Option.orElse(() => _effect.Option.fromNullable(githubIssuePattern.exec(branch)?.[1])), _effect.Option.orElse(() => _effect.Option.fromNullable(githubIssueAnywhere.exec(branch)?.[1])));
31
+ /**
32
+ * @since 1.0.0
33
+ * @category context
34
+ */
35
+ exports.extractIssueId = extractIssueId;
36
+ class BranchParser extends /*#__PURE__*/_effect.Context.Tag("BranchParser")() {}
37
+ /**
38
+ * @since 1.0.0
39
+ * @category layers
40
+ */
41
+ exports.BranchParser = BranchParser;
42
+ const BranchParserLive = exports.BranchParserLive = /*#__PURE__*/_effect.Layer.succeed(BranchParser, /*#__PURE__*/BranchParser.of({
43
+ resolveIssueId: pr => _effect.Option.map(extractIssueId(pr.headRef), id => linearIdPattern.test(id) ? id : `${pr.repo}#${id}`)
44
+ }));
45
+ //# sourceMappingURL=BranchParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BranchParser.js","names":["_effect","require","linearPattern","linearAnywhere","githubIssuePattern","githubIssueAnywhere","linearIdPattern","extractIssueId","branch","Option","fromNullable","exec","pipe","orElse","exports","BranchParser","Context","Tag","BranchParserLive","Layer","succeed","of","resolveIssueId","pr","map","headRef","id","test","repo"],"sources":["../../../src/lib/BranchParser.ts"],"sourcesContent":[null],"mappings":";;;;;;AAIA,IAAAA,OAAA,GAAAC,OAAA;AAJA;;;;;AAOA,MAAMC,aAAa,GAAG,iBAAiB;AACvC,MAAMC,cAAc,GAAG,cAAc;AACrC,MAAMC,kBAAkB,GAAG,YAAY;AACvC,MAAMC,mBAAmB,GAAG,yBAAyB;AAErD,MAAMC,eAAe,GAAG,cAAc;AAEtC;;;;;;;;;;;;AAYO,MAAMC,cAAc,GAAIC,MAAc,IAC3CC,cAAM,CAACC,YAAY,CAACR,aAAa,CAACS,IAAI,CAACH,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAACI,IAAI,CACvDH,cAAM,CAACI,MAAM,CAAC,MAAMJ,cAAM,CAACC,YAAY,CAACP,cAAc,CAACQ,IAAI,CAACH,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAC1EC,cAAM,CAACI,MAAM,CAAC,MAAMJ,cAAM,CAACC,YAAY,CAACN,kBAAkB,CAACO,IAAI,CAACH,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAC9EC,cAAM,CAACI,MAAM,CAAC,MAAMJ,cAAM,CAACC,YAAY,CAACL,mBAAmB,CAACM,IAAI,CAACH,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAChF;AAUH;;;;AAAAM,OAAA,CAAAP,cAAA,GAAAA,cAAA;AAIM,MAAOQ,YAAa,sBAAQC,eAAO,CAACC,GAAG,CAAC,cAAc,CAAC,EAAqC;AAElG;;;;AAAAH,OAAA,CAAAC,YAAA,GAAAA,YAAA;AAIO,MAAMG,gBAAgB,GAAAJ,OAAA,CAAAI,gBAAA,gBAAGC,aAAK,CAACC,OAAO,CAC3CL,YAAY,eACZA,YAAY,CAACM,EAAE,CAAC;EACdC,cAAc,EAAGC,EAAE,IACjBd,cAAM,CAACe,GAAG,CAACjB,cAAc,CAACgB,EAAE,CAACE,OAAO,CAAC,EAAGC,EAAE,IAAKpB,eAAe,CAACqB,IAAI,CAACD,EAAE,CAAC,GAAGA,EAAE,GAAG,GAAGH,EAAE,CAACK,IAAI,IAAIF,EAAE,EAAE;CACpG,CAAC,CACH","ignoreList":[]}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.mermaidToPlantUml = void 0;
7
+ /**
8
+ * Converts Mermaid class diagram syntax to PlantUML.
9
+ * Pure function — no side effects or dependencies.
10
+ * @since 1.0.0
11
+ */
12
+ /**
13
+ * Convert a Mermaid class diagram to PlantUML syntax.
14
+ *
15
+ * Handles:
16
+ * - `classDiagram` → `@startuml` / `@enduml`
17
+ * - `class Foo {` blocks (preserved)
18
+ * - `<<interface>>` stereotypes (preserved)
19
+ * - `~Type1, Type2~` generics → `<Type1, Type2>`
20
+ * - `+method(params) ReturnType` → `+method(params): ReturnType`
21
+ * - Relationship arrows pass through (`<|--`, `<|..`, `-->`, `..>`)
22
+ * @since 1.0.0
23
+ */
24
+ const mermaidToPlantUml = mermaid => {
25
+ const lines = mermaid.split("\n");
26
+ const output = [];
27
+ let insideClassBlock = false;
28
+ for (const rawLine of lines) {
29
+ const line = rawLine.trim();
30
+ // Skip empty lines — pass through
31
+ if (line === "") {
32
+ output.push("");
33
+ continue;
34
+ }
35
+ // classDiagram → @startuml
36
+ if (line === "classDiagram") {
37
+ output.push("@startuml");
38
+ continue;
39
+ }
40
+ // Convert generics: ~Type1, Type2~ → <Type1, Type2>
41
+ const converted = line.replace(/~([^~]+)~/g, "<$1>");
42
+ // Detect class block open: "class Foo {" or "class Foo<T> {"
43
+ if (/^class\s+\S+.*\{$/.test(converted)) {
44
+ insideClassBlock = true;
45
+ output.push(converted);
46
+ continue;
47
+ }
48
+ // Detect class block close
49
+ if (converted === "}" && insideClassBlock) {
50
+ insideClassBlock = false;
51
+ output.push("}");
52
+ continue;
53
+ }
54
+ // Inside a class block: convert member signatures
55
+ if (insideClassBlock) {
56
+ output.push(convertMember(converted));
57
+ continue;
58
+ }
59
+ // Outside class blocks — relationships, annotations, etc. pass through
60
+ output.push(converted);
61
+ }
62
+ output.push("@enduml");
63
+ return output.join("\n");
64
+ };
65
+ /**
66
+ * Convert a single class member line.
67
+ * Mermaid: `+method(params) ReturnType` → PlantUML: `+method(params): ReturnType`
68
+ * Mermaid: `+field Type` → PlantUML: `+field: Type`
69
+ * Stereotypes like `<<interface>>` pass through unchanged.
70
+ */
71
+ exports.mermaidToPlantUml = mermaidToPlantUml;
72
+ const convertMember = line => {
73
+ // <<interface>> or <<abstract>> — pass through
74
+ if (/^<<.+>>$/.test(line)) {
75
+ return line;
76
+ }
77
+ // Method with parentheses: +method(params) ReturnType
78
+ const methodMatch = /^([+\-#~]?)(\w+)\(([^)]*)\)\s+(.+)$/.exec(line);
79
+ if (methodMatch) {
80
+ const [, visibility, name, params, returnType] = methodMatch;
81
+ return `${visibility}${name}(${params}): ${returnType}`;
82
+ }
83
+ // Method with parentheses but no return type: +method(params)
84
+ const methodNoReturn = /^([+\-#~]?)(\w+)\(([^)]*)\)$/.exec(line);
85
+ if (methodNoReturn) {
86
+ return line;
87
+ }
88
+ // Field: +field Type (no parentheses, has a space separating name and type)
89
+ const fieldMatch = /^([+\-#~]?)(\w+)\s+(.+)$/.exec(line);
90
+ if (fieldMatch) {
91
+ const [, visibility, name, type] = fieldMatch;
92
+ return `${visibility}${name}: ${type}`;
93
+ }
94
+ return line;
95
+ };
96
+ //# sourceMappingURL=MermaidToPlantUml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MermaidToPlantUml.js","names":["mermaidToPlantUml","mermaid","lines","split","output","insideClassBlock","rawLine","line","trim","push","converted","replace","test","convertMember","join","exports","methodMatch","exec","visibility","name","params","returnType","methodNoReturn","fieldMatch","type"],"sources":["../../../src/lib/MermaidToPlantUml.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA;;;;;AAMA;;;;;;;;;;;;AAYO,MAAMA,iBAAiB,GAAIC,OAAe,IAAY;EAC3D,MAAMC,KAAK,GAAGD,OAAO,CAACE,KAAK,CAAC,IAAI,CAAC;EACjC,MAAMC,MAAM,GAAkB,EAAE;EAChC,IAAIC,gBAAgB,GAAG,KAAK;EAE5B,KAAK,MAAMC,OAAO,IAAIJ,KAAK,EAAE;IAC3B,MAAMK,IAAI,GAAGD,OAAO,CAACE,IAAI,EAAE;IAE3B;IACA,IAAID,IAAI,KAAK,EAAE,EAAE;MACfH,MAAM,CAACK,IAAI,CAAC,EAAE,CAAC;MACf;IACF;IAEA;IACA,IAAIF,IAAI,KAAK,cAAc,EAAE;MAC3BH,MAAM,CAACK,IAAI,CAAC,WAAW,CAAC;MACxB;IACF;IAEA;IACA,MAAMC,SAAS,GAAGH,IAAI,CAACI,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;IAEpD;IACA,IAAI,mBAAmB,CAACC,IAAI,CAACF,SAAS,CAAC,EAAE;MACvCL,gBAAgB,GAAG,IAAI;MACvBD,MAAM,CAACK,IAAI,CAACC,SAAS,CAAC;MACtB;IACF;IAEA;IACA,IAAIA,SAAS,KAAK,GAAG,IAAIL,gBAAgB,EAAE;MACzCA,gBAAgB,GAAG,KAAK;MACxBD,MAAM,CAACK,IAAI,CAAC,GAAG,CAAC;MAChB;IACF;IAEA;IACA,IAAIJ,gBAAgB,EAAE;MACpBD,MAAM,CAACK,IAAI,CAACI,aAAa,CAACH,SAAS,CAAC,CAAC;MACrC;IACF;IAEA;IACAN,MAAM,CAACK,IAAI,CAACC,SAAS,CAAC;EACxB;EAEAN,MAAM,CAACK,IAAI,CAAC,SAAS,CAAC;EACtB,OAAOL,MAAM,CAACU,IAAI,CAAC,IAAI,CAAC;AAC1B,CAAC;AAED;;;;;;AAAAC,OAAA,CAAAf,iBAAA,GAAAA,iBAAA;AAMA,MAAMa,aAAa,GAAIN,IAAY,IAAY;EAC7C;EACA,IAAI,UAAU,CAACK,IAAI,CAACL,IAAI,CAAC,EAAE;IACzB,OAAOA,IAAI;EACb;EAEA;EACA,MAAMS,WAAW,GAAG,qCAAqC,CAACC,IAAI,CAACV,IAAI,CAAC;EACpE,IAAIS,WAAW,EAAE;IACf,MAAM,GAAGE,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAEC,UAAU,CAAC,GAAGL,WAAW;IAC5D,OAAO,GAAGE,UAAU,GAAGC,IAAI,IAAIC,MAAM,MAAMC,UAAU,EAAE;EACzD;EAEA;EACA,MAAMC,cAAc,GAAG,8BAA8B,CAACL,IAAI,CAACV,IAAI,CAAC;EAChE,IAAIe,cAAc,EAAE;IAClB,OAAOf,IAAI;EACb;EAEA;EACA,MAAMgB,UAAU,GAAG,0BAA0B,CAACN,IAAI,CAACV,IAAI,CAAC;EACxD,IAAIgB,UAAU,EAAE;IACd,MAAM,GAAGL,UAAU,EAAEC,IAAI,EAAEK,IAAI,CAAC,GAAGD,UAAU;IAC7C,OAAO,GAAGL,UAAU,GAAGC,IAAI,KAAKK,IAAI,EAAE;EACxC;EAEA,OAAOjB,IAAI;AACb,CAAC","ignoreList":[]}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateSpecHtml = void 0;
7
+ /**
8
+ * Generates a self-contained HTML page from spec files, with Mermaid.js
9
+ * CDN for client-side diagram rendering.
10
+ * @since 1.0.0
11
+ */
12
+ const escapeHtml = text => text.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll("\"", "&quot;");
13
+ const markdownToHtml = text => {
14
+ const placeholders = [];
15
+ let counter = 0;
16
+ const makePlaceholder = htmlContent => {
17
+ const key = `\x00PH${counter}\x00`;
18
+ counter++;
19
+ placeholders.push([key, htmlContent]);
20
+ return key;
21
+ };
22
+ // Extract fenced code blocks
23
+ let result = text.replace(/```(\w+)?\n([\s\S]*?)```/g, (_, lang, code) => {
24
+ const escaped = escapeHtml(code);
25
+ if (lang) {
26
+ return makePlaceholder(`<pre><code class="language-${escapeHtml(lang)}">${escaped}</code></pre>`);
27
+ }
28
+ return makePlaceholder(`<pre><code>${escaped}</code></pre>`);
29
+ });
30
+ // Extract inline code
31
+ result = result.replace(/`([^`\n]+)`/g, (_, code) => makePlaceholder(`<code>${escapeHtml(code)}</code>`));
32
+ // HTML-escape remaining text
33
+ result = escapeHtml(result);
34
+ // Bold: **text** or __text__
35
+ result = result.replace(/\*\*(.+?)\*\*/g, "<strong>$1</strong>");
36
+ result = result.replace(/__(.+?)__/g, "<strong>$1</strong>");
37
+ // Italic: *text*
38
+ result = result.replace(/\*(\S.*?\S|\S)\*/g, "<em>$1</em>");
39
+ result = result.replace(/(?<!\w)_(\S.*?\S|\S)_(?!\w)/g, "<em>$1</em>");
40
+ // Links: [text](url)
41
+ result = result.replace(/\[([^\]]+)\]\(([^)]+)\)/g, "<a href=\"$2\">$1</a>");
42
+ // Strikethrough: ~~text~~
43
+ result = result.replace(/~~(.+?)~~/g, "<s>$1</s>");
44
+ // Horizontal rules: --- or *** or ___ on their own line
45
+ result = result.replace(/^(?:---|\*\*\*|___)$/gm, "<hr>");
46
+ // Process block-level elements line by line
47
+ const lines = result.split("\n");
48
+ const output = [];
49
+ let inList = false;
50
+ for (const line of lines) {
51
+ // Headers: # Header
52
+ const headerMatch = /^(#{1,6})\s+(.+)$/.exec(line);
53
+ if (headerMatch?.[1] && headerMatch[2]) {
54
+ if (inList) {
55
+ output.push("</ul>");
56
+ inList = false;
57
+ }
58
+ const level = headerMatch[1].length;
59
+ output.push(`<h${level}>${headerMatch[2]}</h${level}>`);
60
+ continue;
61
+ }
62
+ // Unordered list items: - item or * item
63
+ const listMatch = /^[-*]\s+(.+)$/.exec(line);
64
+ if (listMatch?.[1]) {
65
+ if (!inList) {
66
+ output.push("<ul>");
67
+ inList = true;
68
+ }
69
+ output.push(`<li>${listMatch[1]}</li>`);
70
+ continue;
71
+ }
72
+ // Close list if we hit a non-list line
73
+ if (inList) {
74
+ output.push("</ul>");
75
+ inList = false;
76
+ }
77
+ // Skip <hr> — already converted
78
+ if (line === "<hr>") {
79
+ output.push(line);
80
+ continue;
81
+ }
82
+ // Empty lines
83
+ if (line.trim() === "") {
84
+ output.push("");
85
+ continue;
86
+ }
87
+ // Regular paragraph
88
+ output.push(`<p>${line}</p>`);
89
+ }
90
+ if (inList) {
91
+ output.push("</ul>");
92
+ }
93
+ result = output.join("\n");
94
+ // Restore placeholders
95
+ for (const [key, htmlContent] of placeholders) {
96
+ result = result.replace(key, htmlContent);
97
+ }
98
+ return result;
99
+ };
100
+ const renderFileSection = file => {
101
+ const heading = `<h2>${escapeHtml(file.name)}</h2>`;
102
+ if (file.mermaid) {
103
+ return `${heading}\n<pre class="mermaid">${escapeHtml(file.content)}</pre>`;
104
+ }
105
+ return `${heading}\n${markdownToHtml(file.content)}`;
106
+ };
107
+ /**
108
+ * Generate a self-contained HTML page from spec files.
109
+ * Mermaid files are wrapped in `<pre class="mermaid">` for client-side rendering.
110
+ * Markdown files are converted to basic HTML.
111
+ * @since 1.0.0
112
+ */
113
+ const generateSpecHtml = files => {
114
+ const sections = files.map(renderFileSection).join("\n\n");
115
+ return `<!DOCTYPE html>
116
+ <html lang="en">
117
+ <head>
118
+ <meta charset="utf-8">
119
+ <meta name="viewport" content="width=device-width, initial-scale=1">
120
+ <title>Spec Files</title>
121
+ <style>
122
+ body {
123
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
124
+ max-width: 900px;
125
+ margin: 0 auto;
126
+ padding: 1rem;
127
+ line-height: 1.6;
128
+ color: #333;
129
+ }
130
+ pre {
131
+ background: #f5f5f5;
132
+ padding: 1rem;
133
+ overflow-x: auto;
134
+ border-radius: 4px;
135
+ }
136
+ code {
137
+ background: #f0f0f0;
138
+ padding: 0.15em 0.3em;
139
+ border-radius: 3px;
140
+ font-size: 0.9em;
141
+ }
142
+ pre code {
143
+ background: none;
144
+ padding: 0;
145
+ }
146
+ h2 {
147
+ border-bottom: 1px solid #eee;
148
+ padding-bottom: 0.3em;
149
+ }
150
+ </style>
151
+ </head>
152
+ <body>
153
+ ${sections}
154
+ <script src="https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js"></script>
155
+ <script>mermaid.initialize({ startOnLoad: true });</script>
156
+ </body>
157
+ </html>`;
158
+ };
159
+ exports.generateSpecHtml = generateSpecHtml;
160
+ //# sourceMappingURL=SpecHtmlGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpecHtmlGenerator.js","names":["escapeHtml","text","replaceAll","markdownToHtml","placeholders","counter","makePlaceholder","htmlContent","key","push","result","replace","_","lang","code","escaped","lines","split","output","inList","line","headerMatch","exec","level","length","listMatch","trim","join","renderFileSection","file","heading","name","mermaid","content","generateSpecHtml","files","sections","map","exports"],"sources":["../../../src/lib/SpecHtmlGenerator.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.parseNdjsonMessages = exports.StreamJsonMessage = exports.StreamJsonInput = exports.QuestionOption = exports.Question = exports.ContentBlock = exports.AskUserQuestionInput = void 0;
7
+ var _effect = require("effect");
8
+ /**
9
+ * NDJSON parser for Claude Code `--output-format stream-json` output
10
+ * @since 1.0.0
11
+ */
12
+
13
+ /**
14
+ * @since 1.0.0
15
+ * @category schemas
16
+ */
17
+ const ContentBlock = exports.ContentBlock = /*#__PURE__*/_effect.Schema.Struct({
18
+ type: _effect.Schema.String,
19
+ id: /*#__PURE__*/_effect.Schema.optional(_effect.Schema.String),
20
+ text: /*#__PURE__*/_effect.Schema.optional(_effect.Schema.String),
21
+ name: /*#__PURE__*/_effect.Schema.optional(_effect.Schema.String),
22
+ input: /*#__PURE__*/_effect.Schema.optional(_effect.Schema.Unknown)
23
+ });
24
+ /**
25
+ * @since 1.0.0
26
+ * @category schemas
27
+ */
28
+ class StreamJsonMessage extends /*#__PURE__*/_effect.Schema.Class("StreamJsonMessage")({
29
+ type: _effect.Schema.String,
30
+ subtype: /*#__PURE__*/_effect.Schema.optional(_effect.Schema.String),
31
+ session_id: /*#__PURE__*/_effect.Schema.optional(_effect.Schema.String),
32
+ message: /*#__PURE__*/_effect.Schema.optional(/*#__PURE__*/_effect.Schema.Struct({
33
+ id: /*#__PURE__*/_effect.Schema.optional(_effect.Schema.String),
34
+ content: /*#__PURE__*/_effect.Schema.optional(/*#__PURE__*/_effect.Schema.Array(ContentBlock))
35
+ }))
36
+ }) {}
37
+ /**
38
+ * @since 1.0.0
39
+ * @category schemas
40
+ */
41
+ exports.StreamJsonMessage = StreamJsonMessage;
42
+ const QuestionOption = exports.QuestionOption = /*#__PURE__*/_effect.Schema.Struct({
43
+ label: _effect.Schema.String,
44
+ description: /*#__PURE__*/_effect.Schema.optional(_effect.Schema.String)
45
+ });
46
+ /**
47
+ * @since 1.0.0
48
+ * @category schemas
49
+ */
50
+ const Question = exports.Question = /*#__PURE__*/_effect.Schema.Struct({
51
+ question: _effect.Schema.String,
52
+ header: /*#__PURE__*/_effect.Schema.optional(_effect.Schema.String),
53
+ options: /*#__PURE__*/_effect.Schema.optional(/*#__PURE__*/_effect.Schema.Array(QuestionOption)),
54
+ multiSelect: /*#__PURE__*/_effect.Schema.optional(_effect.Schema.Boolean)
55
+ });
56
+ /**
57
+ * @since 1.0.0
58
+ * @category schemas
59
+ */
60
+ const AskUserQuestionInput = exports.AskUserQuestionInput = /*#__PURE__*/_effect.Schema.Struct({
61
+ questions: /*#__PURE__*/_effect.Schema.optional(/*#__PURE__*/_effect.Schema.Array(Question))
62
+ });
63
+ /**
64
+ * @since 1.0.0
65
+ * @category schemas
66
+ */
67
+ class StreamJsonInput extends /*#__PURE__*/_effect.Schema.Class("StreamJsonInput")({
68
+ type: /*#__PURE__*/_effect.Schema.Literal("user"),
69
+ message: /*#__PURE__*/_effect.Schema.Struct({
70
+ role: /*#__PURE__*/_effect.Schema.Literal("user"),
71
+ content: _effect.Schema.String
72
+ }),
73
+ session_id: _effect.Schema.String,
74
+ parent_tool_use_id: /*#__PURE__*/_effect.Schema.NullOr(_effect.Schema.String)
75
+ }) {}
76
+ exports.StreamJsonInput = StreamJsonInput;
77
+ const decodeJsonMessage = /*#__PURE__*/_effect.Schema.decodeUnknown(/*#__PURE__*/_effect.Schema.parseJson(StreamJsonMessage));
78
+ /**
79
+ * Splits a string stream into lines and parses each as a StreamJsonMessage,
80
+ * silently filtering out lines that don't match.
81
+ * @since 1.0.0
82
+ * @category parsers
83
+ */
84
+ const parseNdjsonMessages = exports.parseNdjsonMessages = /*#__PURE__*/(0, _effect.flow)(_effect.Stream.splitLines, /*#__PURE__*/_effect.Stream.filter(line => line.trim().length > 0), /*#__PURE__*/_effect.Stream.mapEffect(line => decodeJsonMessage(line).pipe(_effect.Effect.tapError(err => _effect.Effect.logWarning("Non-JSON stdout line, skipping").pipe(_effect.Effect.annotateLogs({
85
+ line: line.slice(0, 300),
86
+ error: err.message.slice(0, 100)
87
+ }))), _effect.Effect.option)), /*#__PURE__*/_effect.Stream.filterMap(_effect.identity));
88
+ //# sourceMappingURL=StreamJsonParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamJsonParser.js","names":["_effect","require","ContentBlock","exports","Schema","Struct","type","String","id","optional","text","name","input","Unknown","StreamJsonMessage","Class","subtype","session_id","message","content","Array","QuestionOption","label","description","Question","question","header","options","multiSelect","Boolean","AskUserQuestionInput","questions","StreamJsonInput","Literal","role","parent_tool_use_id","NullOr","decodeJsonMessage","decodeUnknown","parseJson","parseNdjsonMessages","flow","Stream","splitLines","filter","line","trim","length","mapEffect","pipe","Effect","tapError","err","logWarning","annotateLogs","slice","error","option","filterMap","identity"],"sources":["../../../src/lib/StreamJsonParser.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.splitMessage = exports.markdownToTelegramHtml = void 0;
7
+ /**
8
+ * Markdown-to-Telegram-HTML converter.
9
+ *
10
+ * Telegram supports a narrow HTML subset: `<b>`, `<i>`, `<code>`, `<pre>`,
11
+ * `<a href>`, `<s>`. This module converts common markdown patterns to that
12
+ * subset while preserving code blocks verbatim.
13
+ *
14
+ * Ported from `repos/claude-code-telegram/src/bot/utils/html_format.py`.
15
+ * @since 1.0.0
16
+ */
17
+ const escapeHtml = text => text.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
18
+ /**
19
+ * Convert markdown text to Telegram-compatible HTML.
20
+ *
21
+ * Order of operations:
22
+ * 1. Extract fenced code blocks → placeholders
23
+ * 2. Extract inline code → placeholders
24
+ * 3. HTML-escape remaining text
25
+ * 4. Bold (`**text**` / `__text__`)
26
+ * 5. Italic (`*text*`, `_text_` at word boundaries)
27
+ * 6. Links (`[text](url)`)
28
+ * 7. Headers (`# Header` → `<b>Header</b>`)
29
+ * 8. Strikethrough (`~~text~~`)
30
+ * 9. Restore placeholders
31
+ * @since 1.0.0
32
+ */
33
+ const markdownToTelegramHtml = text => {
34
+ const placeholders = [];
35
+ let counter = 0;
36
+ const makePlaceholder = htmlContent => {
37
+ const key = `\x00PH${counter}\x00`;
38
+ counter++;
39
+ placeholders.push([key, htmlContent]);
40
+ return key;
41
+ };
42
+ // 1. Extract fenced code blocks
43
+ let result = text.replace(/```(\w+)?\n([\s\S]*?)```/g, (_, lang, code) => {
44
+ const escaped = escapeHtml(code);
45
+ if (lang) {
46
+ return makePlaceholder(`<pre><code class="language-${escapeHtml(lang)}">${escaped}</code></pre>`);
47
+ }
48
+ return makePlaceholder(`<pre><code>${escaped}</code></pre>`);
49
+ });
50
+ // 2. Extract inline code
51
+ result = result.replace(/`([^`\n]+)`/g, (_, code) => makePlaceholder(`<code>${escapeHtml(code)}</code>`));
52
+ // 3. HTML-escape remaining text
53
+ result = escapeHtml(result);
54
+ // 4. Bold: **text** or __text__
55
+ result = result.replace(/\*\*(.+?)\*\*/g, "<b>$1</b>");
56
+ result = result.replace(/__(.+?)__/g, "<b>$1</b>");
57
+ // 5. Italic: *text* (non-space bounded)
58
+ result = result.replace(/\*(\S.*?\S|\S)\*/g, "<i>$1</i>");
59
+ // _text_ only at word boundaries (avoid my_var_name)
60
+ result = result.replace(/(?<!\w)_(\S.*?\S|\S)_(?!\w)/g, "<i>$1</i>");
61
+ // 6. Links: [text](url)
62
+ result = result.replace(/\[([^\]]+)\]\(([^)]+)\)/g, "<a href=\"$2\">$1</a>");
63
+ // 7. Headers: # Header -> <b>Header</b>
64
+ result = result.replace(/^#{1,6}\s+(.+)$/gm, "<b>$1</b>");
65
+ // 8. Strikethrough: ~~text~~
66
+ result = result.replace(/~~(.+?)~~/g, "<s>$1</s>");
67
+ // 9. Restore placeholders
68
+ for (const [key, htmlContent] of placeholders) {
69
+ result = result.replace(key, htmlContent);
70
+ }
71
+ return result;
72
+ };
73
+ /**
74
+ * Split a message into chunks that fit within Telegram's message size limit.
75
+ *
76
+ * Splits on `\n\n` boundaries first; if a single paragraph still exceeds the
77
+ * limit, splits on `\n`.
78
+ * @since 1.0.0
79
+ */
80
+ exports.markdownToTelegramHtml = markdownToTelegramHtml;
81
+ const splitMessage = (text, maxLen = 4096) => {
82
+ if (text.length <= maxLen) {
83
+ return [text];
84
+ }
85
+ const chunks = [];
86
+ const paragraphs = text.split("\n\n");
87
+ let current = "";
88
+ for (const para of paragraphs) {
89
+ const candidate = current.length === 0 ? para : `${current}\n\n${para}`;
90
+ if (candidate.length <= maxLen) {
91
+ current = candidate;
92
+ } else {
93
+ if (current.length > 0) {
94
+ chunks.push(current);
95
+ current = "";
96
+ }
97
+ // If the paragraph itself exceeds maxLen, split on \n
98
+ if (para.length > maxLen) {
99
+ const lines = para.split("\n");
100
+ for (const line of lines) {
101
+ const lineCandidate = current.length === 0 ? line : `${current}\n${line}`;
102
+ if (lineCandidate.length <= maxLen) {
103
+ current = lineCandidate;
104
+ } else {
105
+ if (current.length > 0) {
106
+ chunks.push(current);
107
+ }
108
+ current = line;
109
+ }
110
+ }
111
+ } else {
112
+ current = para;
113
+ }
114
+ }
115
+ }
116
+ if (current.length > 0) {
117
+ chunks.push(current);
118
+ }
119
+ return chunks;
120
+ };
121
+ exports.splitMessage = splitMessage;
122
+ //# sourceMappingURL=TelegramFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelegramFormatter.js","names":["escapeHtml","text","replaceAll","markdownToTelegramHtml","placeholders","counter","makePlaceholder","htmlContent","key","push","result","replace","_","lang","code","escaped","exports","splitMessage","maxLen","length","chunks","paragraphs","split","current","para","candidate","lines","line","lineCandidate"],"sources":["../../../src/lib/TelegramFormatter.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}