@deepseek-ai/dsh-cordis-client-runner 0.1.6-alpha.2 → 0.1.7-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/client.js +874 -166
- package/package.json +9 -9
package/lib/client.js
CHANGED
|
@@ -1308,22 +1308,11 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
1308
1308
|
returns: "a stable read-only source across same-id generations, with zero counts when none is live."
|
|
1309
1309
|
},
|
|
1310
1310
|
{
|
|
1311
|
-
signature: "
|
|
1312
|
-
description: "
|
|
1311
|
+
signature: "refreshProjections(sessionId: SessionId): Promise<void>",
|
|
1312
|
+
description: "Load all Session projections once per connection; retry an unsuccessful initial read.",
|
|
1313
1313
|
parameters: [{
|
|
1314
|
-
name: "
|
|
1315
|
-
description: "
|
|
1316
|
-
}, {
|
|
1317
|
-
name: "open",
|
|
1318
|
-
description: "current menu state."
|
|
1319
|
-
}]
|
|
1320
|
-
},
|
|
1321
|
-
{
|
|
1322
|
-
signature: "refreshSubagents(parentSessionId: SessionId): Promise<void>",
|
|
1323
|
-
description: "Refresh one direct-child catalog.",
|
|
1324
|
-
parameters: [{
|
|
1325
|
-
name: "parentSessionId",
|
|
1326
|
-
description: "catalog owner."
|
|
1314
|
+
name: "sessionId",
|
|
1315
|
+
description: "Session to inspect without opening its conversation."
|
|
1327
1316
|
}],
|
|
1328
1317
|
returns: "completion of the current or newly started refresh."
|
|
1329
1318
|
},
|
|
@@ -1341,10 +1330,10 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
1341
1330
|
},
|
|
1342
1331
|
{
|
|
1343
1332
|
signature: "fork(opts: { sessionId: SessionId; atSeq?: number; increaseTitle?: boolean }): Promise<SessionId>",
|
|
1344
|
-
description: "Fork a session from
|
|
1333
|
+
description: "Fork a session from an exact inclusive prefix of the source; on resolution the child is catalogued and can be explicitly retained.",
|
|
1345
1334
|
parameters: [{
|
|
1346
1335
|
name: "opts",
|
|
1347
|
-
description: "source session id, the optional
|
|
1336
|
+
description: "source session id, the optional exact inclusive boundary seq (a real event seq the caller already knows; a cut inside an open turn is balanced Host-side with synthetic closers, and omission selects the latest completed-turn prefix), and whether to increment an inherited durable title before resolving."
|
|
1348
1337
|
}],
|
|
1349
1338
|
returns: "the child session id.",
|
|
1350
1339
|
throws: ["when the fork fails, or when a requested child-title rename fails after creation."]
|
|
@@ -1516,16 +1505,17 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
1516
1505
|
name: "beforeOpen",
|
|
1517
1506
|
description: "optional synchronous preparation for the selected Session, skipped after supersession."
|
|
1518
1507
|
}],
|
|
1519
|
-
returns: "completion; a superseded request may create a Session but does not open it."
|
|
1508
|
+
returns: "completion; a superseded request may create a Session but does not open it.",
|
|
1509
|
+
throws: ["on failure; a refused creation is also shown through the Workspace notice unless a later navigation or disposal superseded the request."]
|
|
1520
1510
|
},
|
|
1521
1511
|
{
|
|
1522
1512
|
signature: "forkSession(sessionId: SessionId): Promise<void>",
|
|
1523
|
-
description: "Fork a Session
|
|
1513
|
+
description: "Fork a Session without changing the current selection.",
|
|
1524
1514
|
parameters: [{
|
|
1525
1515
|
name: "sessionId",
|
|
1526
1516
|
description: "source Session."
|
|
1527
1517
|
}],
|
|
1528
|
-
returns: "completion
|
|
1518
|
+
returns: "completion after child creation and inherited-title increment."
|
|
1529
1519
|
},
|
|
1530
1520
|
{
|
|
1531
1521
|
signature: "connectWorkspace(workspaceId: WorkspaceId): Promise<SessionId>",
|
|
@@ -1538,18 +1528,21 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
1538
1528
|
},
|
|
1539
1529
|
{
|
|
1540
1530
|
signature: "startSession(workspaceId?: WorkspaceId): void",
|
|
1541
|
-
description: "Start a New Session flow and navigate to its Session.",
|
|
1531
|
+
description: "Start a New Session flow and navigate to its Session; a creation the Host refuses is shown through the Workspace notice and leaves the selection as it was.",
|
|
1542
1532
|
parameters: [{
|
|
1543
1533
|
name: "workspaceId",
|
|
1544
1534
|
description: "explicit target; absent inherits the current or most recent Workspace."
|
|
1545
1535
|
}]
|
|
1546
1536
|
},
|
|
1547
1537
|
{
|
|
1548
|
-
signature: "archiveSession(sessionId: SessionId): Promise<void>",
|
|
1538
|
+
signature: "archiveSession(sessionId: SessionId, options?: { readonly stopActivity?: boolean }): Promise<void>",
|
|
1549
1539
|
description: "Archive a Session and clear it when it is the current selection.",
|
|
1550
1540
|
parameters: [{
|
|
1551
1541
|
name: "sessionId",
|
|
1552
1542
|
description: "Session to archive."
|
|
1543
|
+
}, {
|
|
1544
|
+
name: "options",
|
|
1545
|
+
description: "`stopActivity` asks the Host to stop the Session's running work instead of refusing."
|
|
1553
1546
|
}]
|
|
1554
1547
|
},
|
|
1555
1548
|
{
|
|
@@ -1627,12 +1620,16 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
1627
1620
|
}]
|
|
1628
1621
|
},
|
|
1629
1622
|
{
|
|
1630
|
-
signature: "archiveSession(sessionId: SessionId): Promise<void>",
|
|
1623
|
+
signature: "archiveSession(sessionId: SessionId, options?: { readonly stopActivity?: boolean }): Promise<void>",
|
|
1631
1624
|
description: "Archive a Session from Workspace grouping surfaces.",
|
|
1632
1625
|
parameters: [{
|
|
1633
1626
|
name: "sessionId",
|
|
1634
1627
|
description: "Session to archive."
|
|
1635
|
-
}
|
|
1628
|
+
}, {
|
|
1629
|
+
name: "options",
|
|
1630
|
+
description: "`stopActivity` asks the Host to stop the Session's running work instead of refusing."
|
|
1631
|
+
}],
|
|
1632
|
+
throws: ["{WorkspaceArchiveError} when the Host refuses; without `stopActivity` a Session with running work fails as `workspace/session-active`, its details naming what runs."]
|
|
1636
1633
|
},
|
|
1637
1634
|
{
|
|
1638
1635
|
signature: "unarchiveSession(sessionId: SessionId): Promise<void>",
|
|
@@ -1752,7 +1749,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
1752
1749
|
},
|
|
1753
1750
|
{
|
|
1754
1751
|
name: "ClientConnectionRpc",
|
|
1755
|
-
declaration: "export interface ClientConnectionRpc {\n call(channel: string, endpoint: string, payload: unknown, signal?: AbortSignal): Promise<ConnectionRpcResult<unknown>>;\n readonly open?: (channel: string, endpoint: string, payload: unknown, signal: AbortSignal) => AsyncIterable<unknown>;\n}"
|
|
1752
|
+
declaration: "export interface ClientConnectionRpc {\n call(channel: string, endpoint: string, payload: unknown, signal?: AbortSignal): Promise<ConnectionRpcResult<unknown>>;\n readonly open?: (channel: string, endpoint: string, payload: unknown, signal: AbortSignal, uplink?: AsyncIterable<unknown>) => AsyncIterable<unknown>;\n}"
|
|
1756
1753
|
},
|
|
1757
1754
|
{
|
|
1758
1755
|
name: "ClientRemote",
|
|
@@ -2024,7 +2021,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2024
2021
|
},
|
|
2025
2022
|
{
|
|
2026
2023
|
name: "QueueAction",
|
|
2027
|
-
declaration: "export type QueueAction = {\n readonly kind: 'edit';\n readonly content: readonly
|
|
2024
|
+
declaration: "export type QueueAction = {\n readonly kind: 'edit';\n readonly content: readonly TextBlock[];\n} | {\n readonly kind: 'remove';\n} | {\n readonly kind: 'steer';\n};"
|
|
2028
2025
|
},
|
|
2029
2026
|
{
|
|
2030
2027
|
name: "RegisterFactory",
|
|
@@ -2448,7 +2445,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2448
2445
|
occupants: ["client-ui-message-feedback MessageFeedbackActions id 'feedback'"],
|
|
2449
2446
|
replaceRisk: "none",
|
|
2450
2447
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.chat.assistant-actions', () => ctx.slots.register(\n { name: 'conversation.chat.assistant-actions', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
2451
|
-
source: "packages/client/ui-chat/src/client/contract/slots.ts:
|
|
2448
|
+
source: "packages/client/ui-chat/src/client/contract/slots.ts:271"
|
|
2452
2449
|
},
|
|
2453
2450
|
{
|
|
2454
2451
|
key: "conversation.chat.commandview",
|
|
@@ -2492,7 +2489,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2492
2489
|
occupants: [],
|
|
2493
2490
|
replaceRisk: "none",
|
|
2494
2491
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.chat.commandview', () => ctx.slots.register(\n { name: 'conversation.chat.commandview', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
2495
|
-
source: "packages/client/ui-chat/src/client/contract/slots.ts:
|
|
2492
|
+
source: "packages/client/ui-chat/src/client/contract/slots.ts:259"
|
|
2496
2493
|
},
|
|
2497
2494
|
{
|
|
2498
2495
|
key: "conversation.chat.node",
|
|
@@ -2506,7 +2503,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2506
2503
|
type: "string",
|
|
2507
2504
|
doc: "Your cell key: the entry renders where the owner dispatches this exact key. Registering an already-occupied key replaces that occupant."
|
|
2508
2505
|
}],
|
|
2509
|
-
ownerProps: ["/** Stable owner currency delivered to a keyed Chat renderer. */\nexport interface ChatNodeOwnerProps {\n cwd?: string | undefined\n /** Open the current source file of a skill referenced by a sent message. */\n openSkill: (name: string) => void\n openFile: (path: string, options?: OpenFileOptions) => void\n inspectCall: (callId: ToolCallId) => void\n forkAt: (seq: number) => void\n /**\n * Session-authorized image loader, down-threaded from the Chat view so a\n * chat-node renderer can render the attachment presentation slot directly\n * with only the durable references plus this loader, instead of receiving a\n * rendering closure.\n */\n loadImage: MessageImageLoader\n renderMessageImages: RenderMessageImages\n fileMentions: (owner: TurnTailOwnerProps) => MarkdownFileMentions | undefined\n /** Turn-process state when this Node belongs to a projected Turn. */\n turnProcess?: TurnProcessOwnerProps | undefined\n}"],
|
|
2506
|
+
ownerProps: ["/** Stable owner currency delivered to a keyed Chat renderer. */\nexport interface ChatNodeOwnerProps {\n /** Renderer-owned Node portion selected by the grouping Definition. */\n groupPart?: string\n cwd?: string | undefined\n /** Open the current source file of a skill referenced by a sent message. */\n openSkill: (name: string) => void\n openFile: (path: string, options?: OpenFileOptions) => void\n inspectCall: ((callId: ToolCallId) => void) | undefined\n forkAt: (seq: number) => void\n /**\n * Session-authorized image loader, down-threaded from the Chat view so a\n * chat-node renderer can render the attachment presentation slot directly\n * with only the durable references plus this loader, instead of receiving a\n * rendering closure.\n */\n loadImage: MessageImageLoader\n renderMessageImages: RenderMessageImages\n fileMentions: (owner: TurnTailOwnerProps) => MarkdownFileMentions | undefined\n /** Turn-process state when this Node belongs to a projected Turn. */\n turnProcess?: TurnProcessOwnerProps | undefined\n}"],
|
|
2510
2507
|
ownerPropsReferences: [
|
|
2511
2508
|
"MarkdownFileMentions",
|
|
2512
2509
|
"MessageImageLoader",
|
|
@@ -2532,14 +2529,15 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2532
2529
|
"useProjection: UseProjection",
|
|
2533
2530
|
"useTrajectory: UseTrajectory"
|
|
2534
2531
|
],
|
|
2535
|
-
keyDomain: "fixed by the owner's key table { [Kind in ChatNodeKind]: { node: ChatNode<Kind> } }, already taken: assistant-step, command, command-input, compaction, context, manual-compaction, model-retry, steering, system-prompt, tool-call, turn-error, turn-max-tokens, turn-process, turn-tail, unknown, user, workflow-run",
|
|
2536
|
-
hookContext: "
|
|
2537
|
-
slotInject: "
|
|
2532
|
+
keyDomain: "fixed by the owner's key table { [Kind in ChatNodeKind]: { node: ChatNode<Kind> } }, already taken: assistant-step, command, command-input, compaction, context, manual-compaction, model-retry, steering, system-prompt, tool-call, turn-error, turn-max-tokens, turn-process, turn-tail, turn-trigger, unknown, user, workflow-run",
|
|
2533
|
+
hookContext: "ChatNodeHookContext",
|
|
2534
|
+
slotInject: "ChatNodeInjected",
|
|
2538
2535
|
declaredBy: "an entry in 'conversation.view' (client-ui-chat), so it exists while that entry is mounted",
|
|
2539
2536
|
occupants: [
|
|
2540
2537
|
"client-ui-chat UserMessageNodeView key 'user'",
|
|
2541
2538
|
"client-ui-chat UserMessageNodeView key 'steering'",
|
|
2542
2539
|
"client-ui-chat ContextMessageNodeView key 'context'",
|
|
2540
|
+
"client-ui-chat TurnTriggerNodeView key 'turn-trigger'",
|
|
2543
2541
|
"client-ui-chat SystemPromptNodeView key 'system-prompt'",
|
|
2544
2542
|
"client-ui-chat AssistantNodeView key 'assistant-step'",
|
|
2545
2543
|
"client-ui-chat CommandNodeView key 'command'",
|
|
@@ -2557,7 +2555,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2557
2555
|
],
|
|
2558
2556
|
replaceRisk: "shadows-shipped-ui",
|
|
2559
2557
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.chat.node', () => ctx.slots.register(\n { name: 'conversation.chat.node', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
2560
|
-
source: "packages/client/ui-chat/src/client/contract/slots.ts:
|
|
2558
|
+
source: "packages/client/ui-chat/src/client/contract/slots.ts:240"
|
|
2561
2559
|
},
|
|
2562
2560
|
{
|
|
2563
2561
|
key: "conversation.chat.turnTail",
|
|
@@ -2611,7 +2609,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2611
2609
|
occupants: ["client-ui-deliverables DeliverablesTail id '@deepseek-ai/dsh-client-ui-deliverables'", "client-ui-plan PlanCards"],
|
|
2612
2610
|
replaceRisk: "none",
|
|
2613
2611
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.chat.turnTail', () => ctx.slots.register(\n { name: 'conversation.chat.turnTail', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
2614
|
-
source: "packages/client/ui-chat/src/client/contract/slots.ts:
|
|
2612
|
+
source: "packages/client/ui-chat/src/client/contract/slots.ts:265"
|
|
2615
2613
|
},
|
|
2616
2614
|
{
|
|
2617
2615
|
key: "conversation.composer",
|
|
@@ -2659,7 +2657,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2659
2657
|
],
|
|
2660
2658
|
replaceRisk: "none",
|
|
2661
2659
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.composer', () => ctx.slots.register(\n { name: 'conversation.composer', select: owner => null },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
2662
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2660
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:187"
|
|
2663
2661
|
},
|
|
2664
2662
|
{
|
|
2665
2663
|
key: "conversation.composer.bar",
|
|
@@ -2692,7 +2690,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2692
2690
|
occupants: ["client-ui-conversation InputBar"],
|
|
2693
2691
|
replaceRisk: "shadows-shipped-ui",
|
|
2694
2692
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.composer.bar', () => ctx.slots.register(\n { name: 'conversation.composer.bar' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
2695
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2693
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:207"
|
|
2696
2694
|
},
|
|
2697
2695
|
{
|
|
2698
2696
|
key: "conversation.composer.dock",
|
|
@@ -2746,7 +2744,67 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2746
2744
|
occupants: ["client-ui-chat StatsPills id 'stats'"],
|
|
2747
2745
|
replaceRisk: "none",
|
|
2748
2746
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.composer.dock', () => ctx.slots.register(\n { name: 'conversation.composer.dock', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
2749
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2747
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:199"
|
|
2748
|
+
},
|
|
2749
|
+
{
|
|
2750
|
+
key: "conversation.header",
|
|
2751
|
+
kind: "single",
|
|
2752
|
+
scope: "session-maybe",
|
|
2753
|
+
summary: "Resident navigation container, including when no Session is selected.",
|
|
2754
|
+
doc: "Resident navigation container, including when no Session is selected.",
|
|
2755
|
+
registerOptions: [],
|
|
2756
|
+
ownerProps: [],
|
|
2757
|
+
ownerPropsReferences: [],
|
|
2758
|
+
standardProps: [
|
|
2759
|
+
"useResource: UseResource",
|
|
2760
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2761
|
+
"usePanelInfo: UsePanelInfo",
|
|
2762
|
+
"useSessions: UseSessions",
|
|
2763
|
+
"useSessionStatus: UseSessionStatus",
|
|
2764
|
+
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
2765
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2766
|
+
"useConversation: MaybeSnapshotSelectorHook<ConversationSnapshot>",
|
|
2767
|
+
"useInput: MaybeSnapshotSelectorHook<InputState>",
|
|
2768
|
+
"inputActions: InputActions | undefined",
|
|
2769
|
+
"useSession: MaybeSnapshotSelectorHook<SessionSnapshot>",
|
|
2770
|
+
"sessionId: SessionId | undefined",
|
|
2771
|
+
"useProjection: UseProjection"
|
|
2772
|
+
],
|
|
2773
|
+
keyDomain: "",
|
|
2774
|
+
hookContext: "",
|
|
2775
|
+
slotInject: "",
|
|
2776
|
+
declaredBy: "an entry in 'main.conversation' (client-ui-conversation), so it exists while that entry is mounted",
|
|
2777
|
+
occupants: ["client-ui-conversation ConversationHeader"],
|
|
2778
|
+
replaceRisk: "shadows-shipped-ui",
|
|
2779
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.header', () => ctx.slots.register(\n { name: 'conversation.header' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
2780
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:139"
|
|
2781
|
+
},
|
|
2782
|
+
{
|
|
2783
|
+
key: "conversation.header.leading",
|
|
2784
|
+
kind: "single",
|
|
2785
|
+
scope: "root",
|
|
2786
|
+
summary: "Global navigation before the Session title, available without a Session.",
|
|
2787
|
+
doc: "Global navigation before the Session title, available without a Session.",
|
|
2788
|
+
registerOptions: [],
|
|
2789
|
+
ownerProps: ["/** The leading seat exposes global navigation independently of a Session. */\nexport interface ConversationHeaderLeadingOwnerProps {\n /** Marker field: the occupant receives no owner-specific values. */\n children?: never\n}"],
|
|
2790
|
+
ownerPropsReferences: [],
|
|
2791
|
+
standardProps: [
|
|
2792
|
+
"useResource: UseResource",
|
|
2793
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2794
|
+
"usePanelInfo: UsePanelInfo",
|
|
2795
|
+
"useSessions: UseSessions",
|
|
2796
|
+
"useSessionStatus: UseSessionStatus",
|
|
2797
|
+
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
2798
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>"
|
|
2799
|
+
],
|
|
2800
|
+
keyDomain: "",
|
|
2801
|
+
hookContext: "",
|
|
2802
|
+
slotInject: "",
|
|
2803
|
+
declaredBy: "an entry in 'conversation.header' (client-ui-conversation), so it exists while that entry is mounted",
|
|
2804
|
+
occupants: [],
|
|
2805
|
+
replaceRisk: "none",
|
|
2806
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.header.leading', () => ctx.slots.register(\n { name: 'conversation.header.leading' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
2807
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:168"
|
|
2750
2808
|
},
|
|
2751
2809
|
{
|
|
2752
2810
|
key: "conversation.hero.agentPreset",
|
|
@@ -2779,7 +2837,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2779
2837
|
occupants: ["client-ui-agent-preset AgentPresetSeat"],
|
|
2780
2838
|
replaceRisk: "shadows-shipped-ui",
|
|
2781
2839
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.hero.agentPreset', () => ctx.slots.register(\n { name: 'conversation.hero.agentPreset' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
2782
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2840
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:193"
|
|
2783
2841
|
},
|
|
2784
2842
|
{
|
|
2785
2843
|
key: "conversation.hero.brand.mark",
|
|
@@ -2806,7 +2864,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2806
2864
|
occupants: [],
|
|
2807
2865
|
replaceRisk: "none",
|
|
2808
2866
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.hero.brand.mark', () => ctx.slots.register(\n { name: 'conversation.hero.brand.mark' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
2809
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2867
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:191"
|
|
2810
2868
|
},
|
|
2811
2869
|
{
|
|
2812
2870
|
key: "conversation.hero.workspace",
|
|
@@ -2833,7 +2891,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2833
2891
|
occupants: ["client-ui-workspace WorkspacePicker"],
|
|
2834
2892
|
replaceRisk: "shadows-shipped-ui",
|
|
2835
2893
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.hero.workspace', () => ctx.slots.register(\n { name: 'conversation.hero.workspace' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
2836
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2894
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:189"
|
|
2837
2895
|
},
|
|
2838
2896
|
{
|
|
2839
2897
|
key: "conversation.hero.workspace.directoryFlow",
|
|
@@ -2860,7 +2918,42 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2860
2918
|
occupants: ["client-ui-directory-picker-browse BrowseDirectoryFlow", "client-ui-directory-picker-native NativeDirectoryFlow"],
|
|
2861
2919
|
replaceRisk: "shadows-shipped-ui",
|
|
2862
2920
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.hero.workspace.directoryFlow', () => ctx.slots.register(\n { name: 'conversation.hero.workspace.directoryFlow' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
2863
|
-
source: "packages/client/ui-workspace/src/client/contract/slots.ts:
|
|
2921
|
+
source: "packages/client/ui-workspace/src/client/contract/slots.ts:99"
|
|
2922
|
+
},
|
|
2923
|
+
{
|
|
2924
|
+
key: "conversation.input.activity",
|
|
2925
|
+
kind: "single",
|
|
2926
|
+
scope: "session",
|
|
2927
|
+
summary: "Compact action after the model selector; it can expand across the toolbar while retaining the editor and submit action.",
|
|
2928
|
+
doc: "Compact action after the model selector; it can expand across the toolbar while retaining the editor and submit action.",
|
|
2929
|
+
registerOptions: [],
|
|
2930
|
+
ownerProps: ["/** A toolbar activity hides ordinary accessory controls while expanded; its occupant must release expansion on unmount. */\nexport interface InputActivityOwnerProps extends InputControlOwnerProps {\n /** @param active - whether the occupant needs the toolbar width before the submit action. */\n onActiveChange: (active: boolean) => void\n}"],
|
|
2931
|
+
ownerPropsReferences: ["InputControlOwnerProps"],
|
|
2932
|
+
standardProps: [
|
|
2933
|
+
"useResource: UseResource",
|
|
2934
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2935
|
+
"usePanelInfo: UsePanelInfo",
|
|
2936
|
+
"useSessions: UseSessions",
|
|
2937
|
+
"useSessionStatus: UseSessionStatus",
|
|
2938
|
+
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
2939
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2940
|
+
"useChat: UseChat",
|
|
2941
|
+
"useConversation: UseConversation",
|
|
2942
|
+
"useInput: SnapshotSelectorHook<InputState>",
|
|
2943
|
+
"inputActions: InputActions",
|
|
2944
|
+
"useSession: SessionSnapshotSelector",
|
|
2945
|
+
"sessionId: SessionId",
|
|
2946
|
+
"useProjection: UseProjection",
|
|
2947
|
+
"useTrajectory: UseTrajectory"
|
|
2948
|
+
],
|
|
2949
|
+
keyDomain: "",
|
|
2950
|
+
hookContext: "",
|
|
2951
|
+
slotInject: "",
|
|
2952
|
+
declaredBy: "an entry in 'conversation.composer.bar' (client-ui-conversation), so it exists while that entry is mounted",
|
|
2953
|
+
occupants: ["experimental-client-ui-voice-input VoiceInput"],
|
|
2954
|
+
replaceRisk: "shadows-shipped-ui",
|
|
2955
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.input.activity', () => ctx.slots.register(\n { name: 'conversation.input.activity' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
2956
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:205"
|
|
2864
2957
|
},
|
|
2865
2958
|
{
|
|
2866
2959
|
key: "conversation.input.attachments",
|
|
@@ -2869,7 +2962,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2869
2962
|
summary: "Optional draft-attachment rail and drop target.",
|
|
2870
2963
|
doc: "Optional draft-attachment rail and drop target.",
|
|
2871
2964
|
registerOptions: [],
|
|
2872
|
-
ownerProps: ["/** Input state handed to the optional attachment presentation plugin. */\nexport interface ComposerAttachmentsOwnerProps {\n /** Browser-owned draft attachments in input order. */\n attachments: readonly ComposerAttachment[]\n /** Whether a document-level file drop may add attachments now. */\n canAcceptDrop: boolean\n
|
|
2965
|
+
ownerProps: ["/** Input state handed to the optional attachment presentation plugin. */\nexport interface ComposerAttachmentsOwnerProps {\n /** Browser-owned draft attachments in input order. */\n attachments: readonly ComposerAttachment[]\n /** Whether a document-level file drop may add attachments now. */\n canAcceptDrop: boolean\n /**\n * Add one dropped batch through the composer's validation path.\n * @param files - dropped, pasted, or picked browser files in source order.\n * @param directories - members of `files` the drop source identified as directories.\n */\n onAddFiles: (files: readonly File[], directories?: ReadonlySet<File>) => void\n /** Remove one draft attachment through the Conversation service. */\n onRemoveAttachment: (id: DraftAttachmentId) => void\n /** Current per-draft upload states for file-kind attachments. */\n uploads: DraftFileUploads\n /** Restart one failed file upload. */\n onRetryFile: (id: DraftAttachmentId) => void\n /** Display-ready limits for the drop invitation. */\n dropLimits?: { readonly count: number; readonly size: string } | undefined\n}"],
|
|
2873
2966
|
ownerPropsReferences: [
|
|
2874
2967
|
"ComposerAttachment",
|
|
2875
2968
|
"DraftAttachmentId",
|
|
@@ -2897,7 +2990,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2897
2990
|
occupants: ["client-ui-attachment ComposerAttachments"],
|
|
2898
2991
|
replaceRisk: "shadows-shipped-ui",
|
|
2899
2992
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.input.attachments', () => ctx.slots.register(\n { name: 'conversation.input.attachments' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
2900
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2993
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:209"
|
|
2901
2994
|
},
|
|
2902
2995
|
{
|
|
2903
2996
|
key: "conversation.input.dock",
|
|
@@ -2955,7 +3048,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2955
3048
|
],
|
|
2956
3049
|
replaceRisk: "none",
|
|
2957
3050
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.input.dock', () => ctx.slots.register(\n { name: 'conversation.input.dock', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
2958
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3051
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:195"
|
|
2959
3052
|
},
|
|
2960
3053
|
{
|
|
2961
3054
|
key: "conversation.input.left",
|
|
@@ -3009,14 +3102,14 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3009
3102
|
occupants: [],
|
|
3010
3103
|
replaceRisk: "none",
|
|
3011
3104
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.input.left', () => ctx.slots.register(\n { name: 'conversation.input.left', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3012
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3105
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:201"
|
|
3013
3106
|
},
|
|
3014
3107
|
{
|
|
3015
3108
|
key: "conversation.input.model",
|
|
3016
3109
|
kind: "single",
|
|
3017
3110
|
scope: "session",
|
|
3018
3111
|
summary: "Model selector inside the composer tool row.",
|
|
3019
|
-
doc: "Model selector inside the composer tool row.",
|
|
3112
|
+
doc: "Model selector inside the composer tool row. When expanded controls cannot\nshare a line, the row sets --dsh-composer-model-text-display to none and\n--dsh-composer-model-icon-display to block for an occupant's compact display.",
|
|
3020
3113
|
registerOptions: [],
|
|
3021
3114
|
ownerProps: ["/** Owner share of the named plan, permission, and model controls. */\nexport interface InputControlOwnerProps {\n /** Whether the composer currently refuses interaction. */\n locked: boolean\n}"],
|
|
3022
3115
|
ownerPropsReferences: [],
|
|
@@ -3044,7 +3137,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3044
3137
|
occupants: ["client-ui-model-selection ModelSelect"],
|
|
3045
3138
|
replaceRisk: "shadows-shipped-ui",
|
|
3046
3139
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.input.model', () => ctx.slots.register(\n { name: 'conversation.input.model' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3047
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3140
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:223"
|
|
3048
3141
|
},
|
|
3049
3142
|
{
|
|
3050
3143
|
key: "conversation.input.overlay",
|
|
@@ -3102,7 +3195,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3102
3195
|
],
|
|
3103
3196
|
replaceRisk: "none",
|
|
3104
3197
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.input.overlay', () => ctx.slots.register(\n { name: 'conversation.input.overlay', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3105
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3198
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:197"
|
|
3106
3199
|
},
|
|
3107
3200
|
{
|
|
3108
3201
|
key: "conversation.input.permission",
|
|
@@ -3137,7 +3230,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3137
3230
|
occupants: ["client-ui-permission-presets PermissionSelect"],
|
|
3138
3231
|
replaceRisk: "shadows-shipped-ui",
|
|
3139
3232
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.input.permission', () => ctx.slots.register(\n { name: 'conversation.input.permission' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3140
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3233
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:217"
|
|
3141
3234
|
},
|
|
3142
3235
|
{
|
|
3143
3236
|
key: "conversation.input.plan",
|
|
@@ -3172,7 +3265,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3172
3265
|
occupants: ["client-ui-plan PlanChip"],
|
|
3173
3266
|
replaceRisk: "shadows-shipped-ui",
|
|
3174
3267
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.input.plan', () => ctx.slots.register(\n { name: 'conversation.input.plan' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3175
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3268
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:215"
|
|
3176
3269
|
},
|
|
3177
3270
|
{
|
|
3178
3271
|
key: "conversation.input.right",
|
|
@@ -3226,7 +3319,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3226
3319
|
occupants: [],
|
|
3227
3320
|
replaceRisk: "none",
|
|
3228
3321
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.input.right', () => ctx.slots.register(\n { name: 'conversation.input.right', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3229
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3322
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:203"
|
|
3230
3323
|
},
|
|
3231
3324
|
{
|
|
3232
3325
|
key: "conversation.message.images",
|
|
@@ -3265,7 +3358,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3265
3358
|
occupants: ["client-ui-attachment MessageImages"],
|
|
3266
3359
|
replaceRisk: "shadows-shipped-ui",
|
|
3267
3360
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.message.images', () => ctx.slots.register(\n { name: 'conversation.message.images' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3268
|
-
source: "packages/client/ui-chat/src/client/contract/slots.ts:
|
|
3361
|
+
source: "packages/client/ui-chat/src/client/contract/slots.ts:253"
|
|
3269
3362
|
},
|
|
3270
3363
|
{
|
|
3271
3364
|
key: "conversation.plan-review.actions",
|
|
@@ -3354,7 +3447,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3354
3447
|
occupants: ["client-ui-conversation ConversationSession"],
|
|
3355
3448
|
replaceRisk: "shadows-shipped-ui",
|
|
3356
3449
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.session', () => ctx.slots.register(\n { name: 'conversation.session' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3357
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3450
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:133"
|
|
3358
3451
|
},
|
|
3359
3452
|
{
|
|
3360
3453
|
key: "conversation.session.header",
|
|
@@ -3385,11 +3478,11 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3385
3478
|
keyDomain: "",
|
|
3386
3479
|
hookContext: "",
|
|
3387
3480
|
slotInject: "",
|
|
3388
|
-
declaredBy: "an entry in '
|
|
3481
|
+
declaredBy: "an entry in 'conversation.header' (client-ui-conversation), so it exists while that entry is mounted",
|
|
3389
3482
|
occupants: ["client-ui-conversation ConversationSessionHeader"],
|
|
3390
3483
|
replaceRisk: "shadows-shipped-ui",
|
|
3391
3484
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.session.header', () => ctx.slots.register(\n { name: 'conversation.session.header' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3392
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3485
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:141"
|
|
3393
3486
|
},
|
|
3394
3487
|
{
|
|
3395
3488
|
key: "conversation.session.header.actions",
|
|
@@ -3444,12 +3537,12 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3444
3537
|
"client-ui-agent-preset AgentPresetLabel id 'agent-preset'",
|
|
3445
3538
|
"client-ui-jobs JobListAction id 'job-list'",
|
|
3446
3539
|
"client-ui-schedule ScheduleCatalogAction id 'schedule-catalog'",
|
|
3447
|
-
"client-ui-
|
|
3540
|
+
"client-ui-subagent SubagentCatalogAction id 'subagent-catalog'",
|
|
3448
3541
|
"experimental-client-ui-agent-team TeamAction id 'agent-team'"
|
|
3449
3542
|
],
|
|
3450
3543
|
replaceRisk: "none",
|
|
3451
3544
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.session.header.actions', () => ctx.slots.register(\n { name: 'conversation.session.header.actions', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3452
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3545
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:156"
|
|
3453
3546
|
},
|
|
3454
3547
|
{
|
|
3455
3548
|
key: "conversation.session.header.corner",
|
|
@@ -3484,42 +3577,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3484
3577
|
occupants: ["client-ui-sidebar-right ExpandButton"],
|
|
3485
3578
|
replaceRisk: "shadows-shipped-ui",
|
|
3486
3579
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.session.header.corner', () => ctx.slots.register(\n { name: 'conversation.session.header.corner' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3487
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3488
|
-
},
|
|
3489
|
-
{
|
|
3490
|
-
key: "conversation.session.header.leading",
|
|
3491
|
-
kind: "single",
|
|
3492
|
-
scope: "session",
|
|
3493
|
-
summary: "Leading seat before the Session breadcrumbs, for window-chrome-adjacent controls (macOS desktop sidebar reopen and New Session while the sidebar is hidden).",
|
|
3494
|
-
doc: "Leading seat before the Session breadcrumbs, for window-chrome-adjacent\ncontrols (macOS desktop sidebar reopen and New Session while the sidebar\nis hidden). The seat is laid out only while its occupant renders\nsomething, and it stays mounted through the blank-session state so a\nhidden sidebar always keeps a reopen control on screen.",
|
|
3495
|
-
registerOptions: [],
|
|
3496
|
-
ownerProps: ["/** The leading seat's occupant derives its state from standard Session props. */\nexport interface ConversationHeaderLeadingOwnerProps {\n /** Marker field: the occupant receives no owner-specific values. */\n children?: never\n}"],
|
|
3497
|
-
ownerPropsReferences: [],
|
|
3498
|
-
standardProps: [
|
|
3499
|
-
"useResource: UseResource",
|
|
3500
|
-
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3501
|
-
"usePanelInfo: UsePanelInfo",
|
|
3502
|
-
"useSessions: UseSessions",
|
|
3503
|
-
"useSessionStatus: UseSessionStatus",
|
|
3504
|
-
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
3505
|
-
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3506
|
-
"useChat: UseChat",
|
|
3507
|
-
"useConversation: UseConversation",
|
|
3508
|
-
"useInput: SnapshotSelectorHook<InputState>",
|
|
3509
|
-
"inputActions: InputActions",
|
|
3510
|
-
"useSession: SessionSnapshotSelector",
|
|
3511
|
-
"sessionId: SessionId",
|
|
3512
|
-
"useProjection: UseProjection",
|
|
3513
|
-
"useTrajectory: UseTrajectory"
|
|
3514
|
-
],
|
|
3515
|
-
keyDomain: "",
|
|
3516
|
-
hookContext: "",
|
|
3517
|
-
slotInject: "",
|
|
3518
|
-
declaredBy: "an entry in 'conversation.session.header' (client-ui-conversation), so it exists while that entry is mounted",
|
|
3519
|
-
occupants: ["client-ui-sidebar HeaderLeadingControls"],
|
|
3520
|
-
replaceRisk: "shadows-shipped-ui",
|
|
3521
|
-
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.session.header.leading', () => ctx.slots.register(\n { name: 'conversation.session.header.leading' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3522
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:161"
|
|
3580
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:179"
|
|
3523
3581
|
},
|
|
3524
3582
|
{
|
|
3525
3583
|
key: "conversation.session.header.lineage",
|
|
@@ -3554,7 +3612,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3554
3612
|
occupants: ["client-ui-subagent SubagentHeaderLineage"],
|
|
3555
3613
|
replaceRisk: "shadows-shipped-ui",
|
|
3556
3614
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.session.header.lineage', () => ctx.slots.register(\n { name: 'conversation.session.header.lineage' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3557
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3615
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:150"
|
|
3558
3616
|
},
|
|
3559
3617
|
{
|
|
3560
3618
|
key: "conversation.session.header.utilities",
|
|
@@ -3608,7 +3666,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3608
3666
|
occupants: ["client-ui-open-in-app OpenInAppAction id 'open-in-app'", "session-log-export SessionLogDownloadHeaderAction id 'session-log-download'"],
|
|
3609
3667
|
replaceRisk: "none",
|
|
3610
3668
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.session.header.utilities', () => ctx.slots.register(\n { name: 'conversation.session.header.utilities', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3611
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3669
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:162"
|
|
3612
3670
|
},
|
|
3613
3671
|
{
|
|
3614
3672
|
key: "conversation.trajectory.images",
|
|
@@ -3675,7 +3733,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3675
3733
|
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."
|
|
3676
3734
|
}
|
|
3677
3735
|
],
|
|
3678
|
-
ownerProps: ["/** Conversation View entries obtain their data from registered standard hooks. */\nexport interface ConvViewOwnerProps {\n /** Focus request addressed to the selected View. */\n viewRequest: import('./views.ts').ConversationViewRequest | null\n /** Select a View and address one opaque focus identity to it. */\n openView: (view: string, focus: string) => void\n /** Acknowledge the current one-shot focus request. */\n completeViewRequest: () => void\n}"],
|
|
3736
|
+
ownerProps: ["/** Conversation View entries obtain their data from registered standard hooks. */\nexport interface ConvViewOwnerProps {\n /** Open a tool call's inspector when an inspection target is available. */\n inspectCall: ((callId: string) => void) | undefined\n /** Focus request addressed to the selected View. */\n viewRequest: import('./views.ts').ConversationViewRequest | null\n /** Select a View and address one opaque focus identity to it. */\n openView: (view: string, focus: string) => void\n /** Acknowledge the current one-shot focus request. */\n completeViewRequest: () => void\n}"],
|
|
3679
3737
|
ownerPropsReferences: ["ConversationViewRequest"],
|
|
3680
3738
|
standardProps: [
|
|
3681
3739
|
"useResource: UseResource",
|
|
@@ -3701,7 +3759,115 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3701
3759
|
occupants: ["client-ui-chat ChatView id 'chat'", "client-ui-trajectory TrajectoryView id 'trajectory'"],
|
|
3702
3760
|
replaceRisk: "none",
|
|
3703
3761
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.view', () => ctx.slots.register(\n { name: 'conversation.view', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3704
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3762
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:185"
|
|
3763
|
+
},
|
|
3764
|
+
{
|
|
3765
|
+
key: "deliverables.file.actions",
|
|
3766
|
+
kind: "list",
|
|
3767
|
+
scope: "session",
|
|
3768
|
+
summary: "Open one file through its authorized Session event coordinates.",
|
|
3769
|
+
doc: "Open one file through its authorized Session event coordinates.",
|
|
3770
|
+
registerOptions: [
|
|
3771
|
+
{
|
|
3772
|
+
name: "id",
|
|
3773
|
+
requirement: "required",
|
|
3774
|
+
type: "string",
|
|
3775
|
+
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."
|
|
3776
|
+
},
|
|
3777
|
+
{
|
|
3778
|
+
name: "order",
|
|
3779
|
+
requirement: "optional",
|
|
3780
|
+
type: "number",
|
|
3781
|
+
doc: "Position among the entries, ascending (default 0)."
|
|
3782
|
+
},
|
|
3783
|
+
{
|
|
3784
|
+
name: "label",
|
|
3785
|
+
requirement: "optional",
|
|
3786
|
+
type: "string | (() => string)",
|
|
3787
|
+
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."
|
|
3788
|
+
}
|
|
3789
|
+
],
|
|
3790
|
+
ownerProps: ["/** Native file action selected by an explicit user gesture. */\nexport type PresentedAction = 'open' | 'reveal'", "/** Failure feedback for the shared native opening control. */\nexport type PresentedOpenFailure = 'openError' | 'revealError' | null"],
|
|
3791
|
+
ownerPropsReferences: [],
|
|
3792
|
+
standardProps: [
|
|
3793
|
+
"useResource: UseResource",
|
|
3794
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3795
|
+
"usePanelInfo: UsePanelInfo",
|
|
3796
|
+
"useSessions: UseSessions",
|
|
3797
|
+
"useSessionStatus: UseSessionStatus",
|
|
3798
|
+
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
3799
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3800
|
+
"useChat: UseChat",
|
|
3801
|
+
"useConversation: UseConversation",
|
|
3802
|
+
"useInput: SnapshotSelectorHook<InputState>",
|
|
3803
|
+
"inputActions: InputActions",
|
|
3804
|
+
"useSession: SessionSnapshotSelector",
|
|
3805
|
+
"sessionId: SessionId",
|
|
3806
|
+
"useProjection: UseProjection",
|
|
3807
|
+
"useTrajectory: UseTrajectory"
|
|
3808
|
+
],
|
|
3809
|
+
keyDomain: "",
|
|
3810
|
+
hookContext: "",
|
|
3811
|
+
slotInject: "",
|
|
3812
|
+
declaredBy: "an entry in 'conversation.chat.turnTail' (client-ui-deliverables), so it exists while that entry is mounted",
|
|
3813
|
+
occupants: ["client-ui-open-in-app FileRouteAction id 'open-in-app'"],
|
|
3814
|
+
replaceRisk: "none",
|
|
3815
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('deliverables.file.actions', () => ctx.slots.register(\n { name: 'deliverables.file.actions', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3816
|
+
source: "packages/client/ui-deliverables/src/client/file-actions.ts:8"
|
|
3817
|
+
},
|
|
3818
|
+
{
|
|
3819
|
+
key: "deliverables.review.file.actions",
|
|
3820
|
+
kind: "list",
|
|
3821
|
+
scope: "session",
|
|
3822
|
+
summary: "The same file actions owned by a changed-file review tab.",
|
|
3823
|
+
doc: "The same file actions owned by a changed-file review tab.",
|
|
3824
|
+
registerOptions: [
|
|
3825
|
+
{
|
|
3826
|
+
name: "id",
|
|
3827
|
+
requirement: "required",
|
|
3828
|
+
type: "string",
|
|
3829
|
+
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."
|
|
3830
|
+
},
|
|
3831
|
+
{
|
|
3832
|
+
name: "order",
|
|
3833
|
+
requirement: "optional",
|
|
3834
|
+
type: "number",
|
|
3835
|
+
doc: "Position among the entries, ascending (default 0)."
|
|
3836
|
+
},
|
|
3837
|
+
{
|
|
3838
|
+
name: "label",
|
|
3839
|
+
requirement: "optional",
|
|
3840
|
+
type: "string | (() => string)",
|
|
3841
|
+
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."
|
|
3842
|
+
}
|
|
3843
|
+
],
|
|
3844
|
+
ownerProps: ["/** Slot contract table. Owners extend via declaration merging; entries are {@link SlotEntryDef}. */\nexport interface SlotMap {}"],
|
|
3845
|
+
ownerPropsReferences: ["SlotEntryDef"],
|
|
3846
|
+
standardProps: [
|
|
3847
|
+
"useResource: UseResource",
|
|
3848
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3849
|
+
"usePanelInfo: UsePanelInfo",
|
|
3850
|
+
"useSessions: UseSessions",
|
|
3851
|
+
"useSessionStatus: UseSessionStatus",
|
|
3852
|
+
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
3853
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3854
|
+
"useChat: UseChat",
|
|
3855
|
+
"useConversation: UseConversation",
|
|
3856
|
+
"useInput: SnapshotSelectorHook<InputState>",
|
|
3857
|
+
"inputActions: InputActions",
|
|
3858
|
+
"useSession: SessionSnapshotSelector",
|
|
3859
|
+
"sessionId: SessionId",
|
|
3860
|
+
"useProjection: UseProjection",
|
|
3861
|
+
"useTrajectory: UseTrajectory"
|
|
3862
|
+
],
|
|
3863
|
+
keyDomain: "",
|
|
3864
|
+
hookContext: "",
|
|
3865
|
+
slotInject: "",
|
|
3866
|
+
declaredBy: "an entry in 'sidebar.right.pane.tab' (client-ui-deliverables), so it exists while that entry is mounted",
|
|
3867
|
+
occupants: ["client-ui-open-in-app FileRouteAction id 'open-in-app'"],
|
|
3868
|
+
replaceRisk: "none",
|
|
3869
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('deliverables.review.file.actions', () => ctx.slots.register(\n { name: 'deliverables.review.file.actions', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3870
|
+
source: "packages/client/ui-deliverables/src/client/file-actions.ts:21"
|
|
3705
3871
|
},
|
|
3706
3872
|
{
|
|
3707
3873
|
key: "main",
|
|
@@ -3766,7 +3932,39 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3766
3932
|
occupants: ["client-ui-conversation ConversationRoot"],
|
|
3767
3933
|
replaceRisk: "shadows-shipped-ui",
|
|
3768
3934
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('main.conversation', () => ctx.slots.register(\n { name: 'main.conversation' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3769
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3935
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:131"
|
|
3936
|
+
},
|
|
3937
|
+
{
|
|
3938
|
+
key: "plugins.bundle.activation",
|
|
3939
|
+
kind: "keyed",
|
|
3940
|
+
scope: "root",
|
|
3941
|
+
summary: "Optional guidance after the user enables a bundle from the list, keyed by npm package name.",
|
|
3942
|
+
doc: "Optional guidance after the user enables a bundle from the list, keyed by npm package name.",
|
|
3943
|
+
registerOptions: [{
|
|
3944
|
+
name: "key",
|
|
3945
|
+
requirement: "required",
|
|
3946
|
+
type: "string",
|
|
3947
|
+
doc: "Your cell key: the entry renders where the owner dispatches this exact key. Registering an already-occupied key replaces that occupant."
|
|
3948
|
+
}],
|
|
3949
|
+
ownerProps: ["/** One user-requested bundle activation and navigation to its configuration page. */\nexport interface PluginActivationOwnerProps {\n readonly packageName: string\n /** Dismiss guidance for this activation. */\n readonly onDismiss: () => void\n /** Dismiss guidance and open this bundle's detail page. */\n readonly onOpenDetails: () => void\n}"],
|
|
3950
|
+
ownerPropsReferences: [],
|
|
3951
|
+
standardProps: [
|
|
3952
|
+
"useResource: UseResource",
|
|
3953
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3954
|
+
"usePanelInfo: UsePanelInfo",
|
|
3955
|
+
"useSessions: UseSessions",
|
|
3956
|
+
"useSessionStatus: UseSessionStatus",
|
|
3957
|
+
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
3958
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>"
|
|
3959
|
+
],
|
|
3960
|
+
keyDomain: "open: any string the owner dispatches (no compile-time key set), already taken: @deepseek-ai/dsh-experimental-voice-input-bundle",
|
|
3961
|
+
hookContext: "",
|
|
3962
|
+
slotInject: "",
|
|
3963
|
+
declaredBy: "an entry in 'main' (client-ui-plugin-manager), so it exists while that entry is mounted",
|
|
3964
|
+
occupants: ["experimental-client-ui-voice-input VoiceSetupPrompt key '@deepseek-ai/dsh-experimental-voice-input-bundle'"],
|
|
3965
|
+
replaceRisk: "shadows-shipped-ui",
|
|
3966
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('plugins.bundle.activation', () => ctx.slots.register(\n { name: 'plugins.bundle.activation', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3967
|
+
source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:78"
|
|
3770
3968
|
},
|
|
3771
3969
|
{
|
|
3772
3970
|
key: "plugins.bundle.config",
|
|
@@ -3780,8 +3978,8 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3780
3978
|
type: "string",
|
|
3781
3979
|
doc: "Your cell key: the entry renders where the owner dispatches this exact key. Registering an already-occupied key replaces that occupant."
|
|
3782
3980
|
}],
|
|
3783
|
-
ownerProps: ["/** The view the page asks a configuration entry for. */\nexport interface PluginConfigViewProps {\n /** `summary` renders the one-liner alone, as text or inline nodes; `page` renders the form with its save control. */\n readonly view: 'summary' | 'page'\n}"],
|
|
3784
|
-
ownerPropsReferences: [],
|
|
3981
|
+
ownerProps: ["/** The view the page asks a configuration entry for. */\nexport interface PluginConfigViewProps {\n /** `summary` renders the one-liner alone, as text or inline nodes; `page` renders the form with its save control. */\n readonly view: 'summary' | 'page'\n /** Host-owned configuration values and write actions for this page's entry. */\n readonly form?: ConfigPageForm | undefined\n}"],
|
|
3982
|
+
ownerPropsReferences: ["ConfigPageForm"],
|
|
3785
3983
|
standardProps: [
|
|
3786
3984
|
"useResource: UseResource",
|
|
3787
3985
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
@@ -3791,21 +3989,21 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3791
3989
|
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
3792
3990
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>"
|
|
3793
3991
|
],
|
|
3794
|
-
keyDomain: "open: any string the owner dispatches (no compile-time key set),
|
|
3992
|
+
keyDomain: "open: any string the owner dispatches (no compile-time key set), already taken: @deepseek-ai/dsh-experimental-voice-input-bundle",
|
|
3795
3993
|
hookContext: "",
|
|
3796
3994
|
slotInject: "",
|
|
3797
3995
|
declaredBy: "an entry in 'main' (client-ui-plugin-manager), so it exists while that entry is mounted",
|
|
3798
|
-
occupants: [],
|
|
3799
|
-
replaceRisk: "
|
|
3996
|
+
occupants: ["experimental-client-ui-voice-input VoicePreparation key '@deepseek-ai/dsh-experimental-voice-input-bundle'"],
|
|
3997
|
+
replaceRisk: "shadows-shipped-ui",
|
|
3800
3998
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('plugins.bundle.config', () => ctx.slots.register(\n { name: 'plugins.bundle.config', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3801
|
-
source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:
|
|
3999
|
+
source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:94"
|
|
3802
4000
|
},
|
|
3803
4001
|
{
|
|
3804
|
-
key: "plugins.
|
|
4002
|
+
key: "plugins.detail.actions",
|
|
3805
4003
|
kind: "list",
|
|
3806
4004
|
scope: "root",
|
|
3807
|
-
summary: "
|
|
3808
|
-
doc: "
|
|
4005
|
+
summary: "Controls at the head of a detail page, before the page's own switch and uninstall, rendered with the page's subject.",
|
|
4006
|
+
doc: "Controls at the head of a detail page, before the page's own switch and\nuninstall, rendered with the page's subject. An entry renders null for a\nsubject it has no control for.",
|
|
3809
4007
|
registerOptions: [
|
|
3810
4008
|
{
|
|
3811
4009
|
name: "id",
|
|
@@ -3826,8 +4024,8 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3826
4024
|
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."
|
|
3827
4025
|
}
|
|
3828
4026
|
],
|
|
3829
|
-
ownerProps: ["/** The
|
|
3830
|
-
ownerPropsReferences: [],
|
|
4027
|
+
ownerProps: ["/** The owner props every detail contribution is rendered with. */\nexport interface PluginDetailProps {\n /** The subject of the open page; an entry renders null for a subject it has nothing for. */\n readonly subject: PluginsSubject\n}"],
|
|
4028
|
+
ownerPropsReferences: ["PluginsSubject"],
|
|
3831
4029
|
standardProps: [
|
|
3832
4030
|
"useResource: UseResource",
|
|
3833
4031
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
@@ -3841,33 +4039,171 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3841
4039
|
hookContext: "",
|
|
3842
4040
|
slotInject: "",
|
|
3843
4041
|
declaredBy: "an entry in 'main' (client-ui-plugin-manager), so it exists while that entry is mounted",
|
|
3844
|
-
occupants: [
|
|
3845
|
-
"client-ui-settings-plugins BashCard id 'bash'",
|
|
3846
|
-
"client-ui-settings-plugins AgentLoopCard id 'agent-loop'",
|
|
3847
|
-
"client-ui-settings-plugins SubagentCard id 'subagent'",
|
|
3848
|
-
"client-ui-settings-plugins WebSearchCard id 'web-search'"
|
|
3849
|
-
],
|
|
4042
|
+
occupants: [],
|
|
3850
4043
|
replaceRisk: "none",
|
|
3851
|
-
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('plugins.
|
|
3852
|
-
source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:
|
|
4044
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('plugins.detail.actions', () => ctx.slots.register(\n { name: 'plugins.detail.actions', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4045
|
+
source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:108"
|
|
3853
4046
|
},
|
|
3854
4047
|
{
|
|
3855
|
-
key: "plugins.
|
|
3856
|
-
kind: "
|
|
4048
|
+
key: "plugins.detail.badge",
|
|
4049
|
+
kind: "list",
|
|
3857
4050
|
scope: "root",
|
|
3858
|
-
summary: "
|
|
3859
|
-
doc: "
|
|
3860
|
-
registerOptions: [
|
|
3861
|
-
|
|
3862
|
-
|
|
3863
|
-
|
|
3864
|
-
|
|
3865
|
-
|
|
3866
|
-
|
|
3867
|
-
|
|
3868
|
-
|
|
3869
|
-
|
|
3870
|
-
|
|
4051
|
+
summary: "Tags beside a detail page's title, after the version, beta, and problem tags the page draws itself, rendered with the page's subject.",
|
|
4052
|
+
doc: "Tags beside a detail page's title, after the version, beta, and problem\ntags the page draws itself, rendered with the page's subject.",
|
|
4053
|
+
registerOptions: [
|
|
4054
|
+
{
|
|
4055
|
+
name: "id",
|
|
4056
|
+
requirement: "required",
|
|
4057
|
+
type: "string",
|
|
4058
|
+
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."
|
|
4059
|
+
},
|
|
4060
|
+
{
|
|
4061
|
+
name: "order",
|
|
4062
|
+
requirement: "optional",
|
|
4063
|
+
type: "number",
|
|
4064
|
+
doc: "Position among the entries, ascending (default 0)."
|
|
4065
|
+
},
|
|
4066
|
+
{
|
|
4067
|
+
name: "label",
|
|
4068
|
+
requirement: "optional",
|
|
4069
|
+
type: "string | (() => string)",
|
|
4070
|
+
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."
|
|
4071
|
+
}
|
|
4072
|
+
],
|
|
4073
|
+
ownerProps: ["/** The owner props every detail contribution is rendered with. */\nexport interface PluginDetailProps {\n /** The subject of the open page; an entry renders null for a subject it has nothing for. */\n readonly subject: PluginsSubject\n}"],
|
|
4074
|
+
ownerPropsReferences: ["PluginsSubject"],
|
|
4075
|
+
standardProps: [
|
|
4076
|
+
"useResource: UseResource",
|
|
4077
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
4078
|
+
"usePanelInfo: UsePanelInfo",
|
|
4079
|
+
"useSessions: UseSessions",
|
|
4080
|
+
"useSessionStatus: UseSessionStatus",
|
|
4081
|
+
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
4082
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>"
|
|
4083
|
+
],
|
|
4084
|
+
keyDomain: "",
|
|
4085
|
+
hookContext: "",
|
|
4086
|
+
slotInject: "",
|
|
4087
|
+
declaredBy: "an entry in 'main' (client-ui-plugin-manager), so it exists while that entry is mounted",
|
|
4088
|
+
occupants: [],
|
|
4089
|
+
replaceRisk: "none",
|
|
4090
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('plugins.detail.badge', () => ctx.slots.register(\n { name: 'plugins.detail.badge', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4091
|
+
source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:113"
|
|
4092
|
+
},
|
|
4093
|
+
{
|
|
4094
|
+
key: "plugins.detail.section",
|
|
4095
|
+
kind: "list",
|
|
4096
|
+
scope: "root",
|
|
4097
|
+
summary: "Sections under a detail page's own content: after the rows on a bundle's page, after the configuration on a row's or an official plugin's page.",
|
|
4098
|
+
doc: "Sections under a detail page's own content: after the rows on a bundle's\npage, after the configuration on a row's or an official plugin's page.\nAn entry draws its own section chrome and renders null for a subject it\nhas nothing for.",
|
|
4099
|
+
registerOptions: [
|
|
4100
|
+
{
|
|
4101
|
+
name: "id",
|
|
4102
|
+
requirement: "required",
|
|
4103
|
+
type: "string",
|
|
4104
|
+
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."
|
|
4105
|
+
},
|
|
4106
|
+
{
|
|
4107
|
+
name: "order",
|
|
4108
|
+
requirement: "optional",
|
|
4109
|
+
type: "number",
|
|
4110
|
+
doc: "Position among the entries, ascending (default 0)."
|
|
4111
|
+
},
|
|
4112
|
+
{
|
|
4113
|
+
name: "label",
|
|
4114
|
+
requirement: "optional",
|
|
4115
|
+
type: "string | (() => string)",
|
|
4116
|
+
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."
|
|
4117
|
+
}
|
|
4118
|
+
],
|
|
4119
|
+
ownerProps: ["/** The owner props every detail contribution is rendered with. */\nexport interface PluginDetailProps {\n /** The subject of the open page; an entry renders null for a subject it has nothing for. */\n readonly subject: PluginsSubject\n}"],
|
|
4120
|
+
ownerPropsReferences: ["PluginsSubject"],
|
|
4121
|
+
standardProps: [
|
|
4122
|
+
"useResource: UseResource",
|
|
4123
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
4124
|
+
"usePanelInfo: UsePanelInfo",
|
|
4125
|
+
"useSessions: UseSessions",
|
|
4126
|
+
"useSessionStatus: UseSessionStatus",
|
|
4127
|
+
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
4128
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>"
|
|
4129
|
+
],
|
|
4130
|
+
keyDomain: "",
|
|
4131
|
+
hookContext: "",
|
|
4132
|
+
slotInject: "",
|
|
4133
|
+
declaredBy: "an entry in 'main' (client-ui-plugin-manager), so it exists while that entry is mounted",
|
|
4134
|
+
occupants: [],
|
|
4135
|
+
replaceRisk: "none",
|
|
4136
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('plugins.detail.section', () => ctx.slots.register(\n { name: 'plugins.detail.section', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4137
|
+
source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:120"
|
|
4138
|
+
},
|
|
4139
|
+
{
|
|
4140
|
+
key: "plugins.item",
|
|
4141
|
+
kind: "list",
|
|
4142
|
+
scope: "root",
|
|
4143
|
+
summary: "One official plugin the Plugins page lists in its Official group after the official bundles: `label` is the card's title and `order` its place.",
|
|
4144
|
+
doc: "One official plugin the Plugins page lists in its Official group after\nthe official bundles: `label` is the card's title and `order` its place.\nThe page renders the entry as the card's one-liner (`view: 'summary'`)\nand, once the card is opened, as the body of the plugin's own page\n(`view: 'page'`). OCCUPIED by the official settings pages, one companion\npackage per host-plane namespace; a bundle's configuration belongs in\n`plugins.bundle.config` or `plugins.row.config` instead.",
|
|
4145
|
+
registerOptions: [
|
|
4146
|
+
{
|
|
4147
|
+
name: "id",
|
|
4148
|
+
requirement: "required",
|
|
4149
|
+
type: "string",
|
|
4150
|
+
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."
|
|
4151
|
+
},
|
|
4152
|
+
{
|
|
4153
|
+
name: "order",
|
|
4154
|
+
requirement: "optional",
|
|
4155
|
+
type: "number",
|
|
4156
|
+
doc: "Position among the entries, ascending (default 0)."
|
|
4157
|
+
},
|
|
4158
|
+
{
|
|
4159
|
+
name: "label",
|
|
4160
|
+
requirement: "optional",
|
|
4161
|
+
type: "string | (() => string)",
|
|
4162
|
+
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."
|
|
4163
|
+
}
|
|
4164
|
+
],
|
|
4165
|
+
ownerProps: ["/** The view the page asks a configuration entry for. */\nexport interface PluginConfigViewProps {\n /** `summary` renders the one-liner alone, as text or inline nodes; `page` renders the form with its save control. */\n readonly view: 'summary' | 'page'\n /** Host-owned configuration values and write actions for this page's entry. */\n readonly form?: ConfigPageForm | undefined\n}"],
|
|
4166
|
+
ownerPropsReferences: ["ConfigPageForm"],
|
|
4167
|
+
standardProps: [
|
|
4168
|
+
"useResource: UseResource",
|
|
4169
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
4170
|
+
"usePanelInfo: UsePanelInfo",
|
|
4171
|
+
"useSessions: UseSessions",
|
|
4172
|
+
"useSessionStatus: UseSessionStatus",
|
|
4173
|
+
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
4174
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>"
|
|
4175
|
+
],
|
|
4176
|
+
keyDomain: "",
|
|
4177
|
+
hookContext: "",
|
|
4178
|
+
slotInject: "",
|
|
4179
|
+
declaredBy: "an entry in 'main' (client-ui-plugin-manager), so it exists while that entry is mounted",
|
|
4180
|
+
occupants: [
|
|
4181
|
+
"client-ui-settings-agent-loop AgentLoopCard id 'agent-loop'",
|
|
4182
|
+
"client-ui-settings-shell ShellCard id 'shell'",
|
|
4183
|
+
"client-ui-settings-subagent SubagentCard id 'subagent'",
|
|
4184
|
+
"client-ui-settings-web-search WebSearchCard id 'web-search'"
|
|
4185
|
+
],
|
|
4186
|
+
replaceRisk: "none",
|
|
4187
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('plugins.item', () => ctx.slots.register(\n { name: 'plugins.item', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4188
|
+
source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:88"
|
|
4189
|
+
},
|
|
4190
|
+
{
|
|
4191
|
+
key: "plugins.row.config",
|
|
4192
|
+
kind: "keyed",
|
|
4193
|
+
scope: "root",
|
|
4194
|
+
summary: "The configuration of one row a bundle declares, keyed by `<package name>#<row id>` with the row id as the bundle's patch declares it: the row on the bundle's page gains a configure control that opens the entry's page, headed by the plugin's display title and description.",
|
|
4195
|
+
doc: "The configuration of one row a bundle declares, keyed by\n`<package name>#<row id>` with the row id as the bundle's patch declares\nit: the row on the bundle's page gains a configure control that opens\nthe entry's page, headed by the plugin's display title and description.\nAn absent description falls back to the entry's `view: 'summary'`.",
|
|
4196
|
+
registerOptions: [{
|
|
4197
|
+
name: "key",
|
|
4198
|
+
requirement: "required",
|
|
4199
|
+
type: "string",
|
|
4200
|
+
doc: "Your cell key: the entry renders where the owner dispatches this exact key. Registering an already-occupied key replaces that occupant."
|
|
4201
|
+
}],
|
|
4202
|
+
ownerProps: ["/** The view the page asks a configuration entry for. */\nexport interface PluginConfigViewProps {\n /** `summary` renders the one-liner alone, as text or inline nodes; `page` renders the form with its save control. */\n readonly view: 'summary' | 'page'\n /** Host-owned configuration values and write actions for this page's entry. */\n readonly form?: ConfigPageForm | undefined\n}"],
|
|
4203
|
+
ownerPropsReferences: ["ConfigPageForm"],
|
|
4204
|
+
standardProps: [
|
|
4205
|
+
"useResource: UseResource",
|
|
4206
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3871
4207
|
"usePanelInfo: UsePanelInfo",
|
|
3872
4208
|
"useSessions: UseSessions",
|
|
3873
4209
|
"useSessionStatus: UseSessionStatus",
|
|
@@ -3881,7 +4217,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3881
4217
|
occupants: [],
|
|
3882
4218
|
replaceRisk: "none",
|
|
3883
4219
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('plugins.row.config', () => ctx.slots.register(\n { name: 'plugins.row.config', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3884
|
-
source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:
|
|
4220
|
+
source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:102"
|
|
3885
4221
|
},
|
|
3886
4222
|
{
|
|
3887
4223
|
key: "rightbar",
|
|
@@ -3917,8 +4253,8 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3917
4253
|
summary: "Session content selected by the root-scoped right Sidebar controller.",
|
|
3918
4254
|
doc: "Session content selected by the root-scoped right Sidebar controller.",
|
|
3919
4255
|
registerOptions: [],
|
|
3920
|
-
ownerProps: ["/** Right column owner share: resolved normal geometry and opening eligibility. */\nexport interface RightbarOwnerProps {\n /** Resolved normal panel width in px, not the saved preference; zero if it cannot fit. */\n width: number\n /** Current frame width in px. */\n viewportWidth: number\n /**\n * Whether a normal right panel can retain 300px beside a 400px center.\n * Before a narrow opening, includes the space from collapsing the left sidebar.\n */\n canShow: boolean\n}"],
|
|
3921
|
-
ownerPropsReferences: [],
|
|
4256
|
+
ownerProps: ["/** Right column owner share: resolved normal geometry and opening eligibility. */\nexport interface RightbarOwnerProps {\n /** Resolved normal panel width in px, not the saved preference; zero if it cannot fit. */\n width: number\n /** Current frame width in px. */\n viewportWidth: number\n /**\n * Whether a normal right panel can retain 300px beside a 400px center.\n * Before a narrow opening, includes the space from collapsing the left sidebar.\n */\n canShow: boolean\n}", "/** Identity of one open tab; distinct copies of one content share `contentId`, never `TabId`. */\nexport type TabId = Branded<'TabId'>"],
|
|
4257
|
+
ownerPropsReferences: ["Branded"],
|
|
3922
4258
|
standardProps: [
|
|
3923
4259
|
"useResource: UseResource",
|
|
3924
4260
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
@@ -4016,7 +4352,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4016
4352
|
occupants: ["client-ui-settings-general SettingsDocumentAction id 'open-document'"],
|
|
4017
4353
|
replaceRisk: "none",
|
|
4018
4354
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('settings.action', () => ctx.slots.register(\n { name: 'settings.action', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4019
|
-
source: "packages/client/ui-settings/src/client/contract/slots.ts:
|
|
4355
|
+
source: "packages/client/ui-settings/src/client/contract/slots.ts:39"
|
|
4020
4356
|
},
|
|
4021
4357
|
{
|
|
4022
4358
|
key: "settings.close",
|
|
@@ -4043,14 +4379,14 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4043
4379
|
occupants: ["client-ui-settings-general CloseLabel"],
|
|
4044
4380
|
replaceRisk: "shadows-shipped-ui",
|
|
4045
4381
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('settings.close', () => ctx.slots.register(\n { name: 'settings.close' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4046
|
-
source: "packages/client/ui-settings/src/client/contract/slots.ts:
|
|
4382
|
+
source: "packages/client/ui-settings/src/client/contract/slots.ts:45"
|
|
4047
4383
|
},
|
|
4048
4384
|
{
|
|
4049
4385
|
key: "settings.general.item",
|
|
4050
4386
|
kind: "list",
|
|
4051
4387
|
scope: "root",
|
|
4052
4388
|
summary: "One preference row inside the General section — the additive seat for a single setting that needs no page of its own (a whole page is `settings.section`), contributed by the feature plugin that owns the preference (locale → Language, ui-theme → Appearance, ui-conversation → Composer Enter).",
|
|
4053
|
-
doc: "One preference row inside the General section — the additive seat for a\nsingle setting that needs no page of its own (a whole page is\n`settings.section`), contributed by the feature plugin that owns the\npreference (locale → Language, ui-theme → Appearance, ui-conversation →\nComposer Enter). Options: `id` (row key), `order` (row position). The\nsection column only stacks rows, so a row draws its own internals,\nincluding its label: nothing projects a `label` here and the owner passes\nno props at all — copy, current value, and the write path are all yours,\nthrough your own inject face and `host.call`. Declared at runtime by\nui-settings-general's General entry; the type lives here with every other\nsettings slot type, because this package is the settings domain's base\nlayer and every registrant already depends on it for `ctx.
|
|
4389
|
+
doc: "One preference row inside the General section — the additive seat for a\nsingle setting that needs no page of its own (a whole page is\n`settings.section`), contributed by the feature plugin that owns the\npreference (locale → Language, ui-theme → Appearance, ui-conversation →\nComposer Enter). Options: `id` (row key), `order` (row position). The\nsection column only stacks rows, so a row draws its own internals,\nincluding its label: nothing projects a `label` here and the owner passes\nno props at all — copy, current value, and the write path are all yours,\nthrough your own inject face and `host.call`. Declared at runtime by\nui-settings-general's General entry; the type lives here with every other\nsettings slot type, because this package is the settings domain's base\nlayer and every registrant already depends on it for `ctx.configForms`.",
|
|
4054
4390
|
registerOptions: [
|
|
4055
4391
|
{
|
|
4056
4392
|
name: "id",
|
|
@@ -4088,15 +4424,19 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4088
4424
|
declaredBy: "an entry in 'settings.section' (client-ui-settings-general), so it exists while that entry is mounted",
|
|
4089
4425
|
occupants: [
|
|
4090
4426
|
"client-locale LanguageRow id 'language'",
|
|
4427
|
+
"client-ui-chat LinkOpeningRow id 'link-opening'",
|
|
4428
|
+
"client-ui-chat PerformanceUsageRow id 'performance-usage'",
|
|
4091
4429
|
"client-ui-chat TranscriptViewRow id 'transcript-view'",
|
|
4092
4430
|
"client-ui-conversation EnterBehaviorRow id 'composer-enter'",
|
|
4093
4431
|
"client-ui-permission-presets PermissionRow id 'permission'",
|
|
4432
|
+
"client-ui-settings-general DeveloperToolsRow id 'developer-tools'",
|
|
4433
|
+
"client-ui-settings-general CurrentVersionRow id 'current-version'",
|
|
4094
4434
|
"client-ui-theme AppearanceRow id 'appearance'",
|
|
4095
4435
|
"client-ui-theme FontSizeRow id 'font-size'"
|
|
4096
4436
|
],
|
|
4097
4437
|
replaceRisk: "none",
|
|
4098
4438
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('settings.general.item', () => ctx.slots.register(\n { name: 'settings.general.item', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4099
|
-
source: "packages/client/ui-settings/src/client/contract/slots.ts:
|
|
4439
|
+
source: "packages/client/ui-settings/src/client/contract/slots.ts:92"
|
|
4100
4440
|
},
|
|
4101
4441
|
{
|
|
4102
4442
|
key: "settings.header",
|
|
@@ -4123,7 +4463,34 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4123
4463
|
occupants: ["client-ui-settings-general HeaderContent"],
|
|
4124
4464
|
replaceRisk: "shadows-shipped-ui",
|
|
4125
4465
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('settings.header', () => ctx.slots.register(\n { name: 'settings.header' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4126
|
-
source: "packages/client/ui-settings/src/client/contract/slots.ts:
|
|
4466
|
+
source: "packages/client/ui-settings/src/client/contract/slots.ts:33"
|
|
4467
|
+
},
|
|
4468
|
+
{
|
|
4469
|
+
key: "settings.launcher",
|
|
4470
|
+
kind: "single",
|
|
4471
|
+
scope: "root",
|
|
4472
|
+
summary: "Optional sidebar account launcher; opens the shell-owned settings panel.",
|
|
4473
|
+
doc: "Optional sidebar account launcher; opens the shell-owned settings panel.",
|
|
4474
|
+
registerOptions: [],
|
|
4475
|
+
ownerProps: ["/** Sidebar launcher geometry and settings navigation. */\nexport interface SettingsLauncherOwnerProps {\n /** Whether the sidebar shows labels. */\n wide: boolean\n /** Open the settings panel. */\n openSettings: () => void\n /** @param id - registered onboarding editor to open explicitly. */\n openOnboarding: (id: string) => void\n}"],
|
|
4476
|
+
ownerPropsReferences: [],
|
|
4477
|
+
standardProps: [
|
|
4478
|
+
"useResource: UseResource",
|
|
4479
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
4480
|
+
"usePanelInfo: UsePanelInfo",
|
|
4481
|
+
"useSessions: UseSessions",
|
|
4482
|
+
"useSessionStatus: UseSessionStatus",
|
|
4483
|
+
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
4484
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>"
|
|
4485
|
+
],
|
|
4486
|
+
keyDomain: "",
|
|
4487
|
+
hookContext: "",
|
|
4488
|
+
slotInject: "",
|
|
4489
|
+
declaredBy: "an entry in 'sidebar.settings' (client-ui-settings-general), so it exists while that entry is mounted",
|
|
4490
|
+
occupants: ["client-ui-settings-account AccountMenu"],
|
|
4491
|
+
replaceRisk: "shadows-shipped-ui",
|
|
4492
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('settings.launcher', () => ctx.slots.register(\n { name: 'settings.launcher' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4493
|
+
source: "packages/client/ui-settings/src/client/contract/slots.ts:17"
|
|
4127
4494
|
},
|
|
4128
4495
|
{
|
|
4129
4496
|
key: "settings.models.footer",
|
|
@@ -4169,7 +4536,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4169
4536
|
occupants: [],
|
|
4170
4537
|
replaceRisk: "none",
|
|
4171
4538
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('settings.models.footer', () => ctx.slots.register(\n { name: 'settings.models.footer', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4172
|
-
source: "packages/client/ui-settings-models/src/client/slot-contract.ts:
|
|
4539
|
+
source: "packages/client/ui-settings-models/src/client/slot-contract.ts:40"
|
|
4173
4540
|
},
|
|
4174
4541
|
{
|
|
4175
4542
|
key: "settings.models.provider-card",
|
|
@@ -4203,6 +4570,33 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4203
4570
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('settings.models.provider-card', () => ctx.slots.register(\n { name: 'settings.models.provider-card', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4204
4571
|
source: "packages/client/ui-settings-models/src/client/slot-contract.ts:33"
|
|
4205
4572
|
},
|
|
4573
|
+
{
|
|
4574
|
+
key: "settings.models.sign-in",
|
|
4575
|
+
kind: "single",
|
|
4576
|
+
scope: "root",
|
|
4577
|
+
summary: "Optional account login choice before the credential editor.",
|
|
4578
|
+
doc: "Optional account login choice before the credential editor.",
|
|
4579
|
+
registerOptions: [],
|
|
4580
|
+
ownerProps: [],
|
|
4581
|
+
ownerPropsReferences: [],
|
|
4582
|
+
standardProps: [
|
|
4583
|
+
"useResource: UseResource",
|
|
4584
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
4585
|
+
"usePanelInfo: UsePanelInfo",
|
|
4586
|
+
"useSessions: UseSessions",
|
|
4587
|
+
"useSessionStatus: UseSessionStatus",
|
|
4588
|
+
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
4589
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>"
|
|
4590
|
+
],
|
|
4591
|
+
keyDomain: "",
|
|
4592
|
+
hookContext: "",
|
|
4593
|
+
slotInject: "",
|
|
4594
|
+
declaredBy: "an entry in 'settings.onboarding' (client-ui-settings-models), so it exists while that entry is mounted",
|
|
4595
|
+
occupants: ["client-ui-settings-account AccountOnboarding"],
|
|
4596
|
+
replaceRisk: "shadows-shipped-ui",
|
|
4597
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('settings.models.sign-in', () => ctx.slots.register(\n { name: 'settings.models.sign-in' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4598
|
+
source: "packages/client/ui-settings-models/src/client/slot-contract.ts:35"
|
|
4599
|
+
},
|
|
4206
4600
|
{
|
|
4207
4601
|
key: "settings.onboarding",
|
|
4208
4602
|
kind: "list",
|
|
@@ -4229,7 +4623,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4229
4623
|
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."
|
|
4230
4624
|
}
|
|
4231
4625
|
],
|
|
4232
|
-
ownerProps: ["/** Owner share of the currently active settings-backed onboarding step. */\nexport interface SettingsOnboardingOwnerProps {\n /** Stable id of the step currently selected by the coordinator. */\n stepId: string\n /** Complete or skip this step and transfer ownership to the next entry. */\n complete: () => void\n /** Open the settings panel directly on one registered section. */\n openSection: (id: string) => void\n}"],
|
|
4626
|
+
ownerProps: ["/** Owner share of the currently active settings-backed onboarding step. */\nexport interface SettingsOnboardingOwnerProps {\n /** Stable id of the step currently selected by the coordinator. */\n stepId: string\n /** User explicitly reopened this step outside first-run onboarding. */\n explicit?: boolean\n /** Complete or skip this step and transfer ownership to the next entry. */\n complete: () => void\n /** Open the settings panel directly on one registered section. */\n openSection: (id: string) => void\n}"],
|
|
4233
4627
|
ownerPropsReferences: [],
|
|
4234
4628
|
standardProps: [
|
|
4235
4629
|
"useResource: UseResource",
|
|
@@ -4247,7 +4641,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4247
4641
|
occupants: ["client-ui-settings-models WelcomeNotice id 'welcome-notice'", "client-ui-settings-models DeepSeekOnboardingDialog id 'deepseek-official'"],
|
|
4248
4642
|
replaceRisk: "none",
|
|
4249
4643
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('settings.onboarding', () => ctx.slots.register(\n { name: 'settings.onboarding', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4250
|
-
source: "packages/client/ui-settings/src/client/contract/slots.ts:
|
|
4644
|
+
source: "packages/client/ui-settings/src/client/contract/slots.ts:77"
|
|
4251
4645
|
},
|
|
4252
4646
|
{
|
|
4253
4647
|
key: "settings.plugins.tab",
|
|
@@ -4293,7 +4687,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4293
4687
|
occupants: ["client-ui-settings-plugin-inventory PluginInventorySettingsTab id 'all'"],
|
|
4294
4688
|
replaceRisk: "none",
|
|
4295
4689
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('settings.plugins.tab', () => ctx.slots.register(\n { name: 'settings.plugins.tab', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4296
|
-
source: "packages/client/ui-settings/src/client/contract/slots.ts:
|
|
4690
|
+
source: "packages/client/ui-settings/src/client/contract/slots.ts:66"
|
|
4297
4691
|
},
|
|
4298
4692
|
{
|
|
4299
4693
|
key: "settings.section",
|
|
@@ -4338,14 +4732,14 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4338
4732
|
declaredBy: "an entry in 'sidebar.settings' (client-ui-settings-general), so it exists while that entry is mounted",
|
|
4339
4733
|
occupants: [
|
|
4340
4734
|
"client-ui-agent-preset AgentPresetSection id 'agent-presets'",
|
|
4735
|
+
"client-ui-settings-account AccountSection id 'account'",
|
|
4341
4736
|
"client-ui-settings-general GeneralSection id 'general'",
|
|
4342
4737
|
"client-ui-settings-models ModelsSection id 'models'",
|
|
4343
|
-
"client-ui-settings-plugins PluginsSettingsSection id 'plugins'"
|
|
4344
|
-
"client-ui-settings-unarchive-sessions ArchivedSessionsSection id 'archived-sessions'"
|
|
4738
|
+
"client-ui-settings-plugins PluginsSettingsSection id 'plugins'"
|
|
4345
4739
|
],
|
|
4346
4740
|
replaceRisk: "none",
|
|
4347
4741
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('settings.section', () => ctx.slots.register(\n { name: 'settings.section', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4348
|
-
source: "packages/client/ui-settings/src/client/contract/slots.ts:
|
|
4742
|
+
source: "packages/client/ui-settings/src/client/contract/slots.ts:57"
|
|
4349
4743
|
},
|
|
4350
4744
|
{
|
|
4351
4745
|
key: "settings.trigger",
|
|
@@ -4372,7 +4766,34 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4372
4766
|
occupants: ["client-ui-settings-general TriggerContent"],
|
|
4373
4767
|
replaceRisk: "shadows-shipped-ui",
|
|
4374
4768
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('settings.trigger', () => ctx.slots.register(\n { name: 'settings.trigger' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4375
|
-
source: "packages/client/ui-settings/src/client/contract/slots.ts:
|
|
4769
|
+
source: "packages/client/ui-settings/src/client/contract/slots.ts:27"
|
|
4770
|
+
},
|
|
4771
|
+
{
|
|
4772
|
+
key: "shell.leading",
|
|
4773
|
+
kind: "single",
|
|
4774
|
+
scope: "root",
|
|
4775
|
+
summary: "Window-chrome seat at the frame's top-left, over every main panel.",
|
|
4776
|
+
doc: "Window-chrome seat at the frame's top-left, over every main panel.\nMounted only while the sidebar column is fully hidden (macOS desktop\ncollapse; other platforms keep the rail), so the occupant can assume the\nframe edge is the window edge and the macOS traffic lights sit before it.\nOCCUPIED by ui-sidebar's reopen/New Session controls.\n\nWhile the seat is mounted the frame publishes\n`--dsh-frame-leading-clearance` (the inline inset the seat's band\noccupies, measured from the frame's left edge); a main panel whose\ncontent reaches the top-left corner pads by it so nothing lands under\nthe lights or the controls.",
|
|
4777
|
+
registerOptions: [],
|
|
4778
|
+
ownerProps: [],
|
|
4779
|
+
ownerPropsReferences: [],
|
|
4780
|
+
standardProps: [
|
|
4781
|
+
"useResource: UseResource",
|
|
4782
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
4783
|
+
"usePanelInfo: UsePanelInfo",
|
|
4784
|
+
"useSessions: UseSessions",
|
|
4785
|
+
"useSessionStatus: UseSessionStatus",
|
|
4786
|
+
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
4787
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>"
|
|
4788
|
+
],
|
|
4789
|
+
keyDomain: "",
|
|
4790
|
+
hookContext: "",
|
|
4791
|
+
slotInject: "",
|
|
4792
|
+
declaredBy: "an entry in 'root' (client-ui-layout), so it exists while that entry is mounted",
|
|
4793
|
+
occupants: ["client-ui-sidebar HeaderLeadingControls"],
|
|
4794
|
+
replaceRisk: "shadows-shipped-ui",
|
|
4795
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('shell.leading', () => ctx.slots.register(\n { name: 'shell.leading' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4796
|
+
source: "packages/client/ui-layout/src/client/index.ts:105"
|
|
4376
4797
|
},
|
|
4377
4798
|
{
|
|
4378
4799
|
key: "shell.overlay",
|
|
@@ -4415,7 +4836,11 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4415
4836
|
hookContext: "",
|
|
4416
4837
|
slotInject: "",
|
|
4417
4838
|
declaredBy: "an entry in 'root' (client-ui-layout), so it exists while that entry is mounted",
|
|
4418
|
-
occupants: [
|
|
4839
|
+
occupants: [
|
|
4840
|
+
"client-ui-workspace SessionRenameDialog id 'workspace.session-rename'",
|
|
4841
|
+
"client-ui-workspace SessionArchiveConfirmDialog id 'workspace.session-archive'",
|
|
4842
|
+
"client-ui-workspace RowActionToast id 'workspace.row-toast'"
|
|
4843
|
+
],
|
|
4419
4844
|
replaceRisk: "none",
|
|
4420
4845
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('shell.overlay', () => ctx.slots.register(\n { name: 'shell.overlay', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4421
4846
|
source: "packages/client/ui-layout/src/client/index.ts:91"
|
|
@@ -4675,7 +5100,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4675
5100
|
],
|
|
4676
5101
|
replaceRisk: "none",
|
|
4677
5102
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.right.pane.tab', () => ctx.slots.register(\n { name: 'sidebar.right.pane.tab', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4678
|
-
source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:
|
|
5103
|
+
source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:58"
|
|
4679
5104
|
},
|
|
4680
5105
|
{
|
|
4681
5106
|
key: "sidebar.right.pane.tab.title",
|
|
@@ -4722,7 +5147,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4722
5147
|
],
|
|
4723
5148
|
replaceRisk: "none",
|
|
4724
5149
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.right.pane.tab.title', () => ctx.slots.register(\n { name: 'sidebar.right.pane.tab.title', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4725
|
-
source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:
|
|
5150
|
+
source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:72"
|
|
4726
5151
|
},
|
|
4727
5152
|
{
|
|
4728
5153
|
key: "sidebar.right.tab.document",
|
|
@@ -4736,7 +5161,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4736
5161
|
type: "string",
|
|
4737
5162
|
doc: "Your cell key: the entry renders where the owner dispatches this exact key. Registering an already-occupied key replaces that occupant."
|
|
4738
5163
|
}],
|
|
4739
|
-
ownerProps: ["/** Content and viewing inputs shared by document bodies and nested PDF presentation. */\nexport interface DocumentBodyOwner {\n /** Original file address, also readable through the standard useResource hook. */\n readonly resourceAddress: string\n /** Ordinary file content or a renderer-owned loading request; text accumulates until eof. */\n readonly content: DocumentContent\n /** The document toolbar's current wrapping preference. */\n readonly wrap: boolean\n /** Report a renderer-owned scrollport; passing `null` restores the shared body as the owner. */\n readonly scrollportRef: RefCallback<HTMLElement>\n}"],
|
|
5164
|
+
ownerProps: ["/** Content and viewing inputs shared by document bodies and nested PDF presentation. */\nexport interface DocumentBodyOwner {\n /** Observe a file read by this renderer. @param address - complete file resource address. */\n readonly addResource: (address: string) => void\n /** Replace this renderer's dependencies. @param addresses - complete file resource addresses. */\n readonly setResources: (addresses: readonly string[]) => void\n /** Original file address, also readable through the standard useResource hook. */\n readonly resourceAddress: string\n /** Ordinary file content or a renderer-owned loading request; text accumulates until eof. */\n readonly content: DocumentContent\n /** The document toolbar's current wrapping preference. */\n readonly wrap: boolean\n /** Report a renderer-owned scrollport; passing `null` restores the shared body as the owner. */\n readonly scrollportRef: RefCallback<HTMLElement>\n}"],
|
|
4740
5165
|
ownerPropsReferences: ["DocumentContent"],
|
|
4741
5166
|
standardProps: [
|
|
4742
5167
|
"useResource: UseResource",
|
|
@@ -4761,6 +5186,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4761
5186
|
declaredBy: "an entry in 'sidebar.right.pane.tab' (client-ui-sidebar-documentpreview), so it exists while that entry is mounted",
|
|
4762
5187
|
occupants: [
|
|
4763
5188
|
"client-ui-sidebar-documentpreview CodeBody",
|
|
5189
|
+
"client-ui-sidebar-documentpreview LazyExcelBody",
|
|
4764
5190
|
"client-ui-sidebar-documentpreview HtmlBody",
|
|
4765
5191
|
"client-ui-sidebar-documentpreview ImageBody",
|
|
4766
5192
|
"client-ui-sidebar-documentpreview MarkdownBody",
|
|
@@ -4770,7 +5196,101 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4770
5196
|
],
|
|
4771
5197
|
replaceRisk: "none",
|
|
4772
5198
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.right.tab.document', () => ctx.slots.register(\n { name: 'sidebar.right.tab.document', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4773
|
-
source: "packages/client/ui-sidebar-documentpreview/src/client/document/contract.ts:
|
|
5199
|
+
source: "packages/client/ui-sidebar-documentpreview/src/client/document/contract.ts:51"
|
|
5200
|
+
},
|
|
5201
|
+
{
|
|
5202
|
+
key: "sidebar.right.tab.document.action",
|
|
5203
|
+
kind: "keyed",
|
|
5204
|
+
scope: "session",
|
|
5205
|
+
summary: "Renderer-specific controls before the document toolbar's reload button.",
|
|
5206
|
+
doc: "Renderer-specific controls before the document toolbar's reload button.",
|
|
5207
|
+
registerOptions: [{
|
|
5208
|
+
name: "key",
|
|
5209
|
+
requirement: "required",
|
|
5210
|
+
type: "string",
|
|
5211
|
+
doc: "Your cell key: the entry renders where the owner dispatches this exact key. Registering an already-occupied key replaces that occupant."
|
|
5212
|
+
}],
|
|
5213
|
+
ownerProps: ["/**\n * Ordinary file contents, or a request for the selected renderer to load its content.\n * Byte arrays are transient UI input, never persisted layout or Session data.\n */\nexport type DocumentContent =\n | { readonly kind: 'text'; readonly text: string; readonly pages: readonly DocumentTextPage[]; readonly eof: boolean }\n | { readonly kind: 'bytes'; readonly data: Uint8Array<ArrayBuffer> }\n | {\n readonly kind: 'renderer'\n /** Changes on reload or implementation replacement; retained contents belong to one revision. */\n readonly revision: number\n /** Report the displayed source version; stale revisions cannot update the owner. @param version - loaded source version. */\n readonly loaded: (version: string) => void\n /** End a failed load; a later file change can start another revision. */\n readonly failed: () => void\n /** Cancel the current load and start a new revision. */\n readonly reload: () => void\n }"],
|
|
5214
|
+
ownerPropsReferences: ["DocumentTextPage"],
|
|
5215
|
+
standardProps: [
|
|
5216
|
+
"useResource: UseResource",
|
|
5217
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
5218
|
+
"usePanelInfo: UsePanelInfo",
|
|
5219
|
+
"useSessions: UseSessions",
|
|
5220
|
+
"useSessionStatus: UseSessionStatus",
|
|
5221
|
+
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
5222
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
5223
|
+
"useChat: UseChat",
|
|
5224
|
+
"useConversation: UseConversation",
|
|
5225
|
+
"useInput: SnapshotSelectorHook<InputState>",
|
|
5226
|
+
"inputActions: InputActions",
|
|
5227
|
+
"useSession: SessionSnapshotSelector",
|
|
5228
|
+
"sessionId: SessionId",
|
|
5229
|
+
"useProjection: UseProjection",
|
|
5230
|
+
"useTrajectory: UseTrajectory"
|
|
5231
|
+
],
|
|
5232
|
+
keyDomain: "open: any string the owner dispatches (no compile-time key set), none are taken yet",
|
|
5233
|
+
hookContext: "UseSidebarRightTabInfo",
|
|
5234
|
+
slotInject: "{ hooks: { tabInfo: SlotHookFactory<'sidebar.right.tab.document', UseSidebarRightTabInfo> } }",
|
|
5235
|
+
declaredBy: "an entry in 'sidebar.right.pane.tab' (client-ui-sidebar-documentpreview), so it exists while that entry is mounted",
|
|
5236
|
+
occupants: ["client-ui-sidebar-documentpreview OfficeFontAction"],
|
|
5237
|
+
replaceRisk: "none",
|
|
5238
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.right.tab.document.action', () => ctx.slots.register(\n { name: 'sidebar.right.tab.document.action', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
5239
|
+
source: "packages/client/ui-sidebar-documentpreview/src/client/document/contract.ts:87"
|
|
5240
|
+
},
|
|
5241
|
+
{
|
|
5242
|
+
key: "sidebar.right.tab.document.actions",
|
|
5243
|
+
kind: "list",
|
|
5244
|
+
scope: "session",
|
|
5245
|
+
summary: "Header toolbar contributions acting on the previewed file, rendered after the preview's own controls once the file's Host path is known.",
|
|
5246
|
+
doc: "Header toolbar contributions acting on the previewed file, rendered\nafter the preview's own controls once the file's Host path is known.",
|
|
5247
|
+
registerOptions: [
|
|
5248
|
+
{
|
|
5249
|
+
name: "id",
|
|
5250
|
+
requirement: "required",
|
|
5251
|
+
type: "string",
|
|
5252
|
+
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."
|
|
5253
|
+
},
|
|
5254
|
+
{
|
|
5255
|
+
name: "order",
|
|
5256
|
+
requirement: "optional",
|
|
5257
|
+
type: "number",
|
|
5258
|
+
doc: "Position among the entries, ascending (default 0)."
|
|
5259
|
+
},
|
|
5260
|
+
{
|
|
5261
|
+
name: "label",
|
|
5262
|
+
requirement: "optional",
|
|
5263
|
+
type: "string | (() => string)",
|
|
5264
|
+
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."
|
|
5265
|
+
}
|
|
5266
|
+
],
|
|
5267
|
+
ownerProps: [],
|
|
5268
|
+
ownerPropsReferences: [],
|
|
5269
|
+
standardProps: [
|
|
5270
|
+
"useResource: UseResource",
|
|
5271
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
5272
|
+
"usePanelInfo: UsePanelInfo",
|
|
5273
|
+
"useSessions: UseSessions",
|
|
5274
|
+
"useSessionStatus: UseSessionStatus",
|
|
5275
|
+
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
5276
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
5277
|
+
"useChat: UseChat",
|
|
5278
|
+
"useConversation: UseConversation",
|
|
5279
|
+
"useInput: SnapshotSelectorHook<InputState>",
|
|
5280
|
+
"inputActions: InputActions",
|
|
5281
|
+
"useSession: SessionSnapshotSelector",
|
|
5282
|
+
"sessionId: SessionId",
|
|
5283
|
+
"useProjection: UseProjection",
|
|
5284
|
+
"useTrajectory: UseTrajectory"
|
|
5285
|
+
],
|
|
5286
|
+
keyDomain: "",
|
|
5287
|
+
hookContext: "",
|
|
5288
|
+
slotInject: "",
|
|
5289
|
+
declaredBy: "an entry in 'sidebar.right.pane.tab' (client-ui-sidebar-documentpreview), so it exists while that entry is mounted",
|
|
5290
|
+
occupants: ["client-ui-open-in-app OpenPathAction id 'open-in-app'"],
|
|
5291
|
+
replaceRisk: "none",
|
|
5292
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.right.tab.document.actions', () => ctx.slots.register(\n { name: 'sidebar.right.tab.document.actions', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
5293
|
+
source: "packages/client/ui-sidebar-documentpreview/src/client/document/contract.ts:66"
|
|
4774
5294
|
},
|
|
4775
5295
|
{
|
|
4776
5296
|
key: "sidebar.right.tab.document.office.pdf",
|
|
@@ -4784,7 +5304,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4784
5304
|
type: "string",
|
|
4785
5305
|
doc: "Your cell key: the entry renders where the owner dispatches this exact key. Registering an already-occupied key replaces that occupant."
|
|
4786
5306
|
}],
|
|
4787
|
-
ownerProps: ["/** Content and viewing inputs shared by document bodies and nested PDF presentation. */\nexport interface DocumentBodyOwner {\n /** Original file address, also readable through the standard useResource hook. */\n readonly resourceAddress: string\n /** Ordinary file content or a renderer-owned loading request; text accumulates until eof. */\n readonly content: DocumentContent\n /** The document toolbar's current wrapping preference. */\n readonly wrap: boolean\n /** Report a renderer-owned scrollport; passing `null` restores the shared body as the owner. */\n readonly scrollportRef: RefCallback<HTMLElement>\n}"],
|
|
5307
|
+
ownerProps: ["/** Content and viewing inputs shared by document bodies and nested PDF presentation. */\nexport interface DocumentBodyOwner {\n /** Observe a file read by this renderer. @param address - complete file resource address. */\n readonly addResource: (address: string) => void\n /** Replace this renderer's dependencies. @param addresses - complete file resource addresses. */\n readonly setResources: (addresses: readonly string[]) => void\n /** Original file address, also readable through the standard useResource hook. */\n readonly resourceAddress: string\n /** Ordinary file content or a renderer-owned loading request; text accumulates until eof. */\n readonly content: DocumentContent\n /** The document toolbar's current wrapping preference. */\n readonly wrap: boolean\n /** Report a renderer-owned scrollport; passing `null` restores the shared body as the owner. */\n readonly scrollportRef: RefCallback<HTMLElement>\n}"],
|
|
4788
5308
|
ownerPropsReferences: ["DocumentContent"],
|
|
4789
5309
|
standardProps: [
|
|
4790
5310
|
"useResource: UseResource",
|
|
@@ -4810,7 +5330,61 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4810
5330
|
occupants: ["client-ui-sidebar-documentpreview LazyPdfBody"],
|
|
4811
5331
|
replaceRisk: "none",
|
|
4812
5332
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.right.tab.document.office.pdf', () => ctx.slots.register(\n { name: 'sidebar.right.tab.document.office.pdf', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4813
|
-
source: "packages/client/ui-sidebar-documentpreview/src/client/office/OfficeBody.tsx:
|
|
5333
|
+
source: "packages/client/ui-sidebar-documentpreview/src/client/office/OfficeBody.tsx:19"
|
|
5334
|
+
},
|
|
5335
|
+
{
|
|
5336
|
+
key: "sidebar.right.tab.document.unpreviewable",
|
|
5337
|
+
kind: "list",
|
|
5338
|
+
scope: "session",
|
|
5339
|
+
summary: "Empty-state contributions for a file this preview cannot render, offered where Retry would stand once the file's Host path is known.",
|
|
5340
|
+
doc: "Empty-state contributions for a file this preview cannot render,\noffered where Retry would stand once the file's Host path is known.",
|
|
5341
|
+
registerOptions: [
|
|
5342
|
+
{
|
|
5343
|
+
name: "id",
|
|
5344
|
+
requirement: "required",
|
|
5345
|
+
type: "string",
|
|
5346
|
+
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."
|
|
5347
|
+
},
|
|
5348
|
+
{
|
|
5349
|
+
name: "order",
|
|
5350
|
+
requirement: "optional",
|
|
5351
|
+
type: "number",
|
|
5352
|
+
doc: "Position among the entries, ascending (default 0)."
|
|
5353
|
+
},
|
|
5354
|
+
{
|
|
5355
|
+
name: "label",
|
|
5356
|
+
requirement: "optional",
|
|
5357
|
+
type: "string | (() => string)",
|
|
5358
|
+
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."
|
|
5359
|
+
}
|
|
5360
|
+
],
|
|
5361
|
+
ownerProps: [],
|
|
5362
|
+
ownerPropsReferences: [],
|
|
5363
|
+
standardProps: [
|
|
5364
|
+
"useResource: UseResource",
|
|
5365
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
5366
|
+
"usePanelInfo: UsePanelInfo",
|
|
5367
|
+
"useSessions: UseSessions",
|
|
5368
|
+
"useSessionStatus: UseSessionStatus",
|
|
5369
|
+
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
5370
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
5371
|
+
"useChat: UseChat",
|
|
5372
|
+
"useConversation: UseConversation",
|
|
5373
|
+
"useInput: SnapshotSelectorHook<InputState>",
|
|
5374
|
+
"inputActions: InputActions",
|
|
5375
|
+
"useSession: SessionSnapshotSelector",
|
|
5376
|
+
"sessionId: SessionId",
|
|
5377
|
+
"useProjection: UseProjection",
|
|
5378
|
+
"useTrajectory: UseTrajectory"
|
|
5379
|
+
],
|
|
5380
|
+
keyDomain: "",
|
|
5381
|
+
hookContext: "",
|
|
5382
|
+
slotInject: "",
|
|
5383
|
+
declaredBy: "an entry in 'sidebar.right.pane.tab' (client-ui-sidebar-documentpreview), so it exists while that entry is mounted",
|
|
5384
|
+
occupants: ["client-ui-open-in-app OpenPathEmptyAction id 'open-in-app'"],
|
|
5385
|
+
replaceRisk: "none",
|
|
5386
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.right.tab.document.unpreviewable', () => ctx.slots.register(\n { name: 'sidebar.right.tab.document.unpreviewable', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
5387
|
+
source: "packages/client/ui-sidebar-documentpreview/src/client/document/contract.ts:78"
|
|
4814
5388
|
},
|
|
4815
5389
|
{
|
|
4816
5390
|
key: "sidebar.right.tab.guide",
|
|
@@ -4850,7 +5424,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4850
5424
|
occupants: [],
|
|
4851
5425
|
replaceRisk: "none",
|
|
4852
5426
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.right.tab.guide', () => ctx.slots.register(\n { name: 'sidebar.right.tab.guide', select: owner => null },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4853
|
-
source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:
|
|
5427
|
+
source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:83"
|
|
4854
5428
|
},
|
|
4855
5429
|
{
|
|
4856
5430
|
key: "sidebar.right.tab.guide.entry",
|
|
@@ -4890,7 +5464,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4890
5464
|
occupants: ["client-ui-sidebar-terminal TerminalGuide"],
|
|
4891
5465
|
replaceRisk: "none",
|
|
4892
5466
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.right.tab.guide.entry', () => ctx.slots.register(\n { name: 'sidebar.right.tab.guide.entry', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4893
|
-
source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:
|
|
5467
|
+
source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:90"
|
|
4894
5468
|
},
|
|
4895
5469
|
{
|
|
4896
5470
|
key: "sidebar.right.tab.menu.item",
|
|
@@ -4944,7 +5518,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4944
5518
|
occupants: [],
|
|
4945
5519
|
replaceRisk: "none",
|
|
4946
5520
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.right.tab.menu.item', () => ctx.slots.register(\n { name: 'sidebar.right.tab.menu.item', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
4947
|
-
source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:
|
|
5521
|
+
source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:102"
|
|
4948
5522
|
},
|
|
4949
5523
|
{
|
|
4950
5524
|
key: "sidebar.settings",
|
|
@@ -5052,7 +5626,104 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
5052
5626
|
occupants: ["client-ui-directory-picker-browse BrowseDirectoryFlow", "client-ui-directory-picker-native NativeDirectoryFlow"],
|
|
5053
5627
|
replaceRisk: "shadows-shipped-ui",
|
|
5054
5628
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.workspaces.directoryFlow', () => ctx.slots.register(\n { name: 'sidebar.workspaces.directoryFlow' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
5055
|
-
source: "packages/client/ui-workspace/src/client/contract/slots.ts:
|
|
5629
|
+
source: "packages/client/ui-workspace/src/client/contract/slots.ts:101"
|
|
5630
|
+
},
|
|
5631
|
+
{
|
|
5632
|
+
key: "sidebar.workspaces.session.menu.item",
|
|
5633
|
+
kind: "list",
|
|
5634
|
+
scope: "root",
|
|
5635
|
+
summary: "The rows of one Session's \"...\" menu, in ascending `order`.",
|
|
5636
|
+
doc: "The rows of one Session's \"...\" menu, in ascending `order`. ui-workspace\nregisters the shipped rows here — `pin` (100), `rename` (200), `fork`\n(300), `archive` (400) — so a plugin row is placed by its own `order`\namong them. Use a package-namespaced `id`; reusing a shipped id at\nanother `priority` shadows that row. Each entry renders one\n`role=\"menuitem\"` `<button>` (the shipped rows use ui-primitives'\n`MenuItemButton`, which adds the host styling and `separatorBefore`),\ndecides its own visibility from its own state, and dismisses the menu\nthrough the injected `useMenuOpenState` hook after acting; the list's\nkeyboard walk and focus return read the DOM, so any such button joins\nthem. Labels come from the contributing package's locale namespace.",
|
|
5637
|
+
registerOptions: [
|
|
5638
|
+
{
|
|
5639
|
+
name: "id",
|
|
5640
|
+
requirement: "required",
|
|
5641
|
+
type: "string",
|
|
5642
|
+
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."
|
|
5643
|
+
},
|
|
5644
|
+
{
|
|
5645
|
+
name: "order",
|
|
5646
|
+
requirement: "optional",
|
|
5647
|
+
type: "number",
|
|
5648
|
+
doc: "Position among the entries, ascending (default 0)."
|
|
5649
|
+
},
|
|
5650
|
+
{
|
|
5651
|
+
name: "label",
|
|
5652
|
+
requirement: "optional",
|
|
5653
|
+
type: "string | (() => string)",
|
|
5654
|
+
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."
|
|
5655
|
+
}
|
|
5656
|
+
],
|
|
5657
|
+
ownerProps: ["/** Owner share of one Session row action occurrence: the row the action belongs to. */\nexport interface SessionRowOwnerProps {\n /** Session the row shows. */\n sessionId: SessionId\n /** Row display title: persisted title, project basename, or Session id. */\n displayTitle: string\n}"],
|
|
5658
|
+
ownerPropsReferences: ["SessionId"],
|
|
5659
|
+
standardProps: [
|
|
5660
|
+
"useResource: UseResource",
|
|
5661
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
5662
|
+
"usePanelInfo: UsePanelInfo",
|
|
5663
|
+
"useSessions: UseSessions",
|
|
5664
|
+
"useSessionStatus: UseSessionStatus",
|
|
5665
|
+
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
5666
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>"
|
|
5667
|
+
],
|
|
5668
|
+
keyDomain: "",
|
|
5669
|
+
hookContext: "MenuOpenState",
|
|
5670
|
+
slotInject: "{ hooks: { menuOpenState: SlotHookFactory<'sidebar.workspaces.session.menu.item', UseMenuOpenState> } }",
|
|
5671
|
+
declaredBy: "an entry in 'sidebar.workspaces' (client-ui-workspace), so it exists while that entry is mounted",
|
|
5672
|
+
occupants: [
|
|
5673
|
+
"client-ui-workspace PinSessionMenuItem id 'pin'",
|
|
5674
|
+
"client-ui-workspace RenameSessionMenuItem id 'rename'",
|
|
5675
|
+
"client-ui-workspace ForkSessionMenuItem id 'fork'",
|
|
5676
|
+
"client-ui-workspace ArchiveSessionMenuItem id 'archive'"
|
|
5677
|
+
],
|
|
5678
|
+
replaceRisk: "none",
|
|
5679
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n const copyLabel = 'Copy Session ID' // Localize in the contributing package.\n ctx.slots.inject('sidebar.workspaces.session.menu.item', () => ctx.slots.register(\n { name: 'sidebar.workspaces.session.menu.item', id: 'copy-session-id', order: 500 },\n ({ sessionId, useMenuOpenState }) => {\n const [, setMenuOpen] = useMenuOpenState()\n return React.createElement(\n 'button',\n { type: 'button', role: 'menuitem', onClick: () => { setMenuOpen(false); void navigator.clipboard.writeText(sessionId) } },\n copyLabel,\n )\n },\n ))\n },\n}",
|
|
5680
|
+
source: "packages/client/ui-workspace/src/client/contract/slots.ts:133"
|
|
5681
|
+
},
|
|
5682
|
+
{
|
|
5683
|
+
key: "sidebar.workspaces.session.row.action",
|
|
5684
|
+
kind: "list",
|
|
5685
|
+
scope: "root",
|
|
5686
|
+
summary: "The hover buttons at the end of one Session row, in ascending `order`, after the \"...\" menu trigger.",
|
|
5687
|
+
doc: "The hover buttons at the end of one Session row, in ascending `order`,\nafter the \"...\" menu trigger. ui-workspace registers `archive` (100) and\n`pin` (200) here. An entry renders one icon button (or nothing, when its\naction does not apply to the row) and owns the action it performs. Clicks\ninside the strip stay in the strip, so the button needs no propagation\nhandling to keep the row from opening.",
|
|
5688
|
+
registerOptions: [
|
|
5689
|
+
{
|
|
5690
|
+
name: "id",
|
|
5691
|
+
requirement: "required",
|
|
5692
|
+
type: "string",
|
|
5693
|
+
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."
|
|
5694
|
+
},
|
|
5695
|
+
{
|
|
5696
|
+
name: "order",
|
|
5697
|
+
requirement: "optional",
|
|
5698
|
+
type: "number",
|
|
5699
|
+
doc: "Position among the entries, ascending (default 0)."
|
|
5700
|
+
},
|
|
5701
|
+
{
|
|
5702
|
+
name: "label",
|
|
5703
|
+
requirement: "optional",
|
|
5704
|
+
type: "string | (() => string)",
|
|
5705
|
+
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."
|
|
5706
|
+
}
|
|
5707
|
+
],
|
|
5708
|
+
ownerProps: ["/** Owner share of one Session row action occurrence: the row the action belongs to. */\nexport interface SessionRowOwnerProps {\n /** Session the row shows. */\n sessionId: SessionId\n /** Row display title: persisted title, project basename, or Session id. */\n displayTitle: string\n}"],
|
|
5709
|
+
ownerPropsReferences: ["SessionId"],
|
|
5710
|
+
standardProps: [
|
|
5711
|
+
"useResource: UseResource",
|
|
5712
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
5713
|
+
"usePanelInfo: UsePanelInfo",
|
|
5714
|
+
"useSessions: UseSessions",
|
|
5715
|
+
"useSessionStatus: UseSessionStatus",
|
|
5716
|
+
"useSessionRetainInfo: UseSessionRetainInfo",
|
|
5717
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>"
|
|
5718
|
+
],
|
|
5719
|
+
keyDomain: "",
|
|
5720
|
+
hookContext: "",
|
|
5721
|
+
slotInject: "",
|
|
5722
|
+
declaredBy: "an entry in 'sidebar.workspaces' (client-ui-workspace), so it exists while that entry is mounted",
|
|
5723
|
+
occupants: ["client-ui-workspace ArchiveSessionRowButton id 'archive'", "client-ui-workspace PinSessionRowButton id 'pin'"],
|
|
5724
|
+
replaceRisk: "none",
|
|
5725
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.workspaces.session.row.action', () => ctx.slots.register(\n { name: 'sidebar.workspaces.session.row.action', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
5726
|
+
source: "packages/client/ui-workspace/src/client/contract/slots.ts:148"
|
|
5056
5727
|
},
|
|
5057
5728
|
{
|
|
5058
5729
|
key: "tool.call.images",
|
|
@@ -5087,25 +5758,26 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
5087
5758
|
occupants: ["client-ui-attachment MessageImages"],
|
|
5088
5759
|
replaceRisk: "shadows-shipped-ui",
|
|
5089
5760
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('tool.call.images', () => ctx.slots.register(\n { name: 'tool.call.images' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
5090
|
-
source: "packages/client/ui-tool/src/client/contract/slots.ts:
|
|
5761
|
+
source: "packages/client/ui-tool/src/client/contract/slots.ts:35"
|
|
5091
5762
|
},
|
|
5092
5763
|
{
|
|
5093
5764
|
key: "tool.call.toolview",
|
|
5094
5765
|
kind: "keyed",
|
|
5095
5766
|
scope: "session",
|
|
5096
|
-
summary: "Keyed
|
|
5097
|
-
doc: "Keyed
|
|
5767
|
+
summary: "Keyed Tool call view dispatched by wire Tool name.",
|
|
5768
|
+
doc: "Keyed Tool call view dispatched by wire Tool name. Any name is allowed,\nincluding tools registered by your package. Register with\n`key: '<tool name>'`; a typo never renders.\n\nRegistering an occupied key replaces its view; unclaimed keys use the\ngeneric row. The owner supplies the call identity and frozen running\nor settled node through ToolCallOwnerProps.",
|
|
5098
5769
|
registerOptions: [{
|
|
5099
5770
|
name: "key",
|
|
5100
5771
|
requirement: "required",
|
|
5101
5772
|
type: "string",
|
|
5102
5773
|
doc: "Your cell key: the entry renders where the owner dispatches this exact key. Registering an already-occupied key replaces that occupant."
|
|
5103
5774
|
}],
|
|
5104
|
-
ownerProps: ["/** Standard owner currency supplied to every atomic Tool view. */\nexport interface ToolCallOwnerProps {\n /** Tool call identity, stable across running and settled forms. */\n callId: string\n /** Wire Tool name and keyed dispatch value. */\n toolName: string\n /** Frozen running call or settled result node. */\n block: ToolCallBlock\n /** Session workspace root for relative summaries. */\n cwd?: string | undefined\n /** Host account home; POSIX home-rooted summaries display as `~`. */\n home?: string | undefined\n /**\n * Open a Tool argument path. A view that knows which line the call was about\n * passes it, and the opened surface lands there.\n */\n openFile: (path: string, options?: OpenFileOptions) => void\n /**\n * Session-authorized image loader for the `tool.call.images` slot, supplied\n * by the chat node that owns this call. A composed chat node always\n * supplies it (`ChatNodeOwnerProps.loadImage` is required), so the tool\n * layer never imports an attachment implementation nor handles URL\n * authorization.\n */\n
|
|
5775
|
+
ownerProps: ["/** Standard owner currency supplied to every atomic Tool view. */\nexport interface ToolCallOwnerProps {\n /** Stable injected Hook; each invocation owns its open state and subscribes to enclosing-Turn resets. */\n useDisclosure: UseDisclosure\n /** Tool call identity, stable across running and settled forms. */\n callId: string\n /** Wire Tool name and keyed dispatch value. */\n toolName: string\n /** Frozen running call or settled result node. */\n block: ToolCallBlock\n /** Session workspace root for relative summaries. */\n cwd?: string | undefined\n /** Host account home; POSIX home-rooted summaries display as `~`. */\n home?: string | undefined\n /**\n * Open a Tool argument path. A view that knows which line the call was about\n * passes it, and the opened surface lands there.\n */\n openFile: (path: string, options?: OpenFileOptions) => void\n /**\n * Session-authorized image loader for the `tool.call.images` slot, supplied\n * by the chat node that owns this call. A composed chat node always\n * supplies it (`ChatNodeOwnerProps.loadImage` is required), so the tool\n * layer never imports an attachment implementation nor handles URL\n * authorization.\n */\n loadIm /* …truncated — full shape in source */"],
|
|
5105
5776
|
ownerPropsReferences: [
|
|
5106
5777
|
"ChatNodeOwnerProps",
|
|
5107
5778
|
"MessageImageLoader",
|
|
5108
|
-
"OpenFileOptions"
|
|
5779
|
+
"OpenFileOptions",
|
|
5780
|
+
"UseDisclosure"
|
|
5109
5781
|
],
|
|
5110
5782
|
standardProps: [
|
|
5111
5783
|
"useResource: UseResource",
|
|
@@ -5124,7 +5796,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
5124
5796
|
"useProjection: UseProjection",
|
|
5125
5797
|
"useTrajectory: UseTrajectory"
|
|
5126
5798
|
],
|
|
5127
|
-
keyDomain: "open: any string the owner dispatches (no compile-time key set), already taken: ask_user_question, bash, cordis_define, cordis_run, cordis_stop, cordis_undefine, edit, glob, grep, present, read, read_image, skill, todo_write, web_fetch, web_search, write",
|
|
5799
|
+
keyDomain: "open: any string the owner dispatches (no compile-time key set), already taken: ask_user_question, bash, cordis_define, cordis_inspect_list, cordis_inspect_query, cordis_inspect_self, cordis_run, cordis_stop, cordis_undefine, create_goal, edit, get_goal, glob, grep, interrupt_agent, job_kill, job_list, job_output, list_agents, list_subagent_models, lsp, present, ralph, read, read_image, schedule_create, schedule_delete, schedule_list, send_message, session_event_read, session_event_search, session_event_trace, session_search, session_trace, skill, spawn_teammate, subagent, team_task_create, team_task_get, team_task_list, team_task_update, terminal_close, terminal_list, terminal_open, terminal_read, terminal_signal, todo_write, update_goal, wait_agent, web_fetch, web_search, workflow, write",
|
|
5128
5800
|
hookContext: "",
|
|
5129
5801
|
slotInject: "",
|
|
5130
5802
|
declaredBy: "an entry in 'conversation.chat.node' (client-ui-tool), so it exists while that entry is mounted",
|
|
@@ -5133,6 +5805,42 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
5133
5805
|
"client-ui-skill SkillRow key 'skill'",
|
|
5134
5806
|
"client-ui-tool AskQuestionRow key 'ask_user_question'",
|
|
5135
5807
|
"client-ui-tool BashRow key 'bash'",
|
|
5808
|
+
"client-ui-tool DetailsRow key 'create_goal'",
|
|
5809
|
+
"client-ui-tool DetailsRow key 'get_goal'",
|
|
5810
|
+
"client-ui-tool DetailsRow key 'update_goal'",
|
|
5811
|
+
"client-ui-tool DetailsRow key 'schedule_create'",
|
|
5812
|
+
"client-ui-tool DetailsRow key 'schedule_list'",
|
|
5813
|
+
"client-ui-tool DetailsRow key 'schedule_delete'",
|
|
5814
|
+
"client-ui-tool DetailsRow key 'cordis_inspect_list'",
|
|
5815
|
+
"client-ui-tool DetailsRow key 'cordis_inspect_query'",
|
|
5816
|
+
"client-ui-tool DetailsRow key 'cordis_inspect_self'",
|
|
5817
|
+
"client-ui-tool DetailsRow key 'workflow'",
|
|
5818
|
+
"client-ui-tool DetailsRow key 'ralph'",
|
|
5819
|
+
"client-ui-tool DetailsRow key 'session_event_read'",
|
|
5820
|
+
"client-ui-tool DetailsRow key 'session_event_search'",
|
|
5821
|
+
"client-ui-tool DetailsRow key 'session_event_trace'",
|
|
5822
|
+
"client-ui-tool DetailsRow key 'session_search'",
|
|
5823
|
+
"client-ui-tool DetailsRow key 'session_trace'",
|
|
5824
|
+
"client-ui-tool DetailsRow key 'list_subagent_models'",
|
|
5825
|
+
"client-ui-tool DetailsRow key 'subagent'",
|
|
5826
|
+
"client-ui-tool DetailsRow key 'list_agents'",
|
|
5827
|
+
"client-ui-tool DetailsRow key 'send_message'",
|
|
5828
|
+
"client-ui-tool DetailsRow key 'interrupt_agent'",
|
|
5829
|
+
"client-ui-tool DetailsRow key 'job_list'",
|
|
5830
|
+
"client-ui-tool DetailsRow key 'job_output'",
|
|
5831
|
+
"client-ui-tool DetailsRow key 'job_kill'",
|
|
5832
|
+
"client-ui-tool DetailsRow key 'terminal_open'",
|
|
5833
|
+
"client-ui-tool DetailsRow key 'terminal_read'",
|
|
5834
|
+
"client-ui-tool DetailsRow key 'terminal_list'",
|
|
5835
|
+
"client-ui-tool DetailsRow key 'terminal_signal'",
|
|
5836
|
+
"client-ui-tool DetailsRow key 'terminal_close'",
|
|
5837
|
+
"client-ui-tool DetailsRow key 'lsp'",
|
|
5838
|
+
"client-ui-tool DetailsRow key 'spawn_teammate'",
|
|
5839
|
+
"client-ui-tool DetailsRow key 'team_task_create'",
|
|
5840
|
+
"client-ui-tool DetailsRow key 'team_task_get'",
|
|
5841
|
+
"client-ui-tool DetailsRow key 'team_task_update'",
|
|
5842
|
+
"client-ui-tool DetailsRow key 'team_task_list'",
|
|
5843
|
+
"client-ui-tool DetailsRow key 'wait_agent'",
|
|
5136
5844
|
"client-ui-tool FileMutationRow key 'edit'",
|
|
5137
5845
|
"client-ui-tool FileMutationRow key 'write'",
|
|
5138
5846
|
"client-ui-tool ReadImageRow key 'read_image'",
|
|
@@ -5149,7 +5857,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
5149
5857
|
],
|
|
5150
5858
|
replaceRisk: "shadows-shipped-ui",
|
|
5151
5859
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('tool.call.toolview', () => ctx.slots.register(\n { name: 'tool.call.toolview', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
5152
|
-
source: "packages/client/ui-tool/src/client/contract/slots.ts:
|
|
5860
|
+
source: "packages/client/ui-tool/src/client/contract/slots.ts:21"
|
|
5153
5861
|
},
|
|
5154
5862
|
{
|
|
5155
5863
|
key: "tool.view.cordis",
|