Merge remote-tracking branch 'origin/master' into worktree/fix-1463-rich-content-bridge

This commit is contained in:
Tianyi Cui
2026-08-17 13:56:17 +08:00
106 changed files with 2593 additions and 559 deletions

View File

@@ -1268,28 +1268,16 @@ export const CLIENT_SLOT_API: readonly ClientSlotEntry[] = [
},
{
key: 'settings.plugin.item',
kind: 'list',
kind: 'keyed',
scope: 'root',
summary: 'One plugin\'s card inside the plugin configuration section (see module JSDoc).',
doc: 'One plugin\'s card inside the plugin configuration section (see module JSDoc).',
registerOptions: [
{
name: 'id',
name: 'key',
requirement: 'required',
type: 'string',
doc: 'Your cell key. Use an id of your own: a fresh id is added beside the shipped entries, while reusing a shipped id puts you in THAT cell and replaces it. Owners that filter by id address you by it.',
},
{
name: 'order',
requirement: 'optional',
type: 'number',
doc: 'Position among the entries, ascending (default 0).',
},
{
name: 'label',
requirement: 'optional',
type: 'string | (() => string)',
doc: 'Display text where the owner projects one (nav rows, tabs). A thunk is re-read on every projection, so localized text follows the active locale without re-registering.',
doc: 'Your cell key: the entry renders where the owner dispatches this exact key. Registering an already-occupied key replaces that occupant.',
},
],
ownerProps: [
@@ -1300,18 +1288,18 @@ export const CLIENT_SLOT_API: readonly ClientSlotEntry[] = [
'useSessions: SnapshotSelectorHook<SessionListState>',
'useWorkspaces: SnapshotSelectorHook<import(\'./workspaces/service.ts\').WorkspaceListState>',
],
keyDomain: '',
keyDomain: 'open: any string the owner dispatches (no compile-time key set), none are taken yet',
hookContext: '',
slotInject: '',
declaredBy: 'an entry in \'settings.plugins.tab\' (client-ui-settings-plugins), so it exists while that entry is mounted',
occupants: [
'client-ui-settings-plugins BashCard id \'bash\'',
'client-ui-settings-plugins AgentLoopCard id \'agent-loop\'',
'client-ui-settings-plugins WebSearchCard id \'web-search\'',
'client-ui-settings-plugins BashCard',
'client-ui-settings-plugins AgentLoopCard',
'client-ui-settings-plugins WebSearchCard',
],
replaceRisk: 'none',
example: 'return {\n inject: [\'slots\'],\n apply(ctx) {\n ctx.slots.inject(\'settings.plugin.item\', () => ctx.slots.register(\n { name: \'settings.plugin.item\', id: \'my-entry\', order: 100, label: \'My entry\' },\n () => React.createElement(\'div\', null, \'hello\'),\n ))\n },\n}',
source: 'packages/client/ui-settings-plugins/src/client/slot-contract.ts:16',
example: 'return {\n inject: [\'slots\'],\n apply(ctx) {\n ctx.slots.inject(\'settings.plugin.item\', () => ctx.slots.register(\n { name: \'settings.plugin.item\', key: \'<one key the owner dispatches>\' },\n () => React.createElement(\'div\', null, \'hello\'),\n ))\n },\n}',
source: 'packages/client/ui-settings-plugins/src/client/slot-contract.ts:19',
},
{
key: 'settings.plugins.tab',

View File

@@ -3583,6 +3583,10 @@ export const TYPE_API: readonly TypeApiEntry[] = [
name: 'RedactedSecret',
declaration: 'export interface RedactedSecret {\n path: string[];\n set: boolean;\n}',
},
{
name: 'ReplayEnvelope',
declaration: 'export interface ReplayEnvelope {\n response: unknown;\n blocks?: readonly unknown[];\n}',
},
{
name: 'RequestContext',
declaration: 'export interface RequestContext {\n provider: string;\n model: string;\n contextWindow?: number;\n}',
@@ -4097,7 +4101,7 @@ export const TYPE_API: readonly TypeApiEntry[] = [
},
{
name: 'StreamChunk',
declaration: 'export type StreamChunk = {\n type: \'block-start\';\n index: number;\n blockType: ContentBlockType;\n} | {\n type: \'text-delta\';\n index: number;\n text: string;\n} | {\n type: \'reasoning-delta\';\n index: number;\n text: string;\n} | {\n type: \'tool-call-delta\';\n index: number;\n id: CallId;\n name?: string;\n argumentsDelta: string;\n} | {\n type: \'block-end\';\n index: number;\n block: ContentBlock;\n} | {\n type: \'usage\';\n usage: TokenUsage;\n} | {\n type: \'finish\';\n reason: FinishReason;\n replayState?: unknown;\n};',
declaration: 'export type StreamChunk = {\n type: \'block-start\';\n index: number;\n blockType: ContentBlockType;\n} | {\n type: \'text-delta\';\n index: number;\n text: string;\n} | {\n type: \'reasoning-delta\';\n index: number;\n text: string;\n} | {\n type: \'tool-call-delta\';\n index: number;\n id: CallId;\n name?: string;\n argumentsDelta: string;\n} | {\n type: \'block-end\';\n index: number;\n block: ContentBlock;\n} | {\n type: \'usage\';\n usage: TokenUsage;\n} | {\n type: \'finish\';\n reason: FinishReason;\n replayState?: ReplayEnvelope;\n};',
},
{
name: 'SubagentCapabilities',