dsh-connect 0.2.0 → 0.5.2

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/lib/runner.d.ts CHANGED
@@ -2,6 +2,7 @@ import type { Context } from "@deepseek-ai/cordis";
2
2
  import { type Session, type SessionEvent } from "@deepseek-ai/dsh-session";
3
3
  import type { ChannelAdapter, InboundMessage, TurnOutcome } from "./types.js";
4
4
  import type { BindingStore } from "./binding.js";
5
+ import { type Language } from "./i18n.js";
5
6
  export interface ConnectConfig {
6
7
  /** Agent preset id composed into each session; `undefined` = roster default. */
7
8
  agentPreset?: string;
@@ -9,19 +10,87 @@ export interface ConnectConfig {
9
10
  workDir?: string;
10
11
  /** Optional workspace directories offered by the `/dir` chooser. */
11
12
  workspaces?: string[];
13
+ /** Vision-capable model used to describe images when the main model can't. */
14
+ visionModel?: {
15
+ provider: string;
16
+ model: string;
17
+ };
18
+ /** User-facing message language: `zh` (default) or `en`. */
19
+ language?: Language;
12
20
  allowUsers?: string[];
13
21
  allowChats?: string[];
14
22
  stateDir?: string;
23
+ /** Automatically create Web mirror for new sessions (default: true). */
24
+ autoMirror?: boolean;
25
+ /** Liveness heartbeat interval ms for the streaming card; 0 disables it (default: 60000). */
26
+ streamHeartbeatMs?: number;
27
+ /** Default notification level for streaming replies (default: `important`). */
28
+ notifyLevel?: NotifyLevel;
29
+ /** Proactive progress-notice interval ms: when a turn goes silent for this long, a standalone status card is sent (default: 300000 = 5 min; 0 disables). */
30
+ progressTimeoutMs?: number;
15
31
  }
16
32
  export interface ResolvedConnectConfig {
17
33
  agentPreset?: string;
18
34
  workDir?: string;
19
35
  workspaces: string[];
36
+ visionModel?: {
37
+ provider: string;
38
+ model: string;
39
+ };
40
+ language: Language;
20
41
  allowUsers: string[];
21
42
  allowChats: string[];
22
43
  stateDir?: string;
44
+ autoMirror: boolean;
45
+ streamHeartbeatMs: number;
46
+ notifyLevel: NotifyLevel;
47
+ progressTimeoutMs: number;
23
48
  }
24
49
  export declare function resolveConnectConfig(config: ConnectConfig): ResolvedConnectConfig;
50
+ /** Per-turn streaming assembly state mutated by {@link applyStreamChunk}. */
51
+ export interface StreamState {
52
+ chunks: {
53
+ push(text: string): void;
54
+ };
55
+ lastText: string;
56
+ reasoning: boolean;
57
+ hintPushed: boolean;
58
+ lastIndex: number | undefined;
59
+ pushedAny: boolean;
60
+ lastPushAt: number;
61
+ }
62
+ /**
63
+ * How much of the agent's live progress the streaming card shows.
64
+ * - `full` — everything: reasoning text, tool calls, heartbeats, answer.
65
+ * - `important` — key milestones only: thinking hint, tool calls, heartbeats, answer (no reasoning text).
66
+ * - `result` — only the final answer.
67
+ */
68
+ export type NotifyLevel = "full" | "important" | "result";
69
+ /** One assistant chunk event of interest to the streaming bridge. */
70
+ export interface StreamChunkLike {
71
+ type: string;
72
+ index?: number;
73
+ text?: string;
74
+ block?: {
75
+ type?: string;
76
+ text?: string;
77
+ };
78
+ }
79
+ export declare function applyStreamChunk(state: StreamState, thinkingHint: string, chunk: StreamChunkLike, level?: NotifyLevel): void;
80
+ /**
81
+ * Push a localized tool-call status line into the streaming queue so long
82
+ * tool-execution stretches stay visibly alive (the Web GUI shows tool calls;
83
+ * the chat card should too). Ends the reasoning phase and drops the block
84
+ * index so the next content block gets its own separator instead of stacking
85
+ * one on top of the tool line's own blank lines.
86
+ * @param state - the turn's mutable assembly state.
87
+ * @param label - the localized status line, e.g. "🔧 调用工具 `pwsh` — …".
88
+ */
89
+ export declare function applyToolCall(state: StreamState, label: string): void;
90
+ /** Pull a short human summary out of a tool call's `arguments` JSON (whitespace folded to one line). */
91
+ export declare function toolCallSummary(argumentsJson: unknown): string | undefined;
92
+ /** Pull the first question's text out of an `ask_user_question` arguments JSON (whitespace folded to one line). */
93
+ export declare function questionTextOf(argumentsJson: unknown): string;
25
94
  export declare function summarizeTurn(events: readonly SessionEvent[], firstSeq: number): TurnOutcome;
26
95
  export declare class AgentRunner {
27
96
  private readonly ctx;
@@ -31,6 +100,7 @@ export declare class AgentRunner {
31
100
  private readonly chatType;
32
101
  private readonly adapter;
33
102
  private readonly bindings;
103
+ private readonly adapters?;
34
104
  private readonly queue;
35
105
  private running;
36
106
  private agent?;
@@ -39,7 +109,14 @@ export declare class AgentRunner {
39
109
  private workDir;
40
110
  private streamEnabled;
41
111
  private summaryEnabled;
42
- constructor(ctx: Context, config: ResolvedConnectConfig, channel: string, chatKey: string, chatType: "p2p" | "group", adapter: ChannelAdapter, bindings: BindingStore);
112
+ private language;
113
+ private notifyLevel;
114
+ private progressTimeoutMs;
115
+ private t;
116
+ constructor(ctx: Context, config: ResolvedConnectConfig, channel: string, chatKey: string, chatType: "p2p" | "group", adapter: ChannelAdapter, bindings: BindingStore, adapters?: Map<string, ChannelAdapter> | undefined);
117
+ private menuTitle;
118
+ private rootMenuSections;
119
+ private reasonLabel;
43
120
  /** Prefer the user's first DSH workspace over the process cwd as default. */
44
121
  private resolveDefaultWorkDir;
45
122
  enqueue(msg: InboundMessage): void;
@@ -49,18 +126,70 @@ export declare class AgentRunner {
49
126
  private drain;
50
127
  private runTurn;
51
128
  private ensureAgent;
129
+ /**
130
+ * Attach a session to the DSH workspace matching its work directory so the
131
+ * Web GUI groups it under the same workspace the Feishu side uses.
132
+ * Best-effort: without a workspace registry this is a no-op.
133
+ */
134
+ private attachToWorkspace;
52
135
  private get agents();
53
136
  private get sessions();
54
137
  private defaultSelection;
138
+ /**
139
+ * Compose the preset-only agent setup.
140
+ *
141
+ * Deliberately does NOT install a static model selection on the agent. The
142
+ * DSH Web GUI switches models through the host api-proxy's session-scoped
143
+ * selection (`selectionFor` + `installModelSelection`), which is installed
144
+ * lazily when a session's model directory is loaded and wins the
145
+ * `agent/request` waterfall. A static selection captured here at create /
146
+ * resume time would take precedence over that and silently pin every request
147
+ * to the default model captured at composition — so a model the user picks
148
+ * in the Web GUI would appear to succeed (the seat and `session.models`
149
+ * report it) while the actual LLM requests keep using the old default.
150
+ * The default model still seeds the agent through `agentOptions` in
151
+ * `ensureAgent`, which `buildRequest` uses as its fallback route.
152
+ */
55
153
  private composeSetup;
154
+ /** Agents this runner has already attached a `session/event` listener to. */
155
+ private readonly watchedAgents;
56
156
  private watchAgent;
57
157
  private driveAgent;
158
+ /**
159
+ * Build the user content for one inbound message. When the message carries
160
+ * images, either pass them directly to the main model (if it supports
161
+ * vision) or run a vision sub-task with a capable model and inject its
162
+ * description as text — so a text-only main model never stalls on images.
163
+ */
164
+ private buildUserContent;
165
+ /** Copy images into `<workDir>/.dsh-connect-images` so the agent's tools can reach them. */
166
+ private stageImages;
167
+ /** Copy non-image attachments into `<workDir>/.dsh-connect-files` so the agent's tools can reach them. */
168
+ private stageFiles;
169
+ private imageBlocks;
170
+ private describeImages;
171
+ private modelSupportsVision;
172
+ private findVisionModel;
173
+ private log;
58
174
  private readTodos;
59
175
  private touchBinding;
60
176
  private sendSummary;
177
+ /** Context-window usage at or above this percentage suggests compaction. */
178
+ private static readonly COMPACT_THRESHOLD_PCT;
179
+ /**
180
+ * Send a compact task-end card: the model used, input/output tokens, elapsed
181
+ * time, and whether compaction is advisable given context-window usage.
182
+ */
183
+ private sendTurnStats;
61
184
  private handleCommand;
62
185
  private disposeAgent;
63
186
  private recordSession;
187
+ /**
188
+ * Automatically create a Web mirror for the session.
189
+ * This enables DSH Web GUI to view and interact with the conversation
190
+ * without requiring manual `/mirror` command.
191
+ */
192
+ private autoCreateWebMirror;
64
193
  private newChat;
65
194
  private clearChat;
66
195
  private switchTo;
@@ -68,6 +197,8 @@ export declare class AgentRunner {
68
197
  private openMenu;
69
198
  private menuItems;
70
199
  private showStatus;
200
+ /** Extract the most recent turn's completion info from session events. */
201
+ private getLastTurnInfo;
71
202
  private showTasks;
72
203
  private showSettings;
73
204
  private modelMenuItems;
@@ -75,11 +206,80 @@ export declare class AgentRunner {
75
206
  private setModel;
76
207
  private reasoningMenuItems;
77
208
  private setReasoning;
209
+ /** Switch the user-facing language for this chat, persisted in its binding. */
210
+ private setLanguage;
211
+ /**
212
+ * Switch the notification level for this chat (persisted in its binding and
213
+ * effective immediately for the next streaming reply).
214
+ */
215
+ private setNotifyLevel;
216
+ /** Show the three-level notification picker (used by the `/notify` command). */
217
+ private openNotifyPicker;
218
+ /**
219
+ * Switch the proactive progress-notice interval for this chat (persisted in
220
+ * its binding and effective for the next turn; 0 disables the watchdog).
221
+ */
222
+ private setProgressTimeout;
223
+ /** Show the progress-interval picker (used by the `/progress` command). */
224
+ private openProgressPicker;
78
225
  private showPlugins;
79
226
  private createWorkspace;
80
227
  private compact;
81
228
  private showHistory;
82
229
  private showGoals;
230
+ private goalPhaseLabel;
231
+ private showSchedule;
83
232
  private showAllWorkspaces;
233
+ /**
234
+ * Create or show Web mirror session for this chat.
235
+ * The mirror shares the same DSH session but enforces mutual exclusion:
236
+ * when Feishu is executing a task, Web is read-only, and vice versa.
237
+ */
238
+ private handleMirror;
239
+ /**
240
+ * Manually release session lock.
241
+ */
242
+ private handleUnlock;
243
+ /**
244
+ * Renew the current session lock timeout.
245
+ * Extends the lock by another full timeout period from now.
246
+ */
247
+ private handleRenewLock;
248
+ /**
249
+ * Export conversation history to Markdown or PDF.
250
+ */
251
+ private handleExport;
252
+ /**
253
+ * Generate Markdown representation of the conversation history.
254
+ */
255
+ private generateMarkdown;
256
+ /**
257
+ * Check if the current channel has write access to the session.
258
+ * Returns true if allowed to send messages, false if read-only.
259
+ */
260
+ private canWrite;
261
+ /**
262
+ * Acquire session lock for the given channel.
263
+ * Returns true if lock acquired, false if already locked by another channel.
264
+ */
265
+ private acquireLock;
266
+ /**
267
+ * Queue a message for later execution when lock is released.
268
+ * Returns the position in queue.
269
+ */
270
+ private queueMessage;
271
+ /**
272
+ * Process all queued messages after lock release.
273
+ * Re-enqueues them into the runner's message queue for actual execution.
274
+ */
275
+ private processQueuedMessages;
276
+ /** Release session lock. */
277
+ private releaseLock;
278
+ /** Check if lock has timed out. */
279
+ private isLockTimedOut;
280
+ /** Check and release timed-out locks. */
281
+ private checkAndReleaseTimeoutLock;
282
+ /** Release a timed-out lock and notify. */
283
+ private releaseTimeoutLock;
84
284
  }
85
285
  //# sourceMappingURL=runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}