@tonycasey/lisa 2.2.0 → 2.11.5
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/dist/lib/application/handlers/PromptSubmitHandler.d.ts +22 -12
- package/dist/lib/application/handlers/PromptSubmitHandler.d.ts.map +1 -1
- package/dist/lib/application/handlers/PromptSubmitHandler.js +36 -13
- package/dist/lib/application/handlers/PromptSubmitHandler.js.map +1 -1
- package/dist/lib/application/handlers/SessionStartHandler.d.ts +58 -5
- package/dist/lib/application/handlers/SessionStartHandler.d.ts.map +1 -1
- package/dist/lib/application/handlers/SessionStartHandler.js +259 -44
- package/dist/lib/application/handlers/SessionStartHandler.js.map +1 -1
- package/dist/lib/application/handlers/SessionStopHandler.d.ts +29 -5
- package/dist/lib/application/handlers/SessionStopHandler.d.ts.map +1 -1
- package/dist/lib/application/handlers/SessionStopHandler.js +83 -11
- package/dist/lib/application/handlers/SessionStopHandler.js.map +1 -1
- package/dist/lib/application/handlers/index.d.ts +1 -0
- package/dist/lib/application/handlers/index.d.ts.map +1 -1
- package/dist/lib/application/handlers/index.js +13 -1
- package/dist/lib/application/handlers/index.js.map +1 -1
- package/dist/lib/application/handlers/pr/PrAddressHandler.d.ts +103 -0
- package/dist/lib/application/handlers/pr/PrAddressHandler.d.ts.map +1 -0
- package/dist/lib/application/handlers/pr/PrAddressHandler.js +354 -0
- package/dist/lib/application/handlers/pr/PrAddressHandler.js.map +1 -0
- package/dist/lib/application/handlers/pr/PrChecksHandler.d.ts +64 -0
- package/dist/lib/application/handlers/pr/PrChecksHandler.d.ts.map +1 -0
- package/dist/lib/application/handlers/pr/PrChecksHandler.js +154 -0
- package/dist/lib/application/handlers/pr/PrChecksHandler.js.map +1 -0
- package/dist/lib/application/handlers/pr/PrCommentsHandler.d.ts +81 -0
- package/dist/lib/application/handlers/pr/PrCommentsHandler.d.ts.map +1 -0
- package/dist/lib/application/handlers/pr/PrCommentsHandler.js +184 -0
- package/dist/lib/application/handlers/pr/PrCommentsHandler.js.map +1 -0
- package/dist/lib/application/handlers/pr/PrCreateHandler.d.ts +78 -0
- package/dist/lib/application/handlers/pr/PrCreateHandler.d.ts.map +1 -0
- package/dist/lib/application/handlers/pr/PrCreateHandler.js +230 -0
- package/dist/lib/application/handlers/pr/PrCreateHandler.js.map +1 -0
- package/dist/lib/application/handlers/pr/PrLinkHandler.d.ts +75 -0
- package/dist/lib/application/handlers/pr/PrLinkHandler.d.ts.map +1 -0
- package/dist/lib/application/handlers/pr/PrLinkHandler.js +151 -0
- package/dist/lib/application/handlers/pr/PrLinkHandler.js.map +1 -0
- package/dist/lib/application/handlers/pr/PrPollHandler.d.ts +161 -0
- package/dist/lib/application/handlers/pr/PrPollHandler.d.ts.map +1 -0
- package/dist/lib/application/handlers/pr/PrPollHandler.js +674 -0
- package/dist/lib/application/handlers/pr/PrPollHandler.js.map +1 -0
- package/dist/lib/application/handlers/pr/PrRememberHandler.d.ts +55 -0
- package/dist/lib/application/handlers/pr/PrRememberHandler.d.ts.map +1 -0
- package/dist/lib/application/handlers/pr/PrRememberHandler.js +75 -0
- package/dist/lib/application/handlers/pr/PrRememberHandler.js.map +1 -0
- package/dist/lib/application/handlers/pr/PrReviewHandler.d.ts +103 -0
- package/dist/lib/application/handlers/pr/PrReviewHandler.d.ts.map +1 -0
- package/dist/lib/application/handlers/pr/PrReviewHandler.js +334 -0
- package/dist/lib/application/handlers/pr/PrReviewHandler.js.map +1 -0
- package/dist/lib/application/handlers/pr/PrStatusHandler.d.ts +150 -0
- package/dist/lib/application/handlers/pr/PrStatusHandler.d.ts.map +1 -0
- package/dist/lib/application/handlers/pr/PrStatusHandler.js +389 -0
- package/dist/lib/application/handlers/pr/PrStatusHandler.js.map +1 -0
- package/dist/lib/application/handlers/pr/PrWatchHandler.d.ts +77 -0
- package/dist/lib/application/handlers/pr/PrWatchHandler.d.ts.map +1 -0
- package/dist/lib/application/handlers/pr/PrWatchHandler.js +174 -0
- package/dist/lib/application/handlers/pr/PrWatchHandler.js.map +1 -0
- package/dist/lib/application/handlers/pr/index.d.ts +25 -0
- package/dist/lib/application/handlers/pr/index.d.ts.map +1 -0
- package/dist/lib/application/handlers/pr/index.js +38 -0
- package/dist/lib/application/handlers/pr/index.js.map +1 -0
- package/dist/lib/application/interfaces/index.d.ts +1 -0
- package/dist/lib/application/interfaces/index.d.ts.map +1 -1
- package/dist/lib/application/mediator/IMediator.d.ts +73 -0
- package/dist/lib/application/mediator/IMediator.d.ts.map +1 -0
- package/dist/lib/application/mediator/IMediator.js +12 -0
- package/dist/lib/application/mediator/IMediator.js.map +1 -0
- package/dist/lib/application/mediator/Mediator.d.ts +29 -0
- package/dist/lib/application/mediator/Mediator.d.ts.map +1 -0
- package/dist/lib/application/mediator/Mediator.js +53 -0
- package/dist/lib/application/mediator/Mediator.js.map +1 -0
- package/dist/lib/application/mediator/index.d.ts +10 -0
- package/dist/lib/application/mediator/index.d.ts.map +1 -0
- package/dist/lib/application/mediator/index.js +18 -0
- package/dist/lib/application/mediator/index.js.map +1 -0
- package/dist/lib/application/mediator/requests/PromptSubmitRequest.d.ts +60 -0
- package/dist/lib/application/mediator/requests/PromptSubmitRequest.d.ts.map +1 -0
- package/dist/lib/application/mediator/requests/PromptSubmitRequest.js +35 -0
- package/dist/lib/application/mediator/requests/PromptSubmitRequest.js.map +1 -0
- package/dist/lib/application/mediator/requests/SessionStartRequest.d.ts +36 -0
- package/dist/lib/application/mediator/requests/SessionStartRequest.d.ts.map +1 -0
- package/dist/lib/application/mediator/requests/SessionStartRequest.js +32 -0
- package/dist/lib/application/mediator/requests/SessionStartRequest.js.map +1 -0
- package/dist/lib/application/mediator/requests/SessionStopRequest.d.ts +67 -0
- package/dist/lib/application/mediator/requests/SessionStopRequest.d.ts.map +1 -0
- package/dist/lib/application/mediator/requests/SessionStopRequest.js +35 -0
- package/dist/lib/application/mediator/requests/SessionStopRequest.js.map +1 -0
- package/dist/lib/application/mediator/requests/index.d.ts +9 -0
- package/dist/lib/application/mediator/requests/index.d.ts.map +1 -0
- package/dist/lib/application/mediator/requests/index.js +13 -0
- package/dist/lib/application/mediator/requests/index.js.map +1 -0
- package/dist/lib/cli.d.ts +2 -44
- package/dist/lib/cli.d.ts.map +1 -1
- package/dist/lib/cli.js +1380 -597
- package/dist/lib/cli.js.map +1 -1
- package/dist/lib/commands/docker.d.ts +20 -0
- package/dist/lib/commands/docker.d.ts.map +1 -0
- package/dist/lib/commands/docker.js +27 -0
- package/dist/lib/commands/docker.js.map +1 -0
- package/dist/lib/commands/doctor.d.ts +94 -0
- package/dist/lib/commands/doctor.d.ts.map +1 -0
- package/dist/lib/commands/doctor.js +716 -0
- package/dist/lib/commands/doctor.js.map +1 -0
- package/dist/lib/commands/index.d.ts +10 -0
- package/dist/lib/commands/index.d.ts.map +1 -0
- package/dist/lib/commands/index.js +31 -0
- package/dist/lib/commands/index.js.map +1 -0
- package/dist/lib/commands/init.d.ts +37 -0
- package/dist/lib/commands/init.d.ts.map +1 -0
- package/dist/lib/commands/init.js +589 -0
- package/dist/lib/commands/init.js.map +1 -0
- package/dist/lib/commands/shared/constants.d.ts +27 -0
- package/dist/lib/commands/shared/constants.d.ts.map +1 -0
- package/dist/lib/commands/shared/constants.js +46 -0
- package/dist/lib/commands/shared/constants.js.map +1 -0
- package/dist/lib/commands/shared/index.d.ts +5 -0
- package/dist/lib/commands/shared/index.d.ts.map +1 -0
- package/dist/lib/commands/shared/index.js +15 -0
- package/dist/lib/commands/shared/index.js.map +1 -0
- package/dist/lib/domain/index.d.ts +4 -2
- package/dist/lib/domain/index.d.ts.map +1 -1
- package/dist/lib/domain/index.js +5 -2
- package/dist/lib/domain/index.js.map +1 -1
- package/dist/lib/domain/interfaces/ICronService.d.ts +100 -0
- package/dist/lib/domain/interfaces/ICronService.d.ts.map +1 -0
- package/dist/lib/domain/interfaces/ICronService.js +9 -0
- package/dist/lib/domain/interfaces/ICronService.js.map +1 -0
- package/dist/lib/domain/interfaces/ILabelInference.d.ts +62 -0
- package/dist/lib/domain/interfaces/ILabelInference.d.ts.map +1 -0
- package/dist/lib/domain/interfaces/ILabelInference.js +11 -0
- package/dist/lib/domain/interfaces/ILabelInference.js.map +1 -0
- package/dist/lib/domain/interfaces/ILisaServices.d.ts +6 -0
- package/dist/lib/domain/interfaces/ILisaServices.d.ts.map +1 -1
- package/dist/lib/domain/interfaces/IMcpClient.d.ts +15 -2
- package/dist/lib/domain/interfaces/IMcpClient.d.ts.map +1 -1
- package/dist/lib/domain/interfaces/IMemoryService.d.ts +11 -1
- package/dist/lib/domain/interfaces/IMemoryService.d.ts.map +1 -1
- package/dist/lib/domain/interfaces/INotificationService.d.ts +81 -0
- package/dist/lib/domain/interfaces/INotificationService.d.ts.map +1 -0
- package/dist/lib/domain/interfaces/INotificationService.js +9 -0
- package/dist/lib/domain/interfaces/INotificationService.js.map +1 -0
- package/dist/lib/domain/interfaces/ISessionCaptureService.d.ts +2 -1
- package/dist/lib/domain/interfaces/ISessionCaptureService.d.ts.map +1 -1
- package/dist/lib/domain/interfaces/IStructuredLog.d.ts +162 -0
- package/dist/lib/domain/interfaces/IStructuredLog.d.ts.map +1 -0
- package/dist/lib/domain/interfaces/IStructuredLog.js +85 -0
- package/dist/lib/domain/interfaces/IStructuredLog.js.map +1 -0
- package/dist/lib/domain/interfaces/dal/IGithubClient.d.ts +42 -0
- package/dist/lib/domain/interfaces/dal/IGithubClient.d.ts.map +1 -0
- package/dist/lib/domain/interfaces/dal/IGithubClient.js +12 -0
- package/dist/lib/domain/interfaces/dal/IGithubClient.js.map +1 -0
- package/dist/lib/domain/interfaces/dal/IPullRequestRepository.d.ts +124 -0
- package/dist/lib/domain/interfaces/dal/IPullRequestRepository.d.ts.map +1 -0
- package/dist/lib/domain/interfaces/dal/IPullRequestRepository.js +13 -0
- package/dist/lib/domain/interfaces/dal/IPullRequestRepository.js.map +1 -0
- package/dist/lib/domain/interfaces/dal/index.d.ts +2 -0
- package/dist/lib/domain/interfaces/dal/index.d.ts.map +1 -1
- package/dist/lib/domain/interfaces/dal/index.js.map +1 -1
- package/dist/lib/domain/interfaces/index.d.ts +5 -1
- package/dist/lib/domain/interfaces/index.d.ts.map +1 -1
- package/dist/lib/domain/interfaces/index.js +6 -0
- package/dist/lib/domain/interfaces/index.js.map +1 -1
- package/dist/lib/domain/interfaces/types/IPullRequest.d.ts +120 -0
- package/dist/lib/domain/interfaces/types/IPullRequest.d.ts.map +1 -0
- package/dist/lib/domain/interfaces/types/IPullRequest.js +42 -0
- package/dist/lib/domain/interfaces/types/IPullRequest.js.map +1 -0
- package/dist/lib/domain/interfaces/types/ITask.d.ts +16 -0
- package/dist/lib/domain/interfaces/types/ITask.d.ts.map +1 -1
- package/dist/lib/domain/interfaces/types/ITask.js.map +1 -1
- package/dist/lib/domain/interfaces/types/index.d.ts +1 -0
- package/dist/lib/domain/interfaces/types/index.d.ts.map +1 -1
- package/dist/lib/domain/interfaces/types/index.js +4 -1
- package/dist/lib/domain/interfaces/types/index.js.map +1 -1
- package/dist/lib/domain/utils/cancellation.d.ts +111 -0
- package/dist/lib/domain/utils/cancellation.d.ts.map +1 -0
- package/dist/lib/domain/utils/cancellation.js +168 -0
- package/dist/lib/domain/utils/cancellation.js.map +1 -0
- package/dist/lib/domain/utils/index.d.ts +8 -0
- package/dist/lib/domain/utils/index.d.ts.map +1 -0
- package/dist/lib/domain/utils/index.js +16 -0
- package/dist/lib/domain/utils/index.js.map +1 -0
- package/dist/lib/infrastructure/adapters/claude/session-start.d.ts +1 -1
- package/dist/lib/infrastructure/adapters/claude/session-start.js +9 -11
- package/dist/lib/infrastructure/adapters/claude/session-start.js.map +1 -1
- package/dist/lib/infrastructure/adapters/claude/session-stop.d.ts +1 -5
- package/dist/lib/infrastructure/adapters/claude/session-stop.d.ts.map +1 -1
- package/dist/lib/infrastructure/adapters/claude/session-stop.js +12 -15
- package/dist/lib/infrastructure/adapters/claude/session-stop.js.map +1 -1
- package/dist/lib/infrastructure/adapters/claude/user-prompt-submit.d.ts +1 -1
- package/dist/lib/infrastructure/adapters/claude/user-prompt-submit.js +9 -11
- package/dist/lib/infrastructure/adapters/claude/user-prompt-submit.js.map +1 -1
- package/dist/lib/infrastructure/adapters/opencode/plugin.d.ts +2 -2
- package/dist/lib/infrastructure/adapters/opencode/plugin.d.ts.map +1 -1
- package/dist/lib/infrastructure/adapters/opencode/plugin.js +16 -21
- package/dist/lib/infrastructure/adapters/opencode/plugin.js.map +1 -1
- package/dist/lib/infrastructure/cli/index.d.ts +8 -0
- package/dist/lib/infrastructure/cli/index.d.ts.map +1 -0
- package/dist/lib/infrastructure/cli/index.js +15 -0
- package/dist/lib/infrastructure/cli/index.js.map +1 -0
- package/dist/lib/infrastructure/cli/io.d.ts +91 -0
- package/dist/lib/infrastructure/cli/io.d.ts.map +1 -0
- package/dist/lib/infrastructure/cli/io.js +128 -0
- package/dist/lib/infrastructure/cli/io.js.map +1 -0
- package/dist/lib/infrastructure/cron/CronService.d.ts +87 -0
- package/dist/lib/infrastructure/cron/CronService.d.ts.map +1 -0
- package/dist/lib/infrastructure/cron/CronService.js +571 -0
- package/dist/lib/infrastructure/cron/CronService.js.map +1 -0
- package/dist/lib/infrastructure/cron/index.d.ts +5 -0
- package/dist/lib/infrastructure/cron/index.d.ts.map +1 -0
- package/dist/lib/infrastructure/cron/index.js +10 -0
- package/dist/lib/infrastructure/cron/index.js.map +1 -0
- package/dist/lib/infrastructure/dal/connections/McpConnectionManager.js +1 -1
- package/dist/lib/infrastructure/dal/connections/McpConnectionManager.js.map +1 -1
- package/dist/lib/infrastructure/dal/index.d.ts +1 -1
- package/dist/lib/infrastructure/dal/index.d.ts.map +1 -1
- package/dist/lib/infrastructure/dal/index.js +2 -1
- package/dist/lib/infrastructure/dal/index.js.map +1 -1
- package/dist/lib/infrastructure/dal/repositories/index.d.ts +1 -1
- package/dist/lib/infrastructure/dal/repositories/index.d.ts.map +1 -1
- package/dist/lib/infrastructure/dal/repositories/index.js +3 -2
- package/dist/lib/infrastructure/dal/repositories/index.js.map +1 -1
- package/dist/lib/infrastructure/dal/repositories/mcp/McpTaskRepository.d.ts.map +1 -1
- package/dist/lib/infrastructure/dal/repositories/mcp/McpTaskRepository.js +6 -2
- package/dist/lib/infrastructure/dal/repositories/mcp/McpTaskRepository.js.map +1 -1
- package/dist/lib/infrastructure/dal/repositories/neo4j/Neo4jPullRequestRepository.d.ts +54 -0
- package/dist/lib/infrastructure/dal/repositories/neo4j/Neo4jPullRequestRepository.d.ts.map +1 -0
- package/dist/lib/infrastructure/dal/repositories/neo4j/Neo4jPullRequestRepository.js +561 -0
- package/dist/lib/infrastructure/dal/repositories/neo4j/Neo4jPullRequestRepository.js.map +1 -0
- package/dist/lib/infrastructure/dal/repositories/neo4j/Neo4jTaskRepository.d.ts +5 -2
- package/dist/lib/infrastructure/dal/repositories/neo4j/Neo4jTaskRepository.d.ts.map +1 -1
- package/dist/lib/infrastructure/dal/repositories/neo4j/Neo4jTaskRepository.js +78 -45
- package/dist/lib/infrastructure/dal/repositories/neo4j/Neo4jTaskRepository.js.map +1 -1
- package/dist/lib/infrastructure/dal/repositories/neo4j/index.d.ts +1 -0
- package/dist/lib/infrastructure/dal/repositories/neo4j/index.d.ts.map +1 -1
- package/dist/lib/infrastructure/dal/repositories/neo4j/index.js +3 -1
- package/dist/lib/infrastructure/dal/repositories/neo4j/index.js.map +1 -1
- package/dist/lib/infrastructure/dal/repositories/zep/ZepTaskRepository.d.ts.map +1 -1
- package/dist/lib/infrastructure/dal/repositories/zep/ZepTaskRepository.js +6 -2
- package/dist/lib/infrastructure/dal/repositories/zep/ZepTaskRepository.js.map +1 -1
- package/dist/lib/infrastructure/di/Container.d.ts +72 -0
- package/dist/lib/infrastructure/di/Container.d.ts.map +1 -0
- package/dist/lib/infrastructure/di/Container.js +182 -0
- package/dist/lib/infrastructure/di/Container.js.map +1 -0
- package/dist/lib/infrastructure/di/IContainer.d.ts +87 -0
- package/dist/lib/infrastructure/di/IContainer.d.ts.map +1 -0
- package/dist/lib/infrastructure/di/IContainer.js +11 -0
- package/dist/lib/infrastructure/di/IContainer.js.map +1 -0
- package/dist/lib/infrastructure/di/ServiceFactory.d.ts +6 -0
- package/dist/lib/infrastructure/di/ServiceFactory.d.ts.map +1 -1
- package/dist/lib/infrastructure/di/ServiceFactory.js +66 -0
- package/dist/lib/infrastructure/di/ServiceFactory.js.map +1 -1
- package/dist/lib/infrastructure/di/bootstrap.d.ts +43 -0
- package/dist/lib/infrastructure/di/bootstrap.d.ts.map +1 -0
- package/dist/lib/infrastructure/di/bootstrap.js +272 -0
- package/dist/lib/infrastructure/di/bootstrap.js.map +1 -0
- package/dist/lib/infrastructure/di/index.d.ts +6 -0
- package/dist/lib/infrastructure/di/index.d.ts.map +1 -1
- package/dist/lib/infrastructure/di/index.js +15 -1
- package/dist/lib/infrastructure/di/index.js.map +1 -1
- package/dist/lib/infrastructure/di/tokens.d.ts +70 -0
- package/dist/lib/infrastructure/di/tokens.d.ts.map +1 -0
- package/dist/lib/infrastructure/di/tokens.js +58 -0
- package/dist/lib/infrastructure/di/tokens.js.map +1 -0
- package/dist/lib/infrastructure/github/GithubClient.d.ts +129 -0
- package/dist/lib/infrastructure/github/GithubClient.d.ts.map +1 -0
- package/dist/lib/infrastructure/github/GithubClient.js +549 -0
- package/dist/lib/infrastructure/github/GithubClient.js.map +1 -0
- package/dist/lib/infrastructure/github/index.d.ts +8 -0
- package/dist/lib/infrastructure/github/index.d.ts.map +1 -0
- package/dist/lib/infrastructure/github/index.js +13 -0
- package/dist/lib/infrastructure/github/index.js.map +1 -0
- package/dist/lib/infrastructure/github/types.d.ts +145 -0
- package/dist/lib/infrastructure/github/types.d.ts.map +1 -0
- package/dist/lib/infrastructure/github/types.js +25 -0
- package/dist/lib/infrastructure/github/types.js.map +1 -0
- package/dist/lib/infrastructure/index.d.ts +4 -0
- package/dist/lib/infrastructure/index.d.ts.map +1 -1
- package/dist/lib/infrastructure/index.js +8 -0
- package/dist/lib/infrastructure/index.js.map +1 -1
- package/dist/lib/infrastructure/logging/Logger.d.ts +51 -4
- package/dist/lib/infrastructure/logging/Logger.d.ts.map +1 -1
- package/dist/lib/infrastructure/logging/Logger.js +127 -2
- package/dist/lib/infrastructure/logging/Logger.js.map +1 -1
- package/dist/lib/infrastructure/mcp/McpClient.d.ts +36 -1
- package/dist/lib/infrastructure/mcp/McpClient.d.ts.map +1 -1
- package/dist/lib/infrastructure/mcp/McpClient.js +68 -2
- package/dist/lib/infrastructure/mcp/McpClient.js.map +1 -1
- package/dist/lib/infrastructure/notifications/NotificationService.d.ts +90 -0
- package/dist/lib/infrastructure/notifications/NotificationService.d.ts.map +1 -0
- package/dist/lib/infrastructure/notifications/NotificationService.js +445 -0
- package/dist/lib/infrastructure/notifications/NotificationService.js.map +1 -0
- package/dist/lib/infrastructure/notifications/index.d.ts +7 -0
- package/dist/lib/infrastructure/notifications/index.d.ts.map +1 -0
- package/dist/lib/infrastructure/notifications/index.js +12 -0
- package/dist/lib/infrastructure/notifications/index.js.map +1 -0
- package/dist/lib/infrastructure/services/LabelInferenceService.d.ts +33 -0
- package/dist/lib/infrastructure/services/LabelInferenceService.d.ts.map +1 -0
- package/dist/lib/infrastructure/services/LabelInferenceService.js +225 -0
- package/dist/lib/infrastructure/services/LabelInferenceService.js.map +1 -0
- package/dist/lib/infrastructure/services/MemoryService.d.ts +23 -2
- package/dist/lib/infrastructure/services/MemoryService.d.ts.map +1 -1
- package/dist/lib/infrastructure/services/MemoryService.js +150 -55
- package/dist/lib/infrastructure/services/MemoryService.js.map +1 -1
- package/dist/lib/infrastructure/services/SessionCaptureService.d.ts +74 -20
- package/dist/lib/infrastructure/services/SessionCaptureService.d.ts.map +1 -1
- package/dist/lib/infrastructure/services/SessionCaptureService.js +331 -22
- package/dist/lib/infrastructure/services/SessionCaptureService.js.map +1 -1
- package/dist/lib/infrastructure/services/index.d.ts +1 -0
- package/dist/lib/infrastructure/services/index.d.ts.map +1 -1
- package/dist/lib/infrastructure/services/index.js +4 -1
- package/dist/lib/infrastructure/services/index.js.map +1 -1
- package/dist/lib/infrastructure/utils/index.d.ts +10 -0
- package/dist/lib/infrastructure/utils/index.d.ts.map +1 -0
- package/dist/lib/infrastructure/utils/index.js +26 -0
- package/dist/lib/infrastructure/utils/index.js.map +1 -0
- package/dist/lib/skills/common/type-mappings.d.ts.map +1 -1
- package/dist/lib/skills/common/type-mappings.js +6 -0
- package/dist/lib/skills/common/type-mappings.js.map +1 -1
- package/dist/lib/skills/github/github.d.ts +27 -0
- package/dist/lib/skills/github/github.d.ts.map +1 -0
- package/dist/lib/skills/github/github.js +408 -0
- package/dist/lib/skills/github/github.js.map +1 -0
- package/dist/lib/skills/memory/memory.js +3 -1
- package/dist/lib/skills/memory/memory.js.map +1 -1
- package/dist/lib/skills/shared/clients/GhCliClient.d.ts +17 -0
- package/dist/lib/skills/shared/clients/GhCliClient.d.ts.map +1 -0
- package/dist/lib/skills/shared/clients/GhCliClient.js +244 -0
- package/dist/lib/skills/shared/clients/GhCliClient.js.map +1 -0
- package/dist/lib/skills/shared/clients/McpClient.d.ts +12 -0
- package/dist/lib/skills/shared/clients/McpClient.d.ts.map +1 -1
- package/dist/lib/skills/shared/clients/McpClient.js +121 -76
- package/dist/lib/skills/shared/clients/McpClient.js.map +1 -1
- package/dist/lib/skills/shared/clients/Neo4jClient.d.ts.map +1 -1
- package/dist/lib/skills/shared/clients/Neo4jClient.js +12 -1
- package/dist/lib/skills/shared/clients/Neo4jClient.js.map +1 -1
- package/dist/lib/skills/shared/clients/index.d.ts +1 -0
- package/dist/lib/skills/shared/clients/index.d.ts.map +1 -1
- package/dist/lib/skills/shared/clients/index.js +4 -1
- package/dist/lib/skills/shared/clients/index.js.map +1 -1
- package/dist/lib/skills/shared/clients/interfaces/IGhCliClient.d.ts +56 -0
- package/dist/lib/skills/shared/clients/interfaces/IGhCliClient.d.ts.map +1 -0
- package/dist/lib/skills/shared/clients/interfaces/IGhCliClient.js +7 -0
- package/dist/lib/skills/shared/clients/interfaces/IGhCliClient.js.map +1 -0
- package/dist/lib/skills/shared/clients/interfaces/IZepClient.d.ts +7 -1
- package/dist/lib/skills/shared/clients/interfaces/IZepClient.d.ts.map +1 -1
- package/dist/lib/skills/shared/clients/interfaces/index.d.ts +1 -0
- package/dist/lib/skills/shared/clients/interfaces/index.d.ts.map +1 -1
- package/dist/lib/skills/shared/clients/interfaces/index.js +1 -0
- package/dist/lib/skills/shared/clients/interfaces/index.js.map +1 -1
- package/dist/lib/skills/shared/services/GitHubService.d.ts +169 -0
- package/dist/lib/skills/shared/services/GitHubService.d.ts.map +1 -0
- package/dist/lib/skills/shared/services/GitHubService.js +493 -0
- package/dist/lib/skills/shared/services/GitHubService.js.map +1 -0
- package/dist/lib/skills/shared/services/GitHubSyncService.d.ts +124 -0
- package/dist/lib/skills/shared/services/GitHubSyncService.d.ts.map +1 -0
- package/dist/lib/skills/shared/services/GitHubSyncService.js +412 -0
- package/dist/lib/skills/shared/services/GitHubSyncService.js.map +1 -0
- package/dist/lib/skills/shared/services/MemoryCliService.d.ts +2 -0
- package/dist/lib/skills/shared/services/MemoryCliService.d.ts.map +1 -1
- package/dist/lib/skills/shared/services/MemoryCliService.js +19 -2
- package/dist/lib/skills/shared/services/MemoryCliService.js.map +1 -1
- package/dist/lib/skills/shared/services/MemoryService.d.ts.map +1 -1
- package/dist/lib/skills/shared/services/MemoryService.js +26 -7
- package/dist/lib/skills/shared/services/MemoryService.js.map +1 -1
- package/dist/lib/skills/shared/services/TaskCliService.d.ts +6 -2
- package/dist/lib/skills/shared/services/TaskCliService.d.ts.map +1 -1
- package/dist/lib/skills/shared/services/TaskCliService.js +108 -7
- package/dist/lib/skills/shared/services/TaskCliService.js.map +1 -1
- package/dist/lib/skills/shared/services/TaskService.d.ts.map +1 -1
- package/dist/lib/skills/shared/services/TaskService.js +272 -42
- package/dist/lib/skills/shared/services/TaskService.js.map +1 -1
- package/dist/lib/skills/shared/services/index.d.ts +2 -0
- package/dist/lib/skills/shared/services/index.d.ts.map +1 -1
- package/dist/lib/skills/shared/services/index.js +7 -1
- package/dist/lib/skills/shared/services/index.js.map +1 -1
- package/dist/lib/skills/shared/services/interfaces/IMemoryService.d.ts +9 -1
- package/dist/lib/skills/shared/services/interfaces/IMemoryService.d.ts.map +1 -1
- package/dist/lib/skills/shared/services/interfaces/ITaskService.d.ts +65 -2
- package/dist/lib/skills/shared/services/interfaces/ITaskService.d.ts.map +1 -1
- package/dist/lib/skills/shared/utils/index.d.ts +1 -0
- package/dist/lib/skills/shared/utils/index.d.ts.map +1 -1
- package/dist/lib/skills/shared/utils/index.js +9 -1
- package/dist/lib/skills/shared/utils/index.js.map +1 -1
- package/dist/lib/skills/shared/utils/issue-refs.d.ts +127 -0
- package/dist/lib/skills/shared/utils/issue-refs.d.ts.map +1 -0
- package/dist/lib/skills/shared/utils/issue-refs.js +179 -0
- package/dist/lib/skills/shared/utils/issue-refs.js.map +1 -0
- package/dist/lib/skills/tasks/tasks.d.ts +5 -2
- package/dist/lib/skills/tasks/tasks.d.ts.map +1 -1
- package/dist/lib/skills/tasks/tasks.js +10 -3
- package/dist/lib/skills/tasks/tasks.js.map +1 -1
- package/dist/lib/utils/dateParser.d.ts +50 -0
- package/dist/lib/utils/dateParser.d.ts.map +1 -0
- package/dist/lib/utils/dateParser.js +152 -0
- package/dist/lib/utils/dateParser.js.map +1 -0
- package/dist/lib/utils/index.d.ts +5 -0
- package/dist/lib/utils/index.d.ts.map +1 -0
- package/dist/lib/utils/index.js +14 -0
- package/dist/lib/utils/index.js.map +1 -0
- package/dist/opencode/lisa.js +8627 -1312
- package/dist/package.json +1 -1
- package/dist/project/.lisa/assets/lisa-toast.png +0 -0
- package/dist/project/.lisa/rules/shared/git-rules.md +160 -47
- package/dist/project/.lisa/rules/shared/memory-rules.md +125 -0
- package/dist/project/.lisa/rules/shared/task-rules.md +209 -0
- package/dist/project/.lisa/skills/github/SKILL.md +415 -0
- package/dist/project/.lisa/skills/lisa/SKILL.md +22 -0
- package/dist/project/.lisa/skills/memory/SKILL.md +3 -2
- package/dist/project/.lisa/skills/pr/SKILL.md +520 -0
- package/package.json +6 -5
- package/dist/hooks/session-start.js +0 -5763
- package/dist/hooks/session-stop.js +0 -5348
- package/dist/hooks/user-prompt-submit.js +0 -5406
- package/dist/project/.claude/config.js +0 -40
|
@@ -5,30 +5,102 @@ const domain_1 = require("../../domain");
|
|
|
5
5
|
/**
|
|
6
6
|
* Handler for session stop events.
|
|
7
7
|
* Captures session work and saves to memory.
|
|
8
|
+
*
|
|
9
|
+
* Implements IRequestHandler for use with the Mediator pattern.
|
|
8
10
|
*/
|
|
9
11
|
class SessionStopHandler {
|
|
10
|
-
constructor(
|
|
11
|
-
|
|
12
|
+
constructor(contextOrServices, memory, sessionCapture, events, logger, tasks) {
|
|
13
|
+
if ('context' in contextOrServices && 'memory' in contextOrServices) {
|
|
14
|
+
const services = contextOrServices;
|
|
15
|
+
this.context = services.context;
|
|
16
|
+
this.memory = services.memory;
|
|
17
|
+
this.tasks = services.tasks;
|
|
18
|
+
this.sessionCapture = services.sessionCapture;
|
|
19
|
+
this.events = services.events;
|
|
20
|
+
this.logger = services.logger;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
this.context = contextOrServices;
|
|
24
|
+
this.memory = memory;
|
|
25
|
+
this.sessionCapture = sessionCapture;
|
|
26
|
+
this.events = events;
|
|
27
|
+
this.logger = logger;
|
|
28
|
+
this.tasks = tasks;
|
|
29
|
+
}
|
|
12
30
|
}
|
|
13
31
|
/**
|
|
14
|
-
* Handle a session stop
|
|
32
|
+
* Handle a session stop request.
|
|
15
33
|
* Captures work from the session and saves to memory.
|
|
16
34
|
*/
|
|
17
|
-
async handle(
|
|
18
|
-
const { context, memory, sessionCapture, events } = this.services;
|
|
35
|
+
async handle(request) {
|
|
19
36
|
// Delegate fact capture to dedicated service
|
|
20
|
-
const captured = await sessionCapture.captureSessionWork(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
37
|
+
const captured = await this.sessionCapture.captureSessionWork(request.sessionId, request.transcriptPath);
|
|
38
|
+
// Generate suggestions based on current state
|
|
39
|
+
const suggestions = await this.generateSuggestions();
|
|
40
|
+
if (captured.facts.length === 0) {
|
|
41
|
+
return {
|
|
42
|
+
message: 'No significant work to capture.',
|
|
43
|
+
factsCaptured: 0,
|
|
44
|
+
skipped: true,
|
|
45
|
+
skipReason: 'No facts captured from session',
|
|
46
|
+
suggestions: suggestions.length > 0 ? suggestions : undefined,
|
|
47
|
+
};
|
|
24
48
|
}
|
|
49
|
+
// Save captured facts to memory
|
|
50
|
+
await this.memory.saveMemory(this.context.groupId, captured.facts);
|
|
25
51
|
// Emit internal event for any listeners
|
|
26
|
-
await events.emit({
|
|
52
|
+
await this.events.emit({
|
|
27
53
|
type: 'memory:save',
|
|
28
54
|
facts: captured.facts,
|
|
29
|
-
groupId: context.groupId,
|
|
55
|
+
groupId: this.context.groupId,
|
|
30
56
|
timestamp: (0, domain_1.toISOTimestamp)(),
|
|
31
57
|
});
|
|
58
|
+
return {
|
|
59
|
+
message: `Captured ${captured.facts.length} fact(s) from session.`,
|
|
60
|
+
factsCaptured: captured.facts.length,
|
|
61
|
+
skipped: false,
|
|
62
|
+
suggestions: suggestions.length > 0 ? suggestions : undefined,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Generate suggestions based on current tasks and state.
|
|
67
|
+
* Suggests actions like syncing unlinked tasks to GitHub.
|
|
68
|
+
*/
|
|
69
|
+
async generateSuggestions() {
|
|
70
|
+
const suggestions = [];
|
|
71
|
+
if (!this.tasks) {
|
|
72
|
+
return suggestions;
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
// Get current tasks
|
|
76
|
+
const tasks = await this.tasks.getTasksSimple([this.context.groupId]);
|
|
77
|
+
// Count incomplete tasks without external links
|
|
78
|
+
const unlinkedIncompleteTasks = tasks.filter((t) => t.status !== 'done' && t.status !== 'closed' && !t.externalLink);
|
|
79
|
+
if (unlinkedIncompleteTasks.length > 0) {
|
|
80
|
+
suggestions.push({
|
|
81
|
+
action: 'sync-github-export',
|
|
82
|
+
message: `${unlinkedIncompleteTasks.length} incomplete task(s) could be tracked as GitHub issues`,
|
|
83
|
+
command: 'lisa github sync --export',
|
|
84
|
+
count: unlinkedIncompleteTasks.length,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
// Count tasks with external links that might need sync
|
|
88
|
+
const linkedTasks = tasks.filter((t) => t.externalLink?.source === 'github');
|
|
89
|
+
if (linkedTasks.length > 0) {
|
|
90
|
+
// Suggest sync to keep status in sync
|
|
91
|
+
suggestions.push({
|
|
92
|
+
action: 'sync-github-bidirectional',
|
|
93
|
+
message: `${linkedTasks.length} task(s) linked to GitHub - sync to update status`,
|
|
94
|
+
command: 'lisa github sync',
|
|
95
|
+
count: linkedTasks.length,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
// Don't fail session stop if suggestions fail
|
|
101
|
+
this.logger?.debug?.('Failed to generate suggestions', { error });
|
|
102
|
+
}
|
|
103
|
+
return suggestions;
|
|
32
104
|
}
|
|
33
105
|
}
|
|
34
106
|
exports.SessionStopHandler = SessionStopHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionStopHandler.js","sourceRoot":"","sources":["../../../../src/lib/application/handlers/SessionStopHandler.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"SessionStopHandler.js","sourceRoot":"","sources":["../../../../src/lib/application/handlers/SessionStopHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,4 +5,5 @@
|
|
|
5
5
|
export { SessionStartHandler } from './SessionStartHandler';
|
|
6
6
|
export { SessionStopHandler } from './SessionStopHandler';
|
|
7
7
|
export { PromptSubmitHandler } from './PromptSubmitHandler';
|
|
8
|
+
export { PrCreateHandler, PrReviewHandler, PrChecksHandler, PrCommentsHandler, PrAddressHandler, PrWatchHandler, PrPollHandler, PrStatusHandler, PrLinkHandler, PrRememberHandler, type IPrCreateResult, type IPrCreateOptions, type IPrReviewResult, type IPrReviewOptions, type IReviewIssue, type IPrChecksResult, type IPrCommentsResult, type IPrAddressResult, type IPrAddressOptions, type ICommentToAddress, type CommentType, type IPrWatchResult, type IPrPollResult, type IPrPollOptions, type IPrPollItem, type IStateChange, type IPrStatusResult, type IPrStatusOptions, type IPrStatusItem, type IPrsByRepo, type IPrStatusSummary, type ReadyState, type IPrLinkResult, type IPrLinkOptions, type IPrRememberResult, type IPrRememberOptions, } from './pr';
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/application/handlers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/application/handlers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,MAAM,CAAC"}
|
|
@@ -4,11 +4,23 @@
|
|
|
4
4
|
* These orchestrate domain services to handle events.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.PromptSubmitHandler = exports.SessionStopHandler = exports.SessionStartHandler = void 0;
|
|
7
|
+
exports.PrRememberHandler = exports.PrLinkHandler = exports.PrStatusHandler = exports.PrPollHandler = exports.PrWatchHandler = exports.PrAddressHandler = exports.PrCommentsHandler = exports.PrChecksHandler = exports.PrReviewHandler = exports.PrCreateHandler = exports.PromptSubmitHandler = exports.SessionStopHandler = exports.SessionStartHandler = void 0;
|
|
8
8
|
var SessionStartHandler_1 = require("./SessionStartHandler");
|
|
9
9
|
Object.defineProperty(exports, "SessionStartHandler", { enumerable: true, get: function () { return SessionStartHandler_1.SessionStartHandler; } });
|
|
10
10
|
var SessionStopHandler_1 = require("./SessionStopHandler");
|
|
11
11
|
Object.defineProperty(exports, "SessionStopHandler", { enumerable: true, get: function () { return SessionStopHandler_1.SessionStopHandler; } });
|
|
12
12
|
var PromptSubmitHandler_1 = require("./PromptSubmitHandler");
|
|
13
13
|
Object.defineProperty(exports, "PromptSubmitHandler", { enumerable: true, get: function () { return PromptSubmitHandler_1.PromptSubmitHandler; } });
|
|
14
|
+
// PR handlers
|
|
15
|
+
var pr_1 = require("./pr");
|
|
16
|
+
Object.defineProperty(exports, "PrCreateHandler", { enumerable: true, get: function () { return pr_1.PrCreateHandler; } });
|
|
17
|
+
Object.defineProperty(exports, "PrReviewHandler", { enumerable: true, get: function () { return pr_1.PrReviewHandler; } });
|
|
18
|
+
Object.defineProperty(exports, "PrChecksHandler", { enumerable: true, get: function () { return pr_1.PrChecksHandler; } });
|
|
19
|
+
Object.defineProperty(exports, "PrCommentsHandler", { enumerable: true, get: function () { return pr_1.PrCommentsHandler; } });
|
|
20
|
+
Object.defineProperty(exports, "PrAddressHandler", { enumerable: true, get: function () { return pr_1.PrAddressHandler; } });
|
|
21
|
+
Object.defineProperty(exports, "PrWatchHandler", { enumerable: true, get: function () { return pr_1.PrWatchHandler; } });
|
|
22
|
+
Object.defineProperty(exports, "PrPollHandler", { enumerable: true, get: function () { return pr_1.PrPollHandler; } });
|
|
23
|
+
Object.defineProperty(exports, "PrStatusHandler", { enumerable: true, get: function () { return pr_1.PrStatusHandler; } });
|
|
24
|
+
Object.defineProperty(exports, "PrLinkHandler", { enumerable: true, get: function () { return pr_1.PrLinkHandler; } });
|
|
25
|
+
Object.defineProperty(exports, "PrRememberHandler", { enumerable: true, get: function () { return pr_1.PrRememberHandler; } });
|
|
14
26
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/application/handlers/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/application/handlers/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAE5B,cAAc;AACd,2BAqCc;AApCZ,qGAAA,eAAe,OAAA;AACf,qGAAA,eAAe,OAAA;AACf,qGAAA,eAAe,OAAA;AACf,uGAAA,iBAAiB,OAAA;AACjB,sGAAA,gBAAgB,OAAA;AAChB,oGAAA,cAAc,OAAA;AACd,mGAAA,aAAa,OAAA;AACb,qGAAA,eAAe,OAAA;AACf,mGAAA,aAAa,OAAA;AACb,uGAAA,iBAAiB,OAAA"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PR Address Handler
|
|
3
|
+
*
|
|
4
|
+
* Fetches pending PR comments and outputs them in a format suitable for
|
|
5
|
+
* AI assistants to analyze and address. The handler provides:
|
|
6
|
+
* - Comment details with file/line context
|
|
7
|
+
* - Relevant code snippets
|
|
8
|
+
* - Instructions for how to address each comment type
|
|
9
|
+
*
|
|
10
|
+
* The actual code changes and replies are made by the AI assistant,
|
|
11
|
+
* not by this handler.
|
|
12
|
+
*
|
|
13
|
+
* @see .dev/features/github-pr.md for full specification
|
|
14
|
+
*/
|
|
15
|
+
import type { IGithubClient } from '../../../domain/interfaces/dal/IGithubClient';
|
|
16
|
+
import type { IPullRequestRepository } from '../../../domain/interfaces/dal/IPullRequestRepository';
|
|
17
|
+
import type { CommentStatus } from '../../../domain/interfaces/types/IPullRequest';
|
|
18
|
+
/**
|
|
19
|
+
* Comment with context for addressing.
|
|
20
|
+
*/
|
|
21
|
+
export interface ICommentToAddress {
|
|
22
|
+
readonly id: number;
|
|
23
|
+
readonly file: string;
|
|
24
|
+
readonly line?: number;
|
|
25
|
+
readonly author: string;
|
|
26
|
+
readonly body: string;
|
|
27
|
+
readonly status: CommentStatus;
|
|
28
|
+
readonly htmlUrl: string;
|
|
29
|
+
readonly codeContext?: string;
|
|
30
|
+
readonly diffHunk?: string;
|
|
31
|
+
readonly commentType: CommentType;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Type of comment - determines how to address it.
|
|
35
|
+
*/
|
|
36
|
+
export type CommentType = 'code_change' | 'question' | 'suggestion' | 'nitpick' | 'approval' | 'unknown';
|
|
37
|
+
/**
|
|
38
|
+
* Result from PrAddressHandler.
|
|
39
|
+
*/
|
|
40
|
+
export interface IPrAddressResult {
|
|
41
|
+
readonly success: boolean;
|
|
42
|
+
readonly repo: string;
|
|
43
|
+
readonly prNumber: number;
|
|
44
|
+
readonly branch: string;
|
|
45
|
+
readonly title?: string;
|
|
46
|
+
readonly commentsToAddress: readonly ICommentToAddress[];
|
|
47
|
+
readonly summary: {
|
|
48
|
+
readonly total: number;
|
|
49
|
+
readonly codeChanges: number;
|
|
50
|
+
readonly questions: number;
|
|
51
|
+
readonly suggestions: number;
|
|
52
|
+
readonly nitpicks: number;
|
|
53
|
+
};
|
|
54
|
+
readonly instructions: string;
|
|
55
|
+
readonly formattedOutput: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Options for PrAddressHandler.
|
|
59
|
+
*/
|
|
60
|
+
export interface IPrAddressOptions {
|
|
61
|
+
readonly repo?: string;
|
|
62
|
+
readonly prNumber: number;
|
|
63
|
+
readonly includeResolved?: boolean;
|
|
64
|
+
readonly codeContextLines?: number;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Handler for preparing PR comments to be addressed.
|
|
68
|
+
*/
|
|
69
|
+
export declare class PrAddressHandler {
|
|
70
|
+
private readonly githubClient;
|
|
71
|
+
private readonly prRepository;
|
|
72
|
+
constructor(githubClient: IGithubClient, prRepository: IPullRequestRepository);
|
|
73
|
+
/**
|
|
74
|
+
* Fetch and prepare PR comments for addressing.
|
|
75
|
+
*/
|
|
76
|
+
execute(options: IPrAddressOptions): Promise<IPrAddressResult>;
|
|
77
|
+
/**
|
|
78
|
+
* Get existing comment statuses from Neo4j.
|
|
79
|
+
*/
|
|
80
|
+
private getExistingStatuses;
|
|
81
|
+
/**
|
|
82
|
+
* Categorize the comment type based on content analysis.
|
|
83
|
+
*/
|
|
84
|
+
private categorizeComment;
|
|
85
|
+
/**
|
|
86
|
+
* Get code context around the comment line.
|
|
87
|
+
*/
|
|
88
|
+
private getCodeContext;
|
|
89
|
+
/**
|
|
90
|
+
* Generate instructions for addressing comments.
|
|
91
|
+
*/
|
|
92
|
+
private generateInstructions;
|
|
93
|
+
/**
|
|
94
|
+
* Wrap content in a safe fenced code block.
|
|
95
|
+
* Handles content that contains backticks by using a longer fence.
|
|
96
|
+
*/
|
|
97
|
+
private wrapFence;
|
|
98
|
+
/**
|
|
99
|
+
* Format output for display.
|
|
100
|
+
*/
|
|
101
|
+
private formatOutput;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=PrAddressHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrAddressHandler.d.ts","sourceRoot":"","sources":["../../../../../src/lib/application/handlers/pr/PrAddressHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AACpG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAEnF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,aAAa,GACb,UAAU,GACV,YAAY,GACZ,SAAS,GACT,UAAU,GACV,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,iBAAiB,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACzD,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,YAAY,EAAE,aAAa,EAC3B,YAAY,EAAE,sBAAsB;IAGvD;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiFpE;;OAEG;YACW,mBAAmB;IAoBjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyEzB;;OAEG;YACW,cAAc;IAoC5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkC5B;;;OAGG;IACH,OAAO,CAAC,SAAS;IAWjB;;OAEG;IACH,OAAO,CAAC,YAAY;CAgFrB"}
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PR Address Handler
|
|
4
|
+
*
|
|
5
|
+
* Fetches pending PR comments and outputs them in a format suitable for
|
|
6
|
+
* AI assistants to analyze and address. The handler provides:
|
|
7
|
+
* - Comment details with file/line context
|
|
8
|
+
* - Relevant code snippets
|
|
9
|
+
* - Instructions for how to address each comment type
|
|
10
|
+
*
|
|
11
|
+
* The actual code changes and replies are made by the AI assistant,
|
|
12
|
+
* not by this handler.
|
|
13
|
+
*
|
|
14
|
+
* @see .dev/features/github-pr.md for full specification
|
|
15
|
+
*/
|
|
16
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
19
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
20
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
21
|
+
}
|
|
22
|
+
Object.defineProperty(o, k2, desc);
|
|
23
|
+
}) : (function(o, m, k, k2) {
|
|
24
|
+
if (k2 === undefined) k2 = k;
|
|
25
|
+
o[k2] = m[k];
|
|
26
|
+
}));
|
|
27
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
28
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
29
|
+
}) : function(o, v) {
|
|
30
|
+
o["default"] = v;
|
|
31
|
+
});
|
|
32
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
33
|
+
var ownKeys = function(o) {
|
|
34
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
35
|
+
var ar = [];
|
|
36
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
37
|
+
return ar;
|
|
38
|
+
};
|
|
39
|
+
return ownKeys(o);
|
|
40
|
+
};
|
|
41
|
+
return function (mod) {
|
|
42
|
+
if (mod && mod.__esModule) return mod;
|
|
43
|
+
var result = {};
|
|
44
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
45
|
+
__setModuleDefault(result, mod);
|
|
46
|
+
return result;
|
|
47
|
+
};
|
|
48
|
+
})();
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.PrAddressHandler = void 0;
|
|
51
|
+
const fs = __importStar(require("fs-extra"));
|
|
52
|
+
const path = __importStar(require("path"));
|
|
53
|
+
/**
|
|
54
|
+
* Handler for preparing PR comments to be addressed.
|
|
55
|
+
*/
|
|
56
|
+
class PrAddressHandler {
|
|
57
|
+
constructor(githubClient, prRepository) {
|
|
58
|
+
this.githubClient = githubClient;
|
|
59
|
+
this.prRepository = prRepository;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Fetch and prepare PR comments for addressing.
|
|
63
|
+
*/
|
|
64
|
+
async execute(options) {
|
|
65
|
+
// Resolve repo
|
|
66
|
+
const repo = options.repo || await this.githubClient.getCurrentRepo();
|
|
67
|
+
// Validate contextLines - must be a non-negative integer
|
|
68
|
+
const rawContextLines = options.codeContextLines;
|
|
69
|
+
const contextLines = Number.isFinite(rawContextLines) && rawContextLines >= 0
|
|
70
|
+
? Math.floor(rawContextLines)
|
|
71
|
+
: 10;
|
|
72
|
+
// Fetch PR details
|
|
73
|
+
const pr = await this.githubClient.getPr(repo, options.prNumber);
|
|
74
|
+
const branch = pr.headRefName;
|
|
75
|
+
const title = pr.title;
|
|
76
|
+
// Fetch comments from GitHub
|
|
77
|
+
const ghComments = await this.githubClient.getPrComments(repo, options.prNumber);
|
|
78
|
+
// Get existing comment statuses from Neo4j
|
|
79
|
+
const existingStatuses = await this.getExistingStatuses(repo, options.prNumber);
|
|
80
|
+
// Filter to pending comments (unless includeResolved is true)
|
|
81
|
+
const pendingComments = ghComments.filter(c => {
|
|
82
|
+
const status = existingStatuses.get(String(c.id)) || 'pending';
|
|
83
|
+
if (options.includeResolved)
|
|
84
|
+
return true;
|
|
85
|
+
return status === 'pending';
|
|
86
|
+
});
|
|
87
|
+
// Filter out replies (we want top-level comments only)
|
|
88
|
+
const topLevelComments = pendingComments.filter(c => !c.in_reply_to_id);
|
|
89
|
+
// Enrich comments with context
|
|
90
|
+
const commentsToAddress = [];
|
|
91
|
+
for (const comment of topLevelComments) {
|
|
92
|
+
const status = existingStatuses.get(String(comment.id)) ?? 'pending';
|
|
93
|
+
const line = comment.line ?? comment.original_line;
|
|
94
|
+
const commentType = this.categorizeComment(comment.body ?? '');
|
|
95
|
+
const codeContext = await this.getCodeContext(comment.path ?? '', line, contextLines);
|
|
96
|
+
commentsToAddress.push({
|
|
97
|
+
id: comment.id,
|
|
98
|
+
file: comment.path ?? '',
|
|
99
|
+
line,
|
|
100
|
+
author: comment.user?.login ?? 'unknown',
|
|
101
|
+
body: comment.body ?? '',
|
|
102
|
+
status,
|
|
103
|
+
htmlUrl: comment.html_url ?? '',
|
|
104
|
+
codeContext,
|
|
105
|
+
diffHunk: comment.diff_hunk,
|
|
106
|
+
commentType,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
// Calculate summary
|
|
110
|
+
const summary = {
|
|
111
|
+
total: commentsToAddress.length,
|
|
112
|
+
codeChanges: commentsToAddress.filter(c => c.commentType === 'code_change').length,
|
|
113
|
+
questions: commentsToAddress.filter(c => c.commentType === 'question').length,
|
|
114
|
+
suggestions: commentsToAddress.filter(c => c.commentType === 'suggestion').length,
|
|
115
|
+
nitpicks: commentsToAddress.filter(c => c.commentType === 'nitpick').length,
|
|
116
|
+
};
|
|
117
|
+
// Generate instructions
|
|
118
|
+
const instructions = this.generateInstructions(commentsToAddress, repo, options.prNumber);
|
|
119
|
+
// Format output
|
|
120
|
+
const formattedOutput = this.formatOutput(commentsToAddress, summary, title, branch, instructions);
|
|
121
|
+
return {
|
|
122
|
+
success: true,
|
|
123
|
+
repo,
|
|
124
|
+
prNumber: options.prNumber,
|
|
125
|
+
branch,
|
|
126
|
+
title,
|
|
127
|
+
commentsToAddress,
|
|
128
|
+
summary,
|
|
129
|
+
instructions,
|
|
130
|
+
formattedOutput,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get existing comment statuses from Neo4j.
|
|
135
|
+
*/
|
|
136
|
+
async getExistingStatuses(repo, prNumber) {
|
|
137
|
+
const statuses = new Map();
|
|
138
|
+
try {
|
|
139
|
+
const userId = await this.prRepository.getUserId();
|
|
140
|
+
const comments = await this.prRepository.findCommentsByPr(userId, repo, prNumber);
|
|
141
|
+
for (const comment of comments) {
|
|
142
|
+
statuses.set(comment.commentId, comment.status);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// Return empty map if Neo4j fails
|
|
147
|
+
}
|
|
148
|
+
return statuses;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Categorize the comment type based on content analysis.
|
|
152
|
+
*/
|
|
153
|
+
categorizeComment(body) {
|
|
154
|
+
const lowerBody = body.toLowerCase();
|
|
155
|
+
// Check for questions first (most specific)
|
|
156
|
+
if (body.includes('?') ||
|
|
157
|
+
lowerBody.includes('why') ||
|
|
158
|
+
lowerBody.includes('could you explain') ||
|
|
159
|
+
lowerBody.includes('what is') ||
|
|
160
|
+
lowerBody.includes('how does')) {
|
|
161
|
+
return 'question';
|
|
162
|
+
}
|
|
163
|
+
// Check for nitpicks
|
|
164
|
+
if (lowerBody.includes('nit:') ||
|
|
165
|
+
lowerBody.includes('nitpick') ||
|
|
166
|
+
lowerBody.includes('minor:') ||
|
|
167
|
+
lowerBody.includes('style:') ||
|
|
168
|
+
lowerBody.includes('typo')) {
|
|
169
|
+
return 'nitpick';
|
|
170
|
+
}
|
|
171
|
+
// Check for suggestions (optional changes)
|
|
172
|
+
if (lowerBody.includes('consider') ||
|
|
173
|
+
lowerBody.includes('suggestion') ||
|
|
174
|
+
lowerBody.includes('might want to') ||
|
|
175
|
+
lowerBody.includes('could also') ||
|
|
176
|
+
lowerBody.includes('optional') ||
|
|
177
|
+
lowerBody.includes('nice to have')) {
|
|
178
|
+
return 'suggestion';
|
|
179
|
+
}
|
|
180
|
+
// Check for code change requests
|
|
181
|
+
if (lowerBody.includes('should') ||
|
|
182
|
+
lowerBody.includes('must') ||
|
|
183
|
+
lowerBody.includes('need to') ||
|
|
184
|
+
lowerBody.includes('please') ||
|
|
185
|
+
lowerBody.includes('fix') ||
|
|
186
|
+
lowerBody.includes('change') ||
|
|
187
|
+
lowerBody.includes('update') ||
|
|
188
|
+
lowerBody.includes('add') ||
|
|
189
|
+
lowerBody.includes('remove') ||
|
|
190
|
+
lowerBody.includes('missing') ||
|
|
191
|
+
lowerBody.includes('incorrect') ||
|
|
192
|
+
lowerBody.includes('bug') ||
|
|
193
|
+
lowerBody.includes('issue') ||
|
|
194
|
+
lowerBody.includes('potential issue') ||
|
|
195
|
+
lowerBody.includes('⚠️')) {
|
|
196
|
+
return 'code_change';
|
|
197
|
+
}
|
|
198
|
+
// Check for approval/positive feedback LAST
|
|
199
|
+
// This prevents "LGTM, but fix X" from being classified as approval
|
|
200
|
+
if (lowerBody.includes('lgtm') ||
|
|
201
|
+
lowerBody.includes('looks good') ||
|
|
202
|
+
lowerBody.includes('great work') ||
|
|
203
|
+
lowerBody.includes('nice!') ||
|
|
204
|
+
lowerBody.includes('👍')) {
|
|
205
|
+
return 'approval';
|
|
206
|
+
}
|
|
207
|
+
return 'unknown';
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Get code context around the comment line.
|
|
211
|
+
*/
|
|
212
|
+
async getCodeContext(filePath, line, contextLines) {
|
|
213
|
+
if (!line)
|
|
214
|
+
return undefined;
|
|
215
|
+
try {
|
|
216
|
+
// Try to read the file from the current working directory
|
|
217
|
+
const fullPath = path.resolve(process.cwd(), filePath);
|
|
218
|
+
if (!await fs.pathExists(fullPath)) {
|
|
219
|
+
return undefined;
|
|
220
|
+
}
|
|
221
|
+
const content = await fs.readFile(fullPath, 'utf-8');
|
|
222
|
+
const lines = content.split('\n');
|
|
223
|
+
const startLine = Math.max(0, line - contextLines - 1);
|
|
224
|
+
const endLine = Math.min(lines.length, line + contextLines);
|
|
225
|
+
const contextWithLineNumbers = lines
|
|
226
|
+
.slice(startLine, endLine)
|
|
227
|
+
.map((lineContent, i) => {
|
|
228
|
+
const lineNum = startLine + i + 1;
|
|
229
|
+
const marker = lineNum === line ? '>>>' : ' ';
|
|
230
|
+
return `${marker} ${lineNum.toString().padStart(4)}: ${lineContent}`;
|
|
231
|
+
})
|
|
232
|
+
.join('\n');
|
|
233
|
+
return contextWithLineNumbers;
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
return undefined;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Generate instructions for addressing comments.
|
|
241
|
+
*/
|
|
242
|
+
generateInstructions(comments, repo, _prNumber) {
|
|
243
|
+
const lines = [];
|
|
244
|
+
lines.push('## Instructions for Addressing PR Comments');
|
|
245
|
+
lines.push('');
|
|
246
|
+
lines.push('For each comment below, please:');
|
|
247
|
+
lines.push('');
|
|
248
|
+
lines.push('1. **Analyze** the comment and understand what is being requested');
|
|
249
|
+
lines.push('2. **Make changes** to the code if needed');
|
|
250
|
+
lines.push('3. **Reply** to the comment on GitHub explaining what was done');
|
|
251
|
+
lines.push('');
|
|
252
|
+
lines.push('### How to handle each comment type:');
|
|
253
|
+
lines.push('');
|
|
254
|
+
lines.push('- **code_change**: Make the requested code changes, commit, then reply with the commit hash');
|
|
255
|
+
lines.push('- **question**: Reply with an explanation (no code changes needed unless clarification reveals an issue)');
|
|
256
|
+
lines.push('- **suggestion**: Evaluate if the suggestion improves the code. If yes, implement it. If no, reply explaining why');
|
|
257
|
+
lines.push('- **nitpick**: Fix if trivial, otherwise acknowledge and optionally defer');
|
|
258
|
+
lines.push('- **approval**: No action needed, but you can reply with thanks');
|
|
259
|
+
lines.push('');
|
|
260
|
+
lines.push('### Reply format:');
|
|
261
|
+
lines.push('');
|
|
262
|
+
lines.push('After making changes, reply to each comment using:');
|
|
263
|
+
lines.push('```');
|
|
264
|
+
lines.push(`gh api repos/${repo}/pulls/comments/{COMMENT_ID}/replies -f body="Your reply here"`);
|
|
265
|
+
lines.push('```');
|
|
266
|
+
lines.push('');
|
|
267
|
+
return lines.join('\n');
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Wrap content in a safe fenced code block.
|
|
271
|
+
* Handles content that contains backticks by using a longer fence.
|
|
272
|
+
*/
|
|
273
|
+
wrapFence(content, lang = '') {
|
|
274
|
+
if (!content)
|
|
275
|
+
return '```\n```';
|
|
276
|
+
// Find the longest run of backticks in the content
|
|
277
|
+
const backtickRuns = content.match(/`+/g) ?? [];
|
|
278
|
+
const maxTicks = Math.max(2, ...backtickRuns.map(t => t.length)) + 1;
|
|
279
|
+
const fence = '`'.repeat(maxTicks);
|
|
280
|
+
return `${fence}${lang}\n${content}\n${fence}`;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Format output for display.
|
|
284
|
+
*/
|
|
285
|
+
formatOutput(comments, summary, title, branch, instructions) {
|
|
286
|
+
const lines = [];
|
|
287
|
+
// Header
|
|
288
|
+
if (title) {
|
|
289
|
+
lines.push(`# PR: ${title}`);
|
|
290
|
+
lines.push(`Branch: ${branch}`);
|
|
291
|
+
lines.push('');
|
|
292
|
+
}
|
|
293
|
+
// Summary
|
|
294
|
+
lines.push(`## Summary: ${summary.total} comment(s) to address`);
|
|
295
|
+
if (summary.codeChanges > 0)
|
|
296
|
+
lines.push(`- 🔧 ${summary.codeChanges} code change(s) requested`);
|
|
297
|
+
if (summary.questions > 0)
|
|
298
|
+
lines.push(`- ❓ ${summary.questions} question(s) to answer`);
|
|
299
|
+
if (summary.suggestions > 0)
|
|
300
|
+
lines.push(`- 💡 ${summary.suggestions} suggestion(s) to consider`);
|
|
301
|
+
if (summary.nitpicks > 0)
|
|
302
|
+
lines.push(`- 📝 ${summary.nitpicks} nitpick(s)`);
|
|
303
|
+
lines.push('');
|
|
304
|
+
if (comments.length === 0) {
|
|
305
|
+
lines.push('No pending comments to address! 🎉');
|
|
306
|
+
return lines.join('\n');
|
|
307
|
+
}
|
|
308
|
+
// Instructions
|
|
309
|
+
lines.push(instructions);
|
|
310
|
+
// Comments
|
|
311
|
+
lines.push('---');
|
|
312
|
+
lines.push('');
|
|
313
|
+
lines.push('## Comments to Address');
|
|
314
|
+
lines.push('');
|
|
315
|
+
for (let i = 0; i < comments.length; i++) {
|
|
316
|
+
const comment = comments[i];
|
|
317
|
+
const typeEmoji = {
|
|
318
|
+
code_change: '🔧',
|
|
319
|
+
question: '❓',
|
|
320
|
+
suggestion: '💡',
|
|
321
|
+
nitpick: '📝',
|
|
322
|
+
approval: '✅',
|
|
323
|
+
unknown: '❔',
|
|
324
|
+
};
|
|
325
|
+
lines.push(`### ${i + 1}. ${typeEmoji[comment.commentType]} ${comment.commentType.toUpperCase()} - ${comment.file}:${comment.line || '?'}`);
|
|
326
|
+
lines.push('');
|
|
327
|
+
lines.push(`**Author:** @${comment.author}`);
|
|
328
|
+
lines.push(`**Comment ID:** ${comment.id}`);
|
|
329
|
+
lines.push(`**URL:** ${comment.htmlUrl}`);
|
|
330
|
+
lines.push('');
|
|
331
|
+
lines.push('**Comment:**');
|
|
332
|
+
lines.push(this.wrapFence(comment.body));
|
|
333
|
+
lines.push('');
|
|
334
|
+
if (comment.codeContext) {
|
|
335
|
+
lines.push('**Code context:**');
|
|
336
|
+
lines.push(this.wrapFence(comment.codeContext));
|
|
337
|
+
lines.push('');
|
|
338
|
+
}
|
|
339
|
+
if (comment.diffHunk) {
|
|
340
|
+
lines.push('<details>');
|
|
341
|
+
lines.push('<summary>Diff hunk</summary>');
|
|
342
|
+
lines.push('');
|
|
343
|
+
lines.push(this.wrapFence(comment.diffHunk, 'diff'));
|
|
344
|
+
lines.push('</details>');
|
|
345
|
+
lines.push('');
|
|
346
|
+
}
|
|
347
|
+
lines.push('---');
|
|
348
|
+
lines.push('');
|
|
349
|
+
}
|
|
350
|
+
return lines.join('\n');
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
exports.PrAddressHandler = PrAddressHandler;
|
|
354
|
+
//# sourceMappingURL=PrAddressHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrAddressHandler.js","sourceRoot":"","sources":["../../../../../src/lib/application/handlers/pr/PrAddressHandler.ts"],"names":[],"mappings":"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"}
|