@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
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Igor Savin
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/app.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { CoreDependencies } from '@cat-factory/orchestration';
|
|
2
|
+
import { Hono } from 'hono';
|
|
3
|
+
import type { AppEnv } from './infrastructure/http/types';
|
|
4
|
+
export interface CreateAppOptions {
|
|
5
|
+
/** Override core dependencies — used by tests (e.g. a fake agent executor). */
|
|
6
|
+
overrides?: Partial<CoreDependencies>;
|
|
7
|
+
/** Force the Cloudflare-AI-enabled flag (conformance forces it off for parity). */
|
|
8
|
+
cloudflareModelsEnabled?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Assembles the Hono application. A per-request middleware builds the DI
|
|
12
|
+
* container from the request's `env` bindings and stashes it on the context, so
|
|
13
|
+
* controllers resolve their services from `c.get('container')`.
|
|
14
|
+
*
|
|
15
|
+
* The bulk of the controllers are runtime-neutral and live in @cat-factory/server
|
|
16
|
+
* (`registerCoreControllers`); the Worker mounts only its own runtime-coupled
|
|
17
|
+
* controllers — the LLM proxy (Workers AI binding), the WebSocket event stream
|
|
18
|
+
* (Durable Object), the GitHub webhook (Queue) and connect (Workflow), and the
|
|
19
|
+
* OAuth login flow.
|
|
20
|
+
*/
|
|
21
|
+
export declare function createApp(options?: CreateAppOptions): Hono<AppEnv>;
|
|
22
|
+
//# sourceMappingURL=app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAK3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACrC,mFAAmF;IACnF,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAClC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,CA0CtE"}
|
package/dist/app.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { mountAuthGate, registerCoreControllers } from '@cat-factory/server';
|
|
2
|
+
import { Hono } from 'hono';
|
|
3
|
+
import { cors } from 'hono/cors';
|
|
4
|
+
import { resolveCorsOrigin } from './infrastructure/config/cors';
|
|
5
|
+
import { buildContainer } from './infrastructure/container';
|
|
6
|
+
import { handleError } from './infrastructure/http/errorHandler';
|
|
7
|
+
/**
|
|
8
|
+
* Assembles the Hono application. A per-request middleware builds the DI
|
|
9
|
+
* container from the request's `env` bindings and stashes it on the context, so
|
|
10
|
+
* controllers resolve their services from `c.get('container')`.
|
|
11
|
+
*
|
|
12
|
+
* The bulk of the controllers are runtime-neutral and live in @cat-factory/server
|
|
13
|
+
* (`registerCoreControllers`); the Worker mounts only its own runtime-coupled
|
|
14
|
+
* controllers — the LLM proxy (Workers AI binding), the WebSocket event stream
|
|
15
|
+
* (Durable Object), the GitHub webhook (Queue) and connect (Workflow), and the
|
|
16
|
+
* OAuth login flow.
|
|
17
|
+
*/
|
|
18
|
+
export function createApp(options = {}) {
|
|
19
|
+
const app = new Hono();
|
|
20
|
+
// CORS allowlist is per-deployment configuration (CORS_ALLOWED_ORIGINS), not
|
|
21
|
+
// hardcoded, since each org provisions this system with its own frontend
|
|
22
|
+
// origin(s). Unset / `*` allows any origin — safe because every route is
|
|
23
|
+
// bearer-gated and fails closed; pinning origins is defense-in-depth. Auth is a
|
|
24
|
+
// bearer header (not cookies), so credentials mode stays off.
|
|
25
|
+
app.use('*', cors({
|
|
26
|
+
origin: (origin, c) => resolveCorsOrigin(origin, c.env.CORS_ALLOWED_ORIGINS),
|
|
27
|
+
// X-Personal-Password carries the ambient personal-subscription unlock password
|
|
28
|
+
// (individual-usage vendors); it must be allow-listed or the browser drops it.
|
|
29
|
+
allowHeaders: ['Content-Type', 'Authorization', 'X-Personal-Password'],
|
|
30
|
+
}));
|
|
31
|
+
app.use('*', async (c, next) => {
|
|
32
|
+
c.set('container', buildContainer(c.env, options.overrides, {
|
|
33
|
+
cloudflareModelsEnabled: options.cloudflareModelsEnabled,
|
|
34
|
+
}));
|
|
35
|
+
await next();
|
|
36
|
+
});
|
|
37
|
+
app.get('/health', (c) => c.json({ status: 'ok' }));
|
|
38
|
+
// Default-deny session gate + per-workspace authz, shared verbatim with the Node
|
|
39
|
+
// service (one implementation in @cat-factory/server so the runtimes can't drift).
|
|
40
|
+
mountAuthGate(app);
|
|
41
|
+
// The runtime-neutral API layer — every controller is shared across facades. Their
|
|
42
|
+
// runtime seams (WebSocket upgrade, backfill Workflow, sync Queue, the LLM proxy's
|
|
43
|
+
// Workers AI binding + upstreams) are delegated to the Worker's gateways (see
|
|
44
|
+
// buildContainer's `gateways`).
|
|
45
|
+
registerCoreControllers(app);
|
|
46
|
+
app.onError(handleError);
|
|
47
|
+
return app;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=app.js.map
|
package/dist/app.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAE5E,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAUhE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAAC,OAAO,GAAqB,EAAE;IACtD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,6EAA6E;IAC7E,yEAAyE;IACzE,yEAAyE;IACzE,gFAAgF;IAChF,8DAA8D;IAC9D,GAAG,CAAC,GAAG,CACL,GAAG,EACH,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAC5E,gFAAgF;QAChF,+EAA+E;QAC/E,YAAY,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,qBAAqB,CAAC;KACvE,CAAC,CACH,CAAA;IACD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QAC7B,CAAC,CAAC,GAAG,CACH,WAAW,EACX,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE;YACvC,uBAAuB,EAAE,OAAO,CAAC,uBAAuB;SACzD,CAAC,CACH,CAAA;QACD,MAAM,IAAI,EAAE,CAAA;IACd,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAEnD,iFAAiF;IACjF,mFAAmF;IACnF,aAAa,CAAC,GAAG,CAAC,CAAA;IAElB,mFAAmF;IACnF,mFAAmF;IACnF,8EAA8E;IAC9E,gCAAgC;IAChC,uBAAuB,CAAC,GAAG,CAAC,CAAA;IAE5B,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAExB,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ExecutionContext, MessageBatch, ScheduledController } from '@cloudflare/workers-types';
|
|
2
|
+
import type { Env, ExecutionStartMessage, GitHubSyncMessage } from './infrastructure/env';
|
|
3
|
+
export { ExecutionWorkflow } from './infrastructure/workflows/ExecutionWorkflow';
|
|
4
|
+
export { GitHubBackfillWorkflow } from './infrastructure/workflows/GitHubBackfillWorkflow';
|
|
5
|
+
export { BootstrapWorkflow } from './infrastructure/workflows/BootstrapWorkflow';
|
|
6
|
+
export { ExecutionContainer } from './infrastructure/containers/ExecutionContainer';
|
|
7
|
+
export { WorkspaceEventsHub } from './infrastructure/durable-objects/WorkspaceEventsHub';
|
|
8
|
+
export { registerModelRegistry, clearModelRegistries, type ModelRegistryFactory, } from './infrastructure/ai/registries';
|
|
9
|
+
export { registerAgentKind, registerAgentKinds, clearRegisteredAgentKinds, type AgentKindDefinition, } from '@cat-factory/agents';
|
|
10
|
+
export { registerPipeline, registerPipelines, clearRegisteredPipelines } from '@cat-factory/kernel';
|
|
11
|
+
declare const _default: {
|
|
12
|
+
fetch: (request: Request, Env?: Env | {} | undefined, executionCtx?: import("hono").ExecutionContext) => Response | Promise<Response>;
|
|
13
|
+
scheduled(controller: ScheduledController, env: Env, ctx: ExecutionContext): Promise<void>;
|
|
14
|
+
queue(batch: MessageBatch<ExecutionStartMessage | GitHubSyncMessage>, env: Env): Promise<void>;
|
|
15
|
+
};
|
|
16
|
+
export default _default;
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAGpG,OAAO,KAAK,EAAE,GAAG,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AA0BzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAA;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAA;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAA;AAEhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAA;AAEnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qDAAqD,CAAA;AAKxF,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,KAAK,oBAAoB,GAC1B,MAAM,gCAAgC,CAAA;AAMvC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;;IA6BjG,KAAK;IAEC,SAAS,aAAa,mBAAmB,OAAO,GAAG,OAAO,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2M1F,KAAK,QACF,YAAY,CAAC,qBAAqB,GAAG,iBAAiB,CAAC,OACzD,GAAG,GACP,OAAO,CAAC,IAAI,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { createApp } from './app';
|
|
2
|
+
import { loadConfig } from './infrastructure/config';
|
|
3
|
+
import { D1AgentRunRepository } from './infrastructure/repositories/D1AgentRunRepository';
|
|
4
|
+
import { D1CommitProjectionRepository } from './infrastructure/repositories/D1CommitProjectionRepository';
|
|
5
|
+
import { D1LiveContainerRepository } from './infrastructure/repositories/D1LiveContainerRepository';
|
|
6
|
+
import { D1SubscriptionActivationRepository } from './infrastructure/repositories/D1PersonalSubscriptionRepository';
|
|
7
|
+
import { ContainerInstanceRegistry } from './infrastructure/containers/ContainerInstanceRegistry';
|
|
8
|
+
import { D1RateLimitRepository } from './infrastructure/repositories/D1RateLimitRepository';
|
|
9
|
+
import { D1TokenUsageRepository } from './infrastructure/repositories/D1TokenUsageRepository';
|
|
10
|
+
import { D1LlmCallMetricRepository } from './infrastructure/repositories/D1LlmCallMetricRepository';
|
|
11
|
+
import { D1PipelineScheduleRepository } from './infrastructure/repositories/D1PipelineScheduleRepository';
|
|
12
|
+
import { buildContainer } from './infrastructure/container';
|
|
13
|
+
import { escalateStaleNotifications } from '@cat-factory/server';
|
|
14
|
+
import { CryptoIdGenerator, SystemClock } from './infrastructure/runtime';
|
|
15
|
+
import { WorkflowsWorkRunner } from './infrastructure/workflows/WorkflowsWorkRunner';
|
|
16
|
+
import { WorkflowsBootstrapRunner } from './infrastructure/workflows/WorkflowsBootstrapRunner';
|
|
17
|
+
import { sweepRetention } from './infrastructure/workflows/retention';
|
|
18
|
+
import { WorkflowsLookup, sweepStuckRuns } from './infrastructure/workflows/sweeper';
|
|
19
|
+
import { handleGitHubSyncBatch, reconcileStaleRepos } from './infrastructure/github/sync-consumer';
|
|
20
|
+
import { sweepExpiredEnvironments } from './infrastructure/environments/sweep';
|
|
21
|
+
import { logger } from './infrastructure/observability/logger';
|
|
22
|
+
// Cloudflare Worker entry. In addition to the Hono `fetch` handler, we expose a
|
|
23
|
+
// `scheduled` handler (the cron sweeper, now also reconciling GitHub
|
|
24
|
+
// projections) and a `queue` consumer that multiplexes two queues: durable run
|
|
25
|
+
// admission and GitHub sync. The Workflows bindings require their entrypoint
|
|
26
|
+
// classes to be exported by name.
|
|
27
|
+
export { ExecutionWorkflow } from './infrastructure/workflows/ExecutionWorkflow';
|
|
28
|
+
export { GitHubBackfillWorkflow } from './infrastructure/workflows/GitHubBackfillWorkflow';
|
|
29
|
+
export { BootstrapWorkflow } from './infrastructure/workflows/BootstrapWorkflow';
|
|
30
|
+
// Container-enabled Durable Object backing per-run implementation containers.
|
|
31
|
+
export { ExecutionContainer } from './infrastructure/containers/ExecutionContainer';
|
|
32
|
+
// Per-workspace WebSocket fan-out hub (real-time execution/board events).
|
|
33
|
+
export { WorkspaceEventsHub } from './infrastructure/durable-objects/WorkspaceEventsHub';
|
|
34
|
+
// Installation-level AI provisioning extension point: a deployment registers extra
|
|
35
|
+
// model-provider registries at startup (e.g. AWS Bedrock from
|
|
36
|
+
// @cat-factory/provider-bedrock) and every container build picks them up.
|
|
37
|
+
export { registerModelRegistry, clearModelRegistries, } from './infrastructure/ai/registries';
|
|
38
|
+
// Installation-level extension points for custom agent kinds and predefined pipelines
|
|
39
|
+
// (alongside registerModelRegistry above): a deployment registers these at startup —
|
|
40
|
+
// typically from a proprietary org package — and every prompt build, executor routing
|
|
41
|
+
// decision and new-workspace seed picks them up.
|
|
42
|
+
export { registerAgentKind, registerAgentKinds, clearRegisteredAgentKinds, } from '@cat-factory/agents';
|
|
43
|
+
export { registerPipeline, registerPipelines, clearRegisteredPipelines } from '@cat-factory/kernel';
|
|
44
|
+
const app = createApp();
|
|
45
|
+
/** Compact, log-friendly shape for an unknown caught value. */
|
|
46
|
+
function errInfo(error) {
|
|
47
|
+
if (error instanceof Error) {
|
|
48
|
+
return { message: error.message, ...(error.stack ? { stack: error.stack } : {}) };
|
|
49
|
+
}
|
|
50
|
+
return { message: String(error) };
|
|
51
|
+
}
|
|
52
|
+
/** A run is treated as orphaned if its lease is older than this. */
|
|
53
|
+
const SWEEP_LEASE_MS = 5 * 60 * 1000;
|
|
54
|
+
/** A GitHub projection is reconciled if it hasn't synced within this window. */
|
|
55
|
+
const GITHUB_RECONCILE_STALE_MS = 30 * 60 * 1000;
|
|
56
|
+
/** Queue name for GitHub webhook deliveries / resync jobs (see wrangler.toml). */
|
|
57
|
+
const GITHUB_SYNC_QUEUE_NAME = 'cat-factory-github-sync';
|
|
58
|
+
/**
|
|
59
|
+
* Cron schedule (see wrangler.toml `triggers.crons`) that drives the retention
|
|
60
|
+
* sweep. Retention windows are days-to-months long, so a daily pass is plenty —
|
|
61
|
+
* running it on the 2-min run-sweeper cron would just re-issue the same boundary
|
|
62
|
+
* DELETEs ~720×/day against the single D1 writer. Routed by `controller.cron`.
|
|
63
|
+
*/
|
|
64
|
+
const RETENTION_CRON = '0 3 * * *';
|
|
65
|
+
export default {
|
|
66
|
+
fetch: app.fetch,
|
|
67
|
+
async scheduled(controller, env, ctx) {
|
|
68
|
+
const clock = new SystemClock();
|
|
69
|
+
// Daily pass: prune the unbounded ledgers/projections to their retention
|
|
70
|
+
// windows. The tables exist regardless of whether GitHub/agents are
|
|
71
|
+
// configured, so this runs unconditionally; an unused table reclaims nothing.
|
|
72
|
+
if (controller.cron === RETENTION_CRON) {
|
|
73
|
+
ctx.waitUntil(sweepRetention({
|
|
74
|
+
tokenUsageRepository: new D1TokenUsageRepository({ db: env.DB }),
|
|
75
|
+
rateLimitRepository: new D1RateLimitRepository({
|
|
76
|
+
db: env.DB,
|
|
77
|
+
idGenerator: new CryptoIdGenerator(),
|
|
78
|
+
}),
|
|
79
|
+
commitRepository: new D1CommitProjectionRepository({ db: env.DB }),
|
|
80
|
+
llmCallMetricRepository: new D1LlmCallMetricRepository({ db: env.DB }),
|
|
81
|
+
pipelineScheduleRepository: new D1PipelineScheduleRepository({ db: env.DB }),
|
|
82
|
+
clock,
|
|
83
|
+
policy: loadConfig(env).retention,
|
|
84
|
+
})
|
|
85
|
+
.then((result) => logger.info({ cron: 'retention', ...result }, 'retention sweep complete'))
|
|
86
|
+
.catch((error) => logger.error({ cron: 'retention', err: errInfo(error) }, 'retention sweep failed')));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
// Frequent pass (every 2 min): time-sensitive backstops.
|
|
90
|
+
// Re-drive any agent run — execution OR bootstrap — whose Workflows instance
|
|
91
|
+
// died. One sweep over the unified agent_runs table dispatches by kind.
|
|
92
|
+
if (env.EXECUTION_WORKFLOW || env.BOOTSTRAP_WORKFLOW) {
|
|
93
|
+
const execLookup = env.EXECUTION_WORKFLOW ? new WorkflowsLookup(env.EXECUTION_WORKFLOW) : null;
|
|
94
|
+
const bootLookup = env.BOOTSTRAP_WORKFLOW ? new WorkflowsLookup(env.BOOTSTRAP_WORKFLOW) : null;
|
|
95
|
+
const execRunner = env.EXECUTION_WORKFLOW
|
|
96
|
+
? new WorkflowsWorkRunner({ workflow: env.EXECUTION_WORKFLOW, queue: env.EXECUTION_QUEUE })
|
|
97
|
+
: null;
|
|
98
|
+
const bootRunner = env.BOOTSTRAP_WORKFLOW
|
|
99
|
+
? new WorkflowsBootstrapRunner(env.BOOTSTRAP_WORKFLOW)
|
|
100
|
+
: null;
|
|
101
|
+
ctx.waitUntil(sweepStuckRuns({
|
|
102
|
+
agentRunRepository: new D1AgentRunRepository({ db: env.DB }),
|
|
103
|
+
instanceState: (ref) => {
|
|
104
|
+
const lookup = ref.kind === 'bootstrap' ? bootLookup : execLookup;
|
|
105
|
+
// No binding for this kind → can't classify, so treat as alive (skip).
|
|
106
|
+
return lookup ? lookup.instanceState(ref.id) : Promise.resolve('alive');
|
|
107
|
+
},
|
|
108
|
+
redrive: async (ref) => {
|
|
109
|
+
if (ref.kind === 'bootstrap')
|
|
110
|
+
await bootRunner?.startRun(ref.workspaceId, ref.id);
|
|
111
|
+
else
|
|
112
|
+
await execRunner?.startRun(ref.workspaceId, ref.id);
|
|
113
|
+
},
|
|
114
|
+
// The durable instance is terminal and can't be recreated → finalize the
|
|
115
|
+
// run as stopped so it stops showing `running` forever (also reclaims any
|
|
116
|
+
// leftover container). Reuses the same stop path the user-facing button hits.
|
|
117
|
+
finalizeOrphan: async (ref) => {
|
|
118
|
+
const container = buildContainer(env);
|
|
119
|
+
const reason = 'The run was stopped automatically: its durable driver ended without finalizing it.';
|
|
120
|
+
if (ref.kind === 'bootstrap') {
|
|
121
|
+
if (container.bootstrap) {
|
|
122
|
+
await container.bootstrap.service.stop(ref.workspaceId, ref.id, {
|
|
123
|
+
reason,
|
|
124
|
+
kind: 'unknown',
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
await container.executionService.stopRun(ref.workspaceId, ref.id, {
|
|
130
|
+
reason,
|
|
131
|
+
kind: 'unknown',
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
clock,
|
|
136
|
+
leaseMs: SWEEP_LEASE_MS,
|
|
137
|
+
})
|
|
138
|
+
// Surface what the sweep did — the key signal for "are runs getting stuck?"
|
|
139
|
+
// Only log when it actually acted.
|
|
140
|
+
.then(({ redriven, finalized }) => {
|
|
141
|
+
if (redriven > 0 || finalized > 0) {
|
|
142
|
+
logger.warn({ cron: 'run-sweeper', redriven, finalized }, 'swept stuck runs');
|
|
143
|
+
}
|
|
144
|
+
})
|
|
145
|
+
.catch((error) => logger.error({ cron: 'run-sweeper', err: errInfo(error) }, 'run sweep failed')));
|
|
146
|
+
}
|
|
147
|
+
// Reclaim expired personal-credential activations (individual-usage subscriptions).
|
|
148
|
+
// Each is a short-lived, system-encrypted per-run copy of a user's token; the TTL
|
|
149
|
+
// bounds standing exposure and a finished run's rows are deleted at completion, but
|
|
150
|
+
// this backstop also clears any that outlived their TTL. The table always exists.
|
|
151
|
+
{
|
|
152
|
+
const activations = new D1SubscriptionActivationRepository({ db: env.DB });
|
|
153
|
+
ctx.waitUntil(activations
|
|
154
|
+
.deleteExpired(clock.now())
|
|
155
|
+
.then((reclaimed) => {
|
|
156
|
+
if (reclaimed > 0)
|
|
157
|
+
logger.info({ cron: 'activation-sweeper', reclaimed }, 'reclaimed activations');
|
|
158
|
+
})
|
|
159
|
+
.catch((error) => logger.error({ cron: 'activation-sweeper', err: errInfo(error) }, 'activation sweep failed')));
|
|
160
|
+
}
|
|
161
|
+
// Instance-level container reaper: kill any per-run container that outlived its
|
|
162
|
+
// legitimate maximum lifetime. This is the load-bearing backstop the run-record
|
|
163
|
+
// nets miss — a terminal run whose container survived, or a stuck-`running` run
|
|
164
|
+
// a live driver keeps warm (so its idle sleep clock never starts). Keys off the
|
|
165
|
+
// real live-container inventory, not the run record, and kills via the same
|
|
166
|
+
// EXEC_CONTAINER binding (no Cloudflare API token). With normal runs now self-
|
|
167
|
+
// reclaiming, a reaped container is a genuine leak — the registry logs each loudly.
|
|
168
|
+
if (env.EXEC_CONTAINER) {
|
|
169
|
+
const reaper = new ContainerInstanceRegistry(env.EXEC_CONTAINER, new D1LiveContainerRepository({ db: env.DB }), clock);
|
|
170
|
+
const maxAgeMs = loadConfig(env).execution.containerMaxAgeMs;
|
|
171
|
+
ctx.waitUntil(reaper
|
|
172
|
+
.reapStaleBefore(clock.now() - maxAgeMs)
|
|
173
|
+
.then(({ reaped }) => {
|
|
174
|
+
if (reaped > 0)
|
|
175
|
+
logger.warn({ cron: 'container-reaper', reaped }, 'reaped leaked containers');
|
|
176
|
+
})
|
|
177
|
+
.catch((error) => logger.error({ cron: 'container-reaper', err: errInfo(error) }, 'container reap failed')));
|
|
178
|
+
}
|
|
179
|
+
// Escalate long-waiting notifications yellow → red (every 2 min). Runs no longer
|
|
180
|
+
// time out waiting for a human, so the escalating notification — past each
|
|
181
|
+
// workspace's `waitingEscalationMinutes` threshold — is the overdue-human signal.
|
|
182
|
+
ctx.waitUntil(escalateStaleNotifications(buildContainer(env), clock.now())
|
|
183
|
+
.then((escalated) => {
|
|
184
|
+
if (escalated > 0)
|
|
185
|
+
logger.info({ cron: 'notification-escalation', escalated }, 'escalated notifications');
|
|
186
|
+
})
|
|
187
|
+
.catch((error) => logger.error({ cron: 'notification-escalation', err: errInfo(error) }, 'notification escalation failed')));
|
|
188
|
+
// Fire any due recurring pipelines (every 2 min; the actual cadence is hours).
|
|
189
|
+
// Each due schedule starts its pipeline against its reused block, skipping any
|
|
190
|
+
// whose block already has an active run. No-op when the feature isn't wired.
|
|
191
|
+
ctx.waitUntil(Promise.resolve(buildContainer(env).recurring?.service.runDue(clock.now()))
|
|
192
|
+
.then((result) => {
|
|
193
|
+
if (result && (result.fired > 0 || result.skipped > 0)) {
|
|
194
|
+
logger.info({ cron: 'recurring-pipelines', ...result }, 'fired recurring pipelines');
|
|
195
|
+
}
|
|
196
|
+
})
|
|
197
|
+
.catch((error) => logger.error({ cron: 'recurring-pipelines', err: errInfo(error) }, 'recurring-pipeline sweep failed')));
|
|
198
|
+
// Reconcile GitHub projections that may have missed a webhook (no-op unless
|
|
199
|
+
// the integration is configured).
|
|
200
|
+
ctx.waitUntil(reconcileStaleRepos(env, clock, GITHUB_RECONCILE_STALE_MS)
|
|
201
|
+
.then((scheduled) => {
|
|
202
|
+
if (scheduled > 0)
|
|
203
|
+
logger.info({ cron: 'github-reconcile', scheduled }, 'scheduled repo resyncs');
|
|
204
|
+
})
|
|
205
|
+
.catch((error) => logger.error({ cron: 'github-reconcile', err: errInfo(error) }, 'github reconcile failed')));
|
|
206
|
+
// Tear down ephemeral environments whose TTL has elapsed (no-op unless the
|
|
207
|
+
// environment integration is configured).
|
|
208
|
+
ctx.waitUntil(sweepExpiredEnvironments(env, clock).catch((error) => logger.error({ cron: 'env-sweeper', err: errInfo(error) }, 'environment sweep failed')));
|
|
209
|
+
},
|
|
210
|
+
async queue(batch, env) {
|
|
211
|
+
// Route by source queue — the single handler serves both queues.
|
|
212
|
+
if (batch.queue === GITHUB_SYNC_QUEUE_NAME) {
|
|
213
|
+
await handleGitHubSyncBatch(batch, env);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
// Execution admission queue: create the Workflows instance per message.
|
|
217
|
+
if (!env.EXECUTION_WORKFLOW) {
|
|
218
|
+
for (const message of batch.messages)
|
|
219
|
+
message.ack();
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
const runner = new WorkflowsWorkRunner({ workflow: env.EXECUTION_WORKFLOW });
|
|
223
|
+
for (const message of batch.messages) {
|
|
224
|
+
try {
|
|
225
|
+
await runner.create(message.body.workspaceId, message.body.executionId);
|
|
226
|
+
message.ack();
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
message.retry();
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
};
|
|
234
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type ProviderRegistry } from '@cat-factory/agents';
|
|
2
|
+
import type { ModelProvider, ModelRef } from '@cat-factory/kernel';
|
|
3
|
+
import type { LanguageModel } from 'ai';
|
|
4
|
+
import type { Env } from '../env';
|
|
5
|
+
/**
|
|
6
|
+
* Resolves a provider-agnostic {@link ModelRef} into a concrete Vercel AI SDK model.
|
|
7
|
+
* This is the Worker's binding of the LLM seam: the core asks for
|
|
8
|
+
* `{ provider: 'openai', model: 'gpt-4o-mini' }` and gets back something `generateText`
|
|
9
|
+
* can call, while API keys and the Workers AI binding stay here.
|
|
10
|
+
*
|
|
11
|
+
* It is just the Worker's composition of the shared AI provisioning facade
|
|
12
|
+
* ({@link CompositeModelProvider}): the base registry above plus any `extraRegistries`
|
|
13
|
+
* an installation mixes in — e.g. `bedrockRegistry()` from `@cat-factory/provider-bedrock`.
|
|
14
|
+
*/
|
|
15
|
+
export declare class CloudflareModelProvider implements ModelProvider {
|
|
16
|
+
private readonly composite;
|
|
17
|
+
constructor({ env, extraRegistries }: {
|
|
18
|
+
env: Env;
|
|
19
|
+
extraRegistries?: ProviderRegistry[];
|
|
20
|
+
});
|
|
21
|
+
resolve(ref: ModelRef): LanguageModel;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=CloudflareModelProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CloudflareModelProvider.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/ai/CloudflareModelProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EAItB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAEvC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAgDjC;;;;;;;;;GASG;AACH,qBAAa,uBAAwB,YAAW,aAAa;IAC3D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAElD,YAAY,EAAE,GAAG,EAAE,eAAoB,EAAE,EAAE;QAAE,GAAG,EAAE,GAAG,CAAC;QAAC,eAAe,CAAC,EAAE,gBAAgB,EAAE,CAAA;KAAE,EAE5F;IAED,OAAO,CAAC,GAAG,EAAE,QAAQ,GAAG,aAAa,CAEpC;CACF"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { CompositeModelProvider, anthropicResolver, openAiCompatibleResolver, openAiResolver, } from '@cat-factory/agents';
|
|
2
|
+
import { createWorkersAI } from 'workers-ai-provider';
|
|
3
|
+
import { baseUrlFor } from './providerEndpoints';
|
|
4
|
+
// DashScope (Alibaba), DeepSeek and Moonshot (Kimi) all expose OpenAI-compatible
|
|
5
|
+
// chat APIs, so they resolve through the openai-compatible provider with just a
|
|
6
|
+
// base URL and a key (see ./providerEndpoints for the shared base URLs).
|
|
7
|
+
// DashScope's international endpoint is used (the mainland host differs).
|
|
8
|
+
/**
|
|
9
|
+
* Build the Worker's base provider registry. `workers-ai` is the Cloudflare flavour
|
|
10
|
+
* (resolved via the in-process `AI` binding); `openai`/`anthropic` and the
|
|
11
|
+
* OpenAI-compatible vendors (`qwen`/`deepseek`/`moonshot`) are keyed from `env`. A
|
|
12
|
+
* provider is registered ONLY when its credential/binding is present, so an unconfigured
|
|
13
|
+
* provider resolves to a clear "Unsupported model provider" error (from
|
|
14
|
+
* {@link CompositeModelProvider}) rather than failing deep in the vendor SDK — matching the
|
|
15
|
+
* Node facade exactly (the conditional `baseProviderRegistry`), so the two runtimes don't
|
|
16
|
+
* diverge on a missing key.
|
|
17
|
+
*/
|
|
18
|
+
function workerBaseRegistry(env) {
|
|
19
|
+
const compatible = (provider, apiKey) => apiKey
|
|
20
|
+
? openAiCompatibleResolver({ name: provider, apiKey, baseURL: baseUrlFor(provider, env) })
|
|
21
|
+
: undefined;
|
|
22
|
+
return {
|
|
23
|
+
openai: env.OPENAI_API_KEY ? openAiResolver({ apiKey: env.OPENAI_API_KEY }) : undefined,
|
|
24
|
+
anthropic: env.ANTHROPIC_API_KEY
|
|
25
|
+
? anthropicResolver({ apiKey: env.ANTHROPIC_API_KEY })
|
|
26
|
+
: undefined,
|
|
27
|
+
qwen: compatible('qwen', env.QWEN_API_KEY),
|
|
28
|
+
deepseek: compatible('deepseek', env.DEEPSEEK_API_KEY),
|
|
29
|
+
moonshot: compatible('moonshot', env.MOONSHOT_API_KEY),
|
|
30
|
+
'workers-ai': env.AI
|
|
31
|
+
? (ref) => {
|
|
32
|
+
const binding = env.AI;
|
|
33
|
+
if (!binding)
|
|
34
|
+
throw new Error('Workers AI binding (AI) is not configured');
|
|
35
|
+
// workers-ai-provider@3 implements the same provider spec as `ai` v6
|
|
36
|
+
// (`@ai-sdk/provider` v3), so the model is a real LanguageModel — no cast.
|
|
37
|
+
const workersai = createWorkersAI({ binding });
|
|
38
|
+
return workersai(ref.model);
|
|
39
|
+
}
|
|
40
|
+
: undefined,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Resolves a provider-agnostic {@link ModelRef} into a concrete Vercel AI SDK model.
|
|
45
|
+
* This is the Worker's binding of the LLM seam: the core asks for
|
|
46
|
+
* `{ provider: 'openai', model: 'gpt-4o-mini' }` and gets back something `generateText`
|
|
47
|
+
* can call, while API keys and the Workers AI binding stay here.
|
|
48
|
+
*
|
|
49
|
+
* It is just the Worker's composition of the shared AI provisioning facade
|
|
50
|
+
* ({@link CompositeModelProvider}): the base registry above plus any `extraRegistries`
|
|
51
|
+
* an installation mixes in — e.g. `bedrockRegistry()` from `@cat-factory/provider-bedrock`.
|
|
52
|
+
*/
|
|
53
|
+
export class CloudflareModelProvider {
|
|
54
|
+
composite;
|
|
55
|
+
constructor({ env, extraRegistries = [] }) {
|
|
56
|
+
this.composite = new CompositeModelProvider(workerBaseRegistry(env), ...extraRegistries);
|
|
57
|
+
}
|
|
58
|
+
resolve(ref) {
|
|
59
|
+
return this.composite.resolve(ref);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=CloudflareModelProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CloudflareModelProvider.js","sourceRoot":"","sources":["../../../src/infrastructure/ai/CloudflareModelProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EAGtB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,GACf,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,iFAAiF;AACjF,gFAAgF;AAChF,yEAAyE;AACzE,0EAA0E;AAE1E;;;;;;;;;GASG;AACH,SAAS,kBAAkB,CAAC,GAAQ;IAClC,MAAM,UAAU,GAAG,CACjB,QAA0C,EAC1C,MAA0B,EACC,EAAE,CAC7B,MAAM;QACJ,CAAC,CAAC,wBAAwB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAE,EAAE,CAAC;QAC3F,CAAC,CAAC,SAAS,CAAA;IAEf,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;QACvF,SAAS,EAAE,GAAG,CAAC,iBAAiB;YAC9B,CAAC,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC;YACtD,CAAC,CAAC,SAAS;QACb,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC;QAC1C,QAAQ,EAAE,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC;QACtD,QAAQ,EAAE,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC;QACtD,YAAY,EAAE,GAAG,CAAC,EAAE;YAClB,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE;gBACN,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,CAAA;gBACtB,IAAI,CAAC,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;gBAC1E,qEAAqE;gBACrE,2EAA2E;gBAC3E,MAAM,SAAS,GAAG,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;gBAC9C,OAAO,SAAS,CAAC,GAAG,CAAC,KAAwC,CAAC,CAAA;YAChE,CAAC;YACH,CAAC,CAAC,SAAS;KACd,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,uBAAuB;IACjB,SAAS,CAAwB;IAElD,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,EAAE,EAAsD;QAC3F,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAsB,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,GAAG,eAAe,CAAC,CAAA;IAC1F,CAAC;IAED,OAAO,CAAC,GAAa;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompositeAgentExecutor.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/ai/CompositeAgentExecutor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// Moved to the runtime-neutral @cat-factory/server package (so the Node service
|
|
2
|
+
// wires the same inline+container composite); re-exported here for existing Worker
|
|
3
|
+
// imports and tests.
|
|
4
|
+
export { CompositeAgentExecutor } from '@cat-factory/server';
|
|
5
|
+
//# sourceMappingURL=CompositeAgentExecutor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompositeAgentExecutor.js","sourceRoot":"","sources":["../../../src/infrastructure/ai/CompositeAgentExecutor.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,mFAAmF;AACnF,qBAAqB;AACrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContainerAgentExecutor.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/ai/ContainerAgentExecutor.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,sBAAsB,EACtB,KAAK,kCAAkC,EACvC,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// Moved to the runtime-neutral @cat-factory/server package (so the Node service
|
|
2
|
+
// runs the same container agent executor, dispatching to its self-hosted runner
|
|
3
|
+
// pool); re-exported here for existing Worker imports.
|
|
4
|
+
export { ContainerAgentExecutor, } from '@cat-factory/server';
|
|
5
|
+
//# sourceMappingURL=ContainerAgentExecutor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContainerAgentExecutor.js","sourceRoot":"","sources":["../../../src/infrastructure/ai/ContainerAgentExecutor.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,gFAAgF;AAChF,uDAAuD;AACvD,OAAO,EACL,sBAAsB,GAMvB,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContainerRepoBootstrapper.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/ai/ContainerRepoBootstrapper.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,yBAAyB,EACzB,KAAK,qCAAqC,GAC3C,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// Moved to the runtime-neutral @cat-factory/server package (so the Node service runs
|
|
2
|
+
// the same repo bootstrapper, dispatching through the shared runner-transport seam);
|
|
3
|
+
// re-exported here for existing Worker imports.
|
|
4
|
+
export { ContainerRepoBootstrapper, } from '@cat-factory/server';
|
|
5
|
+
//# sourceMappingURL=ContainerRepoBootstrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContainerRepoBootstrapper.js","sourceRoot":"","sources":["../../../src/infrastructure/ai/ContainerRepoBootstrapper.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,qFAAqF;AACrF,gDAAgD;AAChD,OAAO,EACL,yBAAyB,GAE1B,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type GitHubInstallationRepository, type ModelRef, type RepoScanner, type ScanRepoRequest, type ScannedBlueprint } from '@cat-factory/kernel';
|
|
2
|
+
import type { DurableObjectNamespace } from '@cloudflare/workers-types';
|
|
3
|
+
import type { ExecutionContainer } from '../containers/ExecutionContainer';
|
|
4
|
+
import type { ContainerSessionService } from '../containers/ContainerSessionService';
|
|
5
|
+
export interface ContainerRepoScannerDependencies {
|
|
6
|
+
/** The Durable Object namespace backing the per-run container instances. */
|
|
7
|
+
container: DurableObjectNamespace<ExecutionContainer>;
|
|
8
|
+
/** Resolve which GitHub installation a workspace's repos live under. */
|
|
9
|
+
installationRepository: GitHubInstallationRepository;
|
|
10
|
+
/** Mints a short-lived GitHub installation token for the read-only clone. */
|
|
11
|
+
mintInstallationToken: (installationId: number) => Promise<string>;
|
|
12
|
+
/** Mints the signed, model-locked LLM-proxy session token the container uses. */
|
|
13
|
+
sessionService: ContainerSessionService;
|
|
14
|
+
/** Model the scanner agent runs with (must be proxyable). */
|
|
15
|
+
model: ModelRef;
|
|
16
|
+
/** Public base URL of the Worker's OpenAI-compatible LLM proxy, including `/v1`. */
|
|
17
|
+
proxyBaseUrl: string;
|
|
18
|
+
/** GitHub REST base for resolving the repo (Enterprise / api.github.com). */
|
|
19
|
+
githubApiBase?: string;
|
|
20
|
+
/** Web base for building the repo clone URL (defaults to github.com). */
|
|
21
|
+
webBaseUrl?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A {@link RepoScanner} that performs the side-effecting half of a "scan
|
|
25
|
+
* repository" run: it spins up a per-run Cloudflare Container that clones the
|
|
26
|
+
* repository read-only, has the scanner agent decompose it into the canonical
|
|
27
|
+
* service → modules blueprint (with codebase references), and returns
|
|
28
|
+
* that structure. The agent's JSON is coerced into a well-formed tree here.
|
|
29
|
+
*
|
|
30
|
+
* Secrets never reach the container image: the per-run GitHub installation token
|
|
31
|
+
* and the model-locked LLM-proxy session token are minted here and handed over in
|
|
32
|
+
* the dispatch body, exactly as the implementation executor and bootstrapper do.
|
|
33
|
+
*/
|
|
34
|
+
export declare class ContainerRepoScanner implements RepoScanner {
|
|
35
|
+
private readonly deps;
|
|
36
|
+
constructor(deps: ContainerRepoScannerDependencies);
|
|
37
|
+
scan(request: ScanRepoRequest): Promise<ScannedBlueprint>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=ContainerRepoScanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContainerRepoScanner.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/ai/ContainerRepoScanner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAA;AAOpF,MAAM,WAAW,gCAAgC;IAC/C,4EAA4E;IAC5E,SAAS,EAAE,sBAAsB,CAAC,kBAAkB,CAAC,CAAA;IACrD,wEAAwE;IACxE,sBAAsB,EAAE,4BAA4B,CAAA;IACpD,6EAA6E;IAC7E,qBAAqB,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAClE,iFAAiF;IACjF,cAAc,EAAE,uBAAuB,CAAA;IACvC,6DAA6D;IAC7D,KAAK,EAAE,QAAQ,CAAA;IACf,oFAAoF;IACpF,YAAY,EAAE,MAAM,CAAA;IACpB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AA6BD;;;;;;;;;;GAUG;AACH,qBAAa,oBAAqB,YAAW,WAAW;IAC1C,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,gCAAgC,EAAI;IAEjE,IAAI,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8D9D;CACF"}
|