@houser/edus-plugin 1.0.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,28 @@
1
+ import { Context } from '@deepseek-ai/cordis';
2
+ import { TypertRemoteService } from '@deepseek-ai/dsh-typert-protocol';
3
+ import type { EdusHtmlFileListResult, EdusLoginResult, EdusPublishResult, EdusVersionSummary, EdusWorkListResult } from './types.ts';
4
+ export declare class EdusAuthService extends TypertRemoteService {
5
+ private readonly baseUrl;
6
+ /** Session cwd and filesystem authority are mandatory for every file Remote call. */
7
+ static inject: string[];
8
+ constructor(ctx: Context, baseUrl: string);
9
+ private sessionCwd;
10
+ private target;
11
+ private policy;
12
+ shareOrigin(): Promise<string>;
13
+ login(phone: string, password: string): Promise<EdusLoginResult>;
14
+ loginInfo(token: string): Promise<EdusLoginResult>;
15
+ sendPhoneCode(phone: string, captcha: string): Promise<void>;
16
+ loginByPhone(phone: string, code: string): Promise<EdusLoginResult>;
17
+ htmlList(token: string, page: number, size: number, search?: string): Promise<EdusWorkListResult>;
18
+ htmlShare(token: string, id: string): Promise<string>;
19
+ listHtmlFiles(sessionId: string): Promise<EdusHtmlFileListResult>;
20
+ readHtmlFile(sessionId: string, path: string): Promise<string>;
21
+ writeHtmlFile(sessionId: string, path: string, content: string): Promise<void>;
22
+ publishFile(token: string, sessionId: string, path: string, account: string, title?: string, createNew?: boolean): Promise<EdusPublishResult>;
23
+ htmlVersions(token: string, htmlId: string): Promise<EdusVersionSummary[]>;
24
+ htmlVersionDetail(token: string, id: string): Promise<string>;
25
+ applyVersion(token: string, sessionId: string, path: string, id: string): Promise<string>;
26
+ htmlVersionDelete(token: string, id: string): Promise<void>;
27
+ }
28
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1,7 @@
1
+ import type { DocumentPreviewProps } from '@deepseek-ai/dsh-client-ui-sidebar-documentpreview/client';
2
+ import type { EdusRemote } from './HtmlWorkbench.tsx';
3
+ /** An extension-priority document body: native right-preview ergonomics plus a complete edus publishing flow. */
4
+ export declare function HtmlPublishPreview({ content, resourceAddress, remote }: DocumentPreviewProps & {
5
+ readonly remote: EdusRemote;
6
+ }): import("react").JSX.Element | null;
7
+ //# sourceMappingURL=HtmlPublishPreview.d.ts.map
@@ -0,0 +1,46 @@
1
+ import type { EdusHtmlFileSummary, EdusVersionSummary, EdusWorkListResult } from '../types.ts';
2
+ export interface EdusRemote {
3
+ listHtmlFiles(sessionId: string): Promise<{
4
+ files: readonly EdusHtmlFileSummary[];
5
+ truncated: boolean;
6
+ }>;
7
+ readHtmlFile(sessionId: string, path: string): Promise<string>;
8
+ writeHtmlFile(sessionId: string, path: string, content: string): Promise<void>;
9
+ login(phone: string, password: string): Promise<{
10
+ id: string;
11
+ phone: string;
12
+ token: string;
13
+ isAdmin: boolean;
14
+ isVip: boolean;
15
+ title: string;
16
+ vipLevel: number;
17
+ }>;
18
+ loginInfo(token: string): Promise<{
19
+ id: string;
20
+ phone: string;
21
+ token: string;
22
+ isAdmin: boolean;
23
+ isVip: boolean;
24
+ title: string;
25
+ vipLevel: number;
26
+ }>;
27
+ htmlList(token: string, page: number, size: number, search?: string): Promise<EdusWorkListResult>;
28
+ htmlShare(token: string, id: string): Promise<string>;
29
+ publishFile(token: string, sessionId: string, path: string, account: string, title?: string, createNew?: boolean): Promise<{
30
+ id: string;
31
+ content: string | null;
32
+ unchanged: boolean;
33
+ reassigned: boolean;
34
+ shareUrl: string | null;
35
+ }>;
36
+ htmlVersions(token: string, id: string): Promise<EdusVersionSummary[]>;
37
+ htmlVersionDetail(token: string, id: string): Promise<string>;
38
+ applyVersion(token: string, sessionId: string, path: string, id: string): Promise<string>;
39
+ htmlVersionDelete(token: string, id: string): Promise<void>;
40
+ }
41
+ /** Session-local publication workbench. Deliberately uses srcDoc and never grants page scripts parent access. */
42
+ export declare function HtmlWorkbench({ sessionId, remote }: {
43
+ sessionId: string;
44
+ remote: EdusRemote;
45
+ }): import("react").JSX.Element;
46
+ //# sourceMappingURL=HtmlWorkbench.d.ts.map
@@ -0,0 +1,7 @@
1
+ import type { SidebarFooterActionOwnerProps } from '@deepseek-ai/dsh-client-ui-sidebar/client';
2
+ import type { EdusRemote } from './HtmlWorkbench.tsx';
3
+ export declare function MyWorksAction({ wide }: SidebarFooterActionOwnerProps): import("react").JSX.Element;
4
+ export declare function MyWorksDialog({ remote }: {
5
+ readonly remote: EdusRemote;
6
+ }): import("react").JSX.Element | null;
7
+ //# sourceMappingURL=MyWorksAction.d.ts.map
@@ -0,0 +1,21 @@
1
+ import type { EdusLoginResult } from '../types.ts';
2
+ export type EdusSession = EdusLoginResult;
3
+ /** One account store shared by the workbench and every generated-file row. */
4
+ export declare const EdusAuthStore: {
5
+ getSnapshot: () => EdusSession | null;
6
+ subscribe(listener: () => void): () => void;
7
+ set(result: EdusLoginResult): void;
8
+ logout(): void;
9
+ };
10
+ export declare function useEdusLogin(): EdusSession | null;
11
+ export interface Draft {
12
+ readonly content: string;
13
+ readonly saved: string;
14
+ }
15
+ export declare const EdusDrafts: {
16
+ get(sessionId: string, path: string): Draft | undefined;
17
+ set(sessionId: string, path: string, value: Draft): void;
18
+ dirty(sessionId: string, path: string): boolean;
19
+ subscribe(listener: () => void): () => void;
20
+ };
21
+ //# sourceMappingURL=html-publish.d.ts.map
@@ -0,0 +1,10 @@
1
+ import type { Context as ClientContext } from '@deepseek-ai/cordis';
2
+ export declare const inject: string[];
3
+ /**
4
+ * Register the right-sidebar HTML publish extension and the works dialog.
5
+ *
6
+ * 产品品牌不在这里:它属于产品外壳,由 dsh-desktop 的构建注入,业务插件
7
+ * 不占用品牌槽位,也就不会因为换品牌而需要重新发版。
8
+ */
9
+ export declare function apply(ctx: ClientContext): Promise<void>;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,13 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ import z from '@deepseek-ai/schemastery';
3
+ import { EdusAuthService } from './auth.ts';
4
+ export declare const name = "edus-plugin";
5
+ export { EdusAuthService };
6
+ export type { EdusHtmlFileListResult, EdusHtmlFileSummary, EdusLoginResult, EdusPublishResult, EdusVersionSummary, EdusWorkListResult, EdusWorkSummary } from './types.ts';
7
+ export interface Config {
8
+ aiEduBaseUrl: string;
9
+ }
10
+ export declare const Config: z<Config>;
11
+ export declare const inject: never[];
12
+ export declare function apply(ctx: Context, config: Config): void;
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,5 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ export declare const name = "edus-plugin-invariant";
3
+ export declare const inject: string[];
4
+ export declare const apply: (ctx: Context) => Promise<() => void>;
5
+ //# sourceMappingURL=invariant.d.ts.map
@@ -0,0 +1,13 @@
1
+ /** The portable trailing marker that binds a file to one published page. */
2
+ export interface PublishMarker {
3
+ readonly id: string;
4
+ readonly sharePath?: string;
5
+ readonly hash?: string;
6
+ readonly owner?: string;
7
+ }
8
+ export declare function extractMarker(content: string): PublishMarker | null;
9
+ export declare function stripMarker(content: string): string;
10
+ export declare function canonicalizeBody(content: string): string;
11
+ export declare function withMarker(body: string, marker: PublishMarker): string;
12
+ export declare function sha256Hex(value: string): Promise<string>;
13
+ //# sourceMappingURL=marker.d.ts.map
@@ -0,0 +1,4 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ /** Publish only images already attached to the calling conversation. */
3
+ export declare function applyPublishImageTool(ctx: Context, baseUrl: string): void;
4
+ //# sourceMappingURL=publish-image-tool.d.ts.map
@@ -0,0 +1,52 @@
1
+ /** Public values exchanged by the edus Remote service and browser client. */
2
+ export interface EdusLoginResult {
3
+ readonly id: string;
4
+ readonly phone: string;
5
+ readonly token: string;
6
+ readonly isAdmin: boolean;
7
+ readonly isVip: boolean;
8
+ readonly title: string;
9
+ readonly vipLevel: number;
10
+ }
11
+ export interface EdusPublishResult {
12
+ readonly id: string;
13
+ readonly content: string | null;
14
+ readonly unchanged: boolean;
15
+ readonly reassigned: boolean;
16
+ readonly shareUrl: string | null;
17
+ }
18
+ export interface EdusVersionSummary {
19
+ readonly id: string;
20
+ readonly status: number;
21
+ readonly createdAt: string;
22
+ }
23
+ export interface EdusWorkSummary {
24
+ readonly id: string;
25
+ readonly title: string;
26
+ readonly text: string;
27
+ readonly images: string;
28
+ readonly status: number;
29
+ readonly views: number;
30
+ readonly thumb: string | null;
31
+ readonly from: string;
32
+ readonly createdAt: string;
33
+ readonly updatedAt: string;
34
+ }
35
+ export interface EdusWorkListResult {
36
+ readonly list: readonly EdusWorkSummary[];
37
+ readonly total: number;
38
+ readonly page: number;
39
+ readonly size: number;
40
+ }
41
+ /** A file is always identified relative to its owning session workspace. */
42
+ export interface EdusHtmlFileSummary {
43
+ readonly path: string;
44
+ readonly name: string;
45
+ readonly size: number;
46
+ readonly modifiedAt: string;
47
+ }
48
+ export interface EdusHtmlFileListResult {
49
+ readonly files: readonly EdusHtmlFileSummary[];
50
+ readonly truncated: boolean;
51
+ }
52
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,4 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ /** Register the user-facing slash command without making webpage rules optional. */
3
+ export declare function applyWebpageCommand(ctx: Context): void;
4
+ //# sourceMappingURL=webpage-command.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare const WEBPAGE_INSTRUCTION = "# \u7F51\u9875\u751F\u6210\u89C4\u5219\n\n\u5F53\u7528\u6237\u8981\u6C42\u521B\u5EFA\u6216\u4FEE\u6539\u7F51\u9875\u65F6\uFF0C\u5FC5\u987B\u9075\u5B88\u4EE5\u4E0B\u89C4\u5219\u3002\n\n## \u6587\u4EF6\u7ED3\u6784\n\n- \u6700\u7EC8\u7F51\u9875\u5FC5\u987B\u662F\u4E00\u4E2A\u81EA\u5305\u542B\u7684 `.html` \u6587\u4EF6\u3002\n- \u4E0D\u5F97\u5C06 HTML\u3001CSS\u3001JavaScript \u62C6\u5206\u4E3A\u591A\u4E2A\u672C\u5730\u6587\u4EF6\u3002\n- CSS \u5FC5\u987B\u5199\u5728 HTML \u7684 `<style>` \u4E2D\u3002\n- JavaScript \u5FC5\u987B\u5199\u5728 HTML \u7684 `<script>` \u4E2D\u3002\n- \u7981\u6B62\u5F15\u7528 `./xxx.css`\u3001`./xxx.js` \u7B49\u672C\u5730\u76F8\u5BF9\u8D44\u6E90\u3002\n\n## \u56FE\u7247\u548C\u5916\u90E8\u8D44\u6E90\n\n- \u7981\u6B62\u5C06\u56FE\u7247\u7F16\u7801\u4E3A `data:` URI\u3002\n- \u7528\u6237\u660E\u786E\u8981\u6C42\u4F7F\u7528\u5F53\u524D\u5BF9\u8BDD\u4E2D\u63D0\u4F9B\u7684\u56FE\u7247\u65F6\uFF0C\u5FC5\u987B\u8C03\u7528 `publish_image` \u83B7\u53D6\u53EF\u8BBF\u95EE\u7684\u7EDD\u5BF9 URL\uFF0C\u518D\u5C06\u8BE5 URL \u5199\u5165 `<img src=\"...\">` \u7B49\u4F4D\u7F6E\u3002\n- \u5DF2\u6709\u7684\u5916\u90E8\u56FE\u7247\u7EDD\u5BF9 URL \u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528\u3002\n- \u5B57\u4F53\u3001\u56FE\u6807\u7B49\u5916\u90E8\u8D44\u6E90\u5FC5\u987B\u4F7F\u7528\u53EF\u516C\u5F00\u8BBF\u95EE\u7684\u7EDD\u5BF9 URL\uFF0C\u4F8B\u5982 CDN\u3002\n- \u4E0D\u5F97\u5F15\u7528\u5DE5\u4F5C\u533A\u4E2D\u7684\u672C\u5730\u8D44\u6E90\u6587\u4EF6\u3002\n\n## \u539F\u56E0\n\n\u53D1\u5E03\u7CFB\u7EDF\u4EE5\u5355\u4E2A HTML \u5B57\u7B26\u4E32\u5B58\u50A8\u7F51\u9875\uFF0C\u5E76\u901A\u8FC7\u4E0D\u5B58\u5728\u540C\u7EA7\u8D44\u6E90\u76EE\u5F55\u7684\u5206\u4EAB\u94FE\u63A5\u63D0\u4F9B\u9875\u9762\u3002\u56E0\u6B64\uFF0C\u672C\u5730\u76F8\u5BF9\u8DEF\u5F84\u53EF\u80FD\u5728\u5DE5\u4F5C\u533A\u9884\u89C8\u65F6\u6B63\u5E38\uFF0C\u4F46\u53D1\u5E03\u540E\u65E0\u6CD5\u8BBF\u95EE\u3002\n\n## \u5B8C\u6210\u4EFB\u52A1\n\n\u7F51\u9875\u5B8C\u6210\u540E\uFF1A\n\n1. \u5C06\u6700\u7EC8\u6587\u4EF6\u4FDD\u5B58\u5230\u5F53\u524D\u5DE5\u4F5C\u533A\u3002\n2. \u6587\u4EF6\u6269\u5C55\u540D\u5FC5\u987B\u4E3A `.html`\u3002\n3. \u544A\u77E5\u7528\u6237\u53EF\u4EE5\u4ECE\u6587\u4EF6\u4FA7\u8FB9\u680F\u6253\u5F00\u8BE5 HTML\u3002\n4. \u544A\u77E5\u7528\u6237\u53EF\u4EE5\u901A\u8FC7\u9875\u9762\u9762\u677F\u4E2D\u7684\u300C\u53D1\u5E03\u300D\u529F\u80FD\u751F\u6210\u5206\u4EAB\u94FE\u63A5\u3002\n5. \u4E0D\u5F97\u81EA\u884C\u53D1\u5E03\u7F51\u9875\uFF0C\u9664\u975E\u7528\u6237\u660E\u786E\u8981\u6C42\u53D1\u5E03\u3002";
2
+ //# sourceMappingURL=webpage-instruction.d.ts.map
package/package.json ADDED
@@ -0,0 +1,167 @@
1
+ {
2
+ "name": "@houser/edus-plugin",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "license": "ISC",
6
+ "author": "",
7
+ "type": "module",
8
+ "publishConfig": {
9
+ "access": "public"
10
+ },
11
+ "main": "./lib/index.js",
12
+ "types": "./lib/types/index.d.ts",
13
+ "exports": {
14
+ ".": {
15
+ "types": "./lib/types/index.d.ts",
16
+ "default": "./lib/index.js"
17
+ },
18
+ "./client": {
19
+ "types": "./lib/types/client/index.d.ts",
20
+ "default": "./lib/client.js"
21
+ },
22
+ "./types": {
23
+ "types": "./lib/types/types.d.ts"
24
+ },
25
+ "./invariant": {
26
+ "types": "./lib/types/invariant.d.ts",
27
+ "default": "./lib/invariant.js"
28
+ },
29
+ "./typert": {
30
+ "types": "./lib/typert.host.d.ts",
31
+ "default": "./lib/typert.host.js"
32
+ },
33
+ "./remote": {
34
+ "types": "./lib/typert.remote-client.d.ts",
35
+ "default": "./lib/typert.remote-client.js"
36
+ },
37
+ "./package.json": "./package.json"
38
+ },
39
+ "scripts": {
40
+ "clean": "node -e \"require('node:fs').rmSync('lib', { recursive: true, force: true })\"",
41
+ "build:host": "tsc -b tsconfig.host.json && node scripts/generate-typert.mjs && tsdown --env.DSH_BUILD_FACE host",
42
+ "build:client": "tsc -b tsconfig.client.json && tsdown --env.DSH_BUILD_FACE client",
43
+ "build": "npm run clean && npm run build:host && npm run build:client",
44
+ "test": "vitest run",
45
+ "check": "npm run build && npm run test",
46
+ "dev:link": "dsh plugin --profile web add .",
47
+ "dev:unlink": "dsh plugin --profile web remove @houser/edus-plugin",
48
+ "pack:dry": "npm pack --dry-run --cache .npm-cache",
49
+ "dev": "npm run dev:link && npm run build && dsh web"
50
+ },
51
+ "peerDependencies": {
52
+ "@deepseek-ai/cordis": "^4.0.2",
53
+ "@deepseek-ai/dsh-api-gateway": "0.1.6-alpha.2",
54
+ "@deepseek-ai/dsh-api-remotes": "0.1.6-alpha.2",
55
+ "@deepseek-ai/dsh-attachment": "0.1.6-alpha.2",
56
+ "@deepseek-ai/dsh-client-connection": "0.1.6-alpha.2",
57
+ "@deepseek-ai/dsh-client-ui-deliverables": "0.1.6-alpha.2",
58
+ "@deepseek-ai/dsh-client-ui-primitives": "0.1.6-alpha.2",
59
+ "@deepseek-ai/dsh-client-ui-renderer": "0.1.6-alpha.2",
60
+ "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "0.1.6-alpha.2",
61
+ "@deepseek-ai/dsh-commands": "0.1.6-alpha.2",
62
+ "@deepseek-ai/dsh-fs": "0.1.6-alpha.2",
63
+ "@deepseek-ai/dsh-invariants": "0.1.6-alpha.2",
64
+ "@deepseek-ai/dsh-llm": "0.1.6-alpha.2",
65
+ "@deepseek-ai/dsh-sandbox-policy": "0.1.6-alpha.2",
66
+ "@deepseek-ai/dsh-session": "0.1.6-alpha.2",
67
+ "@deepseek-ai/dsh-skill": "0.1.6-alpha.2",
68
+ "@deepseek-ai/dsh-system-prompt": "0.1.6-alpha.2",
69
+ "@deepseek-ai/dsh-tools": "0.1.6-alpha.2",
70
+ "@deepseek-ai/dsh-typert-protocol": "0.1.6-alpha.2"
71
+ },
72
+ "dependencies": {
73
+ "@deepseek-ai/schemastery": "^3.18.1",
74
+ "zod": "^4.4.3"
75
+ },
76
+ "devDependencies": {
77
+ "@deepseek-ai/cordis": "^4.0.2",
78
+ "@deepseek-ai/dsh": "0.1.6-alpha.2",
79
+ "@deepseek-ai/dsh-api-gateway": "0.1.6-alpha.2",
80
+ "@deepseek-ai/dsh-api-remotes": "0.1.6-alpha.2",
81
+ "@deepseek-ai/dsh-attachment": "0.1.6-alpha.2",
82
+ "@deepseek-ai/dsh-client-connection": "0.1.6-alpha.2",
83
+ "@deepseek-ai/dsh-client-ui-deliverables": "0.1.6-alpha.2",
84
+ "@deepseek-ai/dsh-client-ui-primitives": "0.1.6-alpha.2",
85
+ "@deepseek-ai/dsh-client-ui-renderer": "0.1.6-alpha.2",
86
+ "@deepseek-ai/dsh-client-ui-sidebar": "0.1.6-alpha.2",
87
+ "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "0.1.6-alpha.2",
88
+ "@deepseek-ai/dsh-commands": "0.1.6-alpha.2",
89
+ "@deepseek-ai/dsh-fs": "0.1.6-alpha.2",
90
+ "@deepseek-ai/dsh-invariants": "0.1.6-alpha.2",
91
+ "@deepseek-ai/dsh-llm": "0.1.6-alpha.2",
92
+ "@deepseek-ai/dsh-sandbox-policy": "0.1.6-alpha.2",
93
+ "@deepseek-ai/dsh-session": "0.1.6-alpha.2",
94
+ "@deepseek-ai/dsh-skill": "0.1.6-alpha.2",
95
+ "@deepseek-ai/dsh-system-prompt": "0.1.6-alpha.2",
96
+ "@deepseek-ai/dsh-tools": "0.1.6-alpha.2",
97
+ "@deepseek-ai/dsh-typert-generator": "0.1.6-alpha.2",
98
+ "@deepseek-ai/dsh-typert-protocol": "0.1.6-alpha.2",
99
+ "@deepseek-ai/schemastery": "^3.18.1",
100
+ "@testing-library/react": "^16.1.0",
101
+ "@types/node": "^22.20.0",
102
+ "@types/react": "~18.3.1",
103
+ "@types/react-dom": "~18.3.0",
104
+ "jsdom": "^30.0.1",
105
+ "react": "^18.2.0",
106
+ "react-dom": "^18.2.0",
107
+ "tsdown": "0.22.2",
108
+ "typescript": "^6.0.3",
109
+ "vitest": "^4.1.8",
110
+ "zod": "^4.4.3"
111
+ },
112
+ "pnpm": {
113
+ "overrides": {
114
+ "@deepseek-ai/cordis": "link:../deepseek-harness/vendor/cordis",
115
+ "@deepseek-ai/dsh": "link:../deepseek-harness/apps/cli",
116
+ "@deepseek-ai/dsh-api-gateway": "link:../deepseek-harness/packages/api/gateway",
117
+ "@deepseek-ai/dsh-api-remotes": "link:../deepseek-harness/packages/api/remotes",
118
+ "@deepseek-ai/dsh-attachment": "link:../deepseek-harness/packages/attachment/attachment",
119
+ "@deepseek-ai/dsh-client-connection": "link:../deepseek-harness/packages/client/connection",
120
+ "@deepseek-ai/dsh-client-ui-deliverables": "link:../deepseek-harness/packages/client/ui-deliverables",
121
+ "@deepseek-ai/dsh-client-ui-primitives": "link:../deepseek-harness/packages/client/ui-primitives",
122
+ "@deepseek-ai/dsh-client-ui-renderer": "link:../deepseek-harness/packages/client/ui-renderer",
123
+ "@deepseek-ai/dsh-client-ui-sidebar": "link:../deepseek-harness/packages/client/ui-sidebar",
124
+ "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "link:../deepseek-harness/packages/client/ui-sidebar-documentpreview",
125
+ "@deepseek-ai/dsh-commands": "link:../deepseek-harness/packages/interaction/commands",
126
+ "@deepseek-ai/dsh-fs": "link:../deepseek-harness/packages/fs/fs",
127
+ "@deepseek-ai/dsh-invariants": "link:../deepseek-harness/packages/runtime-diagnostics/invariants",
128
+ "@deepseek-ai/dsh-llm": "link:../deepseek-harness/packages/llm/llm",
129
+ "@deepseek-ai/dsh-sandbox-policy": "link:../deepseek-harness/packages/sandbox/sandbox-policy",
130
+ "@deepseek-ai/dsh-session": "link:../deepseek-harness/packages/core/session",
131
+ "@deepseek-ai/dsh-skill": "link:../deepseek-harness/packages/skill/skill",
132
+ "@deepseek-ai/dsh-system-prompt": "link:../deepseek-harness/packages/core/system-prompt",
133
+ "@deepseek-ai/dsh-tools": "link:../deepseek-harness/packages/core/tools",
134
+ "@deepseek-ai/dsh-typert-generator": "link:../deepseek-harness/packages/typert/generator",
135
+ "@deepseek-ai/dsh-typert-protocol": "link:../deepseek-harness/packages/typert/protocol",
136
+ "@deepseek-ai/schemastery": "link:../deepseek-harness/vendor/schemastery"
137
+ }
138
+ },
139
+ "dsh": {
140
+ "bundle": {
141
+ "patch": "./cordis.yml"
142
+ },
143
+ "client": {
144
+ "platform": "web",
145
+ "inject": [
146
+ "@deepseek-ai/dsh-client-ui-renderer",
147
+ "@deepseek-ai/dsh-api-remotes",
148
+ "@deepseek-ai/dsh-client-ui-sidebar",
149
+ "@deepseek-ai/dsh-client-ui-deliverables",
150
+ "@deepseek-ai/dsh-client-ui-sidebar-documentpreview",
151
+ "@deepseek-ai/dsh-client-connection",
152
+ "@deepseek-ai/dsh-api-gateway"
153
+ ]
154
+ }
155
+ },
156
+ "files": [
157
+ "lib/index.js",
158
+ "lib/client.js",
159
+ "lib/invariant.js",
160
+ "lib/typert.host.js",
161
+ "lib/typert.host.d.ts",
162
+ "lib/typert.remote-client.js",
163
+ "lib/typert.remote-client.d.ts",
164
+ "lib/types/**/*.d.ts",
165
+ "cordis.yml"
166
+ ]
167
+ }