feat: expand multi-runtime workflows for 0.10.0

GoodBuddy previously exposed Runtime capabilities, MCP assignments, plugin controls, context compaction, usage reporting, and task-completion behavior through incomplete or inconsistent paths. This release unifies managed OpenCode, Continue, and DeepSeek Harness controls; adds DSH plugin and image workflows; strengthens MCP and Runtime lifecycle bounds; fixes Windows notification activation; validates cross-architecture packages; and presents the approved bilingual four-section release notes.

The DSH plugin marketplace remains a default-off preview whose trusted third-party code runs with current-user permissions. Ask remains read-only, Execute keeps approval controls, and context compaction may use the selected model without deleting GoodBuddy chat history.

Release note: GoodBuddy 0.10.0 重点完善多 Runtime 工作流,统一 OpenCode、Continue 与 DeepSeek Harness 的能力、MCP、插件和上下文管理,并提升长对话、多会话与任务通知的连贯性。
This commit is contained in:
mesalogo
2026-08-17 12:57:12 +08:00
parent f5ee9b2198
commit cbbe30896e
50 changed files with 4077 additions and 605 deletions
@@ -15,6 +15,7 @@ import {
DEEPSEEK_HARNESS_CREDENTIAL_REF,
DEEPSEEK_HARNESS_HOST_VERSION,
DEEPSEEK_HARNESS_MAX_FRAME_BYTES,
deepSeekHarnessStartupBudget,
parseHarnessControlMessage,
type DeepSeekHarnessControlMessage as HarnessControlMessage
} from './deepseek-harness-control-protocol'
@@ -53,6 +54,11 @@ export type DeepSeekHarnessUtilityLauncherOptions = {
onExtensionStartupFailures?: (
extensionIds: readonly string[]
) => Promise<void>
/**
* Explicit hard Host-handshake deadline. Callers that also set the Runtime
* initialization timeout must leave enough additional time for startup
* failure persistence.
*/
startupTimeoutMs?: number
}
@@ -174,10 +180,9 @@ export function createDeepSeekHarnessUtilityLauncher(
}
const startupTimeoutMs =
launcherOptions.startupTimeoutMs ??
Math.min(
120_000,
10_000 + canonicalExtensionPackages.length * 5_000
)
deepSeekHarnessStartupBudget(
canonicalExtensionPackages.length
).hostTimeoutMs
let timer: ReturnType<typeof setTimeout> | undefined
let onAbort: (() => void) | undefined
try {