dsh-more 0.0.2 → 0.0.4
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/CONTRIBUTING.md +1 -1
- package/README.md +16 -3
- package/README.zh-CN.md +16 -3
- package/dist/client.js +1112 -152
- package/dist/index.js +262 -55
- package/dist/types/client/index.d.ts +5 -1
- package/dist/types/generated/host-settings-schema.d.ts +4 -0
- package/dist/types/generated/patch-catalog.d.ts +16 -0
- package/dist/types/kernel/client/activation.d.ts +2 -1
- package/dist/types/kernel/client/config-card.d.ts +2 -2
- package/dist/types/kernel/client/message-actions.d.ts +4 -0
- package/dist/types/kernel/client/patch.d.ts +1 -1
- package/dist/types/kernel/host/settings.d.ts +1 -1
- package/dist/types/patches/conversation-quick-navigation/client/index.d.ts +27 -0
- package/dist/types/patches/conversation-quick-navigation/client/navigation.d.ts +26 -0
- package/dist/types/patches/conversation-quick-navigation/host/index.d.ts +2 -0
- package/dist/types/patches/conversation-quick-navigation/shared.d.ts +1 -0
- package/dist/types/patches/message-delete/client/index.d.ts +1 -1
- package/dist/types/patches/message-delete/host/message-selection.d.ts +3 -3
- package/dist/types/patches/message-delete/host/projection.d.ts +26 -3
- package/dist/types/patches/message-edit/client/index.d.ts +1 -1
- package/dist/types/patches/message-edit/host/edit-continuation.d.ts +3 -3
- package/dist/types/patches/model-reasoning-efforts/client/index.d.ts +54 -0
- package/dist/types/patches/model-reasoning-efforts/host/index.d.ts +2 -0
- package/dist/types/patches/model-reasoning-efforts/host/validate.d.ts +13 -0
- package/dist/types/patches/model-reasoning-efforts/shared.d.ts +51 -0
- package/dist/types/platform/dsh/client/api.d.ts +2 -0
- package/dist/types/platform/dsh/client/message-targets.d.ts +14 -1
- package/dist/types/platform/dsh/client/runtime.d.ts +2 -1
- package/dist/types/platform/dsh/client/session-sync.d.ts +4 -2
- package/dist/types/platform/dsh/host/session-history.d.ts +3 -3
- package/dist/types/platform/dsh/host/wire.d.ts +6 -0
- package/dsh.plugin.json +1 -1
- package/package.json +64 -47
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ChatSnapshot } from '@deepseek-ai/dsh-client-ui-chat/client';
|
|
2
|
+
export interface ConversationTurnSummary {
|
|
3
|
+
key: string;
|
|
4
|
+
seq: number;
|
|
5
|
+
label: string;
|
|
6
|
+
}
|
|
7
|
+
export interface TurnPosition {
|
|
8
|
+
key: string;
|
|
9
|
+
top: number;
|
|
10
|
+
}
|
|
11
|
+
export interface AutoLoadOlderState {
|
|
12
|
+
enabled: boolean;
|
|
13
|
+
surfaceAvailable: boolean;
|
|
14
|
+
hasMore: boolean;
|
|
15
|
+
loadingOlder: boolean;
|
|
16
|
+
paused: boolean;
|
|
17
|
+
}
|
|
18
|
+
/** Select stable user-authored turn summaries without observing assistant streaming frames. */
|
|
19
|
+
export declare function createConversationTurnSelector(): (snapshot: ChatSnapshot) => readonly ConversationTurnSummary[];
|
|
20
|
+
/** Stable evidence that an older history page prepended visible conversation material. */
|
|
21
|
+
export declare function historyWindowSignature(snapshot: ChatSnapshot): string;
|
|
22
|
+
export declare function shouldAutoLoadOlder(state: AutoLoadOlderState): boolean;
|
|
23
|
+
/** Pick the last turn at or above the reading line, falling back to the first turn. */
|
|
24
|
+
export declare function activeTurnAt(positions: readonly TurnPosition[], readingLine: number): string | null;
|
|
25
|
+
/** Translate a row's viewport coordinate into a bounded scrollport offset. */
|
|
26
|
+
export declare function scrollOffsetForRow(currentScrollTop: number, scrollportTop: number, rowTop: number, topInset?: number): number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const CONVERSATION_QUICK_NAVIGATION_PATCH_ID = "conversation-quick-navigation";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ClientContext } from '@deepseek-ai/
|
|
1
|
+
import type { Context as ClientContext } from '@deepseek-ai/cordis';
|
|
2
2
|
import type { ConversationHeaderProps, MessageActions } from '../../../kernel/client/message-actions.js';
|
|
3
3
|
export declare function useMessageActions(props: ConversationHeaderProps & {
|
|
4
4
|
ctx: ClientContext;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { type Session } from '@deepseek-ai/dsh-session';
|
|
1
|
+
import { SessionSeq, type Session } from '@deepseek-ai/dsh-session';
|
|
2
2
|
export interface MessageDeletionSelection {
|
|
3
|
-
targetSeq:
|
|
4
|
-
shadowedSeqs: readonly
|
|
3
|
+
targetSeq: SessionSeq;
|
|
4
|
+
shadowedSeqs: readonly SessionSeq[];
|
|
5
5
|
}
|
|
6
6
|
/** Expand only as far as needed to keep tool call/result pairing valid. */
|
|
7
7
|
export declare function selectMessageDeletion(session: Session, targetSeq: number): MessageDeletionSelection;
|
|
@@ -1,8 +1,31 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import {
|
|
1
|
+
import { type SessionEvent } from '@deepseek-ai/dsh-session';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { type MessageVisibilityProjection } from '../../../kernel/message-visibility.js';
|
|
3
4
|
declare module '@deepseek-ai/dsh-session-projection/types' {
|
|
5
|
+
interface SessionProjectionStateMap {
|
|
6
|
+
dshMoreMessageDelete: MessageVisibilityProjection;
|
|
7
|
+
}
|
|
4
8
|
interface SessionProjectionMap {
|
|
5
9
|
dshMoreMessageDelete: MessageVisibilityProjection;
|
|
6
10
|
}
|
|
7
11
|
}
|
|
8
|
-
export declare const messageDeleteProjection:
|
|
12
|
+
export declare const messageDeleteProjection: {
|
|
13
|
+
key: "dshMoreMessageDelete";
|
|
14
|
+
stateSchema: z.ZodObject<{
|
|
15
|
+
deletedSeqs: z.ZodArray<z.ZodNumber>;
|
|
16
|
+
hiddenTrajectoryKeys: z.ZodArray<z.ZodString>;
|
|
17
|
+
}, z.core.$strip>;
|
|
18
|
+
stateVersion: number;
|
|
19
|
+
init: () => {
|
|
20
|
+
deletedSeqs: never[];
|
|
21
|
+
hiddenTrajectoryKeys: never[];
|
|
22
|
+
};
|
|
23
|
+
apply: (state: NoInfer<MessageVisibilityProjection>, event: SessionEvent) => MessageVisibilityProjection;
|
|
24
|
+
wire: {
|
|
25
|
+
viewSchema: z.ZodObject<{
|
|
26
|
+
deletedSeqs: z.ZodArray<z.ZodNumber>;
|
|
27
|
+
hiddenTrajectoryKeys: z.ZodArray<z.ZodString>;
|
|
28
|
+
}, z.core.$strip>;
|
|
29
|
+
view: (state: NoInfer<MessageVisibilityProjection>) => MessageVisibilityProjection;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ClientContext } from '@deepseek-ai/
|
|
1
|
+
import type { Context as ClientContext } from '@deepseek-ai/cordis';
|
|
2
2
|
import type { ConversationHeaderProps, MessageActions } from '../../../kernel/client/message-actions.js';
|
|
3
3
|
export declare function useMessageActions(props: ConversationHeaderProps & {
|
|
4
4
|
ctx: ClientContext;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Context } from '@deepseek-ai/cordis';
|
|
2
2
|
import type { Agent } from '@deepseek-ai/dsh-agent';
|
|
3
|
-
import { SessionId, type Session } from '@deepseek-ai/dsh-session';
|
|
3
|
+
import { SessionId, SessionSeq, type Session } from '@deepseek-ai/dsh-session';
|
|
4
4
|
export interface EditCut {
|
|
5
|
-
targetSeq:
|
|
5
|
+
targetSeq: SessionSeq;
|
|
6
6
|
turn: number;
|
|
7
|
-
turnStartSeq:
|
|
7
|
+
turnStartSeq: SessionSeq;
|
|
8
8
|
laterTurnCount: number;
|
|
9
9
|
contentDigest: string;
|
|
10
10
|
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { SettingsScope } from '@deepseek-ai/dsh-client-ui-settings/client';
|
|
2
|
+
import type { PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
|
|
3
|
+
export type {} from '@deepseek-ai/dsh-client-ui-settings';
|
|
4
|
+
import type { PatchActivationSource } from '../../../kernel/client/activation.js';
|
|
5
|
+
import type { ClientPatch } from '../../../kernel/client/patch.js';
|
|
6
|
+
import { type ThinkingLevel } from '../shared.js';
|
|
7
|
+
type OverlayProps = PropsRuntime<'shell.overlay'>;
|
|
8
|
+
/** One level's editing state inside a model's draft. */
|
|
9
|
+
interface LevelDraft {
|
|
10
|
+
enabled: boolean;
|
|
11
|
+
wire: string;
|
|
12
|
+
}
|
|
13
|
+
/** One model's in-progress reasoning-effort draft. */
|
|
14
|
+
export interface ModelDraft {
|
|
15
|
+
nonReasoning: boolean;
|
|
16
|
+
levels: Partial<Record<ThinkingLevel, LevelDraft>>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Locate every model row of every open model catalog in the shipped Models
|
|
20
|
+
* settings page (the provider editor's 模型目录). The classes are the models
|
|
21
|
+
* package's own CSS-module hashes, stable per build.
|
|
22
|
+
*/
|
|
23
|
+
export declare function findModelEntries(): HTMLElement[];
|
|
24
|
+
/**
|
|
25
|
+
* Resolve the provider route for one model entry: the editor header's route
|
|
26
|
+
* span when the route differs from the display name, else the owning provider
|
|
27
|
+
* card's display name (which for such providers equals the route). Returns
|
|
28
|
+
* null for the custom-provider creation card, which has no saved provider yet.
|
|
29
|
+
*/
|
|
30
|
+
export declare function providerRouteOf(entry: HTMLElement): string | null;
|
|
31
|
+
/** Resolve the model id from a model entry's first row input (the id field). */
|
|
32
|
+
export declare function modelIdOf(entry: HTMLElement): string | null;
|
|
33
|
+
/**
|
|
34
|
+
* The level toggles + wire-value inputs shared by the editor modal. Draft
|
|
35
|
+
* state lives in the caller so the modal survives models-page re-renders.
|
|
36
|
+
*/
|
|
37
|
+
export declare function EffortEditorBody({ draft, setDraft, writable, busy }: {
|
|
38
|
+
draft: ModelDraft;
|
|
39
|
+
setDraft: (updater: (current: ModelDraft) => ModelDraft) => void;
|
|
40
|
+
writable: boolean;
|
|
41
|
+
busy: boolean;
|
|
42
|
+
}): JSX.Element;
|
|
43
|
+
/**
|
|
44
|
+
* Persistent frame entry that drops a reasoning-effort button into every model
|
|
45
|
+
* row of the shipped Models page model catalog and owns the editor modal. The
|
|
46
|
+
* buttons are plain DOM (stateless) re-synced by a MutationObserver, so the
|
|
47
|
+
* models page can re-render freely; the modal's state lives in this component,
|
|
48
|
+
* which the slot system never unmounts.
|
|
49
|
+
*/
|
|
50
|
+
export declare function ModelsPageEffortPortal(props: OverlayProps & {
|
|
51
|
+
scope: SettingsScope<unknown>;
|
|
52
|
+
activation: PatchActivationSource;
|
|
53
|
+
}): JSX.Element | null;
|
|
54
|
+
export declare const clientPatch: ClientPatch;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type ModelReasoningEfforts } from '../shared.js';
|
|
2
|
+
/**
|
|
3
|
+
* Validate a client-supplied `reasoningEfforts` payload, mirroring the
|
|
4
|
+
* pi-ai profile rules the adapter enforces when it resolves a route:
|
|
5
|
+
* - `null`/`undefined` means "clear" (fall back to the installed catalog).
|
|
6
|
+
* - `false` means "this model does not reason".
|
|
7
|
+
* - otherwise a dict whose keys are known levels, whose non-`off` values are
|
|
8
|
+
* non-empty wire spellings, and which offers at least one level beyond `off`.
|
|
9
|
+
*
|
|
10
|
+
* Rejecting invalid payloads here refuses the `settings.mutate` that would
|
|
11
|
+
* otherwise store a profile the adapter would refuse on its next resolution.
|
|
12
|
+
*/
|
|
13
|
+
export declare function validateReasoningEfforts(raw: unknown): ModelReasoningEfforts | null;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export declare const MODEL_REASONING_EFFORTS_PATCH_ID = "model-reasoning-efforts";
|
|
2
|
+
/**
|
|
3
|
+
* The llm-pi-ai settings namespace this patch reads and writes. The shipped
|
|
4
|
+
* Models settings page writes custom providers into the same namespace, so a
|
|
5
|
+
* profile stored there is exactly what this patch annotates with
|
|
6
|
+
* `reasoningEfforts`.
|
|
7
|
+
*/
|
|
8
|
+
export declare const LLM_PI_AI_SETTINGS_NAMESPACE = "llm-pi-ai";
|
|
9
|
+
/**
|
|
10
|
+
* Every pi-ai thinking level a model may offer, in escalation order. Mirror of
|
|
11
|
+
* the `THINKING_LEVELS` the installed `dsh-llm-pi-ai` adapter accepts; a level
|
|
12
|
+
* absent from a model's dict is simply not offered.
|
|
13
|
+
*/
|
|
14
|
+
export declare const THINKING_LEVELS: readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
15
|
+
export type ThinkingLevel = typeof THINKING_LEVELS[number];
|
|
16
|
+
/**
|
|
17
|
+
* The reasoning-effort set auto-filled onto a model that has none. DSH does
|
|
18
|
+
* not expose a model's true supported levels for custom providers (the pi-ai
|
|
19
|
+
* catalog lives behind the adapter, and `resolveModelInfo` does not surface
|
|
20
|
+
* reasoning for custom routes), so the patch fills a common default which the
|
|
21
|
+
* user can adjust per model. A model with no `reasoningEfforts` at all is
|
|
22
|
+
* treated as non-reasoning by the adapter, so this override is what makes a
|
|
23
|
+
* freshly fetched model think.
|
|
24
|
+
*/
|
|
25
|
+
export declare const DEFAULT_REASONING_EFFORTS: Partial<Record<ThinkingLevel, string>>;
|
|
26
|
+
/**
|
|
27
|
+
* One model's reasoning-effort capability as stored in `settings.yaml`:
|
|
28
|
+
* `false` means the model does not reason at all; a dict maps each offered
|
|
29
|
+
* level to the wire spelling dispatch should send for it (`off` may leave its
|
|
30
|
+
* spelling empty — "supported, send nothing").
|
|
31
|
+
*/
|
|
32
|
+
export type ModelReasoningEfforts = false | Partial<Record<ThinkingLevel, string | null>>;
|
|
33
|
+
/** One configured model's reasoning-effort state; `null` = not configured (falls back to the installed catalog). */
|
|
34
|
+
export interface ModelReasoningEffortsRow {
|
|
35
|
+
provider: string;
|
|
36
|
+
providerName: string;
|
|
37
|
+
modelId: string;
|
|
38
|
+
reasoningEfforts: ModelReasoningEfforts | null;
|
|
39
|
+
}
|
|
40
|
+
/** What the settings page renders from, returned by the `read` route. */
|
|
41
|
+
export interface ModelReasoningEffortsSnapshot {
|
|
42
|
+
rows: readonly ModelReasoningEffortsRow[];
|
|
43
|
+
writable: boolean;
|
|
44
|
+
documentPath: string | undefined;
|
|
45
|
+
}
|
|
46
|
+
/** The `save` route payload; `reasoningEfforts: null` clears the field. */
|
|
47
|
+
export interface SaveModelReasoningEffortsPayload {
|
|
48
|
+
provider: string;
|
|
49
|
+
modelId: string;
|
|
50
|
+
reasoningEfforts: ModelReasoningEfforts | null;
|
|
51
|
+
}
|
|
@@ -3,4 +3,6 @@ export declare class DshMoreApiError extends Error {
|
|
|
3
3
|
constructor(code: string, message: string);
|
|
4
4
|
}
|
|
5
5
|
export declare function callPatchApi<T>(patchId: string, action: string, payload: unknown): Promise<T>;
|
|
6
|
+
/** Fetch a large successful payload as a Blob, avoiding JSON stringify/parse copies. */
|
|
7
|
+
export declare function callPatchBlobApi(patchId: string, action: string, payload: unknown): Promise<Blob>;
|
|
6
8
|
export declare function apiErrorText(error: unknown): string;
|
|
@@ -1,2 +1,15 @@
|
|
|
1
|
+
import type { ChatSnapshot } from '@deepseek-ai/dsh-client-ui-chat/client';
|
|
1
2
|
import type { ConversationHeaderProps, MessageTarget } from '../../../kernel/client/message-actions.js';
|
|
2
|
-
export
|
|
3
|
+
export interface MessageSurfaceRow {
|
|
4
|
+
key: string;
|
|
5
|
+
presentationSeq: number | undefined;
|
|
6
|
+
action: Omit<MessageTarget, 'key' | 'host'> | null;
|
|
7
|
+
}
|
|
8
|
+
export interface MessageSurfaceSnapshot {
|
|
9
|
+
rows: readonly MessageSurfaceRow[];
|
|
10
|
+
byKey: ReadonlyMap<string, MessageSurfaceRow>;
|
|
11
|
+
}
|
|
12
|
+
/** Select only facts used by message actions, retaining identity across unrelated stream frames. */
|
|
13
|
+
export declare function createMessageSurfaceSelector(active?: boolean): (snapshot: ChatSnapshot) => MessageSurfaceSnapshot;
|
|
14
|
+
export declare function hostForRow(row: HTMLElement, kind: MessageTarget['kind']): HTMLElement;
|
|
15
|
+
export declare function useMessageTargets(props: ConversationHeaderProps, hiddenSeqs: ReadonlySet<number>, hiddenTrajectoryKeys: ReadonlySet<string>, active?: boolean): readonly MessageTarget[];
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { ISessions
|
|
1
|
+
import type { ISessions } from '@deepseek-ai/dsh-api-session-controller/client';
|
|
2
|
+
import type { IWorkspaces } from '@deepseek-ai/dsh-api-workspace-controller/client';
|
|
2
3
|
export interface RefreshableSessions extends ISessions {
|
|
3
4
|
refresh(): Promise<void>;
|
|
4
5
|
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type { SessionId
|
|
1
|
+
import type { SessionId } from '@deepseek-ai/dsh-session/types';
|
|
2
|
+
import type { SessionListState } from '@deepseek-ai/dsh-api-session-controller/client';
|
|
3
|
+
import type { WorkspaceSnapshot } from '@deepseek-ai/dsh-api-workspace-controller/client';
|
|
2
4
|
import type { RefreshableSessions, RefreshableWorkspaces } from './runtime.js';
|
|
3
5
|
/** Switch synchronously so a following archive/removal frame cannot expose the empty view. */
|
|
4
6
|
export declare function openSessionWithoutGap(sessions: RefreshableSessions, sessionId: SessionId): void;
|
|
@@ -15,4 +17,4 @@ export declare function followSessionHandoff(sessions: RefreshableSessions, targ
|
|
|
15
17
|
/** Prefer push-frame convergence after deletion; re-pull both baselines only as a fallback. */
|
|
16
18
|
export declare function settleSessionRemoval(sessions: RefreshableSessions, workspaces: RefreshableWorkspaces, sessionId: SessionId): Promise<void>;
|
|
17
19
|
/** Pick the nearest non-archived row so deleting the current session never exposes a blank gap. */
|
|
18
|
-
export declare function adjacentVisibleSession(sessions: SessionListState, workspaces:
|
|
20
|
+
export declare function adjacentVisibleSession(sessions: SessionListState, workspaces: WorkspaceSnapshot, deletingSessionId: SessionId): SessionId | undefined;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { SessionEvent } from '@deepseek-ai/dsh-session';
|
|
1
|
+
import type { SessionEvent, SessionSeq } from '@deepseek-ai/dsh-session';
|
|
2
2
|
export interface CompletedTurn {
|
|
3
3
|
turn: number;
|
|
4
|
-
startSeq:
|
|
5
|
-
endSeq:
|
|
4
|
+
startSeq: SessionSeq;
|
|
5
|
+
endSeq: SessionSeq;
|
|
6
6
|
}
|
|
7
7
|
/** Return only turns with a durable start/end pair, in log order. */
|
|
8
8
|
export declare function completedTurns(events: readonly SessionEvent[]): CompletedTurn[];
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
/** Successful non-JSON payload that should pass through without serialization. */
|
|
3
|
+
export declare class RawPatchResponse {
|
|
4
|
+
readonly body: string;
|
|
5
|
+
readonly contentType: string;
|
|
6
|
+
constructor(body: string, contentType: string);
|
|
7
|
+
}
|
|
2
8
|
export declare function requireJsonContentType(req: IncomingMessage): void;
|
|
3
9
|
export declare function readJson(req: IncomingMessage): Promise<unknown>;
|
|
4
10
|
export declare function requireString(value: unknown, key: string): string;
|
package/dsh.plugin.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-more",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"description": "Practical patches for missing DeepSeek Harness Web context and history controls.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -56,12 +56,16 @@
|
|
|
56
56
|
"client": {
|
|
57
57
|
"platform": "web",
|
|
58
58
|
"inject": [
|
|
59
|
-
"@deepseek-ai/dsh-client-runtime",
|
|
60
59
|
"@deepseek-ai/dsh-client-ui-slots",
|
|
61
60
|
"@deepseek-ai/dsh-client-ui-conversation",
|
|
62
61
|
"@deepseek-ai/dsh-client-ui-primitives",
|
|
63
62
|
"@deepseek-ai/dsh-client-ui-settings",
|
|
64
|
-
"@deepseek-ai/dsh-client-ui-settings-plugins"
|
|
63
|
+
"@deepseek-ai/dsh-client-ui-settings-plugins",
|
|
64
|
+
"@deepseek-ai/dsh-api-session-controller",
|
|
65
|
+
"@deepseek-ai/dsh-api-workspace-controller",
|
|
66
|
+
"@deepseek-ai/dsh-client-ui-chat",
|
|
67
|
+
"@deepseek-ai/dsh-client-ui-session",
|
|
68
|
+
"@deepseek-ai/dsh-client-ui-renderer"
|
|
65
69
|
]
|
|
66
70
|
}
|
|
67
71
|
},
|
|
@@ -80,56 +84,61 @@
|
|
|
80
84
|
"release:patch": "node scripts/release.mjs patch",
|
|
81
85
|
"release:minor": "node scripts/release.mjs minor",
|
|
82
86
|
"release:major": "node scripts/release.mjs major",
|
|
83
|
-
"version": "node scripts/sync-plugin-version.mjs",
|
|
87
|
+
"version": "node scripts/sync-plugin-version.mjs && git add -- dsh.plugin.json",
|
|
84
88
|
"prepack": "npm run check"
|
|
85
89
|
},
|
|
86
90
|
"peerDependencies": {
|
|
87
|
-
"@deepseek-ai/cordis": "^4.0.
|
|
88
|
-
"@deepseek-ai/dsh-agent": "^0.1.
|
|
89
|
-
"@deepseek-ai/dsh-client-
|
|
90
|
-
"@deepseek-ai/dsh-client-ui-
|
|
91
|
-
"@deepseek-ai/dsh-client-ui-
|
|
92
|
-
"@deepseek-ai/dsh-client-ui-settings": "^0.1.
|
|
93
|
-
"@deepseek-ai/dsh-client-ui-
|
|
94
|
-
"@deepseek-ai/dsh-
|
|
95
|
-
"@deepseek-ai/dsh-
|
|
96
|
-
"@deepseek-ai/dsh-
|
|
97
|
-
"@deepseek-ai/dsh-
|
|
98
|
-
"@deepseek-ai/dsh-
|
|
99
|
-
"@deepseek-ai/dsh-session": "^0.1.
|
|
100
|
-
"@deepseek-ai/dsh-session-
|
|
101
|
-
"@deepseek-ai/dsh-
|
|
102
|
-
"@deepseek-ai/dsh-
|
|
103
|
-
"@deepseek-ai/dsh-
|
|
104
|
-
"@deepseek-ai/dsh-
|
|
105
|
-
"@deepseek-ai/
|
|
106
|
-
"@deepseek-ai/schemastery": "^3.18.1",
|
|
91
|
+
"@deepseek-ai/cordis": "^4.0.2",
|
|
92
|
+
"@deepseek-ai/dsh-agent": "^0.1.2-rc.1",
|
|
93
|
+
"@deepseek-ai/dsh-client-ui-conversation": "^0.1.2-rc.1",
|
|
94
|
+
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.2-rc.1",
|
|
95
|
+
"@deepseek-ai/dsh-client-ui-settings": "^0.1.2-rc.1",
|
|
96
|
+
"@deepseek-ai/dsh-client-ui-settings-plugins": "^0.1.2-rc.1",
|
|
97
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.1.2-rc.1",
|
|
98
|
+
"@deepseek-ai/dsh-compaction": "^0.1.2-rc.1",
|
|
99
|
+
"@deepseek-ai/dsh-agent-presets": "^0.1.2-rc.1",
|
|
100
|
+
"@deepseek-ai/dsh-host-webserver": "^0.1.2-rc.1",
|
|
101
|
+
"@deepseek-ai/dsh-llm": "^0.1.2-rc.1",
|
|
102
|
+
"@deepseek-ai/dsh-session": "^0.1.2-rc.1",
|
|
103
|
+
"@deepseek-ai/dsh-session-persistence": "^0.1.2-rc.1",
|
|
104
|
+
"@deepseek-ai/dsh-session-projection": "^0.1.2-rc.1",
|
|
105
|
+
"@deepseek-ai/dsh-settings": "^0.1.2-rc.1",
|
|
106
|
+
"@deepseek-ai/dsh-system-prompt": "^0.1.2-rc.1",
|
|
107
|
+
"@deepseek-ai/dsh-workspace": "^0.1.2-rc.1",
|
|
108
|
+
"@deepseek-ai/dsh-web-app": "^0.1.2-rc.1",
|
|
109
|
+
"@deepseek-ai/schemastery": "^3.18.2",
|
|
107
110
|
"react": "^18.2.0",
|
|
108
111
|
"react-dom": "^18.2.0",
|
|
109
|
-
"zod": "^4.4.3"
|
|
112
|
+
"zod": "^4.4.3",
|
|
113
|
+
"@deepseek-ai/dsh-api-session-controller": "^0.1.2-rc.1",
|
|
114
|
+
"@deepseek-ai/dsh-api-workspace-controller": "^0.1.2-rc.1",
|
|
115
|
+
"@deepseek-ai/dsh-client-ui-chat": "^0.1.2-rc.1",
|
|
116
|
+
"@deepseek-ai/dsh-client-ui-session": "^0.1.2-rc.1",
|
|
117
|
+
"@deepseek-ai/dsh-client-ui-renderer": "^0.1.2-rc.1",
|
|
118
|
+
"@deepseek-ai/dsh-client-store": "^0.1.2-rc.1",
|
|
119
|
+
"@deepseek-ai/dsh-llm-retry": "^0.1.2-rc.1"
|
|
110
120
|
},
|
|
111
121
|
"devDependencies": {
|
|
112
|
-
"@deepseek-ai/cordis": "4.0.
|
|
113
|
-
"@deepseek-ai/dsh-agent": "0.1.
|
|
114
|
-
"@deepseek-ai/dsh-client-
|
|
115
|
-
"@deepseek-ai/dsh-client-ui-
|
|
116
|
-
"@deepseek-ai/dsh-client-ui-
|
|
117
|
-
"@deepseek-ai/dsh-client-ui-
|
|
118
|
-
"@deepseek-ai/dsh-client-ui-settings": "0.1.
|
|
119
|
-
"@deepseek-ai/dsh-client-ui-
|
|
120
|
-
"@deepseek-ai/dsh-
|
|
121
|
-
"@deepseek-ai/dsh-
|
|
122
|
-
"@deepseek-ai/dsh-
|
|
123
|
-
"@deepseek-ai/dsh-
|
|
124
|
-
"@deepseek-ai/dsh-
|
|
125
|
-
"@deepseek-ai/dsh-session": "0.1.
|
|
126
|
-
"@deepseek-ai/dsh-session-
|
|
127
|
-
"@deepseek-ai/dsh-
|
|
128
|
-
"@deepseek-ai/dsh-
|
|
129
|
-
"@deepseek-ai/dsh-
|
|
130
|
-
"@deepseek-ai/dsh-
|
|
131
|
-
"@deepseek-ai/
|
|
132
|
-
"@deepseek-ai/schemastery": "3.18.1",
|
|
122
|
+
"@deepseek-ai/cordis": "4.0.2",
|
|
123
|
+
"@deepseek-ai/dsh-agent": "0.1.2-rc.1",
|
|
124
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.1.2-rc.1",
|
|
125
|
+
"@deepseek-ai/dsh-client-ui-layout": "0.1.2-rc.1",
|
|
126
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.1.2-rc.1",
|
|
127
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.1.2-rc.1",
|
|
128
|
+
"@deepseek-ai/dsh-client-ui-settings-plugins": "0.1.2-rc.1",
|
|
129
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.2-rc.1",
|
|
130
|
+
"@deepseek-ai/dsh-compaction": "0.1.2-rc.1",
|
|
131
|
+
"@deepseek-ai/dsh-agent-presets": "0.1.2-rc.1",
|
|
132
|
+
"@deepseek-ai/dsh-host-webserver": "0.1.2-rc.1",
|
|
133
|
+
"@deepseek-ai/dsh-llm": "0.1.2-rc.1",
|
|
134
|
+
"@deepseek-ai/dsh-session": "0.1.2-rc.1",
|
|
135
|
+
"@deepseek-ai/dsh-session-persistence": "0.1.2-rc.1",
|
|
136
|
+
"@deepseek-ai/dsh-session-projection": "0.1.2-rc.1",
|
|
137
|
+
"@deepseek-ai/dsh-settings": "0.1.2-rc.1",
|
|
138
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.2-rc.1",
|
|
139
|
+
"@deepseek-ai/dsh-workspace": "0.1.2-rc.1",
|
|
140
|
+
"@deepseek-ai/dsh-web-app": "0.1.2-rc.1",
|
|
141
|
+
"@deepseek-ai/schemastery": "3.18.2",
|
|
133
142
|
"@types/node": "^24.0.0",
|
|
134
143
|
"@types/react": "~18.3.0",
|
|
135
144
|
"@types/react-dom": "~18.3.0",
|
|
@@ -138,6 +147,14 @@
|
|
|
138
147
|
"react-dom": "18.3.1",
|
|
139
148
|
"typescript": "^5.9.2",
|
|
140
149
|
"vitest": "^4.0.0",
|
|
141
|
-
"zod": "4.4.3"
|
|
150
|
+
"zod": "4.4.3",
|
|
151
|
+
"@deepseek-ai/dsh-api-session-controller": "0.1.2-rc.1",
|
|
152
|
+
"@deepseek-ai/dsh-api-workspace-controller": "0.1.2-rc.1",
|
|
153
|
+
"@deepseek-ai/dsh-client-ui-chat": "0.1.2-rc.1",
|
|
154
|
+
"@deepseek-ai/dsh-client-ui-session": "0.1.2-rc.1",
|
|
155
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.2-rc.1",
|
|
156
|
+
"@deepseek-ai/dsh-client-store": "0.1.2-rc.1",
|
|
157
|
+
"@deepseek-ai/dsh-llm-retry": "0.1.2-rc.1",
|
|
158
|
+
"happy-dom": "20.14.0"
|
|
142
159
|
}
|
|
143
160
|
}
|