@deepseek-ai/dsh-client-ui-tool 0.1.6-alpha.2 → 0.1.7-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/README.i18n.yaml +2 -2
  2. package/README.md +11 -3
  3. package/README.zh.md +11 -3
  4. package/lib/client.js +1911 -207
  5. package/lib/types/client/contract/slots.d.ts +9 -12
  6. package/lib/types/client/tool/ToolCallTree.d.ts +1 -1
  7. package/lib/types/client/tool/components/ToolDetails.d.ts +70 -0
  8. package/lib/types/client/tool/components/ToolRow.d.ts +12 -2
  9. package/lib/types/client/tool/models/control-details-model.d.ts +14 -0
  10. package/lib/types/client/tool/models/detail-model-shared.d.ts +56 -0
  11. package/lib/types/client/tool/models/details-card-model.d.ts +22 -0
  12. package/lib/types/client/tool/models/inspection-details-model.d.ts +15 -0
  13. package/lib/types/client/tool/models/primitive-labels.d.ts +7 -1
  14. package/lib/types/client/tool/models/todo-diff-model.d.ts +18 -0
  15. package/lib/types/client/tool/models/todo-history.d.ts +33 -0
  16. package/lib/types/client/tool/models/tool-call-model.d.ts +1 -1
  17. package/lib/types/client/tool/toolviews/GenericToolCard.d.ts +1 -1
  18. package/lib/types/client/tool/toolviews/ask-question-row.d.ts +1 -1
  19. package/lib/types/client/tool/toolviews/bash-sample.d.ts +6 -2
  20. package/lib/types/client/tool/toolviews/details-row.d.ts +16 -0
  21. package/lib/types/client/tool/toolviews/file-mutation-row.d.ts +1 -1
  22. package/lib/types/client/tool/toolviews/read-family-row.d.ts +1 -1
  23. package/lib/types/client/tool/toolviews/search-row.d.ts +1 -1
  24. package/lib/types/client/tool/toolviews/todo-row.d.ts +9 -3
  25. package/lib/types/client/tool/toolviews/web-row.d.ts +1 -1
  26. package/package.json +28 -24
@@ -1,23 +1,18 @@
1
1
  /** Tool UI slot declarations and their composed component props. */
2
2
  import type { HostObservable, InjectFace, PropsLocale, PropsRenderSlots, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
3
3
  import type { RemoteHostFacts } from '@deepseek-ai/dsh-api-remotes/client';
4
- import type { OpenFileOptions, ToolCallBlock } from '@deepseek-ai/dsh-client-ui-chat/client';
4
+ import type { OpenFileOptions, ToolCallBlock, UseDisclosure } from '@deepseek-ai/dsh-client-ui-chat/client';
5
5
  import type { MessageImageLoader, MessageImageSource } from '@deepseek-ai/dsh-client-ui-conversation/client';
6
6
  declare module '@deepseek-ai/dsh-client-ui-slots' {
7
7
  interface SlotMap {
8
8
  /**
9
- * Keyed atomic Tool call view, dispatched by the wire Tool name. Register
10
- * with `key: '<tool name>'` to own how one tool's calls render inside a
11
- * turn — the key domain is open (any wire tool name, including a tool your
12
- * own package registered), so there is no compile-time key set to pick
13
- * from and a typo simply never renders.
9
+ * Keyed Tool call view dispatched by wire Tool name. Any name is allowed,
10
+ * including tools registered by your package. Register with
11
+ * `key: '<tool name>'`; a typo never renders.
14
12
  *
15
- * A key the shipped composition already covers is replaced, not shared;
16
- * an unclaimed key falls back to the generic tool row, so registering is
17
- * additive for your own tool and a takeover for a shipped one. The owner
18
- * passes the call's identity, its frozen running-or-settled node, and the
19
- * expansion state (see ToolCallOwnerProps), so the view stays a pure
20
- * function of what the turn already knows.
13
+ * Registering an occupied key replaces its view; unclaimed keys use the
14
+ * generic row. The owner supplies the call identity and frozen running
15
+ * or settled node through ToolCallOwnerProps.
21
16
  */
22
17
  'tool.call.toolview': {
23
18
  kind: 'keyed';
@@ -55,6 +50,8 @@ export interface ToolImagesOwnerProps {
55
50
  }
56
51
  /** Standard owner currency supplied to every atomic Tool view. */
57
52
  export interface ToolCallOwnerProps {
53
+ /** Stable injected Hook; each invocation owns its open state and subscribes to enclosing-Turn resets. */
54
+ useDisclosure: UseDisclosure;
58
55
  /** Tool call identity, stable across running and settled forms. */
59
56
  callId: string;
60
57
  /** Wire Tool name and keyed dispatch value. */
@@ -5,5 +5,5 @@ import type { ToolTreeProps } from '../contract/slots.ts';
5
5
  * @param props - whole-Tool owner data and the Tool-owned child-slot share.
6
6
  * @returns the Tool call tree.
7
7
  */
8
- export declare function ToolCallTree({ renderSlot, node, cwd, openFile, inspectCall, loadImage, useHostInfo, t, }: ToolTreeProps): import("react").JSX.Element;
8
+ export declare function ToolCallTree({ renderSlot, node, cwd, openFile, inspectCall, loadImage, useDisclosure, useHostInfo, t, }: ToolTreeProps): import("react").JSX.Element;
9
9
  //# sourceMappingURL=ToolCallTree.d.ts.map
@@ -0,0 +1,70 @@
1
+ import type { TranslateNS } from '@deepseek-ai/dsh-client-ui-slots';
2
+ import type { OpenFileOptions } from '@deepseek-ai/dsh-client-ui-chat/client';
3
+ /** One recorded entity, receipt, or collapsible group of related values. */
4
+ export interface ToolDetailItem {
5
+ title?: string;
6
+ subtitle?: string;
7
+ description?: string;
8
+ badge?: {
9
+ label: string;
10
+ tone: 'neutral' | 'info' | 'success' | 'warning' | 'error';
11
+ };
12
+ status?: {
13
+ value: 'completed' | 'in_progress' | 'pending';
14
+ label: string;
15
+ };
16
+ previousStatus?: string;
17
+ change?: {
18
+ value: 'added' | 'removed' | 'updated';
19
+ label: string;
20
+ };
21
+ fields: readonly {
22
+ label: string;
23
+ value: string;
24
+ }[];
25
+ lines?: readonly string[];
26
+ markdown?: string;
27
+ code?: {
28
+ text: string;
29
+ language?: string;
30
+ };
31
+ location?: {
32
+ path: string;
33
+ line?: number;
34
+ };
35
+ groups?: readonly {
36
+ label: string;
37
+ items: readonly ToolDetailItem[];
38
+ }[];
39
+ }
40
+ /** Localized display data shared by the built-in detail cards. */
41
+ export interface ToolDetailsModel {
42
+ items: readonly ToolDetailItem[];
43
+ summary?: string;
44
+ /** Header text while expanded, omitting a receipt status shown in the body. */
45
+ expandedSummary?: string;
46
+ empty?: string;
47
+ caption?: string;
48
+ unchanged?: {
49
+ label: string;
50
+ items: ToolDetailsModel['items'];
51
+ };
52
+ }
53
+ interface DetailContentProps {
54
+ t: TranslateNS<'conversation'>;
55
+ onOpenFile?: ((path: string, options?: OpenFileOptions) => void) | undefined;
56
+ }
57
+ /**
58
+ * Render recorded values with local disclosures, copy controls, and file navigation.
59
+ * @param props.model - Localized fields or list items; an empty list uses its empty label.
60
+ * @param props.hasInspect - Reserve space for the row's upper-right Inspect button.
61
+ * @param props.t - Conversation dictionary for shared Markdown and code controls.
62
+ * @param props.onOpenFile - Open a recorded file location in the session workspace.
63
+ * @returns The expanded detail body.
64
+ */
65
+ export declare function ToolDetails({ model, hasInspect, t, onOpenFile }: {
66
+ model: ToolDetailsModel;
67
+ hasInspect?: boolean;
68
+ } & DetailContentProps): import("react").JSX.Element;
69
+ export {};
70
+ //# sourceMappingURL=ToolDetails.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import type { PropsRenderSlots, TranslateNS } from '@deepseek-ai/dsh-client-ui-slots';
3
- import type { OpenFileOptions } from '@deepseek-ai/dsh-client-ui-chat/client';
3
+ import type { OpenFileOptions, UseDisclosure } from '@deepseek-ai/dsh-client-ui-chat/client';
4
4
  import type { MessageImageLoader } from '@deepseek-ai/dsh-client-ui-conversation/client';
5
5
  import { type DiffCardModel } from '../models/diff-card-model.ts';
6
6
  import { type ReadCardModel } from '../models/read-card-model.ts';
@@ -10,7 +10,10 @@ import { type TerminalCardModel } from '../models/terminal-card-model.ts';
10
10
  import type { AskQuestionCardModel } from '../models/ask-question-card-model.ts';
11
11
  import { type ToolRowState, type ToolRowVariant } from '../models/tool-call-model.ts';
12
12
  import type { WebCardModelProps } from '../models/web-card-model.ts';
13
+ import { type ToolDetailsModel } from './ToolDetails.tsx';
13
14
  export interface ToolRowProps {
15
+ /** Subscribe here, where the row owns its expanded body. */
16
+ useDisclosure: UseDisclosure;
14
17
  t: TranslateNS<'conversation'>;
15
18
  variant: ToolRowVariant;
16
19
  /** Wire tool name for tool-owned styling layered over the generic variant. */
@@ -55,6 +58,8 @@ export interface ToolRowProps {
55
58
  loadImage?: MessageImageLoader | undefined;
56
59
  search?: SearchCardModel | null | undefined;
57
60
  web?: WebCardModelProps | null | undefined;
61
+ /** Read-only fields/list card derived from a successful recorded result. */
62
+ details?: ToolDetailsModel | null | undefined;
58
63
  state: ToolRowState;
59
64
  /**
60
65
  * Filesystem path from tool args; when set with onOpenFile, the summary
@@ -71,5 +76,10 @@ export interface ToolRowProps {
71
76
  */
72
77
  inspect?: (() => void) | undefined;
73
78
  }
74
- export declare function ToolRow({ t, variant, toolName, icon, title, summary, summarySuffix, bodyRaw, output, askQuestion, errorSummary, terminal, diff, read, image, renderSlot, loadImage, search, web, state, filePath, filePathLine, onOpenFile, inspect, }: ToolRowProps): import("react").JSX.Element;
79
+ /**
80
+ * Render one localized tool summary and lazily mounted result card.
81
+ * @param props - tool state, summary, output, and navigation callbacks.
82
+ * @returns the tool disclosure.
83
+ */
84
+ export declare const ToolRow: import("react").MemoExoticComponent<({ t, variant, toolName, icon, title, summary, summarySuffix, bodyRaw, output, askQuestion, errorSummary, terminal, diff, read, image, renderSlot, loadImage, search, web, details, state, filePath, filePathLine, onOpenFile, inspect, useDisclosure, }: ToolRowProps) => import("react").JSX.Element>;
75
85
  //# sourceMappingURL=ToolRow.d.ts.map
@@ -0,0 +1,14 @@
1
+ /** Entity lists and receipts for agent, job, terminal, and language-server tools. */
2
+ import type { ToolDetailsModel } from '../components/ToolDetails.tsx';
3
+ import { type DetailTranslate } from './detail-model-shared.ts';
4
+ /**
5
+ * Derive entity lists and operation receipts from supported recorded output formats.
6
+ * @param name - Wire tool name, including Team-scoped aliases.
7
+ * @param args - Parsed recorded arguments.
8
+ * @param text - Successful recorded result text.
9
+ * @param json - Parsed whole-result JSON, or undefined for non-JSON text.
10
+ * @param t - Conversation translator.
11
+ * @returns Compact details, or null when the output format is not recognized.
12
+ */
13
+ export declare function controlDetails(name: string, args: Record<string, unknown>, text: string, json: unknown, t: DetailTranslate): ToolDetailsModel | null;
14
+ //# sourceMappingURL=control-details-model.d.ts.map
@@ -0,0 +1,56 @@
1
+ /** Recorded-value formatting shared by entity lists and inspection results. */
2
+ import type { TranslateNS } from '@deepseek-ai/dsh-client-ui-slots';
3
+ import type { ToolDetailItem, ToolDetailsModel } from '../components/ToolDetails.tsx';
4
+ /** Translator supplied by the conversation slot. */
5
+ export type DetailTranslate = TranslateNS<'conversation'>;
6
+ /** A compact detail row derived from durable tool output. */
7
+ export type DetailItem = ToolDetailItem;
8
+ /**
9
+ * Narrow parsed JSON to an object record.
10
+ * @param value - Parsed result or argument value.
11
+ * @returns Whether named fields can be read.
12
+ */
13
+ export declare function detailRecord(value: unknown): value is Record<string, unknown>;
14
+ /**
15
+ * Check a recorded string field that must contain visible text.
16
+ * @param value - Parsed field value.
17
+ * @returns Whether the field is a non-empty string after trimming.
18
+ */
19
+ export declare function nonempty(value: unknown): value is string;
20
+ /**
21
+ * Decode an entire JSON result without accepting a partial prefix.
22
+ * @param text - Recorded text.
23
+ * @returns Parsed JSON, or undefined for non-JSON output.
24
+ */
25
+ export declare function detailJson(text: string): unknown;
26
+ /**
27
+ * Give a recorded status its localized name and a static semantic color.
28
+ * @param status - Result status, retained verbatim when the vocabulary is unknown.
29
+ * @param t - Conversation translator.
30
+ * @returns A badge that does not imply a live subscription.
31
+ */
32
+ export declare function detailBadge(status: string, t: DetailTranslate): NonNullable<DetailItem['badge']>;
33
+ /**
34
+ * Name a known tool field while preserving extension-owned field names.
35
+ * @param key - Recorded JSON property name.
36
+ * @param t - Conversation translator.
37
+ * @returns Localized known label or the original property name.
38
+ */
39
+ export declare function detailLabel(key: string, t: DetailTranslate): string;
40
+ /**
41
+ * Project open inspection records into readable fields and named disclosures.
42
+ * @param value - Parsed JSON, including provider-owned extension fields.
43
+ * @param t - Conversation translator.
44
+ * @param depth - Current disclosure depth; deeper records remain available as code.
45
+ * @returns Entity rows preserving the order of visible values.
46
+ */
47
+ export declare function inspectionItems(value: unknown, t: DetailTranslate, depth?: number): DetailItem[];
48
+ /**
49
+ * Give a result list consistent historical context and empty-state copy.
50
+ * @param items - Recorded result rows.
51
+ * @param summary - Collapsed-row summary.
52
+ * @param t - Conversation translator.
53
+ * @returns A complete compact detail model.
54
+ */
55
+ export declare function detailList(items: readonly DetailItem[], summary: string, t: DetailTranslate): ToolDetailsModel;
56
+ //# sourceMappingURL=detail-model-shared.d.ts.map
@@ -0,0 +1,22 @@
1
+ /** Recorded todo, goal, and schedule values for the compact detail body. */
2
+ import type { TranslateNS } from '@deepseek-ai/dsh-client-ui-slots';
3
+ import type { ToolCallBlock } from './tool-call-model.ts';
4
+ import type { ToolDetailsModel } from '../components/ToolDetails.tsx';
5
+ type Translate = TranslateNS<'conversation'>;
6
+ /**
7
+ * Derive the compact todo list from a todo_write call.
8
+ * @param args - Parsed todo_write arguments.
9
+ * @param t - Conversation dictionary translator.
10
+ * @returns Localized todo details, or null for unsupported input.
11
+ */
12
+ export declare function todosDetail(args: Record<string, unknown>, t: Translate): ToolDetailsModel | null;
13
+ /**
14
+ * Derive a supported successful result, retaining generic output on unknown or malformed data.
15
+ * @param block - Logged root or nested Tool call and its optional result.
16
+ * @param t - Conversation dictionary translator.
17
+ * @param locale - Display locale for absolute dates in the viewer's time zone.
18
+ * @returns Localized detail data, or null for raw input/output.
19
+ */
20
+ export declare function detailsCardModel(block: ToolCallBlock, t: Translate, locale: string): ToolDetailsModel | null;
21
+ export {};
22
+ //# sourceMappingURL=details-card-model.d.ts.map
@@ -0,0 +1,15 @@
1
+ /** Runtime inspection, session queries, and workflow reports from recorded text. */
2
+ import type { ToolDetailsModel } from '../components/ToolDetails.tsx';
3
+ import { type DetailTranslate } from './detail-model-shared.ts';
4
+ /**
5
+ * Present successful inspection, query, and workflow text as named records.
6
+ * @param name - Wire tool name.
7
+ * @param args - Recorded argument object.
8
+ * @param text - Recorded result text.
9
+ * @param json - Parsed whole-result JSON, or undefined for non-JSON text.
10
+ * @param t - Conversation translator.
11
+ * @param locale - Date display locale.
12
+ * @returns Structured details, or null when an output format is unknown.
13
+ */
14
+ export declare function inspectionDetails(name: string, args: Record<string, unknown>, text: string, json: unknown, t: DetailTranslate, locale: string): ToolDetailsModel | null;
15
+ //# sourceMappingURL=inspection-details-model.d.ts.map
@@ -1,7 +1,13 @@
1
1
  /** Localized copy adapters for Cordis-free UI primitives used by Tool cards. */
2
- import type { DiffBlockLabels, MarkdownLabels, ReadBlockLabels, SearchBlockLabels, WebBlockLabels } from '@deepseek-ai/dsh-client-ui-primitives';
2
+ import type { CodeToolbarLabels, DiffBlockLabels, MarkdownLabels, ReadBlockLabels, SearchBlockLabels, WebBlockLabels } from '@deepseek-ai/dsh-client-ui-primitives';
3
3
  import type { TranslateNS } from '@deepseek-ai/dsh-client-ui-slots';
4
4
  type T = TranslateNS<'conversation'>;
5
+ /**
6
+ * Localize the shared code-card toolbar.
7
+ * @param t - Conversation locale seat.
8
+ * @returns Language fallback and wrapping actions.
9
+ */
10
+ export declare function codeToolbarLabels(t: T): CodeToolbarLabels;
5
11
  /**
6
12
  * Build localized Markdown chrome labels.
7
13
  * @param t - Conversation locale seat.
@@ -0,0 +1,18 @@
1
+ /** Todo changes relative to the preceding recorded write. */
2
+ import type { ToolCallBlock } from '@deepseek-ai/dsh-client-ui-chat/client';
3
+ import type { TranslateNS } from '@deepseek-ai/dsh-client-ui-slots';
4
+ import type { ToolDetailsModel } from '../components/ToolDetails.tsx';
5
+ import type { TodoBaseline } from './todo-history.ts';
6
+ /**
7
+ * Compare this write with its predecessor in the loaded call history.
8
+ * @param block - The write being displayed.
9
+ * @param baseline - List recorded before this call, or undefined when its start is unavailable.
10
+ * @param hasMore - Whether older unloaded history may contain a preceding list.
11
+ * @param t - Conversation dictionary translator.
12
+ * @returns Details and a change summary, or null for generic Tool output.
13
+ */
14
+ export declare function todoDiffModel(block: ToolCallBlock, baseline: TodoBaseline | undefined, hasMore: boolean, t: TranslateNS<'conversation'>): {
15
+ details: ToolDetailsModel;
16
+ summary: string | null;
17
+ } | null;
18
+ //# sourceMappingURL=todo-diff-model.d.ts.map
@@ -0,0 +1,33 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ import type { ConversationNodeDefinition, ConversationViewDefinition, ConversationViewNode, TodoItem } from '@deepseek-ai/dsh-client-ui-conversation/client';
3
+ /** The durable list preceding one Tool invocation; absent before the first loaded write. */
4
+ export interface TodoBaseline {
5
+ readonly todos: readonly TodoItem[] | undefined;
6
+ }
7
+ /** Session-owned call lookup, read only through the target's observable snapshot. */
8
+ export interface TodoHistory {
9
+ /** @param callId - Root or nested call identity. @returns its recorded predecessor, when the start is loaded. */
10
+ get(callId: string): TodoBaseline | undefined;
11
+ }
12
+ declare module '@deepseek-ai/dsh-client-ui-conversation/client' {
13
+ interface ConversationViewSnapshotMap {
14
+ /** Recorded todo lists preceding each loaded todo call. */
15
+ 'tool-todo-history': TodoHistory;
16
+ }
17
+ }
18
+ /** Durable writes are indexed independently of Tool success receipts. */
19
+ export declare const todoWriteDefinition: ConversationNodeDefinition<readonly TodoItem[]>;
20
+ /** Invocation predecessors are repaired by the assembler when older history arrives. */
21
+ export declare const todoCallDefinition: ConversationNodeDefinition<TodoBaseline>;
22
+ interface TodoHistoryNode extends ConversationViewNode {
23
+ readonly data: TodoBaseline;
24
+ }
25
+ /** Incremental lookup snapshots preserve earlier call baselines across later writes. */
26
+ export declare const todoHistoryView: ConversationViewDefinition<TodoHistoryNode, TodoHistory>;
27
+ /**
28
+ * Install the recorded-write index and call predecessor target.
29
+ * @param ctx - Tool presentation plugin context.
30
+ */
31
+ export declare function registerTodoHistory(ctx: Context): void;
32
+ export {};
33
+ //# sourceMappingURL=todo-history.d.ts.map
@@ -10,7 +10,7 @@ import type { LocaleKeysOf } from '@deepseek-ai/dsh-client-ui-slots';
10
10
  export type { ToolCallBlock } from '@deepseek-ai/dsh-client-ui-chat/client';
11
11
  /** Tool-call row variants selected by the generic atomic renderer. */
12
12
  export type ToolRowVariant = 'search' | 'read' | 'bash' | 'write' | 'edit' | 'code' | 'others';
13
- /** Row state semantic; colors self-supplied via StateDot (design gives none). */
13
+ /** Row lifecycle state used by summary styling and accessible status text. */
14
14
  export type ToolRowState = 'running' | 'ok' | 'error' | 'stopped';
15
15
  /** Locale-neutral structured fact consumed only by the user-facing Tool row. */
16
16
  export interface AutoReviewDenial {
@@ -3,5 +3,5 @@ import type { ToolCallOwnerProps, ToolTreeProps } from '../../contract/slots.ts'
3
3
  export interface GenericToolCardProps extends ToolCallOwnerProps {
4
4
  t: ToolTreeProps['t'];
5
5
  }
6
- export declare function GenericToolCard({ toolName, block, cwd, home, openFile, inspect, t }: GenericToolCardProps): import("react").JSX.Element;
6
+ export declare function GenericToolCard({ toolName, block, cwd, home, openFile, inspect, useDisclosure, t }: GenericToolCardProps): import("react").JSX.Element;
7
7
  //# sourceMappingURL=GenericToolCard.d.ts.map
@@ -3,7 +3,7 @@ import type { PropsLocale } from '@deepseek-ai/dsh-client-ui-slots';
3
3
  import type { ToolCallViewProps } from '../../contract/slots.ts';
4
4
  type AskQuestionRowProps = ToolCallViewProps & PropsLocale<'conversation'>;
5
5
  /** Summarizes a pending, answered, cancelled, or interrupted question set. */
6
- export declare function AskQuestionRow({ toolName, block, inspect, t }: AskQuestionRowProps): import("react").JSX.Element;
6
+ export declare function AskQuestionRow({ toolName, block, inspect, useDisclosure, t }: AskQuestionRowProps): import("react").JSX.Element;
7
7
  /** Registers the ask-user-question conversation row. */
8
8
  export declare const askQuestionToolview: {
9
9
  name: string;
@@ -2,8 +2,12 @@ import type { Context } from '@deepseek-ai/cordis';
2
2
  import type { PropsLocale } from '@deepseek-ai/dsh-client-ui-slots';
3
3
  import type { ToolCallViewProps } from '../../contract/slots.ts';
4
4
  type BashRowProps = ToolCallViewProps & PropsLocale<'conversation'>;
5
- /** Renders expandable Bash output with an accessible lifecycle label. */
6
- export declare function BashRow({ toolName, block, sessionId, useSessions, inspect, t }: BashRowProps): import("react").JSX.Element;
5
+ /**
6
+ * Render expandable Bash output with an accessible lifecycle label.
7
+ * @param props - tool call, Session sources, locale, and inspection callback.
8
+ * @returns the Bash output row.
9
+ */
10
+ export declare const BashRow: import("react").MemoExoticComponent<({ toolName, block, sessionId, useSessions, inspect, useDisclosure, t }: BashRowProps) => import("react").JSX.Element>;
7
11
  /** Registers the standalone Bash conversation-row sample. */
8
12
  export declare const bashToolviewSample: {
9
13
  name: string;
@@ -0,0 +1,16 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ import type { PropsLocale } from '@deepseek-ai/dsh-client-ui-slots';
3
+ import type { ToolCallViewProps } from '../../contract/slots.ts';
4
+ /**
5
+ * Present recorded entities, receipts, and report fields in the existing expandable row.
6
+ * @param props - Tool call, row actions, and locale supplied by the keyed slot.
7
+ * @returns A Tool row with structured details or generic input/output.
8
+ */
9
+ export declare function DetailsRow({ toolName, block, cwd, home, openFile, inspect, useDisclosure, t }: ToolCallViewProps & PropsLocale<'conversation'>): import("react").JSX.Element;
10
+ /** Register recorded-result details through the standard atomic Tool slot. */
11
+ export declare const detailsToolview: {
12
+ name: string;
13
+ inject: string[];
14
+ apply(ctx: Context): void;
15
+ };
16
+ //# sourceMappingURL=details-row.d.ts.map
@@ -5,7 +5,7 @@ type FileMutationRowProps = ToolCallViewProps & PropsLocale<'conversation'>;
5
5
  /**
6
6
  * Lets users expand an applied file diff and open the reported path.
7
7
  */
8
- export declare function FileMutationRow({ toolName, block, cwd, home, openFile, inspect, t }: FileMutationRowProps): import("react").JSX.Element;
8
+ export declare function FileMutationRow({ toolName, block, cwd, home, openFile, inspect, useDisclosure, t }: FileMutationRowProps): import("react").JSX.Element;
9
9
  /** Registers the edit and write conversation rows. */
10
10
  export declare const fileMutationToolview: {
11
11
  name: string;
@@ -22,5 +22,5 @@ export type ReadFamilyCard = Pick<ToolRowProps, 'read' | 'image' | 'renderSlot'
22
22
  * @param card - the card props this row owns.
23
23
  * @returns the assembled ToolRow.
24
24
  */
25
- export declare function readFamilyRow({ toolName, block, cwd, home, openFile, inspect, t }: ReadFamilyRowProps, card: ReadFamilyCard): ReactNode;
25
+ export declare function readFamilyRow({ toolName, block, cwd, home, openFile, inspect, useDisclosure, t }: ReadFamilyRowProps, card: ReadFamilyCard): ReactNode;
26
26
  //# sourceMappingURL=read-family-row.d.ts.map
@@ -3,7 +3,7 @@ import type { PropsLocale } from '@deepseek-ai/dsh-client-ui-slots';
3
3
  import type { ToolCallViewProps } from '../../contract/slots.ts';
4
4
  type SearchRowProps = ToolCallViewProps & PropsLocale<'conversation'>;
5
5
  /** Lets users expand grep or glob results and recover capped searches. */
6
- export declare function SearchRow({ toolName, block, inspect, t }: SearchRowProps): import("react").JSX.Element;
6
+ export declare function SearchRow({ toolName, block, inspect, useDisclosure, t }: SearchRowProps): import("react").JSX.Element;
7
7
  /** Registers the grep and glob conversation rows. */
8
8
  export declare const searchToolview: {
9
9
  name: string;
@@ -1,9 +1,15 @@
1
1
  import type { Context } from '@deepseek-ai/cordis';
2
- import type { PropsLocale } from '@deepseek-ai/dsh-client-ui-slots';
2
+ import type { HostObservable, InjectFace, PropsLocale } from '@deepseek-ai/dsh-client-ui-slots';
3
3
  import type { ToolCallViewProps } from '../../contract/slots.ts';
4
- type TodoRowProps = ToolCallViewProps & PropsLocale<'conversation'>;
4
+ import { type TodoHistory } from '../models/todo-history.ts';
5
+ type TodoHistoryInjected = {
6
+ hooks: {
7
+ todoHistory: HostObservable<TodoHistory | undefined>;
8
+ };
9
+ };
10
+ type TodoRowProps = ToolCallViewProps & PropsLocale<'conversation'> & InjectFace<TodoHistoryInjected>;
5
11
  /** Summarizes a plan update without presenting a cancelled call as completed. */
6
- export declare function TodoRow({ toolName, block, inspect, t }: TodoRowProps): import("react").JSX.Element;
12
+ export declare function TodoRow({ toolName, block, inspect, useDisclosure, useTodoHistory, useSession, t }: TodoRowProps): import("react").JSX.Element;
7
13
  /** Registers the todo conversation row. */
8
14
  export declare const todoToolview: {
9
15
  name: string;
@@ -3,7 +3,7 @@ import type { PropsLocale } from '@deepseek-ai/dsh-client-ui-slots';
3
3
  import type { ToolCallViewProps } from '../../contract/slots.ts';
4
4
  type WebRowProps = ToolCallViewProps & PropsLocale<'conversation'>;
5
5
  /** Lets users expand a completed web search or fetch result. */
6
- export declare function WebRow({ toolName, block, inspect, t }: WebRowProps): import("react").JSX.Element;
6
+ export declare function WebRow({ toolName, block, inspect, useDisclosure, t }: WebRowProps): import("react").JSX.Element;
7
7
  /** Registers the web search and fetch conversation rows. */
8
8
  export declare const webToolview: {
9
9
  name: string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@deepseek-ai/dsh-client-ui-tool",
3
3
  "description": "Client Tool call-tree renderer and keyed per-tool presentation slot",
4
- "version": "0.1.6-alpha.2",
4
+ "version": "0.1.7-alpha.2",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -38,7 +38,7 @@
38
38
  },
39
39
  "license": "MIT",
40
40
  "peerDependencies": {
41
- "@deepseek-ai/cordis": "^4.0.2"
41
+ "@deepseek-ai/cordis": "~4.0.4"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@testing-library/react": "^16.1.0",
@@ -46,28 +46,32 @@
46
46
  "react": "^18.2.0",
47
47
  "react-dom": "^18.2.0",
48
48
  "clsx": "^2.0.0",
49
- "@deepseek-ai/dsh-spill-policy": "^0.1.6-alpha.2",
50
- "@deepseek-ai/dsh-agent": "^0.1.6-alpha.2",
51
- "@deepseek-ai/dsh-llm": "^0.1.6-alpha.2",
52
- "@deepseek-ai/dsh-session": "^0.1.6-alpha.2",
53
- "@deepseek-ai/dsh-system-prompt": "^0.1.6-alpha.2",
54
- "@deepseek-ai/dsh-tools": "^0.1.6-alpha.2",
55
- "@deepseek-ai/dsh-spill": "^0.1.6-alpha.2",
56
- "@deepseek-ai/cordis": "^4.0.2",
57
- "@deepseek-ai/dsh-api-remotes": "^0.1.6-alpha.2",
58
- "@deepseek-ai/dsh-client-connection": "^0.1.6-alpha.2",
59
- "@deepseek-ai/dsh-client-locale": "^0.1.6-alpha.2",
60
- "@deepseek-ai/dsh-client-test-runtime": "^0.1.6-alpha.2",
61
- "@deepseek-ai/dsh-client-ui-conversation": "^0.1.6-alpha.2",
62
- "@deepseek-ai/dsh-client-ui-primitives": "^0.1.6-alpha.2",
63
- "@deepseek-ai/dsh-client-ui-slots": "^0.1.6-alpha.2",
64
- "@deepseek-ai/dsh-api-workspace-controller": "^0.1.6-alpha.2",
65
- "@deepseek-ai/dsh-client-ui-chat": "^0.1.6-alpha.2",
66
- "@deepseek-ai/dsh-client-ui-session": "^0.1.6-alpha.2",
67
- "@deepseek-ai/dsh-util-workspace-path": "^0.1.6-alpha.2",
68
- "@deepseek-ai/dsh-attachment": "^0.1.6-alpha.2",
69
- "@deepseek-ai/dsh-ptc-runtime": "^0.1.6-alpha.2",
70
- "@deepseek-ai/dsh-client-ui-renderer": "^0.1.6-alpha.2"
49
+ "@deepseek-ai/dsh-spill-policy": "0.1.7-alpha.2",
50
+ "@deepseek-ai/dsh-agent": "0.1.7-alpha.2",
51
+ "@deepseek-ai/dsh-llm": "0.1.7-alpha.2",
52
+ "@deepseek-ai/dsh-session": "0.1.7-alpha.2",
53
+ "@deepseek-ai/dsh-system-prompt": "0.1.7-alpha.2",
54
+ "@deepseek-ai/dsh-tools": "0.1.7-alpha.2",
55
+ "@deepseek-ai/dsh-tool-jobs": "0.1.7-alpha.2",
56
+ "@deepseek-ai/dsh-tool-session-query": "0.1.7-alpha.2",
57
+ "@deepseek-ai/dsh-tool-terminal": "0.1.7-alpha.2",
58
+ "@deepseek-ai/cordis": "~4.0.4",
59
+ "@deepseek-ai/dsh-api-remotes": "0.1.7-alpha.2",
60
+ "@deepseek-ai/dsh-client-connection": "0.1.7-alpha.2",
61
+ "@deepseek-ai/dsh-client-test-runtime": "0.1.7-alpha.2",
62
+ "@deepseek-ai/dsh-spill": "0.1.7-alpha.2",
63
+ "@deepseek-ai/dsh-client-ui-conversation": "0.1.7-alpha.2",
64
+ "@deepseek-ai/dsh-client-ui-primitives": "0.1.7-alpha.2",
65
+ "@deepseek-ai/dsh-client-ui-slots": "0.1.7-alpha.2",
66
+ "@deepseek-ai/dsh-api-workspace-controller": "0.1.7-alpha.2",
67
+ "@deepseek-ai/dsh-client-ui-chat": "0.1.7-alpha.2",
68
+ "@deepseek-ai/dsh-client-ui-renderer": "0.1.7-alpha.2",
69
+ "@deepseek-ai/dsh-client-ui-session": "0.1.7-alpha.2",
70
+ "@deepseek-ai/dsh-util-workspace-path": "0.1.7-alpha.2",
71
+ "@deepseek-ai/dsh-client-locale": "0.1.7-alpha.2",
72
+ "@deepseek-ai/dsh-ptc-runtime": "0.1.7-alpha.2",
73
+ "@deepseek-ai/dsh-token-meter": "0.1.7-alpha.2",
74
+ "@deepseek-ai/dsh-attachment": "0.1.7-alpha.2"
71
75
  },
72
76
  "files": [
73
77
  "lib/index.js",