@prettier-ai/dsh-client-ui-trajectory 0.1.2-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.
Files changed (37) hide show
  1. package/LICENSE +21 -0
  2. package/README.i18n.yaml +6 -0
  3. package/README.md +98 -0
  4. package/README.zh.md +98 -0
  5. package/lib/client.js +8142 -0
  6. package/lib/index.js +6 -0
  7. package/lib/invariant.js +25 -0
  8. package/lib/types/client/TrajectoryCell.d.ts +13 -0
  9. package/lib/types/client/TrajectoryGroupHeader.d.ts +13 -0
  10. package/lib/types/client/TrajectoryTable.d.ts +108 -0
  11. package/lib/types/client/TrajectoryTimeline.d.ts +26 -0
  12. package/lib/types/client/TrajectoryToolbar.d.ts +34 -0
  13. package/lib/types/client/TrajectoryTurn.d.ts +17 -0
  14. package/lib/types/client/TrajectoryTurnHeader.d.ts +14 -0
  15. package/lib/types/client/TrajectoryView.d.ts +15 -0
  16. package/lib/types/client/copy-codes.d.ts +4 -0
  17. package/lib/types/client/duration-store.d.ts +7 -0
  18. package/lib/types/client/index.d.ts +16 -0
  19. package/lib/types/client/layout.d.ts +45 -0
  20. package/lib/types/client/locales.d.ts +193 -0
  21. package/lib/types/client/timeline.d.ts +52 -0
  22. package/lib/types/client/trajectory-assistant-definition.d.ts +8 -0
  23. package/lib/types/client/trajectory-compaction-definition.d.ts +8 -0
  24. package/lib/types/client/trajectory-contract.d.ts +87 -0
  25. package/lib/types/client/trajectory-definition-common.d.ts +12 -0
  26. package/lib/types/client/trajectory-event-projection.d.ts +51 -0
  27. package/lib/types/client/trajectory-message-definitions.d.ts +8 -0
  28. package/lib/types/client/trajectory-preview.d.ts +8 -0
  29. package/lib/types/client/trajectory-record.d.ts +108 -0
  30. package/lib/types/client/trajectory-request-header-definition.d.ts +8 -0
  31. package/lib/types/client/trajectory-search-index.d.ts +20 -0
  32. package/lib/types/client/trajectory-snapshot-builder.d.ts +29 -0
  33. package/lib/types/client/trajectory-tool-definition.d.ts +8 -0
  34. package/lib/types/client/trajectory-virtual-rows.d.ts +34 -0
  35. package/lib/types/index.d.ts +4 -0
  36. package/lib/types/invariant.d.ts +16 -0
  37. package/package.json +98 -0
@@ -0,0 +1,87 @@
1
+ import type { AssistantMessageNode, ConversationLocation, ConversationNode, ConversationPromptSnapshot, ConversationViewNode, MessageImagesOwnerProps, PartialAssistant, RequestPromptChange, RequestView, RunningToolCall, ToolCallBlock } from '@prettier-ai/dsh-client-ui-conversation/client';
2
+ import type { SnapshotSelectorHook } from '@prettier-ai/dsh-client-ui-slots';
3
+ /** Request-header facts retained by the Trajectory target. */
4
+ export interface TrajectoryRequestHeaderState {
5
+ readonly seq: number;
6
+ readonly time: number;
7
+ readonly prompt: ConversationPromptSnapshot;
8
+ readonly change?: RequestPromptChange;
9
+ readonly location: ConversationLocation;
10
+ }
11
+ /** One independently assembled contribution to the legacy Trajectory ledger. */
12
+ export type TrajectoryContribution = {
13
+ readonly kind: 'node';
14
+ readonly node: ConversationNode;
15
+ } | {
16
+ readonly kind: 'assistant';
17
+ readonly node?: AssistantMessageNode;
18
+ readonly partial: PartialAssistant | null;
19
+ readonly request?: Extract<RequestView, {
20
+ purpose: 'assistant';
21
+ }>;
22
+ } | {
23
+ readonly kind: 'tool';
24
+ readonly root: ToolCallBlock;
25
+ } | {
26
+ readonly kind: 'request-header';
27
+ readonly header: TrajectoryRequestHeaderState;
28
+ } | {
29
+ readonly kind: 'compaction';
30
+ readonly request: Extract<RequestView, {
31
+ purpose: 'compaction';
32
+ }>;
33
+ } | {
34
+ readonly kind: 'session-end';
35
+ readonly seq: number;
36
+ readonly time: number;
37
+ } | {
38
+ readonly kind: 'turn-end';
39
+ readonly turn: number;
40
+ readonly time: number;
41
+ readonly error?: string;
42
+ readonly errorCode?: string;
43
+ };
44
+ /** Target envelope consumed by the Trajectory snapshot builder. */
45
+ export interface TrajectoryConversationViewNode extends ConversationViewNode {
46
+ readonly target: 'trajectory';
47
+ readonly anchorSeq: number;
48
+ readonly location: ConversationLocation;
49
+ readonly data: TrajectoryContribution;
50
+ }
51
+ /** Stage-oriented Trajectory data assembled from registered business Contexts. */
52
+ export interface TrajectorySnapshot {
53
+ readonly eventNodes: readonly ConversationNode[];
54
+ readonly eventLocations: ReadonlyMap<number, ConversationLocation>;
55
+ readonly requests: readonly RequestView[];
56
+ readonly callSchemas: ReadonlyMap<string, ConversationPromptSnapshot['tools'][number]>;
57
+ readonly partial: PartialAssistant | null;
58
+ readonly runningCalls: readonly RunningToolCall[];
59
+ }
60
+ /** Selector hook over the current Conversation binding's Trajectory target. */
61
+ export type UseTrajectory = SnapshotSelectorHook<TrajectorySnapshot>;
62
+ declare module '@prettier-ai/dsh-client-ui-conversation/client' {
63
+ interface ConversationViewSnapshotMap {
64
+ /** Independently assembled data consumed by the Trajectory view. */
65
+ trajectory: TrajectorySnapshot;
66
+ }
67
+ }
68
+ declare module '@prettier-ai/dsh-client-ui-slots' {
69
+ interface SessionStandardProps {
70
+ /** Selector hook over the current Conversation binding's Trajectory target. */
71
+ useTrajectory: UseTrajectory;
72
+ }
73
+ interface SlotMap {
74
+ /**
75
+ * Renderer for one group of durable record images in the Trajectory
76
+ * ledger. The owner supplies image references, an authorized loader, and
77
+ * alignment. A registration replaces the shipped gallery; without one,
78
+ * images are omitted.
79
+ */
80
+ 'conversation.trajectory.images': {
81
+ kind: 'single';
82
+ scope: 'session';
83
+ owner: MessageImagesOwnerProps;
84
+ };
85
+ }
86
+ }
87
+ //# sourceMappingURL=trajectory-contract.d.ts.map
@@ -0,0 +1,12 @@
1
+ import type { ConversationNodeContext } from '@prettier-ai/dsh-client-ui-conversation/client';
2
+ import type { TrajectoryContribution, TrajectoryConversationViewNode } from './trajectory-contract.ts';
3
+ /**
4
+ * Wrap one contribution in the Engine-owned target envelope.
5
+ *
6
+ * @param context - Context that owns the contribution identity.
7
+ * @param anchorSeq - Sequence used to order the contribution.
8
+ * @param data - Trajectory-specific contribution payload.
9
+ * @returns The contribution wrapped as a Trajectory view node.
10
+ */
11
+ export declare function trajectoryNode(context: ConversationNodeContext, anchorSeq: number, data: TrajectoryContribution): TrajectoryConversationViewNode;
12
+ //# sourceMappingURL=trajectory-definition-common.d.ts.map
@@ -0,0 +1,51 @@
1
+ /** Trajectory-owned conversion from durable Session events to ledger view data. */
2
+ import type { ContentBlock, StreamChunk } from '@prettier-ai/dsh-llm/types';
3
+ import type { AssistantBlock, ContextProvenanceView, KnownContextForm } from '@prettier-ai/dsh-client-ui-conversation/client';
4
+ /**
5
+ * Read the target-supported presentation form from a durable message source.
6
+ * @param source - Logged `user/message` source.
7
+ * @returns Supported form, or null for the opaque presentation.
8
+ */
9
+ export declare function contextForm(source: unknown): KnownContextForm | null;
10
+ /**
11
+ * Project a durable message source to the Trajectory row's role and producer label.
12
+ * @param source - Logged `user/message` source.
13
+ * @returns Role and label rendered by Trajectory.
14
+ */
15
+ export declare function contextProvenance(source: unknown): ContextProvenanceView;
16
+ /**
17
+ * Classify finalized Assistant content for Trajectory rendering.
18
+ * @param content - Core content blocks.
19
+ * @returns Trajectory blocks in source order.
20
+ */
21
+ export declare function toAssistantBlocks(content: readonly ContentBlock[]): AssistantBlock[];
22
+ /**
23
+ * Classify one finalized Assistant block for Trajectory rendering.
24
+ * @param block - Core content block.
25
+ * @returns Trajectory block.
26
+ */
27
+ export declare function toAssistantBlock(block: ContentBlock): AssistantBlock;
28
+ /**
29
+ * Create the initial Trajectory block for one streamed Assistant block kind.
30
+ * @param blockType - Wire block kind.
31
+ * @returns Empty block ready to receive deltas.
32
+ */
33
+ export declare function emptyAssistantBlock(blockType: string): AssistantBlock;
34
+ /** Display-safe failure fields retained by Trajectory projections. */
35
+ export interface DisplayFailure {
36
+ readonly code?: string;
37
+ readonly message: string;
38
+ }
39
+ /**
40
+ * Convert a durable failure to locale-independent fields safe for Trajectory.
41
+ * @param failure - Failure preserved by a Session event.
42
+ * @returns Sanitized message and optional stable provider code.
43
+ */
44
+ export declare function displayFailure(failure: unknown): DisplayFailure;
45
+ /**
46
+ * Whether a stream chunk carries visible model output for Trajectory timing.
47
+ * @param chunk - Stream chunk to inspect.
48
+ * @returns true for a non-empty text, reasoning, or Tool-call delta.
49
+ */
50
+ export declare function isTokenDelta(chunk: StreamChunk): boolean;
51
+ //# sourceMappingURL=trajectory-event-projection.d.ts.map
@@ -0,0 +1,8 @@
1
+ import type { Context } from '@prettier-ai/cordis';
2
+ /**
3
+ * Register Trajectory-owned inbox classification and message records.
4
+ *
5
+ * @param ctx - Plugin context receiving the Definitions.
6
+ */
7
+ export declare function registerTrajectoryMessageDefinitions(ctx: Context): void;
8
+ //# sourceMappingURL=trajectory-message-definitions.d.ts.map
@@ -0,0 +1,8 @@
1
+ /** Bounded Markdown-to-text projection shared by trajectory consumers. */
2
+ /**
3
+ * Build a bounded one-line preview without parsing the complete Markdown document.
4
+ * @param text - Untrusted message, reasoning, payload, or result text.
5
+ * @returns A compact preview capped independently from the retained source.
6
+ */
7
+ export declare function trajectoryPreviewText(text: string): string;
8
+ //# sourceMappingURL=trajectory-preview.d.ts.map
@@ -0,0 +1,108 @@
1
+ /** Shared trajectory record data and formatting contracts. */
2
+ import type { HTMLAttributes } from 'react';
3
+ import type { ImageAttachmentRef } from '@prettier-ai/dsh-attachment';
4
+ import type { ConversationPromptSnapshot } from '@prettier-ai/dsh-client-ui-conversation/client';
5
+ import type { TrajectoryTranslate } from './locales.ts';
6
+ /** Closed set of trajectory record kinds. */
7
+ export type TrajectoryCellKind = 'system' | 'user' | 'context' | 'compacted' | 'message' | 'tool' | 'subtool';
8
+ /** Recorded inputs needed to derive assistant TTFT and decode throughput. */
9
+ export interface AssistantMetricDetail {
10
+ timingRecorded: boolean;
11
+ stepStartTime: number | null;
12
+ firstTokenTime: number | null;
13
+ completedTime: number | null;
14
+ usageProvided: boolean;
15
+ outputTokens: number | null;
16
+ }
17
+ /** One source content block preserved in model order for the details panel. */
18
+ export interface TrajectorySourceBlock {
19
+ type: string;
20
+ content: string;
21
+ attachment?: ImageAttachmentRef;
22
+ callId?: string;
23
+ toolName?: string;
24
+ }
25
+ /** Data and optional presentation attributes for one trajectory record. */
26
+ export interface TrajectoryCellProps extends HTMLAttributes<HTMLDivElement> {
27
+ /** 1-based record index shown as `#N`. */
28
+ index: number;
29
+ /** Projection-stable identity when no single source event owns the record lifecycle. */
30
+ recordId?: string;
31
+ kind: TrajectoryCellKind;
32
+ /** Non-Markdown summary or prefix; CSS ellipsis when it overflows. */
33
+ text: string;
34
+ /** Raw Markdown source converted into the single-line summary at its consumer. */
35
+ previewMarkdown?: string;
36
+ /** Whether this user record opens a new model turn. */
37
+ opensTurn?: boolean;
38
+ /** Source session-event seq for cross-record navigation. */
39
+ sourceSeq?: number;
40
+ /** Producer role and name from a user-role message or context injection. */
41
+ messageSource?: unknown;
42
+ /** Producer-owned model-hidden metadata carried beside the message source. */
43
+ /** A separator-only anchor for an auxiliary request with no visible record. */
44
+ requestOnly?: boolean;
45
+ /** Full request/message content for the details panel. */
46
+ inputDetail?: string;
47
+ /** Complete system-prompt/tool-catalog state introduced by a SYSTEM record. */
48
+ promptDetail?: ConversationPromptSnapshot;
49
+ /** System-prompt/tool-catalog state replaced by a SYSTEM update. */
50
+ previousPromptDetail?: ConversationPromptSnapshot;
51
+ /** Full assistant/tool result content for the details panel. */
52
+ outputDetail?: string;
53
+ /** Full assistant reasoning content for the details panel. */
54
+ thinkingDetail?: string;
55
+ /** Original message blocks in source order for the details panel. */
56
+ sourceBlocks?: readonly TrajectorySourceBlock[];
57
+ /** Original tool result blocks in source order for the details panel. */
58
+ outputBlocks?: readonly TrajectorySourceBlock[];
59
+ /** Call-time model-visible tool schema for the details panel. */
60
+ schemaDetail?: string;
61
+ /** Assistant-only timing and token facts for the details panel. */
62
+ assistantMetrics?: AssistantMetricDetail;
63
+ /** Tool-only result summary paired with the call in the same record. */
64
+ result?: string;
65
+ /** Raw Markdown source converted into the tool-result summary at its consumer. */
66
+ resultPreviewMarkdown?: string;
67
+ /** Tool call id used to link message source blocks to tool records. */
68
+ callId?: string;
69
+ /** Tool-only result failure state. */
70
+ isError?: boolean;
71
+ /** Own duration in seconds, or `null` when no duration is known. */
72
+ timeSeconds: number | null;
73
+ /** Unix epoch milliseconds when this operation actually started, when known. */
74
+ startedAt?: number | null;
75
+ /** Message-only prompt token count. */
76
+ input?: number;
77
+ /** Message-only input tokens served from a provider cache. */
78
+ cacheRead?: number;
79
+ /** Message-only input tokens written into a provider cache. */
80
+ cacheWrite?: number;
81
+ /** Message-only completion token count. */
82
+ output?: number;
83
+ /** Message-only reasoning token count. */
84
+ think?: number;
85
+ /** Whether the legacy standalone cell renders its selection treatment. */
86
+ selected?: boolean;
87
+ }
88
+ /**
89
+ * Resolve the identity that survives prepending older projected records.
90
+ * @param cell - Projected trajectory record.
91
+ * @returns Stable identity from the owning event or tool call, with a fixture fallback.
92
+ */
93
+ export declare function trajectoryRecordId(cell: TrajectoryCellProps): string;
94
+ /**
95
+ * Format a duration in milliseconds with thousands separators.
96
+ * @param milliseconds - Duration in milliseconds, or `null` when absent.
97
+ * @param t - Trajectory locale translator.
98
+ * @returns `—` when unknown, otherwise an integer-millisecond label.
99
+ */
100
+ export declare function formatDurationMillis(milliseconds: number | null, t: TrajectoryTranslate): string;
101
+ /**
102
+ * Format an elapsed duration given in seconds as a millisecond label.
103
+ * @param seconds - Duration seconds, or `null` when absent.
104
+ * @param t - Trajectory locale translator.
105
+ * @returns `—` when unknown, otherwise an integer-millisecond label.
106
+ */
107
+ export declare function formatElapsedSeconds(seconds: number | null, t: TrajectoryTranslate): string;
108
+ //# sourceMappingURL=trajectory-record.d.ts.map
@@ -0,0 +1,8 @@
1
+ import type { Context } from '@prettier-ai/cordis';
2
+ /**
3
+ * Register Trajectory request-header facts.
4
+ *
5
+ * @param ctx - Plugin context receiving the Definition.
6
+ */
7
+ export declare function registerTrajectoryRequestHeaderDefinition(ctx: Context): void;
8
+ //# sourceMappingURL=trajectory-request-header-definition.d.ts.map
@@ -0,0 +1,20 @@
1
+ /** Incremental full-text index for the trajectory ledger. */
2
+ import type { TrajectoryTurnModel } from './layout.ts';
3
+ /** Session-view-local index that reparses Markdown only when one record's source changes. */
4
+ export declare class TrajectorySearchIndex {
5
+ private readonly entries;
6
+ private layouts;
7
+ /**
8
+ * Incrementally synchronize one or more current trajectory layout slices.
9
+ * @param layouts - Finalized and optional streaming layouts from the same view.
10
+ * @returns Whether the indexed layout version changed.
11
+ */
12
+ update(layouts: readonly (readonly TrajectoryTurnModel[])[]): boolean;
13
+ /**
14
+ * Match a query against the latest committed index version.
15
+ * @param query - Space-separated case-insensitive search terms.
16
+ * @returns Matching stable record identities, or `null` without a query.
17
+ */
18
+ search(query: string): ReadonlySet<string> | null;
19
+ }
20
+ //# sourceMappingURL=trajectory-search-index.d.ts.map
@@ -0,0 +1,29 @@
1
+ import type { Context } from '@prettier-ai/cordis';
2
+ import type { ConversationViewBuilder, ConversationViewDefinition } from '@prettier-ai/dsh-client-ui-conversation/client';
3
+ import type { TrajectoryConversationViewNode, TrajectorySnapshot } from './trajectory-contract.ts';
4
+ /** Stable empty target used until a Session has assembled Trajectory records. */
5
+ export declare const EMPTY_TRAJECTORY_SNAPSHOT: TrajectorySnapshot;
6
+ /** Simple keyed adapter retaining the old Trajectory snapshot and stage layout. */
7
+ export declare class TrajectorySnapshotBuilder implements ConversationViewBuilder<TrajectoryConversationViewNode, TrajectorySnapshot> {
8
+ private readonly nodes;
9
+ private readonly positions;
10
+ private contributions;
11
+ readonly empty: TrajectorySnapshot;
12
+ replace(input: {
13
+ readonly nodes: readonly TrajectoryConversationViewNode[];
14
+ }): TrajectorySnapshot;
15
+ apply(input: {
16
+ readonly upserts: readonly TrajectoryConversationViewNode[];
17
+ }): TrajectorySnapshot;
18
+ private snapshot;
19
+ private rebuildContributions;
20
+ }
21
+ /** Trajectory target factory preserving the existing stage-oriented view model. */
22
+ export declare const trajectoryViewDefinition: ConversationViewDefinition<TrajectoryConversationViewNode, TrajectorySnapshot>;
23
+ /**
24
+ * Register the stage-oriented Trajectory target builder.
25
+ *
26
+ * @param ctx - Plugin context receiving the view Definition.
27
+ */
28
+ export declare function registerTrajectoryConversationView(ctx: Context): void;
29
+ //# sourceMappingURL=trajectory-snapshot-builder.d.ts.map
@@ -0,0 +1,8 @@
1
+ import type { Context } from '@prettier-ai/cordis';
2
+ /**
3
+ * Register the Trajectory Tool lifecycle.
4
+ *
5
+ * @param ctx - Plugin context receiving the Definition.
6
+ */
7
+ export declare function registerTrajectoryToolDefinition(ctx: Context): void;
8
+ //# sourceMappingURL=trajectory-tool-definition.d.ts.map
@@ -0,0 +1,34 @@
1
+ /** Pure projection from trajectory records to measurable virtual ledger rows. */
2
+ import type { TrajectoryCellProps } from './trajectory-record.ts';
3
+ /** Minimal record shape required by the trajectory virtual-row projection. */
4
+ export interface VirtualizableTrajectoryRecord {
5
+ cell: TrajectoryCellProps;
6
+ collapsedSummaryKind?: 'turn' | 'assistant';
7
+ }
8
+ /** One logical record retained inside a measurable virtual row. */
9
+ export interface TrajectoryVirtualRowEntry<T extends VirtualizableTrajectoryRecord> {
10
+ logicalIndex: number;
11
+ record: T;
12
+ }
13
+ /** One virtualizer item, which may carry zero-height request boundaries. */
14
+ export interface TrajectoryVirtualRow<T extends VirtualizableTrajectoryRecord> {
15
+ entries: readonly TrajectoryVirtualRowEntry<T>[];
16
+ height: number;
17
+ key: string;
18
+ }
19
+ /**
20
+ * Derive the DOM-safe row identity shared by React, the virtualizer, and
21
+ * browser scroll contracts.
22
+ * @param record - Display record whose identity is required.
23
+ * @returns Stable record identity with a suffix for synthetic fold summaries.
24
+ */
25
+ export declare function trajectoryVirtualRecordKey(record: VirtualizableTrajectoryRecord): string;
26
+ /**
27
+ * Attach separator-only records to the next content row so the virtualizer
28
+ * never owns a zero-height item. A terminal separator retains its CSS-owned
29
+ * lower-marker clearance as a standalone item.
30
+ * @param records - Final search/fold projection in ledger order.
31
+ * @returns Measurable virtual rows with original logical positions retained.
32
+ */
33
+ export declare function groupTrajectoryVirtualRows<T extends VirtualizableTrajectoryRecord>(records: readonly T[]): readonly TrajectoryVirtualRow<T>[];
34
+ //# sourceMappingURL=trajectory-virtual-rows.d.ts.map
@@ -0,0 +1,4 @@
1
+ /** Host loader entry for the browser-only trajectory plugin. */
2
+ /** Provides no host-side behavior. */
3
+ export declare function apply(): void;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Package-owned invariant companion for `@prettier-ai/dsh-client-ui-trajectory`.
3
+ * @module @prettier-ai/dsh-client-ui-trajectory/invariant
4
+ */
5
+ import type { Context } from '@prettier-ai/cordis';
6
+ /** Cordis companion plugin name. */
7
+ export declare const name = "client-ui-trajectory-invariant";
8
+ /** Service required before the companion can reserve package ownership. */
9
+ export declare const inject: string[];
10
+ /**
11
+ * Register this package's invariant companion.
12
+ * @param ctx - Cordis context carrying the invariant service.
13
+ * @returns the installed registration's disposer after setup succeeds.
14
+ */
15
+ export declare const apply: (ctx: Context) => Promise<() => void>;
16
+ //# sourceMappingURL=invariant.d.ts.map
package/package.json ADDED
@@ -0,0 +1,98 @@
1
+ {
2
+ "name": "@prettier-ai/dsh-client-ui-trajectory",
3
+ "description": "Trajectory event ledger with an interactive timing overview: pure-consumer plugin registering into the conversation ViewMap (no service)",
4
+ "version": "0.1.2-alpha.1",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
11
+ "directory": "packages/client/ui-trajectory"
12
+ },
13
+ "type": "module",
14
+ "main": "lib/index.js",
15
+ "types": "lib/types/index.d.ts",
16
+ "exports": {
17
+ ".": {
18
+ "types": "./lib/types/index.d.ts",
19
+ "default": "./lib/index.js"
20
+ },
21
+ "./invariant": {
22
+ "types": "./lib/types/invariant.d.ts",
23
+ "default": "./lib/invariant.js"
24
+ },
25
+ "./client": {
26
+ "types": "./lib/types/client/index.d.ts",
27
+ "default": "./lib/client.js"
28
+ },
29
+ "./src/*": "./src/*",
30
+ "./package.json": "./package.json"
31
+ },
32
+ "dsh": {
33
+ "client": {
34
+ "inject": [
35
+ "@prettier-ai/dsh-api-session-controller",
36
+ "@prettier-ai/dsh-client-locale",
37
+ "@prettier-ai/dsh-client-ui-conversation",
38
+ "@prettier-ai/dsh-client-ui-renderer",
39
+ "@prettier-ai/dsh-client-ui-session"
40
+ ],
41
+ "platform": "web"
42
+ }
43
+ },
44
+ "license": "MIT",
45
+ "dependencies": {
46
+ "@tanstack/react-virtual": "^3.14.9",
47
+ "diff": "^9.0.0"
48
+ },
49
+ "peerDependencies": {
50
+ "@prettier-ai/dsh-client-locale": "^0.1.2-alpha.1",
51
+ "@prettier-ai/dsh-invariants": "^0.1.2-alpha.1",
52
+ "@prettier-ai/cordis": "^4.0.1",
53
+ "@prettier-ai/dsh-agent": "^0.1.2-alpha.1",
54
+ "@prettier-ai/dsh-compaction": "^0.1.2-alpha.1",
55
+ "@prettier-ai/dsh-tools": "^0.1.2-alpha.1",
56
+ "@prettier-ai/dsh-session": "^0.1.2-alpha.1",
57
+ "@prettier-ai/dsh-api-session-controller": "^0.1.2-alpha.1",
58
+ "@prettier-ai/dsh-client-ui-renderer": "^0.1.2-alpha.1",
59
+ "@prettier-ai/dsh-client-ui-session": "^0.1.2-alpha.1",
60
+ "@prettier-ai/dsh-llm": "^0.1.2-alpha.1",
61
+ "@prettier-ai/dsh-client-ui-conversation": "^0.1.2-alpha.1",
62
+ "@prettier-ai/dsh-attachment": "^0.1.2-alpha.1"
63
+ },
64
+ "devDependencies": {
65
+ "@types/react": "~18.3.1",
66
+ "@types/react-dom": "~18.3.0",
67
+ "react": "^18.2.0",
68
+ "react-dom": "^18.2.0",
69
+ "@prettier-ai/dsh-agent": "^0.1.2-alpha.1",
70
+ "@prettier-ai/dsh-client-test-runtime": "^0.1.2-alpha.1",
71
+ "@prettier-ai/dsh-client-ui-primitives": "^0.1.2-alpha.1",
72
+ "@prettier-ai/dsh-client-locale": "^0.1.2-alpha.1",
73
+ "@prettier-ai/dsh-client-ui-conversation": "^0.1.2-alpha.1",
74
+ "@prettier-ai/dsh-client-ui-slots": "^0.1.2-alpha.1",
75
+ "@prettier-ai/dsh-compaction": "^0.1.2-alpha.1",
76
+ "@prettier-ai/dsh-tools": "^0.1.2-alpha.1",
77
+ "@prettier-ai/cordis": "^4.0.1",
78
+ "@prettier-ai/dsh-client-store": "^0.1.2-alpha.1",
79
+ "@prettier-ai/dsh-session": "^0.1.2-alpha.1",
80
+ "@prettier-ai/dsh-invariants": "^0.1.2-alpha.1",
81
+ "@prettier-ai/dsh-client-ui-chat": "^0.1.2-alpha.1",
82
+ "@prettier-ai/dsh-api-session-controller": "^0.1.2-alpha.1",
83
+ "@prettier-ai/dsh-client-ui-renderer": "^0.1.2-alpha.1",
84
+ "@prettier-ai/dsh-llm": "^0.1.2-alpha.1",
85
+ "@prettier-ai/dsh-client-ui-session": "^0.1.2-alpha.1",
86
+ "@prettier-ai/dsh-attachment": "^0.1.2-alpha.1"
87
+ },
88
+ "files": [
89
+ "lib/index.js",
90
+ "lib/invariant.js",
91
+ "lib/client.js",
92
+ "lib/types/**/*.d.ts"
93
+ ],
94
+ "scripts": {
95
+ "bundle": "tsdown",
96
+ "watch": "tsdown --watch"
97
+ }
98
+ }