chore: prepare GoodBuddy 0.8.6
Cross-platform packages / Validate source (push) Has been cancelled
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (arm64, linux, ubuntu-24.04-arm) (push) Has been cancelled
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (arm64, macos, macos-15) (push) Has been cancelled
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (arm64, windows, windows-2025) (push) Has been cancelled
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (x64, linux, ubuntu-24.04) (push) Has been cancelled
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (x64, macos, macos-15-intel) (push) Has been cancelled
Cross-platform packages / ${{ matrix.platform }} ${{ matrix.arch }} (x64, windows, windows-2025) (push) Has been cancelled
Cross-platform packages / Publish GitHub Release (push) Has been cancelled

This commit is contained in:
lofyer
2026-08-07 13:11:45 +08:00
parent 32aba176c8
commit 2c715e5e81
40 changed files with 3079 additions and 358 deletions
+21 -10
View File
@@ -7,7 +7,10 @@ import type { AgentRuntime } from './runtime'
import { AgentRuntimeController } from './runtime-controller'
export type SelectedRuntimeResolver = {
getRuntime(selection: AgentRuntimeSelection): Promise<AgentRuntime>
getRuntime(
selection: AgentRuntimeSelection,
workspacePath?: string
): Promise<AgentRuntime>
getStatus(
selection: AgentRuntimeSelection
): Promise<AgentRuntimeStatus>
@@ -15,6 +18,7 @@ export type SelectedRuntimeResolver = {
selection: AgentRuntimeSelection
): Promise<AgentRuntimeStatus>
releaseConversation(conversationId: string): Promise<void>
reset?(): Promise<void>
}
export class SelectedRuntimeManager implements SelectedRuntimeResolver {
@@ -28,28 +32,35 @@ export class SelectedRuntimeManager implements SelectedRuntimeResolver {
constructor(
private readonly createRuntime: (
selection: AgentRuntimeSelection
selection: AgentRuntimeSelection,
workspacePath?: string
) => Promise<AgentRuntime>
) {}
async getRuntime(
selection: AgentRuntimeSelection
selection: AgentRuntimeSelection,
workspacePath?: string
): Promise<AgentRuntime> {
if (this.disposed) {
throw new Error('Agent Runtime 正在关闭')
}
const key = agentRuntimeSelectionKey(selection)
const key = JSON.stringify([
agentRuntimeSelectionKey(selection),
workspacePath ?? ''
])
const existing = this.entries.get(key)
if (existing) {
return existing
}
const operation = this.createRuntime(selection).then(async (runtime) => {
if (this.disposed || this.entries.get(key) !== operation) {
await runtime.dispose()
throw new Error('Runtime 设置已更改,请重新选择')
const operation = this.createRuntime(selection, workspacePath).then(
async (runtime) => {
if (this.disposed || this.entries.get(key) !== operation) {
await runtime.dispose()
throw new Error('Runtime 设置已更改,请重新选择')
}
return new AgentRuntimeController(runtime)
}
return new AgentRuntimeController(runtime)
})
)
this.entries.set(key, operation)
try {
return await operation