feat: add persistent desktop assistant workspace
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
parent
698a15ad14
commit
6ef1795b81
@@ -1,23 +1,56 @@
|
||||
import { BigtokenAgentRuntime } from './bigtoken-runtime'
|
||||
import { ModelAgentRuntime } from './model-runtime'
|
||||
import { ContinueAgentRuntime } from './continue-runtime'
|
||||
import { DemoAgentRuntime } from './demo-runtime'
|
||||
import { OpenCodeRuntime } from './opencode-runtime'
|
||||
import type { AgentRuntime } from './runtime'
|
||||
import { UnconfiguredAgentRuntime } from './unconfigured-runtime'
|
||||
import type { ResolvedRuntimeSettings } from '../runtime-settings-store'
|
||||
import { defaultRuntimeSettings } from '../../shared/contracts'
|
||||
import type { ResolvedMcpServer } from '../capabilities/capability-service'
|
||||
import type { BundledRuntimePaths } from './bundled-runtimes'
|
||||
import type { ContinueHostLauncher } from './continue-host-adapter'
|
||||
|
||||
export type AgentCapabilityContext = {
|
||||
skillInstructions?: string
|
||||
mcpServers?: ResolvedMcpServer[]
|
||||
continueHostCacheRoot?: string
|
||||
bundledRuntimePaths?: BundledRuntimePaths
|
||||
continueHostLauncher?: ContinueHostLauncher
|
||||
}
|
||||
|
||||
export function createAgentRuntime(
|
||||
defaultWorkspace: string,
|
||||
settings?: ResolvedRuntimeSettings
|
||||
settings?: ResolvedRuntimeSettings,
|
||||
capabilities: AgentCapabilityContext = {}
|
||||
): AgentRuntime {
|
||||
const baseUrl = process.env.GOODBUDDY_OPENCODE_URL
|
||||
const embedded = process.env.GOODBUDDY_OPENCODE_EMBEDDED === 'true'
|
||||
const baseUrl =
|
||||
settings?.opencodeBaseUrl || process.env.GOODBUDDY_OPENCODE_URL
|
||||
const embedded =
|
||||
settings?.opencodeEmbedded ??
|
||||
process.env.GOODBUDDY_OPENCODE_EMBEDDED === 'true'
|
||||
const workspace = settings?.workspacePath || defaultWorkspace
|
||||
const provider = settings?.provider ?? 'auto'
|
||||
|
||||
if (provider === 'continue') {
|
||||
return new ContinueAgentRuntime({
|
||||
command: process.env.GOODBUDDY_CONTINUE_COMMAND ?? 'cn',
|
||||
defaultWorkspace
|
||||
binaryPath:
|
||||
settings?.continueBinaryPath ??
|
||||
process.env.GOODBUDDY_CONTINUE_BINARY?.trim() ??
|
||||
process.env.GOODBUDDY_CONTINUE_COMMAND?.trim() ??
|
||||
'',
|
||||
bundledBinaryPath: capabilities.bundledRuntimePaths?.continue,
|
||||
configPath:
|
||||
settings?.continueConfigPath ??
|
||||
process.env.GOODBUDDY_CONTINUE_CONFIG?.trim() ??
|
||||
'',
|
||||
mode: settings?.continueMode ?? defaultRuntimeSettings.continueMode,
|
||||
modelProfile: settings?.continueModelProfile,
|
||||
skillInstructions: capabilities.skillInstructions,
|
||||
defaultWorkspace: workspace,
|
||||
hostCacheRoot:
|
||||
capabilities.continueHostCacheRoot ??
|
||||
process.env.GOODBUDDY_CONTINUE_HOST_CACHE?.trim() ??
|
||||
'',
|
||||
launchHost: capabilities.continueHostLauncher
|
||||
})
|
||||
}
|
||||
|
||||
@@ -25,20 +58,42 @@ export function createAgentRuntime(
|
||||
return new OpenCodeRuntime({
|
||||
baseUrl,
|
||||
embedded,
|
||||
defaultWorkspace
|
||||
binaryPath:
|
||||
settings?.opencodeBinaryPath ??
|
||||
process.env.GOODBUDDY_OPENCODE_BINARY?.trim() ??
|
||||
'',
|
||||
bundledBinaryPath: capabilities.bundledRuntimePaths?.opencode,
|
||||
configPath:
|
||||
settings?.opencodeConfigPath ??
|
||||
process.env.GOODBUDDY_OPENCODE_CONFIG?.trim() ??
|
||||
'',
|
||||
modelProfile: settings?.opencodeModelProfile,
|
||||
skillInstructions: capabilities.skillInstructions,
|
||||
mcpServers: capabilities.mcpServers,
|
||||
defaultWorkspace: workspace
|
||||
})
|
||||
}
|
||||
|
||||
const bigtokenApiKey =
|
||||
settings?.apiKey ?? process.env.GOODBUDDY_BIGTOKEN_API_KEY?.trim()
|
||||
if (provider === 'bigtoken' || (provider === 'auto' && bigtokenApiKey)) {
|
||||
return new BigtokenAgentRuntime({
|
||||
apiKey: bigtokenApiKey ?? '',
|
||||
const modelApiKey =
|
||||
settings?.apiKey ||
|
||||
process.env.GOODBUDDY_MODEL_API_KEY?.trim() ||
|
||||
process.env.GOODBUDDY_BIGTOKEN_API_KEY?.trim()
|
||||
if (provider === 'model' || (provider === 'auto' && modelApiKey)) {
|
||||
return new ModelAgentRuntime({
|
||||
apiKey: modelApiKey ?? '',
|
||||
baseUrl:
|
||||
settings?.bigtokenBaseUrl ?? defaultRuntimeSettings.bigtokenBaseUrl,
|
||||
model: settings?.bigtokenModel ?? defaultRuntimeSettings.bigtokenModel
|
||||
settings?.modelBaseUrl ||
|
||||
process.env.GOODBUDDY_MODEL_BASE_URL?.trim() ||
|
||||
process.env.GOODBUDDY_BIGTOKEN_BASE_URL?.trim() ||
|
||||
defaultRuntimeSettings.modelBaseUrl,
|
||||
model:
|
||||
settings?.modelName ||
|
||||
process.env.GOODBUDDY_MODEL_NAME?.trim() ||
|
||||
process.env.GOODBUDDY_BIGTOKEN_MODEL?.trim() ||
|
||||
defaultRuntimeSettings.modelName,
|
||||
skillInstructions: capabilities.skillInstructions
|
||||
})
|
||||
}
|
||||
|
||||
return new DemoAgentRuntime()
|
||||
return new UnconfiguredAgentRuntime()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user