@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
package/src/Events.ts ADDED
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Event types for the notification system
3
+ * @since 1.0.0
4
+ */
5
+ import { Data } from "effect"
6
+ import type { GitHubComment, GitHubPullRequest } from "./schemas/GitHubSchemas.js"
7
+ import type { TrackerIssue } from "./schemas/TrackerSchemas.js"
8
+
9
+ /**
10
+ * @since 1.0.0
11
+ * @category events
12
+ */
13
+ export class TaskCreated extends Data.TaggedClass("TaskCreated")<{
14
+ readonly issue: TrackerIssue
15
+ }> {}
16
+
17
+ /**
18
+ * @since 1.0.0
19
+ * @category events
20
+ */
21
+ export class TaskUpdated extends Data.TaggedClass("TaskUpdated")<{
22
+ readonly issue: TrackerIssue
23
+ readonly previousState: string
24
+ }> {}
25
+
26
+ /**
27
+ * @since 1.0.0
28
+ * @category events
29
+ */
30
+ export class PROpened extends Data.TaggedClass("PROpened")<{
31
+ readonly pr: GitHubPullRequest
32
+ }> {}
33
+
34
+ /**
35
+ * @since 1.0.0
36
+ * @category events
37
+ */
38
+ export class PRConflictDetected extends Data.TaggedClass("PRConflictDetected")<{
39
+ readonly pr: GitHubPullRequest
40
+ }> {}
41
+
42
+ /**
43
+ * @since 1.0.0
44
+ * @category events
45
+ */
46
+ export class PRCommentAdded extends Data.TaggedClass("PRCommentAdded")<{
47
+ readonly pr: GitHubPullRequest
48
+ readonly comment: GitHubComment
49
+ }> {}
50
+
51
+ /**
52
+ * @since 1.0.0
53
+ * @category events
54
+ */
55
+ export class PRAutoMerged extends Data.TaggedClass("PRAutoMerged")<{
56
+ readonly pr: GitHubPullRequest
57
+ }> {}
58
+
59
+ /**
60
+ * @since 1.0.0
61
+ * @category events
62
+ */
63
+ export class PRCIFailed extends Data.TaggedClass("PRCIFailed")<{
64
+ readonly pr: GitHubPullRequest
65
+ readonly failedChecks: ReadonlyArray<{
66
+ readonly name: string
67
+ readonly html_url: string
68
+ readonly conclusion: string
69
+ }>
70
+ }> {}
71
+
72
+ /**
73
+ * @since 1.0.0
74
+ * @category events
75
+ */
76
+ export type AutoMergeEvent = PRAutoMerged
77
+
78
+ /**
79
+ * @since 1.0.0
80
+ * @category events
81
+ */
82
+ export type PullRequestEvent =
83
+ | PROpened
84
+ | PRConflictDetected
85
+ | PRCommentAdded
86
+ | PRCIFailed
87
+
88
+ /**
89
+ * @since 1.0.0
90
+ * @category events
91
+ */
92
+ export type TaskTrackerEvent = TaskCreated | TaskUpdated
93
+
94
+ /**
95
+ * @since 1.0.0
96
+ * @category events
97
+ */
98
+ export type AppEvent = PullRequestEvent | AutoMergeEvent | TaskTrackerEvent
package/src/Main.ts ADDED
@@ -0,0 +1,177 @@
1
+ /**
2
+ * lalph-notify CLI entry point — zero-config notification service using lalph project config
3
+ * @since 1.0.0
4
+ */
5
+ import { Command as CliCommand, Options, Prompt } from "@effect/cli"
6
+ import { Command as PlatformCommand, FetchHttpClient, FileSystem, Path } from "@effect/platform"
7
+ import { NodeContext, NodeRuntime } from "@effect/platform-node"
8
+ import { Config, Console, Effect, Layer, Logger, LogLevel, Option, Stream } from "effect"
9
+ import { fileURLToPath } from "node:url"
10
+ import { AppContext, AppContextLive } from "./services/AppContext.js"
11
+ import { AppRuntimeConfig, RuntimeConfig } from "./services/AppRuntimeConfig.js"
12
+ import { MainLayer, runEventLoop } from "./services/EventLoop.js"
13
+ import { LalphConfig } from "./services/LalphConfig.js"
14
+ import { MessengerAdapter } from "./services/MessengerAdapter/MessengerAdapter.js"
15
+ import { PlanCommandBuilder } from "./services/PlanSession.js"
16
+ import { TelegramConfig, TelegramConfigLive, TelegramConfigSchema } from "./services/TelegramConfig.js"
17
+
18
+ const lalphNotifyCommand = CliCommand.make(
19
+ "lalph-notify",
20
+ {
21
+ interval: Options.integer("interval").pipe(
22
+ Options.withDefault(30),
23
+ Options.withDescription("Poll interval in seconds")
24
+ ),
25
+ keyword: Options.text("keyword").pipe(
26
+ Options.withDefault("urgent"),
27
+ Options.withDescription("Trigger keyword for comment timer")
28
+ ),
29
+ timer: Options.integer("timer").pipe(
30
+ Options.withDefault(300),
31
+ Options.withDescription("Comment timer delay in seconds")
32
+ )
33
+ },
34
+ ({ interval, keyword, timer }) =>
35
+ Effect.gen(function*() {
36
+ const store = yield* TelegramConfig
37
+
38
+ const existingTelegram = yield* store.get
39
+ const botToken = Option.isSome(existingTelegram)
40
+ ? existingTelegram.value.botToken
41
+ : yield* Prompt.text({ message: "Telegram bot token" })
42
+ const storedChatId = Option.isSome(existingTelegram)
43
+ ? existingTelegram.value.chatId
44
+ : null
45
+
46
+ if (Option.isNone(existingTelegram)) {
47
+ yield* store.set(new TelegramConfigSchema({ botToken, chatId: null }))
48
+ }
49
+
50
+ const autoMergeEnabled = yield* Prompt.confirm({ message: "Enable auto-merge?", initial: false })
51
+ const autoMergeWaitMinutes = autoMergeEnabled
52
+ ? yield* Prompt.integer({ message: "Maximum minutes to wait after last push before merging", min: 1 })
53
+ : null
54
+
55
+ const runtimeConfig = new RuntimeConfig({
56
+ pollIntervalSeconds: interval,
57
+ triggerKeyword: keyword,
58
+ timerDelaySeconds: timer,
59
+ autoMergeEnabled,
60
+ ...(autoMergeWaitMinutes !== null ? { autoMergeWaitMinutes } : {})
61
+ })
62
+
63
+ const planCommandLayer = Layer.effect(
64
+ PlanCommandBuilder,
65
+ Effect.gen(function*() {
66
+ const appContext = yield* AppContext
67
+ const fs = yield* FileSystem.FileSystem
68
+ const pathService = yield* Path.Path
69
+
70
+ // Resolve the real claude binary path
71
+ const realClaudePath = yield* PlatformCommand.make("which", "claude").pipe(
72
+ PlatformCommand.string,
73
+ Effect.map((s) => s.trim())
74
+ )
75
+
76
+ // Resolve tsx binary for running the TypeScript shim
77
+ const tsxPath = yield* PlatformCommand.make("which", "tsx").pipe(
78
+ PlatformCommand.string,
79
+ Effect.map((s) => s.trim())
80
+ )
81
+
82
+ // Resolve the SDK-based shim entry point relative to this file
83
+ const shimMainTs = pathService.join(
84
+ pathService.dirname(fileURLToPath(import.meta.url)),
85
+ "shim",
86
+ "bin.ts"
87
+ )
88
+
89
+ yield* Effect.log("Resolved shim paths").pipe(
90
+ Effect.annotateLogs({ realClaudePath, tsxPath, shimMainTs })
91
+ )
92
+
93
+ // Create shim directory and script that delegates to the SDK-based shim
94
+ const shimDir = pathService.join(appContext.configDir, "bin")
95
+ yield* fs.makeDirectory(shimDir, { recursive: true })
96
+
97
+ const shimPath = pathService.join(shimDir, "claude")
98
+ const shimScript = [
99
+ "#!/bin/bash",
100
+ `for arg in "$@"; do`,
101
+ ` if [ "$arg" = "--output-format" ]; then`,
102
+ ` exec ${JSON.stringify(realClaudePath)} "$@"`,
103
+ ` fi`,
104
+ `done`,
105
+ `REAL_CLAUDE_PATH=${JSON.stringify(realClaudePath)} exec ${JSON.stringify(tsxPath)} ${
106
+ JSON.stringify(shimMainTs)
107
+ } "$@"`
108
+ ].join("\n")
109
+ yield* fs.writeFileString(shimPath, shimScript)
110
+ yield* fs.chmod(shimPath, 0o755)
111
+ yield* Effect.log("Claude SDK shim created").pipe(
112
+ Effect.annotateLogs({ shimPath })
113
+ )
114
+
115
+ const originalPath = process.env["PATH"] ?? ""
116
+ const shimmedPath = `${shimDir}:${originalPath}`
117
+
118
+ return (tempFile: string) =>
119
+ PlatformCommand.make("lalph", "plan", "--file", tempFile, "--dangerous").pipe(
120
+ PlatformCommand.workingDirectory(appContext.projectRoot),
121
+ PlatformCommand.env({ PATH: shimmedPath }),
122
+ PlatformCommand.stdout("pipe"),
123
+ PlatformCommand.stderr("pipe"),
124
+ PlatformCommand.stdin("pipe")
125
+ )
126
+ })
127
+ )
128
+
129
+ const appLayer = Layer.mergeAll(
130
+ Layer.succeed(AppRuntimeConfig, runtimeConfig),
131
+ Layer.succeed(TelegramConfig, store),
132
+ planCommandLayer
133
+ )
134
+
135
+ yield* Effect.gen(function*() {
136
+ const creds = yield* LalphConfig
137
+ yield* Console.log(`Issue source: ${creds.issueSource}, repo: ${creds.repoFullName}`)
138
+
139
+ if (storedChatId === null) {
140
+ const messenger = yield* MessengerAdapter
141
+ yield* Console.log("Send any message to your Telegram bot to continue...")
142
+ const messages = yield* messenger.incomingMessages.pipe(
143
+ Stream.take(1),
144
+ Stream.runCollect
145
+ )
146
+ const firstMsg = [...messages][0]!
147
+ yield* store.set(new TelegramConfigSchema({ botToken, chatId: firstMsg.chatId }))
148
+ yield* Console.log("Telegram config saved.")
149
+ }
150
+
151
+ yield* runEventLoop
152
+ }).pipe(
153
+ Effect.provide(MainLayer.pipe(Layer.provide(appLayer)))
154
+ )
155
+ })
156
+ ).pipe(CliCommand.withDescription("Zero-config notification service using lalph project config"))
157
+
158
+ const cli = CliCommand.run(lalphNotifyCommand, {
159
+ name: "lalph-notify",
160
+ version: "1.0.0"
161
+ })
162
+
163
+ const logLevelLayer = Layer.unwrapEffect(
164
+ Config.logLevel("LOG_LEVEL").pipe(
165
+ Config.withDefault(LogLevel.Info),
166
+ Effect.map(Logger.minimumLogLevel)
167
+ )
168
+ )
169
+
170
+ Effect.suspend(() => cli(process.argv)).pipe(
171
+ Effect.provide(TelegramConfigLive),
172
+ Effect.provide(AppContextLive),
173
+ Effect.provide(FetchHttpClient.layer),
174
+ Effect.provide(NodeContext.layer),
175
+ Effect.provide(logLevelLayer),
176
+ NodeRuntime.runMain
177
+ )
package/src/index.ts ADDED
@@ -0,0 +1,124 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ export * from "./schemas/TrackerSchemas.js"
5
+
6
+ /**
7
+ * @since 1.0.0
8
+ */
9
+ export * from "./schemas/GitHubSchemas.js"
10
+
11
+ /**
12
+ * @since 1.0.0
13
+ */
14
+ export * from "./schemas/CredentialSchemas.js"
15
+
16
+ /**
17
+ * @since 1.0.0
18
+ */
19
+ export * from "./schemas/LinearSchemas.js"
20
+
21
+ /**
22
+ * @since 1.0.0
23
+ */
24
+ export * from "./Events.js"
25
+
26
+ /**
27
+ * @since 1.0.0
28
+ */
29
+ export * from "./lib/BranchParser.js"
30
+
31
+ /**
32
+ * @since 1.0.0
33
+ */
34
+ export * from "./services/TaskTracker/TaskTracker.js"
35
+
36
+ /**
37
+ * @since 1.0.0
38
+ */
39
+ export * from "./services/TaskTracker/LinearTracker.js"
40
+
41
+ /**
42
+ * @since 1.0.0
43
+ */
44
+ export * from "./services/TaskTracker/GitHubIssueTracker.js"
45
+
46
+ /**
47
+ * @since 1.0.0
48
+ */
49
+ export * from "./services/OctokitClient.js"
50
+
51
+ /**
52
+ * @since 1.0.0
53
+ */
54
+ export * from "./services/LinearSdkClient.js"
55
+
56
+ /**
57
+ * @since 1.0.0
58
+ */
59
+ export * from "./services/GitHubClient.js"
60
+
61
+ /**
62
+ * @since 1.0.0
63
+ */
64
+ export * from "./services/EventLoop.js"
65
+
66
+ /**
67
+ * @since 1.0.0
68
+ */
69
+ export * from "./services/PullRequestTracker.js"
70
+
71
+ /**
72
+ * @since 1.0.0
73
+ */
74
+ export * from "./services/CommentTimer.js"
75
+
76
+ /**
77
+ * @since 1.0.0
78
+ */
79
+ export * from "./services/MessengerAdapter/MessengerAdapter.js"
80
+
81
+ /**
82
+ * @since 1.0.0
83
+ */
84
+ export * from "./services/MessengerAdapter/TelegramAdapter.js"
85
+
86
+ /**
87
+ * @since 1.0.0
88
+ */
89
+ export * from "./services/TrackerLayerMap.js"
90
+
91
+ /**
92
+ * @since 1.0.0
93
+ */
94
+ export * from "./services/TelegramConfig.js"
95
+
96
+ /**
97
+ * @since 1.0.0
98
+ */
99
+ export * from "./services/AppContext.js"
100
+
101
+ /**
102
+ * @since 1.0.0
103
+ */
104
+ export * from "./services/AppRuntimeConfig.js"
105
+
106
+ /**
107
+ * @since 1.0.0
108
+ */
109
+ export * from "./services/AutoMerge.js"
110
+
111
+ /**
112
+ * @since 1.0.0
113
+ */
114
+ export * from "./services/LalphConfig.js"
115
+
116
+ /**
117
+ * @since 1.0.0
118
+ */
119
+ export * from "./services/PlanSession.js"
120
+
121
+ /**
122
+ * @since 1.0.0
123
+ */
124
+ export * from "./lib/StreamJsonParser.js"
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Plan-type-specific analysis prompts for spec file follow-ups
3
+ * @since 1.0.0
4
+ */
5
+
6
+ /**
7
+ * Returns an analysis prompt tailored to the given plan type.
8
+ * The prompt instructs Claude to write analysis output to `.specs/analysis.md`.
9
+ * @since 1.0.0
10
+ * @category prompts
11
+ */
12
+ export const getAnalysisPrompt = (planType: string): string => {
13
+ switch (planType) {
14
+ case "Feature":
15
+ return `\
16
+ Now analyze the spec you just wrote. Create the following files:
17
+
18
+ 1. \`.specs/analysis.md\` — high-level design summary in plain text:
19
+ - What services are added or changed and why
20
+ - Layer composition: what depends on what
21
+ - Key design decisions and trade-offs
22
+
23
+ 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~\`).
24
+
25
+ 3. \`.specs/test.md\` — detailed test plan using AAA (Arrange/Act/Assert) structure. For each test case:
26
+ - **Name**: descriptive test name in \`it("...")\` style
27
+ - **Arrange**: what mocks, layers, and initial state to set up
28
+ - **Act**: the single effect/function call under test
29
+ - **Assert**: expected outcome and why this case matters
30
+
31
+ Do NOT display file contents in your response. The system will send them to the user.`
32
+ case "Bug":
33
+ return `\
34
+ Now analyze the spec you just wrote. Write your analysis to \`.specs/analysis.md\` covering:
35
+ - Root cause analysis
36
+ - A failing TDD test case that reproduces the bug
37
+ - Resolution strategy
38
+ - Regression prevention measures`
39
+ case "Refactor":
40
+ return `\
41
+ Now analyze the spec you just wrote. Write your analysis to \`.specs/analysis.md\` covering:
42
+ - Current state vs target state
43
+ - Migration steps in order
44
+ - Risk assessment for each step
45
+ - Test impact: which tests need updating?`
46
+ default:
47
+ return `\
48
+ Now analyze the spec you just wrote. Write your analysis to \`.specs/analysis.md\` covering:
49
+ - Scope summary
50
+ - Implementation approach
51
+ - Dependencies and prerequisites
52
+ - Test strategy`
53
+ }
54
+ }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Branch name parser service to extract and resolve issue IDs
3
+ * @since 1.0.0
4
+ */
5
+ import { Context, Layer, Option } from "effect"
6
+ import type { GitHubPullRequest } from "../schemas/GitHubSchemas.js"
7
+
8
+ const linearPattern = /^([A-Z]+-\d+)\//
9
+ const linearAnywhere = /([A-Z]+-\d+)/
10
+ const githubIssuePattern = /^#?(\d+)\//
11
+ const githubIssueAnywhere = /(?:^|\/)#?(\d+)(?:\/|$)/
12
+
13
+ const linearIdPattern = /^[A-Z]+-\d+$/
14
+
15
+ /**
16
+ * Extract a raw issue ID from a git branch name.
17
+ *
18
+ * Tries patterns in order:
19
+ * 1. Linear-style prefix: `ABC-123/description` → `ABC-123`
20
+ * 2. Linear-style anywhere: `feature/ABC-123-description` → `ABC-123`
21
+ * 3. GitHub issue prefix: `#42/description` or `42/description` → `42`
22
+ * 4. GitHub issue anywhere: `feature/#42/description` → `42`
23
+ *
24
+ * @since 1.0.0
25
+ * @category parsers
26
+ */
27
+ export const extractIssueId = (branch: string): Option.Option<string> =>
28
+ Option.fromNullable(linearPattern.exec(branch)?.[1]).pipe(
29
+ Option.orElse(() => Option.fromNullable(linearAnywhere.exec(branch)?.[1])),
30
+ Option.orElse(() => Option.fromNullable(githubIssuePattern.exec(branch)?.[1])),
31
+ Option.orElse(() => Option.fromNullable(githubIssueAnywhere.exec(branch)?.[1]))
32
+ )
33
+
34
+ /**
35
+ * @since 1.0.0
36
+ * @category services
37
+ */
38
+ export interface BranchParserService {
39
+ readonly resolveIssueId: (pr: GitHubPullRequest) => Option.Option<string>
40
+ }
41
+
42
+ /**
43
+ * @since 1.0.0
44
+ * @category context
45
+ */
46
+ export class BranchParser extends Context.Tag("BranchParser")<BranchParser, BranchParserService>() {}
47
+
48
+ /**
49
+ * @since 1.0.0
50
+ * @category layers
51
+ */
52
+ export const BranchParserLive = Layer.succeed(
53
+ BranchParser,
54
+ BranchParser.of({
55
+ resolveIssueId: (pr) =>
56
+ Option.map(extractIssueId(pr.headRef), (id) => linearIdPattern.test(id) ? id : `${pr.repo}#${id}`)
57
+ })
58
+ )
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Converts Mermaid class diagram syntax to PlantUML.
3
+ * Pure function — no side effects or dependencies.
4
+ * @since 1.0.0
5
+ */
6
+
7
+ /**
8
+ * Convert a Mermaid class diagram to PlantUML syntax.
9
+ *
10
+ * Handles:
11
+ * - `classDiagram` → `@startuml` / `@enduml`
12
+ * - `class Foo {` blocks (preserved)
13
+ * - `<<interface>>` stereotypes (preserved)
14
+ * - `~Type1, Type2~` generics → `<Type1, Type2>`
15
+ * - `+method(params) ReturnType` → `+method(params): ReturnType`
16
+ * - Relationship arrows pass through (`<|--`, `<|..`, `-->`, `..>`)
17
+ * @since 1.0.0
18
+ */
19
+ export const mermaidToPlantUml = (mermaid: string): string => {
20
+ const lines = mermaid.split("\n")
21
+ const output: Array<string> = []
22
+ let insideClassBlock = false
23
+
24
+ for (const rawLine of lines) {
25
+ const line = rawLine.trim()
26
+
27
+ // Skip empty lines — pass through
28
+ if (line === "") {
29
+ output.push("")
30
+ continue
31
+ }
32
+
33
+ // classDiagram → @startuml
34
+ if (line === "classDiagram") {
35
+ output.push("@startuml")
36
+ continue
37
+ }
38
+
39
+ // Convert generics: ~Type1, Type2~ → <Type1, Type2>
40
+ const converted = line.replace(/~([^~]+)~/g, "<$1>")
41
+
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
+
49
+ // Detect class block close
50
+ if (converted === "}" && insideClassBlock) {
51
+ insideClassBlock = false
52
+ output.push("}")
53
+ continue
54
+ }
55
+
56
+ // Inside a class block: convert member signatures
57
+ if (insideClassBlock) {
58
+ output.push(convertMember(converted))
59
+ continue
60
+ }
61
+
62
+ // Outside class blocks — relationships, annotations, etc. pass through
63
+ output.push(converted)
64
+ }
65
+
66
+ output.push("@enduml")
67
+ return output.join("\n")
68
+ }
69
+
70
+ /**
71
+ * Convert a single class member line.
72
+ * Mermaid: `+method(params) ReturnType` → PlantUML: `+method(params): ReturnType`
73
+ * Mermaid: `+field Type` → PlantUML: `+field: Type`
74
+ * Stereotypes like `<<interface>>` pass through unchanged.
75
+ */
76
+ const convertMember = (line: string): string => {
77
+ // <<interface>> or <<abstract>> — pass through
78
+ if (/^<<.+>>$/.test(line)) {
79
+ return line
80
+ }
81
+
82
+ // Method with parentheses: +method(params) ReturnType
83
+ const methodMatch = /^([+\-#~]?)(\w+)\(([^)]*)\)\s+(.+)$/.exec(line)
84
+ if (methodMatch) {
85
+ const [, visibility, name, params, returnType] = methodMatch
86
+ return `${visibility}${name}(${params}): ${returnType}`
87
+ }
88
+
89
+ // Method with parentheses but no return type: +method(params)
90
+ const methodNoReturn = /^([+\-#~]?)(\w+)\(([^)]*)\)$/.exec(line)
91
+ if (methodNoReturn) {
92
+ return line
93
+ }
94
+
95
+ // Field: +field Type (no parentheses, has a space separating name and type)
96
+ const fieldMatch = /^([+\-#~]?)(\w+)\s+(.+)$/.exec(line)
97
+ if (fieldMatch) {
98
+ const [, visibility, name, type] = fieldMatch
99
+ return `${visibility}${name}: ${type}`
100
+ }
101
+
102
+ return line
103
+ }