chore: prepare GoodBuddy 0.8.2
Cross-platform packages / Validate source (push) Waiting to run
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (arm64, macos, macos-15) (push) Blocked by required conditions
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (arm64, windows, windows-2025) (push) Blocked by required conditions
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (x64, linux, ubuntu-24.04) (push) Blocked by required conditions
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (x64, macos, macos-15-intel) (push) Blocked by required conditions
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (x64, windows, windows-2025) (push) Blocked by required conditions
Cross-platform packages / Publish GitHub Release (push) Blocked by required conditions
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (arm64, linux, ubuntu-24.04-arm) (push) Blocked by required conditions

This commit is contained in:
lofyer
2026-08-06 22:47:13 +08:00
parent 8d00e6371d
commit b8fc7bc86e
114 changed files with 22916 additions and 1560 deletions
+82
View File
@@ -0,0 +1,82 @@
import { z } from 'zod'
const runtimeSelectionProfileIdSchema = z.string().uuid()
export const agentRuntimeSelectionSchema = z.discriminatedUnion(
'provider',
[
z.object({ provider: z.literal('auto') }).strict(),
z
.object({
provider: z.literal('model'),
profileId: runtimeSelectionProfileIdSchema
})
.strict(),
z
.object({
provider: z.literal('opencode'),
profileId: runtimeSelectionProfileIdSchema.optional()
})
.strict(),
z
.object({
provider: z.literal('continue'),
profileId: runtimeSelectionProfileIdSchema.optional()
})
.strict()
]
)
export type AgentRuntimeSelection = z.infer<
typeof agentRuntimeSelectionSchema
>
export type RuntimeSelectionRepairSettings = {
modelProfiles: ReadonlyArray<{ id: string }>
defaultModelProfileId: string
opencodeModelSource:
| { kind: 'platform' }
| { kind: 'profile'; profileId: string }
continueModelSource:
| { kind: 'platform' }
| { kind: 'profile'; profileId: string }
}
export function repairAgentRuntimeSelection(
selection: AgentRuntimeSelection,
settings: RuntimeSelectionRepairSettings
): AgentRuntimeSelection {
if (
!('profileId' in selection) ||
!selection.profileId ||
settings.modelProfiles.some(
(profile) => profile.id === selection.profileId
)
) {
return selection
}
if (selection.provider === 'model') {
return {
provider: 'model',
profileId: settings.defaultModelProfileId
}
}
const source =
selection.provider === 'opencode'
? settings.opencodeModelSource
: settings.continueModelSource
return {
provider: selection.provider,
...(source.kind === 'profile'
? { profileId: source.profileId }
: {})
}
}
export function agentRuntimeSelectionKey(
selection: AgentRuntimeSelection
): string {
return `${selection.provider}:${'profileId' in selection
? selection.profileId ?? 'platform'
: 'default'}`
}