@mind-harness/mh-browser 0.2.5 → 0.2.7
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/extension/manifest.json +1 -1
- package/extension/welcome.html +4 -0
- package/extension/welcome.js +10 -0
- package/lib/client.cjs +799 -254
- package/lib/index.js +2314 -1461
- package/lib/types/call.d.ts +23 -0
- package/lib/types/card.d.ts +1 -2
- package/lib/types/client.d.ts +20 -17
- package/lib/types/config.d.ts +25 -10
- package/lib/types/index.d.ts +23 -2
- package/lib/types/locales.d.ts +28 -2
- package/lib/types/location.d.ts +14 -0
- package/lib/types/location.js +3 -0
- package/lib/types/routes.d.ts +43 -0
- package/lib/types/row.d.ts +2 -4
- package/lib/types/service/browser.d.ts +16 -5
- package/lib/types/service/control.d.ts +5 -0
- package/lib/types/service/extension.d.ts +7 -0
- package/lib/types/service/launch-plan.d.ts +30 -0
- package/lib/types/service/locate.d.ts +81 -0
- package/lib/types/service/profile.d.ts +11 -0
- package/lib/types/service/service.d.ts +40 -6
- package/lib/types/service/test-hooks.d.ts +3 -0
- package/lib/types/settings-form.d.ts +142 -0
- package/lib/types/settings.d.ts +124 -0
- package/lib/types/typeprobe.d.ts +49 -0
- package/lib/types/types.d.ts +13 -1
- package/package.json +23 -30
- package/THIRD-PARTY-NOTICES +0 -23
- package/lib/typert.host.d.ts +0 -3
- package/lib/typert.host.js +0 -378
- package/lib/typert.remote-client.d.ts +0 -24
- package/lib/typert.remote-client.js +0 -52
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { type ReactElement, type ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* A staged settings form drawn by this plugin. It follows the host's settings
|
|
4
|
+
* form: edits stay local until Save, leaving the page drops them, and a field
|
|
5
|
+
* is overridden while the user layer carries it. Styles use host theme tokens
|
|
6
|
+
* only, so the page matches the host without loading its components.
|
|
7
|
+
*/
|
|
8
|
+
/** What `ctx.configForms.get()` serves for one Host entry. */
|
|
9
|
+
export interface SettingsFormScopeSnapshot<T> {
|
|
10
|
+
status: 'loading' | 'ready' | 'unavailable';
|
|
11
|
+
value: T | undefined;
|
|
12
|
+
/** The layer a cleared field falls back to. */
|
|
13
|
+
base: unknown;
|
|
14
|
+
/** The user layer as stored. A field present here is overridden. */
|
|
15
|
+
user: unknown;
|
|
16
|
+
writable: boolean;
|
|
17
|
+
revision: number | undefined;
|
|
18
|
+
}
|
|
19
|
+
export type SettingsFormPathOp = {
|
|
20
|
+
op: 'set';
|
|
21
|
+
path: readonly string[];
|
|
22
|
+
value: unknown;
|
|
23
|
+
} | {
|
|
24
|
+
op: 'unset';
|
|
25
|
+
path: readonly string[];
|
|
26
|
+
};
|
|
27
|
+
export interface SettingsFormScope<T> {
|
|
28
|
+
getSnapshot(): SettingsFormScopeSnapshot<T>;
|
|
29
|
+
subscribe(listener: () => void): () => void;
|
|
30
|
+
/** One revision-fenced write. Resolves to whether the Host accepted it. */
|
|
31
|
+
mutate(ops: readonly SettingsFormPathOp[], expectedRevision?: number): Promise<boolean>;
|
|
32
|
+
}
|
|
33
|
+
export type FieldWrite = {
|
|
34
|
+
kind: 'set';
|
|
35
|
+
value: unknown;
|
|
36
|
+
} | {
|
|
37
|
+
kind: 'clear';
|
|
38
|
+
};
|
|
39
|
+
export interface FieldSpec {
|
|
40
|
+
field: string;
|
|
41
|
+
/** Stored value as draft text. */
|
|
42
|
+
format: (value: unknown) => string;
|
|
43
|
+
/** The write a draft stages. Undefined blocks the save. */
|
|
44
|
+
parse: (text: string) => FieldWrite | undefined;
|
|
45
|
+
}
|
|
46
|
+
export interface FieldState {
|
|
47
|
+
text: string;
|
|
48
|
+
/** Saving would leave this field in the user layer. */
|
|
49
|
+
overridden: boolean;
|
|
50
|
+
invalid: boolean;
|
|
51
|
+
}
|
|
52
|
+
export interface FormShell {
|
|
53
|
+
available: boolean;
|
|
54
|
+
writable: boolean;
|
|
55
|
+
dirty: boolean;
|
|
56
|
+
invalid: boolean;
|
|
57
|
+
saving: boolean;
|
|
58
|
+
/** The last save did not land. Cleared by the next edit or save. */
|
|
59
|
+
failed: boolean;
|
|
60
|
+
}
|
|
61
|
+
export interface FormLabels {
|
|
62
|
+
unavailable: string;
|
|
63
|
+
readOnly: string;
|
|
64
|
+
saveFailed: string;
|
|
65
|
+
discard: string;
|
|
66
|
+
save: string;
|
|
67
|
+
saving: string;
|
|
68
|
+
}
|
|
69
|
+
export interface Store<S> {
|
|
70
|
+
getSnapshot(): S;
|
|
71
|
+
subscribe(listener: () => void): () => void;
|
|
72
|
+
}
|
|
73
|
+
/** Drafts over one entry's fields, written together on save. */
|
|
74
|
+
export declare class StagedForm<T> {
|
|
75
|
+
private readonly scope;
|
|
76
|
+
private readonly specs;
|
|
77
|
+
private readonly staged;
|
|
78
|
+
private readonly listeners;
|
|
79
|
+
private baseline;
|
|
80
|
+
private saving;
|
|
81
|
+
private failed;
|
|
82
|
+
private readonly unsubscribe;
|
|
83
|
+
constructor(scope: SettingsFormScope<T>, specs: readonly FieldSpec[]);
|
|
84
|
+
/** A store over `project`, rebuilt whenever the entry or a draft changes. */
|
|
85
|
+
bind<S>(project: () => S): Store<S>;
|
|
86
|
+
shell(): FormShell;
|
|
87
|
+
field(field: string): FieldState;
|
|
88
|
+
edit(field: string, text: string): void;
|
|
89
|
+
/** Stage removing the field from the user layer. The draft shows what it falls back to. */
|
|
90
|
+
reset(field: string): void;
|
|
91
|
+
discard(): void;
|
|
92
|
+
/**
|
|
93
|
+
* Write every staged edit. A save the Host refuses keeps the drafts, and the
|
|
94
|
+
* next save is fenced on what the Host holds now, so trying again can land.
|
|
95
|
+
*/
|
|
96
|
+
save(): Promise<void>;
|
|
97
|
+
dispose(): void;
|
|
98
|
+
private plan;
|
|
99
|
+
private stage;
|
|
100
|
+
private spec;
|
|
101
|
+
private read;
|
|
102
|
+
private stored;
|
|
103
|
+
private publish;
|
|
104
|
+
}
|
|
105
|
+
/** Free text. An empty draft clears the field. */
|
|
106
|
+
export declare function textField(field: string): FieldSpec;
|
|
107
|
+
/** The page frame: read-only notice, the fields, and Save. Unmounting drops every draft. */
|
|
108
|
+
export declare function SettingsFrame(props: {
|
|
109
|
+
labels: FormLabels;
|
|
110
|
+
state: FormShell;
|
|
111
|
+
onSave: () => void;
|
|
112
|
+
onDiscard: () => void;
|
|
113
|
+
children?: ReactNode;
|
|
114
|
+
}): ReactElement;
|
|
115
|
+
export interface FieldProps extends FieldState {
|
|
116
|
+
id: string;
|
|
117
|
+
label: string;
|
|
118
|
+
hint?: string;
|
|
119
|
+
overriddenLabel: string;
|
|
120
|
+
resetLabel: string;
|
|
121
|
+
/** Shown instead of the hint while the draft is invalid. A field that cannot be invalid omits it. */
|
|
122
|
+
invalidLabel?: string;
|
|
123
|
+
disabled: boolean;
|
|
124
|
+
/** Text behind the information button beside the label. */
|
|
125
|
+
help?: {
|
|
126
|
+
label: string;
|
|
127
|
+
content: ReactNode;
|
|
128
|
+
};
|
|
129
|
+
onReset: () => void;
|
|
130
|
+
}
|
|
131
|
+
export declare function TextField(props: FieldProps & {
|
|
132
|
+
placeholder?: string;
|
|
133
|
+
onEdit: (text: string) => void;
|
|
134
|
+
}): ReactElement;
|
|
135
|
+
export declare function ChoiceField(props: FieldProps & {
|
|
136
|
+
options: readonly {
|
|
137
|
+
value: string;
|
|
138
|
+
label: string;
|
|
139
|
+
}[];
|
|
140
|
+
onEdit: (value: string) => void;
|
|
141
|
+
}): ReactElement;
|
|
142
|
+
//# sourceMappingURL=settings-form.d.ts.map
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { type ReactElement } from 'react';
|
|
2
|
+
import { type Translate } from './locales.ts';
|
|
3
|
+
import { type FieldState, type FieldWrite, type FormShell, type SettingsFormScope } from './settings-form.ts';
|
|
4
|
+
/** Loader row id, and the settings namespace for that row. */
|
|
5
|
+
export declare const ENTRY_ID = "mh-browser";
|
|
6
|
+
/** `plugins.row.config` key: the bundle package, then the row id. */
|
|
7
|
+
export declare const ROW_KEY = "@mind-harness/mh-bundle#mh-browser";
|
|
8
|
+
export declare const BROWSER_CHOICES: readonly ["auto", "chrome", "msedge", "chromium"];
|
|
9
|
+
export type BrowserChoice = (typeof BROWSER_CHOICES)[number];
|
|
10
|
+
/** Google's download page. Edge is not offered: its developer-mode prompt can disable the agent extension. */
|
|
11
|
+
export declare const CHROME_INSTALL = "https://www.google.com/chrome/";
|
|
12
|
+
/** Matches the host's `BrowserLocation`. The client bundle cannot import the host file. */
|
|
13
|
+
export type NamedBrowser = 'chrome' | 'msedge' | 'chromium';
|
|
14
|
+
export type BrowserLocation = {
|
|
15
|
+
found: string;
|
|
16
|
+
browser?: NamedBrowser;
|
|
17
|
+
} | {
|
|
18
|
+
missing: {
|
|
19
|
+
path: string;
|
|
20
|
+
reason: string;
|
|
21
|
+
browser?: NamedBrowser;
|
|
22
|
+
}[];
|
|
23
|
+
};
|
|
24
|
+
export type LocateResult = {
|
|
25
|
+
ok: true;
|
|
26
|
+
value: BrowserLocation;
|
|
27
|
+
} | {
|
|
28
|
+
ok: false;
|
|
29
|
+
error: {
|
|
30
|
+
code: string;
|
|
31
|
+
message: string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export type LocateFor = (browser: BrowserChoice, signal?: AbortSignal) => Promise<LocateResult>;
|
|
35
|
+
export type LookupView = {
|
|
36
|
+
status: 'loading';
|
|
37
|
+
} | {
|
|
38
|
+
status: 'found';
|
|
39
|
+
path: string;
|
|
40
|
+
browser?: NamedBrowser;
|
|
41
|
+
} | {
|
|
42
|
+
status: 'missing';
|
|
43
|
+
tried: {
|
|
44
|
+
path: string;
|
|
45
|
+
reason: string;
|
|
46
|
+
}[];
|
|
47
|
+
} | {
|
|
48
|
+
status: 'failed';
|
|
49
|
+
};
|
|
50
|
+
/** The host entry's config. Only these two fields are edited here. */
|
|
51
|
+
export interface BrowserSettingsConfig {
|
|
52
|
+
browser?: string;
|
|
53
|
+
executablePath?: string;
|
|
54
|
+
}
|
|
55
|
+
interface BrowserState extends FormShell {
|
|
56
|
+
browser: FieldState;
|
|
57
|
+
executablePath: FieldState;
|
|
58
|
+
}
|
|
59
|
+
interface ConfigForms {
|
|
60
|
+
get<T>(entryId: string): SettingsFormScope<T>;
|
|
61
|
+
}
|
|
62
|
+
export interface SettingsHost {
|
|
63
|
+
slots: {
|
|
64
|
+
inject(name: string, register: () => unknown): unknown;
|
|
65
|
+
register(options: {
|
|
66
|
+
name: string;
|
|
67
|
+
key: string;
|
|
68
|
+
locale: string;
|
|
69
|
+
}, component: (props: {
|
|
70
|
+
t: Translate;
|
|
71
|
+
view?: 'summary' | 'page';
|
|
72
|
+
}) => ReactElement | null): () => void;
|
|
73
|
+
};
|
|
74
|
+
configForms: ConfigForms;
|
|
75
|
+
effect(execute: () => () => void): unknown;
|
|
76
|
+
}
|
|
77
|
+
/** Empty text clears the field. Anything else must be absolute, or start with `~`. */
|
|
78
|
+
export declare function parseExecutable(text: string): FieldWrite | undefined;
|
|
79
|
+
/** Placeholder for an empty path field: the path an empty value would use. */
|
|
80
|
+
export declare function pathPlaceholder(lookup: LookupView, browser: BrowserChoice, t: Translate): string | undefined;
|
|
81
|
+
/** The sentence under the browser menu: which browser automatic selection is using. */
|
|
82
|
+
export declare function browserStatus(lookup: LookupView, browser: BrowserChoice, t: Translate): string;
|
|
83
|
+
/** The full path, or every place that was tried. Absent while looking or after a failed lookup. */
|
|
84
|
+
export declare function pathHelpText(lookup: LookupView, t: Translate): string | undefined;
|
|
85
|
+
/**
|
|
86
|
+
* One browser name's lookup, kept until the settings page unmounts.
|
|
87
|
+
* A newer lookup cancels the one still running.
|
|
88
|
+
*/
|
|
89
|
+
export declare class ExecutableLookup {
|
|
90
|
+
private readonly locate;
|
|
91
|
+
private readonly cache;
|
|
92
|
+
private inflight;
|
|
93
|
+
private controller;
|
|
94
|
+
private readonly listeners;
|
|
95
|
+
constructor(locate: LocateFor);
|
|
96
|
+
subscribe: (listener: () => void) => (() => void);
|
|
97
|
+
/** Cached answer for `browser`, or loading when that answer is not in yet. */
|
|
98
|
+
view(browser: BrowserChoice): LookupView;
|
|
99
|
+
watch(browser: BrowserChoice): void;
|
|
100
|
+
dispose(): void;
|
|
101
|
+
private publish;
|
|
102
|
+
}
|
|
103
|
+
/** Staged browser choice and path. A save the host accepts restarts the browser when it is idle. */
|
|
104
|
+
export declare class BrowserForm {
|
|
105
|
+
private readonly form;
|
|
106
|
+
readonly lookup: ExecutableLookup;
|
|
107
|
+
readonly state: {
|
|
108
|
+
getSnapshot(): BrowserState;
|
|
109
|
+
subscribe(listener: () => void): () => void;
|
|
110
|
+
};
|
|
111
|
+
constructor(scope: SettingsFormScope<BrowserSettingsConfig>, locate: LocateFor);
|
|
112
|
+
edit(field: 'browser' | 'executablePath', text: string): void;
|
|
113
|
+
reset(field: 'browser' | 'executablePath'): void;
|
|
114
|
+
save(): void;
|
|
115
|
+
discard(): void;
|
|
116
|
+
dispose(): void;
|
|
117
|
+
}
|
|
118
|
+
export declare function registerSettings(ctx: SettingsHost): void;
|
|
119
|
+
export declare function BrowserSettings(props: {
|
|
120
|
+
t: Translate;
|
|
121
|
+
form: BrowserForm;
|
|
122
|
+
}): ReactElement;
|
|
123
|
+
export {};
|
|
124
|
+
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Volatile } from '@deepseek-ai/cordis';
|
|
2
|
+
import z from '@deepseek-ai/schemastery';
|
|
3
|
+
interface Full {
|
|
4
|
+
presence: {
|
|
5
|
+
maxBytes: number;
|
|
6
|
+
};
|
|
7
|
+
browser: Volatile<'chrome' | 'msedge' | 'chromium'>;
|
|
8
|
+
executablePath: Volatile<string | undefined>;
|
|
9
|
+
profileDir?: string;
|
|
10
|
+
headless: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare const full: z<Full>;
|
|
13
|
+
declare const oldShape: z<Schemastery.ObjectS<NoInfer<{
|
|
14
|
+
browser: z<"chrome" | "msedge" | "chromium", "chrome" | "msedge" | "chromium", "defined">;
|
|
15
|
+
profileDir: z<string, string, "plain">;
|
|
16
|
+
headless: z<boolean, boolean, "defined">;
|
|
17
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
18
|
+
browser: z<"chrome" | "msedge" | "chromium", "chrome" | "msedge" | "chromium", "defined">;
|
|
19
|
+
profileDir: z<string, string, "plain">;
|
|
20
|
+
headless: z<boolean, boolean, "defined">;
|
|
21
|
+
}>>, "plain">;
|
|
22
|
+
declare const newShape: z<Schemastery.ObjectS<NoInfer<{
|
|
23
|
+
browser: z<"chrome" | "msedge" | "chromium", "chrome" | "msedge" | "chromium", "volatile-defined">;
|
|
24
|
+
executablePath: z<string, string, "volatile">;
|
|
25
|
+
profileDir: z<string, string, "plain">;
|
|
26
|
+
headless: z<boolean, boolean, "defined">;
|
|
27
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
28
|
+
browser: z<"chrome" | "msedge" | "chromium", "chrome" | "msedge" | "chromium", "volatile-defined">;
|
|
29
|
+
executablePath: z<string, string, "volatile">;
|
|
30
|
+
profileDir: z<string, string, "plain">;
|
|
31
|
+
headless: z<boolean, boolean, "defined">;
|
|
32
|
+
}>>, "plain">;
|
|
33
|
+
type Old = ReturnType<typeof oldShape>;
|
|
34
|
+
type New = ReturnType<typeof newShape>;
|
|
35
|
+
export type Probe = {
|
|
36
|
+
oldProfile: Old['profileDir'];
|
|
37
|
+
oldBrowser: Old['browser'];
|
|
38
|
+
newProfile: New['profileDir'];
|
|
39
|
+
newBrowser: New['browser'];
|
|
40
|
+
newPath: New['executablePath'];
|
|
41
|
+
oldKeys: keyof Old;
|
|
42
|
+
newKeys: keyof New;
|
|
43
|
+
};
|
|
44
|
+
export declare const showOldProfile: Old['profileDir'];
|
|
45
|
+
export declare const showNewProfile: New['profileDir'];
|
|
46
|
+
export declare const showNewPath: New['executablePath'];
|
|
47
|
+
export declare const showNewBrowser: New['browser'];
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=typeprobe.d.ts.map
|
package/lib/types/types.d.ts
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
/** Public browser types. Playwright types stay inside the service. */
|
|
2
2
|
export type BrowserName = 'chrome' | 'msedge' | 'chromium';
|
|
3
|
+
/** `auto` keeps the browser that launched last, or Chrome and then Edge. */
|
|
4
|
+
export type BrowserChoice = BrowserName | 'auto';
|
|
5
|
+
/** An automatic launch found neither Chrome nor Edge. Plugins read this; the model sees the message. */
|
|
6
|
+
export interface MissingBrowser {
|
|
7
|
+
browsers: ('chrome' | 'msedge')[];
|
|
8
|
+
tried: {
|
|
9
|
+
browser: 'chrome' | 'msedge';
|
|
10
|
+
path: string;
|
|
11
|
+
reason: string;
|
|
12
|
+
}[];
|
|
13
|
+
}
|
|
3
14
|
export type OwnerId = string;
|
|
4
15
|
export type TabId = string;
|
|
5
16
|
export interface WaitFor {
|
|
@@ -181,7 +192,8 @@ export type BrowserCode = (typeof BROWSER_CODES)[number];
|
|
|
181
192
|
export declare class MhBrowserError extends Error {
|
|
182
193
|
readonly code: BrowserCode;
|
|
183
194
|
readonly page?: PageView;
|
|
184
|
-
|
|
195
|
+
readonly notFound?: MissingBrowser;
|
|
196
|
+
constructor(code: BrowserCode, message: string, page?: PageView, notFound?: MissingBrowser);
|
|
185
197
|
}
|
|
186
198
|
/** Owner of the person's own window. It belongs to no Session. */
|
|
187
199
|
export declare const PERSON_OWNER = "person";
|
package/package.json
CHANGED
|
@@ -1,21 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mind-harness/mh-browser",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.7",
|
|
4
4
|
"description": "Opens pages in a real browser for the agent, keeps chosen Agent Views in context, and hands the browser to you when a person is needed.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"files": [
|
|
7
7
|
"lib/index.js",
|
|
8
8
|
"lib/types/representation/agent-view.js",
|
|
9
|
+
"lib/types/location.js",
|
|
9
10
|
"lib/types/**/*.d.ts",
|
|
10
|
-
"lib/typert.host.js",
|
|
11
|
-
"lib/typert.host.d.ts",
|
|
12
|
-
"lib/typert.remote-client.js",
|
|
13
|
-
"lib/typert.remote-client.d.ts",
|
|
14
11
|
"lib/client.cjs",
|
|
15
12
|
"locale/*.json",
|
|
16
13
|
"icon.svg",
|
|
17
|
-
"extension/*"
|
|
18
|
-
"THIRD-PARTY-NOTICES"
|
|
14
|
+
"extension/*"
|
|
19
15
|
],
|
|
20
16
|
"type": "module",
|
|
21
17
|
"main": "./lib/index.js",
|
|
@@ -29,13 +25,9 @@
|
|
|
29
25
|
"types": "./lib/types/representation/agent-view.d.ts",
|
|
30
26
|
"default": "./lib/types/representation/agent-view.js"
|
|
31
27
|
},
|
|
32
|
-
"./
|
|
33
|
-
"types": "./lib/
|
|
34
|
-
"default": "./lib/
|
|
35
|
-
},
|
|
36
|
-
"./remote": {
|
|
37
|
-
"types": "./lib/typert.remote-client.d.ts",
|
|
38
|
-
"default": "./lib/typert.remote-client.js"
|
|
28
|
+
"./location": {
|
|
29
|
+
"types": "./lib/types/location.d.ts",
|
|
30
|
+
"default": "./lib/types/location.js"
|
|
39
31
|
},
|
|
40
32
|
"./client": {
|
|
41
33
|
"types": "./lib/types/client.d.ts",
|
|
@@ -55,20 +47,20 @@
|
|
|
55
47
|
},
|
|
56
48
|
"devDependencies": {
|
|
57
49
|
"@deepseek-ai/cordis": "~4.1.0",
|
|
58
|
-
"@deepseek-ai/dsh-agent": "^0.2.2-rc.
|
|
59
|
-
"@deepseek-ai/dsh-agent-loop": "^0.2.2-rc.
|
|
60
|
-
"@deepseek-ai/dsh-agent-loop-testkit": "^0.2.2-rc.
|
|
61
|
-
"@deepseek-ai/dsh-attachment": "^0.2.2-rc.
|
|
62
|
-
"@deepseek-ai/dsh-browser-use": "^0.2.2-rc.
|
|
63
|
-
"@deepseek-ai/dsh-
|
|
64
|
-
"@deepseek-ai/dsh-
|
|
65
|
-
"@deepseek-ai/dsh-llm
|
|
66
|
-
"@deepseek-ai/dsh-
|
|
67
|
-
"@deepseek-ai/dsh-
|
|
68
|
-
"@deepseek-ai/dsh-session
|
|
69
|
-
"@deepseek-ai/dsh-
|
|
70
|
-
"@deepseek-ai/dsh-
|
|
71
|
-
"@deepseek-ai/dsh-user-questions": "^0.2.2-rc.
|
|
50
|
+
"@deepseek-ai/dsh-agent": "^0.2.2-rc.2",
|
|
51
|
+
"@deepseek-ai/dsh-agent-loop": "^0.2.2-rc.2",
|
|
52
|
+
"@deepseek-ai/dsh-agent-loop-testkit": "^0.2.2-rc.2",
|
|
53
|
+
"@deepseek-ai/dsh-attachment": "^0.2.2-rc.2",
|
|
54
|
+
"@deepseek-ai/dsh-browser-use": "^0.2.2-rc.2",
|
|
55
|
+
"@deepseek-ai/dsh-client-ui-settings": "^0.2.2-rc.2",
|
|
56
|
+
"@deepseek-ai/dsh-home-paths": "^0.2.2-rc.2",
|
|
57
|
+
"@deepseek-ai/dsh-llm": "^0.2.2-rc.2",
|
|
58
|
+
"@deepseek-ai/dsh-llm-mock-server": "^0.2.2-rc.2",
|
|
59
|
+
"@deepseek-ai/dsh-sandbox-policy": "^0.2.2-rc.2",
|
|
60
|
+
"@deepseek-ai/dsh-session": "^0.2.2-rc.2",
|
|
61
|
+
"@deepseek-ai/dsh-session-projection": "^0.2.2-rc.2",
|
|
62
|
+
"@deepseek-ai/dsh-tools": "^0.2.2-rc.2",
|
|
63
|
+
"@deepseek-ai/dsh-user-questions": "^0.2.2-rc.2",
|
|
72
64
|
"@deepseek-ai/schemastery": "~3.19.0",
|
|
73
65
|
"@types/react": "^19",
|
|
74
66
|
"@types/react-dom": "^19",
|
|
@@ -77,10 +69,10 @@
|
|
|
77
69
|
},
|
|
78
70
|
"peerDependencies": {
|
|
79
71
|
"@deepseek-ai/cordis": "^4.1.0",
|
|
72
|
+
"@deepseek-ai/dsh-client-ui-settings": ">=0.2.2-rc.1 <0.2.3-0",
|
|
80
73
|
"@deepseek-ai/dsh-home-paths": ">=0.2.2-rc.1 <0.2.3-0",
|
|
81
74
|
"@deepseek-ai/dsh-llm": ">=0.2.2-rc.1 <0.2.3-0",
|
|
82
75
|
"@deepseek-ai/dsh-tools": ">=0.2.2-rc.1 <0.2.3-0",
|
|
83
|
-
"@deepseek-ai/dsh-typert-protocol": ">=0.2.2-rc.1 <0.2.3-0",
|
|
84
76
|
"@deepseek-ai/dsh-user-questions": ">=0.2.2-rc.1 <0.2.3-0",
|
|
85
77
|
"@deepseek-ai/schemastery": "^3.19.0",
|
|
86
78
|
"react": "^19.2.8"
|
|
@@ -94,7 +86,8 @@
|
|
|
94
86
|
"platform": "web",
|
|
95
87
|
"inject": [
|
|
96
88
|
"@deepseek-ai/dsh-client-locale",
|
|
97
|
-
"@deepseek-ai/dsh-client-ui-conversation"
|
|
89
|
+
"@deepseek-ai/dsh-client-ui-conversation",
|
|
90
|
+
"@deepseek-ai/dsh-client-ui-settings"
|
|
98
91
|
]
|
|
99
92
|
}
|
|
100
93
|
},
|
package/THIRD-PARTY-NOTICES
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
lib/client.cjs includes code from @deepseek-ai/dsh-typert-protocol, distributed under the following license.
|
|
2
|
-
|
|
3
|
-
MIT License
|
|
4
|
-
|
|
5
|
-
Copyright (c) 2026 DeepSeek
|
|
6
|
-
|
|
7
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
9
|
-
in the Software without restriction, including without limitation the rights
|
|
10
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
12
|
-
furnished to do so, subject to the following conditions:
|
|
13
|
-
|
|
14
|
-
The above copyright notice and this permission notice shall be included in all
|
|
15
|
-
copies or substantial portions of the Software.
|
|
16
|
-
|
|
17
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
21
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
22
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
23
|
-
SOFTWARE.
|
package/lib/typert.host.d.ts
DELETED