@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,230 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PR Create Handler
|
|
4
|
+
*
|
|
5
|
+
* Creates a PR with auto-generated body, issue linking, and auto-watch.
|
|
6
|
+
* Supports branch name parsing for issue detection.
|
|
7
|
+
*
|
|
8
|
+
* @see .dev/features/github-pr.md for full specification
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.PrCreateHandler = void 0;
|
|
12
|
+
/**
|
|
13
|
+
* Handler for creating PRs with auto-generated content.
|
|
14
|
+
*/
|
|
15
|
+
class PrCreateHandler {
|
|
16
|
+
constructor(githubClient, prRepository) {
|
|
17
|
+
this.githubClient = githubClient;
|
|
18
|
+
this.prRepository = prRepository;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Create a PR with auto-generated body and issue linking.
|
|
22
|
+
*/
|
|
23
|
+
async execute(options = {}) {
|
|
24
|
+
try {
|
|
25
|
+
// 1. Get repo and branch info
|
|
26
|
+
const repo = await this.githubClient.getCurrentRepo();
|
|
27
|
+
const currentBranch = options.head || await this.githubClient.getCurrentBranch();
|
|
28
|
+
const baseBranch = options.base || await this.githubClient.getDefaultBranch(repo);
|
|
29
|
+
// 2. Parse issue numbers from branch name if not provided
|
|
30
|
+
const issues = options.issues || this.parseIssuesFromBranch(currentBranch);
|
|
31
|
+
// 3. Get issue details for title and linking
|
|
32
|
+
let title = options.title;
|
|
33
|
+
const issueDetails = [];
|
|
34
|
+
for (const issueNumber of issues) {
|
|
35
|
+
try {
|
|
36
|
+
const issue = await this.githubClient.getIssue(repo, issueNumber);
|
|
37
|
+
issueDetails.push({ number: issue.number, title: issue.title });
|
|
38
|
+
// Use first linked issue's title if no title provided
|
|
39
|
+
if (!title) {
|
|
40
|
+
title = issue.title;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Issue doesn't exist, skip
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// 4. Generate title from commits if still not set
|
|
48
|
+
if (!title) {
|
|
49
|
+
const commits = await this.githubClient.getCommitMessages(`origin/${baseBranch}`, currentBranch);
|
|
50
|
+
title = commits[0] || `Changes from ${currentBranch}`;
|
|
51
|
+
}
|
|
52
|
+
// 5. Generate PR body
|
|
53
|
+
const body = await this.generatePrBody(repo, baseBranch, currentBranch, issueDetails);
|
|
54
|
+
// 6. Create the PR
|
|
55
|
+
const pr = await this.githubClient.createPr({
|
|
56
|
+
repo,
|
|
57
|
+
title,
|
|
58
|
+
body,
|
|
59
|
+
base: baseBranch,
|
|
60
|
+
head: currentBranch,
|
|
61
|
+
draft: options.draft,
|
|
62
|
+
});
|
|
63
|
+
// 7. Comment on linked issues
|
|
64
|
+
if (!options.noComment && issueDetails.length > 0) {
|
|
65
|
+
await this.commentOnLinkedIssues(repo, pr.number, issueDetails);
|
|
66
|
+
}
|
|
67
|
+
// 8. Auto-watch the PR (also upserts PR node for relationship linking)
|
|
68
|
+
if (!options.noWatch) {
|
|
69
|
+
await this.watchPr(repo, pr);
|
|
70
|
+
}
|
|
71
|
+
// 9. Create Neo4j relationships (requires PR node to exist)
|
|
72
|
+
// Only create relationships if watching is enabled (PR node exists)
|
|
73
|
+
if (!options.noWatch && issueDetails.length > 0) {
|
|
74
|
+
await this.createNeo4jRelationships(repo, pr, issueDetails);
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
success: true,
|
|
78
|
+
message: `Created PR #${pr.number}: ${pr.url}`,
|
|
79
|
+
pr: {
|
|
80
|
+
number: pr.number,
|
|
81
|
+
url: pr.url,
|
|
82
|
+
title: pr.title,
|
|
83
|
+
repo,
|
|
84
|
+
},
|
|
85
|
+
linkedIssues: issueDetails.map(i => i.number),
|
|
86
|
+
body,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
91
|
+
return {
|
|
92
|
+
success: false,
|
|
93
|
+
message: `Failed to create PR: ${message}`,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Parse issue numbers from branch name.
|
|
99
|
+
* Supports formats: "15", "15-description", "feature/15", "feature/15-description"
|
|
100
|
+
*/
|
|
101
|
+
parseIssuesFromBranch(branch) {
|
|
102
|
+
const issues = [];
|
|
103
|
+
// Try to extract issue number from common patterns
|
|
104
|
+
// Pattern 1: Just the number "15"
|
|
105
|
+
if (/^\d+$/.test(branch)) {
|
|
106
|
+
issues.push(parseInt(branch, 10));
|
|
107
|
+
return issues;
|
|
108
|
+
}
|
|
109
|
+
// Pattern 2: Number at start "15-description"
|
|
110
|
+
const startMatch = branch.match(/^(\d+)[-_]/);
|
|
111
|
+
if (startMatch) {
|
|
112
|
+
issues.push(parseInt(startMatch[1], 10));
|
|
113
|
+
return issues;
|
|
114
|
+
}
|
|
115
|
+
// Pattern 3: After slash "feature/15" or "feature/15-description"
|
|
116
|
+
const slashMatch = branch.match(/\/(\d+)(?:[-_]|$)/);
|
|
117
|
+
if (slashMatch) {
|
|
118
|
+
issues.push(parseInt(slashMatch[1], 10));
|
|
119
|
+
return issues;
|
|
120
|
+
}
|
|
121
|
+
// Pattern 4: Issue references in branch name "#15" or "issue-15"
|
|
122
|
+
const hashMatch = branch.match(/#(\d+)/g);
|
|
123
|
+
if (hashMatch) {
|
|
124
|
+
for (const match of hashMatch) {
|
|
125
|
+
issues.push(parseInt(match.slice(1), 10));
|
|
126
|
+
}
|
|
127
|
+
return issues;
|
|
128
|
+
}
|
|
129
|
+
const issueMatch = branch.match(/issue[-_]?(\d+)/i);
|
|
130
|
+
if (issueMatch) {
|
|
131
|
+
issues.push(parseInt(issueMatch[1], 10));
|
|
132
|
+
}
|
|
133
|
+
return issues;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Generate PR body with summary, test coverage, and linked issues.
|
|
137
|
+
*/
|
|
138
|
+
async generatePrBody(repo, baseBranch, headBranch, issues) {
|
|
139
|
+
const sections = [];
|
|
140
|
+
// Summary section from commits
|
|
141
|
+
const commits = await this.githubClient.getCommitMessages(`origin/${baseBranch}`, headBranch);
|
|
142
|
+
if (commits.length > 0) {
|
|
143
|
+
sections.push('## Summary');
|
|
144
|
+
for (const commit of commits.slice(0, 10)) { // Limit to 10 commits
|
|
145
|
+
sections.push(`- ${commit}`);
|
|
146
|
+
}
|
|
147
|
+
if (commits.length > 10) {
|
|
148
|
+
sections.push(`- ... and ${commits.length - 10} more commits`);
|
|
149
|
+
}
|
|
150
|
+
sections.push('');
|
|
151
|
+
}
|
|
152
|
+
// Test coverage section
|
|
153
|
+
const changedFiles = await this.githubClient.getChangedFiles(`origin/${baseBranch}`, headBranch);
|
|
154
|
+
const testFiles = changedFiles.filter(f => f.includes('.test.') ||
|
|
155
|
+
f.includes('.spec.') ||
|
|
156
|
+
f.includes('__tests__') ||
|
|
157
|
+
f.startsWith('tests/'));
|
|
158
|
+
if (testFiles.length > 0) {
|
|
159
|
+
sections.push('## Test Coverage');
|
|
160
|
+
for (const file of testFiles) {
|
|
161
|
+
sections.push(`- \`${file}\``);
|
|
162
|
+
}
|
|
163
|
+
sections.push('');
|
|
164
|
+
}
|
|
165
|
+
// Linked issues section
|
|
166
|
+
if (issues.length > 0) {
|
|
167
|
+
sections.push('## Linked Issues');
|
|
168
|
+
for (const issue of issues) {
|
|
169
|
+
sections.push(`Closes #${issue.number}`);
|
|
170
|
+
}
|
|
171
|
+
sections.push('');
|
|
172
|
+
}
|
|
173
|
+
return sections.join('\n').trim();
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Comment on linked issues with PR reference.
|
|
177
|
+
*/
|
|
178
|
+
async commentOnLinkedIssues(repo, prNumber, issues) {
|
|
179
|
+
for (const issue of issues) {
|
|
180
|
+
try {
|
|
181
|
+
await this.githubClient.commentOnIssue(repo, issue.number, `PR: #${prNumber}`);
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
// Ignore errors commenting on issues
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Add PR to watch list.
|
|
190
|
+
*/
|
|
191
|
+
async watchPr(repo, pr) {
|
|
192
|
+
try {
|
|
193
|
+
const userId = await this.prRepository.getUserId();
|
|
194
|
+
await this.prRepository.upsertPr(userId, {
|
|
195
|
+
number: pr.number,
|
|
196
|
+
repo,
|
|
197
|
+
title: pr.title,
|
|
198
|
+
status: pr.isDraft ? 'open' : 'open',
|
|
199
|
+
watching: true,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
// Ignore errors watching PR
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Create Neo4j nodes and CLOSES relationships.
|
|
208
|
+
*/
|
|
209
|
+
async createNeo4jRelationships(repo, pr, issues) {
|
|
210
|
+
try {
|
|
211
|
+
const userId = await this.prRepository.getUserId();
|
|
212
|
+
// Upsert issues
|
|
213
|
+
for (const issue of issues) {
|
|
214
|
+
await this.prRepository.upsertIssue(userId, {
|
|
215
|
+
number: issue.number,
|
|
216
|
+
repo,
|
|
217
|
+
title: issue.title,
|
|
218
|
+
url: `https://github.com/${repo}/issues/${issue.number}`,
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
// Create CLOSES relationships
|
|
222
|
+
await this.prRepository.linkPrToIssues(userId, repo, pr.number, issues.map(i => i.number));
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
// Ignore errors creating relationships
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
exports.PrCreateHandler = PrCreateHandler;
|
|
230
|
+
//# sourceMappingURL=PrCreateHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrCreateHandler.js","sourceRoot":"","sources":["../../../../../src/lib/application/handlers/pr/PrCreateHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PR Link Handler
|
|
3
|
+
*
|
|
4
|
+
* Links a PR to an issue, creating a CLOSES relationship in Neo4j
|
|
5
|
+
* and optionally commenting on the GitHub issue.
|
|
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 link operation.
|
|
13
|
+
*/
|
|
14
|
+
export interface IPrLinkOptions {
|
|
15
|
+
/** Repository in owner/repo format. Uses current repo if not provided. */
|
|
16
|
+
readonly repo?: string;
|
|
17
|
+
/** PR number to link. */
|
|
18
|
+
readonly prNumber: number;
|
|
19
|
+
/** Issue number to link to. */
|
|
20
|
+
readonly issueNumber: number;
|
|
21
|
+
/** Skip commenting on the GitHub issue. */
|
|
22
|
+
readonly noComment?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* PR info in link result.
|
|
26
|
+
*/
|
|
27
|
+
export interface IPrLinkPrInfo {
|
|
28
|
+
readonly number: number;
|
|
29
|
+
readonly repo: string;
|
|
30
|
+
readonly title: string;
|
|
31
|
+
readonly url: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Issue info in link result.
|
|
35
|
+
*/
|
|
36
|
+
export interface IPrLinkIssueInfo {
|
|
37
|
+
readonly number: number;
|
|
38
|
+
readonly repo: string;
|
|
39
|
+
readonly title: string;
|
|
40
|
+
readonly url: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Result from PrLinkHandler.
|
|
44
|
+
*/
|
|
45
|
+
export interface IPrLinkResult {
|
|
46
|
+
readonly success: boolean;
|
|
47
|
+
readonly message: string;
|
|
48
|
+
/** PR details if successful. */
|
|
49
|
+
readonly pr?: IPrLinkPrInfo;
|
|
50
|
+
/** Issue details if successful. */
|
|
51
|
+
readonly issue?: IPrLinkIssueInfo;
|
|
52
|
+
/** True if the PR was already linked to this issue. */
|
|
53
|
+
readonly alreadyLinked: boolean;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Handler for linking PRs to issues.
|
|
57
|
+
*/
|
|
58
|
+
export declare class PrLinkHandler {
|
|
59
|
+
private readonly githubClient;
|
|
60
|
+
private readonly prRepository;
|
|
61
|
+
constructor(githubClient: IGithubClient, prRepository: IPullRequestRepository);
|
|
62
|
+
/**
|
|
63
|
+
* Link a PR to an issue.
|
|
64
|
+
*
|
|
65
|
+
* Creates a CLOSES relationship in Neo4j and optionally comments
|
|
66
|
+
* on the GitHub issue. Idempotent - linking an already-linked
|
|
67
|
+
* PR/issue pair returns success with alreadyLinked=true.
|
|
68
|
+
*/
|
|
69
|
+
execute(options: IPrLinkOptions): Promise<IPrLinkResult>;
|
|
70
|
+
/**
|
|
71
|
+
* Map GitHub PR state to domain status.
|
|
72
|
+
*/
|
|
73
|
+
private mapPrStatus;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=PrLinkHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrLinkHandler.d.ts","sourceRoot":"","sources":["../../../../../src/lib/application/handlers/pr/PrLinkHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AAEpG;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+BAA+B;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,2CAA2C;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC;IAC5B,mCAAmC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAClC,uDAAuD;IACvD,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED;;GAEG;AACH,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,YAAY,EAAE,aAAa,EAC3B,YAAY,EAAE,sBAAsB;IAGvD;;;;;;OAMG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IA8H9D;;OAEG;IACH,OAAO,CAAC,WAAW;CAWpB"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PR Link Handler
|
|
4
|
+
*
|
|
5
|
+
* Links a PR to an issue, creating a CLOSES relationship in Neo4j
|
|
6
|
+
* and optionally commenting on the GitHub issue.
|
|
7
|
+
*
|
|
8
|
+
* @see .dev/features/github-pr.md for full specification
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.PrLinkHandler = void 0;
|
|
12
|
+
/**
|
|
13
|
+
* Handler for linking PRs to issues.
|
|
14
|
+
*/
|
|
15
|
+
class PrLinkHandler {
|
|
16
|
+
constructor(githubClient, prRepository) {
|
|
17
|
+
this.githubClient = githubClient;
|
|
18
|
+
this.prRepository = prRepository;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Link a PR to an issue.
|
|
22
|
+
*
|
|
23
|
+
* Creates a CLOSES relationship in Neo4j and optionally comments
|
|
24
|
+
* on the GitHub issue. Idempotent - linking an already-linked
|
|
25
|
+
* PR/issue pair returns success with alreadyLinked=true.
|
|
26
|
+
*/
|
|
27
|
+
async execute(options) {
|
|
28
|
+
const { prNumber, issueNumber, noComment } = options;
|
|
29
|
+
try {
|
|
30
|
+
// 1. Resolve repository
|
|
31
|
+
const repo = options.repo || await this.githubClient.getCurrentRepo();
|
|
32
|
+
// 2. Validate PR exists on GitHub
|
|
33
|
+
const ghPr = await this.githubClient.getPr(repo, prNumber);
|
|
34
|
+
if (!ghPr) {
|
|
35
|
+
return {
|
|
36
|
+
success: false,
|
|
37
|
+
message: `PR #${prNumber} not found in repository ${repo}`,
|
|
38
|
+
alreadyLinked: false,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// 3. Validate Issue exists on GitHub
|
|
42
|
+
const ghIssue = await this.githubClient.getIssue(repo, issueNumber);
|
|
43
|
+
if (!ghIssue) {
|
|
44
|
+
return {
|
|
45
|
+
success: false,
|
|
46
|
+
message: `Issue #${issueNumber} not found in repository ${repo}`,
|
|
47
|
+
alreadyLinked: false,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
// 4. Get user ID for Neo4j scoping
|
|
51
|
+
const userId = await this.prRepository.getUserId();
|
|
52
|
+
// 5. Ensure PR node exists in Neo4j
|
|
53
|
+
const existingPr = await this.prRepository.findPr(userId, repo, prNumber);
|
|
54
|
+
if (!existingPr) {
|
|
55
|
+
await this.prRepository.upsertPr(userId, {
|
|
56
|
+
number: prNumber,
|
|
57
|
+
repo,
|
|
58
|
+
title: ghPr.title,
|
|
59
|
+
status: this.mapPrStatus(ghPr.state),
|
|
60
|
+
watching: false,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
// 6. Upsert Issue node in Neo4j
|
|
64
|
+
await this.prRepository.upsertIssue(userId, {
|
|
65
|
+
number: issueNumber,
|
|
66
|
+
repo,
|
|
67
|
+
title: ghIssue.title,
|
|
68
|
+
url: ghIssue.url,
|
|
69
|
+
});
|
|
70
|
+
// 7. Check existing linked issues
|
|
71
|
+
const existingIssues = await this.prRepository.findIssuesByPr(userId, repo, prNumber);
|
|
72
|
+
const alreadyLinked = existingIssues.some(i => i.number === issueNumber);
|
|
73
|
+
if (alreadyLinked) {
|
|
74
|
+
return {
|
|
75
|
+
success: true,
|
|
76
|
+
message: `PR #${prNumber} is already linked to Issue #${issueNumber}`,
|
|
77
|
+
pr: {
|
|
78
|
+
number: prNumber,
|
|
79
|
+
repo,
|
|
80
|
+
title: ghPr.title,
|
|
81
|
+
url: `https://github.com/${repo}/pull/${prNumber}`,
|
|
82
|
+
},
|
|
83
|
+
issue: {
|
|
84
|
+
number: issueNumber,
|
|
85
|
+
repo,
|
|
86
|
+
title: ghIssue.title,
|
|
87
|
+
url: ghIssue.url,
|
|
88
|
+
},
|
|
89
|
+
alreadyLinked: true,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
// 8. Link PR to issues (preserve existing + add new)
|
|
93
|
+
const existingIssueNumbers = existingIssues.map(i => i.number);
|
|
94
|
+
const allIssueNumbers = [...existingIssueNumbers, issueNumber];
|
|
95
|
+
await this.prRepository.linkPrToIssues(userId, repo, prNumber, allIssueNumbers);
|
|
96
|
+
// 9. Comment on GitHub issue (unless noComment)
|
|
97
|
+
if (!noComment) {
|
|
98
|
+
try {
|
|
99
|
+
await this.githubClient.commentOnIssue(repo, issueNumber, `Linked to PR #${prNumber}`);
|
|
100
|
+
}
|
|
101
|
+
catch (commentError) {
|
|
102
|
+
// Log but don't fail the operation if comment fails
|
|
103
|
+
// The Neo4j link was successful
|
|
104
|
+
console.warn(`Warning: Failed to comment on issue #${issueNumber}: ${commentError instanceof Error ? commentError.message : String(commentError)}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// 10. Return success
|
|
108
|
+
return {
|
|
109
|
+
success: true,
|
|
110
|
+
message: `Linked PR #${prNumber} to Issue #${issueNumber}`,
|
|
111
|
+
pr: {
|
|
112
|
+
number: prNumber,
|
|
113
|
+
repo,
|
|
114
|
+
title: ghPr.title,
|
|
115
|
+
url: `https://github.com/${repo}/pull/${prNumber}`,
|
|
116
|
+
},
|
|
117
|
+
issue: {
|
|
118
|
+
number: issueNumber,
|
|
119
|
+
repo,
|
|
120
|
+
title: ghIssue.title,
|
|
121
|
+
url: ghIssue.url,
|
|
122
|
+
},
|
|
123
|
+
alreadyLinked: false,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
128
|
+
return {
|
|
129
|
+
success: false,
|
|
130
|
+
message: `Failed to link PR #${prNumber} to Issue #${issueNumber}: ${message}`,
|
|
131
|
+
alreadyLinked: false,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Map GitHub PR state to domain status.
|
|
137
|
+
*/
|
|
138
|
+
mapPrStatus(state) {
|
|
139
|
+
switch (state) {
|
|
140
|
+
case 'MERGED':
|
|
141
|
+
return 'merged';
|
|
142
|
+
case 'CLOSED':
|
|
143
|
+
return 'closed';
|
|
144
|
+
case 'OPEN':
|
|
145
|
+
default:
|
|
146
|
+
return 'open';
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
exports.PrLinkHandler = PrLinkHandler;
|
|
151
|
+
//# sourceMappingURL=PrLinkHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrLinkHandler.js","sourceRoot":"","sources":["../../../../../src/lib/application/handlers/pr/PrLinkHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PR Poll Handler
|
|
3
|
+
*
|
|
4
|
+
* Polls all watched PRs for a user and detects state changes.
|
|
5
|
+
* Designed to be invoked by cron (no TTY) every 5 minutes.
|
|
6
|
+
*
|
|
7
|
+
* User-scoped: polls ALL watched PRs across all repos in a single invocation.
|
|
8
|
+
*
|
|
9
|
+
* @see .dev/features/github-pr.md for full specification
|
|
10
|
+
*/
|
|
11
|
+
import type { IGithubClient } from '../../../domain/interfaces/dal/IGithubClient';
|
|
12
|
+
import type { IPullRequestRepository } from '../../../domain/interfaces/dal/IPullRequestRepository';
|
|
13
|
+
import type { CheckStatus, PullRequestStatus } from '../../../domain/interfaces/types/IPullRequest';
|
|
14
|
+
import type { INotificationService } from '../../../domain/interfaces/INotificationService';
|
|
15
|
+
import type { IMemoryWriter } from '../../../domain/interfaces/IMemoryService';
|
|
16
|
+
/**
|
|
17
|
+
* State change detected during polling.
|
|
18
|
+
*/
|
|
19
|
+
export interface IStateChange {
|
|
20
|
+
readonly type: 'checks_updated' | 'new_comment' | 'comment_resolved' | 'pr_approved' | 'pr_merged' | 'pr_closed' | 'new_reply';
|
|
21
|
+
readonly description: string;
|
|
22
|
+
readonly prNumber: number;
|
|
23
|
+
readonly repo: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Result for a single PR poll.
|
|
27
|
+
*/
|
|
28
|
+
export interface IPrPollItem {
|
|
29
|
+
readonly number: number;
|
|
30
|
+
readonly repo: string;
|
|
31
|
+
readonly title: string;
|
|
32
|
+
readonly previousState: {
|
|
33
|
+
readonly status: PullRequestStatus;
|
|
34
|
+
readonly checksStatus: CheckStatus;
|
|
35
|
+
readonly unresolvedComments: number;
|
|
36
|
+
};
|
|
37
|
+
readonly currentState: {
|
|
38
|
+
readonly status: PullRequestStatus;
|
|
39
|
+
readonly checksStatus: CheckStatus;
|
|
40
|
+
readonly unresolvedComments: number;
|
|
41
|
+
};
|
|
42
|
+
readonly changes: readonly IStateChange[];
|
|
43
|
+
readonly unwatched: boolean;
|
|
44
|
+
readonly error?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Result from PrPollHandler.
|
|
48
|
+
*/
|
|
49
|
+
export interface IPrPollResult {
|
|
50
|
+
readonly success: boolean;
|
|
51
|
+
readonly message: string;
|
|
52
|
+
readonly polledAt: string;
|
|
53
|
+
readonly totalWatched: number;
|
|
54
|
+
readonly totalChanges: number;
|
|
55
|
+
readonly totalErrors: number;
|
|
56
|
+
readonly items: readonly IPrPollItem[];
|
|
57
|
+
readonly logPath?: string;
|
|
58
|
+
/** Auto-address output for PRs with new comments (when autoAddress is enabled) */
|
|
59
|
+
readonly addressOutput?: readonly IAutoAddressOutput[];
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Auto-address output for a single PR.
|
|
63
|
+
*/
|
|
64
|
+
export interface IAutoAddressOutput {
|
|
65
|
+
readonly prNumber: number;
|
|
66
|
+
readonly repo: string;
|
|
67
|
+
readonly formattedOutput: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Options for poll command.
|
|
71
|
+
*/
|
|
72
|
+
export interface IPrPollOptions {
|
|
73
|
+
/** Auto-unwatch merged/closed PRs (default: true) */
|
|
74
|
+
readonly autoUnwatch?: boolean;
|
|
75
|
+
/** Write logs to file (default: true) */
|
|
76
|
+
readonly logToFile?: boolean;
|
|
77
|
+
/** Limit concurrent GitHub API calls (default: 5) */
|
|
78
|
+
readonly concurrency?: number;
|
|
79
|
+
/** Send desktop notifications for state changes (default: false) */
|
|
80
|
+
readonly notify?: boolean;
|
|
81
|
+
/** Auto-address new comments by outputting formatted instructions (default: true) */
|
|
82
|
+
readonly autoAddress?: boolean;
|
|
83
|
+
/** Poll a specific PR number instead of watched PRs */
|
|
84
|
+
readonly prNumber?: number;
|
|
85
|
+
/** Repository for the target PR (owner/repo). Defaults to current repo. */
|
|
86
|
+
readonly repo?: string;
|
|
87
|
+
/** Use current PR from branch (foreground watch). */
|
|
88
|
+
readonly current?: boolean;
|
|
89
|
+
/** Use local cache for comment detection (no Neo4j). */
|
|
90
|
+
readonly useLocalCache?: boolean;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Handler for PR polling operations.
|
|
94
|
+
*/
|
|
95
|
+
export declare class PrPollHandler {
|
|
96
|
+
private readonly githubClient;
|
|
97
|
+
private readonly prRepository;
|
|
98
|
+
private readonly notificationService?;
|
|
99
|
+
private readonly memoryService?;
|
|
100
|
+
private readonly groupId?;
|
|
101
|
+
private readonly logPath;
|
|
102
|
+
private readonly cachePath;
|
|
103
|
+
constructor(githubClient: IGithubClient, prRepository: IPullRequestRepository, notificationService?: INotificationService | undefined, memoryService?: IMemoryWriter | undefined, groupId?: string | undefined);
|
|
104
|
+
/**
|
|
105
|
+
* Poll all watched PRs for the current user.
|
|
106
|
+
*/
|
|
107
|
+
poll(options?: IPrPollOptions): Promise<IPrPollResult>;
|
|
108
|
+
/**
|
|
109
|
+
* Poll a single PR and detect changes.
|
|
110
|
+
*/
|
|
111
|
+
private pollSinglePr;
|
|
112
|
+
/**
|
|
113
|
+
* Detect new comments and replies.
|
|
114
|
+
*/
|
|
115
|
+
private detectNewComments;
|
|
116
|
+
/**
|
|
117
|
+
* Detect comment resolution changes via GraphQL review threads.
|
|
118
|
+
* Updates stored comments and returns state changes for newly resolved threads.
|
|
119
|
+
*/
|
|
120
|
+
private detectCommentResolution;
|
|
121
|
+
/**
|
|
122
|
+
* Calculate overall check status from individual checks.
|
|
123
|
+
*/
|
|
124
|
+
private calculateOverallCheckStatus;
|
|
125
|
+
/**
|
|
126
|
+
* Count unresolved comments.
|
|
127
|
+
*/
|
|
128
|
+
private countUnresolvedComments;
|
|
129
|
+
/**
|
|
130
|
+
* Map GitHub PR state to domain status.
|
|
131
|
+
*/
|
|
132
|
+
private mapPrStatus;
|
|
133
|
+
/**
|
|
134
|
+
* Map GitHub check state to domain status.
|
|
135
|
+
*/
|
|
136
|
+
private mapCheckStatus;
|
|
137
|
+
/**
|
|
138
|
+
* Get error message from unknown error.
|
|
139
|
+
*/
|
|
140
|
+
private getErrorMessage;
|
|
141
|
+
/**
|
|
142
|
+
* Write logs to file.
|
|
143
|
+
*/
|
|
144
|
+
private writeLog;
|
|
145
|
+
/**
|
|
146
|
+
* Split array into batches.
|
|
147
|
+
*/
|
|
148
|
+
private batchArray;
|
|
149
|
+
private resolveTarget;
|
|
150
|
+
private getCacheKey;
|
|
151
|
+
private getCachedState;
|
|
152
|
+
private loadCache;
|
|
153
|
+
private writeCache;
|
|
154
|
+
private countUnresolvedThreads;
|
|
155
|
+
private detectNewCommentsFromCache;
|
|
156
|
+
/**
|
|
157
|
+
* Collect notifications from poll results.
|
|
158
|
+
*/
|
|
159
|
+
private collectNotifications;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=PrPollHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrPollHandler.d.ts","sourceRoot":"","sources":["../../../../../src/lib/application/handlers/pr/PrPollHandler.ts"],"names":[],"mappings":"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"}
|