@cat-factory/worker 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/app.d.ts +22 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +49 -0
- package/dist/app.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +234 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/ai/CloudflareModelProvider.d.ts +23 -0
- package/dist/infrastructure/ai/CloudflareModelProvider.d.ts.map +1 -0
- package/dist/infrastructure/ai/CloudflareModelProvider.js +62 -0
- package/dist/infrastructure/ai/CloudflareModelProvider.js.map +1 -0
- package/dist/infrastructure/ai/CompositeAgentExecutor.d.ts +2 -0
- package/dist/infrastructure/ai/CompositeAgentExecutor.d.ts.map +1 -0
- package/dist/infrastructure/ai/CompositeAgentExecutor.js +5 -0
- package/dist/infrastructure/ai/CompositeAgentExecutor.js.map +1 -0
- package/dist/infrastructure/ai/ContainerAgentExecutor.d.ts +2 -0
- package/dist/infrastructure/ai/ContainerAgentExecutor.d.ts.map +1 -0
- package/dist/infrastructure/ai/ContainerAgentExecutor.js +5 -0
- package/dist/infrastructure/ai/ContainerAgentExecutor.js.map +1 -0
- package/dist/infrastructure/ai/ContainerRepoBootstrapper.d.ts +2 -0
- package/dist/infrastructure/ai/ContainerRepoBootstrapper.d.ts.map +1 -0
- package/dist/infrastructure/ai/ContainerRepoBootstrapper.js +5 -0
- package/dist/infrastructure/ai/ContainerRepoBootstrapper.js.map +1 -0
- package/dist/infrastructure/ai/ContainerRepoScanner.d.ts +39 -0
- package/dist/infrastructure/ai/ContainerRepoScanner.d.ts.map +1 -0
- package/dist/infrastructure/ai/ContainerRepoScanner.js +115 -0
- package/dist/infrastructure/ai/ContainerRepoScanner.js.map +1 -0
- package/dist/infrastructure/ai/LlmFragmentSelector.d.ts +2 -0
- package/dist/infrastructure/ai/LlmFragmentSelector.d.ts.map +1 -0
- package/dist/infrastructure/ai/LlmFragmentSelector.js +4 -0
- package/dist/infrastructure/ai/LlmFragmentSelector.js.map +1 -0
- package/dist/infrastructure/ai/RunnerJobClient.d.ts +2 -0
- package/dist/infrastructure/ai/RunnerJobClient.d.ts.map +1 -0
- package/dist/infrastructure/ai/RunnerJobClient.js +5 -0
- package/dist/infrastructure/ai/RunnerJobClient.js.map +1 -0
- package/dist/infrastructure/ai/WorkersAiLlmUpstream.d.ts +28 -0
- package/dist/infrastructure/ai/WorkersAiLlmUpstream.d.ts.map +1 -0
- package/dist/infrastructure/ai/WorkersAiLlmUpstream.js +486 -0
- package/dist/infrastructure/ai/WorkersAiLlmUpstream.js.map +1 -0
- package/dist/infrastructure/ai/providerEndpoints.d.ts +17 -0
- package/dist/infrastructure/ai/providerEndpoints.d.ts.map +1 -0
- package/dist/infrastructure/ai/providerEndpoints.js +42 -0
- package/dist/infrastructure/ai/providerEndpoints.js.map +1 -0
- package/dist/infrastructure/ai/registries.d.ts +11 -0
- package/dist/infrastructure/ai/registries.d.ts.map +1 -0
- package/dist/infrastructure/ai/registries.js +14 -0
- package/dist/infrastructure/ai/registries.js.map +1 -0
- package/dist/infrastructure/auth/GitHubOAuth.d.ts +2 -0
- package/dist/infrastructure/auth/GitHubOAuth.d.ts.map +1 -0
- package/dist/infrastructure/auth/GitHubOAuth.js +3 -0
- package/dist/infrastructure/auth/GitHubOAuth.js.map +1 -0
- package/dist/infrastructure/auth/middleware.d.ts +2 -0
- package/dist/infrastructure/auth/middleware.d.ts.map +1 -0
- package/dist/infrastructure/auth/middleware.js +3 -0
- package/dist/infrastructure/auth/middleware.js.map +1 -0
- package/dist/infrastructure/auth/signing.d.ts +3 -0
- package/dist/infrastructure/auth/signing.d.ts.map +1 -0
- package/dist/infrastructure/auth/signing.js +3 -0
- package/dist/infrastructure/auth/signing.js.map +1 -0
- package/dist/infrastructure/config/agents.d.ts +6 -0
- package/dist/infrastructure/config/agents.d.ts.map +1 -0
- package/dist/infrastructure/config/agents.js +100 -0
- package/dist/infrastructure/config/agents.js.map +1 -0
- package/dist/infrastructure/config/auth.d.ts +13 -0
- package/dist/infrastructure/config/auth.d.ts.map +1 -0
- package/dist/infrastructure/config/auth.js +80 -0
- package/dist/infrastructure/config/auth.js.map +1 -0
- package/dist/infrastructure/config/cors.d.ts +2 -0
- package/dist/infrastructure/config/cors.d.ts.map +1 -0
- package/dist/infrastructure/config/cors.js +3 -0
- package/dist/infrastructure/config/cors.js.map +1 -0
- package/dist/infrastructure/config/datadog.d.ts +6 -0
- package/dist/infrastructure/config/datadog.d.ts.map +1 -0
- package/dist/infrastructure/config/datadog.js +22 -0
- package/dist/infrastructure/config/datadog.js.map +1 -0
- package/dist/infrastructure/config/documents.d.ts +5 -0
- package/dist/infrastructure/config/documents.d.ts.map +1 -0
- package/dist/infrastructure/config/documents.js +36 -0
- package/dist/infrastructure/config/documents.js.map +1 -0
- package/dist/infrastructure/config/email.d.ts +5 -0
- package/dist/infrastructure/config/email.d.ts.map +1 -0
- package/dist/infrastructure/config/email.js +12 -0
- package/dist/infrastructure/config/email.js.map +1 -0
- package/dist/infrastructure/config/environments.d.ts +5 -0
- package/dist/infrastructure/config/environments.d.ts.map +1 -0
- package/dist/infrastructure/config/environments.js +15 -0
- package/dist/infrastructure/config/environments.js.map +1 -0
- package/dist/infrastructure/config/execution.d.ts +5 -0
- package/dist/infrastructure/config/execution.d.ts.map +1 -0
- package/dist/infrastructure/config/execution.js +21 -0
- package/dist/infrastructure/config/execution.js.map +1 -0
- package/dist/infrastructure/config/fragmentLibrary.d.ts +5 -0
- package/dist/infrastructure/config/fragmentLibrary.d.ts.map +1 -0
- package/dist/infrastructure/config/fragmentLibrary.js +7 -0
- package/dist/infrastructure/config/fragmentLibrary.js.map +1 -0
- package/dist/infrastructure/config/github.d.ts +5 -0
- package/dist/infrastructure/config/github.d.ts.map +1 -0
- package/dist/infrastructure/config/github.js +25 -0
- package/dist/infrastructure/config/github.js.map +1 -0
- package/dist/infrastructure/config/index.d.ts +20 -0
- package/dist/infrastructure/config/index.d.ts.map +1 -0
- package/dist/infrastructure/config/index.js +52 -0
- package/dist/infrastructure/config/index.js.map +1 -0
- package/dist/infrastructure/config/langfuse.d.ts +10 -0
- package/dist/infrastructure/config/langfuse.d.ts.map +1 -0
- package/dist/infrastructure/config/langfuse.js +17 -0
- package/dist/infrastructure/config/langfuse.js.map +1 -0
- package/dist/infrastructure/config/observability.d.ts +10 -0
- package/dist/infrastructure/config/observability.d.ts.map +1 -0
- package/dist/infrastructure/config/observability.js +11 -0
- package/dist/infrastructure/config/observability.js.map +1 -0
- package/dist/infrastructure/config/retention.d.ts +5 -0
- package/dist/infrastructure/config/retention.d.ts.map +1 -0
- package/dist/infrastructure/config/retention.js +15 -0
- package/dist/infrastructure/config/retention.js.map +1 -0
- package/dist/infrastructure/config/runners.d.ts +5 -0
- package/dist/infrastructure/config/runners.d.ts.map +1 -0
- package/dist/infrastructure/config/runners.js +13 -0
- package/dist/infrastructure/config/runners.js.map +1 -0
- package/dist/infrastructure/config/slack.d.ts +5 -0
- package/dist/infrastructure/config/slack.d.ts.map +1 -0
- package/dist/infrastructure/config/slack.js +17 -0
- package/dist/infrastructure/config/slack.js.map +1 -0
- package/dist/infrastructure/config/spending.d.ts +4 -0
- package/dist/infrastructure/config/spending.d.ts.map +1 -0
- package/dist/infrastructure/config/spending.js +36 -0
- package/dist/infrastructure/config/spending.js.map +1 -0
- package/dist/infrastructure/config/tasks.d.ts +5 -0
- package/dist/infrastructure/config/tasks.d.ts.map +1 -0
- package/dist/infrastructure/config/tasks.js +31 -0
- package/dist/infrastructure/config/tasks.js.map +1 -0
- package/dist/infrastructure/config/utils.d.ts +6 -0
- package/dist/infrastructure/config/utils.d.ts.map +1 -0
- package/dist/infrastructure/config/utils.js +24 -0
- package/dist/infrastructure/config/utils.js.map +1 -0
- package/dist/infrastructure/container.d.ts +8 -0
- package/dist/infrastructure/container.d.ts.map +1 -0
- package/dist/infrastructure/container.js +1157 -0
- package/dist/infrastructure/container.js.map +1 -0
- package/dist/infrastructure/containers/CloudflareContainerTransport.d.ts +22 -0
- package/dist/infrastructure/containers/CloudflareContainerTransport.d.ts.map +1 -0
- package/dist/infrastructure/containers/CloudflareContainerTransport.js +129 -0
- package/dist/infrastructure/containers/CloudflareContainerTransport.js.map +1 -0
- package/dist/infrastructure/containers/ContainerInstanceRegistry.d.ts +62 -0
- package/dist/infrastructure/containers/ContainerInstanceRegistry.d.ts.map +1 -0
- package/dist/infrastructure/containers/ContainerInstanceRegistry.js +74 -0
- package/dist/infrastructure/containers/ContainerInstanceRegistry.js.map +1 -0
- package/dist/infrastructure/containers/ContainerSessionService.d.ts +2 -0
- package/dist/infrastructure/containers/ContainerSessionService.d.ts.map +1 -0
- package/dist/infrastructure/containers/ContainerSessionService.js +3 -0
- package/dist/infrastructure/containers/ContainerSessionService.js.map +1 -0
- package/dist/infrastructure/containers/ExecutionContainer.d.ts +48 -0
- package/dist/infrastructure/containers/ExecutionContainer.d.ts.map +1 -0
- package/dist/infrastructure/containers/ExecutionContainer.js +88 -0
- package/dist/infrastructure/containers/ExecutionContainer.js.map +1 -0
- package/dist/infrastructure/documents/ConfluenceProvider.d.ts +29 -0
- package/dist/infrastructure/documents/ConfluenceProvider.d.ts.map +1 -0
- package/dist/infrastructure/documents/ConfluenceProvider.js +179 -0
- package/dist/infrastructure/documents/ConfluenceProvider.js.map +1 -0
- package/dist/infrastructure/documents/GitHubDocsProvider.d.ts +42 -0
- package/dist/infrastructure/documents/GitHubDocsProvider.d.ts.map +1 -0
- package/dist/infrastructure/documents/GitHubDocsProvider.js +85 -0
- package/dist/infrastructure/documents/GitHubDocsProvider.js.map +1 -0
- package/dist/infrastructure/documents/NotionProvider.d.ts +32 -0
- package/dist/infrastructure/documents/NotionProvider.d.ts.map +1 -0
- package/dist/infrastructure/documents/NotionProvider.js +220 -0
- package/dist/infrastructure/documents/NotionProvider.js.map +1 -0
- package/dist/infrastructure/durable-objects/WorkspaceEventsHub.d.ts +20 -0
- package/dist/infrastructure/durable-objects/WorkspaceEventsHub.d.ts.map +1 -0
- package/dist/infrastructure/durable-objects/WorkspaceEventsHub.js +62 -0
- package/dist/infrastructure/durable-objects/WorkspaceEventsHub.js.map +1 -0
- package/dist/infrastructure/env.d.ts +370 -0
- package/dist/infrastructure/env.d.ts.map +1 -0
- package/dist/infrastructure/env.js +2 -0
- package/dist/infrastructure/env.js.map +1 -0
- package/dist/infrastructure/environments/HttpEnvironmentProvider.d.ts +27 -0
- package/dist/infrastructure/environments/HttpEnvironmentProvider.d.ts.map +1 -0
- package/dist/infrastructure/environments/HttpEnvironmentProvider.js +314 -0
- package/dist/infrastructure/environments/HttpEnvironmentProvider.js.map +1 -0
- package/dist/infrastructure/environments/WebCryptoSecretCipher.d.ts +2 -0
- package/dist/infrastructure/environments/WebCryptoSecretCipher.d.ts.map +1 -0
- package/dist/infrastructure/environments/WebCryptoSecretCipher.js +5 -0
- package/dist/infrastructure/environments/WebCryptoSecretCipher.js.map +1 -0
- package/dist/infrastructure/environments/sweep.d.ts +5 -0
- package/dist/infrastructure/environments/sweep.d.ts.map +1 -0
- package/dist/infrastructure/environments/sweep.js +16 -0
- package/dist/infrastructure/environments/sweep.js.map +1 -0
- package/dist/infrastructure/events/DurableObjectEventPublisher.d.ts +25 -0
- package/dist/infrastructure/events/DurableObjectEventPublisher.d.ts.map +1 -0
- package/dist/infrastructure/events/DurableObjectEventPublisher.js +64 -0
- package/dist/infrastructure/events/DurableObjectEventPublisher.js.map +1 -0
- package/dist/infrastructure/events/InAppNotificationChannel.d.ts +19 -0
- package/dist/infrastructure/events/InAppNotificationChannel.d.ts.map +1 -0
- package/dist/infrastructure/events/InAppNotificationChannel.js +22 -0
- package/dist/infrastructure/events/InAppNotificationChannel.js.map +1 -0
- package/dist/infrastructure/gateways/DoRealtimeGateway.d.ts +15 -0
- package/dist/infrastructure/gateways/DoRealtimeGateway.d.ts.map +1 -0
- package/dist/infrastructure/gateways/DoRealtimeGateway.js +20 -0
- package/dist/infrastructure/gateways/DoRealtimeGateway.js.map +1 -0
- package/dist/infrastructure/gateways/GitHubGateways.d.ts +27 -0
- package/dist/infrastructure/gateways/GitHubGateways.d.ts.map +1 -0
- package/dist/infrastructure/gateways/GitHubGateways.js +48 -0
- package/dist/infrastructure/gateways/GitHubGateways.js.map +1 -0
- package/dist/infrastructure/github/FetchGitHubClient.d.ts +2 -0
- package/dist/infrastructure/github/FetchGitHubClient.d.ts.map +1 -0
- package/dist/infrastructure/github/FetchGitHubClient.js +4 -0
- package/dist/infrastructure/github/FetchGitHubClient.js.map +1 -0
- package/dist/infrastructure/github/FetchGitHubProvisioningClient.d.ts +2 -0
- package/dist/infrastructure/github/FetchGitHubProvisioningClient.d.ts.map +1 -0
- package/dist/infrastructure/github/FetchGitHubProvisioningClient.js +5 -0
- package/dist/infrastructure/github/FetchGitHubProvisioningClient.js.map +1 -0
- package/dist/infrastructure/github/GitHubAppAuth.d.ts +2 -0
- package/dist/infrastructure/github/GitHubAppAuth.d.ts.map +1 -0
- package/dist/infrastructure/github/GitHubAppAuth.js +5 -0
- package/dist/infrastructure/github/GitHubAppAuth.js.map +1 -0
- package/dist/infrastructure/github/GitHubAppRegistry.d.ts +2 -0
- package/dist/infrastructure/github/GitHubAppRegistry.d.ts.map +1 -0
- package/dist/infrastructure/github/GitHubAppRegistry.js +4 -0
- package/dist/infrastructure/github/GitHubAppRegistry.js.map +1 -0
- package/dist/infrastructure/github/GitHubCiStatusProvider.d.ts +2 -0
- package/dist/infrastructure/github/GitHubCiStatusProvider.d.ts.map +1 -0
- package/dist/infrastructure/github/GitHubCiStatusProvider.js +4 -0
- package/dist/infrastructure/github/GitHubCiStatusProvider.js.map +1 -0
- package/dist/infrastructure/github/GitHubMergeabilityProvider.d.ts +2 -0
- package/dist/infrastructure/github/GitHubMergeabilityProvider.d.ts.map +1 -0
- package/dist/infrastructure/github/GitHubMergeabilityProvider.js +4 -0
- package/dist/infrastructure/github/GitHubMergeabilityProvider.js.map +1 -0
- package/dist/infrastructure/github/GitHubPullRequestMerger.d.ts +2 -0
- package/dist/infrastructure/github/GitHubPullRequestMerger.d.ts.map +1 -0
- package/dist/infrastructure/github/GitHubPullRequestMerger.js +4 -0
- package/dist/infrastructure/github/GitHubPullRequestMerger.js.map +1 -0
- package/dist/infrastructure/github/WebCryptoWebhookVerifier.d.ts +2 -0
- package/dist/infrastructure/github/WebCryptoWebhookVerifier.d.ts.map +1 -0
- package/dist/infrastructure/github/WebCryptoWebhookVerifier.js +5 -0
- package/dist/infrastructure/github/WebCryptoWebhookVerifier.js.map +1 -0
- package/dist/infrastructure/github/encoding.d.ts +2 -0
- package/dist/infrastructure/github/encoding.d.ts.map +1 -0
- package/dist/infrastructure/github/encoding.js +3 -0
- package/dist/infrastructure/github/encoding.js.map +1 -0
- package/dist/infrastructure/github/state.d.ts +2 -0
- package/dist/infrastructure/github/state.d.ts.map +1 -0
- package/dist/infrastructure/github/state.js +3 -0
- package/dist/infrastructure/github/state.js.map +1 -0
- package/dist/infrastructure/github/sync-consumer.d.ts +16 -0
- package/dist/infrastructure/github/sync-consumer.d.ts.map +1 -0
- package/dist/infrastructure/github/sync-consumer.js +130 -0
- package/dist/infrastructure/github/sync-consumer.js.map +1 -0
- package/dist/infrastructure/http/errorHandler.d.ts +2 -0
- package/dist/infrastructure/http/errorHandler.d.ts.map +1 -0
- package/dist/infrastructure/http/errorHandler.js +3 -0
- package/dist/infrastructure/http/errorHandler.js.map +1 -0
- package/dist/infrastructure/http/params.d.ts +2 -0
- package/dist/infrastructure/http/params.d.ts.map +1 -0
- package/dist/infrastructure/http/params.js +3 -0
- package/dist/infrastructure/http/params.js.map +1 -0
- package/dist/infrastructure/http/types.d.ts +12 -0
- package/dist/infrastructure/http/types.d.ts.map +1 -0
- package/dist/infrastructure/http/types.js +2 -0
- package/dist/infrastructure/http/types.js.map +1 -0
- package/dist/infrastructure/http/validation.d.ts +2 -0
- package/dist/infrastructure/http/validation.d.ts.map +1 -0
- package/dist/infrastructure/http/validation.js +3 -0
- package/dist/infrastructure/http/validation.js.map +1 -0
- package/dist/infrastructure/observability/logger.d.ts +3 -0
- package/dist/infrastructure/observability/logger.d.ts.map +1 -0
- package/dist/infrastructure/observability/logger.js +4 -0
- package/dist/infrastructure/observability/logger.js.map +1 -0
- package/dist/infrastructure/repositories/D1AccountInvitationRepository.d.ts +15 -0
- package/dist/infrastructure/repositories/D1AccountInvitationRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1AccountInvitationRepository.js +63 -0
- package/dist/infrastructure/repositories/D1AccountInvitationRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1AccountRepository.d.ts +15 -0
- package/dist/infrastructure/repositories/D1AccountRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1AccountRepository.js +52 -0
- package/dist/infrastructure/repositories/D1AccountRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1AgentRunRepository.d.ts +18 -0
- package/dist/infrastructure/repositories/D1AgentRunRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1AgentRunRepository.js +34 -0
- package/dist/infrastructure/repositories/D1AgentRunRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1BlockRepository.d.ts +23 -0
- package/dist/infrastructure/repositories/D1BlockRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1BlockRepository.js +101 -0
- package/dist/infrastructure/repositories/D1BlockRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1BootstrapJobRepository.d.ts +16 -0
- package/dist/infrastructure/repositories/D1BootstrapJobRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1BootstrapJobRepository.js +209 -0
- package/dist/infrastructure/repositories/D1BootstrapJobRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1BranchProjectionRepository.d.ts +12 -0
- package/dist/infrastructure/repositories/D1BranchProjectionRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1BranchProjectionRepository.js +29 -0
- package/dist/infrastructure/repositories/D1BranchProjectionRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1CheckRunProjectionRepository.d.ts +12 -0
- package/dist/infrastructure/repositories/D1CheckRunProjectionRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1CheckRunProjectionRepository.js +29 -0
- package/dist/infrastructure/repositories/D1CheckRunProjectionRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1ClarityReviewRepository.d.ts +19 -0
- package/dist/infrastructure/repositories/D1ClarityReviewRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1ClarityReviewRepository.js +75 -0
- package/dist/infrastructure/repositories/D1ClarityReviewRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1CommitProjectionRepository.d.ts +13 -0
- package/dist/infrastructure/repositories/D1CommitProjectionRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1CommitProjectionRepository.js +48 -0
- package/dist/infrastructure/repositories/D1CommitProjectionRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1ConsensusSessionRepository.d.ts +19 -0
- package/dist/infrastructure/repositories/D1ConsensusSessionRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1ConsensusSessionRepository.js +88 -0
- package/dist/infrastructure/repositories/D1ConsensusSessionRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1DatadogConnectionRepository.d.ts +17 -0
- package/dist/infrastructure/repositories/D1DatadogConnectionRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1DatadogConnectionRepository.js +47 -0
- package/dist/infrastructure/repositories/D1DatadogConnectionRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1DocumentConnectionRepository.d.ts +27 -0
- package/dist/infrastructure/repositories/D1DocumentConnectionRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1DocumentConnectionRepository.js +89 -0
- package/dist/infrastructure/repositories/D1DocumentConnectionRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1DocumentRepository.d.ts +15 -0
- package/dist/infrastructure/repositories/D1DocumentRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1DocumentRepository.js +66 -0
- package/dist/infrastructure/repositories/D1DocumentRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1EmailConnectionRepository.d.ts +13 -0
- package/dist/infrastructure/repositories/D1EmailConnectionRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1EmailConnectionRepository.js +46 -0
- package/dist/infrastructure/repositories/D1EmailConnectionRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1EnvironmentConnectionRepository.d.ts +13 -0
- package/dist/infrastructure/repositories/D1EnvironmentConnectionRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1EnvironmentConnectionRepository.js +48 -0
- package/dist/infrastructure/repositories/D1EnvironmentConnectionRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1EnvironmentRegistryRepository.d.ts +17 -0
- package/dist/infrastructure/repositories/D1EnvironmentRegistryRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1EnvironmentRegistryRepository.js +95 -0
- package/dist/infrastructure/repositories/D1EnvironmentRegistryRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1ExecutionRepository.d.ts +28 -0
- package/dist/infrastructure/repositories/D1ExecutionRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1ExecutionRepository.js +113 -0
- package/dist/infrastructure/repositories/D1ExecutionRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1FragmentSourceRepository.d.ts +15 -0
- package/dist/infrastructure/repositories/D1FragmentSourceRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1FragmentSourceRepository.js +66 -0
- package/dist/infrastructure/repositories/D1FragmentSourceRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1GitHubInstallationRepository.d.ts +17 -0
- package/dist/infrastructure/repositories/D1GitHubInstallationRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1GitHubInstallationRepository.js +79 -0
- package/dist/infrastructure/repositories/D1GitHubInstallationRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1IssueProjectionRepository.d.ts +13 -0
- package/dist/infrastructure/repositories/D1IssueProjectionRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1IssueProjectionRepository.js +36 -0
- package/dist/infrastructure/repositories/D1IssueProjectionRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1LiveContainerRepository.d.ts +17 -0
- package/dist/infrastructure/repositories/D1LiveContainerRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1LiveContainerRepository.js +40 -0
- package/dist/infrastructure/repositories/D1LiveContainerRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1LlmCallMetricRepository.d.ts +15 -0
- package/dist/infrastructure/repositories/D1LlmCallMetricRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1LlmCallMetricRepository.js +123 -0
- package/dist/infrastructure/repositories/D1LlmCallMetricRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1LocalModelEndpointRepository.d.ts +15 -0
- package/dist/infrastructure/repositories/D1LocalModelEndpointRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1LocalModelEndpointRepository.js +63 -0
- package/dist/infrastructure/repositories/D1LocalModelEndpointRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1MembershipRepository.d.ts +15 -0
- package/dist/infrastructure/repositories/D1MembershipRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1MembershipRepository.js +58 -0
- package/dist/infrastructure/repositories/D1MembershipRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1MergePresetRepository.d.ts +21 -0
- package/dist/infrastructure/repositories/D1MergePresetRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1MergePresetRepository.js +88 -0
- package/dist/infrastructure/repositories/D1MergePresetRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1ModelDefaultsRepository.d.ts +18 -0
- package/dist/infrastructure/repositories/D1ModelDefaultsRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1ModelDefaultsRepository.js +47 -0
- package/dist/infrastructure/repositories/D1ModelDefaultsRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1NotificationRepository.d.ts +20 -0
- package/dist/infrastructure/repositories/D1NotificationRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1NotificationRepository.js +81 -0
- package/dist/infrastructure/repositories/D1NotificationRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1PersonalSubscriptionRepository.d.ts +28 -0
- package/dist/infrastructure/repositories/D1PersonalSubscriptionRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1PersonalSubscriptionRepository.js +142 -0
- package/dist/infrastructure/repositories/D1PersonalSubscriptionRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1PipelineRepository.d.ts +15 -0
- package/dist/infrastructure/repositories/D1PipelineRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1PipelineRepository.js +46 -0
- package/dist/infrastructure/repositories/D1PipelineRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1PipelineScheduleRepository.d.ts +26 -0
- package/dist/infrastructure/repositories/D1PipelineScheduleRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1PipelineScheduleRepository.js +192 -0
- package/dist/infrastructure/repositories/D1PipelineScheduleRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1PromptFragmentRepository.d.ts +15 -0
- package/dist/infrastructure/repositories/D1PromptFragmentRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1PromptFragmentRepository.js +90 -0
- package/dist/infrastructure/repositories/D1PromptFragmentRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1ProviderApiKeyRepository.d.ts +21 -0
- package/dist/infrastructure/repositories/D1ProviderApiKeyRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1ProviderApiKeyRepository.js +108 -0
- package/dist/infrastructure/repositories/D1ProviderApiKeyRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1ProviderSubscriptionTokenRepository.d.ts +19 -0
- package/dist/infrastructure/repositories/D1ProviderSubscriptionTokenRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1ProviderSubscriptionTokenRepository.js +78 -0
- package/dist/infrastructure/repositories/D1ProviderSubscriptionTokenRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1PullRequestProjectionRepository.d.ts +13 -0
- package/dist/infrastructure/repositories/D1PullRequestProjectionRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1PullRequestProjectionRepository.js +32 -0
- package/dist/infrastructure/repositories/D1PullRequestProjectionRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1RateLimitRepository.d.ts +18 -0
- package/dist/infrastructure/repositories/D1RateLimitRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1RateLimitRepository.js +30 -0
- package/dist/infrastructure/repositories/D1RateLimitRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1ReferenceArchitectureRepository.d.ts +15 -0
- package/dist/infrastructure/repositories/D1ReferenceArchitectureRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1ReferenceArchitectureRepository.js +77 -0
- package/dist/infrastructure/repositories/D1ReferenceArchitectureRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1ReleaseHealthConfigRepository.d.ts +17 -0
- package/dist/infrastructure/repositories/D1ReleaseHealthConfigRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1ReleaseHealthConfigRepository.js +64 -0
- package/dist/infrastructure/repositories/D1ReleaseHealthConfigRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1RepoBlueprintRepository.d.ts +20 -0
- package/dist/infrastructure/repositories/D1RepoBlueprintRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1RepoBlueprintRepository.js +64 -0
- package/dist/infrastructure/repositories/D1RepoBlueprintRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1RepoProjectionRepository.d.ts +20 -0
- package/dist/infrastructure/repositories/D1RepoProjectionRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1RepoProjectionRepository.js +121 -0
- package/dist/infrastructure/repositories/D1RepoProjectionRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1RequirementReviewRepository.d.ts +20 -0
- package/dist/infrastructure/repositories/D1RequirementReviewRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1RequirementReviewRepository.js +76 -0
- package/dist/infrastructure/repositories/D1RequirementReviewRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1RunnerPoolConnectionRepository.d.ts +13 -0
- package/dist/infrastructure/repositories/D1RunnerPoolConnectionRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1RunnerPoolConnectionRepository.js +48 -0
- package/dist/infrastructure/repositories/D1RunnerPoolConnectionRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1ServiceFragmentDefaultsRepository.d.ts +16 -0
- package/dist/infrastructure/repositories/D1ServiceFragmentDefaultsRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1ServiceFragmentDefaultsRepository.js +27 -0
- package/dist/infrastructure/repositories/D1ServiceFragmentDefaultsRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1ServiceRepository.d.ts +19 -0
- package/dist/infrastructure/repositories/D1ServiceRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1ServiceRepository.js +114 -0
- package/dist/infrastructure/repositories/D1ServiceRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1SlackRepositories.d.ts +29 -0
- package/dist/infrastructure/repositories/D1SlackRepositories.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1SlackRepositories.js +119 -0
- package/dist/infrastructure/repositories/D1SlackRepositories.js.map +1 -0
- package/dist/infrastructure/repositories/D1TaskConnectionRepository.d.ts +27 -0
- package/dist/infrastructure/repositories/D1TaskConnectionRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1TaskConnectionRepository.js +89 -0
- package/dist/infrastructure/repositories/D1TaskConnectionRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1TaskRepository.d.ts +15 -0
- package/dist/infrastructure/repositories/D1TaskRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1TaskRepository.js +90 -0
- package/dist/infrastructure/repositories/D1TaskRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1TokenUsageRepository.d.ts +13 -0
- package/dist/infrastructure/repositories/D1TokenUsageRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1TokenUsageRepository.js +41 -0
- package/dist/infrastructure/repositories/D1TokenUsageRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1TrackerSettingsRepository.d.ts +12 -0
- package/dist/infrastructure/repositories/D1TrackerSettingsRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1TrackerSettingsRepository.js +32 -0
- package/dist/infrastructure/repositories/D1TrackerSettingsRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1UserRepository.d.ts +19 -0
- package/dist/infrastructure/repositories/D1UserRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1UserRepository.js +108 -0
- package/dist/infrastructure/repositories/D1UserRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1WorkspaceMountRepository.d.ts +19 -0
- package/dist/infrastructure/repositories/D1WorkspaceMountRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1WorkspaceMountRepository.js +115 -0
- package/dist/infrastructure/repositories/D1WorkspaceMountRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1WorkspaceRepository.d.ts +18 -0
- package/dist/infrastructure/repositories/D1WorkspaceRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1WorkspaceRepository.js +77 -0
- package/dist/infrastructure/repositories/D1WorkspaceRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1WorkspaceSettingsRepository.d.ts +17 -0
- package/dist/infrastructure/repositories/D1WorkspaceSettingsRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1WorkspaceSettingsRepository.js +50 -0
- package/dist/infrastructure/repositories/D1WorkspaceSettingsRepository.js.map +1 -0
- package/dist/infrastructure/repositories/chunk.d.ts +11 -0
- package/dist/infrastructure/repositories/chunk.d.ts.map +1 -0
- package/dist/infrastructure/repositories/chunk.js +17 -0
- package/dist/infrastructure/repositories/chunk.js.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/branch.d.ts +11 -0
- package/dist/infrastructure/repositories/github-mappers/branch.d.ts.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/branch.js +22 -0
- package/dist/infrastructure/repositories/github-mappers/branch.js.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/check-run.d.ts +13 -0
- package/dist/infrastructure/repositories/github-mappers/check-run.d.ts.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/check-run.js +24 -0
- package/dist/infrastructure/repositories/github-mappers/check-run.js.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/commit.d.ts +12 -0
- package/dist/infrastructure/repositories/github-mappers/commit.d.ts.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/commit.js +22 -0
- package/dist/infrastructure/repositories/github-mappers/commit.js.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/index.d.ts +11 -0
- package/dist/infrastructure/repositories/github-mappers/index.d.ts.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/index.js +14 -0
- package/dist/infrastructure/repositories/github-mappers/index.js.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/installation.d.ts +16 -0
- package/dist/infrastructure/repositories/github-mappers/installation.d.ts.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/installation.js +29 -0
- package/dist/infrastructure/repositories/github-mappers/installation.js.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/issue.d.ts +15 -0
- package/dist/infrastructure/repositories/github-mappers/issue.d.ts.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/issue.js +29 -0
- package/dist/infrastructure/repositories/github-mappers/issue.js.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/pull-request.d.ts +18 -0
- package/dist/infrastructure/repositories/github-mappers/pull-request.d.ts.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/pull-request.js +36 -0
- package/dist/infrastructure/repositories/github-mappers/pull-request.js.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/repo.d.ts +15 -0
- package/dist/infrastructure/repositories/github-mappers/repo.d.ts.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/repo.js +31 -0
- package/dist/infrastructure/repositories/github-mappers/repo.js.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/serialize.d.ts +3 -0
- package/dist/infrastructure/repositories/github-mappers/serialize.d.ts.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/serialize.js +4 -0
- package/dist/infrastructure/repositories/github-mappers/serialize.js.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/sync-cursor.d.ts +8 -0
- package/dist/infrastructure/repositories/github-mappers/sync-cursor.d.ts.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/sync-cursor.js +4 -0
- package/dist/infrastructure/repositories/github-mappers/sync-cursor.js.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/upsert.d.ts +11 -0
- package/dist/infrastructure/repositories/github-mappers/upsert.d.ts.map +1 -0
- package/dist/infrastructure/repositories/github-mappers/upsert.js +18 -0
- package/dist/infrastructure/repositories/github-mappers/upsert.js.map +1 -0
- package/dist/infrastructure/repositories/mappers.d.ts +2 -0
- package/dist/infrastructure/repositories/mappers.d.ts.map +1 -0
- package/dist/infrastructure/repositories/mappers.js +4 -0
- package/dist/infrastructure/repositories/mappers.js.map +1 -0
- package/dist/infrastructure/runners/HttpRunnerPoolProvider.d.ts +2 -0
- package/dist/infrastructure/runners/HttpRunnerPoolProvider.d.ts.map +1 -0
- package/dist/infrastructure/runners/HttpRunnerPoolProvider.js +5 -0
- package/dist/infrastructure/runners/HttpRunnerPoolProvider.js.map +1 -0
- package/dist/infrastructure/runners/RunnerPoolTransport.d.ts +2 -0
- package/dist/infrastructure/runners/RunnerPoolTransport.d.ts.map +1 -0
- package/dist/infrastructure/runners/RunnerPoolTransport.js +5 -0
- package/dist/infrastructure/runners/RunnerPoolTransport.js.map +1 -0
- package/dist/infrastructure/runtime.d.ts +8 -0
- package/dist/infrastructure/runtime.d.ts.map +1 -0
- package/dist/infrastructure/runtime.js +13 -0
- package/dist/infrastructure/runtime.js.map +1 -0
- package/dist/infrastructure/tasks/GitHubIssuesProvider.d.ts +50 -0
- package/dist/infrastructure/tasks/GitHubIssuesProvider.d.ts.map +1 -0
- package/dist/infrastructure/tasks/GitHubIssuesProvider.js +91 -0
- package/dist/infrastructure/tasks/GitHubIssuesProvider.js.map +1 -0
- package/dist/infrastructure/tasks/JiraProvider.d.ts +29 -0
- package/dist/infrastructure/tasks/JiraProvider.d.ts.map +1 -0
- package/dist/infrastructure/tasks/JiraProvider.js +109 -0
- package/dist/infrastructure/tasks/JiraProvider.js.map +1 -0
- package/dist/infrastructure/workflows/BootstrapWorkflow.d.ts +21 -0
- package/dist/infrastructure/workflows/BootstrapWorkflow.d.ts.map +1 -0
- package/dist/infrastructure/workflows/BootstrapWorkflow.js +72 -0
- package/dist/infrastructure/workflows/BootstrapWorkflow.js.map +1 -0
- package/dist/infrastructure/workflows/ExecutionWorkflow.d.ts +15 -0
- package/dist/infrastructure/workflows/ExecutionWorkflow.d.ts.map +1 -0
- package/dist/infrastructure/workflows/ExecutionWorkflow.js +169 -0
- package/dist/infrastructure/workflows/ExecutionWorkflow.js.map +1 -0
- package/dist/infrastructure/workflows/GitHubBackfillWorkflow.d.ts +17 -0
- package/dist/infrastructure/workflows/GitHubBackfillWorkflow.d.ts.map +1 -0
- package/dist/infrastructure/workflows/GitHubBackfillWorkflow.js +24 -0
- package/dist/infrastructure/workflows/GitHubBackfillWorkflow.js.map +1 -0
- package/dist/infrastructure/workflows/WorkflowsBootstrapRunner.d.ts +15 -0
- package/dist/infrastructure/workflows/WorkflowsBootstrapRunner.d.ts.map +1 -0
- package/dist/infrastructure/workflows/WorkflowsBootstrapRunner.js +34 -0
- package/dist/infrastructure/workflows/WorkflowsBootstrapRunner.js.map +1 -0
- package/dist/infrastructure/workflows/WorkflowsWorkRunner.d.ts +31 -0
- package/dist/infrastructure/workflows/WorkflowsWorkRunner.d.ts.map +1 -0
- package/dist/infrastructure/workflows/WorkflowsWorkRunner.js +55 -0
- package/dist/infrastructure/workflows/WorkflowsWorkRunner.js.map +1 -0
- package/dist/infrastructure/workflows/retention.d.ts +35 -0
- package/dist/infrastructure/workflows/retention.d.ts.map +1 -0
- package/dist/infrastructure/workflows/retention.js +26 -0
- package/dist/infrastructure/workflows/retention.js.map +1 -0
- package/dist/infrastructure/workflows/sweeper.d.ts +57 -0
- package/dist/infrastructure/workflows/sweeper.d.ts.map +1 -0
- package/dist/infrastructure/workflows/sweeper.js +62 -0
- package/dist/infrastructure/workflows/sweeper.js.map +1 -0
- package/migrations/0001_init.sql +677 -0
- package/migrations/0002_clarity_reviews.sql +19 -0
- package/migrations/0002_consensus.sql +38 -0
- package/migrations/0002_llm_reasoning_text.sql +6 -0
- package/migrations/0002_local_model_endpoints.sql +16 -0
- package/migrations/0003_pipeline_labels_archive.sql +13 -0
- package/migrations/0003_release_health.sql +34 -0
- package/migrations/0004_run_timing_task_types.sql +24 -0
- package/package.json +65 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GitHubIssuesProvider.js","sourceRoot":"","sources":["../../../src/infrastructure/tasks/GitHubIssuesProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type TaskContent, type TaskCredentials, type TaskSearchResult, type TaskSourceProvider, type NormalizedTaskConnection } from '@cat-factory/kernel';
|
|
2
|
+
/** Carries the HTTP status so callers can surface a meaningful error. */
|
|
3
|
+
export declare class JiraApiError extends Error {
|
|
4
|
+
readonly status: number;
|
|
5
|
+
constructor(status: number, message: string);
|
|
6
|
+
}
|
|
7
|
+
export declare class JiraProvider implements TaskSourceProvider {
|
|
8
|
+
readonly kind: 'jira';
|
|
9
|
+
readonly descriptor: {
|
|
10
|
+
source: "github" | "jira";
|
|
11
|
+
label: string;
|
|
12
|
+
icon: string;
|
|
13
|
+
credentialFields: {
|
|
14
|
+
key: string;
|
|
15
|
+
label: string;
|
|
16
|
+
help?: string | undefined;
|
|
17
|
+
placeholder?: string | undefined;
|
|
18
|
+
secret?: boolean | undefined;
|
|
19
|
+
}[];
|
|
20
|
+
refLabel: string;
|
|
21
|
+
refPlaceholder: string;
|
|
22
|
+
searchable?: boolean | undefined;
|
|
23
|
+
};
|
|
24
|
+
normalizeConnection(input: TaskCredentials): NormalizedTaskConnection;
|
|
25
|
+
parseRef(input: string): string | null;
|
|
26
|
+
fetchTask(credentials: TaskCredentials, externalId: string): Promise<TaskContent>;
|
|
27
|
+
search(credentials: TaskCredentials, query: string): Promise<TaskSearchResult[]>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=JiraProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JiraProvider.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/tasks/JiraProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC9B,MAAM,qBAAqB,CAAA;AAa5B,yEAAyE;AACzE,qBAAa,YAAa,SAAQ,KAAK;IAEnC,QAAQ,CAAC,MAAM,EAAE,MAAM;IADzB,YACW,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EAIhB;CACF;AAsBD,qBAAa,YAAa,YAAW,kBAAkB;IACrD,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAS;IAC/B,QAAQ,CAAC,UAAU;;;;;;;;;;;;;;MAAkB;IAErC,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,wBAAwB,CAepE;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAErC;IAEK,SAAS,CAAC,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA4CtF;IAEK,MAAM,CAAC,WAAW,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA6BrF;CACF"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { ValidationError, atlassianLogic, } from '@cat-factory/kernel';
|
|
2
|
+
import { JIRA_DESCRIPTOR, jiraLogic } from '@cat-factory/integrations';
|
|
3
|
+
// JiraProvider: the task-source provider for Jira Cloud. It authenticates with
|
|
4
|
+
// HTTP Basic (account email + API token, the same scheme as Confluence), fetches
|
|
5
|
+
// an issue via the REST v3 API, and maps it onto the structured TaskContent —
|
|
6
|
+
// converting the ADF description and comment bodies to the Markdown the generic
|
|
7
|
+
// excerpt/prompt logic consumes. All Jira-specific *pure* logic (ref parsing, ADF
|
|
8
|
+
// conversion) lives in `@cat-factory/integrations` so it is unit-testable; this class is
|
|
9
|
+
// the thin `fetch` shell around it. No SDK — fetch + `btoa` suffice.
|
|
10
|
+
const USER_AGENT = 'cat-factory';
|
|
11
|
+
/** Carries the HTTP status so callers can surface a meaningful error. */
|
|
12
|
+
export class JiraApiError extends Error {
|
|
13
|
+
status;
|
|
14
|
+
constructor(status, message) {
|
|
15
|
+
super(message);
|
|
16
|
+
this.status = status;
|
|
17
|
+
this.name = 'JiraApiError';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export class JiraProvider {
|
|
21
|
+
kind = 'jira';
|
|
22
|
+
descriptor = JIRA_DESCRIPTOR;
|
|
23
|
+
normalizeConnection(input) {
|
|
24
|
+
const baseUrlRaw = input.baseUrl?.trim();
|
|
25
|
+
const accountEmail = input.accountEmail?.trim();
|
|
26
|
+
const apiToken = input.apiToken?.trim();
|
|
27
|
+
if (!baseUrlRaw || !accountEmail || !apiToken) {
|
|
28
|
+
throw new ValidationError('Jira requires a site URL, account email and API token');
|
|
29
|
+
}
|
|
30
|
+
const baseUrl = atlassianLogic.normalizeAtlassianBaseUrl(baseUrlRaw);
|
|
31
|
+
// Guard against SSRF: the stored base URL is later fetched with the
|
|
32
|
+
// workspace's credentials, so it must be a public https host.
|
|
33
|
+
atlassianLogic.assertSafeAtlassianBaseUrl(baseUrl);
|
|
34
|
+
return {
|
|
35
|
+
credentials: { baseUrl, accountEmail, apiToken },
|
|
36
|
+
label: baseUrl,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
parseRef(input) {
|
|
40
|
+
return jiraLogic.parseJiraRef(input);
|
|
41
|
+
}
|
|
42
|
+
async fetchTask(credentials, externalId) {
|
|
43
|
+
const base = credentials.baseUrl.replace(/\/+$/, '');
|
|
44
|
+
const fields = 'summary,description,status,issuetype,assignee,priority,labels,comment';
|
|
45
|
+
const url = `${base}/rest/api/3/issue/${encodeURIComponent(externalId)}?fields=${fields}`;
|
|
46
|
+
const auth = btoa(`${credentials.accountEmail}:${credentials.apiToken}`);
|
|
47
|
+
const res = await fetch(url, {
|
|
48
|
+
method: 'GET',
|
|
49
|
+
headers: {
|
|
50
|
+
authorization: `Basic ${auth}`,
|
|
51
|
+
accept: 'application/json',
|
|
52
|
+
'user-agent': USER_AGENT,
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
if (!res.ok) {
|
|
56
|
+
const text = await res.text().catch(() => '');
|
|
57
|
+
throw new JiraApiError(res.status, `Jira GET ${url} → ${res.status}: ${text.slice(0, 300)}`);
|
|
58
|
+
}
|
|
59
|
+
const json = (await res.json().catch(() => null));
|
|
60
|
+
if (!json || !json.key || !json.fields) {
|
|
61
|
+
throw new JiraApiError(502, `Jira returned an unexpected body for issue ${externalId}`);
|
|
62
|
+
}
|
|
63
|
+
const f = json.fields;
|
|
64
|
+
const comments = (f.comment?.comments ?? []).map((c) => ({
|
|
65
|
+
author: c.author?.displayName ?? '',
|
|
66
|
+
createdAt: c.created ?? '',
|
|
67
|
+
body: jiraLogic.adfToMarkdown(c.body),
|
|
68
|
+
}));
|
|
69
|
+
return {
|
|
70
|
+
externalId: json.key,
|
|
71
|
+
url: `${base}/browse/${json.key}`,
|
|
72
|
+
title: f.summary ?? '(untitled)',
|
|
73
|
+
status: f.status?.name ?? '',
|
|
74
|
+
type: f.issuetype?.name ?? '',
|
|
75
|
+
assignee: f.assignee?.displayName ?? null,
|
|
76
|
+
priority: f.priority?.name ?? null,
|
|
77
|
+
labels: Array.isArray(f.labels) ? f.labels : [],
|
|
78
|
+
description: jiraLogic.adfToMarkdown(f.description),
|
|
79
|
+
comments,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
async search(credentials, query) {
|
|
83
|
+
const base = credentials.baseUrl.replace(/\/+$/, '');
|
|
84
|
+
// Re-validate the stored base before fetching with the workspace's credentials
|
|
85
|
+
// (defense-in-depth against a base that became unsafe since connect time).
|
|
86
|
+
atlassianLogic.assertSafeAtlassianBaseUrl(base);
|
|
87
|
+
const jql = encodeURIComponent(jiraLogic.buildJiraSearchJql(query));
|
|
88
|
+
// `/rest/api/3/search/jql` is the current enhanced-search endpoint; the legacy
|
|
89
|
+
// GET `/rest/api/3/search` was removed by Atlassian (May 2025). The `issues[]`
|
|
90
|
+
// response shape is unchanged, so `parseJiraSearchResults` still applies.
|
|
91
|
+
const url = `${base}/rest/api/3/search/jql?jql=${jql}&fields=summary,status&maxResults=20`;
|
|
92
|
+
const auth = btoa(`${credentials.accountEmail}:${credentials.apiToken}`);
|
|
93
|
+
const res = await fetch(url, {
|
|
94
|
+
method: 'GET',
|
|
95
|
+
headers: {
|
|
96
|
+
authorization: `Basic ${auth}`,
|
|
97
|
+
accept: 'application/json',
|
|
98
|
+
'user-agent': USER_AGENT,
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
if (!res.ok) {
|
|
102
|
+
const text = await res.text().catch(() => '');
|
|
103
|
+
throw new JiraApiError(res.status, `Jira search ${url} → ${res.status}: ${text.slice(0, 300)}`);
|
|
104
|
+
}
|
|
105
|
+
const json = await res.json().catch(() => null);
|
|
106
|
+
return jiraLogic.parseJiraSearchResults(json, base);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=JiraProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JiraProvider.js","sourceRoot":"","sources":["../../../src/infrastructure/tasks/JiraProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { WorkflowEntrypoint, type WorkflowEvent, type WorkflowStep } from 'cloudflare:workers';
|
|
2
|
+
import type { Env } from '../env';
|
|
3
|
+
/** Params passed to a BootstrapWorkflow instance (its id is the bootstrap job id). */
|
|
4
|
+
export interface BootstrapWorkflowParams {
|
|
5
|
+
workspaceId: string;
|
|
6
|
+
jobId: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Durable driver for one "bootstrap repo" run, mirroring ExecutionWorkflow. It
|
|
10
|
+
* holds NO business logic — every decision lives in core's BootstrapService. Each
|
|
11
|
+
* iteration polls the bootstrap container once inside a retriable, checkpointed
|
|
12
|
+
* `step.do` and sleeps durably between polls, so the long container run survives
|
|
13
|
+
* eviction while the driver stays cheap. The poll itself persists subtask progress
|
|
14
|
+
* and finalises the board frame on a terminal outcome; this loop only decides when
|
|
15
|
+
* to stop. The container's own inactivity + max-duration watchdogs bound the work;
|
|
16
|
+
* `jobMaxPolls` is a backstop in case it never reports terminal.
|
|
17
|
+
*/
|
|
18
|
+
export declare class BootstrapWorkflow extends WorkflowEntrypoint<Env, BootstrapWorkflowParams> {
|
|
19
|
+
run(event: WorkflowEvent<BootstrapWorkflowParams>, step: WorkflowStep): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=BootstrapWorkflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BootstrapWorkflow.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/workflows/BootstrapWorkflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,KAAK,aAAa,EAElB,KAAK,YAAY,EAElB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAKjC,sFAAsF;AACtF,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;CACd;AAQD;;;;;;;;;GASG;AACH,qBAAa,iBAAkB,SAAQ,kBAAkB,CAAC,GAAG,EAAE,uBAAuB,CAAC;IACtE,GAAG,CAChB,KAAK,EAAE,aAAa,CAAC,uBAAuB,CAAC,EAC7C,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAoDf;CACF"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { WorkflowEntrypoint, } from 'cloudflare:workers';
|
|
2
|
+
import { buildContainer } from '../container';
|
|
3
|
+
import { loadConfig } from '../config';
|
|
4
|
+
import { logger } from '../observability/logger';
|
|
5
|
+
/** Per-step retry policy: a transient poll failure retries before the run fails. */
|
|
6
|
+
const STEP_CONFIG = {
|
|
7
|
+
retries: { limit: 3, delay: '5 seconds', backoff: 'exponential' },
|
|
8
|
+
timeout: '2 minutes',
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Durable driver for one "bootstrap repo" run, mirroring ExecutionWorkflow. It
|
|
12
|
+
* holds NO business logic — every decision lives in core's BootstrapService. Each
|
|
13
|
+
* iteration polls the bootstrap container once inside a retriable, checkpointed
|
|
14
|
+
* `step.do` and sleeps durably between polls, so the long container run survives
|
|
15
|
+
* eviction while the driver stays cheap. The poll itself persists subtask progress
|
|
16
|
+
* and finalises the board frame on a terminal outcome; this loop only decides when
|
|
17
|
+
* to stop. The container's own inactivity + max-duration watchdogs bound the work;
|
|
18
|
+
* `jobMaxPolls` is a backstop in case it never reports terminal.
|
|
19
|
+
*/
|
|
20
|
+
export class BootstrapWorkflow extends WorkflowEntrypoint {
|
|
21
|
+
async run(event, step) {
|
|
22
|
+
const { workspaceId, jobId } = event.payload;
|
|
23
|
+
const execConfig = loadConfig(this.env).execution;
|
|
24
|
+
const pollInterval = execConfig.jobPollInterval;
|
|
25
|
+
const log = logger.child({ workspaceId, jobId, workflow: 'bootstrap' });
|
|
26
|
+
// Consecutive failures to READ status — not the bootstrap failing. The agent
|
|
27
|
+
// can briefly make the container unresponsive while busy (cloning, installing,
|
|
28
|
+
// building); the job's real liveness is bounded container-side (inactivity +
|
|
29
|
+
// max-duration watchdogs), and a vanished container surfaces as a 404→failed
|
|
30
|
+
// value, so a *thrown* poll error is always transient. Tolerate a bounded run
|
|
31
|
+
// of them (reset on any good poll) rather than abandoning a healthy run on the
|
|
32
|
+
// first blip.
|
|
33
|
+
let pollReadFailures = 0;
|
|
34
|
+
for (let p = 0; p < execConfig.jobMaxPolls; p++) {
|
|
35
|
+
await step.sleep(`poll-wait-${p}`, pollInterval);
|
|
36
|
+
let result;
|
|
37
|
+
try {
|
|
38
|
+
result = (await step.do(`poll-${p}`, STEP_CONFIG, async () => {
|
|
39
|
+
const container = buildContainer(this.env);
|
|
40
|
+
if (!container.bootstrap) {
|
|
41
|
+
throw new Error('Bootstrap module is not configured');
|
|
42
|
+
}
|
|
43
|
+
return container.bootstrap.service.pollBootstrapJob(workspaceId, jobId);
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
pollReadFailures += 1;
|
|
48
|
+
log.warn({ err: error instanceof Error ? error.message : String(error), pollReadFailures }, 'bootstrap poll could not read job status; treating as still running and retrying');
|
|
49
|
+
// Sustained unreachability: leave the job `running` so the cron sweep can
|
|
50
|
+
// re-drive it later (the container may recover, or report terminal, by then).
|
|
51
|
+
// Stop this instance to avoid burning the whole poll budget while wedged.
|
|
52
|
+
if (pollReadFailures >= execConfig.jobPollFailureTolerance) {
|
|
53
|
+
log.error('bootstrap poll unreadable past tolerance; leaving for sweeper');
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
pollReadFailures = 0;
|
|
59
|
+
if (result.state === 'done') {
|
|
60
|
+
log.info('bootstrap run succeeded');
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (result.state === 'failed') {
|
|
64
|
+
log.warn({ error: result.error }, 'bootstrap run failed');
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
// still running — loop and poll again after the next durable sleep.
|
|
68
|
+
}
|
|
69
|
+
log.warn('bootstrap run did not finish within its polling budget');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=BootstrapWorkflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BootstrapWorkflow.js","sourceRoot":"","sources":["../../../src/infrastructure/workflows/BootstrapWorkflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { WorkflowEntrypoint, type WorkflowEvent, type WorkflowStep } from 'cloudflare:workers';
|
|
2
|
+
import type { Env } from '../env';
|
|
3
|
+
import type { ExecutionWorkflowParams } from './WorkflowsWorkRunner';
|
|
4
|
+
/**
|
|
5
|
+
* Durable driver for one pipeline run. It contains NO business logic — every
|
|
6
|
+
* decision lives in core's ExecutionService. Each loop iteration advances the
|
|
7
|
+
* run by exactly one agent step inside a retriable, checkpointed `step.do`, then
|
|
8
|
+
* either loops, parks on a human decision via `waitForEvent`, or stops. Because
|
|
9
|
+
* each committed step is memoised, a crash and replay never re-issues an
|
|
10
|
+
* already-completed LLM call.
|
|
11
|
+
*/
|
|
12
|
+
export declare class ExecutionWorkflow extends WorkflowEntrypoint<Env, ExecutionWorkflowParams> {
|
|
13
|
+
run(event: WorkflowEvent<ExecutionWorkflowParams>, step: WorkflowStep): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=ExecutionWorkflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExecutionWorkflow.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/workflows/ExecutionWorkflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,KAAK,aAAa,EAElB,KAAK,YAAY,EAElB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAIjC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAQpE;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,kBAAkB,CAAC,GAAG,EAAE,uBAAuB,CAAC;IACtE,GAAG,CAChB,KAAK,EAAE,aAAa,CAAC,uBAAuB,CAAC,EAC7C,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CA6Lf;CACF"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { WorkflowEntrypoint, } from 'cloudflare:workers';
|
|
2
|
+
import { buildContainer } from '../container';
|
|
3
|
+
import { loadConfig } from '../config';
|
|
4
|
+
import { logger } from '../observability/logger';
|
|
5
|
+
/** Per-step retry policy: failures retry a few times before the run is failed. */
|
|
6
|
+
const STEP_CONFIG = {
|
|
7
|
+
retries: { limit: 3, delay: '5 seconds', backoff: 'exponential' },
|
|
8
|
+
timeout: '5 minutes',
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Durable driver for one pipeline run. It contains NO business logic — every
|
|
12
|
+
* decision lives in core's ExecutionService. Each loop iteration advances the
|
|
13
|
+
* run by exactly one agent step inside a retriable, checkpointed `step.do`, then
|
|
14
|
+
* either loops, parks on a human decision via `waitForEvent`, or stops. Because
|
|
15
|
+
* each committed step is memoised, a crash and replay never re-issues an
|
|
16
|
+
* already-completed LLM call.
|
|
17
|
+
*/
|
|
18
|
+
export class ExecutionWorkflow extends WorkflowEntrypoint {
|
|
19
|
+
async run(event, step) {
|
|
20
|
+
const { workspaceId, executionId } = event.payload;
|
|
21
|
+
const execConfig = loadConfig(this.env).execution;
|
|
22
|
+
const decisionTimeout = execConfig.decisionTimeout;
|
|
23
|
+
const jobPollInterval = execConfig.jobPollInterval;
|
|
24
|
+
const ciPollInterval = execConfig.ciPollInterval;
|
|
25
|
+
const failRun = async (i, message, kind = 'agent', detail = null) => {
|
|
26
|
+
logger.warn({ workspaceId, executionId, step: i }, `failing run: ${message}`);
|
|
27
|
+
await step.do(`fail-${i}`, () => buildContainer(this.env).executionService.failRun(workspaceId, executionId, message, kind, detail));
|
|
28
|
+
};
|
|
29
|
+
for (let i = 0;; i++) {
|
|
30
|
+
let result;
|
|
31
|
+
try {
|
|
32
|
+
result = (await step.do(`advance-${i}`, STEP_CONFIG, () => buildContainer(this.env).executionService.advanceInstance(workspaceId, executionId, {
|
|
33
|
+
rethrowAgentErrors: true,
|
|
34
|
+
})));
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
// Retries exhausted: persist the failure and open the block for review.
|
|
38
|
+
await failRun(i, error instanceof Error ? error.message : String(error));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// An async step (a container coding job) dispatched and parked. Poll it
|
|
42
|
+
// between durable sleeps until it finishes — each poll is its own short,
|
|
43
|
+
// retriable step, so the job can run far longer than one step's timeout
|
|
44
|
+
// while the driver stays cheap and survives eviction. The job's bound is
|
|
45
|
+
// enforced container-side (inactivity + max-duration watchdogs); `jobMaxPolls`
|
|
46
|
+
// is only a backstop in case it never reports a terminal state.
|
|
47
|
+
if (result.kind === 'awaiting_job') {
|
|
48
|
+
let polled = false;
|
|
49
|
+
// Consecutive failures to READ status — not the job failing. A coding step
|
|
50
|
+
// legitimately runs long shell commands (installing deps, build/test/e2e
|
|
51
|
+
// suites) that can briefly make the container unresponsive to a poll. The
|
|
52
|
+
// job's real liveness is bounded container-side (inactivity + max-duration
|
|
53
|
+
// watchdogs); eviction surfaces as a 404→failed value and a genuine job
|
|
54
|
+
// error as job_failed — both returned, not thrown. So a *thrown* poll error
|
|
55
|
+
// is always transient: tolerate a bounded run of them (reset on any good
|
|
56
|
+
// poll) rather than failing a healthy long-running job on the first blip.
|
|
57
|
+
let pollReadFailures = 0;
|
|
58
|
+
for (let p = 0; p < execConfig.jobMaxPolls; p++) {
|
|
59
|
+
await step.sleep(`poll-wait-${i}-${p}`, jobPollInterval);
|
|
60
|
+
try {
|
|
61
|
+
result = (await step.do(`poll-${i}-${p}`, STEP_CONFIG, () => buildContainer(this.env).executionService.pollAgentJob(workspaceId, executionId)));
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
pollReadFailures += 1;
|
|
65
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
66
|
+
logger.warn({ workspaceId, executionId, step: i, poll: p, pollReadFailures, err: message }, 'poll could not read job status; treating as still running and retrying');
|
|
67
|
+
if (pollReadFailures >= execConfig.jobPollFailureTolerance) {
|
|
68
|
+
await failRun(i, `Job status was unreadable for ${pollReadFailures} consecutive polls; ` +
|
|
69
|
+
`the container appears unreachable (last error: ${message})`, 'timeout');
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
pollReadFailures = 0;
|
|
75
|
+
if (result.kind !== 'awaiting_job') {
|
|
76
|
+
polled = true;
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (!polled && result.kind === 'awaiting_job') {
|
|
81
|
+
await failRun(i, 'Implementation job did not finish within its polling budget', 'timeout');
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// A polling gate step (`ci` / `conflicts`) is gating the PR on its precheck.
|
|
86
|
+
// Re-run the precheck between durable sleeps — mirroring the job-poll loop above
|
|
87
|
+
// — until the gate yields something terminal: a passing precheck returns
|
|
88
|
+
// `continue`, a dispatched helper agent returns `awaiting_job` (handled on the
|
|
89
|
+
// next outer-loop iteration), and a spent budget returns `job_failed`. Which gate
|
|
90
|
+
// is resolved inside `pollGate` from the current step, so one loop drives both.
|
|
91
|
+
// Each poll is its own short, retriable step so the gate can wait far longer than
|
|
92
|
+
// one step's timeout while the driver stays cheap and survives eviction.
|
|
93
|
+
if (result.kind === 'awaiting_gate') {
|
|
94
|
+
let settled = false;
|
|
95
|
+
let pollReadFailures = 0;
|
|
96
|
+
for (let p = 0; p < execConfig.ciMaxPolls; p++) {
|
|
97
|
+
await step.sleep(`gate-wait-${i}-${p}`, ciPollInterval);
|
|
98
|
+
try {
|
|
99
|
+
result = (await step.do(`gate-poll-${i}-${p}`, STEP_CONFIG, () => buildContainer(this.env).executionService.pollGate(workspaceId, executionId)));
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
pollReadFailures += 1;
|
|
103
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
104
|
+
logger.warn({ workspaceId, executionId, step: i, poll: p, pollReadFailures, err: message }, 'gate poll could not read its precheck; treating as still pending and retrying');
|
|
105
|
+
if (pollReadFailures >= execConfig.jobPollFailureTolerance) {
|
|
106
|
+
await failRun(i, `Gate precheck was unreadable for ${pollReadFailures} consecutive polls (last error: ${message})`, 'timeout');
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
pollReadFailures = 0;
|
|
112
|
+
if (result.kind !== 'awaiting_gate') {
|
|
113
|
+
settled = true;
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (!settled && result.kind === 'awaiting_gate') {
|
|
118
|
+
// Poll budget spent. Let the gate decide: a time-windowed watch gate
|
|
119
|
+
// (post-release-health) PASSES (the window outlasted the budget with no
|
|
120
|
+
// regression), while CI/conflicts resolve to a `job_failed` timeout the
|
|
121
|
+
// checks below funnel through `failRun`. One policy, both runtimes.
|
|
122
|
+
result = (await step.do(`gate-exhausted-${i}`, STEP_CONFIG, () => buildContainer(this.env).executionService.resolveGatePollExhaustion(workspaceId, executionId)));
|
|
123
|
+
}
|
|
124
|
+
// Fall through: the now-updated `result` (continue / done / awaiting_job /
|
|
125
|
+
// job_failed) is handled by the checks below and the next outer-loop iteration.
|
|
126
|
+
}
|
|
127
|
+
if (result.kind === 'job_failed') {
|
|
128
|
+
// An inline gate may carry the precise classification + diagnostic (e.g. an
|
|
129
|
+
// unparseable companion verdict → `companion_rejected` with its raw reply as
|
|
130
|
+
// detail); record those instead of the generic container-failure framing.
|
|
131
|
+
await failRun(i, result.error, result.failureKind ?? 'job_failed', result.detail ?? null);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
// The container kept getting evicted/crashing even after the engine's single
|
|
135
|
+
// automatic fresh-container restart, so the eviction is deterministic: fail
|
|
136
|
+
// the run as `evicted` (its hint points at the container logs / instance size).
|
|
137
|
+
if (result.kind === 'job_evicted') {
|
|
138
|
+
await failRun(i, result.error, 'evicted');
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
// 'paused' means the spend budget is exhausted: stop driving this run.
|
|
142
|
+
// The /spend/resume endpoint re-creates the workflow once it frees up.
|
|
143
|
+
if (result.kind === 'done' || result.kind === 'noop' || result.kind === 'paused')
|
|
144
|
+
return;
|
|
145
|
+
if (result.kind === 'awaiting_decision') {
|
|
146
|
+
const decisionId = result.decisionId;
|
|
147
|
+
// A parked run waits for a human INDEFINITELY — the old hard "decision timeout"
|
|
148
|
+
// that failed the run is gone (a run can legitimately sit waiting for input for
|
|
149
|
+
// as long as it takes; urgency is surfaced by the notification escalating
|
|
150
|
+
// yellow → red, not by killing the run). Cloudflare's `waitForEvent` still needs
|
|
151
|
+
// a finite timeout, so we wait in chunks: on expiry we simply re-loop, which
|
|
152
|
+
// re-advances the run from storage — resuming if the decision was resolved while
|
|
153
|
+
// we weren't listening (self-healing a missed signal), or re-arming the wait
|
|
154
|
+
// otherwise. The per-iteration `-${i}` keeps each re-armed wait a distinct step.
|
|
155
|
+
try {
|
|
156
|
+
await step.waitForEvent(`await-${decisionId}-${i}`, {
|
|
157
|
+
type: `decision-${decisionId}`,
|
|
158
|
+
timeout: decisionTimeout,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
// Timed out without a signal — fall through and re-loop (do NOT fail the run).
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// 'continue', a resolved decision, or a re-armed wait: loop and advance again.
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=ExecutionWorkflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExecutionWorkflow.js","sourceRoot":"","sources":["../../../src/infrastructure/workflows/ExecutionWorkflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { WorkflowEntrypoint, type WorkflowEvent, type WorkflowStep } from 'cloudflare:workers';
|
|
2
|
+
import type { Env } from '../env';
|
|
3
|
+
/** Params for a full-repo backfill of one installation. */
|
|
4
|
+
export interface GitHubBackfillParams {
|
|
5
|
+
installationId: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Durable full backfill for a GitHub App installation: rediscover its repos and
|
|
9
|
+
* deep-sync each one. Used for the initial connect and explicit `full` resyncs,
|
|
10
|
+
* where doing the work inline could exceed request limits. All business logic
|
|
11
|
+
* lives in core's GitHubSyncService; this just drives it inside a retriable,
|
|
12
|
+
* checkpointed step.
|
|
13
|
+
*/
|
|
14
|
+
export declare class GitHubBackfillWorkflow extends WorkflowEntrypoint<Env, GitHubBackfillParams> {
|
|
15
|
+
run(event: WorkflowEvent<GitHubBackfillParams>, step: WorkflowStep): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=GitHubBackfillWorkflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GitHubBackfillWorkflow.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/workflows/GitHubBackfillWorkflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EAElB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAGjC,2DAA2D;AAC3D,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAA;CACvB;AAOD;;;;;;GAMG;AACH,qBAAa,sBAAuB,SAAQ,kBAAkB,CAAC,GAAG,EAAE,oBAAoB,CAAC;IACxE,GAAG,CAChB,KAAK,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC1C,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAMf;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { WorkflowEntrypoint, } from 'cloudflare:workers';
|
|
2
|
+
import { buildContainer } from '../container';
|
|
3
|
+
const STEP_CONFIG = {
|
|
4
|
+
retries: { limit: 3, delay: '10 seconds', backoff: 'exponential' },
|
|
5
|
+
timeout: '10 minutes',
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Durable full backfill for a GitHub App installation: rediscover its repos and
|
|
9
|
+
* deep-sync each one. Used for the initial connect and explicit `full` resyncs,
|
|
10
|
+
* where doing the work inline could exceed request limits. All business logic
|
|
11
|
+
* lives in core's GitHubSyncService; this just drives it inside a retriable,
|
|
12
|
+
* checkpointed step.
|
|
13
|
+
*/
|
|
14
|
+
export class GitHubBackfillWorkflow extends WorkflowEntrypoint {
|
|
15
|
+
async run(event, step) {
|
|
16
|
+
const { installationId } = event.payload;
|
|
17
|
+
await step.do(`backfill-${installationId}`, STEP_CONFIG, async () => {
|
|
18
|
+
const github = buildContainer(this.env).github;
|
|
19
|
+
if (github)
|
|
20
|
+
await github.syncService.backfillInstallation(installationId);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=GitHubBackfillWorkflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GitHubBackfillWorkflow.js","sourceRoot":"","sources":["../../../src/infrastructure/workflows/GitHubBackfillWorkflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,GAInB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAO7C,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE;IAClE,OAAO,EAAE,YAAY;CACO,CAAA;AAE9B;;;;;;GAMG;AACH,MAAM,OAAO,sBAAuB,SAAQ,kBAA6C;IAC9E,KAAK,CAAC,GAAG,CAChB,KAA0C,EAC1C,IAAkB;QAElB,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC,OAAO,CAAA;QACxC,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,cAAc,EAAE,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;YAC9C,IAAI,MAAM;gBAAE,MAAM,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAA;QAC3E,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { BootstrapRunner } from '@cat-factory/kernel';
|
|
2
|
+
import type { Workflow } from '@cloudflare/workers-types';
|
|
3
|
+
/**
|
|
4
|
+
* Drives "bootstrap repo" runs durably via Cloudflare Workflows, mirroring
|
|
5
|
+
* WorkflowsWorkRunner for pipeline runs. Each run maps to one Workflows instance
|
|
6
|
+
* whose id is the bootstrap job id, which makes `startRun` idempotent (a duplicate
|
|
7
|
+
* start, or a sweeper re-drive racing a live instance, is tolerated).
|
|
8
|
+
*/
|
|
9
|
+
export declare class WorkflowsBootstrapRunner implements BootstrapRunner {
|
|
10
|
+
private readonly workflow;
|
|
11
|
+
constructor(workflow: Workflow);
|
|
12
|
+
startRun(workspaceId: string, jobId: string): Promise<void>;
|
|
13
|
+
cancelRun(_workspaceId: string, jobId: string): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=WorkflowsBootstrapRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowsBootstrapRunner.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/workflows/WorkflowsBootstrapRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAGzD;;;;;GAKG;AACH,qBAAa,wBAAyB,YAAW,eAAe;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAArC,YAA6B,QAAQ,EAAE,QAAQ,EAAI;IAE7C,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhE;IAEK,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOlE;CACF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drives "bootstrap repo" runs durably via Cloudflare Workflows, mirroring
|
|
3
|
+
* WorkflowsWorkRunner for pipeline runs. Each run maps to one Workflows instance
|
|
4
|
+
* whose id is the bootstrap job id, which makes `startRun` idempotent (a duplicate
|
|
5
|
+
* start, or a sweeper re-drive racing a live instance, is tolerated).
|
|
6
|
+
*/
|
|
7
|
+
export class WorkflowsBootstrapRunner {
|
|
8
|
+
workflow;
|
|
9
|
+
constructor(workflow) {
|
|
10
|
+
this.workflow = workflow;
|
|
11
|
+
}
|
|
12
|
+
async startRun(workspaceId, jobId) {
|
|
13
|
+
try {
|
|
14
|
+
await this.workflow.create({
|
|
15
|
+
id: jobId,
|
|
16
|
+
params: { workspaceId, jobId },
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
// An instance with this id already exists (a duplicate start or a sweeper
|
|
21
|
+
// re-drive racing a live instance). The existing instance is authoritative.
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async cancelRun(_workspaceId, jobId) {
|
|
25
|
+
try {
|
|
26
|
+
const instance = await this.workflow.get(jobId);
|
|
27
|
+
await instance.terminate();
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// No live instance to terminate (already finished/terminated). Nothing to do.
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=WorkflowsBootstrapRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowsBootstrapRunner.js","sourceRoot":"","sources":["../../../src/infrastructure/workflows/WorkflowsBootstrapRunner.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,OAAO,wBAAwB;IACN,QAAQ;IAArC,YAA6B,QAAkB;wBAAlB,QAAQ;IAAa,CAAC;IAEnD,KAAK,CAAC,QAAQ,CAAC,WAAmB,EAAE,KAAa;QAC/C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACzB,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,EAAE,WAAW,EAAE,KAAK,EAAoC;aACjE,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,0EAA0E;YAC1E,4EAA4E;QAC9E,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,YAAoB,EAAE,KAAa;QACjD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAC/C,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAA;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,8EAA8E;QAChF,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { WorkRunner } from '@cat-factory/kernel';
|
|
2
|
+
import type { Queue, Workflow } from '@cloudflare/workers-types';
|
|
3
|
+
import type { ExecutionStartMessage } from '../env';
|
|
4
|
+
/** Params passed to a Workflows instance; also the queue message shape. */
|
|
5
|
+
export interface ExecutionWorkflowParams {
|
|
6
|
+
workspaceId: string;
|
|
7
|
+
executionId: string;
|
|
8
|
+
}
|
|
9
|
+
export interface WorkflowsWorkRunnerDeps {
|
|
10
|
+
workflow: Workflow;
|
|
11
|
+
/** When present, runs are started via the queue (admission rate limiting). */
|
|
12
|
+
queue?: Queue<ExecutionStartMessage>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Drives runs durably via Cloudflare Workflows. Each run maps to one Workflows
|
|
16
|
+
* instance whose id is the execution id, which makes start idempotent and lets
|
|
17
|
+
* decisions/cancels address the instance directly. When a queue is configured,
|
|
18
|
+
* `startRun` enqueues instead of creating directly so the consumer's
|
|
19
|
+
* `max_concurrency` bounds how fast runs are kicked off.
|
|
20
|
+
*/
|
|
21
|
+
export declare class WorkflowsWorkRunner implements WorkRunner {
|
|
22
|
+
private readonly workflow;
|
|
23
|
+
private readonly queue?;
|
|
24
|
+
constructor({ workflow, queue }: WorkflowsWorkRunnerDeps);
|
|
25
|
+
startRun(workspaceId: string, executionId: string): Promise<void>;
|
|
26
|
+
/** Create the Workflows instance, tolerating an existing one (idempotent). */
|
|
27
|
+
create(workspaceId: string, executionId: string): Promise<void>;
|
|
28
|
+
signalDecision(_workspaceId: string, executionId: string, decisionId: string, choice: string): Promise<void>;
|
|
29
|
+
cancelRun(_workspaceId: string, executionId: string): Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=WorkflowsWorkRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowsWorkRunner.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/workflows/WorkflowsWorkRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAA;AAEnD,2EAA2E;AAC3E,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,QAAQ,CAAA;IAClB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAA;CACrC;AAED;;;;;;GAMG;AACH,qBAAa,mBAAoB,YAAW,UAAU;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAA8B;IAErD,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,uBAAuB,EAGvD;IAEK,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtE;IAED,8EAA8E;IACxE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUpE;IAEK,cAAc,CAClB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAQf;IAEK,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxE;CACF"}
|