@aipanel/provider-deepseek 1.3.3 → 1.3.5
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/es/api.d.ts +2 -1
- package/es/api.js +4 -2
- package/es/constants.d.ts +5 -0
- package/es/constants.js +1 -6
- package/es/profile.d.ts +4 -10
- package/es/profile.js +5 -5
- package/es/provider.js +11 -10
- package/es/types.d.ts +8 -11
- package/lib/api.cjs +4 -2
- package/lib/api.d.ts +2 -1
- package/lib/constants.cjs +1 -6
- package/lib/constants.d.ts +5 -0
- package/lib/profile.cjs +5 -5
- package/lib/profile.d.ts +4 -10
- package/lib/provider.cjs +11 -10
- package/lib/types.d.ts +8 -11
- package/package.json +8 -8
package/es/api.d.ts
CHANGED
|
@@ -67,7 +67,8 @@ export declare class DeepSeekAPI {
|
|
|
67
67
|
/** 归档会话(dsh 无硬删除,仅归档;幂等) */
|
|
68
68
|
archiveSession(sessionId: string, retries?: number): Promise<void>;
|
|
69
69
|
/**
|
|
70
|
-
* 取 workspace/follow 流的 baseline(等价旧 workspace.list 的快照:
|
|
70
|
+
* 取 workspace/follow 流的 baseline(等价旧 workspace.list 的快照:
|
|
71
|
+
* { items, archivedSessionIds, pinnedSessionIds })。
|
|
71
72
|
* dsh 0.1.2+ 无 workspace.list RPC,工作区发现走 /api/remote.mux 上的 workspace/follow 流。
|
|
72
73
|
* 直连 dsh web(webPort)并携带 browser-session Cookie(原生 WebSocket 支持自定义请求头),
|
|
73
74
|
* 打开流读到首个 baseline 帧即关闭;启动早期 webPort 已就绪,不存在代理时序竞态。
|
package/es/api.js
CHANGED
|
@@ -251,7 +251,8 @@ const _DeepSeekAPI = class _DeepSeekAPI {
|
|
|
251
251
|
);
|
|
252
252
|
}
|
|
253
253
|
/**
|
|
254
|
-
* 取 workspace/follow 流的 baseline(等价旧 workspace.list 的快照:
|
|
254
|
+
* 取 workspace/follow 流的 baseline(等价旧 workspace.list 的快照:
|
|
255
|
+
* { items, archivedSessionIds, pinnedSessionIds })。
|
|
255
256
|
* dsh 0.1.2+ 无 workspace.list RPC,工作区发现走 /api/remote.mux 上的 workspace/follow 流。
|
|
256
257
|
* 直连 dsh web(webPort)并携带 browser-session Cookie(原生 WebSocket 支持自定义请求头),
|
|
257
258
|
* 打开流读到首个 baseline 帧即关闭;启动早期 webPort 已就绪,不存在代理时序竞态。
|
|
@@ -307,7 +308,8 @@ const _DeepSeekAPI = class _DeepSeekAPI {
|
|
|
307
308
|
const baseline = msg.value.value;
|
|
308
309
|
finish(void 0, {
|
|
309
310
|
items: baseline.items ?? [],
|
|
310
|
-
archivedSessionIds: baseline.archivedSessionIds ?? []
|
|
311
|
+
archivedSessionIds: baseline.archivedSessionIds ?? [],
|
|
312
|
+
pinnedSessionIds: baseline.pinnedSessionIds ?? []
|
|
311
313
|
});
|
|
312
314
|
} else if (msg.type === "error") {
|
|
313
315
|
finish(new Error(`dsh workspace/follow failed: ${msg.error?.message ?? "unknown"}`));
|
package/es/constants.d.ts
CHANGED
|
@@ -18,4 +18,9 @@ export declare const DSH_LOOPBACK_HOST = "127.0.0.1";
|
|
|
18
18
|
/** dsh web 默认端口(未显式指定时) */
|
|
19
19
|
export declare const DSH_DEFAULT_PORT = 3080;
|
|
20
20
|
/** ==================== Provider 专属配置默认值 ==================== */
|
|
21
|
+
/**
|
|
22
|
+
* Provider 选项兜底值。
|
|
23
|
+
* 诊断的默认值不在本包复刻:单一来源是 @aipanel/core 的 DEFAULT_DIAGNOSTICS_POLICY,
|
|
24
|
+
* 由 resolveDeepSeekOptions 归一化时注入。
|
|
25
|
+
*/
|
|
21
26
|
export declare const DEFAULT_DEEPSEEK_PROVIDER_OPTIONS: DeepSeekProviderOptions;
|
package/es/constants.js
CHANGED
|
@@ -2,12 +2,7 @@ const DSH_API_BASE = "/api";
|
|
|
2
2
|
const DSH_REMOTE_MUX_PATH = "/api/remote.mux";
|
|
3
3
|
const DSH_LOOPBACK_HOST = "127.0.0.1";
|
|
4
4
|
const DSH_DEFAULT_PORT = 3080;
|
|
5
|
-
const DEFAULT_DEEPSEEK_PROVIDER_OPTIONS = {
|
|
6
|
-
// 对齐 opencode 的 enableLsp(默认 true):诊断功能默认开启
|
|
7
|
-
enableDiagnostics: true,
|
|
8
|
-
// 对齐 opencode:自动诊断默认开启
|
|
9
|
-
autoDiagnose: true
|
|
10
|
-
};
|
|
5
|
+
const DEFAULT_DEEPSEEK_PROVIDER_OPTIONS = {};
|
|
11
6
|
export {
|
|
12
7
|
DEFAULT_DEEPSEEK_PROVIDER_OPTIONS,
|
|
13
8
|
DSH_API_BASE,
|
package/es/profile.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AIPanelWidgetTheme } from "@aipanel/core";
|
|
1
|
+
import type { AIPanelWidgetTheme, DiagnosticsPolicy } from "@aipanel/core";
|
|
2
2
|
import type { DeepSeekBusyEnter, DeepSeekPermissionPreset } from "./types";
|
|
3
3
|
/** 组装 overlay YAML */
|
|
4
4
|
export declare function buildDshOverlay(options: {
|
|
@@ -11,21 +11,15 @@ export declare function buildDshOverlay(options: {
|
|
|
11
11
|
/** client 插件(@aipanel/dsh-client)是否可被 dsh 解析;false 时停用该行,避免 fail-loud */
|
|
12
12
|
clientAvailable?: boolean;
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
14
|
+
* 诊断策略(provider option diagnostics,已在 provider 侧归一化)。
|
|
15
|
+
* 随 host 插件 config 下发;client 插件只取"是否需要诊断卡片视图"。
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
diagnostics: DiagnosticsPolicy;
|
|
18
18
|
/**
|
|
19
19
|
* 宿主事件推送令牌(core 每轮启动随机):随 plugin config 注入 dsh-plugin,
|
|
20
20
|
* 使其把归一化 ProviderEvent POST 到 core 的 HOST_EVENTS_API_PATH。
|
|
21
21
|
*/
|
|
22
22
|
eventsToken?: string;
|
|
23
|
-
/**
|
|
24
|
-
* 诊断功能总开关(provider option enableDiagnostics)。
|
|
25
|
-
* true(默认,对齐 opencode enableLsp)时 host 插件注册 run_diagnostics 工具与自动诊断逻辑,
|
|
26
|
-
* client 插件注册诊断卡片视图。
|
|
27
|
-
*/
|
|
28
|
-
enableDiagnostics?: boolean;
|
|
29
23
|
/** provider option agentPreset:dsh settings agent-presets.default(随 host 插件 config 下发) */
|
|
30
24
|
agentPreset?: string;
|
|
31
25
|
/** provider option permissionPreset:dsh settings permission.defaultPreset(单一来源 ./types) */
|
package/es/profile.js
CHANGED
|
@@ -16,8 +16,7 @@ function buildDshOverlay(options) {
|
|
|
16
16
|
cwd,
|
|
17
17
|
pluginAvailable = true,
|
|
18
18
|
clientAvailable = true,
|
|
19
|
-
|
|
20
|
-
enableDiagnostics = true,
|
|
19
|
+
diagnostics,
|
|
21
20
|
eventsToken,
|
|
22
21
|
agentPreset,
|
|
23
22
|
permissionPreset,
|
|
@@ -48,8 +47,8 @@ function buildDshOverlay(options) {
|
|
|
48
47
|
` vitePort: ${vitePort}`,
|
|
49
48
|
` viteHost: ${JSON.stringify(viteHost)}`,
|
|
50
49
|
` contextApiPath: ${JSON.stringify(CONTEXT_API_PATH)}`,
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
// 诊断策略(检查来源 + 触发 + 投递)整体下发;JSON 是合法 YAML,插件侧按 DiagnosticsPolicy 读取
|
|
51
|
+
` diagnostics: ${JSON.stringify(diagnostics)}`,
|
|
53
52
|
...eventsToken ? [
|
|
54
53
|
` eventsToken: ${JSON.stringify(eventsToken)}`,
|
|
55
54
|
` eventsPath: ${JSON.stringify(HOST_EVENTS_API_PATH)}`
|
|
@@ -66,7 +65,8 @@ function buildDshOverlay(options) {
|
|
|
66
65
|
` name: ${JSON.stringify(DSH_CLIENT_PACKAGE)}`,
|
|
67
66
|
...clientAvailable ? [] : [" disabled: true"],
|
|
68
67
|
" config:",
|
|
69
|
-
|
|
68
|
+
// 诊断卡片视图:有诊断活动(工具或自动诊断)时才需要注册
|
|
69
|
+
` enableDiagnostics: ${diagnostics.exposeTool || diagnostics.auto ? "true" : "false"}`,
|
|
70
70
|
...theme !== "auto" ? [` theme: ${JSON.stringify(theme)}`] : []
|
|
71
71
|
].join("\n")
|
|
72
72
|
);
|
package/es/provider.js
CHANGED
|
@@ -2,6 +2,7 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
4
|
import { sleep } from "@aipanel/core";
|
|
5
|
+
import { DEFAULT_DIAGNOSTICS_POLICY, resolveDiagnosticsPolicy } from "@aipanel/core";
|
|
5
6
|
import { createLogger } from "@aipanel/core/node";
|
|
6
7
|
import { DEFAULT_DEEPSEEK_PROVIDER_OPTIONS } from "./constants.js";
|
|
7
8
|
import { DSH_LOOPBACK_HOST } from "./constants.js";
|
|
@@ -125,8 +126,7 @@ Please upgrade:
|
|
|
125
126
|
cwd: options.cwd,
|
|
126
127
|
pluginAvailable,
|
|
127
128
|
clientAvailable,
|
|
128
|
-
|
|
129
|
-
enableDiagnostics: this.opts.enableDiagnostics,
|
|
129
|
+
diagnostics: this.opts.diagnostics,
|
|
130
130
|
// 宿主事件推送令牌(core 每轮启动随机):随 plugin config 注入 dsh-plugin 用于回推鉴权
|
|
131
131
|
eventsToken: options.eventsToken,
|
|
132
132
|
agentPreset: this.opts.agentPreset,
|
|
@@ -229,16 +229,17 @@ function toChatSession(s, url) {
|
|
|
229
229
|
};
|
|
230
230
|
}
|
|
231
231
|
function resolveDeepSeekOptions(options) {
|
|
232
|
-
|
|
233
|
-
const po = options.providerOptions ?? {};
|
|
232
|
+
const po = options?.providerOptions ?? {};
|
|
234
233
|
return {
|
|
235
234
|
...DEFAULT_DEEPSEEK_PROVIDER_OPTIONS,
|
|
236
|
-
home: po.home ?? options
|
|
237
|
-
agentPreset: po.agentPreset ?? options
|
|
238
|
-
permissionPreset: po.permissionPreset ?? options
|
|
239
|
-
busyEnter: po.busyEnter ?? options
|
|
240
|
-
|
|
241
|
-
|
|
235
|
+
home: po.home ?? options?.home,
|
|
236
|
+
agentPreset: po.agentPreset ?? options?.agentPreset,
|
|
237
|
+
permissionPreset: po.permissionPreset ?? options?.permissionPreset,
|
|
238
|
+
busyEnter: po.busyEnter ?? options?.busyEnter,
|
|
239
|
+
diagnostics: resolveDiagnosticsPolicy(
|
|
240
|
+
[DEFAULT_DIAGNOSTICS_POLICY, po.diagnostics],
|
|
241
|
+
(message) => log.warn(message)
|
|
242
|
+
)
|
|
242
243
|
};
|
|
243
244
|
}
|
|
244
245
|
export {
|
package/es/types.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* dsh 契约(RPC envelope / 会话与工作区 wire / 事件词表 / 取值域)一律引用官方声明,
|
|
4
4
|
* 不在此复刻;这里只保留本包自有的配置类型,核心层不感知。
|
|
5
5
|
*/
|
|
6
|
+
import type { DiagnosticsPolicy } from "@aipanel/core";
|
|
6
7
|
import type { BusyEnterBehavior } from "@deepseek-ai/dsh-client-ui-conversation";
|
|
7
8
|
import type { SandboxMode } from "@deepseek-ai/dsh-sandbox";
|
|
8
9
|
/** 权限预设(对应 dsh settings permission.defaultPreset;取值域同官方 SandboxMode) */
|
|
@@ -23,21 +24,17 @@ export type DeepSeekProviderOptions = {
|
|
|
23
24
|
/** 繁忙时 Enter 键行为(dsh settings ui-conversation.busyEnter) */
|
|
24
25
|
busyEnter?: DeepSeekBusyEnter;
|
|
25
26
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* 去重后以 plugin 上下文消息插入下一步(原生编辑与 PTC 子调度同一路径)。
|
|
29
|
-
* 与 opencode 一致默认开启;需与 enableDiagnostics 配合(总开关关闭时整体不注入)。
|
|
27
|
+
* 诊断配置(检查来源 + 触发 + 投递;契约见 @aipanel/core 的 DiagnosticsPolicy)。
|
|
28
|
+
* 用户只写要覆盖的字段,provider 负责归一化成完整策略后随 overlay 下发。
|
|
30
29
|
*/
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* 诊断功能总开关:与 opencode 的 enableLsp 一致,默认开启。
|
|
34
|
-
* 关闭时(enableDiagnostics: false)不注入任何诊断相关插件逻辑——
|
|
35
|
-
* run_diagnostics 审查工具、编辑后自动诊断、会话诊断卡片视图都不注册。
|
|
36
|
-
*/
|
|
37
|
-
enableDiagnostics?: boolean;
|
|
30
|
+
diagnostics?: Partial<DiagnosticsPolicy>;
|
|
38
31
|
/**
|
|
39
32
|
* Provider 允许自定义扩展字段
|
|
40
33
|
* [key: string]: unknown;
|
|
41
34
|
*/
|
|
42
35
|
[key: string]: unknown;
|
|
43
36
|
};
|
|
37
|
+
/** 归一化后的 Provider 选项:诊断策略一定是完整的(Partial 已在 provider 内解析) */
|
|
38
|
+
export type DeepSeekResolvedOptions = DeepSeekProviderOptions & {
|
|
39
|
+
diagnostics: DiagnosticsPolicy;
|
|
40
|
+
};
|
package/lib/api.cjs
CHANGED
|
@@ -282,7 +282,8 @@ const _DeepSeekAPI = class _DeepSeekAPI {
|
|
|
282
282
|
);
|
|
283
283
|
}
|
|
284
284
|
/**
|
|
285
|
-
* 取 workspace/follow 流的 baseline(等价旧 workspace.list 的快照:
|
|
285
|
+
* 取 workspace/follow 流的 baseline(等价旧 workspace.list 的快照:
|
|
286
|
+
* { items, archivedSessionIds, pinnedSessionIds })。
|
|
286
287
|
* dsh 0.1.2+ 无 workspace.list RPC,工作区发现走 /api/remote.mux 上的 workspace/follow 流。
|
|
287
288
|
* 直连 dsh web(webPort)并携带 browser-session Cookie(原生 WebSocket 支持自定义请求头),
|
|
288
289
|
* 打开流读到首个 baseline 帧即关闭;启动早期 webPort 已就绪,不存在代理时序竞态。
|
|
@@ -338,7 +339,8 @@ const _DeepSeekAPI = class _DeepSeekAPI {
|
|
|
338
339
|
const baseline = msg.value.value;
|
|
339
340
|
finish(void 0, {
|
|
340
341
|
items: baseline.items ?? [],
|
|
341
|
-
archivedSessionIds: baseline.archivedSessionIds ?? []
|
|
342
|
+
archivedSessionIds: baseline.archivedSessionIds ?? [],
|
|
343
|
+
pinnedSessionIds: baseline.pinnedSessionIds ?? []
|
|
342
344
|
});
|
|
343
345
|
} else if (msg.type === "error") {
|
|
344
346
|
finish(new Error(`dsh workspace/follow failed: ${msg.error?.message ?? "unknown"}`));
|
package/lib/api.d.ts
CHANGED
|
@@ -67,7 +67,8 @@ export declare class DeepSeekAPI {
|
|
|
67
67
|
/** 归档会话(dsh 无硬删除,仅归档;幂等) */
|
|
68
68
|
archiveSession(sessionId: string, retries?: number): Promise<void>;
|
|
69
69
|
/**
|
|
70
|
-
* 取 workspace/follow 流的 baseline(等价旧 workspace.list 的快照:
|
|
70
|
+
* 取 workspace/follow 流的 baseline(等价旧 workspace.list 的快照:
|
|
71
|
+
* { items, archivedSessionIds, pinnedSessionIds })。
|
|
71
72
|
* dsh 0.1.2+ 无 workspace.list RPC,工作区发现走 /api/remote.mux 上的 workspace/follow 流。
|
|
72
73
|
* 直连 dsh web(webPort)并携带 browser-session Cookie(原生 WebSocket 支持自定义请求头),
|
|
73
74
|
* 打开流读到首个 baseline 帧即关闭;启动早期 webPort 已就绪,不存在代理时序竞态。
|
package/lib/constants.cjs
CHANGED
|
@@ -28,12 +28,7 @@ const DSH_API_BASE = "/api";
|
|
|
28
28
|
const DSH_REMOTE_MUX_PATH = "/api/remote.mux";
|
|
29
29
|
const DSH_LOOPBACK_HOST = "127.0.0.1";
|
|
30
30
|
const DSH_DEFAULT_PORT = 3080;
|
|
31
|
-
const DEFAULT_DEEPSEEK_PROVIDER_OPTIONS = {
|
|
32
|
-
// 对齐 opencode 的 enableLsp(默认 true):诊断功能默认开启
|
|
33
|
-
enableDiagnostics: true,
|
|
34
|
-
// 对齐 opencode:自动诊断默认开启
|
|
35
|
-
autoDiagnose: true
|
|
36
|
-
};
|
|
31
|
+
const DEFAULT_DEEPSEEK_PROVIDER_OPTIONS = {};
|
|
37
32
|
// Annotate the CommonJS export names for ESM import in node:
|
|
38
33
|
0 && (module.exports = {
|
|
39
34
|
DEFAULT_DEEPSEEK_PROVIDER_OPTIONS,
|
package/lib/constants.d.ts
CHANGED
|
@@ -18,4 +18,9 @@ export declare const DSH_LOOPBACK_HOST = "127.0.0.1";
|
|
|
18
18
|
/** dsh web 默认端口(未显式指定时) */
|
|
19
19
|
export declare const DSH_DEFAULT_PORT = 3080;
|
|
20
20
|
/** ==================== Provider 专属配置默认值 ==================== */
|
|
21
|
+
/**
|
|
22
|
+
* Provider 选项兜底值。
|
|
23
|
+
* 诊断的默认值不在本包复刻:单一来源是 @aipanel/core 的 DEFAULT_DIAGNOSTICS_POLICY,
|
|
24
|
+
* 由 resolveDeepSeekOptions 归一化时注入。
|
|
25
|
+
*/
|
|
21
26
|
export declare const DEFAULT_DEEPSEEK_PROVIDER_OPTIONS: DeepSeekProviderOptions;
|
package/lib/profile.cjs
CHANGED
|
@@ -43,8 +43,7 @@ function buildDshOverlay(options) {
|
|
|
43
43
|
cwd,
|
|
44
44
|
pluginAvailable = true,
|
|
45
45
|
clientAvailable = true,
|
|
46
|
-
|
|
47
|
-
enableDiagnostics = true,
|
|
46
|
+
diagnostics,
|
|
48
47
|
eventsToken,
|
|
49
48
|
agentPreset,
|
|
50
49
|
permissionPreset,
|
|
@@ -75,8 +74,8 @@ function buildDshOverlay(options) {
|
|
|
75
74
|
` vitePort: ${vitePort}`,
|
|
76
75
|
` viteHost: ${JSON.stringify(viteHost)}`,
|
|
77
76
|
` contextApiPath: ${JSON.stringify(import_node.CONTEXT_API_PATH)}`,
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
// 诊断策略(检查来源 + 触发 + 投递)整体下发;JSON 是合法 YAML,插件侧按 DiagnosticsPolicy 读取
|
|
78
|
+
` diagnostics: ${JSON.stringify(diagnostics)}`,
|
|
80
79
|
...eventsToken ? [
|
|
81
80
|
` eventsToken: ${JSON.stringify(eventsToken)}`,
|
|
82
81
|
` eventsPath: ${JSON.stringify(import_node.HOST_EVENTS_API_PATH)}`
|
|
@@ -93,7 +92,8 @@ function buildDshOverlay(options) {
|
|
|
93
92
|
` name: ${JSON.stringify(import_dsh_install.DSH_CLIENT_PACKAGE)}`,
|
|
94
93
|
...clientAvailable ? [] : [" disabled: true"],
|
|
95
94
|
" config:",
|
|
96
|
-
|
|
95
|
+
// 诊断卡片视图:有诊断活动(工具或自动诊断)时才需要注册
|
|
96
|
+
` enableDiagnostics: ${diagnostics.exposeTool || diagnostics.auto ? "true" : "false"}`,
|
|
97
97
|
...theme !== "auto" ? [` theme: ${JSON.stringify(theme)}`] : []
|
|
98
98
|
].join("\n")
|
|
99
99
|
);
|
package/lib/profile.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AIPanelWidgetTheme } from "@aipanel/core";
|
|
1
|
+
import type { AIPanelWidgetTheme, DiagnosticsPolicy } from "@aipanel/core";
|
|
2
2
|
import type { DeepSeekBusyEnter, DeepSeekPermissionPreset } from "./types";
|
|
3
3
|
/** 组装 overlay YAML */
|
|
4
4
|
export declare function buildDshOverlay(options: {
|
|
@@ -11,21 +11,15 @@ export declare function buildDshOverlay(options: {
|
|
|
11
11
|
/** client 插件(@aipanel/dsh-client)是否可被 dsh 解析;false 时停用该行,避免 fail-loud */
|
|
12
12
|
clientAvailable?: boolean;
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
14
|
+
* 诊断策略(provider option diagnostics,已在 provider 侧归一化)。
|
|
15
|
+
* 随 host 插件 config 下发;client 插件只取"是否需要诊断卡片视图"。
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
diagnostics: DiagnosticsPolicy;
|
|
18
18
|
/**
|
|
19
19
|
* 宿主事件推送令牌(core 每轮启动随机):随 plugin config 注入 dsh-plugin,
|
|
20
20
|
* 使其把归一化 ProviderEvent POST 到 core 的 HOST_EVENTS_API_PATH。
|
|
21
21
|
*/
|
|
22
22
|
eventsToken?: string;
|
|
23
|
-
/**
|
|
24
|
-
* 诊断功能总开关(provider option enableDiagnostics)。
|
|
25
|
-
* true(默认,对齐 opencode enableLsp)时 host 插件注册 run_diagnostics 工具与自动诊断逻辑,
|
|
26
|
-
* client 插件注册诊断卡片视图。
|
|
27
|
-
*/
|
|
28
|
-
enableDiagnostics?: boolean;
|
|
29
23
|
/** provider option agentPreset:dsh settings agent-presets.default(随 host 插件 config 下发) */
|
|
30
24
|
agentPreset?: string;
|
|
31
25
|
/** provider option permissionPreset:dsh settings permission.defaultPreset(单一来源 ./types) */
|
package/lib/provider.cjs
CHANGED
|
@@ -24,6 +24,7 @@ __export(provider_exports, {
|
|
|
24
24
|
module.exports = __toCommonJS(provider_exports);
|
|
25
25
|
const import_meta = {};
|
|
26
26
|
var import_core = require("@aipanel/core");
|
|
27
|
+
var import_core2 = require("@aipanel/core");
|
|
27
28
|
var import_node = require("@aipanel/core/node");
|
|
28
29
|
var import_constants = require("./constants.cjs");
|
|
29
30
|
var import_constants2 = require("./constants.cjs");
|
|
@@ -134,8 +135,7 @@ Please upgrade:
|
|
|
134
135
|
cwd: options.cwd,
|
|
135
136
|
pluginAvailable,
|
|
136
137
|
clientAvailable,
|
|
137
|
-
|
|
138
|
-
enableDiagnostics: this.opts.enableDiagnostics,
|
|
138
|
+
diagnostics: this.opts.diagnostics,
|
|
139
139
|
// 宿主事件推送令牌(core 每轮启动随机):随 plugin config 注入 dsh-plugin 用于回推鉴权
|
|
140
140
|
eventsToken: options.eventsToken,
|
|
141
141
|
agentPreset: this.opts.agentPreset,
|
|
@@ -238,16 +238,17 @@ function toChatSession(s, url) {
|
|
|
238
238
|
};
|
|
239
239
|
}
|
|
240
240
|
function resolveDeepSeekOptions(options) {
|
|
241
|
-
|
|
242
|
-
const po = options.providerOptions ?? {};
|
|
241
|
+
const po = options?.providerOptions ?? {};
|
|
243
242
|
return {
|
|
244
243
|
...import_constants.DEFAULT_DEEPSEEK_PROVIDER_OPTIONS,
|
|
245
|
-
home: po.home ?? options
|
|
246
|
-
agentPreset: po.agentPreset ?? options
|
|
247
|
-
permissionPreset: po.permissionPreset ?? options
|
|
248
|
-
busyEnter: po.busyEnter ?? options
|
|
249
|
-
|
|
250
|
-
|
|
244
|
+
home: po.home ?? options?.home,
|
|
245
|
+
agentPreset: po.agentPreset ?? options?.agentPreset,
|
|
246
|
+
permissionPreset: po.permissionPreset ?? options?.permissionPreset,
|
|
247
|
+
busyEnter: po.busyEnter ?? options?.busyEnter,
|
|
248
|
+
diagnostics: (0, import_core2.resolveDiagnosticsPolicy)(
|
|
249
|
+
[import_core2.DEFAULT_DIAGNOSTICS_POLICY, po.diagnostics],
|
|
250
|
+
(message) => log.warn(message)
|
|
251
|
+
)
|
|
251
252
|
};
|
|
252
253
|
}
|
|
253
254
|
// Annotate the CommonJS export names for ESM import in node:
|
package/lib/types.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* dsh 契约(RPC envelope / 会话与工作区 wire / 事件词表 / 取值域)一律引用官方声明,
|
|
4
4
|
* 不在此复刻;这里只保留本包自有的配置类型,核心层不感知。
|
|
5
5
|
*/
|
|
6
|
+
import type { DiagnosticsPolicy } from "@aipanel/core";
|
|
6
7
|
import type { BusyEnterBehavior } from "@deepseek-ai/dsh-client-ui-conversation";
|
|
7
8
|
import type { SandboxMode } from "@deepseek-ai/dsh-sandbox";
|
|
8
9
|
/** 权限预设(对应 dsh settings permission.defaultPreset;取值域同官方 SandboxMode) */
|
|
@@ -23,21 +24,17 @@ export type DeepSeekProviderOptions = {
|
|
|
23
24
|
/** 繁忙时 Enter 键行为(dsh settings ui-conversation.busyEnter) */
|
|
24
25
|
busyEnter?: DeepSeekBusyEnter;
|
|
25
26
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* 去重后以 plugin 上下文消息插入下一步(原生编辑与 PTC 子调度同一路径)。
|
|
29
|
-
* 与 opencode 一致默认开启;需与 enableDiagnostics 配合(总开关关闭时整体不注入)。
|
|
27
|
+
* 诊断配置(检查来源 + 触发 + 投递;契约见 @aipanel/core 的 DiagnosticsPolicy)。
|
|
28
|
+
* 用户只写要覆盖的字段,provider 负责归一化成完整策略后随 overlay 下发。
|
|
30
29
|
*/
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* 诊断功能总开关:与 opencode 的 enableLsp 一致,默认开启。
|
|
34
|
-
* 关闭时(enableDiagnostics: false)不注入任何诊断相关插件逻辑——
|
|
35
|
-
* run_diagnostics 审查工具、编辑后自动诊断、会话诊断卡片视图都不注册。
|
|
36
|
-
*/
|
|
37
|
-
enableDiagnostics?: boolean;
|
|
30
|
+
diagnostics?: Partial<DiagnosticsPolicy>;
|
|
38
31
|
/**
|
|
39
32
|
* Provider 允许自定义扩展字段
|
|
40
33
|
* [key: string]: unknown;
|
|
41
34
|
*/
|
|
42
35
|
[key: string]: unknown;
|
|
43
36
|
};
|
|
37
|
+
/** 归一化后的 Provider 选项:诊断策略一定是完整的(Partial 已在 provider 内解析) */
|
|
38
|
+
export type DeepSeekResolvedOptions = DeepSeekProviderOptions & {
|
|
39
|
+
diagnostics: DiagnosticsPolicy;
|
|
40
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aipanel/provider-deepseek",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "lib/index.cjs",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -21,16 +21,16 @@
|
|
|
21
21
|
"registry": "https://registry.npmjs.org/"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@aipanel/core": "1.3.
|
|
24
|
+
"@aipanel/core": "1.3.5",
|
|
25
25
|
"execa": "^9.6.1"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@deepseek-ai/dsh-api-session-controller": "^0.1.
|
|
29
|
-
"@deepseek-ai/dsh-api-workspace-controller": "^0.1.
|
|
30
|
-
"@deepseek-ai/dsh-brand": "^0.1.
|
|
31
|
-
"@deepseek-ai/dsh-client-connection": "^0.1.
|
|
32
|
-
"@deepseek-ai/dsh-client-ui-conversation": "^0.1.
|
|
33
|
-
"@deepseek-ai/dsh-sandbox": "^0.1.
|
|
28
|
+
"@deepseek-ai/dsh-api-session-controller": "^0.1.7-alpha.2",
|
|
29
|
+
"@deepseek-ai/dsh-api-workspace-controller": "^0.1.7-alpha.2",
|
|
30
|
+
"@deepseek-ai/dsh-brand": "^0.1.7-alpha.2",
|
|
31
|
+
"@deepseek-ai/dsh-client-connection": "^0.1.7-alpha.2",
|
|
32
|
+
"@deepseek-ai/dsh-client-ui-conversation": "^0.1.7-alpha.2",
|
|
33
|
+
"@deepseek-ai/dsh-sandbox": "^0.1.7-alpha.2",
|
|
34
34
|
"esbuild": "^0.25.0"
|
|
35
35
|
},
|
|
36
36
|
"scripts": {
|