@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,186 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.PullRequestTrackerLive = exports.PullRequestTrackerError = exports.PullRequestTracker = void 0;
7
+ var _effect = require("effect");
8
+ var _Events = require("../Events.js");
9
+ var _GitHubSchemas = require("../schemas/GitHubSchemas.js");
10
+ var _AppRuntimeConfig = require("./AppRuntimeConfig.js");
11
+ var _GitHubClient = require("./GitHubClient.js");
12
+ var _LalphConfig = require("./LalphConfig.js");
13
+ /**
14
+ * GitHub event source polling service
15
+ * @since 1.0.0
16
+ */
17
+
18
+ /**
19
+ * @since 1.0.0
20
+ * @category errors
21
+ */
22
+ class PullRequestTrackerError extends /*#__PURE__*/_effect.Data.TaggedError("PullRequestTrackerError") {}
23
+ /**
24
+ * @since 1.0.0
25
+ * @category context
26
+ */
27
+ exports.PullRequestTrackerError = PullRequestTrackerError;
28
+ class PullRequestTracker extends /*#__PURE__*/_effect.Context.Tag("PullRequestTracker")() {}
29
+ exports.PullRequestTracker = PullRequestTracker;
30
+ const makeRepoFromFullName = fullName => new _GitHubSchemas.GitHubRepo({
31
+ id: 0,
32
+ name: "",
33
+ full_name: fullName,
34
+ owner: {
35
+ login: ""
36
+ },
37
+ html_url: ""
38
+ });
39
+ const isCIFailed = (state, checkRuns) => {
40
+ const anyCheckFailed = _effect.Array.some(checkRuns, cr => cr.conclusion !== null && cr.conclusion !== "success" && cr.conclusion !== "skipped");
41
+ return state === "failure" || anyCheckFailed;
42
+ };
43
+ /**
44
+ * @since 1.0.0
45
+ * @category layers
46
+ */
47
+ const PullRequestTrackerLive = exports.PullRequestTrackerLive = /*#__PURE__*/_effect.Layer.effect(PullRequestTracker, /*#__PURE__*/_effect.Effect.gen(function* () {
48
+ const config = yield* _AppRuntimeConfig.AppRuntimeConfig;
49
+ const lalphConfig = yield* _LalphConfig.LalphConfig;
50
+ const github = yield* _GitHubClient.GitHubClient;
51
+ const interval = _effect.Duration.seconds(config.pollIntervalSeconds);
52
+ const authenticatedUser = yield* github.getAuthenticatedUser().pipe(_effect.Effect.mapError(err => new PullRequestTrackerError({
53
+ message: `Failed to get authenticated user: ${String(err)}`,
54
+ cause: err
55
+ })));
56
+ const knownPRsRef = yield* _effect.Ref.make(_effect.HashSet.empty());
57
+ const conflictNotifiedRef = yield* _effect.Ref.make(_effect.HashSet.empty());
58
+ const lastCommentIdsRef = yield* _effect.Ref.make(_effect.HashMap.empty());
59
+ const failureNotifiedRef = yield* _effect.Ref.make(_effect.HashMap.empty());
60
+ const isFirstCycleRef = yield* _effect.Ref.make(true);
61
+ const pollCycle = _effect.Effect.gen(function* () {
62
+ const isFirstCycle = yield* _effect.Ref.get(isFirstCycleRef);
63
+ const knownPRs = yield* _effect.Ref.get(knownPRsRef);
64
+ const conflictNotified = yield* _effect.Ref.get(conflictNotifiedRef);
65
+ const lastCommentIds = yield* _effect.Ref.get(lastCommentIdsRef);
66
+ const allRepos = yield* github.listUserRepos().pipe(_effect.Effect.mapError(err => new PullRequestTrackerError({
67
+ message: `Failed to list repos: ${String(err)}`,
68
+ cause: err
69
+ })));
70
+ const repos = allRepos.filter(repo => repo.full_name === lalphConfig.repoFullName);
71
+ const allPRsWithRepos = yield* _effect.Effect.forEach(repos, repo => github.listOpenPRs(repo).pipe(_effect.Effect.map(_effect.Array.map(pr => ({
72
+ pr,
73
+ repo
74
+ }))), _effect.Effect.mapError(err => new PullRequestTrackerError({
75
+ message: `Failed to list PRs for ${repo.full_name}: ${String(err)}`,
76
+ cause: err
77
+ })))).pipe(_effect.Effect.map(_effect.Array.flatten));
78
+ const events = [];
79
+ const currentPRIds = _effect.HashSet.fromIterable(allPRsWithRepos.map(({
80
+ pr
81
+ }) => pr.id));
82
+ // Detect new PRs (only emit PROpened after first cycle)
83
+ for (const {
84
+ pr
85
+ } of allPRsWithRepos) {
86
+ if (!_effect.HashSet.has(knownPRs, pr.id) && !isFirstCycle) {
87
+ events.push(new _Events.PROpened({
88
+ pr
89
+ }));
90
+ }
91
+ }
92
+ // Detect conflicts (emit even on first cycle)
93
+ for (const {
94
+ pr
95
+ } of allPRsWithRepos) {
96
+ if (pr.hasConflicts && !_effect.HashSet.has(conflictNotified, pr.id)) {
97
+ events.push(new _Events.PRConflictDetected({
98
+ pr
99
+ }));
100
+ }
101
+ }
102
+ // Detect new comments
103
+ for (const {
104
+ pr,
105
+ repo
106
+ } of allPRsWithRepos) {
107
+ const issueComments = yield* github.listComments(repo, pr.number).pipe(_effect.Effect.mapError(err => new PullRequestTrackerError({
108
+ message: `Failed to list comments for PR #${pr.number}: ${String(err)}`,
109
+ cause: err
110
+ })));
111
+ const reviewComments = yield* github.listReviewComments(repo, pr.number).pipe(_effect.Effect.mapError(err => new PullRequestTrackerError({
112
+ message: `Failed to list review comments for PR #${pr.number}: ${String(err)}`,
113
+ cause: err
114
+ })));
115
+ const comments = [...issueComments, ...reviewComments];
116
+ const filteredComments = comments.filter(c => c.user.login === authenticatedUser.login);
117
+ const lastId = _effect.Option.getOrElse(_effect.HashMap.get(lastCommentIds, pr.id), () => 0);
118
+ const newComments = filteredComments.filter(c => c.id > lastId);
119
+ if (!isFirstCycle) {
120
+ for (const comment of newComments) {
121
+ events.push(new _Events.PRCommentAdded({
122
+ pr,
123
+ comment
124
+ }));
125
+ }
126
+ }
127
+ if (filteredComments.length > 0) {
128
+ const maxId = Math.max(...filteredComments.map(c => c.id));
129
+ yield* _effect.Ref.update(lastCommentIdsRef, m => _effect.HashMap.set(m, pr.id, maxId));
130
+ }
131
+ }
132
+ // Detect CI failures
133
+ for (const {
134
+ pr
135
+ } of allPRsWithRepos) {
136
+ const repo = makeRepoFromFullName(pr.repo);
137
+ const ciStatus = yield* github.getCIStatus(repo, pr.headSha).pipe(_effect.Effect.mapError(err => new PullRequestTrackerError({
138
+ message: `Failed to get CI status for PR #${pr.number}: ${String(err)}`,
139
+ cause: err
140
+ })));
141
+ if (isCIFailed(ciStatus.state, ciStatus.checkRuns)) {
142
+ const failureNotified = yield* _effect.Ref.get(failureNotifiedRef);
143
+ const notifiedSha = _effect.HashMap.get(failureNotified, pr.number);
144
+ const alreadyNotified = _effect.Option.isSome(notifiedSha) && notifiedSha.value === pr.headSha;
145
+ if (!alreadyNotified) {
146
+ const failedChecks = _effect.Array.filter(ciStatus.checkRuns, cr => cr.conclusion !== null && cr.conclusion !== "success" && cr.conclusion !== "skipped");
147
+ const failedCheckNames = _effect.Array.map(failedChecks, cr => `- ${cr.name}: ${cr.conclusion}`).join("\n");
148
+ yield* github.postComment(repo, pr.number, `CI checks failed for this PR:\n${failedCheckNames}`).pipe(_effect.Effect.mapError(err => new PullRequestTrackerError({
149
+ message: `Failed to post CI failure comment for PR #${pr.number}: ${String(err)}`,
150
+ cause: err
151
+ })));
152
+ yield* _effect.Ref.update(failureNotifiedRef, m => _effect.HashMap.set(m, pr.number, pr.headSha));
153
+ events.push(new _Events.PRCIFailed({
154
+ pr,
155
+ failedChecks: _effect.Array.map(failedChecks, cr => ({
156
+ name: cr.name,
157
+ html_url: cr.html_url,
158
+ conclusion: cr.conclusion ?? "unknown"
159
+ }))
160
+ }));
161
+ }
162
+ }
163
+ }
164
+ // Update state
165
+ yield* _effect.Ref.set(knownPRsRef, currentPRIds);
166
+ const conflictedIds = _effect.HashSet.fromIterable(allPRsWithRepos.filter(({
167
+ pr
168
+ }) => pr.hasConflicts).map(({
169
+ pr
170
+ }) => pr.id));
171
+ yield* _effect.Ref.set(conflictNotifiedRef, conflictedIds);
172
+ const currentPRNumbers = _effect.HashSet.fromIterable(allPRsWithRepos.map(({
173
+ pr
174
+ }) => pr.number));
175
+ yield* _effect.Ref.update(failureNotifiedRef, m => _effect.HashMap.filter(m, (_, prNumber) => _effect.HashSet.has(currentPRNumbers, prNumber)));
176
+ yield* _effect.Ref.set(isFirstCycleRef, false);
177
+ return events;
178
+ });
179
+ const emptyBatch = [];
180
+ const safePollCycle = pollCycle.pipe(_effect.Effect.tapError(err => _effect.Effect.logError(`PullRequestTracker poll cycle failed: ${err.message}`)), _effect.Effect.orElseSucceed(() => emptyBatch));
181
+ const eventStream = _effect.Stream.repeatEffectWithSchedule(safePollCycle, _effect.Schedule.spaced(interval)).pipe(_effect.Stream.flatMap(batch => _effect.Stream.fromIterable(batch)));
182
+ return PullRequestTracker.of({
183
+ eventStream
184
+ });
185
+ }));
186
+ //# sourceMappingURL=PullRequestTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PullRequestTracker.js","names":["_effect","require","_Events","_GitHubSchemas","_AppRuntimeConfig","_GitHubClient","_LalphConfig","PullRequestTrackerError","Data","TaggedError","exports","PullRequestTracker","Context","Tag","makeRepoFromFullName","fullName","GitHubRepoClass","id","name","full_name","owner","login","html_url","isCIFailed","state","checkRuns","anyCheckFailed","Array","some","cr","conclusion","PullRequestTrackerLive","Layer","effect","Effect","gen","config","AppRuntimeConfig","lalphConfig","LalphConfig","github","GitHubClient","interval","Duration","seconds","pollIntervalSeconds","authenticatedUser","getAuthenticatedUser","pipe","mapError","err","message","String","cause","knownPRsRef","Ref","make","HashSet","empty","conflictNotifiedRef","lastCommentIdsRef","HashMap","failureNotifiedRef","isFirstCycleRef","pollCycle","isFirstCycle","get","knownPRs","conflictNotified","lastCommentIds","allRepos","listUserRepos","repos","filter","repo","repoFullName","allPRsWithRepos","forEach","listOpenPRs","map","pr","flatten","events","currentPRIds","fromIterable","has","push","PROpened","hasConflicts","PRConflictDetected","issueComments","listComments","number","reviewComments","listReviewComments","comments","filteredComments","c","user","lastId","Option","getOrElse","newComments","comment","PRCommentAdded","length","maxId","Math","max","update","m","set","ciStatus","getCIStatus","headSha","failureNotified","notifiedSha","alreadyNotified","isSome","value","failedChecks","failedCheckNames","join","postComment","PRCIFailed","conflictedIds","currentPRNumbers","_","prNumber","emptyBatch","safePollCycle","tapError","logError","orElseSucceed","eventStream","Stream","repeatEffectWithSchedule","Schedule","spaced","flatMap","batch","of"],"sources":["../../../src/services/PullRequestTracker.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TelegraphSpecUploaderLive = exports.SpecUploaderError = exports.SpecUploader = exports.GistSpecUploaderLive = void 0;
7
+ var _platform = require("@effect/platform");
8
+ var _effect = require("effect");
9
+ var Crypto = _interopRequireWildcard(require("node:crypto"));
10
+ var _TelegraphHtml = require("../lib/TelegraphHtml.js");
11
+ var _OctokitClient = require("./OctokitClient.js");
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ /**
14
+ * Service for uploading spec HTML files to a hosting backend.
15
+ * Two implementations: GitHub Gist and Telegraph (default).
16
+ * @since 1.0.0
17
+ */
18
+
19
+ /**
20
+ * @since 1.0.0
21
+ * @category errors
22
+ */
23
+ class SpecUploaderError extends /*#__PURE__*/_effect.Data.TaggedError("SpecUploaderError") {}
24
+ /**
25
+ * @since 1.0.0
26
+ * @category context
27
+ */
28
+ exports.SpecUploaderError = SpecUploaderError;
29
+ class SpecUploader extends /*#__PURE__*/_effect.Context.Tag("SpecUploader")() {}
30
+ /**
31
+ * GitHub Gist implementation — wraps existing OctokitClient.createGist.
32
+ * @since 1.0.0
33
+ * @category layers
34
+ */
35
+ exports.SpecUploader = SpecUploader;
36
+ const GistSpecUploaderLive = exports.GistSpecUploaderLive = /*#__PURE__*/_effect.Layer.effect(SpecUploader, /*#__PURE__*/_effect.Effect.gen(function* () {
37
+ const octokitClient = yield* _OctokitClient.OctokitClient;
38
+ return SpecUploader.of({
39
+ upload: (html, description) => _effect.Effect.gen(function* () {
40
+ const gist = yield* octokitClient.createGist({
41
+ description,
42
+ files: {
43
+ "spec.html": {
44
+ content: html
45
+ }
46
+ },
47
+ isPublic: false
48
+ }).pipe(_effect.Effect.mapError(err => new SpecUploaderError({
49
+ message: `Gist upload failed: ${err.message}`,
50
+ cause: err
51
+ })));
52
+ const rawUrl = gist.files["spec.html"]?.rawUrl ?? gist.htmlUrl;
53
+ const viewUrl = `https://htmlpreview.github.io/?${rawUrl}`;
54
+ return {
55
+ url: viewUrl
56
+ };
57
+ })
58
+ });
59
+ }));
60
+ const TelegraphSuccess = /*#__PURE__*/_effect.Schema.Struct({
61
+ ok: /*#__PURE__*/_effect.Schema.Literal(true),
62
+ result: /*#__PURE__*/_effect.Schema.Record({
63
+ key: _effect.Schema.String,
64
+ value: _effect.Schema.Unknown
65
+ })
66
+ });
67
+ const TelegraphError = /*#__PURE__*/_effect.Schema.Struct({
68
+ ok: /*#__PURE__*/_effect.Schema.Literal(false),
69
+ error: _effect.Schema.String
70
+ });
71
+ const TelegraphResponse = /*#__PURE__*/_effect.Schema.Union(TelegraphSuccess, TelegraphError);
72
+ /**
73
+ * Telegraph implementation — creates anonymous account, uploads pages via Telegraph API.
74
+ * No account or tokens required. Requires HttpClient.
75
+ * @since 1.0.0
76
+ * @category layers
77
+ */
78
+ const TelegraphSpecUploaderLive = exports.TelegraphSpecUploaderLive = /*#__PURE__*/_effect.Layer.effect(SpecUploader, /*#__PURE__*/_effect.Effect.gen(function* () {
79
+ const client = yield* _platform.HttpClient.HttpClient;
80
+ const telegraphPost = (url, body, label) => {
81
+ const req = _platform.HttpClientRequest.post(url).pipe(_platform.HttpClientRequest.bodyUnsafeJson(body));
82
+ return client.execute(req).pipe(_effect.Effect.flatMap(res => res.json), _effect.Effect.scoped, _effect.Effect.flatMap(_effect.Schema.decodeUnknown(TelegraphResponse)), _effect.Effect.flatMap(parsed => parsed.ok ? _effect.Effect.succeed(parsed.result) : _effect.Effect.fail(new SpecUploaderError({
83
+ message: `Telegraph ${label} failed: ${parsed.error}`,
84
+ cause: null
85
+ }))), _effect.Effect.mapError(err => err instanceof SpecUploaderError ? err : new SpecUploaderError({
86
+ message: `Telegraph ${label} request failed: ${String(err)}`,
87
+ cause: err
88
+ })));
89
+ };
90
+ const accountResult = yield* telegraphPost("https://api.telegra.ph/createAccount", {
91
+ short_name: "lalph"
92
+ }, "createAccount");
93
+ const accessToken = String(accountResult.access_token);
94
+ return SpecUploader.of({
95
+ upload: (html, description) => _effect.Effect.gen(function* () {
96
+ const telegraphHtml = (0, _TelegraphHtml.toTelegraphHtml)(html);
97
+ const title = Crypto.randomUUID();
98
+ const pageResult = yield* telegraphPost("https://api.telegra.ph/createPage", {
99
+ access_token: accessToken,
100
+ title,
101
+ author_name: "lalph",
102
+ content: telegraphHtml,
103
+ return_content: false
104
+ }, "createPage");
105
+ return {
106
+ url: String(pageResult.url)
107
+ };
108
+ }).pipe(_effect.Effect.annotateLogs("description", description))
109
+ });
110
+ }));
111
+ //# sourceMappingURL=SpecUploader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpecUploader.js","names":["_platform","require","_effect","Crypto","_interopRequireWildcard","_TelegraphHtml","_OctokitClient","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SpecUploaderError","Data","TaggedError","exports","SpecUploader","Context","Tag","GistSpecUploaderLive","Layer","effect","Effect","gen","octokitClient","OctokitClient","of","upload","html","description","gist","createGist","files","content","isPublic","pipe","mapError","err","message","cause","rawUrl","htmlUrl","viewUrl","url","TelegraphSuccess","Schema","Struct","ok","Literal","result","Record","key","String","value","Unknown","TelegraphError","error","TelegraphResponse","Union","TelegraphSpecUploaderLive","client","HttpClient","telegraphPost","body","label","req","HttpClientRequest","post","bodyUnsafeJson","execute","flatMap","res","json","scoped","decodeUnknown","parsed","succeed","fail","accountResult","short_name","accessToken","access_token","telegraphHtml","toTelegraphHtml","title","randomUUID","pageResult","author_name","return_content","annotateLogs"],"sources":["../../../src/services/SpecUploader.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SpecUploaderMap = void 0;
7
+ var _effect = require("effect");
8
+ var _SpecUploader = require("./SpecUploader.js");
9
+ /**
10
+ * Dynamic layer map for selecting SpecUploader implementation at runtime
11
+ * @since 1.0.0
12
+ */
13
+
14
+ /**
15
+ * @since 1.0.0
16
+ * @category layer-map
17
+ */
18
+ class SpecUploaderMap extends /*#__PURE__*/_effect.LayerMap.Service()("SpecUploaderMap", {
19
+ layers: {
20
+ gist: _SpecUploader.GistSpecUploaderLive,
21
+ telegraph: _SpecUploader.TelegraphSpecUploaderLive
22
+ }
23
+ }) {}
24
+ exports.SpecUploaderMap = SpecUploaderMap;
25
+ //# sourceMappingURL=SpecUploaderMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpecUploaderMap.js","names":["_effect","require","_SpecUploader","SpecUploaderMap","LayerMap","Service","layers","gist","GistSpecUploaderLive","telegraph","TelegraphSpecUploaderLive","exports"],"sources":["../../../src/services/SpecUploaderMap.ts"],"sourcesContent":[null],"mappings":";;;;;;AAIA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AALA;;;;;AAOA;;;;AAIM,MAAOE,eAAgB,sBAAQC,gBAAQ,CAACC,OAAO,EAAmB,CAAC,iBAAiB,EAAE;EAC1FC,MAAM,EAAE;IACNC,IAAI,EAAEC,kCAAoB;IAC1BC,SAAS,EAAEC;;CAEd,CAAC;AAAAC,OAAA,CAAAR,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TaskEventSourceLive = exports.TaskEventSourceError = exports.TaskEventSource = void 0;
7
+ var _effect = require("effect");
8
+ var _Events = require("../Events.js");
9
+ var _CredentialSchemas = require("../schemas/CredentialSchemas.js");
10
+ var _TaskTracker = require("./TaskTracker/TaskTracker.js");
11
+ class TaskEventSourceError extends /*#__PURE__*/_effect.Data.TaggedError("TaskEventSourceError") {}
12
+ exports.TaskEventSourceError = TaskEventSourceError;
13
+ class TaskEventSource extends /*#__PURE__*/_effect.Context.Tag("TaskEventSource")() {}
14
+ exports.TaskEventSource = TaskEventSource;
15
+ const TaskEventSourceLive = exports.TaskEventSourceLive = /*#__PURE__*/_effect.Layer.effect(TaskEventSource, /*#__PURE__*/_effect.Effect.gen(function* () {
16
+ const config = yield* _CredentialSchemas.AppRuntimeConfig;
17
+ const tracker = yield* _TaskTracker.TaskTracker;
18
+ const interval = _effect.Duration.seconds(config.pollIntervalSeconds);
19
+ const lastPollRef = yield* _effect.Ref.make(_effect.DateTime.unsafeNow());
20
+ const knownStatesRef = yield* _effect.Ref.make(_effect.HashMap.empty());
21
+ const pollCycle = _effect.Effect.gen(function* () {
22
+ const lastPoll = yield* _effect.Ref.get(lastPollRef);
23
+ const since = _effect.DateTime.formatIso(lastPoll);
24
+ const knownStates = yield* _effect.Ref.get(knownStatesRef);
25
+ yield* _effect.Ref.set(lastPollRef, _effect.DateTime.unsafeNow());
26
+ const issueEvents = yield* tracker.getRecentEvents(since).pipe(_effect.Effect.mapError(err => new TaskEventSourceError({
27
+ message: `Failed to get recent events: ${String(err)}`,
28
+ cause: err
29
+ })));
30
+ const events = [];
31
+ for (const issueEvent of issueEvents) {
32
+ if (issueEvent.action === "created") {
33
+ events.push(new _Events.TaskCreated({
34
+ issue: issueEvent.issue
35
+ }));
36
+ yield* _effect.Ref.update(knownStatesRef, _effect.HashMap.set(issueEvent.issue.id, issueEvent.issue.state));
37
+ } else {
38
+ const previousState = _effect.HashMap.get(knownStates, issueEvent.issue.id);
39
+ const stateChanged = _effect.Option.isNone(previousState) || previousState.value !== issueEvent.issue.state;
40
+ if (stateChanged) {
41
+ events.push(new _Events.TaskUpdated({
42
+ issue: issueEvent.issue,
43
+ previousState: _effect.Option.getOrElse(previousState, () => "Unknown")
44
+ }));
45
+ }
46
+ yield* _effect.Ref.update(knownStatesRef, _effect.HashMap.set(issueEvent.issue.id, issueEvent.issue.state));
47
+ }
48
+ }
49
+ return events;
50
+ });
51
+ const emptyBatch = [];
52
+ const safePollCycle = pollCycle.pipe(_effect.Effect.tapError(err => _effect.Effect.logError(`TaskEventSource poll cycle failed: ${err.message}`)), _effect.Effect.orElseSucceed(() => emptyBatch));
53
+ const eventStream = _effect.Stream.repeatEffectWithSchedule(safePollCycle, _effect.Schedule.spaced(interval)).pipe(_effect.Stream.flatMap(batch => _effect.Stream.fromIterable(batch)));
54
+ return TaskEventSource.of({
55
+ stream: eventStream
56
+ });
57
+ }));
58
+ //# sourceMappingURL=TaskEventSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskEventSource.js","names":["_effect","require","_Events","_CredentialSchemas","_TaskTracker","TaskEventSourceError","Data","TaggedError","exports","TaskEventSource","Context","Tag","TaskEventSourceLive","Layer","effect","Effect","gen","config","AppRuntimeConfig","tracker","TaskTracker","interval","Duration","seconds","pollIntervalSeconds","lastPollRef","Ref","make","DateTime","unsafeNow","knownStatesRef","HashMap","empty","pollCycle","lastPoll","get","since","formatIso","knownStates","set","issueEvents","getRecentEvents","pipe","mapError","err","message","String","cause","events","issueEvent","action","push","TaskCreated","issue","update","id","state","previousState","stateChanged","Option","isNone","value","TaskUpdated","getOrElse","emptyBatch","safePollCycle","tapError","logError","orElseSucceed","eventStream","Stream","repeatEffectWithSchedule","Schedule","spaced","flatMap","batch","fromIterable","of","stream"],"sources":["../../../src/services/TaskEventSource.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.GitHubIssueTrackerLive = void 0;
7
+ var _effect = require("effect");
8
+ var _Events = require("../../Events.js");
9
+ var _TrackerSchemas = require("../../schemas/TrackerSchemas.js");
10
+ var _AppRuntimeConfig = require("../AppRuntimeConfig.js");
11
+ var _OctokitClient = require("../OctokitClient.js");
12
+ var _TaskTracker = require("./TaskTracker.js");
13
+ /**
14
+ * GitHub Issues implementation of TaskTracker
15
+ * @since 1.0.0
16
+ */
17
+
18
+ const extractRepoFullName = repositoryUrl => {
19
+ const parts = repositoryUrl.split("/repos/");
20
+ return parts[1] ?? repositoryUrl;
21
+ };
22
+ const parseIssueId = issueId => {
23
+ const slashIdx = issueId.indexOf("/");
24
+ const hashIdx = issueId.indexOf("#");
25
+ const owner = issueId.substring(0, slashIdx);
26
+ const repo = issueId.substring(slashIdx + 1, hashIdx);
27
+ const issueNumber = issueId.substring(hashIdx + 1);
28
+ return {
29
+ owner,
30
+ repo,
31
+ issueNumber
32
+ };
33
+ };
34
+ const GitHubIssueTrackerLive = exports.GitHubIssueTrackerLive = /*#__PURE__*/_effect.Layer.effect(_TaskTracker.TaskTracker, /*#__PURE__*/_effect.Effect.gen(function* () {
35
+ const octokit = yield* _OctokitClient.OctokitClient;
36
+ const config = yield* _AppRuntimeConfig.AppRuntimeConfig;
37
+ const interval = _effect.Duration.seconds(config.pollIntervalSeconds);
38
+ const fetchRecentEvents = since => _effect.Effect.gen(function* () {
39
+ const issues = yield* octokit.listUserIssues({
40
+ state: "all",
41
+ sort: "updated",
42
+ since
43
+ }).pipe(_effect.Effect.mapError(err => new _TaskTracker.TaskTrackerError({
44
+ message: `GitHub API request failed: ${String(err)}`,
45
+ cause: err
46
+ })));
47
+ return _effect.Array.map(issues, issue => {
48
+ const repoFullName = extractRepoFullName(issue.repositoryUrl);
49
+ const trackerIssue = new _TrackerSchemas.TrackerIssue({
50
+ id: `${repoFullName}#${issue.number}`,
51
+ title: issue.title,
52
+ state: issue.state,
53
+ url: issue.htmlUrl,
54
+ createdAt: issue.createdAt,
55
+ updatedAt: issue.updatedAt
56
+ });
57
+ const action = issue.createdAt === issue.updatedAt ? "created" : "updated";
58
+ return new _TrackerSchemas.TrackerIssueEvent({
59
+ action,
60
+ issue: trackerIssue
61
+ });
62
+ });
63
+ });
64
+ const lastPollRef = yield* _effect.Ref.make(_effect.DateTime.unsafeNow());
65
+ const knownStatesRef = yield* _effect.Ref.make(_effect.HashMap.empty());
66
+ const pollCycle = _effect.Effect.gen(function* () {
67
+ const lastPoll = yield* _effect.Ref.get(lastPollRef);
68
+ const since = _effect.DateTime.formatIso(lastPoll);
69
+ const knownStates = yield* _effect.Ref.get(knownStatesRef);
70
+ yield* _effect.Ref.set(lastPollRef, _effect.DateTime.unsafeNow());
71
+ const issueEvents = yield* fetchRecentEvents(since);
72
+ const events = [];
73
+ for (const issueEvent of issueEvents) {
74
+ if (issueEvent.action === "created") {
75
+ events.push(new _Events.TaskCreated({
76
+ issue: issueEvent.issue
77
+ }));
78
+ yield* _effect.Ref.update(knownStatesRef, _effect.HashMap.set(issueEvent.issue.id, issueEvent.issue.state));
79
+ } else {
80
+ const previousState = _effect.HashMap.get(knownStates, issueEvent.issue.id);
81
+ const stateChanged = _effect.Option.isNone(previousState) || previousState.value !== issueEvent.issue.state;
82
+ if (stateChanged) {
83
+ events.push(new _Events.TaskUpdated({
84
+ issue: issueEvent.issue,
85
+ previousState: _effect.Option.getOrElse(previousState, () => "Unknown")
86
+ }));
87
+ }
88
+ yield* _effect.Ref.update(knownStatesRef, _effect.HashMap.set(issueEvent.issue.id, issueEvent.issue.state));
89
+ }
90
+ }
91
+ return events;
92
+ });
93
+ const emptyBatch = [];
94
+ const safePollCycle = pollCycle.pipe(_effect.Effect.tapError(err => _effect.Effect.logError(`GitHubIssueTracker poll cycle failed: ${err.message}`)), _effect.Effect.orElseSucceed(() => emptyBatch));
95
+ const eventStream = _effect.Stream.repeatEffectWithSchedule(safePollCycle, _effect.Schedule.spaced(interval)).pipe(_effect.Stream.flatMap(batch => _effect.Stream.fromIterable(batch)));
96
+ return _TaskTracker.TaskTracker.of({
97
+ eventStream,
98
+ moveToTodo: issueId => _effect.Effect.gen(function* () {
99
+ const {
100
+ issueNumber,
101
+ owner,
102
+ repo
103
+ } = parseIssueId(issueId);
104
+ yield* octokit.addIssueLabels({
105
+ owner,
106
+ repo,
107
+ issueNumber: Number(issueNumber),
108
+ labels: ["todo"]
109
+ }).pipe(_effect.Effect.mapError(err => new _TaskTracker.TaskTrackerError({
110
+ message: `GitHub API request failed: ${String(err)}`,
111
+ cause: err
112
+ })));
113
+ }),
114
+ setPriorityUrgent: issueId => _effect.Effect.gen(function* () {
115
+ const {
116
+ issueNumber,
117
+ owner,
118
+ repo
119
+ } = parseIssueId(issueId);
120
+ yield* octokit.addIssueLabels({
121
+ owner,
122
+ repo,
123
+ issueNumber: Number(issueNumber),
124
+ labels: ["urgent"]
125
+ }).pipe(_effect.Effect.mapError(err => new _TaskTracker.TaskTrackerError({
126
+ message: `GitHub API request failed: ${String(err)}`,
127
+ cause: err
128
+ })));
129
+ }),
130
+ getIssue: issueId => _effect.Effect.gen(function* () {
131
+ const {
132
+ issueNumber,
133
+ owner,
134
+ repo
135
+ } = parseIssueId(issueId);
136
+ const issue = yield* octokit.getIssue({
137
+ owner,
138
+ repo,
139
+ issueNumber: Number(issueNumber)
140
+ }).pipe(_effect.Effect.mapError(err => new _TaskTracker.TaskTrackerError({
141
+ message: `GitHub API request failed: ${String(err)}`,
142
+ cause: err
143
+ })));
144
+ return new _TrackerSchemas.TrackerIssue({
145
+ id: `${owner}/${repo}#${issue.number}`,
146
+ title: issue.title,
147
+ state: issue.state,
148
+ url: issue.htmlUrl,
149
+ createdAt: issue.createdAt,
150
+ updatedAt: issue.updatedAt
151
+ });
152
+ })
153
+ });
154
+ }));
155
+ //# sourceMappingURL=GitHubIssueTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitHubIssueTracker.js","names":["_effect","require","_Events","_TrackerSchemas","_AppRuntimeConfig","_OctokitClient","_TaskTracker","extractRepoFullName","repositoryUrl","parts","split","parseIssueId","issueId","slashIdx","indexOf","hashIdx","owner","substring","repo","issueNumber","GitHubIssueTrackerLive","exports","Layer","effect","TaskTracker","Effect","gen","octokit","OctokitClient","config","AppRuntimeConfig","interval","Duration","seconds","pollIntervalSeconds","fetchRecentEvents","since","issues","listUserIssues","state","sort","pipe","mapError","err","TaskTrackerError","message","String","cause","Array","map","issue","repoFullName","trackerIssue","TrackerIssue","id","number","title","url","htmlUrl","createdAt","updatedAt","action","TrackerIssueEvent","lastPollRef","Ref","make","DateTime","unsafeNow","knownStatesRef","HashMap","empty","pollCycle","lastPoll","get","formatIso","knownStates","set","issueEvents","events","issueEvent","push","TaskCreated","update","previousState","stateChanged","Option","isNone","value","TaskUpdated","getOrElse","emptyBatch","safePollCycle","tapError","logError","orElseSucceed","eventStream","Stream","repeatEffectWithSchedule","Schedule","spaced","flatMap","batch","fromIterable","of","moveToTodo","addIssueLabels","Number","labels","setPriorityUrgent","getIssue"],"sources":["../../../../src/services/TaskTracker/GitHubIssueTracker.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}