@cat-factory/kernel 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/domain/catalog.d.ts +36 -0
- package/dist/domain/catalog.d.ts.map +1 -0
- package/dist/domain/catalog.js +55 -0
- package/dist/domain/catalog.js.map +1 -0
- package/dist/domain/errors.d.ts +57 -0
- package/dist/domain/errors.d.ts.map +1 -0
- package/dist/domain/errors.js +60 -0
- package/dist/domain/errors.js.map +1 -0
- package/dist/domain/models.d.ts +204 -0
- package/dist/domain/models.d.ts.map +1 -0
- package/dist/domain/models.js +522 -0
- package/dist/domain/models.js.map +1 -0
- package/dist/domain/pipeline-registry.d.ts +19 -0
- package/dist/domain/pipeline-registry.d.ts.map +1 -0
- package/dist/domain/pipeline-registry.js +48 -0
- package/dist/domain/pipeline-registry.js.map +1 -0
- package/dist/domain/seed.d.ts +14 -0
- package/dist/domain/seed.d.ts.map +1 -0
- package/dist/domain/seed.js +369 -0
- package/dist/domain/seed.js.map +1 -0
- package/dist/domain/service-registration.d.ts +31 -0
- package/dist/domain/service-registration.d.ts.map +1 -0
- package/dist/domain/service-registration.js +37 -0
- package/dist/domain/service-registration.js.map +1 -0
- package/dist/domain/subtasks.logic.d.ts +6 -0
- package/dist/domain/subtasks.logic.d.ts.map +1 -0
- package/dist/domain/subtasks.logic.js +20 -0
- package/dist/domain/subtasks.logic.js.map +1 -0
- package/dist/domain/types.d.ts +2 -0
- package/dist/domain/types.d.ts.map +1 -0
- package/dist/domain/types.js +2 -0
- package/dist/domain/types.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/ports/account-repositories.d.ts +46 -0
- package/dist/ports/account-repositories.d.ts.map +1 -0
- package/dist/ports/account-repositories.js +2 -0
- package/dist/ports/account-repositories.js.map +1 -0
- package/dist/ports/agent-executor.d.ts +361 -0
- package/dist/ports/agent-executor.d.ts.map +1 -0
- package/dist/ports/agent-executor.js +8 -0
- package/dist/ports/agent-executor.js.map +1 -0
- package/dist/ports/agent-runs.d.ts +28 -0
- package/dist/ports/agent-runs.d.ts.map +1 -0
- package/dist/ports/agent-runs.js +2 -0
- package/dist/ports/agent-runs.js.map +1 -0
- package/dist/ports/board-operations.d.ts +15 -0
- package/dist/ports/board-operations.d.ts.map +1 -0
- package/dist/ports/board-operations.js +2 -0
- package/dist/ports/board-operations.js.map +1 -0
- package/dist/ports/board-scan-repositories.d.ts +23 -0
- package/dist/ports/board-scan-repositories.d.ts.map +1 -0
- package/dist/ports/board-scan-repositories.js +2 -0
- package/dist/ports/board-scan-repositories.js.map +1 -0
- package/dist/ports/bootstrap-repositories.d.ts +71 -0
- package/dist/ports/bootstrap-repositories.d.ts.map +1 -0
- package/dist/ports/bootstrap-repositories.js +2 -0
- package/dist/ports/bootstrap-repositories.js.map +1 -0
- package/dist/ports/bootstrap-runner.d.ts +20 -0
- package/dist/ports/bootstrap-runner.d.ts.map +1 -0
- package/dist/ports/bootstrap-runner.js +12 -0
- package/dist/ports/bootstrap-runner.js.map +1 -0
- package/dist/ports/ci-status.d.ts +23 -0
- package/dist/ports/ci-status.d.ts.map +1 -0
- package/dist/ports/ci-status.js +8 -0
- package/dist/ports/ci-status.js.map +1 -0
- package/dist/ports/clarity-review-repositories.d.ts +12 -0
- package/dist/ports/clarity-review-repositories.d.ts.map +1 -0
- package/dist/ports/clarity-review-repositories.js +2 -0
- package/dist/ports/clarity-review-repositories.js.map +1 -0
- package/dist/ports/consensus-repositories.d.ts +12 -0
- package/dist/ports/consensus-repositories.d.ts.map +1 -0
- package/dist/ports/consensus-repositories.js +2 -0
- package/dist/ports/consensus-repositories.js.map +1 -0
- package/dist/ports/document-repositories.d.ts +55 -0
- package/dist/ports/document-repositories.d.ts.map +1 -0
- package/dist/ports/document-repositories.js +2 -0
- package/dist/ports/document-repositories.js.map +1 -0
- package/dist/ports/document-source.d.ts +55 -0
- package/dist/ports/document-source.d.ts.map +1 -0
- package/dist/ports/document-source.js +2 -0
- package/dist/ports/document-source.js.map +1 -0
- package/dist/ports/email-sender.d.ts +42 -0
- package/dist/ports/email-sender.d.ts.map +1 -0
- package/dist/ports/email-sender.js +7 -0
- package/dist/ports/email-sender.js.map +1 -0
- package/dist/ports/environment-provider.d.ts +67 -0
- package/dist/ports/environment-provider.d.ts.map +1 -0
- package/dist/ports/environment-provider.js +2 -0
- package/dist/ports/environment-provider.js.map +1 -0
- package/dist/ports/environment-repositories.d.ts +64 -0
- package/dist/ports/environment-repositories.d.ts.map +1 -0
- package/dist/ports/environment-repositories.js +2 -0
- package/dist/ports/environment-repositories.js.map +1 -0
- package/dist/ports/execution-events.d.ts +72 -0
- package/dist/ports/execution-events.d.ts.map +1 -0
- package/dist/ports/execution-events.js +16 -0
- package/dist/ports/execution-events.js.map +1 -0
- package/dist/ports/fragment-repositories.d.ts +65 -0
- package/dist/ports/fragment-repositories.d.ts.map +1 -0
- package/dist/ports/fragment-repositories.js +2 -0
- package/dist/ports/fragment-repositories.js.map +1 -0
- package/dist/ports/fragment-selector.d.ts +64 -0
- package/dist/ports/fragment-selector.d.ts.map +1 -0
- package/dist/ports/fragment-selector.js +2 -0
- package/dist/ports/fragment-selector.js.map +1 -0
- package/dist/ports/github-client.d.ts +226 -0
- package/dist/ports/github-client.d.ts.map +1 -0
- package/dist/ports/github-client.js +2 -0
- package/dist/ports/github-client.js.map +1 -0
- package/dist/ports/github-provisioning.d.ts +47 -0
- package/dist/ports/github-provisioning.d.ts.map +1 -0
- package/dist/ports/github-provisioning.js +12 -0
- package/dist/ports/github-provisioning.js.map +1 -0
- package/dist/ports/github-repositories.d.ts +136 -0
- package/dist/ports/github-repositories.d.ts.map +1 -0
- package/dist/ports/github-repositories.js +2 -0
- package/dist/ports/github-repositories.js.map +1 -0
- package/dist/ports/incident-enrichment.d.ts +40 -0
- package/dist/ports/incident-enrichment.d.ts.map +1 -0
- package/dist/ports/incident-enrichment.js +30 -0
- package/dist/ports/incident-enrichment.js.map +1 -0
- package/dist/ports/index.d.ts +68 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +11 -0
- package/dist/ports/index.js.map +1 -0
- package/dist/ports/invitation-repositories.d.ts +28 -0
- package/dist/ports/invitation-repositories.d.ts.map +1 -0
- package/dist/ports/invitation-repositories.js +2 -0
- package/dist/ports/invitation-repositories.js.map +1 -0
- package/dist/ports/llm-metrics.d.ts +142 -0
- package/dist/ports/llm-metrics.d.ts.map +1 -0
- package/dist/ports/llm-metrics.js +16 -0
- package/dist/ports/llm-metrics.js.map +1 -0
- package/dist/ports/llm-trace-sink.d.ts +84 -0
- package/dist/ports/llm-trace-sink.d.ts.map +1 -0
- package/dist/ports/llm-trace-sink.js +55 -0
- package/dist/ports/llm-trace-sink.js.map +1 -0
- package/dist/ports/local-model-repositories.d.ts +29 -0
- package/dist/ports/local-model-repositories.d.ts.map +1 -0
- package/dist/ports/local-model-repositories.js +2 -0
- package/dist/ports/local-model-repositories.js.map +1 -0
- package/dist/ports/merge-preset-repositories.d.ts +14 -0
- package/dist/ports/merge-preset-repositories.d.ts.map +1 -0
- package/dist/ports/merge-preset-repositories.js +2 -0
- package/dist/ports/merge-preset-repositories.js.map +1 -0
- package/dist/ports/model-default-repositories.d.ts +9 -0
- package/dist/ports/model-default-repositories.d.ts.map +1 -0
- package/dist/ports/model-default-repositories.js +6 -0
- package/dist/ports/model-default-repositories.js.map +1 -0
- package/dist/ports/model-provider.d.ts +69 -0
- package/dist/ports/model-provider.d.ts.map +1 -0
- package/dist/ports/model-provider.js +16 -0
- package/dist/ports/model-provider.js.map +1 -0
- package/dist/ports/notification-channel.d.ts +16 -0
- package/dist/ports/notification-channel.d.ts.map +1 -0
- package/dist/ports/notification-channel.js +22 -0
- package/dist/ports/notification-channel.js.map +1 -0
- package/dist/ports/notification-repositories.d.ts +15 -0
- package/dist/ports/notification-repositories.d.ts.map +1 -0
- package/dist/ports/notification-repositories.js +2 -0
- package/dist/ports/notification-repositories.js.map +1 -0
- package/dist/ports/password-hasher.d.ts +14 -0
- package/dist/ports/password-hasher.d.ts.map +1 -0
- package/dist/ports/password-hasher.js +9 -0
- package/dist/ports/password-hasher.js.map +1 -0
- package/dist/ports/personal-secret-cipher.d.ts +7 -0
- package/dist/ports/personal-secret-cipher.d.ts.map +1 -0
- package/dist/ports/personal-secret-cipher.js +12 -0
- package/dist/ports/personal-secret-cipher.js.map +1 -0
- package/dist/ports/personal-subscription-repositories.d.ts +72 -0
- package/dist/ports/personal-subscription-repositories.d.ts.map +1 -0
- package/dist/ports/personal-subscription-repositories.js +2 -0
- package/dist/ports/personal-subscription-repositories.js.map +1 -0
- package/dist/ports/pr-mergeability.d.ts +24 -0
- package/dist/ports/pr-mergeability.d.ts.map +1 -0
- package/dist/ports/pr-mergeability.js +7 -0
- package/dist/ports/pr-mergeability.js.map +1 -0
- package/dist/ports/pr-merger.d.ts +10 -0
- package/dist/ports/pr-merger.d.ts.map +1 -0
- package/dist/ports/pr-merger.js +8 -0
- package/dist/ports/pr-merger.js.map +1 -0
- package/dist/ports/provider-api-key-repositories.d.ts +71 -0
- package/dist/ports/provider-api-key-repositories.d.ts.map +1 -0
- package/dist/ports/provider-api-key-repositories.js +15 -0
- package/dist/ports/provider-api-key-repositories.js.map +1 -0
- package/dist/ports/provider-subscription-repositories.d.ts +51 -0
- package/dist/ports/provider-subscription-repositories.d.ts.map +1 -0
- package/dist/ports/provider-subscription-repositories.js +15 -0
- package/dist/ports/provider-subscription-repositories.js.map +1 -0
- package/dist/ports/recurring-repositories.d.ts +46 -0
- package/dist/ports/recurring-repositories.d.ts.map +1 -0
- package/dist/ports/recurring-repositories.js +2 -0
- package/dist/ports/recurring-repositories.js.map +1 -0
- package/dist/ports/release-health-repositories.d.ts +42 -0
- package/dist/ports/release-health-repositories.d.ts.map +1 -0
- package/dist/ports/release-health-repositories.js +6 -0
- package/dist/ports/release-health-repositories.js.map +1 -0
- package/dist/ports/release-health.d.ts +59 -0
- package/dist/ports/release-health.d.ts.map +1 -0
- package/dist/ports/release-health.js +8 -0
- package/dist/ports/release-health.js.map +1 -0
- package/dist/ports/repo-bootstrapper.d.ts +80 -0
- package/dist/ports/repo-bootstrapper.d.ts.map +1 -0
- package/dist/ports/repo-bootstrapper.js +2 -0
- package/dist/ports/repo-bootstrapper.js.map +1 -0
- package/dist/ports/repo-scanner.d.ts +22 -0
- package/dist/ports/repo-scanner.d.ts.map +1 -0
- package/dist/ports/repo-scanner.js +2 -0
- package/dist/ports/repo-scanner.js.map +1 -0
- package/dist/ports/repositories.d.ts +131 -0
- package/dist/ports/repositories.d.ts.map +1 -0
- package/dist/ports/repositories.js +2 -0
- package/dist/ports/repositories.js.map +1 -0
- package/dist/ports/requirement-review-repositories.d.ts +16 -0
- package/dist/ports/requirement-review-repositories.d.ts.map +1 -0
- package/dist/ports/requirement-review-repositories.js +2 -0
- package/dist/ports/requirement-review-repositories.js.map +1 -0
- package/dist/ports/runner-pool-provider.d.ts +25 -0
- package/dist/ports/runner-pool-provider.d.ts.map +1 -0
- package/dist/ports/runner-pool-provider.js +2 -0
- package/dist/ports/runner-pool-provider.js.map +1 -0
- package/dist/ports/runner-pool-repositories.d.ts +27 -0
- package/dist/ports/runner-pool-repositories.d.ts.map +1 -0
- package/dist/ports/runner-pool-repositories.js +7 -0
- package/dist/ports/runner-pool-repositories.js.map +1 -0
- package/dist/ports/runner-transport.d.ts +119 -0
- package/dist/ports/runner-transport.d.ts.map +1 -0
- package/dist/ports/runner-transport.js +2 -0
- package/dist/ports/runner-transport.js.map +1 -0
- package/dist/ports/runtime.d.ts +9 -0
- package/dist/ports/runtime.d.ts.map +1 -0
- package/dist/ports/runtime.js +5 -0
- package/dist/ports/runtime.js.map +1 -0
- package/dist/ports/sandbox-repositories.d.ts +39 -0
- package/dist/ports/sandbox-repositories.d.ts.map +1 -0
- package/dist/ports/sandbox-repositories.js +2 -0
- package/dist/ports/sandbox-repositories.js.map +1 -0
- package/dist/ports/secret-cipher.d.ts +7 -0
- package/dist/ports/secret-cipher.d.ts.map +1 -0
- package/dist/ports/secret-cipher.js +7 -0
- package/dist/ports/secret-cipher.js.map +1 -0
- package/dist/ports/service-fragment-default-repositories.d.ts +7 -0
- package/dist/ports/service-fragment-default-repositories.d.ts.map +1 -0
- package/dist/ports/service-fragment-default-repositories.js +6 -0
- package/dist/ports/service-fragment-default-repositories.js.map +1 -0
- package/dist/ports/service-repositories.d.ts +68 -0
- package/dist/ports/service-repositories.d.ts.map +1 -0
- package/dist/ports/service-repositories.js +2 -0
- package/dist/ports/service-repositories.js.map +1 -0
- package/dist/ports/slack-repositories.d.ts +61 -0
- package/dist/ports/slack-repositories.d.ts.map +1 -0
- package/dist/ports/slack-repositories.js +2 -0
- package/dist/ports/slack-repositories.js.map +1 -0
- package/dist/ports/task-repositories.d.ts +61 -0
- package/dist/ports/task-repositories.d.ts.map +1 -0
- package/dist/ports/task-repositories.js +2 -0
- package/dist/ports/task-repositories.js.map +1 -0
- package/dist/ports/task-source.d.ts +69 -0
- package/dist/ports/task-source.d.ts.map +1 -0
- package/dist/ports/task-source.js +2 -0
- package/dist/ports/task-source.js.map +1 -0
- package/dist/ports/ticket-tracker.d.ts +19 -0
- package/dist/ports/ticket-tracker.d.ts.map +1 -0
- package/dist/ports/ticket-tracker.js +8 -0
- package/dist/ports/ticket-tracker.js.map +1 -0
- package/dist/ports/token-usage.d.ts +37 -0
- package/dist/ports/token-usage.d.ts.map +1 -0
- package/dist/ports/token-usage.js +6 -0
- package/dist/ports/token-usage.js.map +1 -0
- package/dist/ports/tracker-settings-repositories.d.ts +6 -0
- package/dist/ports/tracker-settings-repositories.d.ts.map +1 -0
- package/dist/ports/tracker-settings-repositories.js +2 -0
- package/dist/ports/tracker-settings-repositories.js.map +1 -0
- package/dist/ports/url-safety-policy.d.ts +15 -0
- package/dist/ports/url-safety-policy.d.ts.map +1 -0
- package/dist/ports/url-safety-policy.js +13 -0
- package/dist/ports/url-safety-policy.js.map +1 -0
- package/dist/ports/user-repositories.d.ts +52 -0
- package/dist/ports/user-repositories.d.ts.map +1 -0
- package/dist/ports/user-repositories.js +13 -0
- package/dist/ports/user-repositories.js.map +1 -0
- package/dist/ports/webhook-verifier.d.ts +9 -0
- package/dist/ports/webhook-verifier.d.ts.map +1 -0
- package/dist/ports/webhook-verifier.js +8 -0
- package/dist/ports/webhook-verifier.js.map +1 -0
- package/dist/ports/work-runner.d.ts +19 -0
- package/dist/ports/work-runner.d.ts.map +1 -0
- package/dist/ports/work-runner.js +19 -0
- package/dist/ports/work-runner.js.map +1 -0
- package/dist/ports/workspace-settings-repositories.d.ts +8 -0
- package/dist/ports/workspace-settings-repositories.d.ts.map +1 -0
- package/dist/ports/workspace-settings-repositories.js +2 -0
- package/dist/ports/workspace-settings-repositories.js.map +1 -0
- package/dist/shared/atlassian.logic.d.ts +11 -0
- package/dist/shared/atlassian.logic.d.ts.map +1 -0
- package/dist/shared/atlassian.logic.js +148 -0
- package/dist/shared/atlassian.logic.js.map +1 -0
- package/dist/shared/markdown.logic.d.ts +5 -0
- package/dist/shared/markdown.logic.d.ts.map +1 -0
- package/dist/shared/markdown.logic.js +21 -0
- package/dist/shared/markdown.logic.js.map +1 -0
- package/dist/shared/source-registry.logic.d.ts +10 -0
- package/dist/shared/source-registry.logic.d.ts.map +1 -0
- package/dist/shared/source-registry.logic.js +17 -0
- package/dist/shared/source-registry.logic.js.map +1 -0
- package/dist/shared/tasks-prompt.logic.d.ts +16 -0
- package/dist/shared/tasks-prompt.logic.d.ts.map +1 -0
- package/dist/shared/tasks-prompt.logic.js +29 -0
- package/dist/shared/tasks-prompt.logic.js.map +1 -0
- package/dist/workspace-guard.d.ts +4 -0
- package/dist/workspace-guard.d.ts.map +1 -0
- package/dist/workspace-guard.js +5 -0
- package/dist/workspace-guard.js.map +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export type { BlockPatch, BlockRepository, ExecutionRepository, PipelineRepository, RunRef, WorkspaceRepository, WorkspaceVisibility, } from './repositories.js';
|
|
2
|
+
export type { AccountRecord, AccountRepository, AccountSettingsPatch, Membership, MembershipRepository, } from './account-repositories.js';
|
|
3
|
+
export type { IdentityProvider, UserRecord, UserIdentityRecord, UserRepository, } from './user-repositories.js';
|
|
4
|
+
export type { PasswordHasher } from './password-hasher.js';
|
|
5
|
+
export type { EmailMessage, EmailSender, EmailProviderKind, EmailConnectionRecord, EmailConnectionRepository, } from './email-sender.js';
|
|
6
|
+
export type { AccountInvitationRecord, AccountInvitationRepository, InvitationStatus, } from './invitation-repositories.js';
|
|
7
|
+
export type { ServicePatch, ServiceRepository, WorkspaceMountPatch, WorkspaceMountRepository, } from './service-repositories.js';
|
|
8
|
+
export type { Clock, IdGenerator } from './runtime.js';
|
|
9
|
+
export type { RequirementReviewRepository } from './requirement-review-repositories.js';
|
|
10
|
+
export type { ConsensusSessionRepository } from './consensus-repositories.js';
|
|
11
|
+
export type { ClarityReviewRepository } from './clarity-review-repositories.js';
|
|
12
|
+
export type { AgentRunRef, AgentRunRepository } from './agent-runs.js';
|
|
13
|
+
export type { HarnessKind, ModelProvider, ModelProviderResolver, ModelRef, ModelScope, } from './model-provider.js';
|
|
14
|
+
export { inlineModelRef } from './model-provider.js';
|
|
15
|
+
export type { TokenUsageRecord, TokenUsageRepository, TokenUsageTotals } from './token-usage.js';
|
|
16
|
+
export type { LlmCallMetric, LlmCallMetricRepository, LlmCallMetricSummary, LlmPromptChainTip, } from './llm-metrics.js';
|
|
17
|
+
export { LLM_WARNING_FINISH_REASONS } from './llm-metrics.js';
|
|
18
|
+
export type { LlmGenerationEvent, LlmToolSpan, LlmToolSpanContext, LlmTraceSink, InlineObservabilityContext, } from './llm-trace-sink.js';
|
|
19
|
+
export { INLINE_OBSERVABILITY_NS, catFactoryObservability, readInlineObservabilityContext, } from './llm-trace-sink.js';
|
|
20
|
+
export type { AgentDecisionRequest, AgentExecutor, AgentJobHandle, AgentJobUpdate, AgentRunContext, AgentRunResult, AgentTokenUsage, AsyncAgentExecutor, } from './agent-executor.js';
|
|
21
|
+
export { isAsyncAgentExecutor } from './agent-executor.js';
|
|
22
|
+
export { type WorkRunner, NoopWorkRunner } from './work-runner.js';
|
|
23
|
+
export { type ExecutionEventPublisher, NoopEventPublisher } from './execution-events.js';
|
|
24
|
+
export type { CommitFilesResult, GitHubClient, GitHubCodeSearchHit, GitHubIssueComment, GitHubIssueDetail, GitHubIssueSearchHit, GitHubRepoRef, InstallationMeta, InstallationSummary, ListOptions, Paged, RateLimitSnapshot, RepoContentEntry, RepoEntry, RepoFileContent, } from './github-client.js';
|
|
25
|
+
export type { CreateRepoInput, GitHubProvisioningClient, InstallationPermissions, ProvisionedRepo, } from './github-provisioning.js';
|
|
26
|
+
export type { BranchProjectionRepository, CheckRunProjectionRepository, CommitProjectionRepository, GitHubInstallation, GitHubInstallationRepository, IssueProjectionRepository, PullRequestProjectionRepository, RateLimitRepository, RepoProjectionRepository, StaleRepoRef, SyncCursor, SyncCursorKind, } from './github-repositories.js';
|
|
27
|
+
export type { WebhookVerifier } from './webhook-verifier.js';
|
|
28
|
+
export type { DocumentCredentials, DocumentContent, NormalizedConnection, DocumentSourceProvider, DocumentSourceRegistry, } from './document-source.js';
|
|
29
|
+
export type { DocumentConnectionRecord, DocumentConnectionRepository, DocumentRecord, DocumentRepository, } from './document-repositories.js';
|
|
30
|
+
export type { TaskCredentials, TaskContent, NormalizedTaskConnection, TaskSourceProvider, TaskSourceRegistry, } from './task-source.js';
|
|
31
|
+
export type { TaskConnectionRecord, TaskConnectionRepository, TaskRecord, TaskRepository, } from './task-repositories.js';
|
|
32
|
+
export type { FragmentAppliesTo, PromptFragmentRecord, PromptFragmentRepository, FragmentSourceRecord, FragmentSourceRepository, } from './fragment-repositories.js';
|
|
33
|
+
export type { SelectableFragment, FragmentSelectionContext, FragmentSelector, ResolvedRunFragment, FragmentResolverInput, FragmentRunSelection, FragmentResolver, } from './fragment-selector.js';
|
|
34
|
+
export type { SecretCipher } from './secret-cipher.js';
|
|
35
|
+
export type { PersonalSecretCipher } from './personal-secret-cipher.js';
|
|
36
|
+
export type { EnvironmentProvider, ProvisionContext, ProvisionEnvironmentRequest, EnvironmentStatusRequest, EnvironmentTeardownRequest, ProvisionedEnvironment, ProvisionFields, SecretResolver, } from './environment-provider.js';
|
|
37
|
+
export { type UrlSafetyPolicy, STRICT_URL_SAFETY_POLICY } from './url-safety-policy.js';
|
|
38
|
+
export type { EnvironmentConnectionRecord, EnvironmentConnectionRepository, EnvironmentRecord, EnvironmentRecordPatch, EnvironmentRegistryRepository, } from './environment-repositories.js';
|
|
39
|
+
export type { BootstrapJobRecord, BootstrapJobRecordPatch, BootstrapJobRepository, ReferenceArchitectureRecord, ReferenceArchitectureRecordPatch, ReferenceArchitectureRepository, } from './bootstrap-repositories.js';
|
|
40
|
+
export type { BootstrapJobHandle, BootstrapJobUpdate, BootstrapRepoOutcome, BootstrapRepoRequest, RepoBootstrapper, } from './repo-bootstrapper.js';
|
|
41
|
+
export { type BootstrapRunner, NoopBootstrapRunner } from './bootstrap-runner.js';
|
|
42
|
+
export type { RunnerDispatchKind, RunnerDispatchOptions, RunnerJobProgress, RunnerJobRef, RunnerJobResult, RunnerJobView, RunnerTransport, } from './runner-transport.js';
|
|
43
|
+
export type { RunnerDispatchRequest, RunnerPollRequest, RunnerPoolProvider, } from './runner-pool-provider.js';
|
|
44
|
+
export type { RunnerPoolConnectionRecord, RunnerPoolConnectionRepository, } from './runner-pool-repositories.js';
|
|
45
|
+
export type { SubscriptionVendor, ProviderSubscriptionTokenRecord, ProviderSubscriptionTokenRepository, } from './provider-subscription-repositories.js';
|
|
46
|
+
export type { ApiKeyScope, ApiKeyProvider, ApiKeyScopeRef, ProviderApiKeyRecord, ProviderApiKeyRepository, } from './provider-api-key-repositories.js';
|
|
47
|
+
export type { PersonalSubscriptionRecord, PersonalSubscriptionRepository, SubscriptionActivationRecord, SubscriptionActivationRepository, } from './personal-subscription-repositories.js';
|
|
48
|
+
export type { LocalModelEndpointRecord, LocalModelEndpointRepository, } from './local-model-repositories.js';
|
|
49
|
+
export type { BoardWritePort } from './board-operations.js';
|
|
50
|
+
export type { PullRequestMerger } from './pr-merger.js';
|
|
51
|
+
export type { CiCheck, CiStatusReport, CiStatusProvider } from './ci-status.js';
|
|
52
|
+
export type { ReleaseSignal, ReleaseSignalKind, ReleaseSignalState, ReleaseHealthStatus, ReleaseHealthReport, ReleaseErrorSample, ReleaseEvidence, ReleaseHealthProvider, } from './release-health.js';
|
|
53
|
+
export type { IncidentMatchQuery, IncidentUpdate, IncidentEnrichmentProvider, } from './incident-enrichment.js';
|
|
54
|
+
export { CompositeIncidentEnrichmentProvider } from './incident-enrichment.js';
|
|
55
|
+
export type { DatadogConnectionRecord, DatadogConnectionRepository, ReleaseHealthConfigRecord, ReleaseHealthConfigRepository, } from './release-health-repositories.js';
|
|
56
|
+
export type { MergeabilityVerdict, MergeabilityReport, PullRequestMergeabilityProvider, } from './pr-mergeability.js';
|
|
57
|
+
export type { NotificationRepository } from './notification-repositories.js';
|
|
58
|
+
export type { SlackConnectionRecord, SlackConnectionRepository, SlackSettingsRecord, SlackSettingsRepository, SlackMemberMappingRepository, } from './slack-repositories.js';
|
|
59
|
+
export type { MergePresetRepository } from './merge-preset-repositories.js';
|
|
60
|
+
export type { WorkspaceSettingsRepository } from './workspace-settings-repositories.js';
|
|
61
|
+
export type { SandboxPromptVersionRepository, SandboxFixtureRepository, SandboxExperimentRepository, SandboxRunRepository, SandboxGradeRepository, } from './sandbox-repositories.js';
|
|
62
|
+
export type { ModelDefaultsRepository } from './model-default-repositories.js';
|
|
63
|
+
export type { ServiceFragmentDefaultsRepository } from './service-fragment-default-repositories.js';
|
|
64
|
+
export type { DueSchedule, PipelineScheduleRepository } from './recurring-repositories.js';
|
|
65
|
+
export type { TrackerSettingsRepository } from './tracker-settings-repositories.js';
|
|
66
|
+
export type { CreateTicketRequest, CreatedTicket, TicketTrackerProvider } from './ticket-tracker.js';
|
|
67
|
+
export { type NotificationChannel, CompositeNotificationChannel, NoopNotificationChannel, } from './notification-channel.js';
|
|
68
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { inlineModelRef } from './model-provider.js';
|
|
2
|
+
export { LLM_WARNING_FINISH_REASONS } from './llm-metrics.js';
|
|
3
|
+
export { INLINE_OBSERVABILITY_NS, catFactoryObservability, readInlineObservabilityContext, } from './llm-trace-sink.js';
|
|
4
|
+
export { isAsyncAgentExecutor } from './agent-executor.js';
|
|
5
|
+
export { NoopWorkRunner } from './work-runner.js';
|
|
6
|
+
export { NoopEventPublisher } from './execution-events.js';
|
|
7
|
+
export { STRICT_URL_SAFETY_POLICY } from './url-safety-policy.js';
|
|
8
|
+
export { NoopBootstrapRunner } from './bootstrap-runner.js';
|
|
9
|
+
export { CompositeIncidentEnrichmentProvider } from './incident-enrichment.js';
|
|
10
|
+
export { CompositeNotificationChannel, NoopNotificationChannel, } from './notification-channel.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"AAqDA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAQpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;AAQ7D,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,8BAA8B,GAC/B,MAAM,qBAAqB,CAAA;AAW5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAmB,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAgC,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AA6FxF,OAAO,EAAwB,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AAuBvF,OAAO,EAAwB,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AA2DjF,OAAO,EAAE,mCAAmC,EAAE,MAAM,0BAA0B,CAAA;AAkC9E,OAAO,EAEL,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,2BAA2B,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { AccountRole } from '../domain/types.js';
|
|
2
|
+
export type InvitationStatus = 'pending' | 'accepted' | 'revoked';
|
|
3
|
+
export interface AccountInvitationRecord {
|
|
4
|
+
id: string;
|
|
5
|
+
accountId: string;
|
|
6
|
+
/** Lowercased invitee email. */
|
|
7
|
+
email: string;
|
|
8
|
+
/** The roles the invitee gains on acceptance (at least one). */
|
|
9
|
+
roles: AccountRole[];
|
|
10
|
+
/** SHA-256 hash (hex/base64url) of the opaque token; the raw token is never stored. */
|
|
11
|
+
tokenHash: string;
|
|
12
|
+
/** User id of the inviter. */
|
|
13
|
+
invitedBy: string;
|
|
14
|
+
status: InvitationStatus;
|
|
15
|
+
expiresAt: number;
|
|
16
|
+
createdAt: number;
|
|
17
|
+
}
|
|
18
|
+
export interface AccountInvitationRepository {
|
|
19
|
+
create(record: AccountInvitationRecord): Promise<void>;
|
|
20
|
+
get(id: string): Promise<AccountInvitationRecord | null>;
|
|
21
|
+
/** Resolve a pending invitation by its token hash (the redeem path). */
|
|
22
|
+
findByTokenHash(tokenHash: string): Promise<AccountInvitationRecord | null>;
|
|
23
|
+
/** Every invitation for an account (the roster's pending/revoked list). */
|
|
24
|
+
listByAccount(accountId: string): Promise<AccountInvitationRecord[]>;
|
|
25
|
+
/** Update an invitation's status (accept / revoke). */
|
|
26
|
+
setStatus(id: string, status: InvitationStatus): Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=invitation-repositories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invitation-repositories.d.ts","sourceRoot":"","sources":["../../src/ports/invitation-repositories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAOrD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;AAEjE,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,gEAAgE;IAChE,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,uFAAuF;IACvF,SAAS,EAAE,MAAM,CAAA;IACjB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,gBAAgB,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAA;IACxD,wEAAwE;IACxE,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAA;IAC3E,2EAA2E;IAC3E,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAA;IACpE,uDAAuD;IACvD,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invitation-repositories.js","sourceRoot":"","sources":["../../src/ports/invitation-repositories.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upstream finish reasons that are not failures but warrant a warning: the model
|
|
3
|
+
* was cut short by the output limit, or filtered. Shared by the service's
|
|
4
|
+
* classification and each repo's summary aggregation so the two runtimes agree.
|
|
5
|
+
*/
|
|
6
|
+
export declare const LLM_WARNING_FINISH_REASONS: readonly ['length', 'content_filter'];
|
|
7
|
+
/** One proxied LLM call, with its full prompt/response and timing breakdown. */
|
|
8
|
+
export interface LlmCallMetric {
|
|
9
|
+
id: string;
|
|
10
|
+
workspaceId: string;
|
|
11
|
+
/** The run this call belongs to (null only for calls outside a run). */
|
|
12
|
+
executionId: string | null;
|
|
13
|
+
agentKind: string;
|
|
14
|
+
provider: string;
|
|
15
|
+
model: string;
|
|
16
|
+
/** When the call completed (epoch ms). */
|
|
17
|
+
createdAt: number;
|
|
18
|
+
/** Whether the upstream call was streamed (SSE) rather than buffered. */
|
|
19
|
+
streaming: boolean;
|
|
20
|
+
/** Number of chat messages in the request. */
|
|
21
|
+
messageCount: number;
|
|
22
|
+
/** Number of tools offered in the request (0 = the agent can't edit anything). */
|
|
23
|
+
toolCount: number;
|
|
24
|
+
/** The `max_tokens` the request asked for (the effective output ceiling), or null. */
|
|
25
|
+
requestMaxTokens: number | null;
|
|
26
|
+
/** Prompt (input) tokens the model reported. */
|
|
27
|
+
promptTokens: number;
|
|
28
|
+
/**
|
|
29
|
+
* Prompt tokens served from the provider's prompt cache (a subset of
|
|
30
|
+
* {@link promptTokens}), across the field names providers use. 0 when the provider
|
|
31
|
+
* reported none or does not cache. Lets the dashboard show the actual cache hit rate.
|
|
32
|
+
*/
|
|
33
|
+
cachedPromptTokens: number;
|
|
34
|
+
/** Completion (output) tokens the model reported. */
|
|
35
|
+
completionTokens: number;
|
|
36
|
+
/** Total tokens the model reported. */
|
|
37
|
+
totalTokens: number;
|
|
38
|
+
/** The upstream finish reason (`stop` | `length` | `tool_calls` | `content_filter` | …), or null. */
|
|
39
|
+
finishReason: string | null;
|
|
40
|
+
/** Time spent waiting on the upstream model (ms) — the actual execution. */
|
|
41
|
+
upstreamMs: number;
|
|
42
|
+
/** Transport/proxy overhead (ms): the call's total time minus {@link upstreamMs}. */
|
|
43
|
+
overheadMs: number;
|
|
44
|
+
/** End-to-end time the proxy spent on this call (ms). */
|
|
45
|
+
totalMs: number;
|
|
46
|
+
/** Whether the call succeeded (a 2xx upstream response). */
|
|
47
|
+
ok: boolean;
|
|
48
|
+
/** The upstream HTTP status, when the call reached an upstream (null for in-process / refusals). */
|
|
49
|
+
httpStatus: number | null;
|
|
50
|
+
/** A short error message when {@link ok} is false, else null. */
|
|
51
|
+
errorMessage: string | null;
|
|
52
|
+
/**
|
|
53
|
+
* The request messages serialised as JSON — stored as a DELTA: only the messages
|
|
54
|
+
* this call appended beyond {@link promptPrefixCount}. When `promptPrefixCount` is
|
|
55
|
+
* 0 this is the full array. Reconstruct the full prompt by replaying a chain's
|
|
56
|
+
* deltas (see `reconstructPrompts` in orchestration).
|
|
57
|
+
*/
|
|
58
|
+
promptText: string;
|
|
59
|
+
/**
|
|
60
|
+
* Number of leading messages elided from {@link promptText} (already stored by an
|
|
61
|
+
* earlier call in this conversation chain). 0 ⇒ {@link promptText} is the full array.
|
|
62
|
+
*/
|
|
63
|
+
promptPrefixCount: number;
|
|
64
|
+
/**
|
|
65
|
+
* Hash of this call's FULL messages array, used to verify that the NEXT call in the
|
|
66
|
+
* chain genuinely extends this one before its prefix is elided.
|
|
67
|
+
*/
|
|
68
|
+
promptHash: string;
|
|
69
|
+
/** The full assistant response text (concatenated for streamed calls). */
|
|
70
|
+
responseText: string;
|
|
71
|
+
/**
|
|
72
|
+
* The model's reasoning / "thinking" trace, when it emits one on a separate channel
|
|
73
|
+
* (AI SDK `reasoningText`; OpenAI-compatible `reasoning_content` / `reasoning`).
|
|
74
|
+
* Empty for non-reasoning models. Captured so a turn that spends its whole output
|
|
75
|
+
* budget thinking and returns empty {@link responseText} is still diagnosable
|
|
76
|
+
* (otherwise those tokens look like they vanished).
|
|
77
|
+
*/
|
|
78
|
+
reasoningText: string;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Per-agent-kind aggregate over a run's calls, attached to the matching pipeline
|
|
82
|
+
* step for at-a-glance board display. Computed by SQL aggregation — it never reads
|
|
83
|
+
* the heavy prompt/response text columns.
|
|
84
|
+
*/
|
|
85
|
+
export interface LlmCallMetricSummary {
|
|
86
|
+
agentKind: string;
|
|
87
|
+
/** Number of calls recorded for this agent kind in the run. */
|
|
88
|
+
calls: number;
|
|
89
|
+
/** Sum of prompt (input) tokens. */
|
|
90
|
+
promptTokens: number;
|
|
91
|
+
/** Sum of completion (output) tokens. */
|
|
92
|
+
completionTokens: number;
|
|
93
|
+
/** The largest single completion the model produced (closest approach to the limit). */
|
|
94
|
+
peakCompletionTokens: number;
|
|
95
|
+
/** The output ceiling in effect (max requested `max_tokens`), or null when unknown. */
|
|
96
|
+
maxOutputTokens: number | null;
|
|
97
|
+
/** Calls cut short by the output limit (`finish_reason === 'length'`). */
|
|
98
|
+
truncatedCalls: number;
|
|
99
|
+
/** Sum of model execution time (ms). */
|
|
100
|
+
upstreamMs: number;
|
|
101
|
+
/** Sum of transport/proxy overhead (ms). */
|
|
102
|
+
overheadMs: number;
|
|
103
|
+
/** Calls that failed (non-2xx / refused / in-process error). */
|
|
104
|
+
errors: number;
|
|
105
|
+
/** Calls that produced a warning (truncated or content-filtered) but did not fail. */
|
|
106
|
+
warnings: number;
|
|
107
|
+
}
|
|
108
|
+
/** The most recent call's chain tip for delta prompt storage. */
|
|
109
|
+
export interface LlmPromptChainTip {
|
|
110
|
+
/** The call's full message count. */
|
|
111
|
+
messageCount: number;
|
|
112
|
+
/** The call's {@link LlmCallMetric.promptHash}. */
|
|
113
|
+
promptHash: string;
|
|
114
|
+
}
|
|
115
|
+
export interface LlmCallMetricRepository {
|
|
116
|
+
/** Append one metered call. */
|
|
117
|
+
record(metric: LlmCallMetric): Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* The most recent call's chain tip for a `(workspaceId, executionId, agentKind)`
|
|
120
|
+
* conversation, or null when there is none. Lets the sink store the next call's
|
|
121
|
+
* prompt as a delta against this one. Cheap: one indexed row, no text columns.
|
|
122
|
+
*/
|
|
123
|
+
latestChainTip(workspaceId: string, executionId: string, agentKind: string): Promise<LlmPromptChainTip | null>;
|
|
124
|
+
/**
|
|
125
|
+
* Calls recorded for a run, newest first (full prompt/response included). `limit`
|
|
126
|
+
* caps the rows returned (the bodies are heavy) — newest `limit` calls; omit for
|
|
127
|
+
* all. Callers pass a bound so a long run can't produce an unbounded payload.
|
|
128
|
+
*/
|
|
129
|
+
listByExecution(workspaceId: string, executionId: string, limit?: number): Promise<LlmCallMetric[]>;
|
|
130
|
+
/**
|
|
131
|
+
* Per-agent-kind aggregates for a run, for the board rollups. Aggregates in SQL
|
|
132
|
+
* and deliberately selects no text columns, so it is cheap to run on every emit.
|
|
133
|
+
*/
|
|
134
|
+
summarizeByExecution(workspaceId: string, executionId: string): Promise<LlmCallMetricSummary[]>;
|
|
135
|
+
/**
|
|
136
|
+
* Retention: delete rows older than `epochMs` (exclusive), returning how many
|
|
137
|
+
* were removed. The full request/response bodies make this table heavy, so it is
|
|
138
|
+
* pruned to a configured window alongside the other unbounded tables.
|
|
139
|
+
*/
|
|
140
|
+
deleteOlderThan(epochMs: number): Promise<number>;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=llm-metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-metrics.d.ts","sourceRoot":"","sources":["../../src/ports/llm-metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Persistence port for LLM observability. Every container agent talks to a model
|
|
2
|
+
// only through the runtime-neutral LLM proxy (the single chokepoint that sees the
|
|
3
|
+
// full prompt, the upstream response/usage, the model lock + output limit, and the
|
|
4
|
+
// upstream timing), so the proxy records one of these per call. Unlike the spend
|
|
5
|
+
// ledger (which keeps only billed token totals), this captures the full request +
|
|
6
|
+
// response, the output-limit headroom, and the latency split between transport
|
|
7
|
+
// (proxy) overhead and actual model execution — so a run can be inspected end to
|
|
8
|
+
// end. The domain depends only on this interface; each runtime facade implements it
|
|
9
|
+
// (D1 on Cloudflare, Drizzle/Postgres on Node).
|
|
10
|
+
/**
|
|
11
|
+
* Upstream finish reasons that are not failures but warrant a warning: the model
|
|
12
|
+
* was cut short by the output limit, or filtered. Shared by the service's
|
|
13
|
+
* classification and each repo's summary aggregation so the two runtimes agree.
|
|
14
|
+
*/
|
|
15
|
+
export const LLM_WARNING_FINISH_REASONS = ['length', 'content_filter'];
|
|
16
|
+
//# sourceMappingURL=llm-metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-metrics.js","sourceRoot":"","sources":["../../src/ports/llm-metrics.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,kFAAkF;AAClF,mFAAmF;AACnF,iFAAiF;AACjF,kFAAkF;AAClF,+EAA+E;AAC/E,iFAAiF;AACjF,oFAAoF;AACpF,gDAAgD;AAEhD;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAU,CAAA"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/** One completed LLM call (proxied or inline), normalised for an external trace. */
|
|
2
|
+
export interface LlmGenerationEvent {
|
|
3
|
+
/** The workspace the call ran for, or null when not in a workspace scope. */
|
|
4
|
+
workspaceId: string | null;
|
|
5
|
+
/**
|
|
6
|
+
* The run this call belongs to, used to group every call of a run under one trace.
|
|
7
|
+
* Null for inline single-shot calls (requirements review / doc planner / fragment
|
|
8
|
+
* selection), which then become their own standalone trace.
|
|
9
|
+
*/
|
|
10
|
+
executionId: string | null;
|
|
11
|
+
/** The agent kind / call site (`coder`, `merger`, `requirements-review`, …). */
|
|
12
|
+
agentKind: string;
|
|
13
|
+
provider: string;
|
|
14
|
+
model: string;
|
|
15
|
+
/** Epoch ms the call started (upstream dispatch). */
|
|
16
|
+
startedAt: number;
|
|
17
|
+
/** Epoch ms the call completed. */
|
|
18
|
+
endedAt: number;
|
|
19
|
+
promptTokens: number;
|
|
20
|
+
completionTokens: number;
|
|
21
|
+
totalTokens: number;
|
|
22
|
+
/** Upstream finish reason (`stop` | `length` | `tool_calls` | …), or null. */
|
|
23
|
+
finishReason: string | null;
|
|
24
|
+
/** Whether the call succeeded. */
|
|
25
|
+
ok: boolean;
|
|
26
|
+
/** A short error message when {@link ok} is false, else null. */
|
|
27
|
+
errorMessage: string | null;
|
|
28
|
+
/**
|
|
29
|
+
* The request messages serialised as JSON (the FULL prompt, not a delta), or empty
|
|
30
|
+
* when prompt recording is disabled (`LLM_RECORD_PROMPTS=false`) — the same privacy
|
|
31
|
+
* switch the local metric store honours.
|
|
32
|
+
*/
|
|
33
|
+
input: string;
|
|
34
|
+
/** The full assistant response text, or empty when prompt recording is disabled. */
|
|
35
|
+
output: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* One tool invocation inside a container agent's loop, captured by the harness and
|
|
39
|
+
* drained by the backend on its existing job poll, then emitted as a child span under
|
|
40
|
+
* the run's trace. Metadata only (never tool args/results) so the harness buffer stays
|
|
41
|
+
* tiny and bounded.
|
|
42
|
+
*/
|
|
43
|
+
export interface LlmToolSpan {
|
|
44
|
+
/** The tool name (`edit_file`, `run_command`, `todo`, …). */
|
|
45
|
+
tool: string;
|
|
46
|
+
/** Epoch ms the tool call started. */
|
|
47
|
+
startedAt: number;
|
|
48
|
+
/** Epoch ms the tool call ended. */
|
|
49
|
+
endedAt: number;
|
|
50
|
+
/** Whether the tool call succeeded. */
|
|
51
|
+
ok: boolean;
|
|
52
|
+
}
|
|
53
|
+
/** Scope a batch of {@link LlmToolSpan tool spans} to the run that produced them. */
|
|
54
|
+
export interface LlmToolSpanContext {
|
|
55
|
+
workspaceId: string | null;
|
|
56
|
+
executionId: string | null;
|
|
57
|
+
agentKind: string;
|
|
58
|
+
}
|
|
59
|
+
export interface LlmTraceSink {
|
|
60
|
+
/** Emit one completed LLM call as a generation under its run's trace. */
|
|
61
|
+
recordGeneration(event: LlmGenerationEvent): Promise<void> | void;
|
|
62
|
+
/**
|
|
63
|
+
* Emit a drained batch of container tool spans as child spans under the run trace.
|
|
64
|
+
* Optional: a sink that only cares about generations can omit it.
|
|
65
|
+
*/
|
|
66
|
+
recordToolSpans?(context: LlmToolSpanContext, spans: LlmToolSpan[]): Promise<void> | void;
|
|
67
|
+
}
|
|
68
|
+
/** Namespace used to smuggle observability context through the AI SDK's providerOptions. */
|
|
69
|
+
export declare const INLINE_OBSERVABILITY_NS = "catFactoryObservability";
|
|
70
|
+
/** The run context an inline LLM call carries for the trace sink. */
|
|
71
|
+
export interface InlineObservabilityContext {
|
|
72
|
+
agentKind: string;
|
|
73
|
+
workspaceId?: string;
|
|
74
|
+
executionId?: string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Build the `providerOptions` fragment a caller spreads into `generateText` to tag an
|
|
78
|
+
* inline call with its run context. Providers ignore unknown provider-option
|
|
79
|
+
* namespaces, so this is invisible to the model — only the instrumentation reads it.
|
|
80
|
+
*/
|
|
81
|
+
export declare function catFactoryObservability(context: InlineObservabilityContext): Record<string, Record<string, string>>;
|
|
82
|
+
/** Read the {@link InlineObservabilityContext} back off a model call's params. */
|
|
83
|
+
export declare function readInlineObservabilityContext(params: unknown): InlineObservabilityContext;
|
|
84
|
+
//# sourceMappingURL=llm-trace-sink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-trace-sink.d.ts","sourceRoot":"","sources":["../../src/ports/llm-trace-sink.ts"],"names":[],"mappings":"AAkBA,oFAAoF;AACpF,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B;;;;OAIG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAA;IACjB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,8EAA8E;IAC9E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,kCAAkC;IAClC,EAAE,EAAE,OAAO,CAAA;IACX,iEAAiE;IACjE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAA;IACZ,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,uCAAuC;IACvC,EAAE,EAAE,OAAO,CAAA;CACZ;AAED,qFAAqF;AACrF,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,yEAAyE;IACzE,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACjE;;;OAGG;IACH,eAAe,CAAC,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAC1F;AAeD,4FAA4F;AAC5F,eAAO,MAAM,uBAAuB,4BAA4B,CAAA;AAEhE,qEAAqE;AACrE,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,0BAA0B,GAClC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAQxC;AAED,kFAAkF;AAClF,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,OAAO,GAAG,0BAA0B,CAO1F"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// Optional, opt-in sink for streaming LLM activity to an external observability
|
|
2
|
+
// platform (e.g. Langfuse). It is the SINGLE code path that both LLM feeders reach:
|
|
3
|
+
//
|
|
4
|
+
// - the runtime-neutral LLM proxy (container agent calls) — the orchestration
|
|
5
|
+
// `LlmObservabilityService` fans every metered call out here after persisting it;
|
|
6
|
+
// - the inline (non-proxied) LLM calls (the requirements reviewer/rework, the
|
|
7
|
+
// document planner, the fragment selector, the inline agent executor) — an
|
|
8
|
+
// `InstrumentedModelProvider` wraps every resolved model so each `generateText`
|
|
9
|
+
// surfaces the same {@link LlmGenerationEvent} here.
|
|
10
|
+
//
|
|
11
|
+
// Both build the identical {@link LlmGenerationEvent} and call {@link
|
|
12
|
+
// LlmTraceSink.recordGeneration}, so adding a second feeder never means a second
|
|
13
|
+
// sink. The port is implemented by an opt-in package (`@cat-factory/observability-langfuse`)
|
|
14
|
+
// and wired into a facade only when configured; absent ⇒ no external emission and no
|
|
15
|
+
// behaviour change. A sink MUST NOT throw into its caller (LLM work must never break
|
|
16
|
+
// because observability is down) — implementations swallow + log their own errors, and
|
|
17
|
+
// callers additionally schedule the call off the response path.
|
|
18
|
+
// ----------------------------------------------------------------------------
|
|
19
|
+
// Inline-call observability context
|
|
20
|
+
//
|
|
21
|
+
// The inline (non-proxied) LLM callers — the requirements reviewer/rework, the
|
|
22
|
+
// document planner, the fragment selector, the inline agent — tag each
|
|
23
|
+
// `generateText` with their run context so the `InstrumentedModelProvider`
|
|
24
|
+
// middleware (in `@cat-factory/agents`) can group the call under its run's trace
|
|
25
|
+
// and label it. The tag rides on the AI SDK's `providerOptions` under a private
|
|
26
|
+
// namespace, which every model provider ignores — so it's invisible to the model
|
|
27
|
+
// and only the instrumentation reads it. Lives in the kernel (dependency-free) so
|
|
28
|
+
// any caller layer (orchestration, integrations, agents) can build the tag without
|
|
29
|
+
// depending on `@cat-factory/agents`.
|
|
30
|
+
/** Namespace used to smuggle observability context through the AI SDK's providerOptions. */
|
|
31
|
+
export const INLINE_OBSERVABILITY_NS = 'catFactoryObservability';
|
|
32
|
+
/**
|
|
33
|
+
* Build the `providerOptions` fragment a caller spreads into `generateText` to tag an
|
|
34
|
+
* inline call with its run context. Providers ignore unknown provider-option
|
|
35
|
+
* namespaces, so this is invisible to the model — only the instrumentation reads it.
|
|
36
|
+
*/
|
|
37
|
+
export function catFactoryObservability(context) {
|
|
38
|
+
return {
|
|
39
|
+
[INLINE_OBSERVABILITY_NS]: {
|
|
40
|
+
agentKind: context.agentKind,
|
|
41
|
+
...(context.workspaceId ? { workspaceId: context.workspaceId } : {}),
|
|
42
|
+
...(context.executionId ? { executionId: context.executionId } : {}),
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/** Read the {@link InlineObservabilityContext} back off a model call's params. */
|
|
47
|
+
export function readInlineObservabilityContext(params) {
|
|
48
|
+
const providerOptions = params?.providerOptions;
|
|
49
|
+
const raw = providerOptions?.[INLINE_OBSERVABILITY_NS];
|
|
50
|
+
const agentKind = typeof raw?.agentKind === 'string' ? raw.agentKind : 'inline';
|
|
51
|
+
const workspaceId = typeof raw?.workspaceId === 'string' ? raw.workspaceId : undefined;
|
|
52
|
+
const executionId = typeof raw?.executionId === 'string' ? raw.executionId : undefined;
|
|
53
|
+
return { agentKind, workspaceId, executionId };
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=llm-trace-sink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-trace-sink.js","sourceRoot":"","sources":["../../src/ports/llm-trace-sink.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,oFAAoF;AACpF,EAAE;AACF,+EAA+E;AAC/E,qFAAqF;AACrF,+EAA+E;AAC/E,8EAA8E;AAC9E,mFAAmF;AACnF,wDAAwD;AACxD,EAAE;AACF,sEAAsE;AACtE,iFAAiF;AACjF,6FAA6F;AAC7F,qFAAqF;AACrF,qFAAqF;AACrF,uFAAuF;AACvF,gEAAgE;AAyEhE,+EAA+E;AAC/E,oCAAoC;AACpC,EAAE;AACF,+EAA+E;AAC/E,uEAAuE;AACvE,2EAA2E;AAC3E,iFAAiF;AACjF,gFAAgF;AAChF,iFAAiF;AACjF,kFAAkF;AAClF,mFAAmF;AACnF,sCAAsC;AAEtC,4FAA4F;AAC5F,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;AAShE;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAmC;IAEnC,OAAO;QACL,CAAC,uBAAuB,CAAC,EAAE;YACzB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE;KACF,CAAA;AACH,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,8BAA8B,CAAC,MAAe;IAC5D,MAAM,eAAe,GAAI,MAAwD,EAAE,eAAe,CAAA;IAClG,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC,uBAAuB,CAAwC,CAAA;IAC7F,MAAM,SAAS,GAAG,OAAO,GAAG,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC/E,MAAM,WAAW,GAAG,OAAO,GAAG,EAAE,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAA;IACtF,MAAM,WAAW,GAAG,OAAO,GAAG,EAAE,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAA;IACtF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,CAAA;AAChD,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { LocalRunner } from '@cat-factory/contracts';
|
|
2
|
+
/** A user's configured local runner endpoint at rest. */
|
|
3
|
+
export interface LocalModelEndpointRecord {
|
|
4
|
+
/** Internal user id (`usr_*`) of the owner. */
|
|
5
|
+
userId: string;
|
|
6
|
+
/** The runner type — also the `ModelRef.provider` a model on this endpoint resolves to. */
|
|
7
|
+
provider: LocalRunner;
|
|
8
|
+
/** Display label (defaults to the runner's name when the user leaves it blank). */
|
|
9
|
+
label: string;
|
|
10
|
+
/** OpenAI-compatible base URL, including the `/v1` suffix. */
|
|
11
|
+
baseUrl: string;
|
|
12
|
+
/** System-key ciphertext of an optional bearer key (null when keyless). */
|
|
13
|
+
apiKeyCipher: string | null;
|
|
14
|
+
/** Model ids the user enabled from this runner (surfaced in the picker). */
|
|
15
|
+
models: string[];
|
|
16
|
+
createdAt: number;
|
|
17
|
+
updatedAt: number;
|
|
18
|
+
}
|
|
19
|
+
export interface LocalModelEndpointRepository {
|
|
20
|
+
/** Every endpoint the user has configured. */
|
|
21
|
+
listByUser(userId: string): Promise<LocalModelEndpointRecord[]>;
|
|
22
|
+
/** The user's endpoint for a runner, or null. */
|
|
23
|
+
getByUserProvider(userId: string, provider: LocalRunner): Promise<LocalModelEndpointRecord | null>;
|
|
24
|
+
/** Insert or replace the user's endpoint for a runner (one per user+provider). */
|
|
25
|
+
upsert(record: LocalModelEndpointRecord): Promise<void>;
|
|
26
|
+
/** Remove the user's endpoint for a runner. */
|
|
27
|
+
remove(userId: string, provider: LocalRunner): Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=local-model-repositories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-model-repositories.d.ts","sourceRoot":"","sources":["../../src/ports/local-model-repositories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AASzD,yDAAyD;AACzD,MAAM,WAAW,wBAAwB;IACvC,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAA;IACd,2FAA2F;IAC3F,QAAQ,EAAE,WAAW,CAAA;IACrB,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAA;IACb,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAA;IACf,2EAA2E;IAC3E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,4EAA4E;IAC5E,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC3C,8CAA8C;IAC9C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAA;IAC/D,iDAAiD;IACjD,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAAA;IAClG,kFAAkF;IAClF,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvD,+CAA+C;IAC/C,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-model-repositories.js","sourceRoot":"","sources":["../../src/ports/local-model-repositories.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MergeThresholdPreset } from '../domain/types.js';
|
|
2
|
+
export interface MergePresetRepository {
|
|
3
|
+
/** A preset by id, or null if it does not exist. */
|
|
4
|
+
get(workspaceId: string, id: string): Promise<MergeThresholdPreset | null>;
|
|
5
|
+
/** All presets for a workspace (for the snapshot + settings UI). */
|
|
6
|
+
list(workspaceId: string): Promise<MergeThresholdPreset[]>;
|
|
7
|
+
/** The workspace's default preset, or null if none is seeded yet. */
|
|
8
|
+
getDefault(workspaceId: string): Promise<MergeThresholdPreset | null>;
|
|
9
|
+
/** Create or replace a preset (keyed by id). Promoting `isDefault` demotes the prior default. */
|
|
10
|
+
upsert(workspaceId: string, preset: MergeThresholdPreset): Promise<void>;
|
|
11
|
+
/** Remove a preset by id (no-op if absent). The default preset cannot be removed. */
|
|
12
|
+
remove(workspaceId: string, id: string): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=merge-preset-repositories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-preset-repositories.d.ts","sourceRoot":"","sources":["../../src/ports/merge-preset-repositories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAQ9D,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAA;IAC1E,oEAAoE;IACpE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAA;IAC1D,qEAAqE;IACrE,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAA;IACrE,iGAAiG;IACjG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxE,qFAAqF;IACrF,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACvD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-preset-repositories.js","sourceRoot":"","sources":["../../src/ports/merge-preset-repositories.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface ModelDefaultsRepository {
|
|
2
|
+
/** The whole per-kind default map for a workspace (`{ [agentKind]: modelId }`); empty when none set. */
|
|
3
|
+
get(workspaceId: string): Promise<Record<string, string>>;
|
|
4
|
+
/** The model id chosen for a single agent kind, or null when the workspace pins none. */
|
|
5
|
+
getForKind(workspaceId: string, agentKind: string): Promise<string | null>;
|
|
6
|
+
/** Replace the whole per-kind map for the workspace (a kind omitted is cleared). */
|
|
7
|
+
replace(workspaceId: string, defaults: Record<string, string>): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=model-default-repositories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-default-repositories.d.ts","sourceRoot":"","sources":["../../src/ports/model-default-repositories.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,uBAAuB;IACtC,wGAAwG;IACxG,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACzD,yFAAyF;IACzF,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAC1E,oFAAoF;IACpF,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9E"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Persistence port for a workspace's per-agent-kind default model selection. The
|
|
2
|
+
// worker implements it against D1, the Node service against Postgres; tests supply
|
|
3
|
+
// an in-memory fake. The map is keyed by agent kind and valued by a model catalog
|
|
4
|
+
// id; a kind absent from the map falls back to the env routing for that kind.
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=model-default-repositories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-default-repositories.js","sourceRoot":"","sources":["../../src/ports/model-default-repositories.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,mFAAmF;AACnF,kFAAkF;AAClF,8EAA8E"}
|