From 474e92e1ee64e867658a8063601edd9273fda6f4 Mon Sep 17 00:00:00 2001 From: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com> Date: Thu, 8 Oct 2026 10:38:19 -0700 Subject: [PATCH] refactor(provider-core): move the driver interface into provider-core Provider drivers implemented an interface that lived inside apps/server, so no driver could live in its own package. Move the driver contract into @t3tools/provider-core/server/*: the driver and instance records, the V2 adapter shape and its errors, selection transitions, the snapshot shape, the auth controller, text generation operations, maintenance capabilities, and ProviderDriverError. Server modules that implemented these keep their services and re-export the moved types, so callers outside the provider boundary are unchanged. The adapter service key now matches its new module path. Co-Authored-By: Claude Opus 5.5 (1M context) --- apps/server/package.json | 1 + .../record-claude-agent-sdk-replay-fixture.ts | 2 +- .../scripts/record-grok-acp-replay-fixture.ts | 2 +- .../server/src/mcp/McpToolAccess.race.test.ts | 2 +- .../src/mcp/OrchestratorMcpService.test.ts | 2 +- ...OrchestratorMcpToolkit.integration.test.ts | 2 +- .../server/src/mcpApps/McpAppRequests.test.ts | 2 +- apps/server/src/mcpApps/McpAppRequests.ts | 2 +- .../Adapters/AcpAdapterV2.test.ts | 2 +- .../orchestration-v2/Adapters/AcpAdapterV2.ts | 4 +- .../Adapters/AcpRegistryAdapterV2.test.ts | 2 +- .../Adapters/AntigravityAdapterV2.test.ts | 2 +- .../Adapters/ClaudeAdapterV2.test.ts | 2 +- .../Adapters/ClaudeAdapterV2.ts | 6 +- .../Adapters/CodexAdapterV2.test.ts | 4 +- .../Adapters/CodexAdapterV2.testkit.ts | 2 +- .../Adapters/CodexAdapterV2.ts | 6 +- .../Adapters/CursorAdapterV2.test.ts | 2 +- .../Adapters/CursorAdapterV2.testkit.ts | 2 +- .../Adapters/CursorAdapterV2.ts | 4 +- .../Adapters/GrokAdapterV2.test.ts | 4 +- .../Adapters/GrokAdapterV2.ts | 2 +- .../Adapters/MuseAdapterV2.test.ts | 2 +- .../Adapters/MuseAdapterV2.ts | 4 +- .../Adapters/OpenCode2AdapterV2.test.ts | 2 +- .../Adapters/OpenCode2AdapterV2.ts | 4 +- .../Adapters/OpenCodeAdapterV2.test.ts | 2 +- .../Adapters/OpenCodeAdapterV2.ts | 4 +- .../Adapters/PiAdapterV2.test.ts | 2 +- .../orchestration-v2/Adapters/PiAdapterV2.ts | 4 +- .../BackgroundWorkStop.integration.test.ts | 2 +- .../CheckpointRollbackService.test.ts | 2 +- .../CheckpointRollbackService.ts | 2 +- .../ContextHandoffBudget.test.ts | 2 +- .../ContextHandoffDelivery.ts | 2 +- .../DelegatedCompletionDelivery.test.ts | 4 +- .../DispatchModeLimit.test.ts | 2 +- .../Orchestrator.control-reads.test.ts | 2 +- .../src/orchestration-v2/Orchestrator.ts | 2 +- .../orchestration-v2/ProviderAdapterDriver.ts | 2 +- .../ProviderAdapterRegistry.test.ts | 7 +- .../ProviderAdapterRegistry.ts | 2 +- .../orchestration-v2/ProviderEventIngestor.ts | 2 +- .../orchestration-v2/ProviderFailure.test.ts | 2 +- .../ProviderSelectionTransition.test.ts | 2 +- .../ProviderSessionManager.test.ts | 2 +- .../ProviderSessionManager.ts | 2 +- .../ProviderSessionTransitionPolicy.ts | 4 +- .../ProviderSwitchService.test.ts | 4 +- .../ProviderTurnControlService.test.ts | 2 +- .../ProviderTurnStartService.test.ts | 2 +- .../ProviderTurnStartService.ts | 2 +- .../RunExecutionService.test.ts | 2 +- .../orchestration-v2/RunExecutionService.ts | 4 +- .../orchestration-v2/RuntimePolicy.test.ts | 2 +- .../src/orchestration-v2/RuntimePolicy.ts | 2 +- .../RuntimeRequestService.test.ts | 2 +- .../SelectionRestart.integration.test.ts | 2 +- .../SteeringCompletion.integration.test.ts | 2 +- .../ThreadFork.execution.test.ts | 2 +- .../ThreadLaunchService.test.ts | 2 +- .../src/orchestration-v2/ThreadStop.test.ts | 2 +- .../ThreadTitleRegenerationService.test.ts | 2 +- .../assistantStreaming.test.ts | 2 +- .../orchestration-v2/assistantStreaming.ts | 2 +- .../LegacyV1Cutover.integration.test.ts | 2 +- .../src/orchestration-v2/runtimeLayer.test.ts | 7 +- .../ProviderSwitch.integration.test.ts | 2 +- apps/server/src/provider/ClaudeProvider.ts | 2 +- .../src/provider/Drivers/AcpRegistryDriver.ts | 2 +- .../src/provider/Drivers/AntigravityDriver.ts | 2 +- .../src/provider/Drivers/ClaudeDriver.ts | 2 +- .../src/provider/Drivers/CodexDriver.test.ts | 2 +- .../src/provider/Drivers/CodexDriver.ts | 2 +- .../provider/Drivers/CodexManagedProvider.ts | 5 +- .../src/provider/Drivers/CursorDriver.test.ts | 2 +- .../src/provider/Drivers/CursorDriver.ts | 2 +- .../server/src/provider/Drivers/GrokDriver.ts | 2 +- .../server/src/provider/Drivers/MuseDriver.ts | 2 +- .../src/provider/Drivers/OpenCodeDriver.ts | 4 +- apps/server/src/provider/Drivers/PiDriver.ts | 2 +- .../src/provider/Drivers/instanceIdentity.ts | 2 +- apps/server/src/provider/Errors.ts | 19 +-- .../src/provider/ProviderAuthService.test.ts | 2 +- .../src/provider/ProviderAuthService.ts | 48 +------ .../src/provider/ProviderInstanceRegistry.ts | 2 +- .../src/provider/ProviderRegistry.test.ts | 5 +- apps/server/src/provider/ProviderRegistry.ts | 5 +- apps/server/src/provider/builtInDrivers.ts | 2 +- .../src/provider/builtInProviderCatalog.ts | 2 +- .../src/provider/makeManagedServerProvider.ts | 2 +- .../provider/providerCompatibility.test.ts | 2 +- .../src/provider/providerInstallation.test.ts | 2 +- .../src/provider/providerMaintenance.ts | 37 ++---- .../src/textGeneration/TextGeneration.test.ts | 2 +- .../src/textGeneration/TextGeneration.ts | 119 +++--------------- .../textGeneration/TextGenerationPresets.ts | 2 +- .../textGeneration/TextGenerationPrompts.ts | 2 +- docs/internals/adding-a-provider.md | 2 +- docs/internals/providers.md | 2 +- packages/provider-core/package.json | 37 ++++++ .../provider-core/src/server/adapter.ts | 4 +- packages/provider-core/src/server/auth.ts | 57 +++++++++ .../provider-core/src/server/driver.ts | 14 +-- packages/provider-core/src/server/errors.ts | 20 +++ .../provider-core/src/server/maintenance.ts | 30 +++++ .../src/server/selectionTransition.ts | 0 .../provider-core/src/server/snapshot.ts | 2 +- .../src/server/textGeneration.ts | 104 +++++++++++++++ .../src/server/textGenerationPolicy.ts | 0 packages/provider-core/tsconfig.json | 3 + pnpm-lock.yaml | 6 + 112 files changed, 424 insertions(+), 320 deletions(-) rename apps/server/src/orchestration-v2/ProviderAdapter.ts => packages/provider-core/src/server/adapter.ts (99%) create mode 100644 packages/provider-core/src/server/auth.ts rename apps/server/src/provider/ProviderDriver.ts => packages/provider-core/src/server/driver.ts (95%) create mode 100644 packages/provider-core/src/server/errors.ts create mode 100644 packages/provider-core/src/server/maintenance.ts rename apps/server/src/orchestration-v2/ProviderSelectionTransition.ts => packages/provider-core/src/server/selectionTransition.ts (100%) rename apps/server/src/provider/ServerProvider.ts => packages/provider-core/src/server/snapshot.ts (92%) create mode 100644 packages/provider-core/src/server/textGeneration.ts rename apps/server/src/textGeneration/TextGenerationPolicy.ts => packages/provider-core/src/server/textGenerationPolicy.ts (100%) diff --git a/apps/server/package.json b/apps/server/package.json index 5f81d57f588f..e9db1c0fea54 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -41,6 +41,7 @@ "@opencode/client": "2.0.23", "@opencode/protocol": "2.0.23", "@opencode/schema": "2.0.23", + "@t3tools/provider-core": "workspace:*", "diff": "8.0.3", "effect": "catalog:", "jose": "catalog:", diff --git a/apps/server/scripts/record-claude-agent-sdk-replay-fixture.ts b/apps/server/scripts/record-claude-agent-sdk-replay-fixture.ts index 22a6df8eefbe..220e342b1944 100644 --- a/apps/server/scripts/record-claude-agent-sdk-replay-fixture.ts +++ b/apps/server/scripts/record-claude-agent-sdk-replay-fixture.ts @@ -13,7 +13,7 @@ import { claudeRuntimeQueryPolicyForRuntimePolicy } from "../src/orchestration-v import { ProviderAdapterV2RuntimePolicy, type ProviderAdapterV2RuntimePolicy as ProviderAdapterV2RuntimePolicyType, -} from "../src/orchestration-v2/ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import type { RuntimePolicyV2Override } from "../src/orchestration-v2/RuntimePolicy.ts"; import { makeCheckpointWorkspace } from "../src/orchestration-v2/testkit/ReplayFixtureWorkspace.ts"; import { CLAUDE_MODEL_SELECTION } from "../src/orchestration-v2/testkit/fixtures/shared.ts"; diff --git a/apps/server/scripts/record-grok-acp-replay-fixture.ts b/apps/server/scripts/record-grok-acp-replay-fixture.ts index cd384c0db7c0..5a88e1561ca2 100644 --- a/apps/server/scripts/record-grok-acp-replay-fixture.ts +++ b/apps/server/scripts/record-grok-acp-replay-fixture.ts @@ -33,7 +33,7 @@ import { } from "../src/orchestration-v2/Adapters/GrokAdapterV2.ts"; import { ACP_PROTOCOL } from "../src/orchestration-v2/Adapters/AcpAdapterV2.ts"; import * as IdAllocator from "../src/orchestration-v2/IdAllocator.ts"; -import type { ProviderAdapterV2SessionRuntime } from "../src/orchestration-v2/ProviderAdapter.ts"; +import type { ProviderAdapterV2SessionRuntime } from "@t3tools/provider-core/server/adapter"; import * as ProviderContinuationRequests from "../src/orchestration-v2/ProviderContinuationRequests.ts"; import * as ProviderAdapterRegistry from "../src/orchestration-v2/ProviderAdapterRegistry.ts"; import { provideDeterministicTestRuntime } from "../src/orchestration-v2/testkit/DeterministicRuntime.ts"; diff --git a/apps/server/src/mcp/McpToolAccess.race.test.ts b/apps/server/src/mcp/McpToolAccess.race.test.ts index b29d81a4948e..ae2dedf824f9 100644 --- a/apps/server/src/mcp/McpToolAccess.race.test.ts +++ b/apps/server/src/mcp/McpToolAccess.race.test.ts @@ -19,7 +19,7 @@ import { DispatchModeLimit } from "../orchestration-v2/DispatchModeLimit.ts"; import { CodexProviderCapabilitiesV2 } from "../orchestration-v2/Adapters/CodexAdapterV2.ts"; import * as Orchestrator from "../orchestration-v2/Orchestrator.ts"; import * as ProjectionStore from "../orchestration-v2/ProjectionStore.ts"; -import type { ProviderAdapterV2Shape } from "../orchestration-v2/ProviderAdapter.ts"; +import type { ProviderAdapterV2Shape } from "@t3tools/provider-core/server/adapter"; import * as ProviderAdapterRegistry from "../orchestration-v2/ProviderAdapterRegistry.ts"; import * as ThreadManagement from "../orchestration-v2/ThreadManagementService.ts"; import * as ProviderReplayHarness from "../orchestration-v2/testkit/ProviderReplayHarness.ts"; diff --git a/apps/server/src/mcp/OrchestratorMcpService.test.ts b/apps/server/src/mcp/OrchestratorMcpService.test.ts index 18b444b85177..782992afca73 100644 --- a/apps/server/src/mcp/OrchestratorMcpService.test.ts +++ b/apps/server/src/mcp/OrchestratorMcpService.test.ts @@ -28,7 +28,7 @@ import { OrchestratorProjectionError, OrchestratorThreadAboveModeLimitError, } from "../orchestration-v2/Orchestrator.ts"; -import type { ProviderAdapterV2Shape } from "../orchestration-v2/ProviderAdapter.ts"; +import type { ProviderAdapterV2Shape } from "@t3tools/provider-core/server/adapter"; import * as ProviderAdapterRegistry from "../orchestration-v2/ProviderAdapterRegistry.ts"; import * as ThreadManagementService from "../orchestration-v2/ThreadManagementService.ts"; import * as ProviderRegistry from "../provider/ProviderRegistry.ts"; diff --git a/apps/server/src/mcp/OrchestratorMcpToolkit.integration.test.ts b/apps/server/src/mcp/OrchestratorMcpToolkit.integration.test.ts index cfca51b629c8..3a603a272c8e 100644 --- a/apps/server/src/mcp/OrchestratorMcpToolkit.integration.test.ts +++ b/apps/server/src/mcp/OrchestratorMcpToolkit.integration.test.ts @@ -62,7 +62,7 @@ import { ProviderAdapterProtocolError, type ProviderAdapterV2Shape, type ProviderAdapterV2TurnInput, -} from "../orchestration-v2/ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import * as ProviderAdapterRegistry from "../orchestration-v2/ProviderAdapterRegistry.ts"; import * as ProviderContinuationRequests from "../orchestration-v2/ProviderContinuationRequests.ts"; import { checkpointWorkspace } from "../orchestration-v2/testkit/ReplayFixtureWorkspace.ts"; diff --git a/apps/server/src/mcpApps/McpAppRequests.test.ts b/apps/server/src/mcpApps/McpAppRequests.test.ts index 1fdc8e0c50ca..48d04b8d228f 100644 --- a/apps/server/src/mcpApps/McpAppRequests.test.ts +++ b/apps/server/src/mcpApps/McpAppRequests.test.ts @@ -17,7 +17,7 @@ import * as Orchestrator from "../orchestration-v2/Orchestrator.ts"; import type { ProviderAdapterV2McpApps, ProviderAdapterV2SessionRuntime, -} from "../orchestration-v2/ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import * as ProviderSessionManager from "../orchestration-v2/ProviderSessionManager.ts"; import * as ThreadManagementService from "../orchestration-v2/ThreadManagementService.ts"; import * as McpAppModelContext from "./McpAppModelContext.ts"; diff --git a/apps/server/src/mcpApps/McpAppRequests.ts b/apps/server/src/mcpApps/McpAppRequests.ts index c95606ccd215..cbceba6e5460 100644 --- a/apps/server/src/mcpApps/McpAppRequests.ts +++ b/apps/server/src/mcpApps/McpAppRequests.ts @@ -24,7 +24,7 @@ import * as Orchestrator from "../orchestration-v2/Orchestrator.ts"; import type { ProviderAdapterV2McpApps, ProviderAdapterV2McpTool, -} from "../orchestration-v2/ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import * as ProviderSessionManager from "../orchestration-v2/ProviderSessionManager.ts"; import * as ThreadManagementService from "../orchestration-v2/ThreadManagementService.ts"; import * as McpAppModelContext from "./McpAppModelContext.ts"; diff --git a/apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts b/apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts index dfefe387a58a..d6d3877887d6 100644 --- a/apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts +++ b/apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts @@ -70,7 +70,7 @@ import { ProviderAdapterV2RuntimePolicy, type ProviderAdapterV2Event, type ProviderAdapterV2TurnInput, -} from "../ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import type { ProviderContinuationRequest } from "../ProviderContinuationRequests.ts"; import { AcpProviderCapabilitiesV2, diff --git a/apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts b/apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts index 7fa7b4874d8f..377ea400a7b9 100644 --- a/apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts +++ b/apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts @@ -107,7 +107,7 @@ import { backgroundWorkNotification, } from "../Notification.ts"; import { makeProviderFailure, makeProviderRetryTurnItem } from "../ProviderFailure.ts"; -import { acpSelectionTransition } from "../ProviderSelectionTransition.ts"; +import { acpSelectionTransition } from "@t3tools/provider-core/server/selectionTransition"; import { isProviderNativeImageAttachment, providerMessageTextWithAttachmentPaths, @@ -117,7 +117,7 @@ import { makeSubagentConversationArtifacts, subagentThreadTitle, } from "../SubagentProjection.ts"; -import * as ProviderAdapter from "../ProviderAdapter.ts"; +import * as ProviderAdapter from "@t3tools/provider-core/server/adapter"; export const ACP_PROTOCOL = "acp.ndjson-jsonrpc" as const; diff --git a/apps/server/src/orchestration-v2/Adapters/AcpRegistryAdapterV2.test.ts b/apps/server/src/orchestration-v2/Adapters/AcpRegistryAdapterV2.test.ts index 140476f4fa27..a708c4b9a79a 100644 --- a/apps/server/src/orchestration-v2/Adapters/AcpRegistryAdapterV2.test.ts +++ b/apps/server/src/orchestration-v2/Adapters/AcpRegistryAdapterV2.test.ts @@ -29,7 +29,7 @@ import { makeAcpReplayCompletenessAssertion, makeAcpReplayRuntime, } from "./AcpAdapterV2.testkit.ts"; -import { ProviderAdapterV2RuntimePolicy } from "../ProviderAdapter.ts"; +import { ProviderAdapterV2RuntimePolicy } from "@t3tools/provider-core/server/adapter"; import { BUILT_IN_PROVIDER_ADAPTER_DRIVER_KINDS_V2 } from "../builtInProviderAdapterDrivers.ts"; import { ACP_REGISTRY_PROVIDER, diff --git a/apps/server/src/orchestration-v2/Adapters/AntigravityAdapterV2.test.ts b/apps/server/src/orchestration-v2/Adapters/AntigravityAdapterV2.test.ts index 6905e72fafb5..6f308668f623 100644 --- a/apps/server/src/orchestration-v2/Adapters/AntigravityAdapterV2.test.ts +++ b/apps/server/src/orchestration-v2/Adapters/AntigravityAdapterV2.test.ts @@ -26,7 +26,7 @@ import * as ServerConfig from "../../config.ts"; import type * as AcpSessionRuntime from "../../provider/acp/AcpSessionRuntime.ts"; import { makeAntigravityAcpRuntime } from "../../provider/acp/AntigravityAcpSupport.ts"; import * as IdAllocator from "../IdAllocator.ts"; -import { ProviderAdapterV2RuntimePolicy } from "../ProviderAdapter.ts"; +import { ProviderAdapterV2RuntimePolicy } from "@t3tools/provider-core/server/adapter"; import { makeAntigravityAcpAdapterFlavor, makeAntigravityAdapterV2, diff --git a/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts b/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts index 595fe28b1b9e..01569d68fb30 100644 --- a/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts +++ b/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts @@ -66,7 +66,7 @@ import { ProviderAdapterV2RuntimePolicy, type ProviderAdapterV2Event, type ProviderAdapterV2TurnInput, -} from "../ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import type { ProviderContinuationRequest } from "../ProviderContinuationRequests.ts"; import { makeProviderFailure } from "../ProviderFailure.ts"; import * as ClaudeAdapterV2 from "./ClaudeAdapterV2.ts"; diff --git a/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts b/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts index 1ad916ec2548..5fdefb9fb745 100644 --- a/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts +++ b/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts @@ -109,7 +109,7 @@ import { claudeRateLimitEventToUpdate, type ClaudeScopedLimitNames, } from "../../provider/claudeUsageLimits.ts"; -import type { ServerProviderShape } from "../../provider/ServerProvider.ts"; +import type { ServerProviderShape } from "@t3tools/provider-core/server/snapshot"; import { mergeProviderInstanceEnvironment } from "../../provider/ProviderInstanceEnvironment.ts"; import { T3_CODE_ORCHESTRATION_INSTRUCTIONS } from "../../provider/T3OrchestrationInstructions.ts"; import { buildRuntimeInstructions } from "../../provider/RuntimeInstructions.ts"; @@ -117,9 +117,9 @@ import { mcpToolPresentation, normalizeMcpText } from "../../provider/McpToolPre import * as McpProviderSession from "../../mcp/McpProviderSession.ts"; import * as IdAllocator from "../IdAllocator.ts"; import { makeProviderFailure, makeProviderRetryTurnItem } from "../ProviderFailure.ts"; -import { turnScopedSelectionTransition } from "../ProviderSelectionTransition.ts"; +import { turnScopedSelectionTransition } from "@t3tools/provider-core/server/selectionTransition"; import { providerMessageTextWithAttachmentPaths } from "../AttachmentPrompt.ts"; -import * as ProviderAdapter from "../ProviderAdapter.ts"; +import * as ProviderAdapter from "@t3tools/provider-core/server/adapter"; import { ProviderAdapterDriverCreateError, type ProviderAdapterDriver, diff --git a/apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.test.ts b/apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.test.ts index 862810662310..fbfad839ad42 100644 --- a/apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.test.ts +++ b/apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.test.ts @@ -1,7 +1,7 @@ import * as NodeOS from "node:os"; import { historyResponseItems } from "../ContextHandoffBudget.ts"; -import type { ProviderAdapterV2HistoricalContext } from "../ProviderAdapter.ts"; +import type { ProviderAdapterV2HistoricalContext } from "@t3tools/provider-core/server/adapter"; import { makeProviderTextDeltaCoalescer, type ProviderTextDeltaUpdate, @@ -69,7 +69,7 @@ import { ProviderAdapterV2RuntimePolicy, type ProviderAdapterV2Event, type ProviderAdapterV2TurnInput, -} from "../ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import type { ProviderContinuationRequest } from "../ProviderContinuationRequests.ts"; import * as CodexAdapterV2 from "./CodexAdapterV2.ts"; import { makeReplayServerConfig, withCodexReplayChildMetadata } from "./CodexAdapterV2.testkit.ts"; diff --git a/apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.testkit.ts b/apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.testkit.ts index 403d85afae7d..99d941b66626 100644 --- a/apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.testkit.ts +++ b/apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.testkit.ts @@ -15,7 +15,7 @@ import * as Schema from "effect/Schema"; import * as ServerConfig from "../../config.ts"; import * as IdAllocator from "../IdAllocator.ts"; -import { ProviderAdapterOpenSessionError } from "../ProviderAdapter.ts"; +import { ProviderAdapterOpenSessionError } from "@t3tools/provider-core/server/adapter"; import { ProviderAdapterDriverCreateError } from "../ProviderAdapterDriver.ts"; import * as ProviderAdapterRegistry from "../ProviderAdapterRegistry.ts"; import type { OrchestratorV2ProviderReplayHarness } from "../testkit/ProviderReplayHarness.ts"; diff --git a/apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts b/apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts index fefc1ece4fc9..9a38c556c849 100644 --- a/apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts +++ b/apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts @@ -12,7 +12,7 @@ import { completeCodexTurnTokenUsage, type CodexTurnTokenUsageState, } from "../../provider/CodexTurnTokenUsage.ts"; -import type { ServerProviderShape } from "../../provider/ServerProvider.ts"; +import type { ServerProviderShape } from "@t3tools/provider-core/server/snapshot"; import type { CodexEffectiveRuntime } from "../../provider/CodexManagedRuntime.ts"; import { buildCodexInitializeParams } from "../../provider/CodexProvider.ts"; import { @@ -132,7 +132,7 @@ import { makeProviderFailureTurnItem, makeProviderRetryTurnItem, } from "../ProviderFailure.ts"; -import { turnScopedSelectionTransition } from "../ProviderSelectionTransition.ts"; +import { turnScopedSelectionTransition } from "@t3tools/provider-core/server/selectionTransition"; import { isProviderNativeImageAttachment, providerMessageTextWithAttachmentPaths, @@ -160,7 +160,7 @@ import { type ProviderAdapterV2InterruptInput, type ProviderAdapterV2SteerInput, type ProviderAdapterV2TurnInput, -} from "../ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import { makeSubagentChildThread, makeSubagentConversationArtifacts, diff --git a/apps/server/src/orchestration-v2/Adapters/CursorAdapterV2.test.ts b/apps/server/src/orchestration-v2/Adapters/CursorAdapterV2.test.ts index 8b0bdfb98b97..bba6bc933e94 100644 --- a/apps/server/src/orchestration-v2/Adapters/CursorAdapterV2.test.ts +++ b/apps/server/src/orchestration-v2/Adapters/CursorAdapterV2.test.ts @@ -25,7 +25,7 @@ import * as Stream from "effect/Stream"; import * as ServerConfig from "../../config.ts"; import * as McpProviderSession from "../../mcp/McpProviderSession.ts"; import * as IdAllocator from "../IdAllocator.ts"; -import { ProviderAdapterV2RuntimePolicy } from "../ProviderAdapter.ts"; +import { ProviderAdapterV2RuntimePolicy } from "@t3tools/provider-core/server/adapter"; import { cursorMcpServers, cursorRuntimeAgentPolicy, diff --git a/apps/server/src/orchestration-v2/Adapters/CursorAdapterV2.testkit.ts b/apps/server/src/orchestration-v2/Adapters/CursorAdapterV2.testkit.ts index 42ec1f7a8ea4..91dc168d9991 100644 --- a/apps/server/src/orchestration-v2/Adapters/CursorAdapterV2.testkit.ts +++ b/apps/server/src/orchestration-v2/Adapters/CursorAdapterV2.testkit.ts @@ -32,7 +32,7 @@ import { cursorSdkModelSelection, makeCursorAgentOptions, } from "./CursorAdapterV2.ts"; -import type { ProviderAdapterV2RuntimePolicy } from "../ProviderAdapter.ts"; +import type { ProviderAdapterV2RuntimePolicy } from "@t3tools/provider-core/server/adapter"; import type { RuntimePolicyV2Override } from "../RuntimePolicy.ts"; const CursorAgentSdkReplayTranscript = Schema.Struct({ diff --git a/apps/server/src/orchestration-v2/Adapters/CursorAdapterV2.ts b/apps/server/src/orchestration-v2/Adapters/CursorAdapterV2.ts index 5ade7c13911b..d85b9aa5a007 100644 --- a/apps/server/src/orchestration-v2/Adapters/CursorAdapterV2.ts +++ b/apps/server/src/orchestration-v2/Adapters/CursorAdapterV2.ts @@ -58,12 +58,12 @@ import { t3OrchestrationPromptForFirstRun } from "../../provider/T3Orchestration import { buildRuntimeInstructions } from "../../provider/RuntimeInstructions.ts"; import * as IdAllocator from "../IdAllocator.ts"; import { makeProviderFailure } from "../ProviderFailure.ts"; -import { turnScopedSelectionTransition } from "../ProviderSelectionTransition.ts"; +import { turnScopedSelectionTransition } from "@t3tools/provider-core/server/selectionTransition"; import { isProviderNativeImageAttachment, providerMessageTextWithAttachmentPaths, } from "../AttachmentPrompt.ts"; -import * as ProviderAdapter from "../ProviderAdapter.ts"; +import * as ProviderAdapter from "@t3tools/provider-core/server/adapter"; import { ProviderAdapterDriverCreateError, type ProviderAdapterDriver, diff --git a/apps/server/src/orchestration-v2/Adapters/GrokAdapterV2.test.ts b/apps/server/src/orchestration-v2/Adapters/GrokAdapterV2.test.ts index 59e09b2b44c0..f37ca674bbaa 100644 --- a/apps/server/src/orchestration-v2/Adapters/GrokAdapterV2.test.ts +++ b/apps/server/src/orchestration-v2/Adapters/GrokAdapterV2.test.ts @@ -25,10 +25,10 @@ import type * as EffectAcpSchema from "effect-acp/compat"; import * as ServerConfig from "../../config.ts"; import * as ProjectStore from "../ProjectStore.ts"; import { buildInitialGrokProviderSnapshot } from "../../provider/GrokProvider.ts"; -import type { ProviderInstance } from "../../provider/ProviderDriver.ts"; +import type { ProviderInstance } from "@t3tools/provider-core/server/driver"; import * as ProviderInstanceRegistry from "../../provider/ProviderInstanceRegistry.ts"; import * as IdAllocator from "../IdAllocator.ts"; -import { ProviderAdapterV2RuntimePolicy } from "../ProviderAdapter.ts"; +import { ProviderAdapterV2RuntimePolicy } from "@t3tools/provider-core/server/adapter"; import * as RuntimePolicy from "../RuntimePolicy.ts"; import { acpPermissionDisposition } from "../../provider/acp/AcpClientPolicy.ts"; import { diff --git a/apps/server/src/orchestration-v2/Adapters/GrokAdapterV2.ts b/apps/server/src/orchestration-v2/Adapters/GrokAdapterV2.ts index b446e7ff02df..a1feb4f5d82d 100644 --- a/apps/server/src/orchestration-v2/Adapters/GrokAdapterV2.ts +++ b/apps/server/src/orchestration-v2/Adapters/GrokAdapterV2.ts @@ -59,7 +59,7 @@ import * as AcpSessionRuntime from "../../provider/acp/AcpSessionRuntime.ts"; import * as ProviderEventLoggers from "../../provider/ProviderEventLoggers.ts"; import * as IdAllocator from "../IdAllocator.ts"; import * as ProviderContinuationRequests from "../ProviderContinuationRequests.ts"; -import * as ProviderAdapter from "../ProviderAdapter.ts"; +import * as ProviderAdapter from "@t3tools/provider-core/server/adapter"; import { ProviderAdapterDriverCreateError, type ProviderAdapterDriver, diff --git a/apps/server/src/orchestration-v2/Adapters/MuseAdapterV2.test.ts b/apps/server/src/orchestration-v2/Adapters/MuseAdapterV2.test.ts index ffc520bed1c9..ec62da4f1a4c 100644 --- a/apps/server/src/orchestration-v2/Adapters/MuseAdapterV2.test.ts +++ b/apps/server/src/orchestration-v2/Adapters/MuseAdapterV2.test.ts @@ -40,7 +40,7 @@ import { ProviderAdapterV2RuntimePolicy, type ProviderAdapterV2Event, type ProviderAdapterV2TurnInput, -} from "../ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import type { ProviderContinuationRequest } from "../ProviderContinuationRequests.ts"; import { makeMuseAdapterV2, type MuseAdapterV2Options } from "./MuseAdapterV2.ts"; diff --git a/apps/server/src/orchestration-v2/Adapters/MuseAdapterV2.ts b/apps/server/src/orchestration-v2/Adapters/MuseAdapterV2.ts index 406ea9cd59ca..558608e7ef62 100644 --- a/apps/server/src/orchestration-v2/Adapters/MuseAdapterV2.ts +++ b/apps/server/src/orchestration-v2/Adapters/MuseAdapterV2.ts @@ -94,11 +94,11 @@ import { type ProviderAdapterV2ThreadSnapshot, type ProviderAdapterV2TurnInput, type ProviderAdapterV2TurnMessage, -} from "../ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import { backgroundWorkNotification, type BackgroundWorkReport } from "../Notification.ts"; import type * as ProviderContinuationRequests from "../ProviderContinuationRequests.ts"; import { makeProviderFailure } from "../ProviderFailure.ts"; -import { turnScopedSelectionTransition } from "../ProviderSelectionTransition.ts"; +import { turnScopedSelectionTransition } from "@t3tools/provider-core/server/selectionTransition"; import { museItemStatus, museToolPresentation } from "./MuseItemPresentation.ts"; const MUSE_PROVIDER = ProviderDriverKind.make("muse"); diff --git a/apps/server/src/orchestration-v2/Adapters/OpenCode2AdapterV2.test.ts b/apps/server/src/orchestration-v2/Adapters/OpenCode2AdapterV2.test.ts index 7274de8c386f..4824d590b060 100644 --- a/apps/server/src/orchestration-v2/Adapters/OpenCode2AdapterV2.test.ts +++ b/apps/server/src/orchestration-v2/Adapters/OpenCode2AdapterV2.test.ts @@ -41,7 +41,7 @@ import { describe } from "vite-plus/test"; import type { ProviderAdapterV2Event, ProviderAdapterV2SessionRuntime, -} from "../ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import * as McpProviderSession from "../../mcp/McpProviderSession.ts"; import * as IdAllocator from "../IdAllocator.ts"; import type { ProviderContinuationRequest } from "../ProviderContinuationRequests.ts"; diff --git a/apps/server/src/orchestration-v2/Adapters/OpenCode2AdapterV2.ts b/apps/server/src/orchestration-v2/Adapters/OpenCode2AdapterV2.ts index 102eb721bb1a..a745db97a929 100644 --- a/apps/server/src/orchestration-v2/Adapters/OpenCode2AdapterV2.ts +++ b/apps/server/src/orchestration-v2/Adapters/OpenCode2AdapterV2.ts @@ -95,8 +95,8 @@ import { makeSubagentConversationArtifacts, subagentThreadTitle, } from "../SubagentProjection.ts"; -import * as ProviderAdapter from "../ProviderAdapter.ts"; -import { turnScopedSelectionTransition } from "../ProviderSelectionTransition.ts"; +import * as ProviderAdapter from "@t3tools/provider-core/server/adapter"; +import { turnScopedSelectionTransition } from "@t3tools/provider-core/server/selectionTransition"; import { OPENCODE_PROVIDER, openCodePermissionRequestKind } from "./OpenCodeAdapterV2.ts"; import { openCodeToolTurnItem } from "./OpenCodeToolItems.ts"; diff --git a/apps/server/src/orchestration-v2/Adapters/OpenCodeAdapterV2.test.ts b/apps/server/src/orchestration-v2/Adapters/OpenCodeAdapterV2.test.ts index a8e28a377d1a..f6b38498e328 100644 --- a/apps/server/src/orchestration-v2/Adapters/OpenCodeAdapterV2.test.ts +++ b/apps/server/src/orchestration-v2/Adapters/OpenCodeAdapterV2.test.ts @@ -49,7 +49,7 @@ import { OPENCODE_PROVIDER, reconcileOpenCodePromptAdmissionStatus, } from "./OpenCodeAdapterV2.ts"; -import { ProviderAdapterV2RuntimePolicy } from "../ProviderAdapter.ts"; +import { ProviderAdapterV2RuntimePolicy } from "@t3tools/provider-core/server/adapter"; const encodeUnknownJson = Schema.encodeUnknownSync(Schema.fromJsonString(Schema.Unknown)); const OPEN_CODE_TEST_SETTINGS = Schema.decodeSync(OpenCodeSettings)({ diff --git a/apps/server/src/orchestration-v2/Adapters/OpenCodeAdapterV2.ts b/apps/server/src/orchestration-v2/Adapters/OpenCodeAdapterV2.ts index 510a4c859d36..7703c1a4028f 100644 --- a/apps/server/src/orchestration-v2/Adapters/OpenCodeAdapterV2.ts +++ b/apps/server/src/orchestration-v2/Adapters/OpenCodeAdapterV2.ts @@ -70,9 +70,9 @@ import { buildRuntimeInstructions } from "../../provider/RuntimeInstructions.ts" import * as OpenCodeRuntime from "../../provider/opencodeRuntime.ts"; import * as IdAllocator from "../IdAllocator.ts"; import { makeProviderFailure } from "../ProviderFailure.ts"; -import { turnScopedSelectionTransition } from "../ProviderSelectionTransition.ts"; +import { turnScopedSelectionTransition } from "@t3tools/provider-core/server/selectionTransition"; import { providerMessageTextWithAttachmentPaths } from "../AttachmentPrompt.ts"; -import * as ProviderAdapter from "../ProviderAdapter.ts"; +import * as ProviderAdapter from "@t3tools/provider-core/server/adapter"; import { ProviderAdapterDriverCreateError, type ProviderAdapterDriver, diff --git a/apps/server/src/orchestration-v2/Adapters/PiAdapterV2.test.ts b/apps/server/src/orchestration-v2/Adapters/PiAdapterV2.test.ts index 4db9305cd2e6..80d0e95250f8 100644 --- a/apps/server/src/orchestration-v2/Adapters/PiAdapterV2.test.ts +++ b/apps/server/src/orchestration-v2/Adapters/PiAdapterV2.test.ts @@ -41,7 +41,7 @@ import { ProviderAdapterV2RuntimePolicy, type ProviderAdapterV2Event, type ProviderAdapterV2SessionRuntime, -} from "../ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import { handoffBudget } from "../ContextHandoffBudget.ts"; import { makePiAdapterV2, diff --git a/apps/server/src/orchestration-v2/Adapters/PiAdapterV2.ts b/apps/server/src/orchestration-v2/Adapters/PiAdapterV2.ts index b05454aefc12..8db88d06e0ae 100644 --- a/apps/server/src/orchestration-v2/Adapters/PiAdapterV2.ts +++ b/apps/server/src/orchestration-v2/Adapters/PiAdapterV2.ts @@ -72,7 +72,7 @@ import { } from "../../provider/PiCommands.ts"; import { mergeProviderInstanceEnvironment } from "../../provider/ProviderInstanceEnvironment.ts"; import * as IdAllocator from "../IdAllocator.ts"; -import * as ProviderAdapter from "../ProviderAdapter.ts"; +import * as ProviderAdapter from "@t3tools/provider-core/server/adapter"; import * as ProviderContinuationRequests from "../ProviderContinuationRequests.ts"; import { ProviderAdapterDriverCreateError, @@ -80,7 +80,7 @@ import { type ProviderAdapterDriverCreateInput, } from "../ProviderAdapterDriver.ts"; import { makeProviderFailure, makeProviderRetryTurnItem } from "../ProviderFailure.ts"; -import { turnScopedSelectionTransition } from "../ProviderSelectionTransition.ts"; +import { turnScopedSelectionTransition } from "@t3tools/provider-core/server/selectionTransition"; import { makePiRpcConnection, parsePiModelSlug, diff --git a/apps/server/src/orchestration-v2/BackgroundWorkStop.integration.test.ts b/apps/server/src/orchestration-v2/BackgroundWorkStop.integration.test.ts index c1a72d05f685..b89e369106a5 100644 --- a/apps/server/src/orchestration-v2/BackgroundWorkStop.integration.test.ts +++ b/apps/server/src/orchestration-v2/BackgroundWorkStop.integration.test.ts @@ -29,7 +29,7 @@ import type { ProviderAdapterV2InterruptInput, ProviderAdapterV2Shape, ProviderAdapterV2TurnInput, -} from "./ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import * as ProviderAdapterRegistry from "./ProviderAdapterRegistry.ts"; import * as ProviderSessionManager from "./ProviderSessionManager.ts"; import * as ProviderReplayHarness from "./testkit/ProviderReplayHarness.ts"; diff --git a/apps/server/src/orchestration-v2/CheckpointRollbackService.test.ts b/apps/server/src/orchestration-v2/CheckpointRollbackService.test.ts index bb37290363ac..24d28c064d05 100644 --- a/apps/server/src/orchestration-v2/CheckpointRollbackService.test.ts +++ b/apps/server/src/orchestration-v2/CheckpointRollbackService.test.ts @@ -26,7 +26,7 @@ import * as EventSink from "./EventSink.ts"; import * as IdAllocator from "./IdAllocator.ts"; import * as ProjectionStore from "./ProjectionStore.ts"; import * as ProjectStore from "./ProjectStore.ts"; -import type { ProviderAdapterV2RollbackThreadInput } from "./ProviderAdapter.ts"; +import type { ProviderAdapterV2RollbackThreadInput } from "@t3tools/provider-core/server/adapter"; import * as ProviderSessionManager from "./ProviderSessionManager.ts"; import * as RuntimePolicy from "./RuntimePolicy.ts"; diff --git a/apps/server/src/orchestration-v2/CheckpointRollbackService.ts b/apps/server/src/orchestration-v2/CheckpointRollbackService.ts index b1532a74c6dc..9183d08a37bb 100644 --- a/apps/server/src/orchestration-v2/CheckpointRollbackService.ts +++ b/apps/server/src/orchestration-v2/CheckpointRollbackService.ts @@ -23,7 +23,7 @@ import { EventSinkV2 } from "./EventSink.ts"; import { IdAllocatorV2 } from "./IdAllocator.ts"; import { ProjectionStoreV2 } from "./ProjectionStore.ts"; import * as ProjectStore from "./ProjectStore.ts"; -import type { ProviderAdapterV2RollbackTarget } from "./ProviderAdapter.ts"; +import type { ProviderAdapterV2RollbackTarget } from "@t3tools/provider-core/server/adapter"; import { ProviderSessionManagerV2 } from "./ProviderSessionManager.ts"; import { RuntimePolicyV2 } from "./RuntimePolicy.ts"; import * as ThreadCommandExecutor from "./ThreadCommandExecutor.ts"; diff --git a/apps/server/src/orchestration-v2/ContextHandoffBudget.test.ts b/apps/server/src/orchestration-v2/ContextHandoffBudget.test.ts index 2c6c878b25e9..21ddd81428f7 100644 --- a/apps/server/src/orchestration-v2/ContextHandoffBudget.test.ts +++ b/apps/server/src/orchestration-v2/ContextHandoffBudget.test.ts @@ -1,4 +1,4 @@ -import type { ProviderAdapterV2HistoricalContext } from "./ProviderAdapter.ts"; +import type { ProviderAdapterV2HistoricalContext } from "@t3tools/provider-core/server/adapter"; import { assert, describe, it } from "@effect/vitest"; import { ContextHandoffId, diff --git a/apps/server/src/orchestration-v2/ContextHandoffDelivery.ts b/apps/server/src/orchestration-v2/ContextHandoffDelivery.ts index 52a80448f8c3..3390a690b6bd 100644 --- a/apps/server/src/orchestration-v2/ContextHandoffDelivery.ts +++ b/apps/server/src/orchestration-v2/ContextHandoffDelivery.ts @@ -2,7 +2,7 @@ import type { OrchestrationV2ContextHandoff, OrchestrationV2ProviderThread, } from "@t3tools/contracts"; -import type { ProviderAdapterV2HistoricalContext } from "./ProviderAdapter.ts"; +import type { ProviderAdapterV2HistoricalContext } from "@t3tools/provider-core/server/adapter"; import * as Effect from "effect/Effect"; import * as Schema from "effect/Schema"; import { historyCost, renderHistory, selectHistory } from "./ContextHandoffBudget.ts"; diff --git a/apps/server/src/orchestration-v2/DelegatedCompletionDelivery.test.ts b/apps/server/src/orchestration-v2/DelegatedCompletionDelivery.test.ts index 0344e3aed4cf..05a7f265415d 100644 --- a/apps/server/src/orchestration-v2/DelegatedCompletionDelivery.test.ts +++ b/apps/server/src/orchestration-v2/DelegatedCompletionDelivery.test.ts @@ -27,7 +27,7 @@ import * as McpSessionRegistryTestkit from "../mcp/McpSessionRegistry.testkit.ts import * as SqlitePersistence from "../persistence/Sqlite.ts"; import * as ProjectEnrichmentService from "../project/ProjectEnrichmentService.ts"; import * as ProjectService from "../project/ProjectService.ts"; -import type { ProviderInstance } from "../provider/ProviderDriver.ts"; +import type { ProviderInstance } from "@t3tools/provider-core/server/driver"; import * as ProviderInstanceRegistry from "../provider/ProviderInstanceRegistry.ts"; import * as ServerSettings from "../serverSettings.ts"; import * as VcsDriverRegistry from "../vcs/VcsDriverRegistry.ts"; @@ -36,7 +36,7 @@ import * as WorkspacePaths from "../workspace/WorkspacePaths.ts"; import { CodexProviderCapabilitiesV2 } from "./Adapters/CodexAdapterV2.ts"; import * as EventSink from "./EventSink.ts"; import * as Orchestrator from "./Orchestrator.ts"; -import type { ProviderAdapterV2Shape } from "./ProviderAdapter.ts"; +import type { ProviderAdapterV2Shape } from "@t3tools/provider-core/server/adapter"; import { continueRestartedRun } from "./RestartContinuation.ts"; import * as RuntimeLayer from "./runtimeLayer.ts"; import * as ProviderTurnStartServiceTestkit from "./ProviderTurnStartService.testkit.ts"; diff --git a/apps/server/src/orchestration-v2/DispatchModeLimit.test.ts b/apps/server/src/orchestration-v2/DispatchModeLimit.test.ts index dca74400e821..8279d27e3de4 100644 --- a/apps/server/src/orchestration-v2/DispatchModeLimit.test.ts +++ b/apps/server/src/orchestration-v2/DispatchModeLimit.test.ts @@ -13,7 +13,7 @@ import { CodexProviderCapabilitiesV2 } from "./Adapters/CodexAdapterV2.ts"; import { DispatchModeLimit } from "./DispatchModeLimit.ts"; import * as Orchestrator from "./Orchestrator.ts"; import * as ProjectionStore from "./ProjectionStore.ts"; -import type { ProviderAdapterV2Shape } from "./ProviderAdapter.ts"; +import type { ProviderAdapterV2Shape } from "@t3tools/provider-core/server/adapter"; import * as ProviderAdapterRegistry from "./ProviderAdapterRegistry.ts"; import * as ProviderReplayHarness from "./testkit/ProviderReplayHarness.ts"; diff --git a/apps/server/src/orchestration-v2/Orchestrator.control-reads.test.ts b/apps/server/src/orchestration-v2/Orchestrator.control-reads.test.ts index c68fc0ace5e9..8b88a04a8a78 100644 --- a/apps/server/src/orchestration-v2/Orchestrator.control-reads.test.ts +++ b/apps/server/src/orchestration-v2/Orchestrator.control-reads.test.ts @@ -25,7 +25,7 @@ import * as SqlitePersistence from "../persistence/Sqlite.ts"; import { CodexProviderCapabilitiesV2 } from "./Adapters/CodexAdapterV2.ts"; import * as Orchestrator from "./Orchestrator.ts"; import * as ProjectionStore from "./ProjectionStore.ts"; -import type { ProviderAdapterV2Shape } from "./ProviderAdapter.ts"; +import type { ProviderAdapterV2Shape } from "@t3tools/provider-core/server/adapter"; import * as ProviderAdapterRegistry from "./ProviderAdapterRegistry.ts"; import * as ProviderReplayHarness from "./testkit/ProviderReplayHarness.ts"; diff --git a/apps/server/src/orchestration-v2/Orchestrator.ts b/apps/server/src/orchestration-v2/Orchestrator.ts index 1d7f907a5196..2f7be5b6d343 100644 --- a/apps/server/src/orchestration-v2/Orchestrator.ts +++ b/apps/server/src/orchestration-v2/Orchestrator.ts @@ -107,7 +107,7 @@ import { type ProjectionCheckpointContext, type ShellSnapshotOptions, } from "./ProjectionStore.ts"; -import type { ProviderAdapterV2Shape } from "./ProviderAdapter.ts"; +import type { ProviderAdapterV2Shape } from "@t3tools/provider-core/server/adapter"; import { ProviderAdapterRegistryV2 } from "./ProviderAdapterRegistry.ts"; import { ProviderContinuationRequests } from "./ProviderContinuationRequests.ts"; import { makeProviderFailure } from "./ProviderFailure.ts"; diff --git a/apps/server/src/orchestration-v2/ProviderAdapterDriver.ts b/apps/server/src/orchestration-v2/ProviderAdapterDriver.ts index 765abd21af0f..67ed65a521ee 100644 --- a/apps/server/src/orchestration-v2/ProviderAdapterDriver.ts +++ b/apps/server/src/orchestration-v2/ProviderAdapterDriver.ts @@ -7,7 +7,7 @@ import * as Schema from "effect/Schema"; import type * as Effect from "effect/Effect"; import type * as Scope from "effect/Scope"; -import type { ProviderAdapterV2Shape } from "./ProviderAdapter.ts"; +import type { ProviderAdapterV2Shape } from "@t3tools/provider-core/server/adapter"; export class ProviderAdapterDriverCreateError extends Schema.TaggedError()( "ProviderAdapterDriverCreateError", diff --git a/apps/server/src/orchestration-v2/ProviderAdapterRegistry.test.ts b/apps/server/src/orchestration-v2/ProviderAdapterRegistry.test.ts index f79c974902a4..0bdcb30d00ea 100644 --- a/apps/server/src/orchestration-v2/ProviderAdapterRegistry.test.ts +++ b/apps/server/src/orchestration-v2/ProviderAdapterRegistry.test.ts @@ -20,9 +20,12 @@ import * as Stream from "effect/Stream"; import * as ProviderAuthFlow from "../provider/ProviderAuthFlow.ts"; import type { ProviderAuthController } from "../provider/ProviderAuthService.ts"; -import type { ProviderInstance } from "../provider/ProviderDriver.ts"; +import type { ProviderInstance } from "@t3tools/provider-core/server/driver"; import * as ProviderInstanceRegistry from "../provider/ProviderInstanceRegistry.ts"; -import { ProviderAdapterOpenSessionError, type ProviderAdapterV2Shape } from "./ProviderAdapter.ts"; +import { + ProviderAdapterOpenSessionError, + type ProviderAdapterV2Shape, +} from "@t3tools/provider-core/server/adapter"; import { ProviderAdapterDriverCreateError, type ProviderAdapterDriver, diff --git a/apps/server/src/orchestration-v2/ProviderAdapterRegistry.ts b/apps/server/src/orchestration-v2/ProviderAdapterRegistry.ts index d487aa18c9be..cd8eacbfc828 100644 --- a/apps/server/src/orchestration-v2/ProviderAdapterRegistry.ts +++ b/apps/server/src/orchestration-v2/ProviderAdapterRegistry.ts @@ -18,7 +18,7 @@ import { ProviderAdapterDriverCreateError, type AnyProviderAdapterDriver, } from "./ProviderAdapterDriver.ts"; -import * as ProviderAdapter from "./ProviderAdapter.ts"; +import * as ProviderAdapter from "@t3tools/provider-core/server/adapter"; const isProviderSetupError = Schema.is(ProviderSetupError); diff --git a/apps/server/src/orchestration-v2/ProviderEventIngestor.ts b/apps/server/src/orchestration-v2/ProviderEventIngestor.ts index dcaa956d0789..6305d5d9a254 100644 --- a/apps/server/src/orchestration-v2/ProviderEventIngestor.ts +++ b/apps/server/src/orchestration-v2/ProviderEventIngestor.ts @@ -30,7 +30,7 @@ import * as AnalyticsService from "../telemetry/AnalyticsService.ts"; import * as EventSink from "./EventSink.ts"; import * as ProjectionStore from "./ProjectionStore.ts"; import * as IdAllocator from "./IdAllocator.ts"; -import { ProviderAdapterV2Event } from "./ProviderAdapter.ts"; +import { ProviderAdapterV2Event } from "@t3tools/provider-core/server/adapter"; import { makeProviderFailureTurnItem } from "./ProviderFailure.ts"; import * as ThreadCommandExecutor from "./ThreadCommandExecutor.ts"; import { stripUnservedToolOutputImageBytes } from "./toolOutputImageBytes.ts"; diff --git a/apps/server/src/orchestration-v2/ProviderFailure.test.ts b/apps/server/src/orchestration-v2/ProviderFailure.test.ts index f05d3e91cd8a..cbf13c9c1c8a 100644 --- a/apps/server/src/orchestration-v2/ProviderFailure.test.ts +++ b/apps/server/src/orchestration-v2/ProviderFailure.test.ts @@ -19,7 +19,7 @@ import { } from "./ProviderFailure.ts"; import * as IdAllocator from "./IdAllocator.ts"; import { ContextHandoffBudgetError } from "./ContextHandoffDelivery.ts"; -import { ProviderAdapterTurnStartError } from "./ProviderAdapter.ts"; +import { ProviderAdapterTurnStartError } from "@t3tools/provider-core/server/adapter"; it("redacts credentials and URL secrets from provider failures", () => { const failure = makeProviderFailure({ diff --git a/apps/server/src/orchestration-v2/ProviderSelectionTransition.test.ts b/apps/server/src/orchestration-v2/ProviderSelectionTransition.test.ts index 2e1911bceb8e..4a6d6a6a91d1 100644 --- a/apps/server/src/orchestration-v2/ProviderSelectionTransition.test.ts +++ b/apps/server/src/orchestration-v2/ProviderSelectionTransition.test.ts @@ -7,7 +7,7 @@ import { } from "@t3tools/contracts"; import { AcpProviderCapabilitiesV2 } from "./Adapters/AcpAdapterV2.ts"; -import { acpSelectionTransition } from "./ProviderSelectionTransition.ts"; +import { acpSelectionTransition } from "@t3tools/provider-core/server/selectionTransition"; const selection = (model: string, effort = "medium"): ModelSelection => ({ instanceId: ProviderInstanceId.make("acp_test"), diff --git a/apps/server/src/orchestration-v2/ProviderSessionManager.test.ts b/apps/server/src/orchestration-v2/ProviderSessionManager.test.ts index 2f2b0402f620..aae3107a05a6 100644 --- a/apps/server/src/orchestration-v2/ProviderSessionManager.test.ts +++ b/apps/server/src/orchestration-v2/ProviderSessionManager.test.ts @@ -51,7 +51,7 @@ import { type ProviderAdapterV2RuntimePolicy, type ProviderAdapterV2SessionRuntime, type ProviderAdapterV2Shape, -} from "./ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import * as ProviderAdapterRegistry from "./ProviderAdapterRegistry.ts"; import * as ProviderEventIngestor from "./ProviderEventIngestor.ts"; import * as ThreadCommandExecutor from "./ThreadCommandExecutor.ts"; diff --git a/apps/server/src/orchestration-v2/ProviderSessionManager.ts b/apps/server/src/orchestration-v2/ProviderSessionManager.ts index d181497ec275..e772acbb4b9f 100644 --- a/apps/server/src/orchestration-v2/ProviderSessionManager.ts +++ b/apps/server/src/orchestration-v2/ProviderSessionManager.ts @@ -53,7 +53,7 @@ import { type ProviderAdapterV2Event, type ProviderAdapterV2EventSubscription, type ProviderAdapterV2SessionRuntime, -} from "./ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import * as ProviderAdapterRegistry from "./ProviderAdapterRegistry.ts"; import * as ProjectionStore from "./ProjectionStore.ts"; diff --git a/apps/server/src/orchestration-v2/ProviderSessionTransitionPolicy.ts b/apps/server/src/orchestration-v2/ProviderSessionTransitionPolicy.ts index 50c7e561de63..784d03de6dcb 100644 --- a/apps/server/src/orchestration-v2/ProviderSessionTransitionPolicy.ts +++ b/apps/server/src/orchestration-v2/ProviderSessionTransitionPolicy.ts @@ -7,8 +7,8 @@ import type { } from "@t3tools/contracts"; import { modelSelectionsEqual } from "@t3tools/shared/model"; -import type { ProviderContinuationIdentity } from "../provider/ProviderDriver.ts"; -import type { ProviderSelectionTransitionPlan } from "./ProviderSelectionTransition.ts"; +import type { ProviderContinuationIdentity } from "@t3tools/provider-core/server/driver"; +import type { ProviderSelectionTransitionPlan } from "@t3tools/provider-core/server/selectionTransition"; export type ProviderSessionTransition = | { readonly type: "reuse" } diff --git a/apps/server/src/orchestration-v2/ProviderSwitchService.test.ts b/apps/server/src/orchestration-v2/ProviderSwitchService.test.ts index 5cf3f9246c6b..c273dd4ade88 100644 --- a/apps/server/src/orchestration-v2/ProviderSwitchService.test.ts +++ b/apps/server/src/orchestration-v2/ProviderSwitchService.test.ts @@ -12,9 +12,9 @@ import * as Effect from "effect/Effect"; import * as Layer from "effect/Layer"; import { CodexProviderCapabilitiesV2 } from "./Adapters/CodexAdapterV2.ts"; -import type { ProviderAdapterV2Shape } from "./ProviderAdapter.ts"; +import type { ProviderAdapterV2Shape } from "@t3tools/provider-core/server/adapter"; import * as ProviderAdapterRegistry from "./ProviderAdapterRegistry.ts"; -import { acpSelectionTransition } from "./ProviderSelectionTransition.ts"; +import { acpSelectionTransition } from "@t3tools/provider-core/server/selectionTransition"; import * as ProviderSwitch from "./ProviderSwitchService.ts"; const driver = ProviderDriverKind.make("codex"); diff --git a/apps/server/src/orchestration-v2/ProviderTurnControlService.test.ts b/apps/server/src/orchestration-v2/ProviderTurnControlService.test.ts index 0808386da538..883ac424f3a9 100644 --- a/apps/server/src/orchestration-v2/ProviderTurnControlService.test.ts +++ b/apps/server/src/orchestration-v2/ProviderTurnControlService.test.ts @@ -24,7 +24,7 @@ import * as Stream from "effect/Stream"; import { CodexProviderCapabilitiesV2 } from "./Adapters/CodexAdapterV2.ts"; import * as ProjectionStore from "./ProjectionStore.ts"; -import type { ProviderAdapterV2SessionRuntime } from "./ProviderAdapter.ts"; +import type { ProviderAdapterV2SessionRuntime } from "@t3tools/provider-core/server/adapter"; import * as ProviderSessionManager from "./ProviderSessionManager.ts"; import * as ProviderTurnControlService from "./ProviderTurnControlService.ts"; diff --git a/apps/server/src/orchestration-v2/ProviderTurnStartService.test.ts b/apps/server/src/orchestration-v2/ProviderTurnStartService.test.ts index 06761c13b3fd..c2656bbb133b 100644 --- a/apps/server/src/orchestration-v2/ProviderTurnStartService.test.ts +++ b/apps/server/src/orchestration-v2/ProviderTurnStartService.test.ts @@ -32,7 +32,7 @@ import * as EventSink from "./EventSink.ts"; import * as IdAllocator from "./IdAllocator.ts"; import { CodexProviderCapabilitiesV2 } from "./Adapters/CodexAdapterV2.ts"; import * as ProjectionStore from "./ProjectionStore.ts"; -import { ProviderAdapterEventStreamError } from "./ProviderAdapter.ts"; +import { ProviderAdapterEventStreamError } from "@t3tools/provider-core/server/adapter"; import * as ProviderSessionManager from "./ProviderSessionManager.ts"; import * as ProviderTurnStart from "./ProviderTurnStartService.ts"; import * as RunExecutionService from "./RunExecutionService.ts"; diff --git a/apps/server/src/orchestration-v2/ProviderTurnStartService.ts b/apps/server/src/orchestration-v2/ProviderTurnStartService.ts index 227aab2256e2..56491111a76a 100644 --- a/apps/server/src/orchestration-v2/ProviderTurnStartService.ts +++ b/apps/server/src/orchestration-v2/ProviderTurnStartService.ts @@ -42,7 +42,7 @@ import { type ProviderAdapterV2Error, type ProviderAdapterV2HistoricalContext, type ProviderAdapterV2SessionRuntime, -} from "./ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import * as IdAllocator from "./IdAllocator.ts"; import * as ProjectionStore from "./ProjectionStore.ts"; import * as ProviderSessionManager from "./ProviderSessionManager.ts"; diff --git a/apps/server/src/orchestration-v2/RunExecutionService.test.ts b/apps/server/src/orchestration-v2/RunExecutionService.test.ts index f15102962555..6ae7670d8cf4 100644 --- a/apps/server/src/orchestration-v2/RunExecutionService.test.ts +++ b/apps/server/src/orchestration-v2/RunExecutionService.test.ts @@ -50,7 +50,7 @@ import { type ProviderAdapterV2Event, type ProviderAdapterV2SessionRuntime, type ProviderAdapterV2TurnInput, -} from "./ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import * as ProjectionStore from "./ProjectionStore.ts"; import * as ProviderEventIngestor from "./ProviderEventIngestor.ts"; import * as McpAppModelContext from "../mcpApps/McpAppModelContext.ts"; diff --git a/apps/server/src/orchestration-v2/RunExecutionService.ts b/apps/server/src/orchestration-v2/RunExecutionService.ts index 5f3e36ffd66a..4d0b22f6d80d 100644 --- a/apps/server/src/orchestration-v2/RunExecutionService.ts +++ b/apps/server/src/orchestration-v2/RunExecutionService.ts @@ -46,8 +46,8 @@ import type { ProviderAdapterV2RuntimePolicy, ProviderAdapterV2SessionRuntime, ProviderAdapterV2TurnMessage, -} from "./ProviderAdapter.ts"; -import { ProviderAdapterTurnStartError } from "./ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; +import { ProviderAdapterTurnStartError } from "@t3tools/provider-core/server/adapter"; import * as ProviderEventIngestor from "./ProviderEventIngestor.ts"; import type { ProjectionStoreV2Error } from "./ProjectionStore.ts"; import { makeProviderFailure, makeProviderFailureTurnItem } from "./ProviderFailure.ts"; diff --git a/apps/server/src/orchestration-v2/RuntimePolicy.test.ts b/apps/server/src/orchestration-v2/RuntimePolicy.test.ts index b4cf0630fb8a..6719486d5377 100644 --- a/apps/server/src/orchestration-v2/RuntimePolicy.test.ts +++ b/apps/server/src/orchestration-v2/RuntimePolicy.test.ts @@ -14,7 +14,7 @@ import * as Layer from "effect/Layer"; import * as Option from "effect/Option"; import * as Stream from "effect/Stream"; -import type { ProviderInstance } from "../provider/ProviderDriver.ts"; +import type { ProviderInstance } from "@t3tools/provider-core/server/driver"; import * as ProviderInstanceRegistry from "../provider/ProviderInstanceRegistry.ts"; import * as ProjectStore from "./ProjectStore.ts"; import * as RuntimePolicy from "./RuntimePolicy.ts"; diff --git a/apps/server/src/orchestration-v2/RuntimePolicy.ts b/apps/server/src/orchestration-v2/RuntimePolicy.ts index 7387de15748f..62034ea05eb2 100644 --- a/apps/server/src/orchestration-v2/RuntimePolicy.ts +++ b/apps/server/src/orchestration-v2/RuntimePolicy.ts @@ -15,7 +15,7 @@ import * as ProviderInstanceRegistry from "../provider/ProviderInstanceRegistry. import { ProviderAdapterV2RuntimePolicy, type ProviderAdapterV2RuntimePolicy as ProviderAdapterV2RuntimePolicyType, -} from "./ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import * as ProjectStore from "./ProjectStore.ts"; /** diff --git a/apps/server/src/orchestration-v2/RuntimeRequestService.test.ts b/apps/server/src/orchestration-v2/RuntimeRequestService.test.ts index 6bad62ca2675..fd1ec5eaa2a8 100644 --- a/apps/server/src/orchestration-v2/RuntimeRequestService.test.ts +++ b/apps/server/src/orchestration-v2/RuntimeRequestService.test.ts @@ -12,7 +12,7 @@ import * as Effect from "effect/Effect"; import * as Layer from "effect/Layer"; import * as Option from "effect/Option"; -import type { ProviderAdapterV2RuntimeRequestResponseInput } from "./ProviderAdapter.ts"; +import type { ProviderAdapterV2RuntimeRequestResponseInput } from "@t3tools/provider-core/server/adapter"; import * as ProjectionStore from "./ProjectionStore.ts"; import * as ProviderSessionManager from "./ProviderSessionManager.ts"; import * as RuntimeRequestService from "./RuntimeRequestService.ts"; diff --git a/apps/server/src/orchestration-v2/SelectionRestart.integration.test.ts b/apps/server/src/orchestration-v2/SelectionRestart.integration.test.ts index 0737be290afd..a36eeede309e 100644 --- a/apps/server/src/orchestration-v2/SelectionRestart.integration.test.ts +++ b/apps/server/src/orchestration-v2/SelectionRestart.integration.test.ts @@ -33,7 +33,7 @@ import { type ProviderAdapterV2Event, type ProviderAdapterV2Shape, type ProviderAdapterV2TurnInput, -} from "./ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import * as ProviderAdapterRegistry from "./ProviderAdapterRegistry.ts"; import * as ProviderReplayHarness from "./testkit/ProviderReplayHarness.ts"; import { checkpointWorkspace } from "./testkit/ReplayFixtureWorkspace.ts"; diff --git a/apps/server/src/orchestration-v2/SteeringCompletion.integration.test.ts b/apps/server/src/orchestration-v2/SteeringCompletion.integration.test.ts index bbea47cee599..54cf85ecbae3 100644 --- a/apps/server/src/orchestration-v2/SteeringCompletion.integration.test.ts +++ b/apps/server/src/orchestration-v2/SteeringCompletion.integration.test.ts @@ -28,7 +28,7 @@ import { type ProviderAdapterV2Event, type ProviderAdapterV2Shape, type ProviderAdapterV2TurnInput, -} from "./ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import * as ProviderAdapterRegistry from "./ProviderAdapterRegistry.ts"; import * as ProviderReplayHarness from "./testkit/ProviderReplayHarness.ts"; import { checkpointWorkspace } from "./testkit/ReplayFixtureWorkspace.ts"; diff --git a/apps/server/src/orchestration-v2/ThreadFork.execution.test.ts b/apps/server/src/orchestration-v2/ThreadFork.execution.test.ts index 3fe92c6b49fc..e51f175df66f 100644 --- a/apps/server/src/orchestration-v2/ThreadFork.execution.test.ts +++ b/apps/server/src/orchestration-v2/ThreadFork.execution.test.ts @@ -21,7 +21,7 @@ import { CodexProviderCapabilitiesV2 } from "./Adapters/CodexAdapterV2.ts"; import { ClaudeProviderCapabilitiesV2 } from "./Adapters/ClaudeAdapterV2.ts"; import * as EventSink from "./EventSink.ts"; import * as Orchestrator from "./Orchestrator.ts"; -import type { ProviderAdapterV2Shape } from "./ProviderAdapter.ts"; +import type { ProviderAdapterV2Shape } from "@t3tools/provider-core/server/adapter"; import * as ProviderAdapterRegistry from "./ProviderAdapterRegistry.ts"; import * as ProviderReplayHarness from "./testkit/ProviderReplayHarness.ts"; diff --git a/apps/server/src/orchestration-v2/ThreadLaunchService.test.ts b/apps/server/src/orchestration-v2/ThreadLaunchService.test.ts index 3395c0320460..493b63f40d69 100644 --- a/apps/server/src/orchestration-v2/ThreadLaunchService.test.ts +++ b/apps/server/src/orchestration-v2/ThreadLaunchService.test.ts @@ -54,7 +54,7 @@ import { CodexProviderCapabilitiesV2 } from "./Adapters/CodexAdapterV2.ts"; import * as CommandReceiptStore from "./CommandReceiptStore.ts"; import * as EffectOutbox from "./EffectOutbox.ts"; import * as IdAllocator from "./IdAllocator.ts"; -import type { ProviderAdapterV2Shape } from "./ProviderAdapter.ts"; +import type { ProviderAdapterV2Shape } from "@t3tools/provider-core/server/adapter"; import * as ProviderAdapterRegistry from "./ProviderAdapterRegistry.ts"; import * as ThreadLaunch from "./ThreadLaunchService.ts"; import * as ThreadManagement from "./ThreadManagementService.ts"; diff --git a/apps/server/src/orchestration-v2/ThreadStop.test.ts b/apps/server/src/orchestration-v2/ThreadStop.test.ts index 60a251d019fa..cadfe860d30c 100644 --- a/apps/server/src/orchestration-v2/ThreadStop.test.ts +++ b/apps/server/src/orchestration-v2/ThreadStop.test.ts @@ -24,7 +24,7 @@ import { CodexProviderCapabilitiesV2 } from "./Adapters/CodexAdapterV2.ts"; import { OrchestrationEffectRequestV2 } from "./EffectOutbox.ts"; import * as Orchestrator from "./Orchestrator.ts"; import * as ProjectionStore from "./ProjectionStore.ts"; -import type { ProviderAdapterV2Shape } from "./ProviderAdapter.ts"; +import type { ProviderAdapterV2Shape } from "@t3tools/provider-core/server/adapter"; import * as ProviderAdapterRegistry from "./ProviderAdapterRegistry.ts"; import * as ThreadManagementService from "./ThreadManagementService.ts"; import * as ProviderReplayHarness from "./testkit/ProviderReplayHarness.ts"; diff --git a/apps/server/src/orchestration-v2/ThreadTitleRegenerationService.test.ts b/apps/server/src/orchestration-v2/ThreadTitleRegenerationService.test.ts index 837f08927164..676f080792e9 100644 --- a/apps/server/src/orchestration-v2/ThreadTitleRegenerationService.test.ts +++ b/apps/server/src/orchestration-v2/ThreadTitleRegenerationService.test.ts @@ -22,7 +22,7 @@ import * as ServerSettings from "../serverSettings.ts"; import * as TextGeneration from "../textGeneration/TextGeneration.ts"; import { CodexProviderCapabilitiesV2 } from "./Adapters/CodexAdapterV2.ts"; import * as EffectOutbox from "./EffectOutbox.ts"; -import type { ProviderAdapterV2Shape } from "./ProviderAdapter.ts"; +import type { ProviderAdapterV2Shape } from "@t3tools/provider-core/server/adapter"; import * as ProviderAdapterRegistry from "./ProviderAdapterRegistry.ts"; import * as ThreadManagement from "./ThreadManagementService.ts"; import * as ThreadTitleRegeneration from "./ThreadTitleRegenerationService.ts"; diff --git a/apps/server/src/orchestration-v2/assistantStreaming.test.ts b/apps/server/src/orchestration-v2/assistantStreaming.test.ts index 72b7cb065b1c..1b002e482b80 100644 --- a/apps/server/src/orchestration-v2/assistantStreaming.test.ts +++ b/apps/server/src/orchestration-v2/assistantStreaming.test.ts @@ -2,7 +2,7 @@ import { describe, expect, it } from "vite-plus/test"; import { MessageId, NodeId, ProviderDriverKind, ThreadId, TurnItemId } from "@t3tools/contracts"; import * as DateTime from "effect/DateTime"; import { makeAssistantStreamingFilter, splitBufferedAssistantText } from "./assistantStreaming.ts"; -import type { ProviderAdapterV2Event } from "./ProviderAdapter.ts"; +import type { ProviderAdapterV2Event } from "@t3tools/provider-core/server/adapter"; const message = (text: string, streaming = true): ProviderAdapterV2Event => ({ type: "message.updated", diff --git a/apps/server/src/orchestration-v2/assistantStreaming.ts b/apps/server/src/orchestration-v2/assistantStreaming.ts index fbac5013d635..5c8536deb34c 100644 --- a/apps/server/src/orchestration-v2/assistantStreaming.ts +++ b/apps/server/src/orchestration-v2/assistantStreaming.ts @@ -1,5 +1,5 @@ import type { ResponseStreamingMode } from "@t3tools/contracts"; -import type { ProviderAdapterV2Event } from "./ProviderAdapter.ts"; +import type { ProviderAdapterV2Event } from "@t3tools/provider-core/server/adapter"; // An opening fence may sit at any indentation, since fences inside list // items are indented past the marker. A closing fence may be indented at most diff --git a/apps/server/src/orchestration-v2/legacy/LegacyV1Cutover.integration.test.ts b/apps/server/src/orchestration-v2/legacy/LegacyV1Cutover.integration.test.ts index 65d8100d9195..084b122fc755 100644 --- a/apps/server/src/orchestration-v2/legacy/LegacyV1Cutover.integration.test.ts +++ b/apps/server/src/orchestration-v2/legacy/LegacyV1Cutover.integration.test.ts @@ -48,7 +48,7 @@ import { ProviderAdapterProtocolError, type ProviderAdapterV2Event, type ProviderAdapterV2Shape, -} from "../ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import * as ProviderAdapterRegistry from "../ProviderAdapterRegistry.ts"; import * as ProviderReplayHarness from "../testkit/ProviderReplayHarness.ts"; import { checkpointWorkspace } from "../testkit/ReplayFixtureWorkspace.ts"; diff --git a/apps/server/src/orchestration-v2/runtimeLayer.test.ts b/apps/server/src/orchestration-v2/runtimeLayer.test.ts index 79411e6fcc55..dc70a94283f3 100644 --- a/apps/server/src/orchestration-v2/runtimeLayer.test.ts +++ b/apps/server/src/orchestration-v2/runtimeLayer.test.ts @@ -50,7 +50,7 @@ import * as ProjectService from "../project/ProjectService.ts"; import * as ServerSettings from "../serverSettings.ts"; import * as McpSessionRegistryTestkit from "../mcp/McpSessionRegistry.testkit.ts"; import * as ProviderInstanceRegistry from "../provider/ProviderInstanceRegistry.ts"; -import type { ProviderInstance } from "../provider/ProviderDriver.ts"; +import type { ProviderInstance } from "@t3tools/provider-core/server/driver"; import * as VcsDriverRegistry from "../vcs/VcsDriverRegistry.ts"; import * as VcsProcess from "../vcs/VcsProcess.ts"; import * as WorkspacePaths from "../workspace/WorkspacePaths.ts"; @@ -67,7 +67,10 @@ import * as PullRequestWatchReactor from "./PullRequestWatchReactor.ts"; import { PullRequestProviderError } from "../pullRequest/PullRequestProvider.ts"; import * as PullRequestService from "../pullRequest/PullRequestService.ts"; import * as ProjectStore from "./ProjectStore.ts"; -import type { ProviderAdapterV2SessionRuntime, ProviderAdapterV2Shape } from "./ProviderAdapter.ts"; +import type { + ProviderAdapterV2SessionRuntime, + ProviderAdapterV2Shape, +} from "@t3tools/provider-core/server/adapter"; import * as ProviderSessionManager from "./ProviderSessionManager.ts"; import * as RuntimeLayer from "./runtimeLayer.ts"; import { shellStreamItemFromThreadShell } from "./ShellStream.ts"; diff --git a/apps/server/src/orchestration-v2/testkit/ProviderSwitch.integration.test.ts b/apps/server/src/orchestration-v2/testkit/ProviderSwitch.integration.test.ts index 40569de3c7b5..cbab243192b8 100644 --- a/apps/server/src/orchestration-v2/testkit/ProviderSwitch.integration.test.ts +++ b/apps/server/src/orchestration-v2/testkit/ProviderSwitch.integration.test.ts @@ -59,7 +59,7 @@ import { ProviderAdapterTurnStartError, type ProviderAdapterV2Shape, type ProviderAdapterV2SessionRuntime, -} from "../ProviderAdapter.ts"; +} from "@t3tools/provider-core/server/adapter"; import * as ProviderAdapterRegistry from "../ProviderAdapterRegistry.ts"; import { makeProviderFailure } from "../ProviderFailure.ts"; import { diff --git a/apps/server/src/provider/ClaudeProvider.ts b/apps/server/src/provider/ClaudeProvider.ts index 37945bbb79af..8ed6050f59d4 100644 --- a/apps/server/src/provider/ClaudeProvider.ts +++ b/apps/server/src/provider/ClaudeProvider.ts @@ -37,7 +37,7 @@ import { import { resolveClaudeSdkExecutablePath } from "./Drivers/ClaudeExecutable.ts"; import { makeClaudeEnvironment } from "./Drivers/ClaudeHome.ts"; import { discoverClaudeSkills } from "./Drivers/ClaudeSkills.ts"; -import type { ProviderWorkspaceSnapshot } from "./ProviderDriver.ts"; +import type { ProviderWorkspaceSnapshot } from "@t3tools/provider-core/server/driver"; import { makeUnavailableUsageLimits } from "./providerUsageLimits.ts"; import { type ClaudeScopedLimitNames, diff --git a/apps/server/src/provider/Drivers/AcpRegistryDriver.ts b/apps/server/src/provider/Drivers/AcpRegistryDriver.ts index 4d01dcf6aa86..d62a3d534184 100644 --- a/apps/server/src/provider/Drivers/AcpRegistryDriver.ts +++ b/apps/server/src/provider/Drivers/AcpRegistryDriver.ts @@ -36,7 +36,7 @@ import { defaultProviderContinuationIdentity, type ProviderDriver, type ProviderInstance, -} from "../ProviderDriver.ts"; +} from "@t3tools/provider-core/server/driver"; import { providerModelsFromSettings } from "../providerSnapshot.ts"; import { makeManualOnlyProviderMaintenanceCapabilities } from "../providerMaintenance.ts"; import { diff --git a/apps/server/src/provider/Drivers/AntigravityDriver.ts b/apps/server/src/provider/Drivers/AntigravityDriver.ts index 7a10b4a725cd..9eac9f246269 100644 --- a/apps/server/src/provider/Drivers/AntigravityDriver.ts +++ b/apps/server/src/provider/Drivers/AntigravityDriver.ts @@ -59,7 +59,7 @@ import { defaultProviderContinuationIdentity, type ProviderDriver, type ProviderInstance, -} from "../ProviderDriver.ts"; +} from "@t3tools/provider-core/server/driver"; import { mergeProviderInstanceEnvironment } from "../ProviderInstanceEnvironment.ts"; import { withInstanceIdentity } from "./instanceIdentity.ts"; import { discoverAntigravitySkills, resolveAntigravityUserHome } from "./AntigravitySkills.ts"; diff --git a/apps/server/src/provider/Drivers/ClaudeDriver.ts b/apps/server/src/provider/Drivers/ClaudeDriver.ts index 4f32cf9d2b5a..921a45e5f2de 100644 --- a/apps/server/src/provider/Drivers/ClaudeDriver.ts +++ b/apps/server/src/provider/Drivers/ClaudeDriver.ts @@ -50,7 +50,7 @@ import { defaultProviderContinuationIdentity, type ProviderDriver, type ProviderInstance, -} from "../ProviderDriver.ts"; +} from "@t3tools/provider-core/server/driver"; import { withInstanceIdentity } from "./instanceIdentity.ts"; import { mergeProviderInstanceEnvironment } from "../ProviderInstanceEnvironment.ts"; import { diff --git a/apps/server/src/provider/Drivers/CodexDriver.test.ts b/apps/server/src/provider/Drivers/CodexDriver.test.ts index f732d6d5bba5..801fcab639de 100644 --- a/apps/server/src/provider/Drivers/CodexDriver.test.ts +++ b/apps/server/src/provider/Drivers/CodexDriver.test.ts @@ -36,7 +36,7 @@ import { import { CodexDriver } from "./CodexDriver.ts"; import * as CodexAdapterV2 from "../../orchestration-v2/Adapters/CodexAdapterV2.ts"; import * as IdAllocator from "../../orchestration-v2/IdAllocator.ts"; -import { ProviderAdapterV2RuntimePolicy } from "../../orchestration-v2/ProviderAdapter.ts"; +import { ProviderAdapterV2RuntimePolicy } from "@t3tools/provider-core/server/adapter"; import * as ProviderCredentialStore from "../ProviderCredentialStore.ts"; const layerTest = ServerConfig.layerTest(process.cwd(), { diff --git a/apps/server/src/provider/Drivers/CodexDriver.ts b/apps/server/src/provider/Drivers/CodexDriver.ts index 0b958e2978a5..410fc99ea7d5 100644 --- a/apps/server/src/provider/Drivers/CodexDriver.ts +++ b/apps/server/src/provider/Drivers/CodexDriver.ts @@ -51,7 +51,7 @@ import { import { resolveCodexLaunchArgs } from "../codexLaunchArgs.ts"; import { makeManagedServerProvider } from "../makeManagedServerProvider.ts"; import * as ModelManifest from "../ModelManifest.ts"; -import type { ProviderDriver, ProviderInstance } from "../ProviderDriver.ts"; +import type { ProviderDriver, ProviderInstance } from "@t3tools/provider-core/server/driver"; import { withInstanceIdentity } from "./instanceIdentity.ts"; import { mergeProviderInstanceEnvironment } from "../ProviderInstanceEnvironment.ts"; import { diff --git a/apps/server/src/provider/Drivers/CodexManagedProvider.ts b/apps/server/src/provider/Drivers/CodexManagedProvider.ts index b75e1edd5414..2b1d5ce0d95b 100644 --- a/apps/server/src/provider/Drivers/CodexManagedProvider.ts +++ b/apps/server/src/provider/Drivers/CodexManagedProvider.ts @@ -16,7 +16,10 @@ import { } from "../CodexProvider.ts"; import { makeManagedServerProvider } from "../makeManagedServerProvider.ts"; import { mergeProviderInstanceEnvironment } from "../ProviderInstanceEnvironment.ts"; -import { type ProviderDriverCreateInput, type ProviderInstance } from "../ProviderDriver.ts"; +import { + type ProviderDriverCreateInput, + type ProviderInstance, +} from "@t3tools/provider-core/server/driver"; import { codexContinuationIdentity } from "./CodexHomeLayout.ts"; import { withInstanceIdentity } from "./instanceIdentity.ts"; import { HttpClient } from "effect/http"; diff --git a/apps/server/src/provider/Drivers/CursorDriver.test.ts b/apps/server/src/provider/Drivers/CursorDriver.test.ts index b0f9c2ad0d4a..12b620a470a4 100644 --- a/apps/server/src/provider/Drivers/CursorDriver.test.ts +++ b/apps/server/src/provider/Drivers/CursorDriver.test.ts @@ -18,7 +18,7 @@ import * as ProviderEventLoggers from "../ProviderEventLoggers.ts"; import { CursorDriver } from "./CursorDriver.ts"; import * as CursorAgentSdk from "../../orchestration-v2/Adapters/CursorAgentSdk.ts"; import * as IdAllocator from "../../orchestration-v2/IdAllocator.ts"; -import { ProviderAdapterV2RuntimePolicy } from "../../orchestration-v2/ProviderAdapter.ts"; +import { ProviderAdapterV2RuntimePolicy } from "@t3tools/provider-core/server/adapter"; import { Cursor } from "../cursorSdk.ts"; const layerTest = ServerSecretStore.layer.pipe( diff --git a/apps/server/src/provider/Drivers/CursorDriver.ts b/apps/server/src/provider/Drivers/CursorDriver.ts index f0f55a8cb348..409685b715b2 100644 --- a/apps/server/src/provider/Drivers/CursorDriver.ts +++ b/apps/server/src/provider/Drivers/CursorDriver.ts @@ -34,7 +34,7 @@ import { defaultProviderContinuationIdentity, type ProviderDriver, type ProviderInstance, -} from "../ProviderDriver.ts"; +} from "@t3tools/provider-core/server/driver"; import { withInstanceIdentity } from "./instanceIdentity.ts"; import { mergeProviderInstanceEnvironment } from "../ProviderInstanceEnvironment.ts"; import { makeManualOnlyProviderMaintenanceCapabilities } from "../providerMaintenance.ts"; diff --git a/apps/server/src/provider/Drivers/GrokDriver.ts b/apps/server/src/provider/Drivers/GrokDriver.ts index 08ca7d5c715f..ffa1782e00eb 100644 --- a/apps/server/src/provider/Drivers/GrokDriver.ts +++ b/apps/server/src/provider/Drivers/GrokDriver.ts @@ -28,7 +28,7 @@ import { defaultProviderContinuationIdentity, type ProviderDriver, type ProviderInstance, -} from "../ProviderDriver.ts"; +} from "@t3tools/provider-core/server/driver"; import { withInstanceIdentity } from "./instanceIdentity.ts"; import { mergeProviderInstanceEnvironment } from "../ProviderInstanceEnvironment.ts"; import { discoverGrokSkills } from "./GrokSkills.ts"; diff --git a/apps/server/src/provider/Drivers/MuseDriver.ts b/apps/server/src/provider/Drivers/MuseDriver.ts index d881e34a4d92..fd7875fafe51 100644 --- a/apps/server/src/provider/Drivers/MuseDriver.ts +++ b/apps/server/src/provider/Drivers/MuseDriver.ts @@ -25,7 +25,7 @@ import { defaultProviderContinuationIdentity, type ProviderDriver, type ProviderInstance, -} from "../ProviderDriver.ts"; +} from "@t3tools/provider-core/server/driver"; import { mergeProviderInstanceEnvironment } from "../ProviderInstanceEnvironment.ts"; import { makeCachedProviderMaintenanceResolution, diff --git a/apps/server/src/provider/Drivers/OpenCodeDriver.ts b/apps/server/src/provider/Drivers/OpenCodeDriver.ts index 688ac83db424..bb4aa2ead438 100644 --- a/apps/server/src/provider/Drivers/OpenCodeDriver.ts +++ b/apps/server/src/provider/Drivers/OpenCodeDriver.ts @@ -30,7 +30,7 @@ import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts"; import * as ServerConfig from "../../config.ts"; import * as OpenCodeAdapterV2 from "../../orchestration-v2/Adapters/OpenCodeAdapterV2.ts"; import * as OpenCode2AdapterV2 from "../../orchestration-v2/Adapters/OpenCode2AdapterV2.ts"; -import type { ProviderAdapterV2Shape } from "../../orchestration-v2/ProviderAdapter.ts"; +import type { ProviderAdapterV2Shape } from "@t3tools/provider-core/server/adapter"; import * as ServerSettings from "../../serverSettings.ts"; import type { TextGeneration } from "../../textGeneration/TextGeneration.ts"; import { ProviderDriverError } from "../Errors.ts"; @@ -59,7 +59,7 @@ import { defaultProviderContinuationIdentity, type ProviderDriver, type ProviderInstance, -} from "../ProviderDriver.ts"; +} from "@t3tools/provider-core/server/driver"; import { withInstanceIdentity } from "./instanceIdentity.ts"; import { mergeProviderInstanceEnvironment } from "../ProviderInstanceEnvironment.ts"; import { diff --git a/apps/server/src/provider/Drivers/PiDriver.ts b/apps/server/src/provider/Drivers/PiDriver.ts index 9a7ec6320b7d..e631d237255e 100644 --- a/apps/server/src/provider/Drivers/PiDriver.ts +++ b/apps/server/src/provider/Drivers/PiDriver.ts @@ -34,7 +34,7 @@ import { defaultProviderContinuationIdentity, type ProviderDriver, type ProviderInstance, -} from "../ProviderDriver.ts"; +} from "@t3tools/provider-core/server/driver"; import type { ServerProviderDraft } from "../providerSnapshot.ts"; import { mergeProviderInstanceEnvironment } from "../ProviderInstanceEnvironment.ts"; import { diff --git a/apps/server/src/provider/Drivers/instanceIdentity.ts b/apps/server/src/provider/Drivers/instanceIdentity.ts index 2fbc1c4a9f08..b8e6e1cef215 100644 --- a/apps/server/src/provider/Drivers/instanceIdentity.ts +++ b/apps/server/src/provider/Drivers/instanceIdentity.ts @@ -1,6 +1,6 @@ import type { ProviderDriverKind, ServerProvider } from "@t3tools/contracts"; -import type { ProviderInstance } from "../ProviderDriver.ts"; +import type { ProviderInstance } from "@t3tools/provider-core/server/driver"; import type { ServerProviderDraft } from "../providerSnapshot.ts"; /** diff --git a/apps/server/src/provider/Errors.ts b/apps/server/src/provider/Errors.ts index 681d9784ded2..50c7d2a3133b 100644 --- a/apps/server/src/provider/Errors.ts +++ b/apps/server/src/provider/Errors.ts @@ -21,24 +21,7 @@ export class ProviderInstanceNotFoundError extends Schema.TaggedError()( - "ProviderDriverError", - { - driver: Schema.String, - instanceId: Schema.String, - detail: Schema.String, - cause: Schema.optional(Schema.Defect()), - }, -) { - override get message(): string { - return `Provider driver '${this.driver}' failed to create instance '${this.instanceId}': ${this.detail}`; - } -} +export { ProviderDriverError } from "@t3tools/provider-core/server/errors"; /** * ProviderWorkspaceMissingError - The session's working directory no longer diff --git a/apps/server/src/provider/ProviderAuthService.test.ts b/apps/server/src/provider/ProviderAuthService.test.ts index 46d27902b461..82a7c8dd288b 100644 --- a/apps/server/src/provider/ProviderAuthService.test.ts +++ b/apps/server/src/provider/ProviderAuthService.test.ts @@ -23,7 +23,7 @@ import * as SubscriptionRef from "effect/SubscriptionRef"; import * as ProjectionStore from "../orchestration-v2/ProjectionStore.ts"; import * as ProviderSessionManager from "../orchestration-v2/ProviderSessionManager.ts"; import { AcpProviderCapabilitiesV2 } from "../orchestration-v2/Adapters/AcpAdapterV2.ts"; -import type { ProviderInstance } from "./ProviderDriver.ts"; +import type { ProviderInstance } from "@t3tools/provider-core/server/driver"; import * as ProviderAuthService from "./ProviderAuthService.ts"; import * as ProviderInstanceRegistry from "./ProviderInstanceRegistry.ts"; diff --git a/apps/server/src/provider/ProviderAuthService.ts b/apps/server/src/provider/ProviderAuthService.ts index 9dabd57104ca..24f176dd7095 100644 --- a/apps/server/src/provider/ProviderAuthService.ts +++ b/apps/server/src/provider/ProviderAuthService.ts @@ -18,53 +18,9 @@ import * as Semaphore from "effect/Semaphore"; import * as ProviderSessionManager from "../orchestration-v2/ProviderSessionManager.ts"; import * as ProjectionStore from "../orchestration-v2/ProjectionStore.ts"; import * as ProviderInstanceRegistry from "./ProviderInstanceRegistry.ts"; +import type { ProviderAuthController } from "@t3tools/provider-core/server/auth"; -export interface ProviderAuthController { - /** Equal keys mean these instances share credentials on this environment. */ - readonly credentialBinding?: { readonly owner: "provider" | "t3"; readonly key: string }; - readonly reconnectProfile?: ( - methodId: string, - ) => Effect.Effect; - readonly importProfile?: ( - profile: ChatGptTransferredProfile, - stopSessions: Effect.Effect, - ) => Effect.Effect; - readonly adoptCredentials?: ( - update: Effect.Effect, - stopSessions: Effect.Effect, - ) => Effect.Effect; - readonly isChangingCredentials?: Effect.Effect; - readonly invalidate?: Effect.Effect; - readonly refreshMethods?: Effect.Effect; - readonly withAccess?: ( - task: Effect.Effect, - ) => Effect.Effect; - readonly start: ( - ownerSessionId: string, - stopSessions?: Effect.Effect, - methodId?: string, - returnUrl?: string, - callbackMode?: "server" | "client", - ) => Effect.Effect; - readonly complete: ( - ownerSessionId: string, - input: { readonly flowId: string; readonly callbackUrl: string }, - ) => Effect.Effect; - readonly cancel: ( - ownerSessionId: string, - flowId: string, - ) => Effect.Effect; - readonly respond?: ( - ownerSessionId: string, - input: ProviderAuthRespondInput, - ) => Effect.Effect; - /** The controller closes process admission before it stops routed sessions. */ - readonly logout: ( - stopSessions: Effect.Effect, - ) => Effect.Effect; - readonly subscribe: (ownerSessionId: string) => Stream.Stream; - readonly isLogoutPrompt?: (text: string, hasAttachments: boolean) => boolean; -} +export type { ProviderAuthController } from "@t3tools/provider-core/server/auth"; interface ProviderAuthTarget { readonly instanceId: ProviderInstanceId; diff --git a/apps/server/src/provider/ProviderInstanceRegistry.ts b/apps/server/src/provider/ProviderInstanceRegistry.ts index eecd4fc5cbec..8b0ca5d6404a 100644 --- a/apps/server/src/provider/ProviderInstanceRegistry.ts +++ b/apps/server/src/provider/ProviderInstanceRegistry.ts @@ -69,7 +69,7 @@ import * as Stream from "effect/Stream"; import { buildUnavailableProviderSnapshot } from "./unavailableProviderSnapshot.ts"; import * as ProviderInstanceRegistryMutator from "./ProviderInstanceRegistryMutator.ts"; -import type { AnyProviderDriver, ProviderInstance } from "./ProviderDriver.ts"; +import type { AnyProviderDriver, ProviderInstance } from "@t3tools/provider-core/server/driver"; export class ProviderInstanceRegistry extends Context.Service< ProviderInstanceRegistry, diff --git a/apps/server/src/provider/ProviderRegistry.test.ts b/apps/server/src/provider/ProviderRegistry.test.ts index bfbff2e3db4c..5aa0d0fc0f1a 100644 --- a/apps/server/src/provider/ProviderRegistry.test.ts +++ b/apps/server/src/provider/ProviderRegistry.test.ts @@ -57,7 +57,10 @@ import { writeProviderStatusCache, } from "./providerStatusCache.ts"; import { COMPACT_SLASH_COMMAND } from "./providerSnapshot.ts"; -import type { ProviderInstance, ProviderWorkspaceSnapshot } from "./ProviderDriver.ts"; +import type { + ProviderInstance, + ProviderWorkspaceSnapshot, +} from "@t3tools/provider-core/server/driver"; import * as ProviderInstanceRegistry from "./ProviderInstanceRegistry.ts"; import * as ProviderRegistry from "./ProviderRegistry.ts"; import { makeManualOnlyProviderMaintenanceCapabilities } from "./providerMaintenance.ts"; diff --git a/apps/server/src/provider/ProviderRegistry.ts b/apps/server/src/provider/ProviderRegistry.ts index 97b80f270e90..47117edc6629 100644 --- a/apps/server/src/provider/ProviderRegistry.ts +++ b/apps/server/src/provider/ProviderRegistry.ts @@ -62,7 +62,10 @@ import { resolveProviderStatusCachePath, writeProviderStatusCache, } from "./providerStatusCache.ts"; -import type { ProviderInstance, ProviderWorkspaceSnapshot } from "./ProviderDriver.ts"; +import type { + ProviderInstance, + ProviderWorkspaceSnapshot, +} from "@t3tools/provider-core/server/driver"; import { makeManualOnlyProviderMaintenanceCapabilities, type ProviderMaintenanceCapabilities, diff --git a/apps/server/src/provider/builtInDrivers.ts b/apps/server/src/provider/builtInDrivers.ts index 92d798945fc8..ffaf812e4c84 100644 --- a/apps/server/src/provider/builtInDrivers.ts +++ b/apps/server/src/provider/builtInDrivers.ts @@ -29,7 +29,7 @@ import { GrokDriver, type GrokDriverEnv } from "./Drivers/GrokDriver.ts"; import { OpenCodeDriver, type OpenCodeDriverEnv } from "./Drivers/OpenCodeDriver.ts"; import { MuseDriver, type MuseDriverEnv } from "./Drivers/MuseDriver.ts"; import { PiDriver, type PiDriverEnv } from "./Drivers/PiDriver.ts"; -import type { AnyProviderDriver } from "./ProviderDriver.ts"; +import type { AnyProviderDriver } from "@t3tools/provider-core/server/driver"; /** * Union of infrastructure services required to construct any built-in diff --git a/apps/server/src/provider/builtInProviderCatalog.ts b/apps/server/src/provider/builtInProviderCatalog.ts index 98336dbef0bf..115ad692ff5e 100644 --- a/apps/server/src/provider/builtInProviderCatalog.ts +++ b/apps/server/src/provider/builtInProviderCatalog.ts @@ -1,6 +1,6 @@ import type { ProviderDriverKind, ProviderInstanceId, ServerProvider } from "@t3tools/contracts"; import type * as Stream from "effect/Stream"; -import type { ServerProviderShape } from "./ServerProvider.ts"; +import type { ServerProviderShape } from "@t3tools/provider-core/server/snapshot"; export type ProviderSnapshotSource = { /** diff --git a/apps/server/src/provider/makeManagedServerProvider.ts b/apps/server/src/provider/makeManagedServerProvider.ts index 389bf83f3f78..2114d39c2c6a 100644 --- a/apps/server/src/provider/makeManagedServerProvider.ts +++ b/apps/server/src/provider/makeManagedServerProvider.ts @@ -18,7 +18,7 @@ import * as Semaphore from "effect/Semaphore"; import * as BackgroundPolicy from "../background/BackgroundPolicy.ts"; import * as ServerSettings from "../serverSettings.ts"; import { applyUsageLimitsUpdate, resolveUsageLimitsAfterProbe } from "./providerUsageLimits.ts"; -import type { ServerProviderShape } from "./ServerProvider.ts"; +import type { ServerProviderShape } from "@t3tools/provider-core/server/snapshot"; interface ProviderSnapshotState { readonly snapshot: ServerProvider; diff --git a/apps/server/src/provider/providerCompatibility.test.ts b/apps/server/src/provider/providerCompatibility.test.ts index c677e876de67..b2cfabb17f60 100644 --- a/apps/server/src/provider/providerCompatibility.test.ts +++ b/apps/server/src/provider/providerCompatibility.test.ts @@ -12,7 +12,7 @@ import * as ServerConfig from "../config.ts"; import * as ModelManifest from "./ModelManifest.ts"; import * as ProviderRegistry from "./ProviderRegistry.ts"; import * as ProviderInstanceRegistry from "./ProviderInstanceRegistry.ts"; -import type { ProviderInstance } from "./ProviderDriver.ts"; +import type { ProviderInstance } from "@t3tools/provider-core/server/driver"; import { makeManualOnlyProviderMaintenanceCapabilities } from "./providerMaintenance.ts"; import { BUILT_IN_DRIVERS } from "./builtInDrivers.ts"; import * as Schema from "effect/Schema"; diff --git a/apps/server/src/provider/providerInstallation.test.ts b/apps/server/src/provider/providerInstallation.test.ts index 61cfbf730976..d180b0e2dd99 100644 --- a/apps/server/src/provider/providerInstallation.test.ts +++ b/apps/server/src/provider/providerInstallation.test.ts @@ -15,7 +15,7 @@ import * as Stream from "effect/Stream"; import * as ServerSettings from "../serverSettings.ts"; import * as CodexInstallation from "./CodexInstallation.ts"; import * as AntigravityInstallation from "./AntigravityInstallation.ts"; -import type { ProviderInstance } from "./ProviderDriver.ts"; +import type { ProviderInstance } from "@t3tools/provider-core/server/driver"; import { makeProviderInstallation } from "./providerInstallation.ts"; import * as ProviderInstanceRegistry from "./ProviderInstanceRegistry.ts"; import * as ProviderRegistry from "./ProviderRegistry.ts"; diff --git a/apps/server/src/provider/providerMaintenance.ts b/apps/server/src/provider/providerMaintenance.ts index 5dac5153a4f6..de983c85aa65 100644 --- a/apps/server/src/provider/providerMaintenance.ts +++ b/apps/server/src/provider/providerMaintenance.ts @@ -1,3 +1,11 @@ +export type { + ProviderMaintenanceCapabilities, + ProviderMaintenanceCommandAction, +} from "@t3tools/provider-core/server/maintenance"; +import type { + ProviderMaintenanceCapabilities, + ProviderMaintenanceCommandAction, +} from "@t3tools/provider-core/server/maintenance"; import { ProviderDriverKind, type ServerProvider, @@ -56,35 +64,6 @@ const CommandLookupEnvConfig = Config.all({ const readCommandLookupEnv = CommandLookupEnvConfig.pipe(Effect.orElseSucceed(() => ({}))); -export interface ProviderMaintenanceCapabilities { - readonly provider: ProviderDriverKind; - readonly packageName: string | null; - readonly update: ProviderMaintenanceCommandAction | null; - /** - * Latest version reported by the installer that owns the executable. - * `undefined` means the installer has no channel of its own and the npm - * registry entry for `packageName` is authoritative; `null` means the - * installer was asked and did not know. - */ - readonly latestVersion?: string | null; - /** Compare native release revisions when the provider does not use plain semver. */ - readonly compareVersions?: (current: string, latest: string) => number; -} - -export interface ProviderMaintenanceCommandAction { - readonly command: string; - readonly executable: string; - readonly args: ReadonlyArray; - readonly lockKey: string; - /** - * Extra environment for the spawned updater, on top of the server's own. - * A native updater finds its install through the same variables the - * provider runs with (e.g. `CODEX_HOME`), so an instance with a custom home - * must update that home and not the default one. - */ - readonly env?: NodeJS.ProcessEnv; -} - /** Where the provider executable was found; every path is absolute. */ export interface ProviderMaintenanceResolutionContext { readonly binaryPath: string; diff --git a/apps/server/src/textGeneration/TextGeneration.test.ts b/apps/server/src/textGeneration/TextGeneration.test.ts index ff95b780c31d..446c9c3ee6ef 100644 --- a/apps/server/src/textGeneration/TextGeneration.test.ts +++ b/apps/server/src/textGeneration/TextGeneration.test.ts @@ -8,7 +8,7 @@ import { describe, expect } from "vite-plus/test"; import { ProviderInstanceId } from "@t3tools/contracts"; import { createModelSelection } from "@t3tools/shared/model"; -import type { ProviderInstance } from "../provider/ProviderDriver.ts"; +import type { ProviderInstance } from "@t3tools/provider-core/server/driver"; import * as ProviderInstanceRegistry from "../provider/ProviderInstanceRegistry.ts"; import * as TextGeneration from "./TextGeneration.ts"; import * as SourceControlProviderRegistry from "../sourceControl/SourceControlProviderRegistry.ts"; diff --git a/apps/server/src/textGeneration/TextGeneration.ts b/apps/server/src/textGeneration/TextGeneration.ts index f6ef94290db9..ee6f18e7b217 100644 --- a/apps/server/src/textGeneration/TextGeneration.ts +++ b/apps/server/src/textGeneration/TextGeneration.ts @@ -1,119 +1,32 @@ import * as Context from "effect/Context"; import * as Effect from "effect/Effect"; import * as Layer from "effect/Layer"; -import type { - BranchNamingOptions, - ChatAttachment, - ModelSelection, - ProviderInstanceId, -} from "@t3tools/contracts"; +import type { ProviderInstanceId } from "@t3tools/contracts"; +import type { ProviderTextGeneration } from "@t3tools/provider-core/server/textGeneration"; import { TextGenerationError } from "@t3tools/contracts"; import * as ProviderInstanceRegistry from "../provider/ProviderInstanceRegistry.ts"; -import type { ProviderInstance } from "../provider/ProviderDriver.ts"; +import type { ProviderInstance } from "@t3tools/provider-core/server/driver"; import * as SourceControlProviderRegistry from "../sourceControl/SourceControlProviderRegistry.ts"; import * as ThreadTitleLinks from "./ThreadTitleLinks.ts"; -import type { TextGenerationPolicy } from "./TextGenerationPolicy.ts"; -export interface CommitMessageGenerationInput { - cwd: string; - branch: string | null; - stagedSummary: string; - stagedPatch: string; - /** When true, the model also returns a semantic branch name for the change. */ - includeBranch?: boolean; - policy?: TextGenerationPolicy | undefined; - /** What model and provider to use for generation. */ - modelSelection: ModelSelection; -} - -export interface CommitMessageGenerationResult { - subject: string; - body: string; - /** Only present when `includeBranch` was set on the input. */ - branch?: string | undefined; -} - -export interface PrContentGenerationInput { - cwd: string; - baseBranch: string; - headBranch: string; - commitSummary: string; - diffSummary: string; - diffPatch: string; - changeRequestTemplate?: string | undefined; - policy?: TextGenerationPolicy | undefined; - /** What model and provider to use for generation. */ - modelSelection: ModelSelection; -} - -export interface PrContentGenerationResult { - title: string; - body: string; -} - -export interface BranchNameGenerationInput { - naming?: BranchNamingOptions | undefined; - cwd: string; - message: string; - attachments?: ReadonlyArray | undefined; - /** What model and provider to use for generation. */ - modelSelection: ModelSelection; -} - -export interface BranchNameGenerationResult { - branch: string; -} - -export interface ThreadTitleGenerationInput { - linkedContext?: string | undefined; - cwd: string; - message: string; - /** Present when replacing an existing title from the current thread history. */ - previousTitle?: string | undefined; - attachments?: ReadonlyArray | undefined; - /** What model and provider to use for generation. */ - modelSelection: ModelSelection; -} - -export interface ThreadTitleGenerationResult { - title: string; - needsRefinement?: boolean | undefined; -} +export type { + BranchNameGenerationInput, + BranchNameGenerationResult, + CommitMessageGenerationInput, + CommitMessageGenerationResult, + PrContentGenerationInput, + PrContentGenerationResult, + ThreadTitleGenerationInput, + ThreadTitleGenerationResult, +} from "@t3tools/provider-core/server/textGeneration"; /** * TextGeneration - Service tag for commit and change request text generation. */ -export class TextGeneration extends Context.Service< - TextGeneration, - { - /** - * Generate a commit message from staged change context. - */ - readonly generateCommitMessage: ( - input: CommitMessageGenerationInput, - ) => Effect.Effect; - - /** - * Generate change request title/body from branch and diff context. - */ - readonly generatePrContent: ( - input: PrContentGenerationInput, - ) => Effect.Effect; - - /** - * Generate a concise branch name from a user message. - */ - readonly generateBranchName: ( - input: BranchNameGenerationInput, - ) => Effect.Effect; - - /** Generate a concise thread title from a first message or thread history. */ - readonly generateThreadTitle: ( - input: ThreadTitleGenerationInput, - ) => Effect.Effect; - } ->()("t3/textGeneration/TextGeneration") {} +export class TextGeneration extends Context.Service()( + "t3/textGeneration/TextGeneration", +) {} type TextGenerationOp = | "generateCommitMessage" diff --git a/apps/server/src/textGeneration/TextGenerationPresets.ts b/apps/server/src/textGeneration/TextGenerationPresets.ts index 5fab9219080f..b53ecc543597 100644 --- a/apps/server/src/textGeneration/TextGenerationPresets.ts +++ b/apps/server/src/textGeneration/TextGenerationPresets.ts @@ -1,4 +1,4 @@ -import type { TextGenerationPolicy } from "./TextGenerationPolicy.ts"; +import type { TextGenerationPolicy } from "@t3tools/provider-core/server/textGenerationPolicy"; export const conventionalCommitsTextGenerationPolicy: TextGenerationPolicy = { kind: "conventional_commits", diff --git a/apps/server/src/textGeneration/TextGenerationPrompts.ts b/apps/server/src/textGeneration/TextGenerationPrompts.ts index 236636121095..936e43186abb 100644 --- a/apps/server/src/textGeneration/TextGenerationPrompts.ts +++ b/apps/server/src/textGeneration/TextGenerationPrompts.ts @@ -12,7 +12,7 @@ import { limitTitleMessage } from "./ThreadTitleContext.ts"; import type { BranchNamingOptions, ChatAttachment } from "@t3tools/contracts"; import { limitSection } from "./TextGenerationUtils.ts"; -import type { TextGenerationPolicy } from "./TextGenerationPolicy.ts"; +import type { TextGenerationPolicy } from "@t3tools/provider-core/server/textGenerationPolicy"; const EARLIER_CONTENT_TRUNCATION_MARKER = "[Earlier content truncated]\n\n"; diff --git a/docs/internals/adding-a-provider.md b/docs/internals/adding-a-provider.md index 3184f5a12669..8373fe83c4da 100644 --- a/docs/internals/adding-a-provider.md +++ b/docs/internals/adding-a-provider.md @@ -13,7 +13,7 @@ whether a turn runs. This page lists the decisions and evidence a new driver nee [shared ACP adapter](../../apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts), like Grok and Antigravity. Never add agent-id checks to the generic registry adapter. - **Other protocols** get a native adapter that implements - [`ProviderAdapterV2`](../../apps/server/src/orchestration-v2/ProviderAdapter.ts), like Codex, + [`ProviderAdapterV2`](../../packages/provider-core/src/server/adapter.ts), like Codex, Claude, Cursor, OpenCode, Pi, and Muse. Provider-specific behavior stays in the adapter and driver. Orchestration and clients read diff --git a/docs/internals/providers.md b/docs/internals/providers.md index 912cd3045531..ce3beefa4f55 100644 --- a/docs/internals/providers.md +++ b/docs/internals/providers.md @@ -2,7 +2,7 @@ Orchestration records intent and state without knowing which provider runs a thread. Provider protocols, account ownership, permissions, and capabilities belong at the -[adapter boundary](../../apps/server/src/orchestration-v2/ProviderAdapter.ts). Normalize there +[adapter boundary](../../packages/provider-core/src/server/adapter.ts). Normalize there instead of spreading provider checks through orchestration and clients. A driver kind identifies an integration; an instance identifies one configuration and account diff --git a/packages/provider-core/package.json b/packages/provider-core/package.json index 35b0b32568ed..355793b3269e 100644 --- a/packages/provider-core/package.json +++ b/packages/provider-core/package.json @@ -6,6 +6,42 @@ "./client": { "types": "./src/client.ts", "import": "./src/client.ts" + }, + "./server/adapter": { + "types": "./src/server/adapter.ts", + "import": "./src/server/adapter.ts" + }, + "./server/auth": { + "types": "./src/server/auth.ts", + "import": "./src/server/auth.ts" + }, + "./server/driver": { + "types": "./src/server/driver.ts", + "import": "./src/server/driver.ts" + }, + "./server/errors": { + "types": "./src/server/errors.ts", + "import": "./src/server/errors.ts" + }, + "./server/maintenance": { + "types": "./src/server/maintenance.ts", + "import": "./src/server/maintenance.ts" + }, + "./server/selectionTransition": { + "types": "./src/server/selectionTransition.ts", + "import": "./src/server/selectionTransition.ts" + }, + "./server/snapshot": { + "types": "./src/server/snapshot.ts", + "import": "./src/server/snapshot.ts" + }, + "./server/textGeneration": { + "types": "./src/server/textGeneration.ts", + "import": "./src/server/textGeneration.ts" + }, + "./server/textGenerationPolicy": { + "types": "./src/server/textGenerationPolicy.ts", + "import": "./src/server/textGenerationPolicy.ts" } }, "scripts": { @@ -17,6 +53,7 @@ "effect": "catalog:" }, "devDependencies": { + "@types/node": "catalog:", "vite-plus": "catalog:" } } diff --git a/apps/server/src/orchestration-v2/ProviderAdapter.ts b/packages/provider-core/src/server/adapter.ts similarity index 99% rename from apps/server/src/orchestration-v2/ProviderAdapter.ts rename to packages/provider-core/src/server/adapter.ts index 298bbf9a9fe1..0a882f9cf602 100644 --- a/apps/server/src/orchestration-v2/ProviderAdapter.ts +++ b/packages/provider-core/src/server/adapter.ts @@ -42,7 +42,7 @@ import type * as Stream from "effect/Stream"; import type { ProviderSelectionTransitionInput, ProviderSelectionTransitionPlan, -} from "./ProviderSelectionTransition.ts"; +} from "./selectionTransition.ts"; export const ProviderAdapterV2RuntimePolicy = Schema.Struct({ runtimeMode: RuntimeMode, @@ -641,5 +641,5 @@ export interface ProviderAdapterV2Shape { } export class ProviderAdapterV2 extends Context.Service()( - "t3/orchestration-v2/ProviderAdapter/ProviderAdapterV2", + "@t3tools/provider-core/server/adapter/ProviderAdapterV2", ) {} diff --git a/packages/provider-core/src/server/auth.ts b/packages/provider-core/src/server/auth.ts new file mode 100644 index 000000000000..9954249b6796 --- /dev/null +++ b/packages/provider-core/src/server/auth.ts @@ -0,0 +1,57 @@ +import type { + ChatGptReconnectProfile, + ChatGptTransferredProfile, + ProviderAuthRespondInput, + ProviderAuthState, + ProviderSetupError, +} from "@t3tools/contracts"; +import type * as Effect from "effect/Effect"; +import type * as Scope from "effect/Scope"; +import type * as Stream from "effect/Stream"; + +export interface ProviderAuthController { + /** Equal keys mean these instances share credentials on this environment. */ + readonly credentialBinding?: { readonly owner: "provider" | "t3"; readonly key: string }; + readonly reconnectProfile?: ( + methodId: string, + ) => Effect.Effect; + readonly importProfile?: ( + profile: ChatGptTransferredProfile, + stopSessions: Effect.Effect, + ) => Effect.Effect; + readonly adoptCredentials?: ( + update: Effect.Effect, + stopSessions: Effect.Effect, + ) => Effect.Effect; + readonly isChangingCredentials?: Effect.Effect; + readonly invalidate?: Effect.Effect; + readonly refreshMethods?: Effect.Effect; + readonly withAccess?: ( + task: Effect.Effect, + ) => Effect.Effect; + readonly start: ( + ownerSessionId: string, + stopSessions?: Effect.Effect, + methodId?: string, + returnUrl?: string, + callbackMode?: "server" | "client", + ) => Effect.Effect; + readonly complete: ( + ownerSessionId: string, + input: { readonly flowId: string; readonly callbackUrl: string }, + ) => Effect.Effect; + readonly cancel: ( + ownerSessionId: string, + flowId: string, + ) => Effect.Effect; + readonly respond?: ( + ownerSessionId: string, + input: ProviderAuthRespondInput, + ) => Effect.Effect; + /** The controller closes process admission before it stops routed sessions. */ + readonly logout: ( + stopSessions: Effect.Effect, + ) => Effect.Effect; + readonly subscribe: (ownerSessionId: string) => Stream.Stream; + readonly isLogoutPrompt?: (text: string, hasAttachments: boolean) => boolean; +} diff --git a/apps/server/src/provider/ProviderDriver.ts b/packages/provider-core/src/server/driver.ts similarity index 95% rename from apps/server/src/provider/ProviderDriver.ts rename to packages/provider-core/src/server/driver.ts index d51061731b50..656d5cee7fa4 100644 --- a/apps/server/src/provider/ProviderDriver.ts +++ b/packages/provider-core/src/server/driver.ts @@ -19,7 +19,7 @@ * ChildProcessSpawner, …) on its `create` return type; the registry * layer's R is the union of those, and the runtime layer satisfies it. * - * @module provider/ProviderDriver + * @module provider-core/server/driver */ import type { ProviderConsumeResetCreditOutcome, @@ -37,11 +37,11 @@ import type * as Effect from "effect/Effect"; import type * as Schema from "effect/Schema"; import type * as Scope from "effect/Scope"; -import type { TextGeneration } from "../textGeneration/TextGeneration.ts"; -import type { ProviderAdapterV2Shape } from "../orchestration-v2/ProviderAdapter.ts"; -import type { ProviderDriverError } from "./Errors.ts"; -import type { ProviderAuthController } from "./ProviderAuthService.ts"; -import type { ServerProviderShape } from "./ServerProvider.ts"; +import type { ProviderAdapterV2Shape } from "./adapter.ts"; +import type { ProviderAuthController } from "./auth.ts"; +import type { ProviderDriverError } from "./errors.ts"; +import type { ServerProviderShape } from "./snapshot.ts"; +import type { ProviderTextGeneration } from "./textGeneration.ts"; /** * Static metadata advertised by a driver. Used for default presentation @@ -96,7 +96,7 @@ export interface ProviderInstance { ProviderDriverError >; readonly orchestrationAdapter: ProviderAdapterV2Shape; - readonly textGeneration: TextGeneration["Service"]; + readonly textGeneration: ProviderTextGeneration; readonly auth?: ProviderAuthController; readonly acpSessionManagement?: { readonly listSessions: (input: { diff --git a/packages/provider-core/src/server/errors.ts b/packages/provider-core/src/server/errors.ts new file mode 100644 index 000000000000..5ec3fb96685c --- /dev/null +++ b/packages/provider-core/src/server/errors.ts @@ -0,0 +1,20 @@ +import * as Schema from "effect/Schema"; + +/** + * ProviderDriverError - A driver `create` call failed before producing an + * instance. Surfaced to the registry, which marks the offending entry as + * an "unavailable" shadow snapshot rather than crashing the server. + */ +export class ProviderDriverError extends Schema.TaggedError()( + "ProviderDriverError", + { + driver: Schema.String, + instanceId: Schema.String, + detail: Schema.String, + cause: Schema.optional(Schema.Defect()), + }, +) { + override get message(): string { + return `Provider driver '${this.driver}' failed to create instance '${this.instanceId}': ${this.detail}`; + } +} diff --git a/packages/provider-core/src/server/maintenance.ts b/packages/provider-core/src/server/maintenance.ts new file mode 100644 index 000000000000..62f9a2ab63a6 --- /dev/null +++ b/packages/provider-core/src/server/maintenance.ts @@ -0,0 +1,30 @@ +import type { ProviderDriverKind } from "@t3tools/contracts"; + +export interface ProviderMaintenanceCapabilities { + readonly provider: ProviderDriverKind; + readonly packageName: string | null; + readonly update: ProviderMaintenanceCommandAction | null; + /** + * Latest version reported by the installer that owns the executable. + * `undefined` means the installer has no channel of its own and the npm + * registry entry for `packageName` is authoritative; `null` means the + * installer was asked and did not know. + */ + readonly latestVersion?: string | null; + /** Compare native release revisions when the provider does not use plain semver. */ + readonly compareVersions?: (current: string, latest: string) => number; +} + +export interface ProviderMaintenanceCommandAction { + readonly command: string; + readonly executable: string; + readonly args: ReadonlyArray; + readonly lockKey: string; + /** + * Extra environment for the spawned updater, on top of the server's own. + * A native updater finds its install through the same variables the + * provider runs with (e.g. `CODEX_HOME`), so an instance with a custom home + * must update that home and not the default one. + */ + readonly env?: NodeJS.ProcessEnv; +} diff --git a/apps/server/src/orchestration-v2/ProviderSelectionTransition.ts b/packages/provider-core/src/server/selectionTransition.ts similarity index 100% rename from apps/server/src/orchestration-v2/ProviderSelectionTransition.ts rename to packages/provider-core/src/server/selectionTransition.ts diff --git a/apps/server/src/provider/ServerProvider.ts b/packages/provider-core/src/server/snapshot.ts similarity index 92% rename from apps/server/src/provider/ServerProvider.ts rename to packages/provider-core/src/server/snapshot.ts index 77c16c14ee22..a6f2a985fd57 100644 --- a/apps/server/src/provider/ServerProvider.ts +++ b/packages/provider-core/src/server/snapshot.ts @@ -1,7 +1,7 @@ import type { ProviderUsageLimitsUpdate, ServerProvider } from "@t3tools/contracts"; import type * as Effect from "effect/Effect"; import type * as Stream from "effect/Stream"; -import type { ProviderMaintenanceCapabilities } from "./providerMaintenance.ts"; +import type { ProviderMaintenanceCapabilities } from "./maintenance.ts"; export interface ServerProviderShape { /** diff --git a/packages/provider-core/src/server/textGeneration.ts b/packages/provider-core/src/server/textGeneration.ts new file mode 100644 index 000000000000..95039c2d17ff --- /dev/null +++ b/packages/provider-core/src/server/textGeneration.ts @@ -0,0 +1,104 @@ +import type { + BranchNamingOptions, + ChatAttachment, + ModelSelection, + TextGenerationError, +} from "@t3tools/contracts"; +import type * as Effect from "effect/Effect"; + +import type { TextGenerationPolicy } from "./textGenerationPolicy.ts"; + +export interface CommitMessageGenerationInput { + cwd: string; + branch: string | null; + stagedSummary: string; + stagedPatch: string; + /** When true, the model also returns a semantic branch name for the change. */ + includeBranch?: boolean; + policy?: TextGenerationPolicy | undefined; + /** What model and provider to use for generation. */ + modelSelection: ModelSelection; +} + +export interface CommitMessageGenerationResult { + subject: string; + body: string; + /** Only present when `includeBranch` was set on the input. */ + branch?: string | undefined; +} + +export interface PrContentGenerationInput { + cwd: string; + baseBranch: string; + headBranch: string; + commitSummary: string; + diffSummary: string; + diffPatch: string; + changeRequestTemplate?: string | undefined; + policy?: TextGenerationPolicy | undefined; + /** What model and provider to use for generation. */ + modelSelection: ModelSelection; +} + +export interface PrContentGenerationResult { + title: string; + body: string; +} + +export interface BranchNameGenerationInput { + naming?: BranchNamingOptions | undefined; + cwd: string; + message: string; + attachments?: ReadonlyArray | undefined; + /** What model and provider to use for generation. */ + modelSelection: ModelSelection; +} + +export interface BranchNameGenerationResult { + branch: string; +} + +export interface ThreadTitleGenerationInput { + linkedContext?: string | undefined; + cwd: string; + message: string; + /** Present when replacing an existing title from the current thread history. */ + previousTitle?: string | undefined; + attachments?: ReadonlyArray | undefined; + /** What model and provider to use for generation. */ + modelSelection: ModelSelection; +} + +export interface ThreadTitleGenerationResult { + title: string; + needsRefinement?: boolean | undefined; +} + +/** Commit, change request, branch, and title generation backed by one provider instance. */ +export interface ProviderTextGeneration { + /** + * Generate a commit message from staged change context. + */ + readonly generateCommitMessage: ( + input: CommitMessageGenerationInput, + ) => Effect.Effect; + + /** + * Generate change request title/body from branch and diff context. + */ + readonly generatePrContent: ( + input: PrContentGenerationInput, + ) => Effect.Effect; + + /** + * Generate a concise branch name from a user message. + */ + readonly generateBranchName: ( + input: BranchNameGenerationInput, + ) => Effect.Effect; + + /** Generate a concise thread title from a first message or thread history. */ + readonly generateThreadTitle: ( + input: ThreadTitleGenerationInput, + ) => Effect.Effect; +} diff --git a/apps/server/src/textGeneration/TextGenerationPolicy.ts b/packages/provider-core/src/server/textGenerationPolicy.ts similarity index 100% rename from apps/server/src/textGeneration/TextGenerationPolicy.ts rename to packages/provider-core/src/server/textGenerationPolicy.ts diff --git a/packages/provider-core/tsconfig.json b/packages/provider-core/tsconfig.json index 564a5990051f..374bac55202d 100644 --- a/packages/provider-core/tsconfig.json +++ b/packages/provider-core/tsconfig.json @@ -1,4 +1,7 @@ { "extends": "../../tsconfig.base.json", + "compilerOptions": { + "types": ["node"] + }, "include": ["src"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 50aecf1c9659..bb5c65446c13 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -594,6 +594,9 @@ importers: '@opencode/schema': specifier: 2.0.23 version: 2.0.23(patch_hash=650f1b8602789407c010861284272dcb6bd6de01ec6a75bf3c0904a0e7596d59) + '@t3tools/provider-core': + specifier: workspace:* + version: link:../../packages/provider-core diff: specifier: 8.0.3 version: 8.0.3 @@ -1065,6 +1068,9 @@ importers: specifier: 4.0.1 version: 4.0.1(patch_hash=a33cba07c41f32374c2aaa86ea4a84d3ab9a872a78c94b65e929b19f8361856f) devDependencies: + '@types/node': + specifier: 24.12.4 + version: 24.12.4 vite-plus: specifier: 1.0.0 version: 1.0.0(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)