@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
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PR Checks Handler
|
|
3
|
+
*
|
|
4
|
+
* Fetches and displays CI check status for a PR.
|
|
5
|
+
* Uses GithubClient to get real-time check status from GitHub.
|
|
6
|
+
*
|
|
7
|
+
* @see .dev/features/github-pr.md for full specification
|
|
8
|
+
*/
|
|
9
|
+
import type { IGithubClient } from '../../../domain/interfaces/dal/IGithubClient';
|
|
10
|
+
import type { IPullRequestRepository } from '../../../domain/interfaces/dal/IPullRequestRepository';
|
|
11
|
+
import type { CheckStatus } from '../../../domain/interfaces/types/IPullRequest';
|
|
12
|
+
/**
|
|
13
|
+
* Result from PrChecksHandler.
|
|
14
|
+
*/
|
|
15
|
+
export interface IPrChecksResult {
|
|
16
|
+
readonly repo: string;
|
|
17
|
+
readonly prNumber: number;
|
|
18
|
+
readonly title?: string;
|
|
19
|
+
readonly overallStatus: CheckStatus;
|
|
20
|
+
readonly checks: readonly {
|
|
21
|
+
readonly name: string;
|
|
22
|
+
readonly status: CheckStatus;
|
|
23
|
+
readonly conclusion?: string;
|
|
24
|
+
readonly detailsUrl?: string;
|
|
25
|
+
}[];
|
|
26
|
+
readonly summary: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Options for PrChecksHandler.
|
|
30
|
+
*/
|
|
31
|
+
export interface IPrChecksOptions {
|
|
32
|
+
readonly repo?: string;
|
|
33
|
+
readonly prNumber: number;
|
|
34
|
+
readonly saveToNeo4j?: boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Handler for fetching PR check status.
|
|
38
|
+
*/
|
|
39
|
+
export declare class PrChecksHandler {
|
|
40
|
+
private readonly githubClient;
|
|
41
|
+
private readonly prRepository;
|
|
42
|
+
constructor(githubClient: IGithubClient, prRepository: IPullRequestRepository);
|
|
43
|
+
/**
|
|
44
|
+
* Get CI check status for a PR.
|
|
45
|
+
*/
|
|
46
|
+
execute(options: IPrChecksOptions): Promise<IPrChecksResult>;
|
|
47
|
+
/**
|
|
48
|
+
* Map GitHub check state to domain CheckStatus.
|
|
49
|
+
*/
|
|
50
|
+
private mapCheckStatus;
|
|
51
|
+
/**
|
|
52
|
+
* Calculate overall status from individual checks.
|
|
53
|
+
*/
|
|
54
|
+
private calculateOverallStatus;
|
|
55
|
+
/**
|
|
56
|
+
* Save checks to Neo4j via repository.
|
|
57
|
+
*/
|
|
58
|
+
private saveChecksToNeo4j;
|
|
59
|
+
/**
|
|
60
|
+
* Generate human-readable summary.
|
|
61
|
+
*/
|
|
62
|
+
private generateSummary;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=PrChecksHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrChecksHandler.d.ts","sourceRoot":"","sources":["../../../../../src/lib/application/handlers/pr/PrChecksHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AACpG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS;QACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;QAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;KAC9B,EAAE,CAAC;IACJ,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;GAEG;AACH,qBAAa,eAAe;IAExB,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,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA6ClE;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA0B9B;;OAEG;YACW,iBAAiB;IAsB/B;;OAEG;IACH,OAAO,CAAC,eAAe;CA6BxB"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PR Checks Handler
|
|
4
|
+
*
|
|
5
|
+
* Fetches and displays CI check status for a PR.
|
|
6
|
+
* Uses GithubClient to get real-time check status from GitHub.
|
|
7
|
+
*
|
|
8
|
+
* @see .dev/features/github-pr.md for full specification
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.PrChecksHandler = void 0;
|
|
12
|
+
/**
|
|
13
|
+
* Handler for fetching PR check status.
|
|
14
|
+
*/
|
|
15
|
+
class PrChecksHandler {
|
|
16
|
+
constructor(githubClient, prRepository) {
|
|
17
|
+
this.githubClient = githubClient;
|
|
18
|
+
this.prRepository = prRepository;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get CI check status for a PR.
|
|
22
|
+
*/
|
|
23
|
+
async execute(options) {
|
|
24
|
+
// Resolve repo
|
|
25
|
+
const repo = options.repo || await this.githubClient.getCurrentRepo();
|
|
26
|
+
// Fetch PR details for title
|
|
27
|
+
let title;
|
|
28
|
+
try {
|
|
29
|
+
const pr = await this.githubClient.getPr(repo, options.prNumber);
|
|
30
|
+
title = pr.title;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// PR might not exist, but we'll try to get checks anyway
|
|
34
|
+
}
|
|
35
|
+
// Fetch checks from GitHub
|
|
36
|
+
const ghChecks = await this.githubClient.getPrChecks(repo, options.prNumber);
|
|
37
|
+
// Map to our domain types
|
|
38
|
+
const checks = ghChecks.map(check => ({
|
|
39
|
+
name: check.name,
|
|
40
|
+
status: this.mapCheckStatus(check.state),
|
|
41
|
+
conclusion: check.conclusion,
|
|
42
|
+
detailsUrl: check.detailsUrl,
|
|
43
|
+
}));
|
|
44
|
+
// Calculate overall status
|
|
45
|
+
const overallStatus = this.calculateOverallStatus(checks);
|
|
46
|
+
// Optionally save to Neo4j
|
|
47
|
+
if (options.saveToNeo4j !== false) {
|
|
48
|
+
await this.saveChecksToNeo4j(repo, options.prNumber, checks);
|
|
49
|
+
}
|
|
50
|
+
// Generate summary
|
|
51
|
+
const summary = this.generateSummary(checks, overallStatus);
|
|
52
|
+
return {
|
|
53
|
+
repo,
|
|
54
|
+
prNumber: options.prNumber,
|
|
55
|
+
title,
|
|
56
|
+
overallStatus,
|
|
57
|
+
checks,
|
|
58
|
+
summary,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Map GitHub check state to domain CheckStatus.
|
|
63
|
+
*/
|
|
64
|
+
mapCheckStatus(state) {
|
|
65
|
+
switch (state) {
|
|
66
|
+
case 'SUCCESS':
|
|
67
|
+
return 'success';
|
|
68
|
+
case 'FAILURE':
|
|
69
|
+
return 'failure';
|
|
70
|
+
case 'CANCELLED':
|
|
71
|
+
return 'cancelled';
|
|
72
|
+
case 'SKIPPED':
|
|
73
|
+
return 'skipped';
|
|
74
|
+
case 'PENDING':
|
|
75
|
+
case 'QUEUED':
|
|
76
|
+
case 'IN_PROGRESS':
|
|
77
|
+
default:
|
|
78
|
+
return 'pending';
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Calculate overall status from individual checks.
|
|
83
|
+
*/
|
|
84
|
+
calculateOverallStatus(checks) {
|
|
85
|
+
if (checks.length === 0) {
|
|
86
|
+
return 'pending';
|
|
87
|
+
}
|
|
88
|
+
// Any failure = overall failure
|
|
89
|
+
if (checks.some(c => c.status === 'failure')) {
|
|
90
|
+
return 'failure';
|
|
91
|
+
}
|
|
92
|
+
// Any cancelled = overall cancelled
|
|
93
|
+
if (checks.some(c => c.status === 'cancelled')) {
|
|
94
|
+
return 'cancelled';
|
|
95
|
+
}
|
|
96
|
+
// Any pending = overall pending
|
|
97
|
+
if (checks.some(c => c.status === 'pending')) {
|
|
98
|
+
return 'pending';
|
|
99
|
+
}
|
|
100
|
+
// All success/skipped = overall success
|
|
101
|
+
return 'success';
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Save checks to Neo4j via repository.
|
|
105
|
+
*/
|
|
106
|
+
async saveChecksToNeo4j(repo, prNumber, checks) {
|
|
107
|
+
try {
|
|
108
|
+
const userId = await this.prRepository.getUserId();
|
|
109
|
+
for (const check of checks) {
|
|
110
|
+
await this.prRepository.upsertCheck(userId, repo, prNumber, {
|
|
111
|
+
checkName: check.name,
|
|
112
|
+
status: check.status,
|
|
113
|
+
conclusion: check.conclusion,
|
|
114
|
+
detailsUrl: check.detailsUrl,
|
|
115
|
+
updatedAt: new Date().toISOString(),
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// Non-fatal: checks are informational
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Generate human-readable summary.
|
|
125
|
+
*/
|
|
126
|
+
generateSummary(checks, overallStatus) {
|
|
127
|
+
if (checks.length === 0) {
|
|
128
|
+
return 'No checks found';
|
|
129
|
+
}
|
|
130
|
+
const passed = checks.filter(c => c.status === 'success').length;
|
|
131
|
+
const failed = checks.filter(c => c.status === 'failure').length;
|
|
132
|
+
const pending = checks.filter(c => c.status === 'pending').length;
|
|
133
|
+
const skipped = checks.filter(c => c.status === 'skipped' || c.status === 'cancelled').length;
|
|
134
|
+
const parts = [];
|
|
135
|
+
if (passed > 0)
|
|
136
|
+
parts.push(`${passed} passed`);
|
|
137
|
+
if (failed > 0)
|
|
138
|
+
parts.push(`${failed} failed`);
|
|
139
|
+
if (pending > 0)
|
|
140
|
+
parts.push(`${pending} pending`);
|
|
141
|
+
if (skipped > 0)
|
|
142
|
+
parts.push(`${skipped} skipped`);
|
|
143
|
+
const statusEmoji = {
|
|
144
|
+
success: '✅',
|
|
145
|
+
failure: '❌',
|
|
146
|
+
pending: '⏳',
|
|
147
|
+
cancelled: '⚪',
|
|
148
|
+
skipped: '⚪',
|
|
149
|
+
};
|
|
150
|
+
return `${statusEmoji[overallStatus]} ${parts.join(', ')}`;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
exports.PrChecksHandler = PrChecksHandler;
|
|
154
|
+
//# sourceMappingURL=PrChecksHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrChecksHandler.js","sourceRoot":"","sources":["../../../../../src/lib/application/handlers/pr/PrChecksHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PR Comments Handler
|
|
3
|
+
*
|
|
4
|
+
* Fetches and displays PR review comments with triage information.
|
|
5
|
+
* Supports filtering by status (pending, addressed, resolved).
|
|
6
|
+
*
|
|
7
|
+
* @see .dev/features/github-pr.md for full specification
|
|
8
|
+
*/
|
|
9
|
+
import type { IGithubClient } from '../../../domain/interfaces/dal/IGithubClient';
|
|
10
|
+
import type { IPullRequestRepository } from '../../../domain/interfaces/dal/IPullRequestRepository';
|
|
11
|
+
import type { CommentStatus } from '../../../domain/interfaces/types/IPullRequest';
|
|
12
|
+
/**
|
|
13
|
+
* Comment with triage information.
|
|
14
|
+
*/
|
|
15
|
+
export interface ITriagedComment {
|
|
16
|
+
readonly id: number;
|
|
17
|
+
readonly file: string;
|
|
18
|
+
readonly line?: number;
|
|
19
|
+
readonly author: string;
|
|
20
|
+
readonly body: string;
|
|
21
|
+
readonly status: CommentStatus;
|
|
22
|
+
readonly createdAt: string;
|
|
23
|
+
readonly updatedAt: string;
|
|
24
|
+
readonly htmlUrl: string;
|
|
25
|
+
readonly isReply: boolean;
|
|
26
|
+
readonly inReplyToId?: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Result from PrCommentsHandler.
|
|
30
|
+
*/
|
|
31
|
+
export interface IPrCommentsResult {
|
|
32
|
+
readonly repo: string;
|
|
33
|
+
readonly prNumber: number;
|
|
34
|
+
readonly title?: string;
|
|
35
|
+
readonly comments: readonly ITriagedComment[];
|
|
36
|
+
readonly summary: {
|
|
37
|
+
readonly total: number;
|
|
38
|
+
readonly pending: number;
|
|
39
|
+
readonly addressed: number;
|
|
40
|
+
readonly resolved: number;
|
|
41
|
+
};
|
|
42
|
+
readonly formattedOutput: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Options for PrCommentsHandler.
|
|
46
|
+
*/
|
|
47
|
+
export interface IPrCommentsOptions {
|
|
48
|
+
readonly repo?: string;
|
|
49
|
+
readonly prNumber: number;
|
|
50
|
+
readonly filter?: CommentStatus;
|
|
51
|
+
readonly saveToNeo4j?: boolean;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Handler for fetching PR comments.
|
|
55
|
+
*/
|
|
56
|
+
export declare class PrCommentsHandler {
|
|
57
|
+
private readonly githubClient;
|
|
58
|
+
private readonly prRepository;
|
|
59
|
+
constructor(githubClient: IGithubClient, prRepository: IPullRequestRepository);
|
|
60
|
+
/**
|
|
61
|
+
* Get PR review comments with triage information.
|
|
62
|
+
*/
|
|
63
|
+
execute(options: IPrCommentsOptions): Promise<IPrCommentsResult>;
|
|
64
|
+
/**
|
|
65
|
+
* Get existing comment statuses from Neo4j.
|
|
66
|
+
*/
|
|
67
|
+
private getExistingStatuses;
|
|
68
|
+
/**
|
|
69
|
+
* Triage a comment to determine its status.
|
|
70
|
+
*/
|
|
71
|
+
private triageComment;
|
|
72
|
+
/**
|
|
73
|
+
* Save comments to Neo4j via repository.
|
|
74
|
+
*/
|
|
75
|
+
private saveCommentsToNeo4j;
|
|
76
|
+
/**
|
|
77
|
+
* Format output for display.
|
|
78
|
+
*/
|
|
79
|
+
private formatOutput;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=PrCommentsHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrCommentsHandler.d.ts","sourceRoot":"","sources":["../../../../../src/lib/application/handlers/pr/PrCommentsHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,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,eAAe;IAC9B,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,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAE1B,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,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsDtE;;OAEG;YACW,mBAAmB;IAoBjC;;OAEG;IACH,OAAO,CAAC,aAAa;IA0CrB;;OAEG;YACW,mBAAmB;IA0BjC;;OAEG;IACH,OAAO,CAAC,YAAY;CA0DrB"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PR Comments Handler
|
|
4
|
+
*
|
|
5
|
+
* Fetches and displays PR review comments with triage information.
|
|
6
|
+
* Supports filtering by status (pending, addressed, resolved).
|
|
7
|
+
*
|
|
8
|
+
* @see .dev/features/github-pr.md for full specification
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.PrCommentsHandler = void 0;
|
|
12
|
+
/**
|
|
13
|
+
* Handler for fetching PR comments.
|
|
14
|
+
*/
|
|
15
|
+
class PrCommentsHandler {
|
|
16
|
+
constructor(githubClient, prRepository) {
|
|
17
|
+
this.githubClient = githubClient;
|
|
18
|
+
this.prRepository = prRepository;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get PR review comments with triage information.
|
|
22
|
+
*/
|
|
23
|
+
async execute(options) {
|
|
24
|
+
// Resolve repo
|
|
25
|
+
const repo = options.repo || await this.githubClient.getCurrentRepo();
|
|
26
|
+
// Fetch PR details for title
|
|
27
|
+
let title;
|
|
28
|
+
try {
|
|
29
|
+
const pr = await this.githubClient.getPr(repo, options.prNumber);
|
|
30
|
+
title = pr.title;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// PR might not exist
|
|
34
|
+
}
|
|
35
|
+
// Fetch comments from GitHub
|
|
36
|
+
const ghComments = await this.githubClient.getPrComments(repo, options.prNumber);
|
|
37
|
+
// Get existing comment statuses from Neo4j
|
|
38
|
+
const existingStatuses = await this.getExistingStatuses(repo, options.prNumber);
|
|
39
|
+
// Map and triage comments
|
|
40
|
+
let comments = ghComments.map(comment => this.triageComment(comment, existingStatuses));
|
|
41
|
+
// Apply filter if specified
|
|
42
|
+
if (options.filter) {
|
|
43
|
+
comments = comments.filter(c => c.status === options.filter);
|
|
44
|
+
}
|
|
45
|
+
// Calculate summary
|
|
46
|
+
const allComments = ghComments.map(c => this.triageComment(c, existingStatuses));
|
|
47
|
+
const summary = {
|
|
48
|
+
total: allComments.length,
|
|
49
|
+
pending: allComments.filter(c => c.status === 'pending').length,
|
|
50
|
+
addressed: allComments.filter(c => c.status === 'addressed').length,
|
|
51
|
+
resolved: allComments.filter(c => c.status === 'resolved').length,
|
|
52
|
+
};
|
|
53
|
+
// Optionally save to Neo4j
|
|
54
|
+
if (options.saveToNeo4j !== false) {
|
|
55
|
+
await this.saveCommentsToNeo4j(repo, options.prNumber, comments);
|
|
56
|
+
}
|
|
57
|
+
// Generate formatted output
|
|
58
|
+
const formattedOutput = this.formatOutput(comments, summary, title);
|
|
59
|
+
return {
|
|
60
|
+
repo,
|
|
61
|
+
prNumber: options.prNumber,
|
|
62
|
+
title,
|
|
63
|
+
comments,
|
|
64
|
+
summary,
|
|
65
|
+
formattedOutput,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get existing comment statuses from Neo4j.
|
|
70
|
+
*/
|
|
71
|
+
async getExistingStatuses(repo, prNumber) {
|
|
72
|
+
const statuses = new Map();
|
|
73
|
+
try {
|
|
74
|
+
const userId = await this.prRepository.getUserId();
|
|
75
|
+
const comments = await this.prRepository.findCommentsByPr(userId, repo, prNumber);
|
|
76
|
+
for (const comment of comments) {
|
|
77
|
+
statuses.set(comment.commentId, comment.status);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// Return empty map if Neo4j fails
|
|
82
|
+
}
|
|
83
|
+
return statuses;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Triage a comment to determine its status.
|
|
87
|
+
*/
|
|
88
|
+
triageComment(comment, existingStatuses) {
|
|
89
|
+
const commentId = String(comment.id);
|
|
90
|
+
// Use existing status if we have it
|
|
91
|
+
let status = existingStatuses.get(commentId) || 'pending';
|
|
92
|
+
// Heuristic: if the comment is a reply and we authored it, mark as addressed
|
|
93
|
+
// (This is a simple heuristic - in practice we'd check if it's our reply)
|
|
94
|
+
if (comment.in_reply_to_id && !existingStatuses.has(commentId)) {
|
|
95
|
+
// New reply we haven't tracked - keep as pending
|
|
96
|
+
status = 'pending';
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
id: comment.id,
|
|
100
|
+
file: comment.path,
|
|
101
|
+
line: comment.line || comment.original_line,
|
|
102
|
+
author: comment.user.login,
|
|
103
|
+
body: comment.body,
|
|
104
|
+
status,
|
|
105
|
+
createdAt: comment.created_at,
|
|
106
|
+
updatedAt: comment.updated_at,
|
|
107
|
+
htmlUrl: comment.html_url,
|
|
108
|
+
isReply: !!comment.in_reply_to_id,
|
|
109
|
+
inReplyToId: comment.in_reply_to_id,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Save comments to Neo4j via repository.
|
|
114
|
+
*/
|
|
115
|
+
async saveCommentsToNeo4j(repo, prNumber, comments) {
|
|
116
|
+
try {
|
|
117
|
+
const userId = await this.prRepository.getUserId();
|
|
118
|
+
for (const comment of comments) {
|
|
119
|
+
await this.prRepository.upsertComment(userId, repo, prNumber, {
|
|
120
|
+
commentId: String(comment.id),
|
|
121
|
+
file: comment.file,
|
|
122
|
+
line: comment.line || 0,
|
|
123
|
+
author: comment.author,
|
|
124
|
+
body: comment.body,
|
|
125
|
+
status: comment.status,
|
|
126
|
+
hasNewReply: false,
|
|
127
|
+
createdAt: comment.createdAt,
|
|
128
|
+
updatedAt: comment.updatedAt,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
// Non-fatal: comments are informational
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Format output for display.
|
|
138
|
+
*/
|
|
139
|
+
formatOutput(comments, summary, title) {
|
|
140
|
+
const lines = [];
|
|
141
|
+
// Header
|
|
142
|
+
if (title) {
|
|
143
|
+
lines.push(`PR: ${title}`);
|
|
144
|
+
lines.push('');
|
|
145
|
+
}
|
|
146
|
+
// Summary
|
|
147
|
+
lines.push(`Comments: ${summary.total} total (${summary.pending} pending, ${summary.addressed} addressed, ${summary.resolved} resolved)`);
|
|
148
|
+
lines.push('');
|
|
149
|
+
if (comments.length === 0) {
|
|
150
|
+
lines.push('No comments to display.');
|
|
151
|
+
return lines.join('\n');
|
|
152
|
+
}
|
|
153
|
+
// Group by file
|
|
154
|
+
const byFile = new Map();
|
|
155
|
+
for (const comment of comments) {
|
|
156
|
+
const existing = byFile.get(comment.file) || [];
|
|
157
|
+
existing.push(comment);
|
|
158
|
+
byFile.set(comment.file, existing);
|
|
159
|
+
}
|
|
160
|
+
// Display by file
|
|
161
|
+
for (const [file, fileComments] of byFile) {
|
|
162
|
+
lines.push(`📁 ${file}`);
|
|
163
|
+
for (const comment of fileComments) {
|
|
164
|
+
const statusEmoji = {
|
|
165
|
+
pending: '🔴',
|
|
166
|
+
addressed: '🟡',
|
|
167
|
+
resolved: '✅',
|
|
168
|
+
};
|
|
169
|
+
const lineInfo = comment.line ? `:${comment.line}` : '';
|
|
170
|
+
const replyIndicator = comment.isReply ? ' (reply)' : '';
|
|
171
|
+
lines.push(` ${statusEmoji[comment.status]} Line${lineInfo} - @${comment.author}${replyIndicator}`);
|
|
172
|
+
// Truncate long bodies
|
|
173
|
+
const bodyPreview = comment.body.length > 100
|
|
174
|
+
? comment.body.slice(0, 100).replace(/\n/g, ' ') + '...'
|
|
175
|
+
: comment.body.replace(/\n/g, ' ');
|
|
176
|
+
lines.push(` "${bodyPreview}"`);
|
|
177
|
+
}
|
|
178
|
+
lines.push('');
|
|
179
|
+
}
|
|
180
|
+
return lines.join('\n');
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
exports.PrCommentsHandler = PrCommentsHandler;
|
|
184
|
+
//# sourceMappingURL=PrCommentsHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrCommentsHandler.js","sourceRoot":"","sources":["../../../../../src/lib/application/handlers/pr/PrCommentsHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PR Create Handler
|
|
3
|
+
*
|
|
4
|
+
* Creates a PR with auto-generated body, issue linking, and auto-watch.
|
|
5
|
+
* Supports branch name parsing for issue detection.
|
|
6
|
+
*
|
|
7
|
+
* @see .dev/features/github-pr.md for full specification
|
|
8
|
+
*/
|
|
9
|
+
import type { IGithubClient } from '../../../domain/interfaces/dal/IGithubClient';
|
|
10
|
+
import type { IPullRequestRepository } from '../../../domain/interfaces/dal/IPullRequestRepository';
|
|
11
|
+
/**
|
|
12
|
+
* Options for PR creation.
|
|
13
|
+
*/
|
|
14
|
+
export interface IPrCreateOptions {
|
|
15
|
+
/** Issue number(s) to link. If not provided, attempts to parse from branch name. */
|
|
16
|
+
readonly issues?: number[];
|
|
17
|
+
/** Target branch. If not provided, uses default branch (main/master). */
|
|
18
|
+
readonly base?: string;
|
|
19
|
+
/** Source branch. If not provided, uses current branch. */
|
|
20
|
+
readonly head?: string;
|
|
21
|
+
/** PR title. If not provided, uses issue title or generates from commits. */
|
|
22
|
+
readonly title?: string;
|
|
23
|
+
/** Create as draft PR. */
|
|
24
|
+
readonly draft?: boolean;
|
|
25
|
+
/** Skip auto-watch after creation. */
|
|
26
|
+
readonly noWatch?: boolean;
|
|
27
|
+
/** Skip commenting on linked issues. */
|
|
28
|
+
readonly noComment?: boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Result from PR creation.
|
|
32
|
+
*/
|
|
33
|
+
export interface IPrCreateResult {
|
|
34
|
+
readonly success: boolean;
|
|
35
|
+
readonly message: string;
|
|
36
|
+
readonly pr?: {
|
|
37
|
+
readonly number: number;
|
|
38
|
+
readonly url: string;
|
|
39
|
+
readonly title: string;
|
|
40
|
+
readonly repo: string;
|
|
41
|
+
};
|
|
42
|
+
readonly linkedIssues?: readonly number[];
|
|
43
|
+
readonly body?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Handler for creating PRs with auto-generated content.
|
|
47
|
+
*/
|
|
48
|
+
export declare class PrCreateHandler {
|
|
49
|
+
private readonly githubClient;
|
|
50
|
+
private readonly prRepository;
|
|
51
|
+
constructor(githubClient: IGithubClient, prRepository: IPullRequestRepository);
|
|
52
|
+
/**
|
|
53
|
+
* Create a PR with auto-generated body and issue linking.
|
|
54
|
+
*/
|
|
55
|
+
execute(options?: IPrCreateOptions): Promise<IPrCreateResult>;
|
|
56
|
+
/**
|
|
57
|
+
* Parse issue numbers from branch name.
|
|
58
|
+
* Supports formats: "15", "15-description", "feature/15", "feature/15-description"
|
|
59
|
+
*/
|
|
60
|
+
private parseIssuesFromBranch;
|
|
61
|
+
/**
|
|
62
|
+
* Generate PR body with summary, test coverage, and linked issues.
|
|
63
|
+
*/
|
|
64
|
+
private generatePrBody;
|
|
65
|
+
/**
|
|
66
|
+
* Comment on linked issues with PR reference.
|
|
67
|
+
*/
|
|
68
|
+
private commentOnLinkedIssues;
|
|
69
|
+
/**
|
|
70
|
+
* Add PR to watch list.
|
|
71
|
+
*/
|
|
72
|
+
private watchPr;
|
|
73
|
+
/**
|
|
74
|
+
* Create Neo4j nodes and CLOSES relationships.
|
|
75
|
+
*/
|
|
76
|
+
private createNeo4jRelationships;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=PrCreateHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrCreateHandler.d.ts","sourceRoot":"","sources":["../../../../../src/lib/application/handlers/pr/PrCreateHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AAGpG;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oFAAoF;IACpF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,yEAAyE;IACzE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,sCAAsC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,wCAAwC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,EAAE;QACZ,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,eAAe;IAExB,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,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;IAmFvE;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAyC7B;;OAEG;YACW,cAAc;IAkD5B;;OAEG;YACW,qBAAqB;IAkBnC;;OAEG;YACW,OAAO;IAerB;;OAEG;YACW,wBAAwB;CA6BvC"}
|