@prettier-ai/dsh-client-ui-chat 0.1.2-alpha.1 → 0.1.2-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -1,4 +1,3 @@
1
- import { settingsNamespace } from "@prettier-ai/dsh-settings";
2
1
  import z from "@prettier-ai/schemastery";
3
2
  //#region lib/types/chat-settings.js
4
3
  /** Chat transcript preferences stored in the Host user-settings document. */
@@ -18,7 +17,7 @@ const ChatSettingsSchema = z.object({ [TRANSCRIPT_VIEW_FIELD]: z.union([...TRANS
18
17
  /** Register the durable Chat settings section when a provider exists. */
19
18
  function apply(ctx) {
20
19
  ctx.inject(["settings"], (settingsCtx) => {
21
- settingsCtx.settings.register(settingsNamespace(CHAT_SETTINGS_NAMESPACE), ChatSettingsSchema);
20
+ settingsCtx.settings.register(CHAT_SETTINGS_NAMESPACE, ChatSettingsSchema);
22
21
  });
23
22
  }
24
23
  //#endregion
@@ -3,5 +3,5 @@ import type { ChatViewSlotProps } from '../contract/slots.ts';
3
3
  * The chat view slot entry: pure component over the composed props; each
4
4
  * ordered business Node crosses the keyed renderer seat.
5
5
  */
6
- export declare function ChatView({ useSession, useChat, useSessions, useStore, actions, renderSlot, sessionId, openFile, loadOlder, loadImage, openView, chatScroll, forkAt, fileMentions, useTranscriptView, t, }: ChatViewSlotProps): import("react").JSX.Element;
6
+ export declare function ChatView({ useSession, useChat, useSessions, useStore, actions, renderSlot, sessionId, openFile, loadOlder, loadThrough, loadImage, openView, chatScroll, forkAt, fileMentions, useTranscriptView, useProjection, t, }: ChatViewSlotProps): import("react").JSX.Element;
7
7
  //# sourceMappingURL=ChatView.d.ts.map
@@ -5,12 +5,6 @@ export interface MessageIconActionsProps {
5
5
  text: string;
6
6
  /** Unix epoch ms for the clock label; omitted for transient messages. */
7
7
  time?: number | undefined;
8
- /** Turn wall time in ms, appended to the clock as `· Ran for 15s`; omitted when the turn's start is unknown. */
9
- runMs?: number | undefined;
10
- /** Turn first-step TTFT in ms, appended as `· TTFT 1.2s`; omitted when unrecorded. */
11
- ttftMs?: number | undefined;
12
- /** Turn decode throughput, appended as `· 34 tok/s`; omitted when unrecorded. */
13
- tokensPerSecond?: number | undefined;
14
8
  /** Clock before icons (user) or after (assistant). */
15
9
  clock: 'start' | 'end';
16
10
  /** Fork the session at this message; omission hides the branch action. */
@@ -24,6 +18,11 @@ export interface MessageIconActionsProps {
24
18
  * built-in copy and branch controls.
25
19
  */
26
20
  extraActions?: ReactNode;
21
+ /**
22
+ * Icon-row Turn-usage trigger (the TurnUsagePanel pill), seated after the
23
+ * branch control at the end of the icon cluster.
24
+ */
25
+ usageAction?: ReactNode;
27
26
  /** The owning view's locale seat, passed down as a plain prop. */
28
27
  t: ChatViewSlotProps['t'];
29
28
  }
@@ -32,5 +31,5 @@ export interface MessageIconActionsProps {
32
31
  * @param props - Copy text, event time, clock side, branch callback, className.
33
32
  * @returns The actions row element.
34
33
  */
35
- export declare function MessageIconActions({ text, time, runMs, ttftMs, tokensPerSecond, clock, onBranch, branchUnavailable, className, extraActions, t, }: MessageIconActionsProps): import("react").JSX.Element;
34
+ export declare function MessageIconActions({ text, time, clock, onBranch, branchUnavailable, className, extraActions, usageAction, t, }: MessageIconActionsProps): import("react").JSX.Element;
36
35
  //# sourceMappingURL=MessageIconActions.d.ts.map
@@ -13,10 +13,10 @@ export declare function PendingSteeringBubble({ content, renderMessageImages, t
13
13
  t: ChatViewSlotProps['t'];
14
14
  }): ReactNode;
15
15
  /**
16
- * Render one local submission echo with the exact visual language of the
17
- * durable user node that replaces it: draft text plus object-URL previews,
18
- * visible from the submit click until the durable `user/message` (or its
19
- * queue occurrence) renders.
16
+ * Render one local transcript or steering submission echo with the same
17
+ * visual language and surface marker as the Host occurrence that replaces
18
+ * it: draft text plus object-URL previews, visible from the submit click
19
+ * until the durable `user/message` or steering occurrence renders.
20
20
  * @param props - the session snapshot's pending submission and render seats.
21
21
  * @returns the echoed user bubble.
22
22
  */
@@ -26,7 +26,7 @@ export declare function PendingSubmissionBubble({ submission, renderMessageImage
26
26
  t: ChatViewSlotProps['t'];
27
27
  }): ReactNode;
28
28
  /** User and admitted-steering keyed Chat renderer. */
29
- export declare const UserMessageNodeView: import("react").MemoExoticComponent<({ node, renderMessageImages, t, }: ChatNodeViewProps<"user" | "steering">) => import("react").JSX.Element>;
29
+ export declare const UserMessageNodeView: import("react").MemoExoticComponent<({ node, renderMessageImages, useChat, t, }: ChatNodeViewProps<"user" | "steering">) => import("react").JSX.Element>;
30
30
  /** Injected-context keyed Chat renderer. */
31
31
  export declare const ContextMessageNodeView: import("react").MemoExoticComponent<({ node, t }: ChatNodeViewProps<"context">) => import("react").JSX.Element>;
32
32
  /** Automatic compaction keyed Chat renderer. */
@@ -1,16 +1,21 @@
1
1
  import type { ChatViewSlotProps } from '../contract/slots.ts';
2
- import type { TurnNavigationItem } from '../contract/snapshot.ts';
2
+ import type { TurnRailItem } from './turn-rail-items.ts';
3
3
  interface TurnNavigatorProps {
4
- readonly items: readonly TurnNavigationItem[];
4
+ readonly items: readonly TurnRailItem[];
5
5
  readonly activeTurn: number | null;
6
- readonly onNavigate: (item: TurnNavigationItem) => void;
6
+ /** Turn whose jump is still paging history in; its mark pulses. */
7
+ readonly busyTurn: number | null;
8
+ readonly onNavigate: (item: TurnRailItem) => void;
7
9
  readonly t: ChatViewSlotProps['t'];
8
10
  }
9
- declare function TurnNavigatorRail({ items, activeTurn, onNavigate, t }: TurnNavigatorProps): import("react").JSX.Element | null;
11
+ declare function TurnNavigatorRail({ items, activeTurn, busyTurn, onNavigate, t }: TurnNavigatorProps): import("react").JSX.Element | null;
10
12
  /**
11
- * Compact rail of the currently loaded Turns with hover and focus previews.
13
+ * Fixed-pitch rail of every known Turn loaded marks scroll, unloaded marks
14
+ * page history in first — with hover and focus previews. Overflow scrolls
15
+ * inside the frame, gradient fades marking each scrollable end, and the
16
+ * active mark keeps itself in view while the pointer is elsewhere.
12
17
  *
13
- * Memoized because it renders two host elements per loaded Turn while the
18
+ * Memoized because it renders two host elements per Turn while the
14
19
  * enclosing view re-renders on every streaming delta: without the guard a long
15
20
  * session rebuilds hundreds of marks per commit for a rail that only changes
16
21
  * when a Turn is added, removed, or becomes active. Its props must therefore
@@ -0,0 +1,30 @@
1
+ import type { TurnTokenUsage } from '../contract/chat-nodes.ts';
2
+ import type { ChatViewSlotProps } from '../contract/slots.ts';
3
+ export interface TurnUsagePanelProps {
4
+ usage: TurnTokenUsage;
5
+ /** The owning view's locale seat, passed down as a plain prop. */
6
+ t: ChatViewSlotProps['t'];
7
+ }
8
+ export interface TurnTimePanelProps {
9
+ /** Turn wall time in ms, the pill's label. */
10
+ runMs: number;
11
+ /** Turn decode throughput, a dialog row when known. */
12
+ tokensPerSecond?: number | undefined;
13
+ /** Turn first-step TTFT in ms, a dialog row when known. */
14
+ ttftMs?: number | undefined;
15
+ /** The owning view's locale seat, passed down as a plain prop. */
16
+ t: ChatViewSlotProps['t'];
17
+ }
18
+ /**
19
+ * Turn-usage IconActions pill with a click-open Turn-usage details dialog.
20
+ * @param props - Turn usage buckets and locale seat.
21
+ * @returns The trigger and, while open, its portaled dialog anchored above the trigger.
22
+ */
23
+ export declare function TurnUsagePanel({ usage, t }: TurnUsagePanelProps): import("react").JSX.Element;
24
+ /**
25
+ * Turn-time IconActions pill with a click-open Turn-time details dialog.
26
+ * @param props - Turn timing facts and locale seat.
27
+ * @returns The clock-and-duration trigger and, while open, its portaled dialog anchored above the trigger.
28
+ */
29
+ export declare function TurnTimePanel({ runMs, tokensPerSecond, ttftMs, t }: TurnTimePanelProps): import("react").JSX.Element;
30
+ //# sourceMappingURL=TurnUsagePanel.d.ts.map
@@ -0,0 +1,36 @@
1
+ /**
2
+ * View-layer union of the host turn outline and the loaded rail items. The
3
+ * conversation snapshot never carries projection values, so this merge is the
4
+ * one place the rail's two sources meet: the `turnOutline` projection names
5
+ * every turn of the session, and the loaded window supplies anchors and
6
+ * richer previews for the turns it holds.
7
+ */
8
+ import type { TurnNavigationItem } from '../contract/snapshot.ts';
9
+ /** One rail mark: a loaded Turn scrolls to its row; an unloaded one pages history through its seq first. */
10
+ export interface TurnRailItem {
11
+ readonly turn: number;
12
+ /** Bounded prompt preview (loaded window first, outline fallback). */
13
+ readonly prompt: string;
14
+ /** Bounded response preview (loaded window first, outline fallback). */
15
+ readonly response: string;
16
+ /** How the rail reaches the Turn. */
17
+ readonly anchor: {
18
+ readonly kind: 'loaded';
19
+ readonly key: string;
20
+ } | {
21
+ readonly kind: 'unloaded';
22
+ readonly seq: number;
23
+ };
24
+ }
25
+ /**
26
+ * Merge the host outline with the loaded rail items into the full ladder.
27
+ * A turn present in both sides keeps the loaded anchor, taking an outline
28
+ * preview only where the window's own is empty (a mid-Turn window head, or a
29
+ * turn whose loaded nodes carry no text); turns on one side only pass
30
+ * through. Result ascends by turn.
31
+ * @param loaded - loaded-window rail items (timeline order).
32
+ * @param outline - `turnOutline` projection value, treated as wire data.
33
+ * @returns every known turn, ascending; a stable empty array when none.
34
+ */
35
+ export declare function mergeTurnRailItems(loaded: readonly TurnNavigationItem[], outline: unknown): readonly TurnRailItem[];
36
+ //# sourceMappingURL=turn-rail-items.d.ts.map
@@ -95,6 +95,8 @@ export interface ChatViewInjected {
95
95
  openDetails: (target: SelectionTarget) => void;
96
96
  openFile: (path: string) => Promise<void>;
97
97
  loadOlder: () => void;
98
+ /** Jump loader: page history back through seq; resolves when the window covers it. */
99
+ loadThrough: (seq: number) => Promise<void>;
98
100
  loadImage: MessageImageLoader;
99
101
  chatScroll: {
100
102
  save: (position: ChatScrollPosition | null) => void;
@@ -1,19 +1,28 @@
1
1
  import type { Context } from '@prettier-ai/cordis';
2
2
  import type { ConversationNodeDefinition } from '@prettier-ai/dsh-client-ui-conversation/client';
3
- interface InboxIdentity {
4
- readonly id: string;
3
+ interface PendingSnapshot {
4
+ readonly kind: 'snapshot';
5
+ readonly ids: readonly string[];
5
6
  }
6
- /** Cumulative state after one durable inbox splice. */
7
+ interface PendingSplice {
8
+ readonly kind: 'splice';
9
+ readonly previous: PendingState;
10
+ readonly start: number;
11
+ readonly removedCount: number;
12
+ readonly inserted: readonly string[];
13
+ }
14
+ type PendingState = PendingSnapshot | PendingSplice;
15
+ /** Persistent next-step state after one durable Inbox splice. */
7
16
  export interface InboxState {
8
- readonly pending: readonly InboxIdentity[];
9
- readonly claimed: ReadonlySet<string>;
17
+ /** Persistent splice chain materialized only when a next-step batch is claimed. */
18
+ readonly pending: PendingState;
19
+ /** Message ids in the current claim, shared until the next claim. */
20
+ readonly currentClaimed: ReadonlySet<string>;
10
21
  }
11
- /** Cumulative next-turn inbox splice Definition. */
12
- export declare const nextTurnInboxDefinition: ConversationNodeDefinition<InboxState>;
13
- /** Cumulative next-step inbox splice Definition used to classify steering. */
22
+ /** Persistent next-step Inbox state used to classify the current claimed batch as steering. */
14
23
  export declare const nextStepInboxDefinition: ConversationNodeDefinition<InboxState>;
15
24
  /**
16
- * Register the two durable Inbox-state contributions.
25
+ * Register the next-step Inbox state used by Chat message classification.
17
26
  * @param ctx - owning UI Conversation context.
18
27
  */
19
28
  export declare function registerInboxConversationNodes(ctx: Context): void;
@@ -29,6 +29,7 @@ export declare const zh: {
29
29
  'chat.deepDiving': string;
30
30
  'chat.turnNavigation.label': string;
31
31
  'chat.turnNavigation.jump': string;
32
+ 'chat.turnNavigation.jumpLoad': string;
32
33
  'chat.turnNavigation.turn': string;
33
34
  'settings.transcript.title': string;
34
35
  'settings.transcript.description': string;
@@ -86,18 +87,21 @@ export declare const zh: {
86
87
  'message.maxTokens': string;
87
88
  'message.maxTokens.hint': string;
88
89
  'message.ranFor': string;
89
- 'message.ttft': string;
90
90
  'message.tokensPerSecond': string;
91
91
  'message.turnUsage.title': string;
92
- 'message.turnUsage.summaryWithCache': string;
92
+ 'message.turnUsage.consumed': string;
93
93
  'message.turnUsage.model': string;
94
+ 'message.turnUsage.cacheHit': string;
94
95
  'message.turnUsage.input': string;
95
96
  'message.turnUsage.cacheRead': string;
96
97
  'message.turnUsage.cacheWrite': string;
97
98
  'message.turnUsage.output': string;
98
99
  'message.turnUsage.reasoning': string;
99
- 'message.turnUsage.total': string;
100
100
  'message.turnUsage.count': string;
101
+ 'message.turnTime.title': string;
102
+ 'message.turnTime.duration': string;
103
+ 'message.turnTime.speed': string;
104
+ 'message.turnTime.ttft': string;
101
105
  'duration.seconds': string;
102
106
  'duration.minutes': string;
103
107
  'command.running': string;
@@ -140,6 +144,7 @@ export declare const en: {
140
144
  'chat.deepDiving': string;
141
145
  'chat.turnNavigation.label': string;
142
146
  'chat.turnNavigation.jump': string;
147
+ 'chat.turnNavigation.jumpLoad': string;
143
148
  'chat.turnNavigation.turn': string;
144
149
  'settings.transcript.title': string;
145
150
  'settings.transcript.description': string;
@@ -197,18 +202,21 @@ export declare const en: {
197
202
  'message.maxTokens': string;
198
203
  'message.maxTokens.hint': string;
199
204
  'message.ranFor': string;
200
- 'message.ttft': string;
201
205
  'message.tokensPerSecond': string;
202
206
  'message.turnUsage.title': string;
203
- 'message.turnUsage.summaryWithCache': string;
207
+ 'message.turnUsage.consumed': string;
204
208
  'message.turnUsage.model': string;
209
+ 'message.turnUsage.cacheHit': string;
205
210
  'message.turnUsage.input': string;
206
211
  'message.turnUsage.cacheRead': string;
207
212
  'message.turnUsage.cacheWrite': string;
208
213
  'message.turnUsage.output': string;
209
214
  'message.turnUsage.reasoning': string;
210
- 'message.turnUsage.total': string;
211
215
  'message.turnUsage.count': string;
216
+ 'message.turnTime.title': string;
217
+ 'message.turnTime.duration': string;
218
+ 'message.turnTime.speed': string;
219
+ 'message.turnTime.ttft': string;
212
220
  'duration.seconds': string;
213
221
  'duration.minutes': string;
214
222
  'command.running': string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@prettier-ai/dsh-client-ui-chat",
3
3
  "description": "Chat Conversation target, node definitions, renderers, and details surface",
4
- "version": "0.1.2-alpha.1",
4
+ "version": "0.1.2-alpha.3",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -47,66 +47,45 @@
47
47
  },
48
48
  "license": "MIT",
49
49
  "peerDependencies": {
50
- "@prettier-ai/cordis": "^4.0.1",
51
- "@prettier-ai/dsh-api-session-controller": "^0.1.2-alpha.1",
52
- "@prettier-ai/dsh-api-workspace-controller": "^0.1.2-alpha.1",
53
- "@prettier-ai/dsh-agent": "^0.1.2-alpha.1",
54
- "@prettier-ai/dsh-api-remotes": "^0.1.2-alpha.1",
55
- "@prettier-ai/dsh-client-locale": "^0.1.2-alpha.1",
56
- "@prettier-ai/dsh-attachment": "^0.1.2-alpha.1",
57
- "@prettier-ai/dsh-client-ui-approval": "^0.1.2-alpha.1",
58
- "@prettier-ai/dsh-client-ui-conversation": "^0.1.2-alpha.1",
59
- "@prettier-ai/dsh-client-ui-renderer": "^0.1.2-alpha.1",
60
- "@prettier-ai/dsh-client-ui-session": "^0.1.2-alpha.1",
61
- "@prettier-ai/dsh-client-ui-settings": "^0.1.2-alpha.1",
62
- "@prettier-ai/dsh-client-ui-workspace": "^0.1.2-alpha.1",
63
- "@prettier-ai/dsh-compaction": "^0.1.2-alpha.1",
64
- "@prettier-ai/dsh-commands": "^0.1.2-alpha.1",
65
- "@prettier-ai/dsh-llm": "^0.1.2-alpha.1",
66
- "@prettier-ai/dsh-invariants": "^0.1.2-alpha.1",
67
- "@prettier-ai/dsh-llm-retry": "^0.1.2-alpha.1",
68
- "@prettier-ai/dsh-client-ui-layout": "^0.1.2-alpha.1",
69
- "@prettier-ai/dsh-session": "^0.1.2-alpha.1",
70
- "@prettier-ai/dsh-settings": "^0.1.2-alpha.1",
71
- "@prettier-ai/dsh-session-stats": "^0.1.2-alpha.1",
72
- "@prettier-ai/dsh-tools": "^0.1.2-alpha.1",
73
- "@prettier-ai/dsh-token-meter": "^0.1.2-alpha.1",
74
- "@prettier-ai/dsh-util-workspace-path": "^0.1.2-alpha.1"
50
+ "@prettier-ai/cordis": "^4.0.2"
75
51
  },
76
52
  "devDependencies": {
77
53
  "@types/react": "~18.3.1",
54
+ "@types/react-dom": "~18.3.0",
78
55
  "react": "^18.2.0",
79
- "@prettier-ai/cordis": "^4.0.1",
80
- "@prettier-ai/dsh-agent": "^0.1.2-alpha.1",
81
- "@prettier-ai/dsh-api-remotes": "^0.1.2-alpha.1",
82
- "@prettier-ai/dsh-api-session-controller": "^0.1.2-alpha.1",
83
- "@prettier-ai/dsh-api-workspace-controller": "^0.1.2-alpha.1",
84
- "@prettier-ai/dsh-attachment": "^0.1.2-alpha.1",
85
- "@prettier-ai/dsh-client-locale": "^0.1.2-alpha.1",
86
- "@prettier-ai/dsh-client-ui-approval": "^0.1.2-alpha.1",
87
- "@prettier-ai/dsh-client-ui-primitives": "^0.1.2-alpha.1",
88
- "@prettier-ai/dsh-client-ui-renderer": "^0.1.2-alpha.1",
89
- "@prettier-ai/dsh-client-ui-conversation": "^0.1.2-alpha.1",
90
- "@prettier-ai/dsh-client-ui-layout": "^0.1.2-alpha.1",
91
- "@prettier-ai/dsh-client-ui-session": "^0.1.2-alpha.1",
92
- "@prettier-ai/dsh-client-ui-settings": "^0.1.2-alpha.1",
93
- "@prettier-ai/dsh-client-ui-workspace": "^0.1.2-alpha.1",
94
- "@prettier-ai/dsh-commands": "^0.1.2-alpha.1",
95
- "@prettier-ai/dsh-compaction": "^0.1.2-alpha.1",
96
- "@prettier-ai/dsh-client-ui-slots": "^0.1.2-alpha.1",
97
- "@prettier-ai/dsh-client-store": "^0.1.2-alpha.1",
98
- "@prettier-ai/dsh-llm": "^0.1.2-alpha.1",
99
- "@prettier-ai/dsh-invariants": "^0.1.2-alpha.1",
100
- "@prettier-ai/dsh-llm-retry": "^0.1.2-alpha.1",
101
- "@prettier-ai/dsh-session-stats": "^0.1.2-alpha.1",
102
- "@prettier-ai/dsh-settings": "^0.1.2-alpha.1",
103
- "@prettier-ai/dsh-session": "^0.1.2-alpha.1",
104
- "@prettier-ai/dsh-token-meter": "^0.1.2-alpha.1",
105
- "@prettier-ai/dsh-tools": "^0.1.2-alpha.1",
106
- "@prettier-ai/dsh-util-workspace-path": "^0.1.2-alpha.1"
56
+ "react-dom": "^18.2.0",
57
+ "@prettier-ai/dsh-api-remotes": "^0.1.2-alpha.3",
58
+ "@prettier-ai/cordis": "^4.0.2",
59
+ "@prettier-ai/dsh-api-session-controller": "^0.1.2-alpha.3",
60
+ "@prettier-ai/dsh-agent": "^0.1.2-alpha.3",
61
+ "@prettier-ai/dsh-api-workspace-controller": "^0.1.2-alpha.3",
62
+ "@prettier-ai/dsh-attachment": "^0.1.2-alpha.3",
63
+ "@prettier-ai/dsh-client-ui-approval": "^0.1.2-alpha.3",
64
+ "@prettier-ai/dsh-client-store": "^0.1.2-alpha.3",
65
+ "@prettier-ai/dsh-client-ui-conversation": "^0.1.2-alpha.3",
66
+ "@prettier-ai/dsh-client-ui-layout": "^0.1.2-alpha.3",
67
+ "@prettier-ai/dsh-client-ui-primitives": "^0.1.2-alpha.3",
68
+ "@prettier-ai/dsh-client-locale": "^0.1.2-alpha.3",
69
+ "@prettier-ai/dsh-client-ui-renderer": "^0.1.2-alpha.3",
70
+ "@prettier-ai/dsh-client-ui-slots": "^0.1.2-alpha.3",
71
+ "@prettier-ai/dsh-client-ui-session": "^0.1.2-alpha.3",
72
+ "@prettier-ai/dsh-client-ui-workspace": "^0.1.2-alpha.3",
73
+ "@prettier-ai/dsh-client-ui-settings": "^0.1.2-alpha.3",
74
+ "@prettier-ai/dsh-commands": "^0.1.2-alpha.3",
75
+ "@prettier-ai/dsh-invariants": "^0.1.2-alpha.3",
76
+ "@prettier-ai/dsh-compaction": "^0.1.2-alpha.3",
77
+ "@prettier-ai/dsh-llm-retry": "^0.1.2-alpha.3",
78
+ "@prettier-ai/dsh-llm": "^0.1.2-alpha.3",
79
+ "@prettier-ai/dsh-session": "^0.1.2-alpha.3",
80
+ "@prettier-ai/dsh-session-stats": "^0.1.2-alpha.3",
81
+ "@prettier-ai/dsh-session-turn-outline": "^0.1.2-alpha.3",
82
+ "@prettier-ai/dsh-token-meter": "^0.1.2-alpha.3",
83
+ "@prettier-ai/dsh-util-workspace-path": "^0.1.2-alpha.3",
84
+ "@prettier-ai/dsh-settings": "^0.1.2-alpha.3",
85
+ "@prettier-ai/dsh-tools": "^0.1.2-alpha.3"
107
86
  },
108
87
  "dependencies": {
109
- "@prettier-ai/schemastery": "^3.18.1"
88
+ "@prettier-ai/schemastery": "^3.18.2"
110
89
  },
111
90
  "files": [
112
91
  "lib/index.js",
@@ -1,9 +0,0 @@
1
- import type { TurnTokenUsage } from '../contract/chat-nodes.ts';
2
- import type { ChatViewSlotProps } from '../contract/slots.ts';
3
- export interface TurnUsageDisclosureProps {
4
- usage: TurnTokenUsage;
5
- t: ChatViewSlotProps['t'];
6
- }
7
- /** Compact per-Turn usage summary with an opt-in bucket breakdown. */
8
- export declare function TurnUsageDisclosure({ usage, t }: TurnUsageDisclosureProps): import("react").JSX.Element;
9
- //# sourceMappingURL=TurnUsageDisclosure.d.ts.map