@kirkchinese/dsh-citeciter 0.1.0 → 0.2.0

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.
@@ -0,0 +1,22 @@
1
+ import type { SessionId, SessionListState } from '@deepseek-ai/dsh-client-runtime/client';
2
+ import { type CitationRecord, type CitationThread } from '../thread.ts';
3
+ import type { CiteSelection } from './types.ts';
4
+ /** Browser-facing summary of one durable projected Citation Thread. */
5
+ export interface ThreadSummary {
6
+ readonly sessionId: SessionId;
7
+ readonly parentSessionId: SessionId;
8
+ readonly parentTitle: string;
9
+ readonly title?: string;
10
+ readonly updatedAt: number;
11
+ readonly running: boolean;
12
+ readonly citation: CitationRecord;
13
+ readonly historyStartSeq: number;
14
+ readonly contextSeq: number;
15
+ }
16
+ /** Build the immutable Citation record and its SHA-256 selection identity. */
17
+ export declare function createCitation(selection: CiteSelection, sourceSessionId: SessionId, anchorSeq: number): Promise<CitationRecord>;
18
+ export declare function summarizeCitationThread(list: SessionListState, sessionId: SessionId, thread: CitationThread): ThreadSummary | null;
19
+ /** Discover every unarchived Thread from Host-computed list-row projections. */
20
+ export declare function listCitationThreads(list: SessionListState, archivedSessionIds?: readonly SessionId[]): readonly ThreadSummary[];
21
+ /** Find the one durable Thread whose full Citation identity matches. */
22
+ export declare function findCitationThread(threads: readonly ThreadSummary[], citation: CitationRecord): ThreadSummary | undefined;
@@ -0,0 +1,14 @@
1
+ import type { ConversationSnapshot } from '@deepseek-ai/dsh-client-runtime/client';
2
+ /** One user-visible entry in the child-only Citation Thread transcript. */
3
+ export type TranscriptEntry = {
4
+ readonly id: string;
5
+ readonly role: 'user' | 'assistant' | 'error';
6
+ readonly text: string;
7
+ readonly streaming: boolean;
8
+ };
9
+ /**
10
+ * Extract only child-owned genuine questions, answers, and durable errors.
11
+ * Runtime-context and permission-command rows remain in the log but are not
12
+ * duplicated in this focused teaching transcript.
13
+ */
14
+ export declare function extractTranscript(snapshot: ConversationSnapshot, historyStartSeq: number): readonly TranscriptEntry[];
@@ -1,11 +1,22 @@
1
+ import type { SessionId } from '@deepseek-ai/dsh-client-runtime/client';
1
2
  /** One validated right-click selection inside a conversation flow node. */
2
3
  export interface CiteSelection {
4
+ /** Session owning the selected assistant flow at capture time. */
5
+ readonly sourceSessionId: SessionId;
3
6
  /** Selected plain text (already trimmed; display may truncate separately). */
4
7
  readonly text: string;
5
8
  /** Flow kind of the DOM node that owns the selection. */
6
9
  readonly kind: 'assistant-step';
7
10
  /** Conversation snapshot node key (`data-chat-anchor-key`). */
8
11
  readonly anchorKey: string;
12
+ /** UTF-16 offset of the trimmed selection within the owning flow's plain text. */
13
+ readonly startOffset: number;
14
+ /** Exclusive UTF-16 end offset within the owning flow's plain text. */
15
+ readonly endOffset: number;
16
+ /** Bounded plain-text context immediately preceding the selection. */
17
+ readonly prefixText: string;
18
+ /** Bounded plain-text context immediately following the selection. */
19
+ readonly suffixText: string;
9
20
  /** Horizontal pointer position for the floating menu, in client coordinates. */
10
21
  readonly x: number;
11
22
  /** Vertical pointer position for the floating menu, in client coordinates. */
@@ -1,12 +1,28 @@
1
- /**
2
- * Host loader entry for the browser-only CiteCiter plugin.
3
- * Deliberately no-op: the browser half (`./client`) owns the whole feature,
4
- * and the plugin registers no process-level Host service (the known
5
- * Cordis duplicate-service trap therefore cannot trigger).
6
- */
7
- /** Cordis plugin identity shared with the browser bundle. */
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ import type { Agent } from '@deepseek-ai/dsh-agent';
3
+ import { TypertRemoteService } from '@deepseek-ai/dsh-typert-protocol';
4
+ import { type CitationRecord } from './thread.ts';
5
+ /** Public Citation wire shape referenced by the strict Typert manifest. */
6
+ export type { CitationRecord } from './thread.ts';
7
+ /** Cordis/Typert service identity and package name. */
8
8
  export declare const name = "@kirkchinese/dsh-citeciter";
9
- /** CiteCiter has no Host service dependencies. */
10
- export declare const inject: readonly [];
11
- /** Register no Host effects; all behavior belongs to the browser plugin. */
12
- export declare function apply(): void;
9
+ export interface PrepareThreadResult {
10
+ readonly ready: true;
11
+ readonly citation: CitationRecord;
12
+ }
13
+ /** Host service for durable, isolated Citation Threads. */
14
+ export declare class CiteCiterHost extends TypertRemoteService {
15
+ static inject: string[];
16
+ private readonly active;
17
+ private projectionRegistry;
18
+ constructor(ctx: Context);
19
+ /** Validate one forked child and install its immutable Citation Thread scope. */
20
+ prepareThread(agent: Agent, rawCitation: CitationRecord): Promise<PrepareThreadResult>;
21
+ private restore;
22
+ private install;
23
+ }
24
+ /** Loader-facing namespace plugin wrapper (the bundle patch imports the package root). */
25
+ export declare const inject: readonly ["agents"];
26
+ /** Mount the Remote Service class inside the package entry's owning fiber. */
27
+ export declare function apply(ctx: Context): void;
28
+ export default CiteCiterHost;
@@ -0,0 +1,4 @@
1
+ import type { ProjectionDefinition } from '@deepseek-ai/dsh-session-projection';
2
+ import { type CiteCiterProjection } from './thread.ts';
3
+ /** Pure durable projection of the first Citation context in a forked child. */
4
+ export declare const citeCiterProjection: ProjectionDefinition<'citeciter', CiteCiterProjection>;
@@ -0,0 +1,13 @@
1
+ import type { Agent } from '@deepseek-ai/dsh-agent';
2
+ export type ReadOnlyCommandStatus = {
3
+ readonly kind: 'pending';
4
+ } | {
5
+ readonly kind: 'ready';
6
+ } | {
7
+ readonly kind: 'error';
8
+ readonly message: string;
9
+ };
10
+ /** Fold the latest child-owned permission lifecycle and current sandbox state. */
11
+ export declare function readOnlyCommandStatus(agent: Agent): ReadOnlyCommandStatus;
12
+ /** Wait for durable command settlement instead of treating admission as success. */
13
+ export declare function requireReadOnlyCommand(agent: Agent, timeoutMs?: number): Promise<void>;
@@ -0,0 +1,107 @@
1
+ import type { SessionId } from '@deepseek-ai/dsh-session';
2
+ import { z } from 'zod';
3
+ /** Durable Citation format. Bump only with an explicit projection migration. */
4
+ export declare const CITATION_SCHEMA_VERSION: 1;
5
+ /** Session-projection key published to browser session rows. */
6
+ export declare const CITECITER_PROJECTION_KEY: "citeciter";
7
+ /** Named SystemPrompt context contribution retained in snapshot provenance. */
8
+ export declare const CITATION_CONTEXT_NAME: "@kirkchinese/dsh-citeciter:citation";
9
+ /** Named scoped system section defining the pedagogical contract. */
10
+ export declare const TUTOR_SECTION_NAME: "@kirkchinese/dsh-citeciter:tutor";
11
+ export declare const citationRecordSchema: z.ZodObject<{
12
+ schemaVersion: z.ZodLiteral<1>;
13
+ sourceSessionId: z.ZodString;
14
+ anchorKey: z.ZodString;
15
+ anchorSeq: z.ZodNumber;
16
+ startOffset: z.ZodNumber;
17
+ endOffset: z.ZodNumber;
18
+ selectionFingerprint: z.ZodString;
19
+ selectedText: z.ZodString;
20
+ prefixText: z.ZodString;
21
+ suffixText: z.ZodString;
22
+ createdAt: z.ZodNumber;
23
+ }, z.core.$strict>;
24
+ /** Immutable, durable identity and evidence for one Citation Thread. */
25
+ export interface CitationRecord extends z.infer<typeof citationRecordSchema> {
26
+ readonly sourceSessionId: SessionId;
27
+ }
28
+ export declare const citationThreadSchema: z.ZodObject<{
29
+ citation: z.ZodObject<{
30
+ schemaVersion: z.ZodLiteral<1>;
31
+ sourceSessionId: z.ZodString;
32
+ anchorKey: z.ZodString;
33
+ anchorSeq: z.ZodNumber;
34
+ startOffset: z.ZodNumber;
35
+ endOffset: z.ZodNumber;
36
+ selectionFingerprint: z.ZodString;
37
+ selectedText: z.ZodString;
38
+ prefixText: z.ZodString;
39
+ suffixText: z.ZodString;
40
+ createdAt: z.ZodNumber;
41
+ }, z.core.$strict>;
42
+ historyStartSeq: z.ZodNumber;
43
+ contextSeq: z.ZodNumber;
44
+ }, z.core.$strict>;
45
+ export interface CitationThread extends z.infer<typeof citationThreadSchema> {
46
+ readonly citation: CitationRecord;
47
+ }
48
+ export declare const citeCiterProjectionSchema: z.ZodObject<{
49
+ thread: z.ZodNullable<z.ZodObject<{
50
+ citation: z.ZodObject<{
51
+ schemaVersion: z.ZodLiteral<1>;
52
+ sourceSessionId: z.ZodString;
53
+ anchorKey: z.ZodString;
54
+ anchorSeq: z.ZodNumber;
55
+ startOffset: z.ZodNumber;
56
+ endOffset: z.ZodNumber;
57
+ selectionFingerprint: z.ZodString;
58
+ selectedText: z.ZodString;
59
+ prefixText: z.ZodString;
60
+ suffixText: z.ZodString;
61
+ createdAt: z.ZodNumber;
62
+ }, z.core.$strict>;
63
+ historyStartSeq: z.ZodNumber;
64
+ contextSeq: z.ZodNumber;
65
+ }, z.core.$strict>>;
66
+ }, z.core.$strict>;
67
+ /** Whole projection value carried to list rows and live sessions. */
68
+ export interface CiteCiterProjection {
69
+ readonly thread: CitationThread | null;
70
+ }
71
+ /** Fields whose canonical serialization defines Citation identity. */
72
+ export type CitationFingerprintInput = Omit<CitationRecord, 'schemaVersion' | 'selectionFingerprint' | 'createdAt'>;
73
+ /**
74
+ * Serialize the exact selection identity identically in Node and the browser.
75
+ * An array fixes field order independently of object construction order.
76
+ */
77
+ export declare function canonicalCitationIdentity(input: CitationFingerprintInput): string;
78
+ declare const citationContextEnvelopeSchema: z.ZodObject<{
79
+ citation: z.ZodObject<{
80
+ schemaVersion: z.ZodLiteral<1>;
81
+ sourceSessionId: z.ZodString;
82
+ anchorKey: z.ZodString;
83
+ anchorSeq: z.ZodNumber;
84
+ startOffset: z.ZodNumber;
85
+ endOffset: z.ZodNumber;
86
+ selectionFingerprint: z.ZodString;
87
+ selectedText: z.ZodString;
88
+ prefixText: z.ZodString;
89
+ suffixText: z.ZodString;
90
+ createdAt: z.ZodNumber;
91
+ }, z.core.$strict>;
92
+ historyStartSeq: z.ZodNumber;
93
+ }, z.core.$strict>;
94
+ export interface CitationContextEnvelope extends z.infer<typeof citationContextEnvelopeSchema> {
95
+ readonly citation: CitationRecord;
96
+ }
97
+ /** Render a self-delimiting context snapshot whose quote cannot escape its JSON string. */
98
+ export declare function renderCitationContext(citation: CitationRecord, historyStartSeq: number): string;
99
+ /** Parse only CiteCiter's exact runtime-context representation. */
100
+ export declare function parseCitationContext(text: string): CitationContextEnvelope | null;
101
+ /** Merge-extensible projection map exposed by the Host registry and Client runtime. */
102
+ declare module '@deepseek-ai/dsh-session-projection/types' {
103
+ interface SessionProjectionMap {
104
+ citeciter: CiteCiterProjection;
105
+ }
106
+ }
107
+ export {};
@@ -0,0 +1,88 @@
1
+ import { z } from 'zod';
2
+ export declare const prepareThreadResultSchema: z.ZodObject<{
3
+ ready: z.ZodLiteral<true>;
4
+ citation: z.ZodObject<{
5
+ schemaVersion: z.ZodLiteral<1>;
6
+ sourceSessionId: z.ZodString;
7
+ anchorKey: z.ZodString;
8
+ anchorSeq: z.ZodNumber;
9
+ startOffset: z.ZodNumber;
10
+ endOffset: z.ZodNumber;
11
+ selectionFingerprint: z.ZodString;
12
+ selectedText: z.ZodString;
13
+ prefixText: z.ZodString;
14
+ suffixText: z.ZodString;
15
+ createdAt: z.ZodNumber;
16
+ }, z.core.$strict>;
17
+ }, z.core.$strict>;
18
+ /** Strict descriptor shared byte-for-byte by Host and Client contributions. */
19
+ export declare const prepareThreadDescriptor: {
20
+ readonly id: "@kirkchinese/dsh-citeciter#citeciter/prepareThread";
21
+ readonly service: "citeciter";
22
+ readonly namespace: "citeciter";
23
+ readonly method: "prepareThread";
24
+ readonly invocation: {
25
+ readonly kind: "direct";
26
+ };
27
+ readonly scope: {
28
+ readonly context: "agent";
29
+ readonly wire: "agentId";
30
+ };
31
+ readonly parameters: readonly [{
32
+ readonly name: "agent";
33
+ readonly wire: "agentId";
34
+ readonly source: "lookup";
35
+ readonly lookup: "agent";
36
+ readonly codec: {
37
+ readonly mode: "strict";
38
+ readonly typeSymbol: "@deepseek-ai/dsh-session/types#SessionId";
39
+ readonly schema: z.ZodString;
40
+ };
41
+ }, {
42
+ readonly name: "rawCitation";
43
+ readonly wire: "rawCitation";
44
+ readonly source: "json";
45
+ readonly codec: {
46
+ readonly mode: "strict";
47
+ readonly typeSymbol: "@kirkchinese/dsh-citeciter#CitationRecord";
48
+ readonly schema: z.ZodObject<{
49
+ schemaVersion: z.ZodLiteral<1>;
50
+ sourceSessionId: z.ZodString;
51
+ anchorKey: z.ZodString;
52
+ anchorSeq: z.ZodNumber;
53
+ startOffset: z.ZodNumber;
54
+ endOffset: z.ZodNumber;
55
+ selectionFingerprint: z.ZodString;
56
+ selectedText: z.ZodString;
57
+ prefixText: z.ZodString;
58
+ suffixText: z.ZodString;
59
+ createdAt: z.ZodNumber;
60
+ }, z.core.$strict>;
61
+ };
62
+ }];
63
+ readonly result: {
64
+ readonly mode: "strict";
65
+ readonly typeSymbol: "@kirkchinese/dsh-citeciter#PrepareThreadResult";
66
+ readonly schema: z.ZodObject<{
67
+ ready: z.ZodLiteral<true>;
68
+ citation: z.ZodObject<{
69
+ schemaVersion: z.ZodLiteral<1>;
70
+ sourceSessionId: z.ZodString;
71
+ anchorKey: z.ZodString;
72
+ anchorSeq: z.ZodNumber;
73
+ startOffset: z.ZodNumber;
74
+ endOffset: z.ZodNumber;
75
+ selectionFingerprint: z.ZodString;
76
+ selectedText: z.ZodString;
77
+ prefixText: z.ZodString;
78
+ suffixText: z.ZodString;
79
+ createdAt: z.ZodNumber;
80
+ }, z.core.$strict>;
81
+ }, z.core.$strict>;
82
+ };
83
+ readonly sourceLocation: {
84
+ readonly file: "src/index.ts";
85
+ readonly line: 104;
86
+ readonly column: 3;
87
+ };
88
+ };
@@ -0,0 +1,115 @@
1
+ /** Handwritten strict Host contribution kept in sync with the Remote decorator. */
2
+ export declare const TYPERT: {
3
+ readonly package: "@kirkchinese/dsh-citeciter";
4
+ readonly face: "host";
5
+ readonly schemas: readonly [{
6
+ readonly name: "CitationRecord";
7
+ readonly schema: import("zod").ZodObject<{
8
+ schemaVersion: import("zod").ZodLiteral<1>;
9
+ sourceSessionId: import("zod").ZodString;
10
+ anchorKey: import("zod").ZodString;
11
+ anchorSeq: import("zod").ZodNumber;
12
+ startOffset: import("zod").ZodNumber;
13
+ endOffset: import("zod").ZodNumber;
14
+ selectionFingerprint: import("zod").ZodString;
15
+ selectedText: import("zod").ZodString;
16
+ prefixText: import("zod").ZodString;
17
+ suffixText: import("zod").ZodString;
18
+ createdAt: import("zod").ZodNumber;
19
+ }, import("zod/v4/core").$strict>;
20
+ }, {
21
+ readonly name: "PrepareThreadResult";
22
+ readonly schema: import("zod").ZodObject<{
23
+ ready: import("zod").ZodLiteral<true>;
24
+ citation: import("zod").ZodObject<{
25
+ schemaVersion: import("zod").ZodLiteral<1>;
26
+ sourceSessionId: import("zod").ZodString;
27
+ anchorKey: import("zod").ZodString;
28
+ anchorSeq: import("zod").ZodNumber;
29
+ startOffset: import("zod").ZodNumber;
30
+ endOffset: import("zod").ZodNumber;
31
+ selectionFingerprint: import("zod").ZodString;
32
+ selectedText: import("zod").ZodString;
33
+ prefixText: import("zod").ZodString;
34
+ suffixText: import("zod").ZodString;
35
+ createdAt: import("zod").ZodNumber;
36
+ }, import("zod/v4/core").$strict>;
37
+ }, import("zod/v4/core").$strict>;
38
+ }];
39
+ readonly model: {
40
+ readonly services: readonly [];
41
+ readonly events: readonly [];
42
+ readonly objects: readonly [];
43
+ };
44
+ readonly invocations: readonly [{
45
+ readonly id: "@kirkchinese/dsh-citeciter#citeciter/prepareThread";
46
+ readonly service: "citeciter";
47
+ readonly namespace: "citeciter";
48
+ readonly method: "prepareThread";
49
+ readonly invocation: {
50
+ readonly kind: "direct";
51
+ };
52
+ readonly scope: {
53
+ readonly context: "agent";
54
+ readonly wire: "agentId";
55
+ };
56
+ readonly parameters: readonly [{
57
+ readonly name: "agent";
58
+ readonly wire: "agentId";
59
+ readonly source: "lookup";
60
+ readonly lookup: "agent";
61
+ readonly codec: {
62
+ readonly mode: "strict";
63
+ readonly typeSymbol: "@deepseek-ai/dsh-session/types#SessionId";
64
+ readonly schema: import("zod").ZodString;
65
+ };
66
+ }, {
67
+ readonly name: "rawCitation";
68
+ readonly wire: "rawCitation";
69
+ readonly source: "json";
70
+ readonly codec: {
71
+ readonly mode: "strict";
72
+ readonly typeSymbol: "@kirkchinese/dsh-citeciter#CitationRecord";
73
+ readonly schema: import("zod").ZodObject<{
74
+ schemaVersion: import("zod").ZodLiteral<1>;
75
+ sourceSessionId: import("zod").ZodString;
76
+ anchorKey: import("zod").ZodString;
77
+ anchorSeq: import("zod").ZodNumber;
78
+ startOffset: import("zod").ZodNumber;
79
+ endOffset: import("zod").ZodNumber;
80
+ selectionFingerprint: import("zod").ZodString;
81
+ selectedText: import("zod").ZodString;
82
+ prefixText: import("zod").ZodString;
83
+ suffixText: import("zod").ZodString;
84
+ createdAt: import("zod").ZodNumber;
85
+ }, import("zod/v4/core").$strict>;
86
+ };
87
+ }];
88
+ readonly result: {
89
+ readonly mode: "strict";
90
+ readonly typeSymbol: "@kirkchinese/dsh-citeciter#PrepareThreadResult";
91
+ readonly schema: import("zod").ZodObject<{
92
+ ready: import("zod").ZodLiteral<true>;
93
+ citation: import("zod").ZodObject<{
94
+ schemaVersion: import("zod").ZodLiteral<1>;
95
+ sourceSessionId: import("zod").ZodString;
96
+ anchorKey: import("zod").ZodString;
97
+ anchorSeq: import("zod").ZodNumber;
98
+ startOffset: import("zod").ZodNumber;
99
+ endOffset: import("zod").ZodNumber;
100
+ selectionFingerprint: import("zod").ZodString;
101
+ selectedText: import("zod").ZodString;
102
+ prefixText: import("zod").ZodString;
103
+ suffixText: import("zod").ZodString;
104
+ createdAt: import("zod").ZodNumber;
105
+ }, import("zod/v4/core").$strict>;
106
+ }, import("zod/v4/core").$strict>;
107
+ };
108
+ readonly sourceLocation: {
109
+ readonly file: "src/index.ts";
110
+ readonly line: 104;
111
+ readonly column: 3;
112
+ };
113
+ }];
114
+ };
115
+ export default TYPERT;
@@ -0,0 +1,21 @@
1
+ import type { SessionId } from '@deepseek-ai/dsh-session';
2
+ import type { RemoteResult, TypertRemoteContribution } from '@deepseek-ai/dsh-typert-protocol';
3
+ import type { PrepareThreadResult } from './index.ts';
4
+ import type { CitationRecord } from './thread.ts';
5
+ declare module '@deepseek-ai/dsh-typert-protocol' {
6
+ interface CiteCiterRemoteNamespace {
7
+ prepareThread: (agentId: SessionId, citation: CitationRecord) => Promise<RemoteResult<PrepareThreadResult>>;
8
+ }
9
+ interface TypertRemoteMap {
10
+ 'citeciter/prepareThread': CiteCiterRemoteNamespace['prepareThread'];
11
+ }
12
+ interface TypertRemoteNamespaceMap {
13
+ citeciter: CiteCiterRemoteNamespace;
14
+ }
15
+ interface TypertRemoteScopeMap {
16
+ 'agent:citeciter/prepareThread': (citation: CitationRecord) => Promise<RemoteResult<PrepareThreadResult>>;
17
+ }
18
+ }
19
+ /** Browser contribution mounted by the CiteCiter Client fiber. */
20
+ export declare const TYPERT_REMOTE: TypertRemoteContribution;
21
+ export default TYPERT_REMOTE;
@@ -0,0 +1,4 @@
1
+ import type { Agent } from '@deepseek-ai/dsh-agent';
2
+ import { type CitationRecord } from './thread.ts';
3
+ /** Validate browser evidence against immutable fork lineage and log boundaries. */
4
+ export declare function validateCitation(agent: Agent, citation: CitationRecord): void;
package/package.json CHANGED
@@ -1,12 +1,15 @@
1
1
  {
2
2
  "name": "@kirkchinese/dsh-citeciter",
3
- "version": "0.1.0",
4
- "description": "Selection-scoped explanation sidebar for DeepSeek Harness conversations",
3
+ "version": "0.2.0",
4
+ "description": "Durable citation-thread learning companion for DeepSeek Harness conversations",
5
5
  "keywords": [
6
6
  "deepseek-harness",
7
7
  "dsh",
8
8
  "dsh-plugin",
9
9
  "cordis",
10
+ "citation",
11
+ "learning-companion",
12
+ "conversation-context",
10
13
  "explanation",
11
14
  "sidebar"
12
15
  ],
@@ -39,11 +42,24 @@
39
42
  "types": "./lib/types/client/index.d.ts",
40
43
  "default": "./lib/client.js"
41
44
  },
45
+ "./typert": {
46
+ "types": "./lib/types/typert.host.d.ts",
47
+ "default": "./lib/typert.host.js"
48
+ },
49
+ "./remote": {
50
+ "types": "./lib/types/typert.remote-client.d.ts",
51
+ "default": "./lib/typert.remote-client.js"
52
+ },
53
+ "./cordis.patch.yml": "./cordis.patch.yml",
42
54
  "./package.json": "./package.json"
43
55
  },
44
56
  "dsh": {
57
+ "bundle": {
58
+ "patch": "./cordis.patch.yml"
59
+ },
45
60
  "client": {
46
61
  "inject": [
62
+ "@deepseek-ai/dsh-api-gateway",
47
63
  "@deepseek-ai/dsh-client-runtime",
48
64
  "@deepseek-ai/dsh-client-ui-layout",
49
65
  "@deepseek-ai/dsh-client-ui-slots",
@@ -53,15 +69,18 @@
53
69
  }
54
70
  },
55
71
  "files": [
56
- "lib/index.js",
57
- "lib/client.js",
72
+ "lib/*.js",
58
73
  "lib/types/**/*.d.ts",
74
+ "cordis.patch.yml",
59
75
  "README.zh.md"
60
76
  ],
61
77
  "scripts": {
62
78
  "build": "npm run build:lib && npm run build:bundle",
63
79
  "build:lib": "tsc -p tsconfig.json",
80
+ "prebuild:bundle": "node scripts/clean-bundle.mjs",
64
81
  "build:bundle": "tsdown --env.DSH_BUILD_FACE client",
82
+ "postbuild:bundle": "node scripts/normalize-bundle.mjs",
83
+ "prepack": "npm run build",
65
84
  "dev": "npm run build && node dev/watch.mjs",
66
85
  "smoke:seed": "node dev/seed-smoke-session.mjs",
67
86
  "smoke:hmr": "node dev/hmr-smoke.mjs",
@@ -70,23 +89,46 @@
70
89
  },
71
90
  "peerDependencies": {
72
91
  "@deepseek-ai/cordis": "^4.0.1",
92
+ "@deepseek-ai/dsh-agent": "^0.1.0-rc.6",
93
+ "@deepseek-ai/dsh-api-gateway": "^0.1.0-rc.6",
73
94
  "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.6",
74
95
  "@deepseek-ai/dsh-client-ui-layout": "^0.1.0-rc.6",
96
+ "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.6",
75
97
  "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.6",
98
+ "@deepseek-ai/dsh-commands": "^0.1.0-rc.6",
99
+ "@deepseek-ai/dsh-permission-presets": "^0.1.0-rc.6",
100
+ "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.6",
101
+ "@deepseek-ai/dsh-session": "^0.1.0-rc.6",
102
+ "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.6",
103
+ "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.6",
104
+ "@deepseek-ai/dsh-tools": "^0.1.0-rc.6",
105
+ "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.6",
76
106
  "react": "^18.2.0",
77
- "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.6"
107
+ "zod": "^4.4.3"
78
108
  },
79
109
  "devDependencies": {
80
110
  "@deepseek-ai/cordis": "^4.0.1",
111
+ "@deepseek-ai/dsh-agent": "^0.1.0-rc.6",
112
+ "@deepseek-ai/dsh-api-gateway": "^0.1.0-rc.6",
81
113
  "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.6",
82
114
  "@deepseek-ai/dsh-client-ui-layout": "^0.1.0-rc.6",
115
+ "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.6",
83
116
  "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.6",
117
+ "@deepseek-ai/dsh-commands": "^0.1.0-rc.6",
118
+ "@deepseek-ai/dsh-permission-presets": "^0.1.0-rc.6",
119
+ "@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.6",
120
+ "@deepseek-ai/dsh-session": "^0.1.0-rc.6",
121
+ "@deepseek-ai/dsh-session-projection": "^0.1.0-rc.6",
122
+ "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.6",
123
+ "@deepseek-ai/dsh-tools": "^0.1.0-rc.6",
124
+ "@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.6",
125
+ "@types/node": "^24.10.0",
84
126
  "@types/react": "~18.3.1",
85
127
  "lightningcss": "^1.32.0",
86
128
  "playwright": "^1.58.2",
87
129
  "react": "^18.2.0",
88
130
  "tsdown": "^0.22.2",
89
131
  "typescript": "^6.0.3",
90
- "@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.6"
132
+ "zod": "^4.4.3"
91
133
  }
92
- }
134
+ }