Merge remote-tracking branch 'origin/master' into feat/plugin-owned-settings-surface

# Conflicts:
#	packages/client/ui-input-trigger/README.i18n.yaml
#	packages/client/ui-settings-plugins/src/client/ConfigurablePluginsTab.tsx
#	packages/client/ui-settings-plugins/src/client/index.ts
#	packages/client/ui-settings-plugins/src/client/tab-store.ts
#	packages/client/ui-settings-plugins/tests/apply.client.spec.ts
#	packages/client/ui-settings-plugins/tests/section.client.spec.tsx
#	packages/client/ui-settings-plugins/tests/stores.client.spec.ts
#	packages/host/apiproxy/src/api-proxy.ts
#	packages/host/apiproxy/tests/api-proxy-config.spec.ts
This commit is contained in:
Yichen Jiang
2026-08-14 15:46:01 +08:00
3766 changed files with 58438 additions and 99720 deletions

View File

@@ -1,9 +1,9 @@
{
"name": "@deepseek-ai/dsh-client-ui-agent-preset",
"description": "Agent-preset surfaces: the default for later sessions, this session's seat, and the composition editor",
"version": "0.0.1-rc.2",
"version": "0.1.0-rc.6",
"publishConfig": {
"access": "restricted"
"access": "public"
},
"repository": {
"type": "git",
@@ -46,7 +46,7 @@
"bundle": "tsdown",
"watch": "tsdown --watch"
},
"license": "BSD-3-Clause",
"license": "MIT",
"peerDependencies": {
"@deepseek-ai/cordis": "workspace:^",
"@deepseek-ai/dsh-api-remotes": "workspace:^",

View File

@@ -100,7 +100,7 @@ export const zh: Record<AgentPresetSettingsKey, string> = {
view: '查看',
presetStandardName: '标准模式',
presetStandardDescription: '功能完整的编码 Agent,支持文件编辑、Shell、文件与网页检索、Skills、计划、目标、子代理和工作流。',
presetCodeName: '代码模式',
presetCodeName: 'PTC 模式',
presetCodeDescription: '具备标准模式的全部能力,并通过 Code Mode SDK 呈现工具,让模型用一个 TypeScript 程序组合多步操作。',
presetMinimalName: '极简模式',
presetMinimalDescription: '仅提供持久 bash 与 str_replace_editor 的双工具编码 Agent。',

View File

@@ -8,8 +8,8 @@
import { Context } from '@deepseek-ai/cordis'
import { describe, expect, it, vi } from 'vitest'
import { resolveSlotLabel } from '@deepseek-ai/dsh-client-ui-slots'
import { SlotsService } from '@deepseek-ai/dsh-client-runtime/client'
import { LocaleService } from '@deepseek-ai/dsh-client-locale/client'
import { SlotRegistry } from '@deepseek-ai/dsh-client-runtime/client'
import { LocaleRuntime } from '@deepseek-ai/dsh-client-locale/client'
import { TestRemote, usePinnedBrowserLanguages } from '@deepseek-ai/dsh-client-test-runtime'
import { apply, inject } from '@deepseek-ai/dsh-client-ui-agent-preset/client'
import { AgentPresetLabel } from '../src/client/AgentPresetLabel.tsx'
@@ -75,8 +75,8 @@ async function bench() {
// settings surface does and watch who re-reads it.
let ROSTER: typeof ROSTER_ONE | typeof ROSTER_MOVED | typeof ROSTER_AUTHORED = ROSTER_ONE
const moveDefault = (): void => { ROSTER = ROSTER_MOVED }
await ctx.plugin(SlotsService).await()
const locale = new LocaleService(ctx)
await ctx.plugin(SlotRegistry).await()
const locale = new LocaleRuntime(ctx)
ctx.provide('locale', locale)
// The plugins inject `remote`; forwarded events reach them through the
// same `$dispatch` handoff the connection sink makes.
@@ -117,10 +117,10 @@ async function bench() {
},
},
} as never)
return { ctx, slots: ctx.get('slots') as SlotsService, calls, moveDefault }
return { ctx, slots: ctx.get('slots') as SlotRegistry, calls, moveDefault }
}
function declareRoot(slots: SlotsService): () => void {
function declareRoot(slots: SlotRegistry): () => void {
return slots.register({
name: 'root',
children: {
@@ -132,7 +132,7 @@ function declareRoot(slots: SlotsService): () => void {
}
/** The conversation's own declarations, which the chip and label wait for. */
function declareConversation(slots: SlotsService): () => void {
function declareConversation(slots: SlotRegistry): () => void {
return slots.register({
name: 'conversation',
children: {

View File

@@ -2,13 +2,13 @@
import { describe, expect, it } from 'vitest'
import { Context } from '@deepseek-ai/cordis'
import InvariantService from '@deepseek-ai/dsh-invariants'
import InvariantRegistry from '@deepseek-ai/dsh-invariants'
import * as AgentPresetInvariant from '@deepseek-ai/dsh-client-ui-agent-preset/invariant'
describe('invariant companion', () => {
it('reserves package ownership with an empty installer', async () => {
const ctx = new Context()
await ctx.plugin(InvariantService, { enabled: true })
await ctx.plugin(InvariantRegistry, { enabled: true })
await expect(ctx.plugin(AgentPresetInvariant).await()).resolves.toBeDefined()
})

View File

@@ -18,7 +18,7 @@
"path": "../runtime"
},
{
"path": "../test-runtime"
"path": "../../test-support/client-runtime"
},
{
"path": "../ui-conversation"
@@ -36,7 +36,7 @@
"path": "../web-react"
},
{
"path": "../../support/invariants"
"path": "../../runtime-diagnostics/invariants"
},
{
"path": "../../api/remotes/tsconfig.client.json"