@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.
- package/Events/package.json +6 -0
- package/LICENSE +21 -0
- package/Main/package.json +6 -0
- package/README.md +1 -0
- package/dist/cjs/Events.js +55 -0
- package/dist/cjs/Events.js.map +1 -0
- package/dist/cjs/LalphMain.js +59 -0
- package/dist/cjs/LalphMain.js.map +1 -0
- package/dist/cjs/Main.js +115 -0
- package/dist/cjs/Main.js.map +1 -0
- package/dist/cjs/index.js +281 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/AnalysisPrompts.js +61 -0
- package/dist/cjs/lib/AnalysisPrompts.js.map +1 -0
- package/dist/cjs/lib/BranchParser.js +45 -0
- package/dist/cjs/lib/BranchParser.js.map +1 -0
- package/dist/cjs/lib/MermaidToPlantUml.js +96 -0
- package/dist/cjs/lib/MermaidToPlantUml.js.map +1 -0
- package/dist/cjs/lib/SpecHtmlGenerator.js +160 -0
- package/dist/cjs/lib/SpecHtmlGenerator.js.map +1 -0
- package/dist/cjs/lib/StreamJsonParser.js +88 -0
- package/dist/cjs/lib/StreamJsonParser.js.map +1 -0
- package/dist/cjs/lib/TelegramFormatter.js +122 -0
- package/dist/cjs/lib/TelegramFormatter.js.map +1 -0
- package/dist/cjs/lib/TelegraphHtml.js +65 -0
- package/dist/cjs/lib/TelegraphHtml.js.map +1 -0
- package/dist/cjs/lib/TelegraphMarkdown.js +346 -0
- package/dist/cjs/lib/TelegraphMarkdown.js.map +1 -0
- package/dist/cjs/schemas/CredentialSchemas.js +31 -0
- package/dist/cjs/schemas/CredentialSchemas.js.map +1 -0
- package/dist/cjs/schemas/GitHubSchemas.js +60 -0
- package/dist/cjs/schemas/GitHubSchemas.js.map +1 -0
- package/dist/cjs/schemas/LinearSchemas.js +63 -0
- package/dist/cjs/schemas/LinearSchemas.js.map +1 -0
- package/dist/cjs/schemas/ProjectSchemas.js +26 -0
- package/dist/cjs/schemas/ProjectSchemas.js.map +1 -0
- package/dist/cjs/schemas/TrackerSchemas.js +35 -0
- package/dist/cjs/schemas/TrackerSchemas.js.map +1 -0
- package/dist/cjs/services/AppContext.js +57 -0
- package/dist/cjs/services/AppContext.js.map +1 -0
- package/dist/cjs/services/AppRuntimeConfig.js +35 -0
- package/dist/cjs/services/AppRuntimeConfig.js.map +1 -0
- package/dist/cjs/services/AutoMerge.js +140 -0
- package/dist/cjs/services/AutoMerge.js.map +1 -0
- package/dist/cjs/services/ChatMachine.js +873 -0
- package/dist/cjs/services/ChatMachine.js.map +1 -0
- package/dist/cjs/services/CommentTimer.js +81 -0
- package/dist/cjs/services/CommentTimer.js.map +1 -0
- package/dist/cjs/services/CredentialStore.js +68 -0
- package/dist/cjs/services/CredentialStore.js.map +1 -0
- package/dist/cjs/services/CredentialWatcher.js +76 -0
- package/dist/cjs/services/CredentialWatcher.js.map +1 -0
- package/dist/cjs/services/Credentials.js +130 -0
- package/dist/cjs/services/Credentials.js.map +1 -0
- package/dist/cjs/services/EventLoop.js +203 -0
- package/dist/cjs/services/EventLoop.js.map +1 -0
- package/dist/cjs/services/GitHubClient/GitHubClient.js +236 -0
- package/dist/cjs/services/GitHubClient/GitHubClient.js.map +1 -0
- package/dist/cjs/services/GitHubClient/OctokitClient.js +329 -0
- package/dist/cjs/services/GitHubClient/OctokitClient.js.map +1 -0
- package/dist/cjs/services/GitHubClient.js +236 -0
- package/dist/cjs/services/GitHubClient.js.map +1 -0
- package/dist/cjs/services/GitHubEventSource.js +145 -0
- package/dist/cjs/services/GitHubEventSource.js.map +1 -0
- package/dist/cjs/services/GitHubIssueTracker.js +118 -0
- package/dist/cjs/services/GitHubIssueTracker.js.map +1 -0
- package/dist/cjs/services/LalphConfig.js +139 -0
- package/dist/cjs/services/LalphConfig.js.map +1 -0
- package/dist/cjs/services/LalphConfigReader.js +82 -0
- package/dist/cjs/services/LalphConfigReader.js.map +1 -0
- package/dist/cjs/services/LalphDirectory.js +45 -0
- package/dist/cjs/services/LalphDirectory.js.map +1 -0
- package/dist/cjs/services/LinearSdkClient.js +149 -0
- package/dist/cjs/services/LinearSdkClient.js.map +1 -0
- package/dist/cjs/services/LinearTracker.js +89 -0
- package/dist/cjs/services/LinearTracker.js.map +1 -0
- package/dist/cjs/services/MessengerAdapter/MessengerAdapter.js +30 -0
- package/dist/cjs/services/MessengerAdapter/MessengerAdapter.js.map +1 -0
- package/dist/cjs/services/MessengerAdapter/TelegramAdapter.js +131 -0
- package/dist/cjs/services/MessengerAdapter/TelegramAdapter.js.map +1 -0
- package/dist/cjs/services/MessengerAdapter/TelegramConfig.js +81 -0
- package/dist/cjs/services/MessengerAdapter/TelegramConfig.js.map +1 -0
- package/dist/cjs/services/MessengerAdapter.js +30 -0
- package/dist/cjs/services/MessengerAdapter.js.map +1 -0
- package/dist/cjs/services/OctokitClient.js +350 -0
- package/dist/cjs/services/OctokitClient.js.map +1 -0
- package/dist/cjs/services/PlanOverviewUploader.js +119 -0
- package/dist/cjs/services/PlanOverviewUploader.js.map +1 -0
- package/dist/cjs/services/PlanOverviewUploaderMap.js +25 -0
- package/dist/cjs/services/PlanOverviewUploaderMap.js.map +1 -0
- package/dist/cjs/services/PlanSession.js +489 -0
- package/dist/cjs/services/PlanSession.js.map +1 -0
- package/dist/cjs/services/ProjectStore.js +107 -0
- package/dist/cjs/services/ProjectStore.js.map +1 -0
- package/dist/cjs/services/PullRequestTracker.js +186 -0
- package/dist/cjs/services/PullRequestTracker.js.map +1 -0
- package/dist/cjs/services/SpecUploader.js +111 -0
- package/dist/cjs/services/SpecUploader.js.map +1 -0
- package/dist/cjs/services/SpecUploaderMap.js +25 -0
- package/dist/cjs/services/SpecUploaderMap.js.map +1 -0
- package/dist/cjs/services/TaskEventSource.js +58 -0
- package/dist/cjs/services/TaskEventSource.js.map +1 -0
- package/dist/cjs/services/TaskTracker/GitHubIssueTracker.js +155 -0
- package/dist/cjs/services/TaskTracker/GitHubIssueTracker.js.map +1 -0
- package/dist/cjs/services/TaskTracker/LinearSdkClient.js +149 -0
- package/dist/cjs/services/TaskTracker/LinearSdkClient.js.map +1 -0
- package/dist/cjs/services/TaskTracker/LinearTracker.js +126 -0
- package/dist/cjs/services/TaskTracker/LinearTracker.js.map +1 -0
- package/dist/cjs/services/TaskTracker/TaskTracker.js +20 -0
- package/dist/cjs/services/TaskTracker/TaskTracker.js.map +1 -0
- package/dist/cjs/services/TaskTracker/TrackerLayerMap.js +27 -0
- package/dist/cjs/services/TaskTracker/TrackerLayerMap.js.map +1 -0
- package/dist/cjs/services/TaskTracker/buildEventStream.js +55 -0
- package/dist/cjs/services/TaskTracker/buildEventStream.js.map +1 -0
- package/dist/cjs/services/TaskTracker.js +20 -0
- package/dist/cjs/services/TaskTracker.js.map +1 -0
- package/dist/cjs/services/TelegramAdapter.js +125 -0
- package/dist/cjs/services/TelegramAdapter.js.map +1 -0
- package/dist/cjs/services/TelegramConfig.js +81 -0
- package/dist/cjs/services/TelegramConfig.js.map +1 -0
- package/dist/cjs/services/TelegramConfigStore.js +81 -0
- package/dist/cjs/services/TelegramConfigStore.js.map +1 -0
- package/dist/cjs/services/TelegramNotifier.js +50 -0
- package/dist/cjs/services/TelegramNotifier.js.map +1 -0
- package/dist/cjs/services/TrackerLayerMap.js +27 -0
- package/dist/cjs/services/TrackerLayerMap.js.map +1 -0
- package/dist/cjs/services/TrackerResolver.js +45 -0
- package/dist/cjs/services/TrackerResolver.js.map +1 -0
- package/dist/cjs/services/messenger/MessengerAdapter.js +30 -0
- package/dist/cjs/services/messenger/MessengerAdapter.js.map +1 -0
- package/dist/cjs/services/messenger/TelegramAdapter.js +125 -0
- package/dist/cjs/services/messenger/TelegramAdapter.js.map +1 -0
- package/dist/cjs/services/task-tracker/GitHubIssueTracker.js +157 -0
- package/dist/cjs/services/task-tracker/GitHubIssueTracker.js.map +1 -0
- package/dist/cjs/services/task-tracker/LinearTracker.js +127 -0
- package/dist/cjs/services/task-tracker/LinearTracker.js.map +1 -0
- package/dist/cjs/services/task-tracker/TaskTracker.js +20 -0
- package/dist/cjs/services/task-tracker/TaskTracker.js.map +1 -0
- package/dist/cjs/services/task-tracker/TrackerLayerMap.js +27 -0
- package/dist/cjs/services/task-tracker/TrackerLayerMap.js.map +1 -0
- package/dist/cjs/shim/bin.js +31 -0
- package/dist/cjs/shim/bin.js.map +1 -0
- package/dist/cjs/shim/main.js +217 -0
- package/dist/cjs/shim/main.js.map +1 -0
- package/dist/cjs/shim/parseArgs.js +45 -0
- package/dist/cjs/shim/parseArgs.js.map +1 -0
- package/dist/cjs/shim/schemas.js +35 -0
- package/dist/cjs/shim/schemas.js.map +1 -0
- package/dist/dts/Events.d.ts +108 -0
- package/dist/dts/Events.d.ts.map +1 -0
- package/dist/dts/LalphMain.d.ts +2 -0
- package/dist/dts/LalphMain.d.ts.map +1 -0
- package/dist/dts/Main.d.ts +2 -0
- package/dist/dts/Main.d.ts.map +1 -0
- package/dist/dts/index.d.ts +101 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/dts/lib/AnalysisPrompts.d.ts +12 -0
- package/dist/dts/lib/AnalysisPrompts.d.ts.map +1 -0
- package/dist/dts/lib/BranchParser.d.ts +40 -0
- package/dist/dts/lib/BranchParser.d.ts.map +1 -0
- package/dist/dts/lib/MermaidToPlantUml.d.ts +19 -0
- package/dist/dts/lib/MermaidToPlantUml.d.ts.map +1 -0
- package/dist/dts/lib/SpecHtmlGenerator.d.ts +18 -0
- package/dist/dts/lib/SpecHtmlGenerator.d.ts.map +1 -0
- package/dist/dts/lib/StreamJsonParser.d.ts +147 -0
- package/dist/dts/lib/StreamJsonParser.d.ts.map +1 -0
- package/dist/dts/lib/TelegramFormatter.d.ts +35 -0
- package/dist/dts/lib/TelegramFormatter.d.ts.map +1 -0
- package/dist/dts/lib/TelegraphHtml.d.ts +11 -0
- package/dist/dts/lib/TelegraphHtml.d.ts.map +1 -0
- package/dist/dts/lib/TelegraphMarkdown.d.ts +21 -0
- package/dist/dts/lib/TelegraphMarkdown.d.ts.map +1 -0
- package/dist/dts/schemas/CredentialSchemas.d.ts +41 -0
- package/dist/dts/schemas/CredentialSchemas.d.ts.map +1 -0
- package/dist/dts/schemas/GitHubSchemas.d.ts +130 -0
- package/dist/dts/schemas/GitHubSchemas.d.ts.map +1 -0
- package/dist/dts/schemas/LinearSchemas.d.ts +121 -0
- package/dist/dts/schemas/LinearSchemas.d.ts.map +1 -0
- package/dist/dts/schemas/ProjectSchemas.d.ts +40 -0
- package/dist/dts/schemas/ProjectSchemas.d.ts.map +1 -0
- package/dist/dts/schemas/TrackerSchemas.d.ts +57 -0
- package/dist/dts/schemas/TrackerSchemas.d.ts.map +1 -0
- package/dist/dts/services/AppContext.d.ts +40 -0
- package/dist/dts/services/AppContext.d.ts.map +1 -0
- package/dist/dts/services/AppRuntimeConfig.d.ts +51 -0
- package/dist/dts/services/AppRuntimeConfig.d.ts.map +1 -0
- package/dist/dts/services/AutoMerge.d.ts +42 -0
- package/dist/dts/services/AutoMerge.d.ts.map +1 -0
- package/dist/dts/services/ChatMachine.d.ts +478 -0
- package/dist/dts/services/ChatMachine.d.ts.map +1 -0
- package/dist/dts/services/CommentTimer.d.ts +44 -0
- package/dist/dts/services/CommentTimer.d.ts.map +1 -0
- package/dist/dts/services/CredentialStore.d.ts +43 -0
- package/dist/dts/services/CredentialStore.d.ts.map +1 -0
- package/dist/dts/services/CredentialWatcher.d.ts +41 -0
- package/dist/dts/services/CredentialWatcher.d.ts.map +1 -0
- package/dist/dts/services/Credentials.d.ts +44 -0
- package/dist/dts/services/Credentials.d.ts.map +1 -0
- package/dist/dts/services/EventLoop.d.ts +26 -0
- package/dist/dts/services/EventLoop.d.ts.map +1 -0
- package/dist/dts/services/GitHubClient/GitHubClient.d.ts +69 -0
- package/dist/dts/services/GitHubClient/GitHubClient.d.ts.map +1 -0
- package/dist/dts/services/GitHubClient/OctokitClient.d.ts +214 -0
- package/dist/dts/services/GitHubClient/OctokitClient.d.ts.map +1 -0
- package/dist/dts/services/GitHubClient.d.ts +69 -0
- package/dist/dts/services/GitHubClient.d.ts.map +1 -0
- package/dist/dts/services/GitHubEventSource.d.ts +43 -0
- package/dist/dts/services/GitHubEventSource.d.ts.map +1 -0
- package/dist/dts/services/GitHubIssueTracker.d.ts +9 -0
- package/dist/dts/services/GitHubIssueTracker.d.ts.map +1 -0
- package/dist/dts/services/LalphConfig.d.ts +44 -0
- package/dist/dts/services/LalphConfig.d.ts.map +1 -0
- package/dist/dts/services/LalphConfigReader.d.ts +66 -0
- package/dist/dts/services/LalphConfigReader.d.ts.map +1 -0
- package/dist/dts/services/LalphDirectory.d.ts +39 -0
- package/dist/dts/services/LalphDirectory.d.ts.map +1 -0
- package/dist/dts/services/LinearSdkClient.d.ts +71 -0
- package/dist/dts/services/LinearSdkClient.d.ts.map +1 -0
- package/dist/dts/services/LinearTracker.d.ts +9 -0
- package/dist/dts/services/LinearTracker.d.ts.map +1 -0
- package/dist/dts/services/MessengerAdapter/MessengerAdapter.d.ts +69 -0
- package/dist/dts/services/MessengerAdapter/MessengerAdapter.d.ts.map +1 -0
- package/dist/dts/services/MessengerAdapter/TelegramAdapter.d.ts +13 -0
- package/dist/dts/services/MessengerAdapter/TelegramAdapter.d.ts.map +1 -0
- package/dist/dts/services/MessengerAdapter/TelegramConfig.d.ts +58 -0
- package/dist/dts/services/MessengerAdapter/TelegramConfig.d.ts.map +1 -0
- package/dist/dts/services/MessengerAdapter.d.ts +69 -0
- package/dist/dts/services/MessengerAdapter.d.ts.map +1 -0
- package/dist/dts/services/OctokitClient.d.ts +232 -0
- package/dist/dts/services/OctokitClient.d.ts.map +1 -0
- package/dist/dts/services/PlanOverviewUploader.d.ts +55 -0
- package/dist/dts/services/PlanOverviewUploader.d.ts.map +1 -0
- package/dist/dts/services/PlanOverviewUploaderMap.d.ts +14 -0
- package/dist/dts/services/PlanOverviewUploaderMap.d.ts.map +1 -0
- package/dist/dts/services/PlanSession.d.ts +169 -0
- package/dist/dts/services/PlanSession.d.ts.map +1 -0
- package/dist/dts/services/ProjectStore.d.ts +50 -0
- package/dist/dts/services/ProjectStore.d.ts.map +1 -0
- package/dist/dts/services/PullRequestTracker.d.ts +42 -0
- package/dist/dts/services/PullRequestTracker.d.ts.map +1 -0
- package/dist/dts/services/SpecUploader.d.ts +51 -0
- package/dist/dts/services/SpecUploader.d.ts.map +1 -0
- package/dist/dts/services/SpecUploaderMap.d.ts +14 -0
- package/dist/dts/services/SpecUploaderMap.d.ts.map +1 -0
- package/dist/dts/services/TaskEventSource.d.ts +21 -0
- package/dist/dts/services/TaskEventSource.d.ts.map +1 -0
- package/dist/dts/services/TaskTracker/GitHubIssueTracker.d.ts +10 -0
- package/dist/dts/services/TaskTracker/GitHubIssueTracker.d.ts.map +1 -0
- package/dist/dts/services/TaskTracker/LinearSdkClient.d.ts +71 -0
- package/dist/dts/services/TaskTracker/LinearSdkClient.d.ts.map +1 -0
- package/dist/dts/services/TaskTracker/LinearTracker.d.ts +10 -0
- package/dist/dts/services/TaskTracker/LinearTracker.d.ts.map +1 -0
- package/dist/dts/services/TaskTracker/TaskTracker.d.ts +39 -0
- package/dist/dts/services/TaskTracker/TaskTracker.d.ts.map +1 -0
- package/dist/dts/services/TaskTracker/TrackerLayerMap.d.ts +14 -0
- package/dist/dts/services/TaskTracker/TrackerLayerMap.d.ts.map +1 -0
- package/dist/dts/services/TaskTracker/buildEventStream.d.ts +16 -0
- package/dist/dts/services/TaskTracker/buildEventStream.d.ts.map +1 -0
- package/dist/dts/services/TaskTracker.d.ts +38 -0
- package/dist/dts/services/TaskTracker.d.ts.map +1 -0
- package/dist/dts/services/TelegramAdapter.d.ts +13 -0
- package/dist/dts/services/TelegramAdapter.d.ts.map +1 -0
- package/dist/dts/services/TelegramConfig.d.ts +58 -0
- package/dist/dts/services/TelegramConfig.d.ts.map +1 -0
- package/dist/dts/services/TelegramConfigStore.d.ts +57 -0
- package/dist/dts/services/TelegramConfigStore.d.ts.map +1 -0
- package/dist/dts/services/TelegramNotifier.d.ts +40 -0
- package/dist/dts/services/TelegramNotifier.d.ts.map +1 -0
- package/dist/dts/services/TrackerLayerMap.d.ts +14 -0
- package/dist/dts/services/TrackerLayerMap.d.ts.map +1 -0
- package/dist/dts/services/TrackerResolver.d.ts +43 -0
- package/dist/dts/services/TrackerResolver.d.ts.map +1 -0
- package/dist/dts/services/messenger/MessengerAdapter.d.ts +69 -0
- package/dist/dts/services/messenger/MessengerAdapter.d.ts.map +1 -0
- package/dist/dts/services/messenger/TelegramAdapter.d.ts +13 -0
- package/dist/dts/services/messenger/TelegramAdapter.d.ts.map +1 -0
- package/dist/dts/services/task-tracker/GitHubIssueTracker.d.ts +10 -0
- package/dist/dts/services/task-tracker/GitHubIssueTracker.d.ts.map +1 -0
- package/dist/dts/services/task-tracker/LinearTracker.d.ts +10 -0
- package/dist/dts/services/task-tracker/LinearTracker.d.ts.map +1 -0
- package/dist/dts/services/task-tracker/TaskTracker.d.ts +38 -0
- package/dist/dts/services/task-tracker/TaskTracker.d.ts.map +1 -0
- package/dist/dts/services/task-tracker/TrackerLayerMap.d.ts +14 -0
- package/dist/dts/services/task-tracker/TrackerLayerMap.d.ts.map +1 -0
- package/dist/dts/shim/bin.d.ts +3 -0
- package/dist/dts/shim/bin.d.ts.map +1 -0
- package/dist/dts/shim/main.d.ts +36 -0
- package/dist/dts/shim/main.d.ts.map +1 -0
- package/dist/dts/shim/parseArgs.d.ts +11 -0
- package/dist/dts/shim/parseArgs.d.ts.map +1 -0
- package/dist/dts/shim/schemas.d.ts +55 -0
- package/dist/dts/shim/schemas.d.ts.map +1 -0
- package/dist/esm/Events.js +41 -0
- package/dist/esm/Events.js.map +1 -0
- package/dist/esm/LalphMain.js +56 -0
- package/dist/esm/LalphMain.js.map +1 -0
- package/dist/esm/Main.js +112 -0
- package/dist/esm/Main.js.map +1 -0
- package/dist/esm/index.js +101 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/AnalysisPrompts.js +54 -0
- package/dist/esm/lib/AnalysisPrompts.js.map +1 -0
- package/dist/esm/lib/BranchParser.js +36 -0
- package/dist/esm/lib/BranchParser.js.map +1 -0
- package/dist/esm/lib/MermaidToPlantUml.js +89 -0
- package/dist/esm/lib/MermaidToPlantUml.js.map +1 -0
- package/dist/esm/lib/SpecHtmlGenerator.js +153 -0
- package/dist/esm/lib/SpecHtmlGenerator.js.map +1 -0
- package/dist/esm/lib/StreamJsonParser.js +79 -0
- package/dist/esm/lib/StreamJsonParser.js.map +1 -0
- package/dist/esm/lib/TelegramFormatter.js +114 -0
- package/dist/esm/lib/TelegramFormatter.js.map +1 -0
- package/dist/esm/lib/TelegraphHtml.js +57 -0
- package/dist/esm/lib/TelegraphHtml.js.map +1 -0
- package/dist/esm/lib/TelegraphMarkdown.js +338 -0
- package/dist/esm/lib/TelegraphMarkdown.js.map +1 -0
- package/dist/esm/package.json +4 -0
- package/dist/esm/schemas/CredentialSchemas.js +22 -0
- package/dist/esm/schemas/CredentialSchemas.js.map +1 -0
- package/dist/esm/schemas/GitHubSchemas.js +50 -0
- package/dist/esm/schemas/GitHubSchemas.js.map +1 -0
- package/dist/esm/schemas/LinearSchemas.js +52 -0
- package/dist/esm/schemas/LinearSchemas.js.map +1 -0
- package/dist/esm/schemas/ProjectSchemas.js +18 -0
- package/dist/esm/schemas/ProjectSchemas.js.map +1 -0
- package/dist/esm/schemas/TrackerSchemas.js +26 -0
- package/dist/esm/schemas/TrackerSchemas.js.map +1 -0
- package/dist/esm/services/AppContext.js +48 -0
- package/dist/esm/services/AppContext.js.map +1 -0
- package/dist/esm/services/AppRuntimeConfig.js +26 -0
- package/dist/esm/services/AppRuntimeConfig.js.map +1 -0
- package/dist/esm/services/AutoMerge.js +131 -0
- package/dist/esm/services/AutoMerge.js.map +1 -0
- package/dist/esm/services/ChatMachine.js +855 -0
- package/dist/esm/services/ChatMachine.js.map +1 -0
- package/dist/esm/services/CommentTimer.js +72 -0
- package/dist/esm/services/CommentTimer.js.map +1 -0
- package/dist/esm/services/CredentialStore.js +59 -0
- package/dist/esm/services/CredentialStore.js.map +1 -0
- package/dist/esm/services/CredentialWatcher.js +67 -0
- package/dist/esm/services/CredentialWatcher.js.map +1 -0
- package/dist/esm/services/Credentials.js +121 -0
- package/dist/esm/services/Credentials.js.map +1 -0
- package/dist/esm/services/EventLoop.js +128 -0
- package/dist/esm/services/EventLoop.js.map +1 -0
- package/dist/esm/services/GitHubClient/GitHubClient.js +227 -0
- package/dist/esm/services/GitHubClient/GitHubClient.js.map +1 -0
- package/dist/esm/services/GitHubClient/OctokitClient.js +320 -0
- package/dist/esm/services/GitHubClient/OctokitClient.js.map +1 -0
- package/dist/esm/services/GitHubClient.js +227 -0
- package/dist/esm/services/GitHubClient.js.map +1 -0
- package/dist/esm/services/GitHubEventSource.js +136 -0
- package/dist/esm/services/GitHubEventSource.js.map +1 -0
- package/dist/esm/services/GitHubIssueTracker.js +111 -0
- package/dist/esm/services/GitHubIssueTracker.js.map +1 -0
- package/dist/esm/services/LalphConfig.js +130 -0
- package/dist/esm/services/LalphConfig.js.map +1 -0
- package/dist/esm/services/LalphConfigReader.js +71 -0
- package/dist/esm/services/LalphConfigReader.js.map +1 -0
- package/dist/esm/services/LalphDirectory.js +36 -0
- package/dist/esm/services/LalphDirectory.js.map +1 -0
- package/dist/esm/services/LinearSdkClient.js +140 -0
- package/dist/esm/services/LinearSdkClient.js.map +1 -0
- package/dist/esm/services/LinearTracker.js +82 -0
- package/dist/esm/services/LinearTracker.js.map +1 -0
- package/dist/esm/services/MessengerAdapter/MessengerAdapter.js +21 -0
- package/dist/esm/services/MessengerAdapter/MessengerAdapter.js.map +1 -0
- package/dist/esm/services/MessengerAdapter/TelegramAdapter.js +124 -0
- package/dist/esm/services/MessengerAdapter/TelegramAdapter.js.map +1 -0
- package/dist/esm/services/MessengerAdapter/TelegramConfig.js +71 -0
- package/dist/esm/services/MessengerAdapter/TelegramConfig.js.map +1 -0
- package/dist/esm/services/MessengerAdapter.js +21 -0
- package/dist/esm/services/MessengerAdapter.js.map +1 -0
- package/dist/esm/services/OctokitClient.js +341 -0
- package/dist/esm/services/OctokitClient.js.map +1 -0
- package/dist/esm/services/PlanOverviewUploader.js +109 -0
- package/dist/esm/services/PlanOverviewUploader.js.map +1 -0
- package/dist/esm/services/PlanOverviewUploaderMap.js +17 -0
- package/dist/esm/services/PlanOverviewUploaderMap.js.map +1 -0
- package/dist/esm/services/PlanSession.js +471 -0
- package/dist/esm/services/PlanSession.js.map +1 -0
- package/dist/esm/services/ProjectStore.js +98 -0
- package/dist/esm/services/ProjectStore.js.map +1 -0
- package/dist/esm/services/PullRequestTracker.js +177 -0
- package/dist/esm/services/PullRequestTracker.js.map +1 -0
- package/dist/esm/services/SpecUploader.js +101 -0
- package/dist/esm/services/SpecUploader.js.map +1 -0
- package/dist/esm/services/SpecUploaderMap.js +17 -0
- package/dist/esm/services/SpecUploaderMap.js.map +1 -0
- package/dist/esm/services/TaskEventSource.js +50 -0
- package/dist/esm/services/TaskEventSource.js.map +1 -0
- package/dist/esm/services/TaskTracker/GitHubIssueTracker.js +148 -0
- package/dist/esm/services/TaskTracker/GitHubIssueTracker.js.map +1 -0
- package/dist/esm/services/TaskTracker/LinearSdkClient.js +140 -0
- package/dist/esm/services/TaskTracker/LinearSdkClient.js.map +1 -0
- package/dist/esm/services/TaskTracker/LinearTracker.js +119 -0
- package/dist/esm/services/TaskTracker/LinearTracker.js.map +1 -0
- package/dist/esm/services/TaskTracker/TaskTracker.js +12 -0
- package/dist/esm/services/TaskTracker/TaskTracker.js.map +1 -0
- package/dist/esm/services/TaskTracker/TrackerLayerMap.js +19 -0
- package/dist/esm/services/TaskTracker/TrackerLayerMap.js.map +1 -0
- package/dist/esm/services/TaskTracker/buildEventStream.js +47 -0
- package/dist/esm/services/TaskTracker/buildEventStream.js.map +1 -0
- package/dist/esm/services/TaskTracker.js +12 -0
- package/dist/esm/services/TaskTracker.js.map +1 -0
- package/dist/esm/services/TelegramAdapter.js +118 -0
- package/dist/esm/services/TelegramAdapter.js.map +1 -0
- package/dist/esm/services/TelegramConfig.js +71 -0
- package/dist/esm/services/TelegramConfig.js.map +1 -0
- package/dist/esm/services/TelegramConfigStore.js +71 -0
- package/dist/esm/services/TelegramConfigStore.js.map +1 -0
- package/dist/esm/services/TelegramNotifier.js +41 -0
- package/dist/esm/services/TelegramNotifier.js.map +1 -0
- package/dist/esm/services/TrackerLayerMap.js +19 -0
- package/dist/esm/services/TrackerLayerMap.js.map +1 -0
- package/dist/esm/services/TrackerResolver.js +36 -0
- package/dist/esm/services/TrackerResolver.js.map +1 -0
- package/dist/esm/services/messenger/MessengerAdapter.js +21 -0
- package/dist/esm/services/messenger/MessengerAdapter.js.map +1 -0
- package/dist/esm/services/messenger/TelegramAdapter.js +118 -0
- package/dist/esm/services/messenger/TelegramAdapter.js.map +1 -0
- package/dist/esm/services/task-tracker/GitHubIssueTracker.js +150 -0
- package/dist/esm/services/task-tracker/GitHubIssueTracker.js.map +1 -0
- package/dist/esm/services/task-tracker/LinearTracker.js +120 -0
- package/dist/esm/services/task-tracker/LinearTracker.js.map +1 -0
- package/dist/esm/services/task-tracker/TaskTracker.js +12 -0
- package/dist/esm/services/task-tracker/TaskTracker.js.map +1 -0
- package/dist/esm/services/task-tracker/TrackerLayerMap.js +19 -0
- package/dist/esm/services/task-tracker/TrackerLayerMap.js.map +1 -0
- package/dist/esm/shim/bin.js +28 -0
- package/dist/esm/shim/bin.js.map +1 -0
- package/dist/esm/shim/main.js +196 -0
- package/dist/esm/shim/main.js.map +1 -0
- package/dist/esm/shim/parseArgs.js +39 -0
- package/dist/esm/shim/parseArgs.js.map +1 -0
- package/dist/esm/shim/schemas.js +28 -0
- package/dist/esm/shim/schemas.js.map +1 -0
- package/lib/AnalysisPrompts/package.json +6 -0
- package/lib/BranchParser/package.json +6 -0
- package/lib/MermaidToPlantUml/package.json +6 -0
- package/lib/SpecHtmlGenerator/package.json +6 -0
- package/lib/StreamJsonParser/package.json +6 -0
- package/lib/TelegramFormatter/package.json +6 -0
- package/lib/TelegraphMarkdown/package.json +6 -0
- package/package.json +360 -0
- package/schemas/CredentialSchemas/package.json +6 -0
- package/schemas/GitHubSchemas/package.json +6 -0
- package/schemas/LinearSchemas/package.json +6 -0
- package/schemas/ProjectSchemas/package.json +6 -0
- package/schemas/TrackerSchemas/package.json +6 -0
- package/services/AppContext/package.json +6 -0
- package/services/AppRuntimeConfig/package.json +6 -0
- package/services/AutoMerge/package.json +6 -0
- package/services/ChatMachine/package.json +6 -0
- package/services/CommentTimer/package.json +6 -0
- package/services/EventLoop/package.json +6 -0
- package/services/GitHubClient/package.json +6 -0
- package/services/LalphConfig/package.json +6 -0
- package/services/LinearSdkClient/package.json +6 -0
- package/services/MessengerAdapter/MessengerAdapter/package.json +6 -0
- package/services/MessengerAdapter/TelegramAdapter/package.json +6 -0
- package/services/OctokitClient/package.json +6 -0
- package/services/PlanOverviewUploader/package.json +6 -0
- package/services/PlanOverviewUploaderMap/package.json +6 -0
- package/services/PlanSession/package.json +6 -0
- package/services/ProjectStore/package.json +6 -0
- package/services/PullRequestTracker/package.json +6 -0
- package/services/TaskTracker/GitHubIssueTracker/package.json +6 -0
- package/services/TaskTracker/LinearTracker/package.json +6 -0
- package/services/TaskTracker/TaskTracker/package.json +6 -0
- package/services/TelegramConfig/package.json +6 -0
- package/services/TrackerLayerMap/package.json +6 -0
- package/shim/bin/package.json +6 -0
- package/shim/main/package.json +6 -0
- package/shim/parseArgs/package.json +6 -0
- package/shim/schemas/package.json +6 -0
- package/src/Events.ts +98 -0
- package/src/Main.ts +177 -0
- package/src/index.ts +124 -0
- package/src/lib/AnalysisPrompts.ts +54 -0
- package/src/lib/BranchParser.ts +58 -0
- package/src/lib/MermaidToPlantUml.ts +103 -0
- package/src/lib/SpecHtmlGenerator.ts +199 -0
- package/src/lib/StreamJsonParser.ts +99 -0
- package/src/lib/TelegramFormatter.ts +151 -0
- package/src/lib/TelegraphMarkdown.ts +305 -0
- package/src/schemas/CredentialSchemas.ts +23 -0
- package/src/schemas/GitHubSchemas.ts +50 -0
- package/src/schemas/LinearSchemas.ts +57 -0
- package/src/schemas/ProjectSchemas.ts +18 -0
- package/src/schemas/TrackerSchemas.ts +27 -0
- package/src/services/AppContext.ts +72 -0
- package/src/services/AppRuntimeConfig.ts +23 -0
- package/src/services/AutoMerge.ts +198 -0
- package/src/services/ChatMachine.ts +911 -0
- package/src/services/CommentTimer.ts +133 -0
- package/src/services/EventLoop.ts +321 -0
- package/src/services/GitHubClient.ts +282 -0
- package/src/services/LalphConfig.ts +218 -0
- package/src/services/LinearSdkClient.ts +181 -0
- package/src/services/MessengerAdapter/MessengerAdapter.ts +53 -0
- package/src/services/MessengerAdapter/TelegramAdapter.ts +145 -0
- package/src/services/OctokitClient.ts +628 -0
- package/src/services/PlanOverviewUploader.ts +160 -0
- package/src/services/PlanOverviewUploaderMap.ts +17 -0
- package/src/services/PlanSession.ts +589 -0
- package/src/services/ProjectStore.ts +140 -0
- package/src/services/PullRequestTracker.ts +253 -0
- package/src/services/TaskTracker/GitHubIssueTracker.ts +162 -0
- package/src/services/TaskTracker/LinearTracker.ts +141 -0
- package/src/services/TaskTracker/TaskTracker.ts +34 -0
- package/src/services/TelegramConfig.ts +120 -0
- package/src/services/TrackerLayerMap.ts +19 -0
- package/src/shim/bin.ts +36 -0
- package/src/shim/main.ts +255 -0
- package/src/shim/parseArgs.ts +43 -0
- 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":";;;;;;AAKA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,uBAAA,CAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AAAkD,SAAAG,wBAAAG,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAL,uBAAA,YAAAA,CAAAG,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AATlD;;;;;;AAWA;;;;AAIM,MAAOkB,iBAAkB,sBAAQC,YAAI,CAACC,WAAW,CAAC,mBAAmB,CAGzE;AAUF;;;;AAAAC,OAAA,CAAAH,iBAAA,GAAAA,iBAAA;AAIM,MAAOI,YAAa,sBAAQC,eAAO,CAACC,GAAG,CAAC,cAAc,CAAC,EAAqC;AAElG;;;;;AAAAH,OAAA,CAAAC,YAAA,GAAAA,YAAA;AAKO,MAAMG,oBAAoB,GAAAJ,OAAA,CAAAI,oBAAA,gBAAGC,aAAK,CAACC,MAAM,CAC9CL,YAAY,eACZM,cAAM,CAACC,GAAG,CAAC,aAAS;EAClB,MAAMC,aAAa,GAAG,OAAOC,4BAAa;EAE1C,OAAOT,YAAY,CAACU,EAAE,CAAC;IACrBC,MAAM,EAAEA,CAACC,IAAI,EAAEC,WAAW,KACxBP,cAAM,CAACC,GAAG,CAAC,aAAS;MAClB,MAAMO,IAAI,GAAG,OAAON,aAAa,CAACO,UAAU,CAAC;QAC3CF,WAAW;QACXG,KAAK,EAAE;UAAE,WAAW,EAAE;YAAEC,OAAO,EAAEL;UAAI;QAAE,CAAE;QACzCM,QAAQ,EAAE;OACX,CAAC,CAACC,IAAI,CACLb,cAAM,CAACc,QAAQ,CAAEC,GAAG,IAClB,IAAIzB,iBAAiB,CAAC;QACpB0B,OAAO,EAAE,uBAAuBD,GAAG,CAACC,OAAO,EAAE;QAC7CC,KAAK,EAAEF;OACR,CAAC,CACH,CACF;MAED,MAAMG,MAAM,GAAGV,IAAI,CAACE,KAAK,CAAC,WAAW,CAAC,EAAEQ,MAAM,IAAIV,IAAI,CAACW,OAAO;MAC9D,MAAMC,OAAO,GAAG,kCAAkCF,MAAM,EAAE;MAC1D,OAAO;QAAEG,GAAG,EAAED;MAAO,CAAE;IACzB,CAAC;GACJ,CAAC;AACJ,CAAC,CAAC,CACH;AAED,MAAME,gBAAgB,gBAAGC,cAAM,CAACC,MAAM,CAAC;EACrCC,EAAE,eAAEF,cAAM,CAACG,OAAO,CAAC,IAAI,CAAC;EACxBC,MAAM,eAAEJ,cAAM,CAACK,MAAM,CAAC;IAAEC,GAAG,EAAEN,cAAM,CAACO,MAAM;IAAEC,KAAK,EAAER,cAAM,CAACS;EAAO,CAAE;CACpE,CAAC;AAEF,MAAMC,cAAc,gBAAGV,cAAM,CAACC,MAAM,CAAC;EACnCC,EAAE,eAAEF,cAAM,CAACG,OAAO,CAAC,KAAK,CAAC;EACzBQ,KAAK,EAAEX,cAAM,CAACO;CACf,CAAC;AAEF,MAAMK,iBAAiB,gBAAGZ,cAAM,CAACa,KAAK,CAACd,gBAAgB,EAAEW,cAAc,CAAC;AAExE;;;;;;AAMO,MAAMI,yBAAyB,GAAA5C,OAAA,CAAA4C,yBAAA,gBAAGvC,aAAK,CAACC,MAAM,CACnDL,YAAY,eACZM,cAAM,CAACC,GAAG,CAAC,aAAS;EAClB,MAAMqC,MAAM,GAAG,OAAOC,oBAAU,CAACA,UAAU;EAE3C,MAAMC,aAAa,GAAGA,CAACnB,GAAW,EAAEoB,IAA6B,EAAEC,KAAa,KAAI;IAClF,MAAMC,GAAG,GAAGC,2BAAiB,CAACC,IAAI,CAACxB,GAAG,CAAC,CAACR,IAAI,CAC1C+B,2BAAiB,CAACE,cAAc,CAACL,IAAI,CAAC,CACvC;IACD,OAAOH,MAAM,CAACS,OAAO,CAACJ,GAAG,CAAC,CAAC9B,IAAI,CAC7Bb,cAAM,CAACgD,OAAO,CAAEC,GAAG,IAAKA,GAAG,CAACC,IAAI,CAAC,EACjClD,cAAM,CAACmD,MAAM,EACbnD,cAAM,CAACgD,OAAO,CAACzB,cAAM,CAAC6B,aAAa,CAACjB,iBAAiB,CAAC,CAAC,EACvDnC,cAAM,CAACgD,OAAO,CAAEK,MAAM,IACpBA,MAAM,CAAC5B,EAAE,GACLzB,cAAM,CAACsD,OAAO,CAACD,MAAM,CAAC1B,MAAM,CAAC,GAC7B3B,cAAM,CAACuD,IAAI,CACX,IAAIjE,iBAAiB,CAAC;MACpB0B,OAAO,EAAE,aAAa0B,KAAK,YAAYW,MAAM,CAACnB,KAAK,EAAE;MACrDjB,KAAK,EAAE;KACR,CAAC,CACH,CACJ,EACDjB,cAAM,CAACc,QAAQ,CAAEC,GAAG,IAClBA,GAAG,YAAYzB,iBAAiB,GAC5ByB,GAAG,GACH,IAAIzB,iBAAiB,CAAC;MACtB0B,OAAO,EAAE,aAAa0B,KAAK,oBAAoBZ,MAAM,CAACf,GAAG,CAAC,EAAE;MAC5DE,KAAK,EAAEF;KACR,CAAC,CACL,CACF;EACH,CAAC;EAED,MAAMyC,aAAa,GAAG,OAAOhB,aAAa,CACxC,sCAAsC,EACtC;IAAEiB,UAAU,EAAE;EAAO,CAAE,EACvB,eAAe,CAChB;EAED,MAAMC,WAAW,GAAG5B,MAAM,CAAC0B,aAAa,CAACG,YAAY,CAAC;EAEtD,OAAOjE,YAAY,CAACU,EAAE,CAAC;IACrBC,MAAM,EAAEA,CAACC,IAAI,EAAEC,WAAW,KACxBP,cAAM,CAACC,GAAG,CAAC,aAAS;MAClB,MAAM2D,aAAa,GAAG,IAAAC,8BAAe,EAACvD,IAAI,CAAC;MAC3C,MAAMwD,KAAK,GAAG/F,MAAM,CAACgG,UAAU,EAAE;MAEjC,MAAMC,UAAU,GAAG,OAAOxB,aAAa,CACrC,mCAAmC,EACnC;QACEmB,YAAY,EAAED,WAAW;QACzBI,KAAK;QACLG,WAAW,EAAE,OAAO;QACpBtD,OAAO,EAAEiD,aAAa;QACtBM,cAAc,EAAE;OACjB,EACD,YAAY,CACb;MAED,OAAO;QAAE7C,GAAG,EAAES,MAAM,CAACkC,UAAU,CAAC3C,GAAG;MAAC,CAAE;IACxC,CAAC,CAAC,CAACR,IAAI,CAACb,cAAM,CAACmE,YAAY,CAAC,aAAa,EAAE5D,WAAW,CAAC;GAC1D,CAAC;AACJ,CAAC,CAAC,CACH","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":[]}
|