@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,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TelegramConfigSchema = exports.TelegramConfigLive = exports.TelegramConfigError = exports.TelegramConfig = void 0;
|
|
7
|
+
var _platform = require("@effect/platform");
|
|
8
|
+
var _effect = require("effect");
|
|
9
|
+
var _AppContext = require("./AppContext.js");
|
|
10
|
+
/**
|
|
11
|
+
* Telegram config persistence service following lalph TokenManager pattern
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @since 1.0.0
|
|
17
|
+
* @category schemas
|
|
18
|
+
*/
|
|
19
|
+
class TelegramConfigSchema extends /*#__PURE__*/_effect.Schema.Class("TelegramConfigSchema")({
|
|
20
|
+
botToken: _effect.Schema.String,
|
|
21
|
+
chatId: /*#__PURE__*/_effect.Schema.NullOr(_effect.Schema.String)
|
|
22
|
+
}) {}
|
|
23
|
+
/**
|
|
24
|
+
* @since 1.0.0
|
|
25
|
+
* @category errors
|
|
26
|
+
*/
|
|
27
|
+
exports.TelegramConfigSchema = TelegramConfigSchema;
|
|
28
|
+
class TelegramConfigError extends /*#__PURE__*/_effect.Data.TaggedError("TelegramConfigError") {}
|
|
29
|
+
/**
|
|
30
|
+
* @since 1.0.0
|
|
31
|
+
* @category context
|
|
32
|
+
*/
|
|
33
|
+
exports.TelegramConfigError = TelegramConfigError;
|
|
34
|
+
class TelegramConfig extends /*#__PURE__*/_effect.Context.Tag("TelegramConfig")() {}
|
|
35
|
+
/**
|
|
36
|
+
* @since 1.0.0
|
|
37
|
+
* @category layers
|
|
38
|
+
*/
|
|
39
|
+
exports.TelegramConfig = TelegramConfig;
|
|
40
|
+
const TelegramConfigLive = exports.TelegramConfigLive = /*#__PURE__*/_effect.Layer.effect(TelegramConfig, /*#__PURE__*/_effect.Effect.gen(function* () {
|
|
41
|
+
const fs = yield* _platform.FileSystem.FileSystem;
|
|
42
|
+
const pathService = yield* _platform.Path.Path;
|
|
43
|
+
const appContext = yield* _AppContext.AppContext;
|
|
44
|
+
const filePath = pathService.join(appContext.configDir, encodeURIComponent("notify.telegram"));
|
|
45
|
+
let currentConfig = null;
|
|
46
|
+
const get = _effect.Effect.gen(function* () {
|
|
47
|
+
if (currentConfig !== null) return _effect.Option.some(currentConfig);
|
|
48
|
+
const content = yield* fs.readFileString(filePath).pipe(_effect.Effect.mapError(err => new TelegramConfigError({
|
|
49
|
+
message: "Failed to read telegram config",
|
|
50
|
+
cause: err
|
|
51
|
+
})));
|
|
52
|
+
const json = yield* _effect.Effect.try({
|
|
53
|
+
try: () => JSON.parse(content),
|
|
54
|
+
catch: err => new TelegramConfigError({
|
|
55
|
+
message: "Failed to parse telegram config",
|
|
56
|
+
cause: err
|
|
57
|
+
})
|
|
58
|
+
});
|
|
59
|
+
const config = yield* _effect.Schema.decodeUnknown(TelegramConfigSchema)(json).pipe(_effect.Effect.mapError(err => new TelegramConfigError({
|
|
60
|
+
message: "Failed to decode telegram config",
|
|
61
|
+
cause: err
|
|
62
|
+
})));
|
|
63
|
+
currentConfig = config;
|
|
64
|
+
return _effect.Option.some(config);
|
|
65
|
+
}).pipe(_effect.Effect.catchTag("TelegramConfigError", err => _effect.Effect.logWarning(`No stored Telegram config: ${err.message}`).pipe(_effect.Effect.map(() => _effect.Option.none()))));
|
|
66
|
+
const set = config => _effect.Effect.gen(function* () {
|
|
67
|
+
yield* fs.writeFileString(filePath, JSON.stringify({
|
|
68
|
+
botToken: config.botToken,
|
|
69
|
+
chatId: config.chatId
|
|
70
|
+
})).pipe(_effect.Effect.mapError(err => new TelegramConfigError({
|
|
71
|
+
message: "Failed to write telegram config",
|
|
72
|
+
cause: err
|
|
73
|
+
})));
|
|
74
|
+
currentConfig = config;
|
|
75
|
+
});
|
|
76
|
+
return TelegramConfig.of({
|
|
77
|
+
get,
|
|
78
|
+
set
|
|
79
|
+
});
|
|
80
|
+
}));
|
|
81
|
+
//# sourceMappingURL=TelegramConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelegramConfig.js","names":["_platform","require","_effect","_AppContext","TelegramConfigSchema","Schema","Class","botToken","String","chatId","NullOr","exports","TelegramConfigError","Data","TaggedError","TelegramConfig","Context","Tag","TelegramConfigLive","Layer","effect","Effect","gen","fs","FileSystem","pathService","Path","appContext","AppContext","filePath","join","configDir","encodeURIComponent","currentConfig","get","Option","some","content","readFileString","pipe","mapError","err","message","cause","json","try","JSON","parse","catch","config","decodeUnknown","catchTag","logWarning","map","none","set","writeFileString","stringify","of"],"sources":["../../../src/services/TelegramConfig.ts"],"sourcesContent":[null],"mappings":";;;;;;AAIA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AANA;;;;;AAQA;;;;AAIM,MAAOG,oBAAqB,sBAAQC,cAAM,CAACC,KAAK,CAAuB,sBAAsB,CAAC,CAAC;EACnGC,QAAQ,EAAEF,cAAM,CAACG,MAAM;EACvBC,MAAM,eAAEJ,cAAM,CAACK,MAAM,CAACL,cAAM,CAACG,MAAM;CACpC,CAAC;AAEF;;;;AAAAG,OAAA,CAAAP,oBAAA,GAAAA,oBAAA;AAIM,MAAOQ,mBAAoB,sBAAQC,YAAI,CAACC,WAAW,CAAC,qBAAqB,CAG7E;AAWF;;;;AAAAH,OAAA,CAAAC,mBAAA,GAAAA,mBAAA;AAIM,MAAOG,cAAe,sBAAQC,eAAO,CAACC,GAAG,CAAC,gBAAgB,CAAC,EAG9D;AAEH;;;;AAAAN,OAAA,CAAAI,cAAA,GAAAA,cAAA;AAIO,MAAMG,kBAAkB,GAAAP,OAAA,CAAAO,kBAAA,gBAAGC,aAAK,CAACC,MAAM,CAC5CL,cAAc,eACdM,cAAM,CAACC,GAAG,CAAC,aAAS;EAClB,MAAMC,EAAE,GAAG,OAAOC,oBAAU,CAACA,UAAU;EACvC,MAAMC,WAAW,GAAG,OAAOC,cAAI,CAACA,IAAI;EACpC,MAAMC,UAAU,GAAG,OAAOC,sBAAU;EAEpC,MAAMC,QAAQ,GAAGJ,WAAW,CAACK,IAAI,CAACH,UAAU,CAACI,SAAS,EAAEC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;EAE9F,IAAIC,aAAa,GAAgC,IAAI;EAErD,MAAMC,GAAG,GAAGb,cAAM,CAACC,GAAG,CAAC,aAAS;IAC9B,IAAIW,aAAa,KAAK,IAAI,EAAE,OAAOE,cAAM,CAACC,IAAI,CAACH,aAAa,CAAC;IAE7D,MAAMI,OAAO,GAAG,OAAOd,EAAE,CAACe,cAAc,CAACT,QAAQ,CAAC,CAACU,IAAI,CACrDlB,cAAM,CAACmB,QAAQ,CAAEC,GAAG,IAClB,IAAI7B,mBAAmB,CAAC;MACtB8B,OAAO,EAAE,gCAAgC;MACzCC,KAAK,EAAEF;KACR,CAAC,CACH,CACF;IACD,MAAMG,IAAI,GAAG,OAAOvB,cAAM,CAACwB,GAAG,CAAC;MAC7BA,GAAG,EAAEA,CAAA,KAAMC,IAAI,CAACC,KAAK,CAACV,OAAO,CAAC;MAC9BW,KAAK,EAAGP,GAAG,IACT,IAAI7B,mBAAmB,CAAC;QACtB8B,OAAO,EAAE,iCAAiC;QAC1CC,KAAK,EAAEF;OACR;KACJ,CAAC;IACF,MAAMQ,MAAM,GAAG,OAAO5C,cAAM,CAAC6C,aAAa,CAAC9C,oBAAoB,CAAC,CAACwC,IAAI,CAAC,CAACL,IAAI,CACzElB,cAAM,CAACmB,QAAQ,CAAEC,GAAG,IAClB,IAAI7B,mBAAmB,CAAC;MACtB8B,OAAO,EAAE,kCAAkC;MAC3CC,KAAK,EAAEF;KACR,CAAC,CACH,CACF;IACDR,aAAa,GAAGgB,MAAM;IACtB,OAAOd,cAAM,CAACC,IAAI,CAACa,MAAM,CAAC;EAC5B,CAAC,CAAC,CAACV,IAAI,CACLlB,cAAM,CAAC8B,QAAQ,CACb,qBAAqB,EACpBV,GAAG,IACFpB,cAAM,CAAC+B,UAAU,CAAC,8BAA8BX,GAAG,CAACC,OAAO,EAAE,CAAC,CAACH,IAAI,CACjElB,cAAM,CAACgC,GAAG,CAAC,MAAMlB,cAAM,CAACmB,IAAI,EAAwB,CAAC,CACtD,CACJ,CACF;EAED,MAAMC,GAAG,GAAIN,MAA4B,IACvC5B,cAAM,CAACC,GAAG,CAAC,aAAS;IAClB,OAAOC,EAAE,CAACiC,eAAe,CACvB3B,QAAQ,EACRiB,IAAI,CAACW,SAAS,CAAC;MACblD,QAAQ,EAAE0C,MAAM,CAAC1C,QAAQ;MACzBE,MAAM,EAAEwC,MAAM,CAACxC;KAChB,CAAC,CACH,CAAC8B,IAAI,CACJlB,cAAM,CAACmB,QAAQ,CAAEC,GAAG,IAClB,IAAI7B,mBAAmB,CAAC;MACtB8B,OAAO,EAAE,iCAAiC;MAC1CC,KAAK,EAAEF;KACR,CAAC,CACH,CACF;IACDR,aAAa,GAAGgB,MAAM;EACxB,CAAC,CAAC;EAEJ,OAAOlC,cAAc,CAAC2C,EAAE,CAAC;IAAExB,GAAG;IAAEqB;EAAG,CAAE,CAAC;AACxC,CAAC,CAAC,CACH","ignoreList":[]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TelegramConfigStoreLive = exports.TelegramConfigStoreError = exports.TelegramConfigStore = exports.TelegramConfig = void 0;
|
|
7
|
+
var _platform = require("@effect/platform");
|
|
8
|
+
var _effect = require("effect");
|
|
9
|
+
var _LalphConfigReader = require("./LalphConfigReader.js");
|
|
10
|
+
/**
|
|
11
|
+
* Telegram config persistence service following lalph TokenManager pattern
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @since 1.0.0
|
|
17
|
+
* @category schemas
|
|
18
|
+
*/
|
|
19
|
+
class TelegramConfig extends /*#__PURE__*/_effect.Schema.Class("TelegramConfig")({
|
|
20
|
+
botToken: _effect.Schema.String,
|
|
21
|
+
chatId: /*#__PURE__*/_effect.Schema.NullOr(_effect.Schema.String)
|
|
22
|
+
}) {}
|
|
23
|
+
/**
|
|
24
|
+
* @since 1.0.0
|
|
25
|
+
* @category errors
|
|
26
|
+
*/
|
|
27
|
+
exports.TelegramConfig = TelegramConfig;
|
|
28
|
+
class TelegramConfigStoreError extends /*#__PURE__*/_effect.Data.TaggedError("TelegramConfigStoreError") {}
|
|
29
|
+
/**
|
|
30
|
+
* @since 1.0.0
|
|
31
|
+
* @category context
|
|
32
|
+
*/
|
|
33
|
+
exports.TelegramConfigStoreError = TelegramConfigStoreError;
|
|
34
|
+
class TelegramConfigStore extends /*#__PURE__*/_effect.Context.Tag("TelegramConfigStore")() {}
|
|
35
|
+
/**
|
|
36
|
+
* @since 1.0.0
|
|
37
|
+
* @category layers
|
|
38
|
+
*/
|
|
39
|
+
exports.TelegramConfigStore = TelegramConfigStore;
|
|
40
|
+
const TelegramConfigStoreLive = exports.TelegramConfigStoreLive = /*#__PURE__*/_effect.Layer.effect(TelegramConfigStore, /*#__PURE__*/_effect.Effect.gen(function* () {
|
|
41
|
+
const fs = yield* _platform.FileSystem.FileSystem;
|
|
42
|
+
const pathService = yield* _platform.Path.Path;
|
|
43
|
+
const lalphDir = yield* _LalphConfigReader.findLalphDirectory;
|
|
44
|
+
const filePath = pathService.join(lalphDir, ".lalph", "config", encodeURIComponent("notify.telegram"));
|
|
45
|
+
let currentConfig = null;
|
|
46
|
+
const get = _effect.Effect.gen(function* () {
|
|
47
|
+
if (currentConfig !== null) return _effect.Option.some(currentConfig);
|
|
48
|
+
const content = yield* fs.readFileString(filePath).pipe(_effect.Effect.mapError(err => new TelegramConfigStoreError({
|
|
49
|
+
message: "Failed to read telegram config",
|
|
50
|
+
cause: err
|
|
51
|
+
})));
|
|
52
|
+
const json = yield* _effect.Effect.try({
|
|
53
|
+
try: () => JSON.parse(content),
|
|
54
|
+
catch: err => new TelegramConfigStoreError({
|
|
55
|
+
message: "Failed to parse telegram config",
|
|
56
|
+
cause: err
|
|
57
|
+
})
|
|
58
|
+
});
|
|
59
|
+
const config = yield* _effect.Schema.decodeUnknown(TelegramConfig)(json).pipe(_effect.Effect.mapError(err => new TelegramConfigStoreError({
|
|
60
|
+
message: "Failed to decode telegram config",
|
|
61
|
+
cause: err
|
|
62
|
+
})));
|
|
63
|
+
currentConfig = config;
|
|
64
|
+
return _effect.Option.some(config);
|
|
65
|
+
}).pipe(_effect.Effect.catchTag("TelegramConfigStoreError", err => _effect.Effect.logWarning(`No stored Telegram config: ${err.message}`).pipe(_effect.Effect.map(() => _effect.Option.none()))));
|
|
66
|
+
const set = config => _effect.Effect.gen(function* () {
|
|
67
|
+
yield* fs.writeFileString(filePath, JSON.stringify({
|
|
68
|
+
botToken: config.botToken,
|
|
69
|
+
chatId: config.chatId
|
|
70
|
+
})).pipe(_effect.Effect.mapError(err => new TelegramConfigStoreError({
|
|
71
|
+
message: "Failed to write telegram config",
|
|
72
|
+
cause: err
|
|
73
|
+
})));
|
|
74
|
+
currentConfig = config;
|
|
75
|
+
});
|
|
76
|
+
return TelegramConfigStore.of({
|
|
77
|
+
get,
|
|
78
|
+
set
|
|
79
|
+
});
|
|
80
|
+
}));
|
|
81
|
+
//# sourceMappingURL=TelegramConfigStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelegramConfigStore.js","names":["_platform","require","_effect","_LalphConfigReader","TelegramConfig","Schema","Class","botToken","String","chatId","NullOr","exports","TelegramConfigStoreError","Data","TaggedError","TelegramConfigStore","Context","Tag","TelegramConfigStoreLive","Layer","effect","Effect","gen","fs","FileSystem","pathService","Path","lalphDir","findLalphDirectory","filePath","join","encodeURIComponent","currentConfig","get","Option","some","content","readFileString","pipe","mapError","err","message","cause","json","try","JSON","parse","catch","config","decodeUnknown","catchTag","logWarning","map","none","set","writeFileString","stringify","of"],"sources":["../../../src/services/TelegramConfigStore.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TelegramNotifierLive = exports.TelegramNotifierError = exports.TelegramNotifier = void 0;
|
|
7
|
+
var _platform = require("@effect/platform");
|
|
8
|
+
var _effect = require("effect");
|
|
9
|
+
var _CredentialSchemas = require("../schemas/CredentialSchemas.js");
|
|
10
|
+
/**
|
|
11
|
+
* Telegram Bot API notifier service
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
// --- Internal schemas for Telegram API responses ---
|
|
16
|
+
/**
|
|
17
|
+
* @since 1.0.0
|
|
18
|
+
* @category errors
|
|
19
|
+
*/
|
|
20
|
+
class TelegramNotifierError extends /*#__PURE__*/_effect.Data.TaggedError("TelegramNotifierError") {}
|
|
21
|
+
/**
|
|
22
|
+
* @since 1.0.0
|
|
23
|
+
* @category context
|
|
24
|
+
*/
|
|
25
|
+
exports.TelegramNotifierError = TelegramNotifierError;
|
|
26
|
+
class TelegramNotifier extends /*#__PURE__*/_effect.Context.Tag("TelegramNotifier")() {}
|
|
27
|
+
/**
|
|
28
|
+
* @since 1.0.0
|
|
29
|
+
* @category layers
|
|
30
|
+
*/
|
|
31
|
+
exports.TelegramNotifier = TelegramNotifier;
|
|
32
|
+
const TelegramNotifierLive = exports.TelegramNotifierLive = /*#__PURE__*/_effect.Layer.effect(TelegramNotifier, /*#__PURE__*/_effect.Effect.gen(function* () {
|
|
33
|
+
const creds = yield* _CredentialSchemas.AppCredentials;
|
|
34
|
+
const client = yield* _platform.HttpClient.HttpClient;
|
|
35
|
+
const sendMessage = text => _platform.HttpClientRequest.post(`https://api.telegram.org/bot${creds.telegramBotToken}/sendMessage`).pipe(_platform.HttpClientRequest.bodyJson({
|
|
36
|
+
chat_id: creds.telegramChatId,
|
|
37
|
+
text,
|
|
38
|
+
parse_mode: "HTML"
|
|
39
|
+
}), _effect.Effect.flatMap(client.execute), _effect.Effect.flatMap(_platform.HttpClientResponse.schemaBodyJson(TelegramSendMessageResponse)), _effect.Effect.asVoid, _effect.Effect.mapError(err => new TelegramNotifierError({
|
|
40
|
+
message: `Failed to send Telegram message: ${String(err)}`,
|
|
41
|
+
cause: err
|
|
42
|
+
})));
|
|
43
|
+
return TelegramNotifier.of({
|
|
44
|
+
sendMessage
|
|
45
|
+
});
|
|
46
|
+
}));
|
|
47
|
+
const TelegramSendMessageResponse = /*#__PURE__*/_effect.Schema.Struct({
|
|
48
|
+
ok: _effect.Schema.Boolean
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=TelegramNotifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelegramNotifier.js","names":["_platform","require","_effect","_CredentialSchemas","TelegramNotifierError","Data","TaggedError","exports","TelegramNotifier","Context","Tag","TelegramNotifierLive","Layer","effect","Effect","gen","creds","AppCredentials","client","HttpClient","sendMessage","text","HttpClientRequest","post","telegramBotToken","pipe","bodyJson","chat_id","telegramChatId","parse_mode","flatMap","execute","HttpClientResponse","schemaBodyJson","TelegramSendMessageResponse","asVoid","mapError","err","message","String","cause","of","Schema","Struct","ok","Boolean"],"sources":["../../../src/services/TelegramNotifier.ts"],"sourcesContent":[null],"mappings":";;;;;;AAIA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;AANA;;;;;AAQA;AAEA;;;;AAIM,MAAOG,qBAAsB,sBAAQC,YAAI,CAACC,WAAW,CAAC,uBAAuB,CAGjF;AAUF;;;;AAAAC,OAAA,CAAAH,qBAAA,GAAAA,qBAAA;AAIM,MAAOI,gBAAiB,sBAAQC,eAAO,CAACC,GAAG,CAAC,kBAAkB,CAAC,EAGlE;AAEH;;;;AAAAH,OAAA,CAAAC,gBAAA,GAAAA,gBAAA;AAIO,MAAMG,oBAAoB,GAAAJ,OAAA,CAAAI,oBAAA,gBAAGC,aAAK,CAACC,MAAM,CAC9CL,gBAAgB,eAChBM,cAAM,CAACC,GAAG,CAAC,aAAS;EAClB,MAAMC,KAAK,GAAG,OAAOC,iCAAc;EACnC,MAAMC,MAAM,GAAG,OAAOC,oBAAU,CAACA,UAAU;EAE3C,MAAMC,WAAW,GAAIC,IAAY,IAC/BC,2BAAiB,CAACC,IAAI,CACpB,+BAA+BP,KAAK,CAACQ,gBAAgB,cAAc,CACpE,CAACC,IAAI,CACJH,2BAAiB,CAACI,QAAQ,CAAC;IACzBC,OAAO,EAAEX,KAAK,CAACY,cAAc;IAC7BP,IAAI;IACJQ,UAAU,EAAE;GACb,CAAC,EACFf,cAAM,CAACgB,OAAO,CAACZ,MAAM,CAACa,OAAO,CAAC,EAC9BjB,cAAM,CAACgB,OAAO,CAACE,4BAAkB,CAACC,cAAc,CAACC,2BAA2B,CAAC,CAAC,EAC9EpB,cAAM,CAACqB,MAAM,EACbrB,cAAM,CAACsB,QAAQ,CAAEC,GAAG,IAClB,IAAIjC,qBAAqB,CAAC;IACxBkC,OAAO,EAAE,oCAAoCC,MAAM,CAACF,GAAG,CAAC,EAAE;IAC1DG,KAAK,EAAEH;GACR,CAAC,CACH,CACF;EAEH,OAAO7B,gBAAgB,CAACiC,EAAE,CAAC;IAAErB;EAAW,CAAE,CAAC;AAC7C,CAAC,CAAC,CACH;AAED,MAAMc,2BAA2B,gBAAGQ,cAAM,CAACC,MAAM,CAAC;EAChDC,EAAE,EAAEF,cAAM,CAACG;CACZ,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TrackerLayerMap = void 0;
|
|
7
|
+
var _effect = require("effect");
|
|
8
|
+
var _LinearSdkClient = require("./LinearSdkClient.js");
|
|
9
|
+
var _GitHubIssueTracker = require("./TaskTracker/GitHubIssueTracker.js");
|
|
10
|
+
var _LinearTracker = require("./TaskTracker/LinearTracker.js");
|
|
11
|
+
/**
|
|
12
|
+
* Dynamic layer map for selecting TaskTracker implementation at runtime
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @since 1.0.0
|
|
18
|
+
* @category layer-map
|
|
19
|
+
*/
|
|
20
|
+
class TrackerLayerMap extends /*#__PURE__*/_effect.LayerMap.Service()("TrackerLayerMap", {
|
|
21
|
+
layers: {
|
|
22
|
+
linear: /*#__PURE__*/_LinearTracker.LinearTrackerLive.pipe(/*#__PURE__*/_effect.Layer.provide(_LinearSdkClient.LinearSdkClientLive)),
|
|
23
|
+
github: _GitHubIssueTracker.GitHubIssueTrackerLive
|
|
24
|
+
}
|
|
25
|
+
}) {}
|
|
26
|
+
exports.TrackerLayerMap = TrackerLayerMap;
|
|
27
|
+
//# sourceMappingURL=TrackerLayerMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrackerLayerMap.js","names":["_effect","require","_LinearSdkClient","_GitHubIssueTracker","_LinearTracker","TrackerLayerMap","LayerMap","Service","layers","linear","LinearTrackerLive","pipe","Layer","provide","LinearSdkClientLive","github","GitHubIssueTrackerLive","exports"],"sources":["../../../src/services/TrackerLayerMap.ts"],"sourcesContent":[null],"mappings":";;;;;;AAIA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AAPA;;;;;AASA;;;;AAIM,MAAOI,eAAgB,sBAAQC,gBAAQ,CAACC,OAAO,EAAmB,CAAC,iBAAiB,EAAE;EAC1FC,MAAM,EAAE;IACNC,MAAM,eAAEC,gCAAiB,CAACC,IAAI,cAACC,aAAK,CAACC,OAAO,CAACC,oCAAmB,CAAC,CAAC;IAClEC,MAAM,EAAEC;;CAEX,CAAC;AAAAC,OAAA,CAAAZ,eAAA,GAAAA,eAAA","ignoreList":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TrackerResolverLive = exports.TrackerResolverError = exports.TrackerResolver = void 0;
|
|
7
|
+
var _effect = require("effect");
|
|
8
|
+
var _LalphConfig = require("./LalphConfig.js");
|
|
9
|
+
var _TaskTracker = require("./TaskTracker.js");
|
|
10
|
+
var _TrackerLayerMap = require("./TrackerLayerMap.js");
|
|
11
|
+
/**
|
|
12
|
+
* TrackerResolver maps repos to tracker instances based on monitor configuration
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @since 1.0.0
|
|
18
|
+
* @category errors
|
|
19
|
+
*/
|
|
20
|
+
class TrackerResolverError extends /*#__PURE__*/_effect.Data.TaggedError("TrackerResolverError") {}
|
|
21
|
+
/**
|
|
22
|
+
* @since 1.0.0
|
|
23
|
+
* @category context
|
|
24
|
+
*/
|
|
25
|
+
exports.TrackerResolverError = TrackerResolverError;
|
|
26
|
+
class TrackerResolver extends /*#__PURE__*/_effect.Context.Tag("TrackerResolver")() {}
|
|
27
|
+
/**
|
|
28
|
+
* @since 1.0.0
|
|
29
|
+
* @category layers
|
|
30
|
+
*/
|
|
31
|
+
exports.TrackerResolver = TrackerResolver;
|
|
32
|
+
const TrackerResolverLive = exports.TrackerResolverLive = /*#__PURE__*/_effect.Layer.effect(TrackerResolver, /*#__PURE__*/_effect.Effect.gen(function* () {
|
|
33
|
+
const config = yield* _LalphConfig.LalphConfig;
|
|
34
|
+
const tracker = yield* _TaskTracker.TaskTracker.pipe(_effect.Effect.provide(_TrackerLayerMap.TrackerLayerMap.get(config.issueSource)));
|
|
35
|
+
const trackerForRepo = repoFullName => repoFullName === config.repoFullName ? _effect.Effect.succeed(tracker) : _effect.Effect.fail(new TrackerResolverError({
|
|
36
|
+
message: `No tracker configured for repo: ${repoFullName}`,
|
|
37
|
+
cause: null
|
|
38
|
+
}));
|
|
39
|
+
return {
|
|
40
|
+
trackerForRepo,
|
|
41
|
+
allTrackers: [tracker],
|
|
42
|
+
allWatchedRepos: [config.repoFullName]
|
|
43
|
+
};
|
|
44
|
+
}));
|
|
45
|
+
//# sourceMappingURL=TrackerResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrackerResolver.js","names":["_effect","require","_LalphConfig","_TaskTracker","_TrackerLayerMap","TrackerResolverError","Data","TaggedError","exports","TrackerResolver","Context","Tag","TrackerResolverLive","Layer","effect","Effect","gen","config","LalphConfig","tracker","TaskTracker","pipe","provide","TrackerLayerMap","get","issueSource","trackerForRepo","repoFullName","succeed","fail","message","cause","allTrackers","allWatchedRepos"],"sources":["../../../src/services/TrackerResolver.ts"],"sourcesContent":[null],"mappings":";;;;;;AAIA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,gBAAA,GAAAH,OAAA;AARA;;;;;AAUA;;;;AAIM,MAAOI,oBAAqB,sBAAQC,YAAI,CAACC,WAAW,CAAC,sBAAsB,CAG/E;AAYF;;;;AAAAC,OAAA,CAAAH,oBAAA,GAAAA,oBAAA;AAIM,MAAOI,eAAgB,sBAAQC,eAAO,CAACC,GAAG,CAAC,iBAAiB,CAAC,EAGhE;AAEH;;;;AAAAH,OAAA,CAAAC,eAAA,GAAAA,eAAA;AAIO,MAAMG,mBAAmB,GAAAJ,OAAA,CAAAI,mBAAA,gBAAGC,aAAK,CAACC,MAAM,CAC7CL,eAAe,eACfM,cAAM,CAACC,GAAG,CAAC,aAAS;EAClB,MAAMC,MAAM,GAAG,OAAOC,wBAAW;EAEjC,MAAMC,OAAO,GAAG,OAAOC,wBAAW,CAACC,IAAI,CACrCN,cAAM,CAACO,OAAO,CAACC,gCAAe,CAACC,GAAG,CAACP,MAAM,CAACQ,WAAW,CAAC,CAAC,CACxD;EAED,MAAMC,cAAc,GAAIC,YAAoB,IAC1CA,YAAY,KAAKV,MAAM,CAACU,YAAY,GAChCZ,cAAM,CAACa,OAAO,CAACT,OAAO,CAAC,GACvBJ,cAAM,CAACc,IAAI,CACX,IAAIxB,oBAAoB,CAAC;IACvByB,OAAO,EAAE,mCAAmCH,YAAY,EAAE;IAC1DI,KAAK,EAAE;GACR,CAAC,CACH;EAEL,OAAO;IACLL,cAAc;IACdM,WAAW,EAAE,CAACb,OAAO,CAAC;IACtBc,eAAe,EAAE,CAAChB,MAAM,CAACU,YAAY;GACtC;AACH,CAAC,CAAC,CACH","ignoreList":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.MessengerAdapterError = exports.MessengerAdapter = exports.IncomingMessage = void 0;
|
|
7
|
+
var _effect = require("effect");
|
|
8
|
+
/**
|
|
9
|
+
* @since 1.0.0
|
|
10
|
+
* @category errors
|
|
11
|
+
*/
|
|
12
|
+
class MessengerAdapterError extends /*#__PURE__*/_effect.Data.TaggedError("MessengerAdapterError") {}
|
|
13
|
+
/**
|
|
14
|
+
* @since 1.0.0
|
|
15
|
+
* @category schemas
|
|
16
|
+
*/
|
|
17
|
+
exports.MessengerAdapterError = MessengerAdapterError;
|
|
18
|
+
class IncomingMessage extends /*#__PURE__*/_effect.Schema.Class("IncomingMessage")({
|
|
19
|
+
chatId: _effect.Schema.String,
|
|
20
|
+
text: _effect.Schema.String,
|
|
21
|
+
from: _effect.Schema.String
|
|
22
|
+
}) {}
|
|
23
|
+
/**
|
|
24
|
+
* @since 1.0.0
|
|
25
|
+
* @category context
|
|
26
|
+
*/
|
|
27
|
+
exports.IncomingMessage = IncomingMessage;
|
|
28
|
+
class MessengerAdapter extends /*#__PURE__*/_effect.Context.Tag("MessengerAdapter")() {}
|
|
29
|
+
exports.MessengerAdapter = MessengerAdapter;
|
|
30
|
+
//# sourceMappingURL=MessengerAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessengerAdapter.js","names":["_effect","require","MessengerAdapterError","Data","TaggedError","exports","IncomingMessage","Schema","Class","chatId","String","text","from","MessengerAdapter","Context","Tag"],"sources":["../../../../src/services/messenger/MessengerAdapter.ts"],"sourcesContent":[null],"mappings":";;;;;;AAKA,IAAAA,OAAA,GAAAC,OAAA;AAEA;;;;AAIM,MAAOC,qBAAsB,sBAAQC,YAAI,CAACC,WAAW,CAAC,uBAAuB,CAGjF;AAEF;;;;AAAAC,OAAA,CAAAH,qBAAA,GAAAA,qBAAA;AAIM,MAAOI,eAAgB,sBAAQC,cAAM,CAACC,KAAK,CAAkB,iBAAiB,CAAC,CAAC;EACpFC,MAAM,EAAEF,cAAM,CAACG,MAAM;EACrBC,IAAI,EAAEJ,cAAM,CAACG,MAAM;EACnBE,IAAI,EAAEL,cAAM,CAACG;CACd,CAAC;AAqBF;;;;AAAAL,OAAA,CAAAC,eAAA,GAAAA,eAAA;AAIM,MAAOO,gBAAiB,sBAAQC,eAAO,CAACC,GAAG,CAAC,kBAAkB,CAAC,EAGlE;AAAAV,OAAA,CAAAQ,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TelegramAdapterLive = void 0;
|
|
7
|
+
var _effect = require("effect");
|
|
8
|
+
var _telegraf = require("telegraf");
|
|
9
|
+
var _TelegramConfig = require("../TelegramConfig.js");
|
|
10
|
+
var _MessengerAdapter = require("./MessengerAdapter.js");
|
|
11
|
+
/**
|
|
12
|
+
* Telegram messenger adapter using the Telegraf library
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @since 1.0.0
|
|
18
|
+
* @category layers
|
|
19
|
+
*/
|
|
20
|
+
const TelegramAdapterLive = exports.TelegramAdapterLive = /*#__PURE__*/_effect.Layer.scoped(_MessengerAdapter.MessengerAdapter, /*#__PURE__*/_effect.Effect.gen(function* () {
|
|
21
|
+
const store = yield* _TelegramConfig.TelegramConfig;
|
|
22
|
+
const config = yield* store.get;
|
|
23
|
+
if (_effect.Option.isNone(config) || config.value.botToken === "") {
|
|
24
|
+
return yield* new _MessengerAdapter.MessengerAdapterError({
|
|
25
|
+
message: "Telegram bot token not configured. Run setup first.",
|
|
26
|
+
cause: null
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
const bot = new _telegraf.Telegraf(config.value.botToken);
|
|
30
|
+
const messageQueue = yield* _effect.Queue.unbounded();
|
|
31
|
+
const questionCounter = yield* _effect.Ref.make(0);
|
|
32
|
+
bot.action(/^q:(\d+):(.+)$/, ctx => {
|
|
33
|
+
const label = ctx.match[2] ?? "";
|
|
34
|
+
if (ctx.from != null) {
|
|
35
|
+
const msg = new _MessengerAdapter.IncomingMessage({
|
|
36
|
+
chatId: String(ctx.chat?.id ?? ""),
|
|
37
|
+
text: label,
|
|
38
|
+
from: ctx.from.username ?? ctx.from.first_name
|
|
39
|
+
});
|
|
40
|
+
_effect.Queue.unsafeOffer(messageQueue, msg);
|
|
41
|
+
}
|
|
42
|
+
_effect.Effect.runPromise(_effect.Effect.tryPromise({
|
|
43
|
+
try: () => ctx.editMessageText(`${label} ✓`),
|
|
44
|
+
catch: () => new _MessengerAdapter.MessengerAdapterError({
|
|
45
|
+
message: "Failed to edit message",
|
|
46
|
+
cause: null
|
|
47
|
+
})
|
|
48
|
+
}).pipe(_effect.Effect.orElseSucceed(() => undefined)));
|
|
49
|
+
return ctx.answerCbQuery();
|
|
50
|
+
});
|
|
51
|
+
bot.on("message", ctx => {
|
|
52
|
+
const text = "text" in ctx.message ? ctx.message.text : undefined;
|
|
53
|
+
if (text != null && ctx.from != null) {
|
|
54
|
+
const msg = new _MessengerAdapter.IncomingMessage({
|
|
55
|
+
chatId: String(ctx.chat.id),
|
|
56
|
+
text,
|
|
57
|
+
from: ctx.from.username ?? ctx.from.first_name
|
|
58
|
+
});
|
|
59
|
+
_effect.Queue.unsafeOffer(messageQueue, msg);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
yield* _effect.Effect.tryPromise({
|
|
63
|
+
try: () => bot.launch(),
|
|
64
|
+
catch: err => new _MessengerAdapter.MessengerAdapterError({
|
|
65
|
+
message: `Failed to launch Telegram bot: ${String(err)}`,
|
|
66
|
+
cause: err
|
|
67
|
+
})
|
|
68
|
+
}).pipe(_effect.Effect.fork);
|
|
69
|
+
yield* _effect.Effect.addFinalizer(() => _effect.Effect.sync(() => {
|
|
70
|
+
bot.stop("shutdown");
|
|
71
|
+
}));
|
|
72
|
+
const sendMessage = message => _effect.Effect.gen(function* () {
|
|
73
|
+
const currentConfig = yield* store.get;
|
|
74
|
+
const resolvedChatId = _effect.Option.isSome(currentConfig) ? currentConfig.value.chatId : null;
|
|
75
|
+
if (resolvedChatId === null) {
|
|
76
|
+
return yield* new _MessengerAdapter.MessengerAdapterError({
|
|
77
|
+
message: "Telegram chat ID not configured. Run setup first.",
|
|
78
|
+
cause: null
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
if (typeof message === "string") {
|
|
82
|
+
yield* _effect.Effect.tryPromise({
|
|
83
|
+
try: () => bot.telegram.sendMessage(resolvedChatId, message, {
|
|
84
|
+
parse_mode: "HTML"
|
|
85
|
+
}),
|
|
86
|
+
catch: err => new _MessengerAdapter.MessengerAdapterError({
|
|
87
|
+
message: `Failed to send Telegram message: ${String(err)}`,
|
|
88
|
+
cause: err
|
|
89
|
+
})
|
|
90
|
+
});
|
|
91
|
+
} else if (message.replyKeyboard != null && message.replyKeyboard.length > 0) {
|
|
92
|
+
const replyMarkup = _telegraf.Markup.keyboard(message.replyKeyboard.map(o => [_telegraf.Markup.button.text(o.label)])).resize();
|
|
93
|
+
yield* _effect.Effect.tryPromise({
|
|
94
|
+
try: () => bot.telegram.sendMessage(resolvedChatId, message.text, {
|
|
95
|
+
...replyMarkup,
|
|
96
|
+
parse_mode: "HTML"
|
|
97
|
+
}),
|
|
98
|
+
catch: err => new _MessengerAdapter.MessengerAdapterError({
|
|
99
|
+
message: `Failed to send Telegram message: ${String(err)}`,
|
|
100
|
+
cause: err
|
|
101
|
+
})
|
|
102
|
+
});
|
|
103
|
+
} else {
|
|
104
|
+
const qId = yield* _effect.Ref.updateAndGet(questionCounter, n => n + 1);
|
|
105
|
+
const buttons = message.options?.map(o => [_telegraf.Markup.button.callback(o.label, `q:${qId}:${o.label}`)]) ?? [];
|
|
106
|
+
const keyboard = buttons.length > 0 ? _telegraf.Markup.inlineKeyboard(buttons) : undefined;
|
|
107
|
+
yield* _effect.Effect.tryPromise({
|
|
108
|
+
try: () => bot.telegram.sendMessage(resolvedChatId, message.text, {
|
|
109
|
+
...keyboard,
|
|
110
|
+
parse_mode: "HTML"
|
|
111
|
+
}),
|
|
112
|
+
catch: err => new _MessengerAdapter.MessengerAdapterError({
|
|
113
|
+
message: `Failed to send Telegram message: ${String(err)}`,
|
|
114
|
+
cause: err
|
|
115
|
+
})
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
const incomingMessages = _effect.Stream.fromQueue(messageQueue);
|
|
120
|
+
return _MessengerAdapter.MessengerAdapter.of({
|
|
121
|
+
sendMessage,
|
|
122
|
+
incomingMessages
|
|
123
|
+
});
|
|
124
|
+
}));
|
|
125
|
+
//# sourceMappingURL=TelegramAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelegramAdapter.js","names":["_effect","require","_telegraf","_TelegramConfig","_MessengerAdapter","TelegramAdapterLive","exports","Layer","scoped","MessengerAdapter","Effect","gen","store","TelegramConfig","config","get","Option","isNone","value","botToken","MessengerAdapterError","message","cause","bot","Telegraf","messageQueue","Queue","unbounded","questionCounter","Ref","make","action","ctx","label","match","from","msg","IncomingMessage","chatId","String","chat","id","text","username","first_name","unsafeOffer","runPromise","tryPromise","try","editMessageText","catch","pipe","orElseSucceed","undefined","answerCbQuery","on","launch","err","fork","addFinalizer","sync","stop","sendMessage","currentConfig","resolvedChatId","isSome","telegram","parse_mode","replyKeyboard","length","replyMarkup","Markup","keyboard","map","o","button","resize","qId","updateAndGet","n","buttons","options","callback","inlineKeyboard","incomingMessages","Stream","fromQueue","of"],"sources":["../../../../src/services/messenger/TelegramAdapter.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,157 @@
|
|
|
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 _CredentialSchemas = require("../../schemas/CredentialSchemas.js");
|
|
9
|
+
var _TrackerSchemas = require("../../schemas/TrackerSchemas.js");
|
|
10
|
+
var _OctokitClient = require("../OctokitClient.js");
|
|
11
|
+
var _TaskTracker = require("./TaskTracker.js");
|
|
12
|
+
/**
|
|
13
|
+
* GitHub Issues implementation of TaskTracker
|
|
14
|
+
* @since 1.0.0
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const extractRepoFullName = repositoryUrl => {
|
|
18
|
+
const parts = repositoryUrl.split("/repos/");
|
|
19
|
+
return parts[1] ?? repositoryUrl;
|
|
20
|
+
};
|
|
21
|
+
const parseIssueId = issueId => {
|
|
22
|
+
const slashIdx = issueId.indexOf("/");
|
|
23
|
+
const hashIdx = issueId.indexOf("#");
|
|
24
|
+
const owner = issueId.substring(0, slashIdx);
|
|
25
|
+
const repo = issueId.substring(slashIdx + 1, hashIdx);
|
|
26
|
+
const issueNumber = issueId.substring(hashIdx + 1);
|
|
27
|
+
return {
|
|
28
|
+
owner,
|
|
29
|
+
repo,
|
|
30
|
+
issueNumber
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
const GitHubIssueTrackerLive = exports.GitHubIssueTrackerLive = /*#__PURE__*/_effect.Layer.effect(_TaskTracker.TaskTracker, /*#__PURE__*/_effect.Effect.gen(function* () {
|
|
34
|
+
const octokit = yield* _OctokitClient.OctokitClient;
|
|
35
|
+
const config = yield* _CredentialSchemas.AppRuntimeConfig;
|
|
36
|
+
const interval = _effect.Duration.seconds(config.pollIntervalSeconds);
|
|
37
|
+
const lastPollRef = yield* _effect.Ref.make(_effect.DateTime.unsafeNow());
|
|
38
|
+
const knownStatesRef = yield* _effect.Ref.make(_effect.HashMap.empty());
|
|
39
|
+
const fetchEvents = since => _effect.Effect.gen(function* () {
|
|
40
|
+
const issues = yield* octokit.listUserIssues({
|
|
41
|
+
state: "all",
|
|
42
|
+
sort: "updated",
|
|
43
|
+
since
|
|
44
|
+
}).pipe(_effect.Effect.mapError(err => new _TaskTracker.TaskTrackerError({
|
|
45
|
+
message: `GitHub API request failed: ${String(err)}`,
|
|
46
|
+
cause: err
|
|
47
|
+
})));
|
|
48
|
+
return _effect.Array.map(issues, issue => {
|
|
49
|
+
const repoFullName = extractRepoFullName(issue.repositoryUrl);
|
|
50
|
+
const trackerIssue = new _TrackerSchemas.TrackerIssue({
|
|
51
|
+
id: `${repoFullName}#${issue.number}`,
|
|
52
|
+
title: issue.title,
|
|
53
|
+
state: issue.state,
|
|
54
|
+
url: issue.htmlUrl,
|
|
55
|
+
createdAt: issue.createdAt,
|
|
56
|
+
updatedAt: issue.updatedAt
|
|
57
|
+
});
|
|
58
|
+
const action = issue.createdAt === issue.updatedAt ? "created" : "updated";
|
|
59
|
+
return {
|
|
60
|
+
action,
|
|
61
|
+
issue: trackerIssue
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
const pollCycle = _effect.Effect.gen(function* () {
|
|
66
|
+
const lastPoll = yield* _effect.Ref.get(lastPollRef);
|
|
67
|
+
const since = _effect.DateTime.formatIso(lastPoll);
|
|
68
|
+
const knownStates = yield* _effect.Ref.get(knownStatesRef);
|
|
69
|
+
yield* _effect.Ref.set(lastPollRef, _effect.DateTime.unsafeNow());
|
|
70
|
+
const rawEvents = yield* fetchEvents(since);
|
|
71
|
+
const events = [];
|
|
72
|
+
for (const raw of rawEvents) {
|
|
73
|
+
if (raw.action === "created") {
|
|
74
|
+
events.push(new _TrackerSchemas.TrackerIssueEvent({
|
|
75
|
+
action: "created",
|
|
76
|
+
issue: raw.issue
|
|
77
|
+
}));
|
|
78
|
+
yield* _effect.Ref.update(knownStatesRef, _effect.HashMap.set(raw.issue.id, raw.issue.state));
|
|
79
|
+
} else {
|
|
80
|
+
const previousState = _effect.HashMap.get(knownStates, raw.issue.id);
|
|
81
|
+
const stateChanged = _effect.Option.isNone(previousState) || previousState.value !== raw.issue.state;
|
|
82
|
+
if (stateChanged) {
|
|
83
|
+
events.push(new _TrackerSchemas.TrackerIssueEvent({
|
|
84
|
+
action: "updated",
|
|
85
|
+
issue: raw.issue,
|
|
86
|
+
previousState: _effect.Option.getOrElse(previousState, () => "Unknown")
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
yield* _effect.Ref.update(knownStatesRef, _effect.HashMap.set(raw.issue.id, raw.issue.state));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return events;
|
|
93
|
+
});
|
|
94
|
+
const emptyBatch = [];
|
|
95
|
+
const safePollCycle = pollCycle.pipe(_effect.Effect.tapError(err => _effect.Effect.logError(`GitHubIssueTracker poll cycle failed: ${err.message}`)), _effect.Effect.orElseSucceed(() => emptyBatch));
|
|
96
|
+
const eventStream = _effect.Stream.repeatEffectWithSchedule(safePollCycle, _effect.Schedule.spaced(interval)).pipe(_effect.Stream.flatMap(batch => _effect.Stream.fromIterable(batch)));
|
|
97
|
+
return _TaskTracker.TaskTracker.of({
|
|
98
|
+
events: eventStream,
|
|
99
|
+
moveToTodo: issueId => _effect.Effect.gen(function* () {
|
|
100
|
+
const {
|
|
101
|
+
issueNumber,
|
|
102
|
+
owner,
|
|
103
|
+
repo
|
|
104
|
+
} = parseIssueId(issueId);
|
|
105
|
+
const labelsToRemove = ["in-progress", "in-review"];
|
|
106
|
+
yield* _effect.Effect.forEach(labelsToRemove, label => octokit.removeIssueLabel({
|
|
107
|
+
owner,
|
|
108
|
+
repo,
|
|
109
|
+
issueNumber: Number(issueNumber),
|
|
110
|
+
label
|
|
111
|
+
}).pipe(_effect.Effect.catchTag("OctokitClientError", err => _effect.Effect.logError(err.message))));
|
|
112
|
+
}).pipe(_effect.Effect.mapError(err => new _TaskTracker.TaskTrackerError({
|
|
113
|
+
message: `GitHub API request failed: ${String(err)}`,
|
|
114
|
+
cause: err
|
|
115
|
+
}))),
|
|
116
|
+
setPriorityUrgent: issueId => _effect.Effect.gen(function* () {
|
|
117
|
+
const {
|
|
118
|
+
issueNumber,
|
|
119
|
+
owner,
|
|
120
|
+
repo
|
|
121
|
+
} = parseIssueId(issueId);
|
|
122
|
+
yield* octokit.addIssueLabels({
|
|
123
|
+
owner,
|
|
124
|
+
repo,
|
|
125
|
+
issueNumber: Number(issueNumber),
|
|
126
|
+
labels: ["urgent"]
|
|
127
|
+
}).pipe(_effect.Effect.mapError(err => new _TaskTracker.TaskTrackerError({
|
|
128
|
+
message: `GitHub API request failed: ${String(err)}`,
|
|
129
|
+
cause: err
|
|
130
|
+
})));
|
|
131
|
+
}),
|
|
132
|
+
getIssue: issueId => _effect.Effect.gen(function* () {
|
|
133
|
+
const {
|
|
134
|
+
issueNumber,
|
|
135
|
+
owner,
|
|
136
|
+
repo
|
|
137
|
+
} = parseIssueId(issueId);
|
|
138
|
+
const issue = yield* octokit.getIssue({
|
|
139
|
+
owner,
|
|
140
|
+
repo,
|
|
141
|
+
issueNumber: Number(issueNumber)
|
|
142
|
+
}).pipe(_effect.Effect.mapError(err => new _TaskTracker.TaskTrackerError({
|
|
143
|
+
message: `GitHub API request failed: ${String(err)}`,
|
|
144
|
+
cause: err
|
|
145
|
+
})));
|
|
146
|
+
return new _TrackerSchemas.TrackerIssue({
|
|
147
|
+
id: `${owner}/${repo}#${issue.number}`,
|
|
148
|
+
title: issue.title,
|
|
149
|
+
state: issue.state,
|
|
150
|
+
url: issue.htmlUrl,
|
|
151
|
+
createdAt: issue.createdAt,
|
|
152
|
+
updatedAt: issue.updatedAt
|
|
153
|
+
});
|
|
154
|
+
})
|
|
155
|
+
});
|
|
156
|
+
}));
|
|
157
|
+
//# sourceMappingURL=GitHubIssueTracker.js.map
|