@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,628 @@
1
+ /**
2
+ * Octokit SDK client service
3
+ * @since 1.0.0
4
+ */
5
+ import { Context, Data, Effect, Layer } from "effect"
6
+ import { Octokit } from "octokit"
7
+ import { LalphConfig } from "./LalphConfig.js"
8
+
9
+ /**
10
+ * @since 1.0.0
11
+ * @category errors
12
+ */
13
+ export class OctokitClientError extends Data.TaggedError("OctokitClientError")<{
14
+ message: string
15
+ cause: unknown
16
+ }> {}
17
+
18
+ /**
19
+ * @since 1.0.0
20
+ * @category models
21
+ */
22
+ export interface OctokitUser {
23
+ readonly login: string
24
+ }
25
+
26
+ /**
27
+ * @since 1.0.0
28
+ * @category models
29
+ */
30
+ export interface OctokitRepo {
31
+ readonly id: number
32
+ readonly name: string
33
+ readonly fullName: string
34
+ readonly owner: { readonly login: string }
35
+ readonly htmlUrl: string
36
+ }
37
+
38
+ /**
39
+ * @since 1.0.0
40
+ * @category models
41
+ */
42
+ export interface OctokitPullRequest {
43
+ readonly id: number
44
+ readonly number: number
45
+ readonly title: string
46
+ readonly state: string
47
+ readonly htmlUrl: string
48
+ readonly head: { readonly ref: string; readonly sha: string }
49
+ }
50
+
51
+ /**
52
+ * @since 1.0.0
53
+ * @category models
54
+ */
55
+ export interface OctokitPullRequestDetail extends OctokitPullRequest {
56
+ readonly mergeable: boolean | null
57
+ }
58
+
59
+ /**
60
+ * @since 1.0.0
61
+ * @category models
62
+ */
63
+ export interface OctokitComment {
64
+ readonly id: number
65
+ readonly body?: string | null
66
+ readonly user: { readonly login: string } | null
67
+ readonly createdAt: string
68
+ readonly htmlUrl: string
69
+ }
70
+
71
+ /**
72
+ * @since 1.0.0
73
+ * @category models
74
+ */
75
+ export interface OctokitIssue {
76
+ readonly number: number
77
+ readonly title: string
78
+ readonly state: string
79
+ readonly htmlUrl: string
80
+ readonly createdAt: string
81
+ readonly updatedAt: string
82
+ readonly repositoryUrl: string
83
+ }
84
+
85
+ /**
86
+ * @since 1.0.0
87
+ * @category models
88
+ */
89
+ export interface OctokitIssueDetail {
90
+ readonly number: number
91
+ readonly title: string
92
+ readonly state: string
93
+ readonly htmlUrl: string
94
+ readonly createdAt: string
95
+ readonly updatedAt: string
96
+ }
97
+
98
+ /**
99
+ * @since 1.0.0
100
+ * @category models
101
+ */
102
+ export interface OctokitCheckRun {
103
+ readonly id: number
104
+ readonly name: string
105
+ readonly status: string
106
+ readonly conclusion: string | null
107
+ readonly htmlUrl: string
108
+ }
109
+
110
+ /**
111
+ * @since 1.0.0
112
+ * @category models
113
+ */
114
+ export interface OctokitCombinedStatus {
115
+ readonly state: string
116
+ readonly statuses: ReadonlyArray<{
117
+ readonly state: string
118
+ readonly context: string
119
+ }>
120
+ }
121
+
122
+ /**
123
+ * @since 1.0.0
124
+ * @category models
125
+ */
126
+ export interface OctokitMergeResult {
127
+ readonly sha: string
128
+ readonly merged: boolean
129
+ readonly message: string
130
+ }
131
+
132
+ /**
133
+ * @since 1.0.0
134
+ * @category models
135
+ */
136
+ export interface OctokitGist {
137
+ readonly id: string
138
+ readonly htmlUrl: string
139
+ readonly files: Record<string, { readonly rawUrl: string }>
140
+ }
141
+
142
+ /**
143
+ * @since 1.0.0
144
+ * @category services
145
+ */
146
+ export interface OctokitClientService {
147
+ readonly getAuthenticatedUser: () => Effect.Effect<OctokitUser, OctokitClientError>
148
+ readonly listUserRepos: (params: {
149
+ readonly perPage: number
150
+ readonly type: "all" | "owner" | "public" | "private" | "member"
151
+ }) => Effect.Effect<ReadonlyArray<OctokitRepo>, OctokitClientError>
152
+ readonly listPulls: (params: {
153
+ readonly owner: string
154
+ readonly repo: string
155
+ readonly state: "open" | "closed" | "all"
156
+ readonly perPage: number
157
+ }) => Effect.Effect<ReadonlyArray<OctokitPullRequest>, OctokitClientError>
158
+ readonly getPull: (params: {
159
+ readonly owner: string
160
+ readonly repo: string
161
+ readonly pullNumber: number
162
+ }) => Effect.Effect<OctokitPullRequestDetail, OctokitClientError>
163
+ readonly createIssueComment: (params: {
164
+ readonly owner: string
165
+ readonly repo: string
166
+ readonly issueNumber: number
167
+ readonly body: string
168
+ }) => Effect.Effect<void, OctokitClientError>
169
+ readonly listIssueComments: (params: {
170
+ readonly owner: string
171
+ readonly repo: string
172
+ readonly issueNumber: number
173
+ readonly perPage: number
174
+ }) => Effect.Effect<ReadonlyArray<OctokitComment>, OctokitClientError>
175
+ readonly listUserIssues: (params: {
176
+ readonly state: "open" | "closed" | "all"
177
+ readonly sort: "created" | "updated" | "comments"
178
+ readonly since?: string
179
+ }) => Effect.Effect<ReadonlyArray<OctokitIssue>, OctokitClientError>
180
+ readonly getIssue: (params: {
181
+ readonly owner: string
182
+ readonly repo: string
183
+ readonly issueNumber: number
184
+ }) => Effect.Effect<OctokitIssueDetail, OctokitClientError>
185
+ readonly addIssueLabels: (params: {
186
+ readonly owner: string
187
+ readonly repo: string
188
+ readonly issueNumber: number
189
+ readonly labels: ReadonlyArray<string>
190
+ }) => Effect.Effect<void, OctokitClientError>
191
+ readonly listPullReviewComments: (params: {
192
+ readonly owner: string
193
+ readonly repo: string
194
+ readonly pullNumber: number
195
+ readonly perPage: number
196
+ }) => Effect.Effect<ReadonlyArray<OctokitComment>, OctokitClientError>
197
+ readonly getCombinedStatusForRef: (params: {
198
+ readonly owner: string
199
+ readonly repo: string
200
+ readonly ref: string
201
+ }) => Effect.Effect<OctokitCombinedStatus, OctokitClientError>
202
+ readonly listCheckRunsForRef: (params: {
203
+ readonly owner: string
204
+ readonly repo: string
205
+ readonly ref: string
206
+ }) => Effect.Effect<ReadonlyArray<OctokitCheckRun>, OctokitClientError>
207
+ readonly mergePull: (params: {
208
+ readonly owner: string
209
+ readonly repo: string
210
+ readonly pullNumber: number
211
+ }) => Effect.Effect<OctokitMergeResult, OctokitClientError>
212
+ readonly createGist: (params: {
213
+ readonly description: string
214
+ readonly files: Record<string, { readonly content: string }>
215
+ readonly isPublic: boolean
216
+ }) => Effect.Effect<OctokitGist, OctokitClientError>
217
+ }
218
+
219
+ /**
220
+ * @since 1.0.0
221
+ * @category context
222
+ */
223
+ export class OctokitClient extends Context.Tag("OctokitClient")<OctokitClient, OctokitClientService>() {}
224
+
225
+ /**
226
+ * @since 1.0.0
227
+ * @category layers
228
+ */
229
+ export const OctokitClientLive = Layer.effect(
230
+ OctokitClient,
231
+ Effect.gen(function*() {
232
+ const watcher = yield* LalphConfig
233
+ const initialToken = yield* watcher.githubToken.pipe(
234
+ Effect.mapError((err) => new OctokitClientError({ message: err.message, cause: err }))
235
+ )
236
+
237
+ let currentToken = initialToken
238
+ let octokit = new Octokit({ auth: currentToken })
239
+
240
+ const getClient = Effect.gen(function*() {
241
+ const latestToken = yield* watcher.githubToken.pipe(
242
+ Effect.mapError((err) => new OctokitClientError({ message: err.message, cause: err }))
243
+ )
244
+ if (latestToken !== currentToken) {
245
+ currentToken = latestToken
246
+ octokit = new Octokit({ auth: latestToken })
247
+ }
248
+ return octokit
249
+ })
250
+
251
+ const getAuthenticatedUser = () =>
252
+ Effect.gen(function*() {
253
+ const client = yield* getClient
254
+ return yield* Effect.tryPromise({
255
+ try: () => client.rest.users.getAuthenticated(),
256
+ catch: (err) =>
257
+ new OctokitClientError({ message: `Failed to get authenticated user: ${String(err)}`, cause: err })
258
+ }).pipe(Effect.map((response) => response.data))
259
+ })
260
+
261
+ const listUserRepos = (params: {
262
+ readonly perPage: number
263
+ readonly type: "all" | "owner" | "public" | "private" | "member"
264
+ }) =>
265
+ Effect.gen(function*() {
266
+ const client = yield* getClient
267
+ return yield* Effect.tryPromise({
268
+ try: () => client.rest.repos.listForAuthenticatedUser({ per_page: params.perPage, type: params.type }),
269
+ catch: (err) => new OctokitClientError({ message: `Failed to list user repos: ${String(err)}`, cause: err })
270
+ }).pipe(
271
+ Effect.map((response) =>
272
+ response.data.map((r) => ({
273
+ id: r.id,
274
+ name: r.name,
275
+ fullName: r.full_name,
276
+ owner: { login: r.owner.login },
277
+ htmlUrl: r.html_url
278
+ }))
279
+ )
280
+ )
281
+ })
282
+
283
+ const listPulls = (params: {
284
+ readonly owner: string
285
+ readonly repo: string
286
+ readonly state: "open" | "closed" | "all"
287
+ readonly perPage: number
288
+ }) =>
289
+ Effect.gen(function*() {
290
+ const client = yield* getClient
291
+ return yield* Effect.tryPromise({
292
+ try: () =>
293
+ client.rest.pulls.list({
294
+ owner: params.owner,
295
+ repo: params.repo,
296
+ state: params.state,
297
+ per_page: params.perPage
298
+ }),
299
+ catch: (err) => new OctokitClientError({ message: `Failed to list pulls: ${String(err)}`, cause: err })
300
+ }).pipe(
301
+ Effect.map((response) =>
302
+ response.data.map((p) => ({
303
+ id: p.id,
304
+ number: p.number,
305
+ title: p.title,
306
+ state: p.state,
307
+ htmlUrl: p.html_url,
308
+ head: { ref: p.head.ref, sha: p.head.sha }
309
+ }))
310
+ )
311
+ )
312
+ })
313
+
314
+ const getPull = (params: {
315
+ readonly owner: string
316
+ readonly repo: string
317
+ readonly pullNumber: number
318
+ }) =>
319
+ Effect.gen(function*() {
320
+ const client = yield* getClient
321
+ return yield* Effect.tryPromise({
322
+ try: () =>
323
+ client.rest.pulls.get({
324
+ owner: params.owner,
325
+ repo: params.repo,
326
+ pull_number: params.pullNumber
327
+ }),
328
+ catch: (err) => new OctokitClientError({ message: `Failed to get pull: ${String(err)}`, cause: err })
329
+ }).pipe(
330
+ Effect.map((response) => ({
331
+ id: response.data.id,
332
+ number: response.data.number,
333
+ title: response.data.title,
334
+ state: response.data.state,
335
+ htmlUrl: response.data.html_url,
336
+ head: { ref: response.data.head.ref, sha: response.data.head.sha },
337
+ mergeable: response.data.mergeable
338
+ }))
339
+ )
340
+ })
341
+
342
+ const createIssueComment = (params: {
343
+ readonly owner: string
344
+ readonly repo: string
345
+ readonly issueNumber: number
346
+ readonly body: string
347
+ }) =>
348
+ Effect.gen(function*() {
349
+ const client = yield* getClient
350
+ return yield* Effect.tryPromise({
351
+ try: () =>
352
+ client.rest.issues.createComment({
353
+ owner: params.owner,
354
+ repo: params.repo,
355
+ issue_number: params.issueNumber,
356
+ body: params.body
357
+ }),
358
+ catch: (err) => new OctokitClientError({ message: `Failed to create comment: ${String(err)}`, cause: err })
359
+ }).pipe(Effect.asVoid)
360
+ })
361
+
362
+ const listIssueComments = (params: {
363
+ readonly owner: string
364
+ readonly repo: string
365
+ readonly issueNumber: number
366
+ readonly perPage: number
367
+ }) =>
368
+ Effect.gen(function*() {
369
+ const client = yield* getClient
370
+ return yield* Effect.tryPromise({
371
+ try: () =>
372
+ client.rest.issues.listComments({
373
+ owner: params.owner,
374
+ repo: params.repo,
375
+ issue_number: params.issueNumber,
376
+ per_page: params.perPage
377
+ }),
378
+ catch: (err) => new OctokitClientError({ message: `Failed to list comments: ${String(err)}`, cause: err })
379
+ }).pipe(
380
+ Effect.map((response) =>
381
+ response.data.map((c): OctokitComment => ({
382
+ id: c.id,
383
+ body: c.body ?? null,
384
+ user: c.user ? { login: c.user.login } : null,
385
+ createdAt: c.created_at,
386
+ htmlUrl: c.html_url
387
+ }))
388
+ )
389
+ )
390
+ })
391
+
392
+ const listUserIssues = (params: {
393
+ readonly state: "open" | "closed" | "all"
394
+ readonly sort: "created" | "updated" | "comments"
395
+ readonly since?: string
396
+ }) =>
397
+ Effect.gen(function*() {
398
+ const client = yield* getClient
399
+ return yield* Effect.tryPromise({
400
+ try: () =>
401
+ client.rest.issues.listForAuthenticatedUser({
402
+ filter: "all",
403
+ state: params.state,
404
+ sort: params.sort,
405
+ since: params.since
406
+ }),
407
+ catch: (err) => new OctokitClientError({ message: `Failed to list user issues: ${String(err)}`, cause: err })
408
+ }).pipe(
409
+ Effect.map((response) =>
410
+ response.data.filter((i) => !i.pull_request).map((i): OctokitIssue => ({
411
+ number: i.number,
412
+ title: i.title,
413
+ state: i.state,
414
+ htmlUrl: i.html_url,
415
+ createdAt: i.created_at,
416
+ updatedAt: i.updated_at,
417
+ repositoryUrl: i.repository_url
418
+ }))
419
+ )
420
+ )
421
+ })
422
+
423
+ const getIssue = (params: {
424
+ readonly owner: string
425
+ readonly repo: string
426
+ readonly issueNumber: number
427
+ }) =>
428
+ Effect.gen(function*() {
429
+ const client = yield* getClient
430
+ return yield* Effect.tryPromise({
431
+ try: () =>
432
+ client.rest.issues.get({
433
+ owner: params.owner,
434
+ repo: params.repo,
435
+ issue_number: params.issueNumber
436
+ }),
437
+ catch: (err) => new OctokitClientError({ message: `Failed to get issue: ${String(err)}`, cause: err })
438
+ }).pipe(
439
+ Effect.map((response): OctokitIssueDetail => ({
440
+ number: response.data.number,
441
+ title: response.data.title,
442
+ state: response.data.state,
443
+ htmlUrl: response.data.html_url,
444
+ createdAt: response.data.created_at,
445
+ updatedAt: response.data.updated_at
446
+ }))
447
+ )
448
+ })
449
+
450
+ const addIssueLabels = (params: {
451
+ readonly owner: string
452
+ readonly repo: string
453
+ readonly issueNumber: number
454
+ readonly labels: ReadonlyArray<string>
455
+ }) =>
456
+ Effect.gen(function*() {
457
+ const client = yield* getClient
458
+ return yield* Effect.tryPromise({
459
+ try: () =>
460
+ client.rest.issues.addLabels({
461
+ owner: params.owner,
462
+ repo: params.repo,
463
+ issue_number: params.issueNumber,
464
+ labels: [...params.labels]
465
+ }),
466
+ catch: (err) => new OctokitClientError({ message: `Failed to add issue labels: ${String(err)}`, cause: err })
467
+ }).pipe(Effect.asVoid)
468
+ })
469
+
470
+ const listPullReviewComments = (params: {
471
+ readonly owner: string
472
+ readonly repo: string
473
+ readonly pullNumber: number
474
+ readonly perPage: number
475
+ }) =>
476
+ Effect.gen(function*() {
477
+ const client = yield* getClient
478
+ return yield* Effect.tryPromise({
479
+ try: () =>
480
+ client.rest.pulls.listReviewComments({
481
+ owner: params.owner,
482
+ repo: params.repo,
483
+ pull_number: params.pullNumber,
484
+ per_page: params.perPage
485
+ }),
486
+ catch: (err) =>
487
+ new OctokitClientError({ message: `Failed to list pull review comments: ${String(err)}`, cause: err })
488
+ }).pipe(
489
+ Effect.map((response) =>
490
+ response.data.map((c): OctokitComment => ({
491
+ id: c.id,
492
+ body: c.body ?? null,
493
+ user: c.user ? { login: c.user.login } : null,
494
+ createdAt: c.created_at,
495
+ htmlUrl: c.html_url
496
+ }))
497
+ )
498
+ )
499
+ })
500
+
501
+ const getCombinedStatusForRef = (params: {
502
+ readonly owner: string
503
+ readonly repo: string
504
+ readonly ref: string
505
+ }) =>
506
+ Effect.gen(function*() {
507
+ const client = yield* getClient
508
+ return yield* Effect.tryPromise({
509
+ try: () =>
510
+ client.rest.repos.getCombinedStatusForRef({
511
+ owner: params.owner,
512
+ repo: params.repo,
513
+ ref: params.ref
514
+ }),
515
+ catch: (err) =>
516
+ new OctokitClientError({ message: `Failed to get combined status for ref: ${String(err)}`, cause: err })
517
+ }).pipe(
518
+ Effect.map((response): OctokitCombinedStatus => ({
519
+ state: response.data.state,
520
+ statuses: response.data.statuses.map((s) => ({
521
+ state: s.state,
522
+ context: s.context
523
+ }))
524
+ }))
525
+ )
526
+ })
527
+
528
+ const listCheckRunsForRef = (params: {
529
+ readonly owner: string
530
+ readonly repo: string
531
+ readonly ref: string
532
+ }) =>
533
+ Effect.gen(function*() {
534
+ const client = yield* getClient
535
+ return yield* Effect.tryPromise({
536
+ try: () =>
537
+ client.rest.checks.listForRef({
538
+ owner: params.owner,
539
+ repo: params.repo,
540
+ ref: params.ref
541
+ }),
542
+ catch: (err) =>
543
+ new OctokitClientError({ message: `Failed to list check runs for ref: ${String(err)}`, cause: err })
544
+ }).pipe(
545
+ Effect.map((response) =>
546
+ response.data.check_runs.map((cr): OctokitCheckRun => ({
547
+ id: cr.id,
548
+ name: cr.name,
549
+ status: cr.status,
550
+ conclusion: cr.conclusion ?? null,
551
+ htmlUrl: cr.html_url ?? ""
552
+ }))
553
+ )
554
+ )
555
+ })
556
+
557
+ const mergePull = (params: {
558
+ readonly owner: string
559
+ readonly repo: string
560
+ readonly pullNumber: number
561
+ }) =>
562
+ Effect.gen(function*() {
563
+ const client = yield* getClient
564
+ return yield* Effect.tryPromise({
565
+ try: () =>
566
+ client.rest.pulls.merge({
567
+ owner: params.owner,
568
+ repo: params.repo,
569
+ pull_number: params.pullNumber
570
+ }),
571
+ catch: (err) =>
572
+ new OctokitClientError({ message: `Failed to merge pull request: ${String(err)}`, cause: err })
573
+ }).pipe(
574
+ Effect.map((response): OctokitMergeResult => ({
575
+ sha: response.data.sha,
576
+ merged: response.data.merged,
577
+ message: response.data.message
578
+ }))
579
+ )
580
+ })
581
+
582
+ const createGist = (params: {
583
+ readonly description: string
584
+ readonly files: Record<string, { readonly content: string }>
585
+ readonly isPublic: boolean
586
+ }) =>
587
+ Effect.gen(function*() {
588
+ const client = yield* getClient
589
+ return yield* Effect.tryPromise({
590
+ try: () =>
591
+ client.rest.gists.create({
592
+ description: params.description,
593
+ public: params.isPublic,
594
+ files: params.files
595
+ }),
596
+ catch: (err) => new OctokitClientError({ message: `Failed to create gist: ${String(err)}`, cause: err })
597
+ }).pipe(
598
+ Effect.map((response): OctokitGist => ({
599
+ id: response.data.id ?? "",
600
+ htmlUrl: response.data.html_url ?? "",
601
+ files: Object.fromEntries(
602
+ Object.entries(response.data.files ?? {}).map(([name, file]) => [
603
+ name,
604
+ { rawUrl: file?.raw_url ?? "" }
605
+ ])
606
+ )
607
+ }))
608
+ )
609
+ })
610
+
611
+ return OctokitClient.of({
612
+ getAuthenticatedUser,
613
+ listUserRepos,
614
+ listPulls,
615
+ getPull,
616
+ createIssueComment,
617
+ listIssueComments,
618
+ listUserIssues,
619
+ getIssue,
620
+ addIssueLabels,
621
+ listPullReviewComments,
622
+ getCombinedStatusForRef,
623
+ listCheckRunsForRef,
624
+ mergePull,
625
+ createGist
626
+ })
627
+ })
628
+ )