@deepseek-ai/dsh-cordis-client-runner 0.1.2-rc.1 → 0.1.5-alpha.1
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/README.i18n.yaml +2 -2
- package/README.md +0 -1
- package/README.zh.md +0 -1
- package/lib/client.js +385 -101
- package/package.json +6 -6
package/README.i18n.yaml
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
|
3
3
|
# after editing either side, bring the other along and re-record with:
|
|
4
4
|
# pnpm run verify-translation-pairing --write packages/extensions/cordis-client-runner/README.md
|
|
5
|
-
README.md:
|
|
6
|
-
README.zh.md:
|
|
5
|
+
README.md: 260d4703bda2560a4254962d7b868221d0328ec8
|
|
6
|
+
README.zh.md: a74128508c5b6a81d0600452b6ec5301bf7c8dcb
|
package/README.md
CHANGED
|
@@ -83,7 +83,6 @@ Read these pages when the package-level contract is not enough. They move from t
|
|
|
83
83
|
- [Tool package](../tool-cordis/README.md) — the model-facing tools whose run requests reach this page.
|
|
84
84
|
- [UI package](../ui-cordis/README.md) — the panel and cards that operate this face.
|
|
85
85
|
- [Extensions subsystem](../../../docs/subsystems/extensions.md) — the generated `ctx.dynamicCordisRunner` API and `cordis/*` events.
|
|
86
|
-
- [Dynamic client render and attachment ownership Agent Note](../../../.agents/notes/implemented/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.md) — how browser plugins own their rendering and CSS.
|
|
87
86
|
- [Client shells and dynamic packages Agent Note](../../../.agents/notes/implemented/architecture/2026-08-15-client-shells-and-dynamic-packages.md) — package placement and build faces for the client halves.
|
|
88
87
|
|
|
89
88
|
-----
|
package/README.zh.md
CHANGED
|
@@ -83,7 +83,6 @@ kind: "package-reference"
|
|
|
83
83
|
- [工具包](../tool-cordis/README.zh.md)——运行请求到达本页的模型侧工具。
|
|
84
84
|
- [UI 包](../ui-cordis/README.zh.md)——操作这个面的面板与卡片。
|
|
85
85
|
- [extensions 子系统](../../../docs/subsystems/extensions.zh.md)——生成的 `ctx.dynamicCordisRunner` API 与 `cordis/*` 事件。
|
|
86
|
-
- [动态客户端渲染与附件归属 Agent Note](../../../.agents/notes/implemented/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.zh.md)——浏览器插件如何拥有自己的渲染与 CSS。
|
|
87
86
|
- [客户端外壳与动态包 Agent Note](../../../.agents/notes/implemented/architecture/2026-08-15-client-shells-and-dynamic-packages.zh.md)——浏览器半的包归属与构建面。
|
|
88
87
|
|
|
89
88
|
-----
|
package/lib/client.js
CHANGED
|
@@ -1123,13 +1123,19 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
1123
1123
|
parameters: []
|
|
1124
1124
|
},
|
|
1125
1125
|
{
|
|
1126
|
-
signature: "
|
|
1127
|
-
description: "
|
|
1128
|
-
parameters: [
|
|
1126
|
+
signature: "openRightbar(track: boolean, fullscreen: boolean): void",
|
|
1127
|
+
description: "Report the right panel's presentation without changing its expanded state.",
|
|
1128
|
+
parameters: [{
|
|
1129
|
+
name: "track",
|
|
1130
|
+
description: "whether the normal panel width reserves a grid track, including beneath a fullscreen overlay."
|
|
1131
|
+
}, {
|
|
1132
|
+
name: "fullscreen",
|
|
1133
|
+
description: "whether the panel covers the frame and hides its outer resize handle; independent of the underlying grid track."
|
|
1134
|
+
}]
|
|
1129
1135
|
},
|
|
1130
1136
|
{
|
|
1131
|
-
signature: "
|
|
1132
|
-
description: "
|
|
1137
|
+
signature: "closeRightbar(): void",
|
|
1138
|
+
description: "Report the right panel as hidden: no track, no handle.",
|
|
1133
1139
|
parameters: []
|
|
1134
1140
|
}
|
|
1135
1141
|
]
|
|
@@ -1602,13 +1608,17 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
1602
1608
|
name: "AgentContext",
|
|
1603
1609
|
declaration: "export type AgentContext = Omit<Context, 'remote'> & {\n readonly remote: ClientRemote & TypertRemoteScopeApi<'agent'>;\n};"
|
|
1604
1610
|
},
|
|
1611
|
+
{
|
|
1612
|
+
name: "AssistantLiveChunkEvent",
|
|
1613
|
+
declaration: "export interface AssistantLiveChunkEvent {\n readonly type: 'assistant/live-chunk';\n readonly seq: number;\n readonly time: number;\n readonly data: {\n readonly attemptId: LlmAttemptId;\n readonly turn: number;\n readonly step: number;\n readonly chunk: StreamChunk;\n };\n}"
|
|
1614
|
+
},
|
|
1605
1615
|
{
|
|
1606
1616
|
name: "BakedActions",
|
|
1607
1617
|
declaration: "export type BakedActions<T, A extends ActionsDecl<T>> = {\n [K in keyof A]: A[K] extends (draft: T, ...params: infer P) => void ? (...params: P) => void : never;\n};"
|
|
1608
1618
|
},
|
|
1609
1619
|
{
|
|
1610
1620
|
name: "BeginSubmissionInput",
|
|
1611
|
-
declaration: "export interface BeginSubmissionInput {\n readonly mode: 'queue' | 'steer';\n readonly text: string;\n readonly
|
|
1621
|
+
declaration: "export interface BeginSubmissionInput {\n readonly mode: 'queue' | 'steer';\n readonly text: string;\n readonly attachments: readonly PendingSubmissionAttachment[];\n readonly onRetire?: (retirement: PendingSubmissionRetirement) => void;\n}"
|
|
1612
1622
|
},
|
|
1613
1623
|
{
|
|
1614
1624
|
name: "BoundActions",
|
|
@@ -1630,10 +1640,6 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
1630
1640
|
name: "ChildrenDecl",
|
|
1631
1641
|
declaration: "export type ChildrenDecl = {\n [P in keyof SlotMap & string]?: SlotSpec<SlotMap[P]>;\n};"
|
|
1632
1642
|
},
|
|
1633
|
-
{
|
|
1634
|
-
name: "ChunkRowEvent",
|
|
1635
|
-
declaration: "export type ChunkRowEvent = {\n [Kind in ChunkRow['type']]: {\n readonly type: `chunkrow/${Kind}`;\n readonly seq: number;\n readonly time: number;\n readonly data: Extract<ChunkRow, {\n readonly type: Kind;\n }>['data'];\n };\n}[ChunkRow['type']];"
|
|
1636
|
-
},
|
|
1637
1643
|
{
|
|
1638
1644
|
name: "ClientConnectionRpc",
|
|
1639
1645
|
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}"
|
|
@@ -1650,10 +1656,6 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
1650
1656
|
name: "ComposedProps",
|
|
1651
1657
|
declaration: "export type ComposedProps<K extends keyof SlotMap & string, EntryKey extends EntryKeyOf<K>, S extends keyof SlotMap & string, H, I extends object, M = never, N = undefined> = PropsRuntime<K, EntryKey> & PropsRenderSlots<S> & PropsStore<H> & InjectFace<I> & MatchedShare<SlotMap[K], M> & PropsLocale<N>;"
|
|
1652
1658
|
},
|
|
1653
|
-
{
|
|
1654
|
-
name: "ConnectionConfig",
|
|
1655
|
-
declaration: "export interface ConnectionConfig {\n backoffBaseMs?: number;\n backoffFactor?: number;\n backoffMaxMs?: number;\n generationReadyTimeoutMs?: number;\n}"
|
|
1656
|
-
},
|
|
1657
1659
|
{
|
|
1658
1660
|
name: "ConnectionGeneration",
|
|
1659
1661
|
declaration: "export interface ConnectionGeneration {\n readonly id: number;\n readonly host: ConnectionHostInfo;\n}"
|
|
@@ -1668,7 +1670,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
1668
1670
|
},
|
|
1669
1671
|
{
|
|
1670
1672
|
name: "ConnectionHandle",
|
|
1671
|
-
declaration: "export interface ConnectionHandle {\n readonly isLoopback: boolean;\n readonly generation: ConnectionGenerationState;\n readonly state: ConnectionStateSource;\n readonly rpc: ClientConnectionRpc;\n reconnect(): void;\n registerGenerationSource(source: ConnectionGenerationSource): () => void;\n start(sinks: ConnectionSinks, config?:
|
|
1673
|
+
declaration: "export interface ConnectionHandle {\n readonly isLoopback: boolean;\n readonly generation: ConnectionGenerationState;\n readonly state: ConnectionStateSource;\n readonly rpc: ClientConnectionRpc;\n reconnect(): void;\n registerGenerationSource(source: ConnectionGenerationSource): () => void;\n start(sinks: ConnectionSinks, config?: ConnectionRecoveryConfig): ConnectionLoop;\n}"
|
|
1672
1674
|
},
|
|
1673
1675
|
{
|
|
1674
1676
|
name: "ConnectionHostInfo",
|
|
@@ -1678,6 +1680,10 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
1678
1680
|
name: "ConnectionLoop",
|
|
1679
1681
|
declaration: "export interface ConnectionLoop {\n stop(): void;\n}"
|
|
1680
1682
|
},
|
|
1683
|
+
{
|
|
1684
|
+
name: "ConnectionRecoveryConfig",
|
|
1685
|
+
declaration: "export interface ConnectionRecoveryConfig {\n backoffBaseMs?: number;\n backoffFactor?: number;\n backoffMaxMs?: number;\n generationReadyWarnMs?: number;\n generationReadyTimeoutMs?: number;\n}"
|
|
1686
|
+
},
|
|
1681
1687
|
{
|
|
1682
1688
|
name: "ConnectionRpcFailure",
|
|
1683
1689
|
declaration: "export interface ConnectionRpcFailure {\n readonly code: string;\n readonly message: string;\n readonly details: object;\n}"
|
|
@@ -1796,19 +1802,31 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
1796
1802
|
},
|
|
1797
1803
|
{
|
|
1798
1804
|
name: "PendingSubmission",
|
|
1799
|
-
declaration: "export interface PendingSubmission {\n readonly requestId: SessionRequestId;\n readonly placement: PendingSubmissionPlacement;\n readonly time: number;\n readonly text: string;\n readonly
|
|
1805
|
+
declaration: "export interface PendingSubmission {\n readonly requestId: SessionRequestId;\n readonly placement: PendingSubmissionPlacement;\n readonly time: number;\n readonly text: string;\n readonly attachments: readonly PendingSubmissionAttachment[];\n}"
|
|
1806
|
+
},
|
|
1807
|
+
{
|
|
1808
|
+
name: "PendingSubmissionAttachment",
|
|
1809
|
+
declaration: "export type PendingSubmissionAttachment = PendingSubmissionImageAttachment | PendingSubmissionFileAttachment;"
|
|
1810
|
+
},
|
|
1811
|
+
{
|
|
1812
|
+
name: "PendingSubmissionFileAttachment",
|
|
1813
|
+
declaration: "export interface PendingSubmissionFileAttachment {\n readonly type: 'file';\n readonly value: FileAttachmentRef;\n}"
|
|
1800
1814
|
},
|
|
1801
1815
|
{
|
|
1802
1816
|
name: "PendingSubmissionImage",
|
|
1803
1817
|
declaration: "export interface PendingSubmissionImage {\n readonly previewUrl: string;\n readonly name?: string;\n readonly width?: number;\n readonly height?: number;\n}"
|
|
1804
1818
|
},
|
|
1819
|
+
{
|
|
1820
|
+
name: "PendingSubmissionImageAttachment",
|
|
1821
|
+
declaration: "export interface PendingSubmissionImageAttachment {\n readonly type: 'image';\n readonly value: PendingSubmissionImage;\n}"
|
|
1822
|
+
},
|
|
1805
1823
|
{
|
|
1806
1824
|
name: "PendingSubmissionPlacement",
|
|
1807
1825
|
declaration: "export type PendingSubmissionPlacement = 'transcript' | 'queued' | 'steering';"
|
|
1808
1826
|
},
|
|
1809
1827
|
{
|
|
1810
1828
|
name: "PendingSubmissionRetirement",
|
|
1811
|
-
declaration: "export type PendingSubmissionRetirement = {\n readonly reason: 'observed';\n readonly attachments: readonly ImageAttachmentRef[];\n} | {\n readonly reason: 'failed';\n};"
|
|
1829
|
+
declaration: "export type PendingSubmissionRetirement = {\n readonly reason: 'observed';\n readonly attachments: readonly (ImageAttachmentRef | FileAttachmentRef)[];\n} | {\n readonly reason: 'failed';\n};"
|
|
1812
1830
|
},
|
|
1813
1831
|
{
|
|
1814
1832
|
name: "ProjectionsFace",
|
|
@@ -1816,7 +1834,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
1816
1834
|
},
|
|
1817
1835
|
{
|
|
1818
1836
|
name: "PromptContentPart",
|
|
1819
|
-
declaration: "export type PromptContentPart = {\n readonly type: 'text';\n readonly text: string;\n} | {\n readonly type: 'image';\n readonly mediaType: ImageMediaType;\n readonly data: string;\n readonly name?: string;\n};"
|
|
1837
|
+
declaration: "export type PromptContentPart = {\n readonly type: 'text';\n readonly text: string;\n} | {\n readonly type: 'image';\n readonly mediaType: ImageMediaType;\n readonly data: string;\n readonly name?: string;\n} | {\n readonly type: 'file';\n readonly receiptId: Branded<'file-upload-receipt-id'>;\n};"
|
|
1820
1838
|
},
|
|
1821
1839
|
{
|
|
1822
1840
|
name: "PromptError",
|
|
@@ -1878,17 +1896,21 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
1878
1896
|
name: "SessionAreaProps",
|
|
1879
1897
|
declaration: "export interface SessionAreaProps {\n empty?: (() => ReactNode) | undefined;\n children: ReactNode;\n}"
|
|
1880
1898
|
},
|
|
1899
|
+
{
|
|
1900
|
+
name: "SessionAssistantSettlementEntry",
|
|
1901
|
+
declaration: "export interface SessionAssistantSettlementEntry {\n readonly type: 'event';\n readonly event: SessionEvent<'assistant/message'> | SessionEvent<'assistant/attempt'>;\n}"
|
|
1902
|
+
},
|
|
1881
1903
|
{
|
|
1882
1904
|
name: "SessionBinding",
|
|
1883
1905
|
declaration: "export interface SessionBinding {\n readonly sessionId: SessionId;\n readonly session: SessionFace;\n readonly eventSource: SessionEventSource;\n readonly ctx: AgentContext;\n}"
|
|
1884
1906
|
},
|
|
1885
1907
|
{
|
|
1886
1908
|
name: "SessionEventChange",
|
|
1887
|
-
declaration: "export type SessionEventChange = {\n readonly kind: 'replace';\n readonly entries: readonly SessionEventLikeEntry[];\n} | {\n readonly kind: 'prepend';\n readonly entries: readonly SessionEventLikeEntry[];\n} | {\n readonly kind: 'append';\n readonly entries: readonly
|
|
1909
|
+
declaration: "export type SessionEventChange = {\n readonly kind: 'replace';\n readonly entries: readonly SessionEventLikeEntry[];\n} | {\n readonly kind: 'prepend';\n readonly entries: readonly SessionEventLikeEntry[];\n} | {\n readonly kind: 'append';\n readonly entries: readonly SessionEventLikeEntry[];\n} | {\n readonly kind: 'settle-assistant';\n readonly attemptId: LlmAttemptId;\n readonly entry?: SessionAssistantSettlementEntry;\n};"
|
|
1888
1910
|
},
|
|
1889
1911
|
{
|
|
1890
1912
|
name: "SessionEventLikeEntry",
|
|
1891
|
-
declaration: "export type SessionEventLikeEntry = {\n readonly type: 'event';\n readonly event: SessionEvent;\n} | {\n readonly type: '
|
|
1913
|
+
declaration: "export type SessionEventLikeEntry = {\n readonly type: 'event';\n readonly event: SessionEvent;\n} | {\n readonly type: 'transient';\n readonly event: AssistantLiveChunkEvent;\n};"
|
|
1892
1914
|
},
|
|
1893
1915
|
{
|
|
1894
1916
|
name: "SessionEventSource",
|
|
@@ -1906,10 +1928,6 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
1906
1928
|
name: "SessionIdOf",
|
|
1907
1929
|
declaration: "export type SessionIdOf = SessionStandardProps extends {\n sessionId: infer S;\n} ? S : string;"
|
|
1908
1930
|
},
|
|
1909
|
-
{
|
|
1910
|
-
name: "SessionLiveEventEntry",
|
|
1911
|
-
declaration: "export type SessionLiveEventEntry = Extract<SessionEventLikeEntry, {\n readonly type: 'event';\n}>;"
|
|
1912
|
-
},
|
|
1913
1931
|
{
|
|
1914
1932
|
name: "SessionMaybeStandardProps",
|
|
1915
1933
|
declaration: "export interface SessionMaybeStandardProps {\n}"
|
|
@@ -2143,6 +2161,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2143
2161
|
ownerProps: ["/** Conversation owner share: business state and actions belong to the registrant. */\nexport interface ConvOwnerProps {}"],
|
|
2144
2162
|
ownerPropsReferences: [],
|
|
2145
2163
|
standardProps: [
|
|
2164
|
+
"useResource: UseResource",
|
|
2146
2165
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2147
2166
|
"useSessions: UseSessions",
|
|
2148
2167
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2173,6 +2192,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2173
2192
|
ownerProps: ["/** Stable identity handed to an optional approval-detail renderer. */\nexport interface ApprovalDetailOwnerProps {\n /** Tool call correlated with the request. */\n callId: ToolCallId\n}"],
|
|
2174
2193
|
ownerPropsReferences: [],
|
|
2175
2194
|
standardProps: [
|
|
2195
|
+
"useResource: UseResource",
|
|
2176
2196
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2177
2197
|
"useSessions: UseSessions",
|
|
2178
2198
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2224,6 +2244,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2224
2244
|
ownerProps: ["/** Owner currency of finalized-assistant actions. */\nexport interface AssistantActionOwnerProps {\n messageId: MessageId\n}"],
|
|
2225
2245
|
ownerPropsReferences: ["MessageId"],
|
|
2226
2246
|
standardProps: [
|
|
2247
|
+
"useResource: UseResource",
|
|
2227
2248
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2228
2249
|
"useSessions: UseSessions",
|
|
2229
2250
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2244,7 +2265,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2244
2265
|
occupants: ["client-ui-message-feedback MessageFeedbackActions id 'feedback'"],
|
|
2245
2266
|
replaceRisk: "none",
|
|
2246
2267
|
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}",
|
|
2247
|
-
source: "packages/client/ui-chat/src/client/contract/slots.ts:
|
|
2268
|
+
source: "packages/client/ui-chat/src/client/contract/slots.ts:212"
|
|
2248
2269
|
},
|
|
2249
2270
|
{
|
|
2250
2271
|
key: "conversation.chat.commandview",
|
|
@@ -2265,6 +2286,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2265
2286
|
"CompactionSummaryNode"
|
|
2266
2287
|
],
|
|
2267
2288
|
standardProps: [
|
|
2289
|
+
"useResource: UseResource",
|
|
2268
2290
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2269
2291
|
"useSessions: UseSessions",
|
|
2270
2292
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2285,7 +2307,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2285
2307
|
occupants: [],
|
|
2286
2308
|
replaceRisk: "none",
|
|
2287
2309
|
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}",
|
|
2288
|
-
source: "packages/client/ui-chat/src/client/contract/slots.ts:
|
|
2310
|
+
source: "packages/client/ui-chat/src/client/contract/slots.ts:200"
|
|
2289
2311
|
},
|
|
2290
2312
|
{
|
|
2291
2313
|
key: "conversation.chat.node",
|
|
@@ -2299,14 +2321,17 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2299
2321
|
type: "string",
|
|
2300
2322
|
doc: "Your cell key: the entry renders where the owner dispatches this exact key. Registering an already-occupied key replaces that occupant."
|
|
2301
2323
|
}],
|
|
2302
|
-
ownerProps: ["/** Stable owner currency delivered to a keyed Chat renderer. */\nexport interface ChatNodeOwnerProps {\n
|
|
2324
|
+
ownerProps: ["/** Stable owner currency delivered to a keyed Chat renderer. */\nexport interface ChatNodeOwnerProps {\n cwd?: string | undefined\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}"],
|
|
2303
2325
|
ownerPropsReferences: [
|
|
2304
2326
|
"MarkdownFileMentions",
|
|
2327
|
+
"MessageImageLoader",
|
|
2328
|
+
"OpenFileOptions",
|
|
2305
2329
|
"RenderMessageImages",
|
|
2306
2330
|
"TurnProcessOwnerProps",
|
|
2307
2331
|
"TurnTailOwnerProps"
|
|
2308
2332
|
],
|
|
2309
2333
|
standardProps: [
|
|
2334
|
+
"useResource: UseResource",
|
|
2310
2335
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2311
2336
|
"useSessions: UseSessions",
|
|
2312
2337
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2345,7 +2370,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2345
2370
|
],
|
|
2346
2371
|
replaceRisk: "shadows-shipped-ui",
|
|
2347
2372
|
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}",
|
|
2348
|
-
source: "packages/client/ui-chat/src/client/contract/slots.ts:
|
|
2373
|
+
source: "packages/client/ui-chat/src/client/contract/slots.ts:181"
|
|
2349
2374
|
},
|
|
2350
2375
|
{
|
|
2351
2376
|
key: "conversation.chat.turnTail",
|
|
@@ -2362,6 +2387,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2362
2387
|
ownerProps: ["/** Owner currency of the completed-Turn extension chain. */\nexport interface TurnTailOwnerProps {\n turn: TurnLocation\n seq: number\n openFile: (path: string) => void\n}"],
|
|
2363
2388
|
ownerPropsReferences: ["TurnLocation"],
|
|
2364
2389
|
standardProps: [
|
|
2390
|
+
"useResource: UseResource",
|
|
2365
2391
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2366
2392
|
"useSessions: UseSessions",
|
|
2367
2393
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2382,7 +2408,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2382
2408
|
occupants: ["client-ui-deliverables ProducedFiles"],
|
|
2383
2409
|
replaceRisk: "none",
|
|
2384
2410
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.chat.turnTail', () => ctx.slots.register(\n { name: 'conversation.chat.turnTail', select: owner => null },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
2385
|
-
source: "packages/client/ui-chat/src/client/contract/slots.ts:
|
|
2411
|
+
source: "packages/client/ui-chat/src/client/contract/slots.ts:206"
|
|
2386
2412
|
},
|
|
2387
2413
|
{
|
|
2388
2414
|
key: "conversation.composer",
|
|
@@ -2403,6 +2429,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2403
2429
|
"SessionSnapshot"
|
|
2404
2430
|
],
|
|
2405
2431
|
standardProps: [
|
|
2432
|
+
"useResource: UseResource",
|
|
2406
2433
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2407
2434
|
"useSessions: UseSessions",
|
|
2408
2435
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2427,7 +2454,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2427
2454
|
],
|
|
2428
2455
|
replaceRisk: "none",
|
|
2429
2456
|
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}",
|
|
2430
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2457
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:157"
|
|
2431
2458
|
},
|
|
2432
2459
|
{
|
|
2433
2460
|
key: "conversation.composer.bar",
|
|
@@ -2439,6 +2466,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2439
2466
|
ownerProps: ["/** Owner share of the resident composer bar. */\nexport interface ComposerBarOwnerProps {\n /** Hero uses centered placement; composer uses the active bottom placement. */\n variant: 'hero' | 'composer'\n /** A feature-owned reason that makes message input inert while leaving model selection live. */\n blocked?: { readonly reason: string }\n /** Lock all message actions while preserving the resident composer surface. */\n disabled?: boolean\n /** Whether the shared Workspace picker is expanded. */\n workspacePickerOpen?: boolean\n /** Open the Workspace picker from the inert composer surface. */\n onRequestWorkspace?: () => void\n placeholder?: string\n /** Optional content rendered above the composer surface. */\n accessory?: ReactNode\n}"],
|
|
2440
2467
|
ownerPropsReferences: ["Workspace"],
|
|
2441
2468
|
standardProps: [
|
|
2469
|
+
"useResource: UseResource",
|
|
2442
2470
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2443
2471
|
"useSessions: UseSessions",
|
|
2444
2472
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2457,7 +2485,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2457
2485
|
occupants: ["client-ui-conversation InputBar"],
|
|
2458
2486
|
replaceRisk: "shadows-shipped-ui",
|
|
2459
2487
|
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}",
|
|
2460
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2488
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:175"
|
|
2461
2489
|
},
|
|
2462
2490
|
{
|
|
2463
2491
|
key: "conversation.composer.dock",
|
|
@@ -2488,6 +2516,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2488
2516
|
ownerProps: [],
|
|
2489
2517
|
ownerPropsReferences: [],
|
|
2490
2518
|
standardProps: [
|
|
2519
|
+
"useResource: UseResource",
|
|
2491
2520
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2492
2521
|
"useSessions: UseSessions",
|
|
2493
2522
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2505,42 +2534,10 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2505
2534
|
hookContext: "",
|
|
2506
2535
|
slotInject: "",
|
|
2507
2536
|
declaredBy: "an entry in 'conversation.composer.bar' (client-ui-conversation), so it exists while that entry is mounted",
|
|
2508
|
-
occupants: ["client-ui-chat
|
|
2537
|
+
occupants: ["client-ui-chat StatsPills id 'stats'"],
|
|
2509
2538
|
replaceRisk: "none",
|
|
2510
2539
|
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}",
|
|
2511
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2512
|
-
},
|
|
2513
|
-
{
|
|
2514
|
-
key: "conversation.details.tool",
|
|
2515
|
-
kind: "single",
|
|
2516
|
-
scope: "session",
|
|
2517
|
-
summary: "Whole details-panel body for the selected Tool call.",
|
|
2518
|
-
doc: "Whole details-panel body for the selected Tool call. The component receives\nthe running or settled block and optional workspace root. A registration\nreplaces the shipped Tool details renderer; absence uses the raw fallback.",
|
|
2519
|
-
registerOptions: [],
|
|
2520
|
-
ownerProps: ["/** Tool block rendered in the details panel. */\nexport interface DetailsToolOwnerProps {\n block: ToolCallBlock\n cwd?: string | undefined\n}"],
|
|
2521
|
-
ownerPropsReferences: [],
|
|
2522
|
-
standardProps: [
|
|
2523
|
-
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2524
|
-
"useSessions: UseSessions",
|
|
2525
|
-
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
2526
|
-
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2527
|
-
"useChat: UseChat",
|
|
2528
|
-
"useConversation: UseConversation",
|
|
2529
|
-
"useInput: SnapshotSelectorHook<InputState>",
|
|
2530
|
-
"inputActions: InputActions",
|
|
2531
|
-
"useSession: SessionSnapshotSelector",
|
|
2532
|
-
"sessionId: SessionId",
|
|
2533
|
-
"useProjection: UseProjection",
|
|
2534
|
-
"useTrajectory: UseTrajectory"
|
|
2535
|
-
],
|
|
2536
|
-
keyDomain: "",
|
|
2537
|
-
hookContext: "",
|
|
2538
|
-
slotInject: "",
|
|
2539
|
-
declaredBy: "an entry in 'details' (client-ui-chat), so it exists while that entry is mounted",
|
|
2540
|
-
occupants: ["client-ui-tool ToolDetails"],
|
|
2541
|
-
replaceRisk: "shadows-shipped-ui",
|
|
2542
|
-
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.details.tool', () => ctx.slots.register(\n { name: 'conversation.details.tool' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
2543
|
-
source: "packages/client/ui-chat/src/client/contract/slots.ts:227"
|
|
2540
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:169"
|
|
2544
2541
|
},
|
|
2545
2542
|
{
|
|
2546
2543
|
key: "conversation.hero.agentPreset",
|
|
@@ -2552,6 +2549,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2552
2549
|
ownerProps: ["/** Owner share of the Hero agent-preset control. */\nexport interface HeroAgentPresetOwnerProps {\n /** Marker field: the occupant owns its roster and staged selection. */\n children?: never\n}"],
|
|
2553
2550
|
ownerPropsReferences: [],
|
|
2554
2551
|
standardProps: [
|
|
2552
|
+
"useResource: UseResource",
|
|
2555
2553
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2556
2554
|
"useSessions: UseSessions",
|
|
2557
2555
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2564,7 +2562,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2564
2562
|
occupants: ["client-ui-agent-preset AgentPresetSeat"],
|
|
2565
2563
|
replaceRisk: "shadows-shipped-ui",
|
|
2566
2564
|
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}",
|
|
2567
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2565
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:163"
|
|
2568
2566
|
},
|
|
2569
2567
|
{
|
|
2570
2568
|
key: "conversation.hero.brand.mark",
|
|
@@ -2576,6 +2574,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2576
2574
|
ownerProps: ["/** Presentation props supplied to the blank-session brand mark. */\nexport interface HeroBrandMarkOwnerProps {\n /** Requested square edge in pixels. */\n size: number\n /** Host class preserving the surrounding mark geometry. */\n className?: string | undefined\n}"],
|
|
2577
2575
|
ownerPropsReferences: [],
|
|
2578
2576
|
standardProps: [
|
|
2577
|
+
"useResource: UseResource",
|
|
2579
2578
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2580
2579
|
"useSessions: UseSessions",
|
|
2581
2580
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2588,7 +2587,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2588
2587
|
occupants: [],
|
|
2589
2588
|
replaceRisk: "none",
|
|
2590
2589
|
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}",
|
|
2591
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2590
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:161"
|
|
2592
2591
|
},
|
|
2593
2592
|
{
|
|
2594
2593
|
key: "conversation.hero.workspace",
|
|
@@ -2600,6 +2599,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2600
2599
|
ownerProps: ["/** Owner share common to blank-session Workspace pickers. */\nexport interface EmptyWorkspaceOwnerProps {\n open: boolean\n anchorRef?: RefObject<HTMLElement>\n /** Currently selected Workspace, when available. */\n selectedId?: WorkspaceId | undefined\n onPick: (workspaceId: WorkspaceId) => void\n onClose: () => void\n}"],
|
|
2601
2600
|
ownerPropsReferences: ["Workspace"],
|
|
2602
2601
|
standardProps: [
|
|
2602
|
+
"useResource: UseResource",
|
|
2603
2603
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2604
2604
|
"useSessions: UseSessions",
|
|
2605
2605
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2612,7 +2612,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2612
2612
|
occupants: ["client-ui-workspace WorkspacePicker"],
|
|
2613
2613
|
replaceRisk: "shadows-shipped-ui",
|
|
2614
2614
|
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}",
|
|
2615
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2615
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:159"
|
|
2616
2616
|
},
|
|
2617
2617
|
{
|
|
2618
2618
|
key: "conversation.hero.workspace.directoryFlow",
|
|
@@ -2624,6 +2624,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2624
2624
|
ownerProps: ["/**\n * Owner share of the directory-flow holes: the complete conversation between\n * the trigger surface and the picking interaction. The occupant reads `open`\n * to run/render its interaction and reports exactly one outcome per open.\n */\nexport interface DirectoryFlowOwnerProps {\n /** True while a picking interaction is requested; flipping back to false withdraws the request. */\n open: boolean\n /** True while the owner adopts a picked path (`createWorkspace` in flight); occupants disable their commit affordances. */\n busy: boolean\n /** The operator picked a directory (absolute host path); the owner adopts it. */\n onPicked: (path: string) => void\n /** The operator dismissed the interaction; the owner just closes the flow. */\n onCancel: () => void\n /** The interaction itself failed (chooser missing, listing denied); the owner shows its error surface. */\n onError: (message: string) => void\n}"],
|
|
2625
2625
|
ownerPropsReferences: [],
|
|
2626
2626
|
standardProps: [
|
|
2627
|
+
"useResource: UseResource",
|
|
2627
2628
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2628
2629
|
"useSessions: UseSessions",
|
|
2629
2630
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2642,12 +2643,17 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2642
2643
|
key: "conversation.input.attachments",
|
|
2643
2644
|
kind: "single",
|
|
2644
2645
|
scope: "session-maybe",
|
|
2645
|
-
summary: "Optional draft-
|
|
2646
|
-
doc: "Optional draft-
|
|
2646
|
+
summary: "Optional draft-attachment rail and drop target.",
|
|
2647
|
+
doc: "Optional draft-attachment rail and drop target.",
|
|
2647
2648
|
registerOptions: [],
|
|
2648
|
-
ownerProps: ["/** Input state handed to the optional attachment presentation plugin. */\nexport interface ComposerAttachmentsOwnerProps {\n /** Browser-owned draft
|
|
2649
|
-
ownerPropsReferences: [
|
|
2649
|
+
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 /** Add one dropped batch through the composer's validation path. */\n onAddFiles: (files: readonly 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}"],
|
|
2650
|
+
ownerPropsReferences: [
|
|
2651
|
+
"ComposerAttachment",
|
|
2652
|
+
"DraftAttachmentId",
|
|
2653
|
+
"DraftFileUploads"
|
|
2654
|
+
],
|
|
2650
2655
|
standardProps: [
|
|
2656
|
+
"useResource: UseResource",
|
|
2651
2657
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2652
2658
|
"useSessions: UseSessions",
|
|
2653
2659
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2666,7 +2672,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2666
2672
|
occupants: ["client-ui-attachment ComposerAttachments"],
|
|
2667
2673
|
replaceRisk: "shadows-shipped-ui",
|
|
2668
2674
|
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}",
|
|
2669
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2675
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:177"
|
|
2670
2676
|
},
|
|
2671
2677
|
{
|
|
2672
2678
|
key: "conversation.input.dock",
|
|
@@ -2697,6 +2703,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2697
2703
|
ownerProps: ["/** Point-in-time owner values for composer extension entries. */\nexport interface InputZone {\n readonly session: SessionSnapshot\n readonly input: InputState\n}"],
|
|
2698
2704
|
ownerPropsReferences: ["InputState", "SessionSnapshot"],
|
|
2699
2705
|
standardProps: [
|
|
2706
|
+
"useResource: UseResource",
|
|
2700
2707
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2701
2708
|
"useSessions: UseSessions",
|
|
2702
2709
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2721,7 +2728,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2721
2728
|
],
|
|
2722
2729
|
replaceRisk: "none",
|
|
2723
2730
|
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}",
|
|
2724
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2731
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:165"
|
|
2725
2732
|
},
|
|
2726
2733
|
{
|
|
2727
2734
|
key: "conversation.input.left",
|
|
@@ -2752,6 +2759,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2752
2759
|
ownerProps: [],
|
|
2753
2760
|
ownerPropsReferences: [],
|
|
2754
2761
|
standardProps: [
|
|
2762
|
+
"useResource: UseResource",
|
|
2755
2763
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2756
2764
|
"useSessions: UseSessions",
|
|
2757
2765
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2772,7 +2780,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2772
2780
|
occupants: [],
|
|
2773
2781
|
replaceRisk: "none",
|
|
2774
2782
|
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}",
|
|
2775
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2783
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:171"
|
|
2776
2784
|
},
|
|
2777
2785
|
{
|
|
2778
2786
|
key: "conversation.input.model",
|
|
@@ -2784,6 +2792,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2784
2792
|
ownerProps: ["/** Owner share of the named plan and model controls. */\nexport interface InputControlOwnerProps {\n /** Whether the composer currently refuses interaction. */\n locked: boolean\n}"],
|
|
2785
2793
|
ownerPropsReferences: [],
|
|
2786
2794
|
standardProps: [
|
|
2795
|
+
"useResource: UseResource",
|
|
2787
2796
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2788
2797
|
"useSessions: UseSessions",
|
|
2789
2798
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2804,7 +2813,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2804
2813
|
occupants: ["client-ui-model-selection ModelSelect"],
|
|
2805
2814
|
replaceRisk: "shadows-shipped-ui",
|
|
2806
2815
|
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}",
|
|
2807
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2816
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:185"
|
|
2808
2817
|
},
|
|
2809
2818
|
{
|
|
2810
2819
|
key: "conversation.input.overlay",
|
|
@@ -2835,6 +2844,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2835
2844
|
ownerProps: [],
|
|
2836
2845
|
ownerPropsReferences: [],
|
|
2837
2846
|
standardProps: [
|
|
2847
|
+
"useResource: UseResource",
|
|
2838
2848
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2839
2849
|
"useSessions: UseSessions",
|
|
2840
2850
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2855,7 +2865,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2855
2865
|
occupants: ["client-ui-commands PopupSelectView id 'command-popup'", "client-ui-input-trigger MenuView id 'slash-menu'"],
|
|
2856
2866
|
replaceRisk: "none",
|
|
2857
2867
|
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}",
|
|
2858
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2868
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:167"
|
|
2859
2869
|
},
|
|
2860
2870
|
{
|
|
2861
2871
|
key: "conversation.input.plan",
|
|
@@ -2867,6 +2877,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2867
2877
|
ownerProps: ["/** Owner share of the named plan and model controls. */\nexport interface InputControlOwnerProps {\n /** Whether the composer currently refuses interaction. */\n locked: boolean\n}"],
|
|
2868
2878
|
ownerPropsReferences: [],
|
|
2869
2879
|
standardProps: [
|
|
2880
|
+
"useResource: UseResource",
|
|
2870
2881
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2871
2882
|
"useSessions: UseSessions",
|
|
2872
2883
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2887,7 +2898,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2887
2898
|
occupants: ["client-ui-plan PlanChip"],
|
|
2888
2899
|
replaceRisk: "shadows-shipped-ui",
|
|
2889
2900
|
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}",
|
|
2890
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2901
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:183"
|
|
2891
2902
|
},
|
|
2892
2903
|
{
|
|
2893
2904
|
key: "conversation.input.right",
|
|
@@ -2918,6 +2929,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2918
2929
|
ownerProps: [],
|
|
2919
2930
|
ownerPropsReferences: [],
|
|
2920
2931
|
standardProps: [
|
|
2932
|
+
"useResource: UseResource",
|
|
2921
2933
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2922
2934
|
"useSessions: UseSessions",
|
|
2923
2935
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2938,7 +2950,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2938
2950
|
occupants: [],
|
|
2939
2951
|
replaceRisk: "none",
|
|
2940
2952
|
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}",
|
|
2941
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
2953
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:173"
|
|
2942
2954
|
},
|
|
2943
2955
|
{
|
|
2944
2956
|
key: "conversation.message.images",
|
|
@@ -2947,13 +2959,14 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2947
2959
|
summary: "Renderer for one consecutive group of durable message images.",
|
|
2948
2960
|
doc: "Renderer for one consecutive group of durable message images. The owner\nsupplies image references, an authorized loader, and alignment. A\nregistration replaces the shipped gallery; without one, images are omitted.",
|
|
2949
2961
|
registerOptions: [],
|
|
2950
|
-
ownerProps: ["/** Message image group handed to the optional attachment presentation plugin. */\nexport interface MessageImagesOwnerProps {\n /** Durable references or submission-echo previews in source order. */\n images: readonly MessageImageSource[]\n /** Session-authorized image URL loader for the durable arm. */\n loadImage: MessageImageLoader\n /** Horizontal placement inside the owning record. */\n align: 'start' | 'end'\n}"],
|
|
2962
|
+
ownerProps: ["/** Message image group handed to the optional attachment presentation plugin. */\nexport interface MessageImagesOwnerProps {\n /** Durable references or submission-echo previews in source order. */\n images: readonly MessageImageSource[]\n /** Session-authorized image URL loader for the durable arm. */\n loadImage: MessageImageLoader\n /** Horizontal placement inside the owning record. */\n align: 'start' | 'end'\n /** Force every image into the compact message-attachment tile size. */\n compact?: boolean\n}"],
|
|
2951
2963
|
ownerPropsReferences: [
|
|
2952
2964
|
"Message",
|
|
2953
2965
|
"MessageImageLoader",
|
|
2954
2966
|
"MessageImageSource"
|
|
2955
2967
|
],
|
|
2956
2968
|
standardProps: [
|
|
2969
|
+
"useResource: UseResource",
|
|
2957
2970
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2958
2971
|
"useSessions: UseSessions",
|
|
2959
2972
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -2974,7 +2987,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2974
2987
|
occupants: ["client-ui-attachment MessageImages"],
|
|
2975
2988
|
replaceRisk: "shadows-shipped-ui",
|
|
2976
2989
|
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}",
|
|
2977
|
-
source: "packages/client/ui-chat/src/client/contract/slots.ts:
|
|
2990
|
+
source: "packages/client/ui-chat/src/client/contract/slots.ts:194"
|
|
2978
2991
|
},
|
|
2979
2992
|
{
|
|
2980
2993
|
key: "conversation.session",
|
|
@@ -2986,6 +2999,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
2986
2999
|
ownerProps: [],
|
|
2987
3000
|
ownerPropsReferences: [],
|
|
2988
3001
|
standardProps: [
|
|
3002
|
+
"useResource: UseResource",
|
|
2989
3003
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
2990
3004
|
"useSessions: UseSessions",
|
|
2991
3005
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3006,7 +3020,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3006
3020
|
occupants: ["client-ui-conversation ConversationSession"],
|
|
3007
3021
|
replaceRisk: "shadows-shipped-ui",
|
|
3008
3022
|
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}",
|
|
3009
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3023
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:121"
|
|
3010
3024
|
},
|
|
3011
3025
|
{
|
|
3012
3026
|
key: "conversation.session.header",
|
|
@@ -3018,6 +3032,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3018
3032
|
ownerProps: [],
|
|
3019
3033
|
ownerPropsReferences: [],
|
|
3020
3034
|
standardProps: [
|
|
3035
|
+
"useResource: UseResource",
|
|
3021
3036
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3022
3037
|
"useSessions: UseSessions",
|
|
3023
3038
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3038,7 +3053,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3038
3053
|
occupants: ["client-ui-conversation ConversationSessionHeader"],
|
|
3039
3054
|
replaceRisk: "shadows-shipped-ui",
|
|
3040
3055
|
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}",
|
|
3041
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3056
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:123"
|
|
3042
3057
|
},
|
|
3043
3058
|
{
|
|
3044
3059
|
key: "conversation.session.header.actions",
|
|
@@ -3069,6 +3084,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3069
3084
|
ownerProps: ["/** Header actions derive their state from standard Session props. */\nexport interface ConversationHeaderActionOwnerProps {\n /** Marker field: entries receive no owner-specific values. */\n children?: never\n}"],
|
|
3070
3085
|
ownerPropsReferences: [],
|
|
3071
3086
|
standardProps: [
|
|
3087
|
+
"useResource: UseResource",
|
|
3072
3088
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3073
3089
|
"useSessions: UseSessions",
|
|
3074
3090
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3094,7 +3110,40 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3094
3110
|
],
|
|
3095
3111
|
replaceRisk: "none",
|
|
3096
3112
|
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}",
|
|
3097
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3113
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:131"
|
|
3114
|
+
},
|
|
3115
|
+
{
|
|
3116
|
+
key: "conversation.session.header.corner",
|
|
3117
|
+
kind: "single",
|
|
3118
|
+
scope: "session",
|
|
3119
|
+
summary: "The header's far-right corner, past the utilities' edge and into the header's own padding, for one control that must keep its place whether or not it currently shows anything.",
|
|
3120
|
+
doc: "The header's far-right corner, past the utilities' edge and into the\nheader's own padding, for one control that must keep its place whether or\nnot it currently shows anything. The corner reserves its width while an\noccupant is registered, so the utilities beside it never move; an\noccupant with nothing to show renders a same-size placeholder.",
|
|
3121
|
+
registerOptions: [],
|
|
3122
|
+
ownerProps: ["/** The header corner's occupant derives its state from standard Session props. */\nexport interface ConversationHeaderCornerOwnerProps {\n /** Marker field: the occupant receives no owner-specific values. */\n children?: never\n}"],
|
|
3123
|
+
ownerPropsReferences: [],
|
|
3124
|
+
standardProps: [
|
|
3125
|
+
"useResource: UseResource",
|
|
3126
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3127
|
+
"useSessions: UseSessions",
|
|
3128
|
+
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
3129
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3130
|
+
"useChat: UseChat",
|
|
3131
|
+
"useConversation: UseConversation",
|
|
3132
|
+
"useInput: SnapshotSelectorHook<InputState>",
|
|
3133
|
+
"inputActions: InputActions",
|
|
3134
|
+
"useSession: SessionSnapshotSelector",
|
|
3135
|
+
"sessionId: SessionId",
|
|
3136
|
+
"useProjection: UseProjection",
|
|
3137
|
+
"useTrajectory: UseTrajectory"
|
|
3138
|
+
],
|
|
3139
|
+
keyDomain: "",
|
|
3140
|
+
hookContext: "",
|
|
3141
|
+
slotInject: "",
|
|
3142
|
+
declaredBy: "an entry in 'conversation.session.header' (client-ui-conversation), so it exists while that entry is mounted",
|
|
3143
|
+
occupants: ["client-ui-sidebar-right ExpandButton"],
|
|
3144
|
+
replaceRisk: "shadows-shipped-ui",
|
|
3145
|
+
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}",
|
|
3146
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:149"
|
|
3098
3147
|
},
|
|
3099
3148
|
{
|
|
3100
3149
|
key: "conversation.session.header.lineage",
|
|
@@ -3106,6 +3155,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3106
3155
|
ownerProps: ["/** Plain breadcrumb data handed to the optional lineage renderer. */\nexport interface ConversationHeaderLineageOwnerProps {\n /** Session represented by this breadcrumb title. */\n lineageSessionId: SessionId\n /** Display title available to a combined title/control renderer. */\n displayTitle: string\n /** Navigate to an ancestor title when present. */\n openTitle?: () => void\n}"],
|
|
3107
3156
|
ownerPropsReferences: ["SessionId"],
|
|
3108
3157
|
standardProps: [
|
|
3158
|
+
"useResource: UseResource",
|
|
3109
3159
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3110
3160
|
"useSessions: UseSessions",
|
|
3111
3161
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3126,7 +3176,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3126
3176
|
occupants: ["client-ui-subagent SubagentHeaderLineage"],
|
|
3127
3177
|
replaceRisk: "shadows-shipped-ui",
|
|
3128
3178
|
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}",
|
|
3129
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3179
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:125"
|
|
3130
3180
|
},
|
|
3131
3181
|
{
|
|
3132
3182
|
key: "conversation.session.header.utilities",
|
|
@@ -3157,6 +3207,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3157
3207
|
ownerProps: ["/** Header actions derive their state from standard Session props. */\nexport interface ConversationHeaderActionOwnerProps {\n /** Marker field: entries receive no owner-specific values. */\n children?: never\n}"],
|
|
3158
3208
|
ownerPropsReferences: [],
|
|
3159
3209
|
standardProps: [
|
|
3210
|
+
"useResource: UseResource",
|
|
3160
3211
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3161
3212
|
"useSessions: UseSessions",
|
|
3162
3213
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3174,10 +3225,10 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3174
3225
|
hookContext: "",
|
|
3175
3226
|
slotInject: "",
|
|
3176
3227
|
declaredBy: "an entry in 'conversation.session.header' (client-ui-conversation), so it exists while that entry is mounted",
|
|
3177
|
-
occupants: ["session-log-export SessionLogDownloadHeaderAction id 'session-log-download'"],
|
|
3228
|
+
occupants: ["client-ui-open-in-app OpenInAppAction id 'open-in-app'", "session-log-export SessionLogDownloadHeaderAction id 'session-log-download'"],
|
|
3178
3229
|
replaceRisk: "none",
|
|
3179
3230
|
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}",
|
|
3180
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3231
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:137"
|
|
3181
3232
|
},
|
|
3182
3233
|
{
|
|
3183
3234
|
key: "conversation.trajectory.images",
|
|
@@ -3186,13 +3237,14 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3186
3237
|
summary: "Renderer for one group of durable record images in the Trajectory ledger.",
|
|
3187
3238
|
doc: "Renderer for one group of durable record images in the Trajectory\nledger. The owner supplies image references, an authorized loader, and\nalignment. A registration replaces the shipped gallery; without one,\nimages are omitted.",
|
|
3188
3239
|
registerOptions: [],
|
|
3189
|
-
ownerProps: ["/** Message image group handed to the optional attachment presentation plugin. */\nexport interface MessageImagesOwnerProps {\n /** Durable references or submission-echo previews in source order. */\n images: readonly MessageImageSource[]\n /** Session-authorized image URL loader for the durable arm. */\n loadImage: MessageImageLoader\n /** Horizontal placement inside the owning record. */\n align: 'start' | 'end'\n}"],
|
|
3240
|
+
ownerProps: ["/** Message image group handed to the optional attachment presentation plugin. */\nexport interface MessageImagesOwnerProps {\n /** Durable references or submission-echo previews in source order. */\n images: readonly MessageImageSource[]\n /** Session-authorized image URL loader for the durable arm. */\n loadImage: MessageImageLoader\n /** Horizontal placement inside the owning record. */\n align: 'start' | 'end'\n /** Force every image into the compact message-attachment tile size. */\n compact?: boolean\n}"],
|
|
3190
3241
|
ownerPropsReferences: [
|
|
3191
3242
|
"Message",
|
|
3192
3243
|
"MessageImageLoader",
|
|
3193
3244
|
"MessageImageSource"
|
|
3194
3245
|
],
|
|
3195
3246
|
standardProps: [
|
|
3247
|
+
"useResource: UseResource",
|
|
3196
3248
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3197
3249
|
"useSessions: UseSessions",
|
|
3198
3250
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3213,7 +3265,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3213
3265
|
occupants: ["client-ui-attachment MessageImages"],
|
|
3214
3266
|
replaceRisk: "shadows-shipped-ui",
|
|
3215
3267
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.trajectory.images', () => ctx.slots.register(\n { name: 'conversation.trajectory.images' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3216
|
-
source: "packages/client/ui-trajectory/src/client/trajectory-contract.ts:
|
|
3268
|
+
source: "packages/client/ui-trajectory/src/client/trajectory-contract.ts:98"
|
|
3217
3269
|
},
|
|
3218
3270
|
{
|
|
3219
3271
|
key: "conversation.view",
|
|
@@ -3244,6 +3296,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3244
3296
|
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}"],
|
|
3245
3297
|
ownerPropsReferences: ["ConversationViewRequest"],
|
|
3246
3298
|
standardProps: [
|
|
3299
|
+
"useResource: UseResource",
|
|
3247
3300
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3248
3301
|
"useSessions: UseSessions",
|
|
3249
3302
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3264,18 +3317,19 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3264
3317
|
occupants: ["client-ui-chat ChatView id 'chat'", "client-ui-trajectory TrajectoryView id 'trajectory'"],
|
|
3265
3318
|
replaceRisk: "none",
|
|
3266
3319
|
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}",
|
|
3267
|
-
source: "packages/client/ui-conversation/src/client/contract/slots.ts:
|
|
3320
|
+
source: "packages/client/ui-conversation/src/client/contract/slots.ts:155"
|
|
3268
3321
|
},
|
|
3269
3322
|
{
|
|
3270
|
-
key: "
|
|
3323
|
+
key: "rightbar",
|
|
3271
3324
|
kind: "single",
|
|
3272
3325
|
scope: "session",
|
|
3273
|
-
summary: "The right
|
|
3274
|
-
doc: "The right
|
|
3326
|
+
summary: "The right column: a track the centre makes room for, or nothing.",
|
|
3327
|
+
doc: "The right column: a track the centre makes room for, or nothing. OCCUPIED\nby the right Sidebar, which uses the resolved column width in normal\nmode and covers the viewport in fullscreen, retaining the wide-screen\ncolumn reservation underneath.\n\nWhether the panel is shown, and whether it takes a track, is the\noccupant's own recorded business — it reports the composition of its\nexpanded and presentation state through `ctx.layout`, and the frame sizes\nthe track and places the resize handle from that. The expand control is\nnot this column's: it is a button in the conversation header. With no\ncurrent session nothing is mounted here.",
|
|
3275
3328
|
registerOptions: [],
|
|
3276
|
-
ownerProps: ["/**
|
|
3329
|
+
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}"],
|
|
3277
3330
|
ownerPropsReferences: [],
|
|
3278
3331
|
standardProps: [
|
|
3332
|
+
"useResource: UseResource",
|
|
3279
3333
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3280
3334
|
"useSessions: UseSessions",
|
|
3281
3335
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3293,10 +3347,10 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3293
3347
|
hookContext: "",
|
|
3294
3348
|
slotInject: "",
|
|
3295
3349
|
declaredBy: "an entry in 'root' (client-ui-layout), so it exists while that entry is mounted",
|
|
3296
|
-
occupants: ["client-ui-
|
|
3350
|
+
occupants: ["client-ui-sidebar-right RightbarSeat"],
|
|
3297
3351
|
replaceRisk: "shadows-shipped-ui",
|
|
3298
|
-
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('
|
|
3299
|
-
source: "packages/client/ui-layout/src/client/index.ts:
|
|
3352
|
+
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('rightbar', () => ctx.slots.register(\n { name: 'rightbar' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3353
|
+
source: "packages/client/ui-layout/src/client/index.ts:79"
|
|
3300
3354
|
},
|
|
3301
3355
|
{
|
|
3302
3356
|
key: "root",
|
|
@@ -3308,6 +3362,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3308
3362
|
ownerProps: ["/** Root owner share: the shell supplies nothing — the frame is inject-assembled. */\nexport interface RootOwnerProps { children?: never }"],
|
|
3309
3363
|
ownerPropsReferences: [],
|
|
3310
3364
|
standardProps: [
|
|
3365
|
+
"useResource: UseResource",
|
|
3311
3366
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3312
3367
|
"useSessions: UseSessions",
|
|
3313
3368
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3351,6 +3406,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3351
3406
|
ownerProps: ["/** Owner share of the header title seat (the shell supplies nothing). */\nexport interface SettingsHeaderOwnerProps {\n /** Marker field: header owner props are intentionally empty. */\n children?: never\n}"],
|
|
3352
3407
|
ownerPropsReferences: [],
|
|
3353
3408
|
standardProps: [
|
|
3409
|
+
"useResource: UseResource",
|
|
3354
3410
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3355
3411
|
"useSessions: UseSessions",
|
|
3356
3412
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3375,6 +3431,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3375
3431
|
ownerProps: ["/** Owner share of the header title seat (the shell supplies nothing). */\nexport interface SettingsHeaderOwnerProps {\n /** Marker field: header owner props are intentionally empty. */\n children?: never\n}"],
|
|
3376
3432
|
ownerPropsReferences: [],
|
|
3377
3433
|
standardProps: [
|
|
3434
|
+
"useResource: UseResource",
|
|
3378
3435
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3379
3436
|
"useSessions: UseSessions",
|
|
3380
3437
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3418,6 +3475,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3418
3475
|
ownerProps: ["/** Owner share of a General preference row (the section supplies nothing). */\nexport interface SettingsGeneralItemOwnerProps {\n /** Marker field: item owner props are intentionally empty. */\n children?: never\n}"],
|
|
3419
3476
|
ownerPropsReferences: [],
|
|
3420
3477
|
standardProps: [
|
|
3478
|
+
"useResource: UseResource",
|
|
3421
3479
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3422
3480
|
"useSessions: UseSessions",
|
|
3423
3481
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3449,6 +3507,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3449
3507
|
ownerProps: ["/** Owner share of the header title seat (the shell supplies nothing). */\nexport interface SettingsHeaderOwnerProps {\n /** Marker field: header owner props are intentionally empty. */\n children?: never\n}"],
|
|
3450
3508
|
ownerPropsReferences: [],
|
|
3451
3509
|
standardProps: [
|
|
3510
|
+
"useResource: UseResource",
|
|
3452
3511
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3453
3512
|
"useSessions: UseSessions",
|
|
3454
3513
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3492,6 +3551,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3492
3551
|
ownerProps: ["/** Owner share of the footer area (the section supplies nothing). */\nexport interface ModelsFooterOwnerProps {\n /** Marker field: footer owner props are intentionally empty. */\n children?: never\n}"],
|
|
3493
3552
|
ownerPropsReferences: [],
|
|
3494
3553
|
standardProps: [
|
|
3554
|
+
"useResource: UseResource",
|
|
3495
3555
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3496
3556
|
"useSessions: UseSessions",
|
|
3497
3557
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3521,6 +3581,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3521
3581
|
ownerProps: ["/** Owner share of one provider-card extension occurrence. */\nexport interface ProviderCardExtrasOwnerProps {\n /** The card's directory row (route id, display name, settings address, live state). */\n provider: ProviderDirectoryEntry\n /** Whether any layer configures this provider (its profile resolves); `false` while the add-provider draft edits a dormant row. */\n configured: boolean\n /** Whether the row's referenced api-key credential is confirmed configured (the page's credential join). */\n keyConfigured: boolean\n}"],
|
|
3522
3582
|
ownerPropsReferences: ["ProviderDirectoryEntry"],
|
|
3523
3583
|
standardProps: [
|
|
3584
|
+
"useResource: UseResource",
|
|
3524
3585
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3525
3586
|
"useSessions: UseSessions",
|
|
3526
3587
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3564,6 +3625,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3564
3625
|
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}"],
|
|
3565
3626
|
ownerPropsReferences: [],
|
|
3566
3627
|
standardProps: [
|
|
3628
|
+
"useResource: UseResource",
|
|
3567
3629
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3568
3630
|
"useSessions: UseSessions",
|
|
3569
3631
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3593,6 +3655,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3593
3655
|
ownerProps: ["/** Owner share of a plugin card (the section supplies nothing). */\nexport interface SettingsPluginItemOwnerProps {\n /** Marker field: card owner props are intentionally empty. */\n children?: never\n}"],
|
|
3594
3656
|
ownerPropsReferences: [],
|
|
3595
3657
|
standardProps: [
|
|
3658
|
+
"useResource: UseResource",
|
|
3596
3659
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3597
3660
|
"useSessions: UseSessions",
|
|
3598
3661
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3641,6 +3704,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3641
3704
|
ownerProps: ["/** Owner share of a Plugins tab (the section supplies nothing). */\nexport interface SettingsPluginsTabOwnerProps {\n /** Marker field: tab owner props are intentionally empty. */\n children?: never\n}"],
|
|
3642
3705
|
ownerPropsReferences: [],
|
|
3643
3706
|
standardProps: [
|
|
3707
|
+
"useResource: UseResource",
|
|
3644
3708
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3645
3709
|
"useSessions: UseSessions",
|
|
3646
3710
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3684,6 +3748,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3684
3748
|
ownerProps: ["/**\n * Owner share of a settings section entry. The shell owns modal visibility\n * and navigation; a section's data arrives through its own inject faces and\n * stores. `close` is the one shell affordance a section receives, for flows\n * that leave settings altogether (starting a session from a section) — the\n * onboarding coordinator's `openSection`/`complete` precedent, inverted.\n */\nexport interface SettingsSectionOwnerProps {\n /** Close the settings panel (the shell owns the open state). */\n close: () => void\n}"],
|
|
3685
3749
|
ownerPropsReferences: [],
|
|
3686
3750
|
standardProps: [
|
|
3751
|
+
"useResource: UseResource",
|
|
3687
3752
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3688
3753
|
"useSessions: UseSessions",
|
|
3689
3754
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3713,6 +3778,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3713
3778
|
ownerProps: ["/** Owner share of the trigger content seat: the sidebar column state. */\nexport interface SettingsTriggerOwnerProps {\n /** Whether the sidebar renders wide content (false = 56px rail, icon only). */\n wide: boolean\n}"],
|
|
3714
3779
|
ownerPropsReferences: [],
|
|
3715
3780
|
standardProps: [
|
|
3781
|
+
"useResource: UseResource",
|
|
3716
3782
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3717
3783
|
"useSessions: UseSessions",
|
|
3718
3784
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3756,6 +3822,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3756
3822
|
ownerProps: [],
|
|
3757
3823
|
ownerPropsReferences: [],
|
|
3758
3824
|
standardProps: [
|
|
3825
|
+
"useResource: UseResource",
|
|
3759
3826
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3760
3827
|
"useSessions: UseSessions",
|
|
3761
3828
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3768,7 +3835,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3768
3835
|
occupants: [],
|
|
3769
3836
|
replaceRisk: "none",
|
|
3770
3837
|
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}",
|
|
3771
|
-
source: "packages/client/ui-layout/src/client/index.ts:
|
|
3838
|
+
source: "packages/client/ui-layout/src/client/index.ts:90"
|
|
3772
3839
|
},
|
|
3773
3840
|
{
|
|
3774
3841
|
key: "sidebar",
|
|
@@ -3780,6 +3847,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3780
3847
|
ownerProps: ["/** Sidebar owner share: live column state from the frame's concession solve. */\nexport interface SidebarOwnerProps {\n /** True when the sidebar is closed (the column renders the compact control rail). */\n collapsed: boolean\n /** Rendered column width in px (SIDEBAR_COLLAPSED when collapsed). */\n width: number\n}"],
|
|
3781
3848
|
ownerPropsReferences: [],
|
|
3782
3849
|
standardProps: [
|
|
3850
|
+
"useResource: UseResource",
|
|
3783
3851
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3784
3852
|
"useSessions: UseSessions",
|
|
3785
3853
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3804,6 +3872,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3804
3872
|
ownerProps: ["/** Geometry supplied to the sidebar brand-mark occupant. */\nexport interface SidebarBrandMarkOwnerProps {\n /** Requested square edge in pixels. */\n size: number\n}"],
|
|
3805
3873
|
ownerPropsReferences: [],
|
|
3806
3874
|
standardProps: [
|
|
3875
|
+
"useResource: UseResource",
|
|
3807
3876
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3808
3877
|
"useSessions: UseSessions",
|
|
3809
3878
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3828,6 +3897,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3828
3897
|
ownerProps: ["/** Empty owner share for the sidebar brand-name occupant. */\nexport interface SidebarBrandNameOwnerProps {\n /** Marker field: the occupant owns its own content and width. */\n children?: never\n}"],
|
|
3829
3898
|
ownerPropsReferences: [],
|
|
3830
3899
|
standardProps: [
|
|
3900
|
+
"useResource: UseResource",
|
|
3831
3901
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3832
3902
|
"useSessions: UseSessions",
|
|
3833
3903
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3871,6 +3941,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3871
3941
|
ownerProps: ["/** Owner share of an action rendered beside Settings at the sidebar foot. */\nexport interface SidebarFooterActionOwnerProps {\n /** Whether the sidebar renders wide content (false = 56px rail). */\n wide: boolean\n}"],
|
|
3872
3942
|
ownerPropsReferences: [],
|
|
3873
3943
|
standardProps: [
|
|
3944
|
+
"useResource: UseResource",
|
|
3874
3945
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3875
3946
|
"useSessions: UseSessions",
|
|
3876
3947
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3885,6 +3956,176 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3885
3956
|
example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.footer.action', () => ctx.slots.register(\n { name: 'sidebar.footer.action', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
|
|
3886
3957
|
source: "packages/client/ui-sidebar/src/client/contract/slots.ts:46"
|
|
3887
3958
|
},
|
|
3959
|
+
{
|
|
3960
|
+
key: "sidebar.right.pane.tab",
|
|
3961
|
+
kind: "keyed",
|
|
3962
|
+
scope: "session",
|
|
3963
|
+
summary: "One tab's body, dispatched with the `id` of the type in force for `tab.kind`.",
|
|
3964
|
+
doc: "One tab's body, dispatched with the `id` of the type in force for\n`tab.kind`. A tab type registers here under its definition's `id` and\nreceives every tab of that kind, in every pane, docked or floating. A kind\nwith no type in force renders the owner's \"nothing can view this\" notice\nrather than an empty pane.",
|
|
3965
|
+
registerOptions: [{
|
|
3966
|
+
name: "key",
|
|
3967
|
+
requirement: "required",
|
|
3968
|
+
type: "string",
|
|
3969
|
+
doc: "Your cell key: the entry renders where the owner dispatches this exact key. Registering an already-occupied key replaces that occupant."
|
|
3970
|
+
}],
|
|
3971
|
+
ownerProps: [],
|
|
3972
|
+
ownerPropsReferences: [],
|
|
3973
|
+
standardProps: [
|
|
3974
|
+
"useResource: UseResource",
|
|
3975
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3976
|
+
"useSessions: UseSessions",
|
|
3977
|
+
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
3978
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3979
|
+
"useChat: UseChat",
|
|
3980
|
+
"useConversation: UseConversation",
|
|
3981
|
+
"useInput: SnapshotSelectorHook<InputState>",
|
|
3982
|
+
"inputActions: InputActions",
|
|
3983
|
+
"useSession: SessionSnapshotSelector",
|
|
3984
|
+
"sessionId: SessionId",
|
|
3985
|
+
"useProjection: UseProjection",
|
|
3986
|
+
"useTrajectory: UseTrajectory"
|
|
3987
|
+
],
|
|
3988
|
+
keyDomain: "open: any string the owner dispatches (no compile-time key set), none are taken yet",
|
|
3989
|
+
hookContext: "TabHookContext",
|
|
3990
|
+
slotInject: "SidebarRightTabInjected",
|
|
3991
|
+
declaredBy: "an entry in 'rightbar' (client-ui-sidebar-right), so it exists while that entry is mounted",
|
|
3992
|
+
occupants: [
|
|
3993
|
+
"client-ui-sidebar-files FilesBody",
|
|
3994
|
+
"client-ui-sidebar-right GuideBody",
|
|
3995
|
+
"client-ui-sidebar-textpreview TextPreview"
|
|
3996
|
+
],
|
|
3997
|
+
replaceRisk: "none",
|
|
3998
|
+
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}",
|
|
3999
|
+
source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:47"
|
|
4000
|
+
},
|
|
4001
|
+
{
|
|
4002
|
+
key: "sidebar.right.pane.tab.title",
|
|
4003
|
+
kind: "keyed",
|
|
4004
|
+
scope: "session",
|
|
4005
|
+
summary: "A tab's title as its chip (and a floating panel's header) shows it, dispatched with the same key and information hook as the body.",
|
|
4006
|
+
doc: "A tab's title as its chip (and a floating panel's header) shows it,\ndispatched with the same key and information hook as the body. A type with a\nlive title — a terminal named after its shell, a chat after its first\nline — registers here and reads its own store; one without registers\nnothing and the chip shows the registry's `title(address)` text captured\nat open time.",
|
|
4007
|
+
registerOptions: [{
|
|
4008
|
+
name: "key",
|
|
4009
|
+
requirement: "required",
|
|
4010
|
+
type: "string",
|
|
4011
|
+
doc: "Your cell key: the entry renders where the owner dispatches this exact key. Registering an already-occupied key replaces that occupant."
|
|
4012
|
+
}],
|
|
4013
|
+
ownerProps: [],
|
|
4014
|
+
ownerPropsReferences: [],
|
|
4015
|
+
standardProps: [
|
|
4016
|
+
"useResource: UseResource",
|
|
4017
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
4018
|
+
"useSessions: UseSessions",
|
|
4019
|
+
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
4020
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
4021
|
+
"useChat: UseChat",
|
|
4022
|
+
"useConversation: UseConversation",
|
|
4023
|
+
"useInput: SnapshotSelectorHook<InputState>",
|
|
4024
|
+
"inputActions: InputActions",
|
|
4025
|
+
"useSession: SessionSnapshotSelector",
|
|
4026
|
+
"sessionId: SessionId",
|
|
4027
|
+
"useProjection: UseProjection",
|
|
4028
|
+
"useTrajectory: UseTrajectory"
|
|
4029
|
+
],
|
|
4030
|
+
keyDomain: "open: any string the owner dispatches (no compile-time key set), none are taken yet",
|
|
4031
|
+
hookContext: "TabHookContext",
|
|
4032
|
+
slotInject: "SidebarRightTabInjected",
|
|
4033
|
+
declaredBy: "an entry in 'rightbar' (client-ui-sidebar-right), so it exists while that entry is mounted",
|
|
4034
|
+
occupants: [],
|
|
4035
|
+
replaceRisk: "none",
|
|
4036
|
+
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}",
|
|
4037
|
+
source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:61"
|
|
4038
|
+
},
|
|
4039
|
+
{
|
|
4040
|
+
key: "sidebar.right.tab.guide",
|
|
4041
|
+
kind: "chain",
|
|
4042
|
+
scope: "session",
|
|
4043
|
+
summary: "The guide tab's body.",
|
|
4044
|
+
doc: "The guide tab's body. Selectors run in chain order and the first\nnon-declining entry replaces the shipped guide entirely; with no entry, or\nwith every entry declining, the shipped guide renders.",
|
|
4045
|
+
registerOptions: [{
|
|
4046
|
+
name: "select",
|
|
4047
|
+
requirement: "required",
|
|
4048
|
+
type: "(owner) => unknown | null",
|
|
4049
|
+
doc: "Pure routing selector. Entries are tried in ascending order; the first non-null result wins and arrives as the component's `matched` prop. All-null falls through to the owner's fallback."
|
|
4050
|
+
}],
|
|
4051
|
+
ownerProps: [],
|
|
4052
|
+
ownerPropsReferences: [],
|
|
4053
|
+
standardProps: [
|
|
4054
|
+
"useResource: UseResource",
|
|
4055
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
4056
|
+
"useSessions: UseSessions",
|
|
4057
|
+
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
4058
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
4059
|
+
"useChat: UseChat",
|
|
4060
|
+
"useConversation: UseConversation",
|
|
4061
|
+
"useInput: SnapshotSelectorHook<InputState>",
|
|
4062
|
+
"inputActions: InputActions",
|
|
4063
|
+
"useSession: SessionSnapshotSelector",
|
|
4064
|
+
"sessionId: SessionId",
|
|
4065
|
+
"useProjection: UseProjection",
|
|
4066
|
+
"useTrajectory: UseTrajectory"
|
|
4067
|
+
],
|
|
4068
|
+
keyDomain: "",
|
|
4069
|
+
hookContext: "UseSidebarRightTabInfo",
|
|
4070
|
+
slotInject: "{ hooks: { tabInfo: SlotHookFactory<'sidebar.right.tab.guide', UseSidebarRightTabInfo> } }",
|
|
4071
|
+
declaredBy: "an entry in 'sidebar.right.pane.tab' (client-ui-sidebar-right), so it exists while that entry is mounted",
|
|
4072
|
+
occupants: [],
|
|
4073
|
+
replaceRisk: "none",
|
|
4074
|
+
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}",
|
|
4075
|
+
source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:72"
|
|
4076
|
+
},
|
|
4077
|
+
{
|
|
4078
|
+
key: "sidebar.right.tab.menu.item",
|
|
4079
|
+
kind: "list",
|
|
4080
|
+
scope: "session",
|
|
4081
|
+
summary: "Extra items at the end of one tab's actions menu, in registration order.",
|
|
4082
|
+
doc: "Extra items at the end of one tab's actions menu, in registration order.\nEntries decide their own visibility from the tab they are given. Without a\nregistrant the menu shows only the kit's own layout actions.",
|
|
4083
|
+
registerOptions: [
|
|
4084
|
+
{
|
|
4085
|
+
name: "id",
|
|
4086
|
+
requirement: "required",
|
|
4087
|
+
type: "string",
|
|
4088
|
+
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."
|
|
4089
|
+
},
|
|
4090
|
+
{
|
|
4091
|
+
name: "order",
|
|
4092
|
+
requirement: "optional",
|
|
4093
|
+
type: "number",
|
|
4094
|
+
doc: "Position among the entries, ascending (default 0)."
|
|
4095
|
+
},
|
|
4096
|
+
{
|
|
4097
|
+
name: "label",
|
|
4098
|
+
requirement: "optional",
|
|
4099
|
+
type: "string | (() => string)",
|
|
4100
|
+
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."
|
|
4101
|
+
}
|
|
4102
|
+
],
|
|
4103
|
+
ownerProps: ["/** Owner share of one tab-menu item occurrence. */\nexport interface SidebarRightTabMenuOwnerProps {\n /** The tab whose menu is open. */\n tab: TabRecord\n /**\n * Dismiss the menu.\n *\n * An item that acts MUST call this: the menu is the kit's, and it closes on\n * its own actions only. An item that leaves it open leaves a menu floating\n * over content the action may have just replaced.\n */\n dismiss: () => void\n}"],
|
|
4104
|
+
ownerPropsReferences: ["TabRecord"],
|
|
4105
|
+
standardProps: [
|
|
4106
|
+
"useResource: UseResource",
|
|
4107
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
4108
|
+
"useSessions: UseSessions",
|
|
4109
|
+
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
4110
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
4111
|
+
"useChat: UseChat",
|
|
4112
|
+
"useConversation: UseConversation",
|
|
4113
|
+
"useInput: SnapshotSelectorHook<InputState>",
|
|
4114
|
+
"inputActions: InputActions",
|
|
4115
|
+
"useSession: SessionSnapshotSelector",
|
|
4116
|
+
"sessionId: SessionId",
|
|
4117
|
+
"useProjection: UseProjection",
|
|
4118
|
+
"useTrajectory: UseTrajectory"
|
|
4119
|
+
],
|
|
4120
|
+
keyDomain: "",
|
|
4121
|
+
hookContext: "",
|
|
4122
|
+
slotInject: "",
|
|
4123
|
+
declaredBy: "an entry in 'rightbar' (client-ui-sidebar-right), so it exists while that entry is mounted",
|
|
4124
|
+
occupants: [],
|
|
4125
|
+
replaceRisk: "none",
|
|
4126
|
+
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}",
|
|
4127
|
+
source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:83"
|
|
4128
|
+
},
|
|
3888
4129
|
{
|
|
3889
4130
|
key: "sidebar.settings",
|
|
3890
4131
|
kind: "single",
|
|
@@ -3895,6 +4136,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3895
4136
|
ownerProps: ["/**\n * Owner share of the sidebar settings seat: the column display state the\n * occupant's trigger row must render against (wide row vs rail icon).\n */\nexport interface SidebarSettingsOwnerProps {\n /** Whether the sidebar renders wide content (false = 56px rail). */\n wide: boolean\n}"],
|
|
3896
4137
|
ownerPropsReferences: [],
|
|
3897
4138
|
standardProps: [
|
|
4139
|
+
"useResource: UseResource",
|
|
3898
4140
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3899
4141
|
"useSessions: UseSessions",
|
|
3900
4142
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3919,6 +4161,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3919
4161
|
ownerProps: ["/**\n * Owner share of the browser hole — the only facts crossing the shell/region\n * boundary. Business data and actions arrive through the region's own inject.\n */\nexport interface SidebarSectionOwnerProps {\n /** Shell fold-state output: wide renders the full browser, rail the icon column. */\n wide: boolean\n /** Rail icons request expansion; the browser rides the wide flip for focus. */\n expandSidebar: () => void\n}"],
|
|
3920
4162
|
ownerPropsReferences: [],
|
|
3921
4163
|
standardProps: [
|
|
4164
|
+
"useResource: UseResource",
|
|
3922
4165
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3923
4166
|
"useSessions: UseSessions",
|
|
3924
4167
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3943,6 +4186,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3943
4186
|
ownerProps: ["/**\n * Owner share of the directory-flow holes: the complete conversation between\n * the trigger surface and the picking interaction. The occupant reads `open`\n * to run/render its interaction and reports exactly one outcome per open.\n */\nexport interface DirectoryFlowOwnerProps {\n /** True while a picking interaction is requested; flipping back to false withdraws the request. */\n open: boolean\n /** True while the owner adopts a picked path (`createWorkspace` in flight); occupants disable their commit affordances. */\n busy: boolean\n /** The operator picked a directory (absolute host path); the owner adopts it. */\n onPicked: (path: string) => void\n /** The operator dismissed the interaction; the owner just closes the flow. */\n onCancel: () => void\n /** The interaction itself failed (chooser missing, listing denied); the owner shows its error surface. */\n onError: (message: string) => void\n}"],
|
|
3944
4187
|
ownerPropsReferences: [],
|
|
3945
4188
|
standardProps: [
|
|
4189
|
+
"useResource: UseResource",
|
|
3946
4190
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3947
4191
|
"useSessions: UseSessions",
|
|
3948
4192
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3957,6 +4201,39 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3957
4201
|
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}",
|
|
3958
4202
|
source: "packages/client/ui-workspace/src/client/contract/slots.ts:59"
|
|
3959
4203
|
},
|
|
4204
|
+
{
|
|
4205
|
+
key: "tool.call.images",
|
|
4206
|
+
kind: "single",
|
|
4207
|
+
scope: "session",
|
|
4208
|
+
summary: "Durable images of a settled image-bearing Tool call, rendered through the attachment presentation plugin.",
|
|
4209
|
+
doc: "Durable images of a settled image-bearing Tool call, rendered through\nthe attachment presentation plugin. The Tool layer never imports an\nattachment implementation: a toolview declares this slot as a child and\nrenders it with the image card's references plus the session-authorized\nloader it received in its owner, and the attachment plugin fills the\ngallery. Composing no attachment presentation plugin renders nothing,\nwhich is why the image card keeps its own envelope text beside the\ngallery. A child slot is declared by exactly one entry: registering a\nsecond toolview that declares the same child throws at load, so a\nfuture image-bearing tool must reuse this entry or own a distinct\nslot.",
|
|
4210
|
+
registerOptions: [],
|
|
4211
|
+
ownerProps: ["/** Owner currency of the Tool image gallery slot: references plus the loader. */\nexport interface ToolImagesOwnerProps {\n /** Durable references or submission-echo previews in result order. */\n images: readonly MessageImageSource[]\n /** Session-authorized image URL loader for the durable arm. */\n loadImage: MessageImageLoader\n /** Horizontal placement inside the owning record. */\n align: 'start' | 'end'\n}"],
|
|
4212
|
+
ownerPropsReferences: ["MessageImageLoader", "MessageImageSource"],
|
|
4213
|
+
standardProps: [
|
|
4214
|
+
"useResource: UseResource",
|
|
4215
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
4216
|
+
"useSessions: UseSessions",
|
|
4217
|
+
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
4218
|
+
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
4219
|
+
"useChat: UseChat",
|
|
4220
|
+
"useConversation: UseConversation",
|
|
4221
|
+
"useInput: SnapshotSelectorHook<InputState>",
|
|
4222
|
+
"inputActions: InputActions",
|
|
4223
|
+
"useSession: SessionSnapshotSelector",
|
|
4224
|
+
"sessionId: SessionId",
|
|
4225
|
+
"useProjection: UseProjection",
|
|
4226
|
+
"useTrajectory: UseTrajectory"
|
|
4227
|
+
],
|
|
4228
|
+
keyDomain: "",
|
|
4229
|
+
hookContext: "",
|
|
4230
|
+
slotInject: "",
|
|
4231
|
+
declaredBy: "an entry in 'tool.call.toolview' (client-ui-tool), so it exists while that entry is mounted",
|
|
4232
|
+
occupants: ["client-ui-attachment MessageImages"],
|
|
4233
|
+
replaceRisk: "shadows-shipped-ui",
|
|
4234
|
+
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}",
|
|
4235
|
+
source: "packages/client/ui-tool/src/client/contract/slots.ts:40"
|
|
4236
|
+
},
|
|
3960
4237
|
{
|
|
3961
4238
|
key: "tool.call.toolview",
|
|
3962
4239
|
kind: "keyed",
|
|
@@ -3969,9 +4246,14 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3969
4246
|
type: "string",
|
|
3970
4247
|
doc: "Your cell key: the entry renders where the owner dispatches this exact key. Registering an already-occupied key replaces that occupant."
|
|
3971
4248
|
}],
|
|
3972
|
-
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
|
|
3973
|
-
ownerPropsReferences: [
|
|
4249
|
+
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 loadImage: MessageImageLoader\n /** Inspect this call in the trajectory view when available. */\n inspect?: (() => void) | undefined\n}"],
|
|
4250
|
+
ownerPropsReferences: [
|
|
4251
|
+
"ChatNodeOwnerProps",
|
|
4252
|
+
"MessageImageLoader",
|
|
4253
|
+
"OpenFileOptions"
|
|
4254
|
+
],
|
|
3974
4255
|
standardProps: [
|
|
4256
|
+
"useResource: UseResource",
|
|
3975
4257
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
3976
4258
|
"useSessions: UseSessions",
|
|
3977
4259
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
|
@@ -3985,7 +4267,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3985
4267
|
"useProjection: UseProjection",
|
|
3986
4268
|
"useTrajectory: UseTrajectory"
|
|
3987
4269
|
],
|
|
3988
|
-
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, read, skill, todo_write, web_fetch, web_search, write",
|
|
4270
|
+
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, read, read_image, skill, todo_write, web_fetch, web_search, write",
|
|
3989
4271
|
hookContext: "",
|
|
3990
4272
|
slotInject: "",
|
|
3991
4273
|
declaredBy: "an entry in 'conversation.chat.node' (client-ui-tool), so it exists while that entry is mounted",
|
|
@@ -3995,6 +4277,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
3995
4277
|
"client-ui-tool BashRow key 'bash'",
|
|
3996
4278
|
"client-ui-tool FileMutationRow key 'edit'",
|
|
3997
4279
|
"client-ui-tool FileMutationRow key 'write'",
|
|
4280
|
+
"client-ui-tool ReadImageRow key 'read_image'",
|
|
3998
4281
|
"client-ui-tool ReadRow key 'read'",
|
|
3999
4282
|
"client-ui-tool SearchRow key 'grep'",
|
|
4000
4283
|
"client-ui-tool SearchRow key 'glob'",
|
|
@@ -4029,6 +4312,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
|
|
|
4029
4312
|
"CordisDynamicPluginRunId"
|
|
4030
4313
|
],
|
|
4031
4314
|
standardProps: [
|
|
4315
|
+
"useResource: UseResource",
|
|
4032
4316
|
"useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
|
|
4033
4317
|
"useSessions: UseSessions",
|
|
4034
4318
|
"useSessionPendingInteraction: UseSessionPendingInteraction",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-cordis-client-runner",
|
|
3
3
|
"description": "Browser half of dynamic dual-half plugin packages: event subscription, closure evaluation, guard facade, and loader entries",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.5-alpha.1",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -44,12 +44,12 @@
|
|
|
44
44
|
"@types/react": "~18.3.1",
|
|
45
45
|
"react": "^18.2.0",
|
|
46
46
|
"@deepseek-ai/cordis-plugin-loader": "^1.0.3",
|
|
47
|
-
"@deepseek-ai/dsh-api-remotes": "^0.1.
|
|
48
|
-
"@deepseek-ai/dsh-client-
|
|
47
|
+
"@deepseek-ai/dsh-api-remotes": "^0.1.5-alpha.1",
|
|
48
|
+
"@deepseek-ai/dsh-client-modules": "^0.1.5-alpha.1",
|
|
49
|
+
"@deepseek-ai/dsh-client-ui-renderer": "^0.1.5-alpha.1",
|
|
50
|
+
"@deepseek-ai/dsh-client-ui-theme": "^0.1.5-alpha.1",
|
|
49
51
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
50
|
-
"@deepseek-ai/dsh-util-values": "^0.1.
|
|
51
|
-
"@deepseek-ai/dsh-client-modules": "^0.1.2-rc.1",
|
|
52
|
-
"@deepseek-ai/dsh-client-ui-renderer": "^0.1.2-rc.1"
|
|
52
|
+
"@deepseek-ai/dsh-util-values": "^0.1.5-alpha.1"
|
|
53
53
|
},
|
|
54
54
|
"files": [
|
|
55
55
|
"lib/index.js",
|