@yfwu2020/dsh-selection-explain 0.12.0 → 0.13.1

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.
Files changed (86) hide show
  1. package/README.md +18 -5
  2. package/lib/chat-context.js +6 -4
  3. package/lib/chat-context.js.map +1 -1
  4. package/lib/client.js +11810 -10118
  5. package/lib/client.js.map +4 -4
  6. package/lib/config-values.js +5 -1
  7. package/lib/config-values.js.map +1 -1
  8. package/lib/host/analyze-conclusion.js +115 -0
  9. package/lib/host/analyze-conclusion.js.map +1 -0
  10. package/lib/host/analyze-execution-types.js +2 -0
  11. package/lib/host/analyze-execution-types.js.map +1 -0
  12. package/lib/host/analyze-execution.js +166 -0
  13. package/lib/host/analyze-execution.js.map +1 -0
  14. package/lib/host/analyze-history.js +110 -0
  15. package/lib/host/analyze-history.js.map +1 -0
  16. package/lib/host/analyze-messages.js +95 -0
  17. package/lib/host/analyze-messages.js.map +1 -0
  18. package/lib/host/analyze-output.js +69 -0
  19. package/lib/host/analyze-output.js.map +1 -0
  20. package/lib/host/analyze-prompt.js +110 -0
  21. package/lib/host/analyze-prompt.js.map +1 -0
  22. package/lib/host/analyze-request.js +129 -0
  23. package/lib/host/analyze-request.js.map +1 -0
  24. package/lib/host/analyze-round.js +121 -0
  25. package/lib/host/analyze-round.js.map +1 -0
  26. package/lib/host/analyze-tool-execution.js +98 -0
  27. package/lib/host/analyze-tool-execution.js.map +1 -0
  28. package/lib/host/analyze-tools.js +79 -0
  29. package/lib/host/analyze-tools.js.map +1 -0
  30. package/lib/host/analyze-types.js +2 -0
  31. package/lib/host/analyze-types.js.map +1 -0
  32. package/lib/host/analyze.js +30 -926
  33. package/lib/host/analyze.js.map +1 -1
  34. package/lib/host/chat-context.js +8 -3
  35. package/lib/host/chat-context.js.map +1 -1
  36. package/lib/host/config.js +6 -0
  37. package/lib/host/config.js.map +1 -1
  38. package/lib/host/history-store.js +18 -6
  39. package/lib/host/history-store.js.map +1 -1
  40. package/lib/host/native-probe.js +66 -0
  41. package/lib/host/native-probe.js.map +1 -0
  42. package/lib/host/plugin.js +30 -0
  43. package/lib/host/plugin.js.map +1 -1
  44. package/lib/host/shot-capture.js +322 -0
  45. package/lib/host/shot-capture.js.map +1 -0
  46. package/lib/host/shot-geometry.js +183 -0
  47. package/lib/host/shot-geometry.js.map +1 -0
  48. package/lib/host/shot-platform.js +208 -0
  49. package/lib/host/shot-platform.js.map +1 -0
  50. package/lib/host/shot-service.js +127 -0
  51. package/lib/host/shot-service.js.map +1 -0
  52. package/lib/host/shot-types.js +5 -0
  53. package/lib/host/shot-types.js.map +1 -0
  54. package/lib/host/shot.js +136 -0
  55. package/lib/host/shot.js.map +1 -0
  56. package/lib/prompts.js +54 -1
  57. package/lib/prompts.js.map +1 -1
  58. package/lib/settings.js +13 -2
  59. package/lib/settings.js.map +1 -1
  60. package/lib/types/chat-context.d.ts +2 -2
  61. package/lib/types/config-values.d.ts +24 -0
  62. package/lib/types/host/analyze-conclusion.d.ts +3 -0
  63. package/lib/types/host/analyze-execution-types.d.ts +54 -0
  64. package/lib/types/host/analyze-execution.d.ts +3 -0
  65. package/lib/types/host/analyze-history.d.ts +41 -0
  66. package/lib/types/host/analyze-messages.d.ts +15 -0
  67. package/lib/types/host/analyze-output.d.ts +8 -0
  68. package/lib/types/host/analyze-prompt.d.ts +15 -0
  69. package/lib/types/host/analyze-request.d.ts +28 -0
  70. package/lib/types/host/analyze-round.d.ts +7 -0
  71. package/lib/types/host/analyze-tool-execution.d.ts +4 -0
  72. package/lib/types/host/analyze-tools.d.ts +15 -0
  73. package/lib/types/host/analyze-types.d.ts +13 -0
  74. package/lib/types/host/analyze.d.ts +4 -4
  75. package/lib/types/host/config.d.ts +12 -0
  76. package/lib/types/host/native-probe.d.ts +10 -0
  77. package/lib/types/host/shot-capture.d.ts +11 -0
  78. package/lib/types/host/shot-geometry.d.ts +37 -0
  79. package/lib/types/host/shot-platform.d.ts +11 -0
  80. package/lib/types/host/shot-service.d.ts +17 -0
  81. package/lib/types/host/shot-types.d.ts +105 -0
  82. package/lib/types/host/shot.d.ts +16 -0
  83. package/lib/types/host/types.d.ts +13 -0
  84. package/lib/types/prompts.d.ts +21 -0
  85. package/native/window-list.c +139 -0
  86. package/package.json +5 -2
@@ -0,0 +1,79 @@
1
+ import { MATERIAL_TOOL } from './chat-materials.js';
2
+ import { name } from './constants.js';
3
+ import { sessionIdOf } from './context.js';
4
+ import { FS_TOOL_NAMES, resolveToolNames, webFetchUsable } from './tools.js';
5
+ /** Resolve session scope, allowed tools, fetch availability and filesystem boundary. */
6
+ export async function planAnalyzeTools(deps, request) {
7
+ const { ctx, config, sessions } = deps;
8
+ const { body, isChat, history } = request;
9
+ // 可用工具(白名单,默认只有联网搜索/抓取):交给模型自己决定要不要用。
10
+ // 注意工具是「按会话作用域」注册的(全局视图里看不到 web_search 等),
11
+ // 所以要拿该会话的 agent 当 scope 去查,并把同一个 agent 传给 execute。
12
+ const agents = ctx.get('agents');
13
+ const sessionId = sessionIdOf(body);
14
+ let agent = sessionId ? agents?.get?.(sessionId) : undefined;
15
+ let agentScope = agent ? 'session' : '';
16
+ if (!agent) {
17
+ // 回退:本会话还没起 agent(刚开的新会话/agent 已释放)时,用任一活跃 agent 当作用域。
18
+ // 不这么做的话,session-scoped 的 web_search/web_fetch 在全局视图里根本不可见 →
19
+ // 工具静默为空,模型还会把工具调用当正文吐出来(实测见过 <ds_safety_tool_call>)。
20
+ const live = agents?.list?.() ?? [];
21
+ if (live.length > 0) {
22
+ agent = live[0];
23
+ agentScope = 'fallback';
24
+ }
25
+ }
26
+ const toolSchemas = [];
27
+ /** 诊断:这一轮是不是走了"备用联网工具"(首选联网工具一个都不在)。 */
28
+ let toolFallbackUsed = false;
29
+ if (config.tools && config.maxToolRounds > 0) {
30
+ const registry = ctx.get('tools');
31
+ const split = (value) => value.split(',').map((item) => item.trim()).filter((item) => item.length > 0);
32
+ let visible = [];
33
+ try {
34
+ visible = registry?.schemas?.(agent) ?? [];
35
+ }
36
+ catch (error) {
37
+ ctx.logger?.warn?.(`[${name}] 读取工具表失败:${String(error?.message ?? error)}`);
38
+ }
39
+ const allowed = resolveToolNames(split(config.toolNames), split(config.fallbackToolNames), visible.map((schema) => schema.name));
40
+ toolFallbackUsed = !allowed.includes('advanced_search') && !allowed.includes('platform_search');
41
+ for (const schema of visible) {
42
+ if (allowed.includes(schema.name))
43
+ toolSchemas.push(schema);
44
+ }
45
+ }
46
+ // 本机抓不了网页(fake-IP 代理 / SSRF 防护)时,把 web_fetch 摘掉:
47
+ // 否则模型每次都要白跑一轮(5~15s)才拿到"resolves to a non-public IP address"。
48
+ let fetchBlockedSample = '';
49
+ if (toolSchemas.some((schema) => schema.name === 'web_fetch')) {
50
+ const probe = await webFetchUsable();
51
+ if (!probe.usable) {
52
+ fetchBlockedSample = probe.sample;
53
+ for (let i = toolSchemas.length - 1; i >= 0; i -= 1) {
54
+ if (toolSchemas[i]?.name === 'web_fetch')
55
+ toolSchemas.splice(i, 1);
56
+ }
57
+ ctx.logger?.warn?.(`[${name}] 网页抓取不可用(域名解析到 ${probe.sample},属保留地址段),已从工具表移除 web_fetch`);
58
+ }
59
+ }
60
+ if (isChat && config.tools && config.maxToolRounds > 0 && (history.rawHistory.length > 0 || history.catalog.length > 0 || history.contextState.through > 0)) {
61
+ toolSchemas.push(MATERIAL_TOOL);
62
+ }
63
+ // 文件类工具的边界:默认只允许会话工作目录;'*' = 不限制;配置了具体目录就用它。
64
+ // 拿不到工作目录时**不设限**(否则新会话里 read 直接全废),但会打日志说明。
65
+ const wantsFsTools = toolSchemas.some((schema) => FS_TOOL_NAMES.includes(schema.name));
66
+ let readRoot = '';
67
+ if (wantsFsTools) {
68
+ if (config.toolReadRoot === '*') {
69
+ readRoot = '';
70
+ }
71
+ else {
72
+ readRoot = config.toolReadRoot || (await sessions.resolveSessionCwd(sessionIdOf(body))) || '';
73
+ if (!readRoot)
74
+ ctx.logger?.warn?.(`[${name}] 拿不到会话工作目录,文件工具本次不设边界`);
75
+ }
76
+ }
77
+ return { agent, agentScope, sessionId, toolSchemas, toolFallbackUsed, fetchBlockedSample, wantsFsTools, readRoot };
78
+ }
79
+ //# sourceMappingURL=analyze-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-tools.js","sourceRoot":"","sources":["../../src/host/analyze-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=analyze-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-types.js","sourceRoot":"","sources":["../../src/host/analyze-types.ts"],"names":[],"mappings":""}