sema-core 2.0.10 → 2.0.12

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 (111) hide show
  1. package/dist/core/Conversation.d.ts.map +1 -1
  2. package/dist/core/Conversation.js +30 -9
  3. package/dist/core/Conversation.js.map +1 -1
  4. package/dist/core/RunTools.d.ts.map +1 -1
  5. package/dist/core/RunTools.js +48 -2
  6. package/dist/core/RunTools.js.map +1 -1
  7. package/dist/core/SemaCore.d.ts +2 -0
  8. package/dist/core/SemaCore.d.ts.map +1 -1
  9. package/dist/core/SemaCore.js +7 -1
  10. package/dist/core/SemaCore.js.map +1 -1
  11. package/dist/core/SemaEngine.d.ts +2 -0
  12. package/dist/core/SemaEngine.d.ts.map +1 -1
  13. package/dist/core/SemaEngine.js +83 -7
  14. package/dist/core/SemaEngine.js.map +1 -1
  15. package/dist/events/types.d.ts +25 -0
  16. package/dist/events/types.d.ts.map +1 -1
  17. package/dist/manager/ConfManager.d.ts.map +1 -1
  18. package/dist/manager/ConfManager.js +2 -1
  19. package/dist/manager/ConfManager.js.map +1 -1
  20. package/dist/manager/CronManager.d.ts.map +1 -1
  21. package/dist/manager/CronManager.js +7 -2
  22. package/dist/manager/CronManager.js.map +1 -1
  23. package/dist/manager/PermissionManager.d.ts.map +1 -1
  24. package/dist/manager/PermissionManager.js +30 -2
  25. package/dist/manager/PermissionManager.js.map +1 -1
  26. package/dist/manager/StateManager.d.ts +15 -0
  27. package/dist/manager/StateManager.d.ts.map +1 -1
  28. package/dist/manager/StateManager.js +59 -0
  29. package/dist/manager/StateManager.js.map +1 -1
  30. package/dist/prompt/compact.d.ts +7 -0
  31. package/dist/prompt/compact.d.ts.map +1 -1
  32. package/dist/prompt/compact.js +17 -0
  33. package/dist/prompt/compact.js.map +1 -1
  34. package/dist/prompt/tool.d.ts +2 -0
  35. package/dist/prompt/tool.d.ts.map +1 -1
  36. package/dist/prompt/tool.js +15 -1
  37. package/dist/prompt/tool.js.map +1 -1
  38. package/dist/prompt/toolAliases.d.ts +4 -0
  39. package/dist/prompt/toolAliases.d.ts.map +1 -1
  40. package/dist/prompt/toolAliases.js +14 -0
  41. package/dist/prompt/toolAliases.js.map +1 -1
  42. package/dist/services/api/adapt/anthropic.js +1 -1
  43. package/dist/services/api/adapt/anthropic.js.map +1 -1
  44. package/dist/services/api/adapt/openai.js +1 -1
  45. package/dist/services/api/adapt/openai.js.map +1 -1
  46. package/dist/services/api/adapt/util.js +4 -4
  47. package/dist/services/api/adapt/util.js.map +1 -1
  48. package/dist/services/commands/runCommand.js +6 -3
  49. package/dist/services/commands/runCommand.js.map +1 -1
  50. package/dist/services/hooks/hookRunner.d.ts +21 -0
  51. package/dist/services/hooks/hookRunner.d.ts.map +1 -0
  52. package/dist/services/hooks/hookRunner.js +252 -0
  53. package/dist/services/hooks/hookRunner.js.map +1 -0
  54. package/dist/services/hooks/hookTriggers.d.ts +65 -0
  55. package/dist/services/hooks/hookTriggers.d.ts.map +1 -0
  56. package/dist/services/hooks/hookTriggers.js +295 -0
  57. package/dist/services/hooks/hookTriggers.js.map +1 -0
  58. package/dist/services/hooks/hooksManager.d.ts +64 -0
  59. package/dist/services/hooks/hooksManager.d.ts.map +1 -0
  60. package/dist/services/hooks/hooksManager.js +346 -0
  61. package/dist/services/hooks/hooksManager.js.map +1 -0
  62. package/dist/tools/LoadTools.d.ts +46 -0
  63. package/dist/tools/LoadTools.d.ts.map +1 -0
  64. package/dist/tools/LoadTools.js +168 -0
  65. package/dist/tools/LoadTools.js.map +1 -0
  66. package/dist/tools/SearchTools.d.ts +53 -0
  67. package/dist/tools/SearchTools.d.ts.map +1 -0
  68. package/dist/tools/SearchTools.js +127 -0
  69. package/dist/tools/SearchTools.js.map +1 -0
  70. package/dist/tools/SubAgent.d.ts.map +1 -1
  71. package/dist/tools/SubAgent.js +6 -22
  72. package/dist/tools/SubAgent.js.map +1 -1
  73. package/dist/tools/base/subagentTools.d.ts +13 -0
  74. package/dist/tools/base/subagentTools.d.ts.map +1 -0
  75. package/dist/tools/base/subagentTools.js +107 -0
  76. package/dist/tools/base/subagentTools.js.map +1 -0
  77. package/dist/tools/base/tools.d.ts +6 -1
  78. package/dist/tools/base/tools.d.ts.map +1 -1
  79. package/dist/tools/base/tools.js +107 -4
  80. package/dist/tools/base/tools.js.map +1 -1
  81. package/dist/types/agent.d.ts +2 -0
  82. package/dist/types/agent.d.ts.map +1 -1
  83. package/dist/types/hook.d.ts +76 -0
  84. package/dist/types/hook.d.ts.map +1 -0
  85. package/dist/types/hook.js +28 -0
  86. package/dist/types/hook.js.map +1 -0
  87. package/dist/types/index.d.ts +5 -1
  88. package/dist/types/index.d.ts.map +1 -1
  89. package/dist/types/index.js +1 -0
  90. package/dist/types/index.js.map +1 -1
  91. package/dist/types/message.d.ts +2 -2
  92. package/dist/types/message.d.ts.map +1 -1
  93. package/dist/util/compact.d.ts +23 -1
  94. package/dist/util/compact.d.ts.map +1 -1
  95. package/dist/util/compact.js +54 -6
  96. package/dist/util/compact.js.map +1 -1
  97. package/dist/util/file.d.ts +8 -0
  98. package/dist/util/file.d.ts.map +1 -1
  99. package/dist/util/file.js +39 -0
  100. package/dist/util/file.js.map +1 -1
  101. package/dist/util/history.d.ts +1 -1
  102. package/dist/util/history.d.ts.map +1 -1
  103. package/dist/util/history.js +23 -2
  104. package/dist/util/history.js.map +1 -1
  105. package/dist/util/logLLM.js +2 -2
  106. package/dist/util/logLLM.js.map +1 -1
  107. package/dist/util/microcompact.d.ts +38 -0
  108. package/dist/util/microcompact.d.ts.map +1 -0
  109. package/dist/util/microcompact.js +194 -0
  110. package/dist/util/microcompact.js.map +1 -0
  111. package/package.json +1 -1
@@ -6,7 +6,12 @@ export declare const getAllBuiltinToolInfos: (useTools?: string[] | null) => Too
6
6
  export declare const getAllBuiltinToolNames: () => string[];
7
7
  export declare const getBuiltinTools: () => Tool[];
8
8
  export declare const getAvailableBuiltinTools: ((useTools?: string[] | null) => Tool[]) & import("lodash").MemoizedFunction;
9
- export declare function getAvailableTools(useTools?: string[] | null): Tool[];
9
+ export declare function isValidMCPWildcard(name: string): boolean;
10
+ export declare function getToolSearchDefaultNames(useTools?: string[] | null): string[];
11
+ export declare function getDeferredTools(useTools?: string[] | null): Tool[];
12
+ export declare function getAvailableTools(useTools?: string[] | null, opts?: {
13
+ sessionId?: string;
14
+ }): Tool[];
10
15
  export declare const buildTools: ((tools: Tool[]) => Anthropic.Tool[]) & import("lodash").MemoizedFunction;
11
16
  export declare function getToolDescription(tool: Tool): string;
12
17
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/tools/base/tools.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAiC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAO5C,eAAO,MAAM,uBAAuB,aAKlC,CAAA;AAQF,eAAO,MAAM,sBAAsB,GAAI,WAAW,MAAM,EAAE,GAAG,IAAI,KAAG,QAAQ,EAS3E,CAAA;AAGD,eAAO,MAAM,sBAAsB,QAAO,MAAM,EAA8C,CAAA;AAG9F,eAAO,MAAM,eAAe,QAAO,IAAI,EAwBtC,CAAA;AAGD,eAAO,MAAM,wBAAwB,eACvB,MAAM,EAAE,GAAG,IAAI,KAAG,IAAI,EAAE,qCAerC,CAAA;AAID,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CASpE;AAwBD,eAAO,MAAM,UAAU,WACb,IAAI,EAAE,KAAG,SAAS,CAAC,IAAI,EAAE,qCAgClC,CAAA;AAGD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAKrD"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/tools/base/tools.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAoC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAO5C,eAAO,MAAM,uBAAuB,aAMlC,CAAA;AAQF,eAAO,MAAM,sBAAsB,GAAI,WAAW,MAAM,EAAE,GAAG,IAAI,KAAG,QAAQ,EAS3E,CAAA;AAGD,eAAO,MAAM,sBAAsB,QAAO,MAAM,EAA8C,CAAA;AAG9F,eAAO,MAAM,eAAe,QAAO,IAAI,EAwBtC,CAAA;AAGD,eAAO,MAAM,wBAAwB,eACvB,MAAM,EAAE,GAAG,IAAI,KAAG,IAAI,EAAE,qCAerC,CAAA;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGxD;AAKD,wBAAgB,yBAAyB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,MAAM,EAAE,CA+B9E;AAGD,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAOnE;AAKD,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EAAE,CAuCnG;AAkCD,eAAO,MAAM,UAAU,WACb,IAAI,EAAE,KAAG,SAAS,CAAC,IAAI,EAAE,qCAyClC,CAAA;AAGD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAKrD"}
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildTools = exports.getAvailableBuiltinTools = exports.getBuiltinTools = exports.getAllBuiltinToolNames = exports.getAllBuiltinToolInfos = exports.SUBAGENT_EXCLUDED_TOOLS = void 0;
4
+ exports.isValidMCPWildcard = isValidMCPWildcard;
5
+ exports.getToolSearchDefaultNames = getToolSearchDefaultNames;
6
+ exports.getDeferredTools = getDeferredTools;
4
7
  exports.getAvailableTools = getAvailableTools;
5
8
  exports.getToolDescription = getToolDescription;
6
9
  const tool_1 = require("../../prompt/tool");
@@ -25,8 +28,10 @@ const CreateCron_1 = require("../CreateCron");
25
28
  const DelCron_1 = require("../DelCron");
26
29
  const ListCrons_1 = require("../ListCrons");
27
30
  const FetchUrl_1 = require("../FetchUrl");
31
+ const LoadTools_1 = require("../LoadTools");
28
32
  const MCPManager_1 = require("../../services/mcp/MCPManager");
29
33
  const ConfManager_1 = require("../../manager/ConfManager");
34
+ const StateManager_1 = require("../../manager/StateManager");
30
35
  const zod_to_json_schema_1 = require("zod-to-json-schema");
31
36
  const lodash_es_1 = require("lodash-es");
32
37
  const log_1 = require("../../util/log");
@@ -37,6 +42,7 @@ exports.SUBAGENT_EXCLUDED_TOOLS = new Set([
37
42
  tool_1.TOOL_NAME_PICK_OPTION, tool_1.TOOL_NAME_PLAN_TO_AGENT,
38
43
  tool_1.TOOL_NAME_CREATE_TODO, tool_1.TOOL_NAME_GET_TODO,
39
44
  tool_1.TOOL_NAME_LIST_TODOS, tool_1.TOOL_NAME_UPDATE_TODO,
45
+ tool_1.TOOL_NAME_LOAD_TOOLS,
40
46
  ]);
41
47
  // 将工具对象安全转换为 Tool 类型(各工具的字面量类型与 Tool 泛型不完全匹配)
42
48
  const asTool = (tool) => tool;
@@ -96,16 +102,95 @@ exports.getAvailableBuiltinTools = (0, lodash_es_1.memoize)((useTools) => {
96
102
  }
97
103
  return useTools.sort().join(',');
98
104
  });
105
+ // MCP 通配校验:仅 mcp__{server}__* 或 mcp__{server}__{prefix}* 合法(须具体到 server 且 server 后带 __),
106
+ // *、mcp__*、mcp__{server}* 均不合法
107
+ function isValidMCPWildcard(name) {
108
+ if (!name.startsWith('mcp__') || !name.endsWith('*'))
109
+ return false;
110
+ return name.slice(0, -1).indexOf('__', 5) !== -1; // 'mcp__' 之后必须还有 '__'
111
+ }
112
+ // 工具搜索模式:解析默认加载的工具名白名单(配置未设置时用内置默认集)
113
+ // 仅内置名与 useTools 取交集(core 级 useTools 只含内置工具名);未知名/不合法通配 warn 后忽略
114
+ // MCP 通配展开为当前匹配的工具(server 名用工具全名中的规范形式,冒号已转下划线)
115
+ function getToolSearchDefaultNames(useTools) {
116
+ const configured = (0, ConfManager_1.getConfManager)().getCoreConfig()?.toolSearchDefaultTools;
117
+ const names = (configured && configured.length > 0) ? configured : tool_1.TOOL_SEARCH_DEFAULT_TOOLS;
118
+ const builtinNames = new Set((0, exports.getAllBuiltinToolNames)());
119
+ const hasWildcard = names.some(isValidMCPWildcard);
120
+ const mcpNames = hasWildcard
121
+ ? (0, MCPManager_1.getMCPManager)().getMCPTools().map(tool => tool.name)
122
+ : [];
123
+ const result = [];
124
+ const push = (name) => {
125
+ if (!result.includes(name))
126
+ result.push(name);
127
+ };
128
+ for (const name of names) {
129
+ if (name === tool_1.TOOL_NAME_LOAD_TOOLS || result.includes(name))
130
+ continue;
131
+ if (name.startsWith('mcp__') && name.endsWith('*')) {
132
+ if (!isValidMCPWildcard(name)) {
133
+ (0, log_1.logWarn)(`toolSearchDefaultTools 通配不合法(须为 mcp__{server}__* 或 mcp__{server}__{prefix}*),已忽略: ${name}`);
134
+ continue;
135
+ }
136
+ const prefix = name.slice(0, -1); // 'mcp__{server}__' 或 'mcp__{server}__{prefix}'
137
+ mcpNames.filter(mcpName => mcpName.startsWith(prefix)).forEach(push);
138
+ continue;
139
+ }
140
+ if (!builtinNames.has(name) && !name.startsWith('mcp__')) {
141
+ (0, log_1.logWarn)(`toolSearchDefaultTools 含未知工具名,已忽略: ${name}`);
142
+ continue;
143
+ }
144
+ if (useTools && builtinNames.has(name) && !useTools.includes(name))
145
+ continue;
146
+ push(name);
147
+ }
148
+ return result;
149
+ }
150
+ // 工具搜索模式:延迟池(未默认加载的内置可用工具 + MCP 工具),供 load_tools 加载
151
+ function getDeferredTools(useTools) {
152
+ if (useTools === undefined) {
153
+ useTools = (0, ConfManager_1.getConfManager)().getCoreConfig()?.useTools;
154
+ }
155
+ const defaultNames = new Set(getToolSearchDefaultNames(useTools));
156
+ const all = [...(0, exports.getAvailableBuiltinTools)(useTools), ...(0, MCPManager_1.getMCPManager)().getMCPTools()];
157
+ return all.filter(tool => !defaultNames.has(tool.name));
158
+ }
99
159
  // 获取可用内置工具 + MCP 工具
100
160
  // useTools 不传时回退到全局默认配置
101
- function getAvailableTools(useTools) {
161
+ // opts.sessionId:工具搜索模式下用于读取会话已动态加载的工具;开关关闭或未传时走原路径
162
+ function getAvailableTools(useTools, opts) {
102
163
  if (useTools === undefined) {
103
164
  useTools = (0, ConfManager_1.getConfManager)().getCoreConfig()?.useTools;
104
165
  }
105
166
  const builtinTools = (0, exports.getAvailableBuiltinTools)(useTools);
106
167
  const mcpTools = (0, MCPManager_1.getMCPManager)().getMCPTools();
107
- const tools = [...builtinTools, ...mcpTools];
108
- (0, log_1.logInfo)(`tools len: ${tools.length} (builtin: ${builtinTools.length}, mcp: ${mcpTools.length})`);
168
+ const enableToolSearch = (0, ConfManager_1.getConfManager)().getCoreConfig()?.enableToolSearch ?? false;
169
+ if (!enableToolSearch || !opts?.sessionId) {
170
+ const tools = [...builtinTools, ...mcpTools];
171
+ (0, log_1.logInfo)(`tools len: ${tools.length} (builtin: ${builtinTools.length}, mcp: ${mcpTools.length})`);
172
+ return tools;
173
+ }
174
+ // 工具搜索模式:[默认加载工具(白名单序)] + [load_tools] + [会话已加载工具(加载序)]
175
+ // 顺序 append-only,保证 LLM 前缀缓存稳定
176
+ const byName = new Map();
177
+ builtinTools.forEach(tool => byName.set(tool.name, tool));
178
+ mcpTools.forEach(tool => byName.set(tool.name, tool));
179
+ const defaultNames = getToolSearchDefaultNames(useTools);
180
+ const defaultTools = defaultNames
181
+ .map(name => byName.get(name))
182
+ .filter((tool) => !!tool);
183
+ // 白名单已覆盖全部可用工具:无延迟池,不注入搜索工具
184
+ if (defaultTools.length === byName.size) {
185
+ return defaultTools;
186
+ }
187
+ const loadedNames = (0, StateManager_1.getStateManager)().session(opts.sessionId).getLoadedToolNames();
188
+ const loadedTools = loadedNames
189
+ .filter(name => !defaultNames.includes(name))
190
+ .map(name => byName.get(name))
191
+ .filter((tool) => !!tool);
192
+ const tools = [...defaultTools, asTool(LoadTools_1.LoadTools), ...loadedTools];
193
+ (0, log_1.logInfo)(`tools len: ${tools.length} (tool-search on, default: ${defaultTools.length}, loaded: ${loadedTools.length})`);
109
194
  return tools;
110
195
  }
111
196
  // 从 zod schema 中提取 required 字段
@@ -125,6 +210,15 @@ function extractRequiredFields(schema) {
125
210
  }
126
211
  return [];
127
212
  }
213
+ // 简易字符串哈希(FNV-1a),用于 buildTools 缓存 key 中的 load_tools 描述指纹
214
+ function hashStr(s) {
215
+ let h = 0x811c9dc5;
216
+ for (let i = 0; i < s.length; i++) {
217
+ h ^= s.charCodeAt(i);
218
+ h = Math.imul(h, 0x01000193);
219
+ }
220
+ return (h >>> 0).toString(16);
221
+ }
128
222
  // 使用 memoize 优化的 buildTools 函数
129
223
  exports.buildTools = (0, lodash_es_1.memoize)((tools) => {
130
224
  const disableBackgroundTasks = (0, ConfManager_1.getConfManager)().getCoreConfig()?.disableBackgroundTasks ?? false;
@@ -152,7 +246,16 @@ exports.buildTools = (0, lodash_es_1.memoize)((tools) => {
152
246
  });
153
247
  }, (tools) => {
154
248
  const disableBackgroundTasks = (0, ConfManager_1.getConfManager)().getCoreConfig()?.disableBackgroundTasks ?? false;
155
- return tools.map(tool => tool.name).sort().join(',') + (disableBackgroundTasks ? ':no-bg' : '');
249
+ // key 不排序:工具搜索模式下不同会话可能以不同顺序加载相同工具集合,
250
+ // 排序会让二者命中同一缓存条目导致 tools 数组重排,破坏 LLM 前缀缓存
251
+ let key = tools.map(tool => tool.name).join(',') + (disableBackgroundTasks ? ':no-bg' : '');
252
+ // load_tools 的描述(可加载名单)随 MCP server 连接状态与各代理视角(主/子延迟池不同)变化,
253
+ // 用内容哈希作指纹避免缓存陈旧描述或不同视角同长度撞 key
254
+ const loadTool = tools.find(tool => tool.name === tool_1.TOOL_NAME_LOAD_TOOLS);
255
+ if (loadTool) {
256
+ key += `:ts-${hashStr(getToolDescription(loadTool))}`;
257
+ }
258
+ return key;
156
259
  });
157
260
  // 辅助函数:获取工具描述
158
261
  function getToolDescription(tool) {
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/tools/base/tools.ts"],"names":[],"mappings":";;;AAoHA,8CASC;AA4DD,gDAKC;AA5LD,4CAM0B;AAC1B,0CAAsC;AACtC,4CAAwC;AACxC,0CAAsC;AACtC,4CAAwC;AACxC,gDAA4C;AAC5C,oDAAgD;AAChD,kDAA8C;AAC9C,oCAAgC;AAChC,0CAAsC;AACtC,8CAA0C;AAC1C,gDAA4C;AAC5C,4CAAwC;AACxC,4CAAwC;AACxC,8CAA0C;AAC1C,wCAAoC;AACpC,4CAAwC;AACxC,8CAA0C;AAC1C,8CAA0C;AAC1C,wCAAoC;AACpC,4CAAwC;AACxC,0CAAsC;AACtC,8DAA6D;AAC7D,2DAA0D;AAC1D,2DAAoD;AACpD,yCAAmC;AAEnC,wCAAwC;AAGxC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,0BAAmB,EAAE,0BAAmB,CAAC,CAAC,CAAA;AAEpE,0BAA0B;AACb,QAAA,uBAAuB,GAAG,IAAI,GAAG,CAAC;IAC7C,0BAAmB,EAAE,4BAAqB,EAAE,4BAAqB;IACjE,4BAAqB,EAAE,8BAAuB;IAC9C,4BAAqB,EAAE,yBAAkB;IACzC,2BAAoB,EAAE,4BAAqB;CAC5C,CAAC,CAAA;AAGF,8CAA8C;AAC9C,MAAM,MAAM,GAAG,CAAC,IAAS,EAAQ,EAAE,CAAC,IAAI,CAAA;AAExC,uBAAuB;AACvB,wBAAwB;AACjB,MAAM,sBAAsB,GAAG,CAAC,QAA0B,EAAc,EAAE;IAC/E,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,QAAQ,GAAG,IAAA,4BAAc,GAAE,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAA;IACvD,CAAC;IACD,OAAO,IAAA,uBAAe,GAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,kBAAkB,CAAC,IAAI,CAAC;QACrC,MAAM,EAAE,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KAC3E,CAAC,CAAC,CAAA;AACL,CAAC,CAAA;AATY,QAAA,sBAAsB,0BASlC;AAED,gCAAgC;AACzB,MAAM,sBAAsB,GAAG,GAAa,EAAE,CAAC,IAAA,uBAAe,GAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAAjF,QAAA,sBAAsB,0BAA2D;AAE9F,WAAW;AACJ,MAAM,eAAe,GAAG,GAAW,EAAE;IAC1C,OAAO;QACL,mBAAQ;QACR,yBAAW;QACX,6BAAa;QACb,mBAAQ;QACR,qBAAS;QACT,qBAAS;QACT,mBAAQ;QACR,mBAAQ;QACR,qBAAS;QACT,qBAAS;QACT,aAAK;QACL,2BAAY;QACZ,uBAAU;QACV,yBAAW;QACX,uBAAU;QACV,iBAAO;QACP,qBAAS;QACT,uBAAU;QACV,uBAAU;QACV,iBAAO;QACP,qBAAS;KACV,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACf,CAAC,CAAA;AAxBY,QAAA,eAAe,mBAwB3B;AAED,4BAA4B;AACf,QAAA,wBAAwB,GAAG,IAAA,mBAAO,EAC7C,CAAC,QAA0B,EAAU,EAAE;IACrC,MAAM,QAAQ,GAAG,IAAA,uBAAe,GAAE,CAAA;IAElC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AAC9D,CAAC,EACD,CAAC,QAA0B,EAAE,EAAE;IAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,WAAW,CAAA;IACpB,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAClC,CAAC,CACF,CAAA;AAED,oBAAoB;AACpB,wBAAwB;AACxB,SAAgB,iBAAiB,CAAC,QAA0B;IAC1D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,QAAQ,GAAG,IAAA,4BAAc,GAAE,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAA;IACvD,CAAC;IACD,MAAM,YAAY,GAAG,IAAA,gCAAwB,EAAC,QAAQ,CAAC,CAAA;IACvD,MAAM,QAAQ,GAAG,IAAA,0BAAa,GAAE,CAAC,WAAW,EAAE,CAAA;IAC9C,MAAM,KAAK,GAAW,CAAC,GAAG,YAAY,EAAE,GAAG,QAAQ,CAAC,CAAA;IACpD,IAAA,aAAO,EAAC,cAAc,KAAK,CAAC,MAAM,cAAc,YAAY,CAAC,MAAM,UAAU,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;IAChG,OAAO,KAAK,CAAA;AACd,CAAC;AAGD,+BAA+B;AAC/B,SAAS,qBAAqB,CAAC,MAAW;IACxC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAA;IAEpD,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACjC,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aACzB,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAgB,EAAE,EAAE;YAC1C,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,CAAA;QAClC,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAA;IACpC,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAA;IAC9B,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC;AAED,+BAA+B;AAClB,QAAA,UAAU,GAAG,IAAA,mBAAO,EAC/B,CAAC,KAAa,EAAoB,EAAE;IAClC,MAAM,sBAAsB,GAAG,IAAA,4BAAc,GAAE,CAAC,aAAa,EAAE,EAAE,sBAAsB,IAAI,KAAK,CAAA;IAChG,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACtB,MAAM,UAAU,GAAG,IAAA,oCAAe,EAAC,IAAI,CAAC,UAAiB,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE9D,mBAAmB;QACnB,IAAI,UAAU,GAAG,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,YAAY,IAAI,UAAU,CAAC;YAC3F,CAAC,CAAC,EAAE,GAAI,UAAU,CAAC,UAAsC,EAAE;YAC3D,CAAC,CAAC,UAAU,CAAA;QAEd,wDAAwD;QACxD,IAAI,sBAAsB,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACtG,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,UAAqC,CAAA;YACxE,UAAU,GAAG,IAAI,CAAA;QACnB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,kBAAkB,CAAC,IAAI,CAAC;YACrC,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,UAAU;gBACtB,QAAQ,EAAE,cAAc;aACzB;SACF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,EACD,CAAC,KAAa,EAAE,EAAE;IAChB,MAAM,sBAAsB,GAAG,IAAA,4BAAc,GAAE,CAAC,aAAa,EAAE,EAAE,sBAAsB,IAAI,KAAK,CAAA;IAChG,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AACjG,CAAC,CACF,CAAA;AAED,cAAc;AACd,SAAgB,kBAAkB,CAAC,IAAU;IAC3C,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAA;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC,WAAW,IAAI,EAAE,CAAA;AAC/B,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/tools/base/tools.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,8 @@ export interface AgentContext {
20
20
  agentId: string;
21
21
  abortController: AbortController;
22
22
  tools: Tool[];
23
+ /** 子代理专用:上下文重建(tools_loaded 等信号)时重组自身工具集的回调;主代理不设置,走 getAvailableTools */
24
+ rebuildTools?: () => Tool[];
23
25
  /** 模型类型 */
24
26
  model?: 'main' | 'quick';
25
27
  /** 当前正在执行的工具调用ID(由 RunTools 注入,供工具内部发送 chunk 事件使用) */
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAE9C,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;AAElE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,eAAe,CAAA;IAChC,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACxB,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAE9C,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;AAElE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,eAAe,CAAA;IAChC,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,IAAI,EAAE,CAAA;IAC3B,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACxB,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Hook 相关类型定义
3
+ *
4
+ * 事件名、stdin payload、输出协议与业界通用 hooks 格式一致(详见 test/hook.md)。
5
+ * 基础功能支持 8 个事件,配置文件为 ~/.sema/hooks/hooks.json 与 <workingDir>/.sema/hooks/hooks.json。
6
+ */
7
+ export declare const HOOK_EVENTS: readonly ["SessionStart", "UserPromptSubmit", "PreToolUse", "PostToolUse", "PostToolUseFailure", "PermissionRequest", "Stop", "SessionEnd"];
8
+ export type HookEventName = (typeof HOOK_EVENTS)[number];
9
+ export declare const TOOL_HOOK_EVENTS: ReadonlySet<string>;
10
+ export interface RawHookCommand {
11
+ type?: string;
12
+ command?: string;
13
+ timeout?: number;
14
+ failClosed?: boolean;
15
+ if?: string;
16
+ [k: string]: unknown;
17
+ }
18
+ export interface RawHookMatcherGroup {
19
+ matcher?: string;
20
+ hooks?: RawHookCommand[];
21
+ [k: string]: unknown;
22
+ }
23
+ export interface RawHooksFile {
24
+ hooks?: Record<string, RawHookMatcherGroup[]>;
25
+ [k: string]: unknown;
26
+ }
27
+ export interface LoadedHookEntry {
28
+ event: string;
29
+ source: 'user' | 'project';
30
+ matcher?: string;
31
+ command: string;
32
+ timeoutMs: number;
33
+ timeoutRaw?: number;
34
+ failClosed: boolean;
35
+ status: 'ok' | 'skipped' | 'invalid';
36
+ statusReason?: string;
37
+ }
38
+ export interface HookEntryInfo {
39
+ event: string;
40
+ source: 'user' | 'project';
41
+ matcher?: string;
42
+ command: string;
43
+ timeout?: number;
44
+ status: 'ok' | 'skipped' | 'invalid';
45
+ statusReason?: string;
46
+ filePath?: string;
47
+ }
48
+ export interface HooksInfo {
49
+ userConfigPath: string;
50
+ projectConfigPath: string;
51
+ userConfigExists: boolean;
52
+ projectConfigExists: boolean;
53
+ parseErrors: Array<{
54
+ source: 'user' | 'project';
55
+ message: string;
56
+ }>;
57
+ events: Record<string, HookEntryInfo[]>;
58
+ }
59
+ export interface HookExecResult {
60
+ exitCode: number | null;
61
+ stdout: string;
62
+ stderr: string;
63
+ timedOut: boolean;
64
+ failedToSpawn: boolean;
65
+ durationMs: number;
66
+ }
67
+ export interface HookOutcome {
68
+ kind: 'pass' | 'block' | 'error';
69
+ decision?: 'allow' | 'deny' | 'ask';
70
+ reason?: string;
71
+ additionalContext?: string;
72
+ systemMessage?: string;
73
+ suppressOutput?: boolean;
74
+ blockIgnored?: boolean;
75
+ }
76
+ //# sourceMappingURL=hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/types/hook.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,eAAO,MAAM,WAAW,6IASd,CAAA;AAEV,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AAGxD,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAK/C,CAAA;AAIF,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAA;IACxB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAA;IAC7C,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAID,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,SAAS,CAAA;IACpC,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAID,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,SAAS,CAAA;IACpC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,OAAO,CAAA;IACzB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,WAAW,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACnE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAA;CACxC;AAID,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,OAAO,CAAA;IACjB,aAAa,EAAE,OAAO,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;CACnB;AAGD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAA;IACnC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * Hook 相关类型定义
4
+ *
5
+ * 事件名、stdin payload、输出协议与业界通用 hooks 格式一致(详见 test/hook.md)。
6
+ * 基础功能支持 8 个事件,配置文件为 ~/.sema/hooks/hooks.json 与 <workingDir>/.sema/hooks/hooks.json。
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.TOOL_HOOK_EVENTS = exports.HOOK_EVENTS = void 0;
10
+ // 基础功能支持的 hook 事件
11
+ exports.HOOK_EVENTS = [
12
+ 'SessionStart',
13
+ 'UserPromptSubmit',
14
+ 'PreToolUse',
15
+ 'PostToolUse',
16
+ 'PostToolUseFailure',
17
+ 'PermissionRequest',
18
+ 'Stop',
19
+ 'SessionEnd',
20
+ ];
21
+ // 工具类事件(matcher 仅对这些事件生效)
22
+ exports.TOOL_HOOK_EVENTS = new Set([
23
+ 'PreToolUse',
24
+ 'PostToolUse',
25
+ 'PostToolUseFailure',
26
+ 'PermissionRequest',
27
+ ]);
28
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/types/hook.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,kBAAkB;AACL,QAAA,WAAW,GAAG;IACzB,cAAc;IACd,kBAAkB;IAClB,YAAY;IACZ,aAAa;IACb,oBAAoB;IACpB,mBAAmB;IACnB,MAAM;IACN,YAAY;CACJ,CAAA;AAIV,0BAA0B;AACb,QAAA,gBAAgB,GAAwB,IAAI,GAAG,CAAC;IAC3D,YAAY;IACZ,aAAa;IACb,oBAAoB;IACpB,mBAAmB;CACpB,CAAC,CAAA"}
@@ -21,9 +21,11 @@ export interface SemaCoreConfig {
21
21
  agentMode?: AgentMode;
22
22
  disableTopicDetection?: boolean;
23
23
  disableBackgroundTasks?: boolean;
24
+ enableToolSearch?: boolean;
25
+ toolSearchDefaultTools?: string[] | null;
24
26
  maxSessions?: number;
25
27
  }
26
- export type UpdatableCoreConfigKeys = 'stream' | 'thinking' | 'systemPrompt' | 'customRules' | 'skipFileEditPermission' | 'skipShellExecPermission' | 'skipSkillPermission' | 'skipMCPToolPermission' | 'skipFetchUrlPermission' | 'skipExternalFileReadPermission' | 'enableLLMCache' | 'disableBackgroundTasks';
28
+ export type UpdatableCoreConfigKeys = 'stream' | 'thinking' | 'systemPrompt' | 'customRules' | 'skipFileEditPermission' | 'skipShellExecPermission' | 'skipSkillPermission' | 'skipMCPToolPermission' | 'skipFetchUrlPermission' | 'skipExternalFileReadPermission' | 'enableLLMCache' | 'disableBackgroundTasks' | 'enableToolSearch';
27
29
  export declare const defaultCoreConfig: {
28
30
  stream: boolean;
29
31
  thinking: boolean;
@@ -37,6 +39,7 @@ export declare const defaultCoreConfig: {
37
39
  customRules: string;
38
40
  enableLLMCache: boolean;
39
41
  disableBackgroundTasks: boolean;
42
+ enableToolSearch: boolean;
40
43
  };
41
44
  export type UpdatableCoreConfig = Partial<typeof defaultCoreConfig>;
42
45
  export interface ModelConfig {
@@ -115,4 +118,5 @@ export type { TodoItem, TodoTaskStatus, TodoTask, } from './todoTask';
115
118
  export type { CronTask, CronTaskFile, } from './cron';
116
119
  export { TOOL_NAME_VIEW_FILE, TOOL_NAME_RUN_SHELL, TOOL_NAME_PEEK_BG_JOB, TOOL_NAME_STOP_BG_JOB, TOOL_NAME_DEL_CRON, TOOL_NAME_LIST_CRONS, TOOL_NAME_CREATE_TODO, TOOL_NAME_LIST_TODOS, TOOL_NAME_GET_TODO, TOOL_NAME_UPDATE_TODO, TOOL_NAME_CREATE_CRON, TOOL_NAME_PICK_OPTION, TOOL_NAME_PLAN_TO_AGENT, TOOL_NAME_FETCH_URL, TOOL_NAME_SEARCH_FILES, TOOL_NAME_SEARCH_CONTENT, TOOL_NAME_EDIT_NOTEBOOK, TOOL_NAME_SKILL, TOOL_NAME_SUB_AGENT, TOOL_NAME_WRITE_FILE, TOOL_NAME_PATCH_FILE, } from '../prompt/tool';
117
120
  export type { CreateSessionOptions, CreateSessionResult } from './session';
121
+ export type { HooksInfo, HookEntryInfo, } from './hook';
118
122
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAGpD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAOpD,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACxD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,sBAAsB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAMzC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,aAAa,GAAG,wBAAwB,GAAG,yBAAyB,GAAG,qBAAqB,GAAG,uBAAuB,GAAG,wBAAwB,GAAG,gCAAgC,GAAG,gBAAgB,GAAG,wBAAwB,GAAG,kBAAkB,CAAC;AAGvU,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;CAc7B,CAAC;AAGF,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEpE,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,OAAO,SAAS,EAAE,WAAW,CAAC;CACtC;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,SAAS,EAAE,WAAW,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,SAAS,EAAE,WAAW,CAAC;CACtC;AAGD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAGD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAGD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAA;CAC7B;AAGD,YAAY,EACV,YAAY,EACZ,aAAa,GACd,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,UAAU,EACV,WAAW,GACZ,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAGlB,YAAY,EACV,WAAW,EACX,UAAU,EACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,aAAa,EAAG,MAAM,yBAAyB,CAAC;AAGzD,YAAY,EACV,eAAe,EACf,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAGlB,YAAY,EACV,eAAe,EACf,aAAa,EACd,MAAM,OAAO,CAAC;AAGf,YAAY,EACV,YAAY,EACb,MAAM,UAAU,CAAC;AAGlB,YAAY,EACV,SAAS,EACT,UAAU,EACX,MAAM,QAAQ,CAAC;AAGhB,YAAY,EACV,YAAY,EACb,MAAM,QAAQ,CAAC;AAGhB,YAAY,EACV,QAAQ,EACR,cAAc,EACd,QAAQ,GACT,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,QAAQ,EACR,YAAY,GACb,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAG3E,YAAY,EACV,SAAS,EACT,aAAa,GACd,MAAM,QAAQ,CAAC"}
@@ -16,6 +16,7 @@ exports.defaultCoreConfig = {
16
16
  customRules: "- 中文回答",
17
17
  enableLLMCache: false,
18
18
  disableBackgroundTasks: false,
19
+ enableToolSearch: false,
19
20
  };
20
21
  var StateManager_1 = require("../manager/StateManager");
21
22
  Object.defineProperty(exports, "MAIN_AGENT_ID", { enumerable: true, get: function () { return StateManager_1.MAIN_AGENT_ID; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;AAAA,6CAAuD;AAwCvD,SAAS;AACI,QAAA,iBAAiB,GAAG;IAC/B,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,KAAK;IACf,sBAAsB,EAAE,KAAK;IAC7B,uBAAuB,EAAE,KAAK;IAC9B,mBAAmB,EAAE,KAAK;IAC1B,qBAAqB,EAAE,KAAK;IAC5B,sBAAsB,EAAE,KAAK;IAC7B,8BAA8B,EAAE,KAAK;IACrC,YAAY,EAAE,6BAAoB;IAClC,WAAW,EAAE,QAAQ;IACrB,cAAc,EAAE,KAAK;IACrB,sBAAsB,EAAE,KAAK;CAC9B,CAAC;AA2GF,wDAAyD;AAAhD,6GAAA,aAAa,OAAA;AA2CtB,UAAU;AACV,uCAsBwB;AArBtB,2GAAA,mBAAmB,OAAA;AACnB,2GAAA,mBAAmB,OAAA;AACnB,6GAAA,qBAAqB,OAAA;AACrB,6GAAA,qBAAqB,OAAA;AACrB,0GAAA,kBAAkB,OAAA;AAClB,4GAAA,oBAAoB,OAAA;AACpB,6GAAA,qBAAqB,OAAA;AACrB,4GAAA,oBAAoB,OAAA;AACpB,0GAAA,kBAAkB,OAAA;AAClB,6GAAA,qBAAqB,OAAA;AACrB,6GAAA,qBAAqB,OAAA;AACrB,6GAAA,qBAAqB,OAAA;AACrB,+GAAA,uBAAuB,OAAA;AACvB,2GAAA,mBAAmB,OAAA;AACnB,8GAAA,sBAAsB,OAAA;AACtB,gHAAA,wBAAwB,OAAA;AACxB,+GAAA,uBAAuB,OAAA;AACvB,uGAAA,eAAe,OAAA;AACf,2GAAA,mBAAmB,OAAA;AACnB,4GAAA,oBAAoB,OAAA;AACpB,4GAAA,oBAAoB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;AAAA,6CAAuD;AAiDvD,SAAS;AACI,QAAA,iBAAiB,GAAG;IAC/B,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,KAAK;IACf,sBAAsB,EAAE,KAAK;IAC7B,uBAAuB,EAAE,KAAK;IAC9B,mBAAmB,EAAE,KAAK;IAC1B,qBAAqB,EAAE,KAAK;IAC5B,sBAAsB,EAAE,KAAK;IAC7B,8BAA8B,EAAE,KAAK;IACrC,YAAY,EAAE,6BAAoB;IAClC,WAAW,EAAE,QAAQ;IACrB,cAAc,EAAE,KAAK;IACrB,sBAAsB,EAAE,KAAK;IAC7B,gBAAgB,EAAE,KAAK;CACxB,CAAC;AA2GF,wDAAyD;AAAhD,6GAAA,aAAa,OAAA;AA2CtB,UAAU;AACV,uCAsBwB;AArBtB,2GAAA,mBAAmB,OAAA;AACnB,2GAAA,mBAAmB,OAAA;AACnB,6GAAA,qBAAqB,OAAA;AACrB,6GAAA,qBAAqB,OAAA;AACrB,0GAAA,kBAAkB,OAAA;AAClB,4GAAA,oBAAoB,OAAA;AACpB,6GAAA,qBAAqB,OAAA;AACrB,4GAAA,oBAAoB,OAAA;AACpB,0GAAA,kBAAkB,OAAA;AAClB,6GAAA,qBAAqB,OAAA;AACrB,6GAAA,qBAAqB,OAAA;AACrB,6GAAA,qBAAqB,OAAA;AACrB,+GAAA,uBAAuB,OAAA;AACvB,2GAAA,mBAAmB,OAAA;AACnB,8GAAA,sBAAsB,OAAA;AACtB,gHAAA,wBAAwB,OAAA;AACxB,+GAAA,uBAAuB,OAAA;AACvB,uGAAA,eAAe,OAAA;AACf,2GAAA,mBAAmB,OAAA;AACnB,4GAAA,oBAAoB,OAAA;AACpB,4GAAA,oBAAoB,OAAA"}
@@ -7,8 +7,8 @@ export type FullToolUseResult = {
7
7
  };
8
8
  export type ToolControlSignal = {
9
9
  rebuildContext?: {
10
- reason: 'mode_changed';
11
- newMode: AgentMode;
10
+ reason: 'mode_changed' | 'tools_loaded';
11
+ newMode?: AgentMode;
12
12
  rebuildMessage?: Array<{
13
13
  type: 'text';
14
14
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,SAAS,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGnC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,OAAO,CAAA;IACb,kBAAkB,EAAE,SAAS,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;CAC9D,CAAA;AAGD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,CAAC,EAAE;QACf,MAAM,EAAE,cAAc,CAAA;QACtB,OAAO,EAAE,SAAS,CAAA;QAElB,cAAc,CAAC,EAAE,KAAK,CAAC;YACrB,IAAI,EAAE,MAAM,CAAA;YACZ,IAAI,EAAE,MAAM,CAAA;SACb,CAAC,CAAA;KACH,CAAA;CACF,CAAA;AAGD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC;CACrE;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE,SAAS,CAAC,YAAY,CAAA;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,IAAI,CAAA;IACV,aAAa,CAAC,EAAE,iBAAiB,CAAA;IACjC,aAAa,CAAC,EAAE,iBAAiB,CAAA;IAGjC,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,SAAS,CAAC,OAAO,CAAA;IAC1B,IAAI,EAAE,WAAW,CAAA;IACjB,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAGD,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,SAAS,CAAA"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,SAAS,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGnC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,OAAO,CAAA;IACb,kBAAkB,EAAE,SAAS,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;CAC9D,CAAA;AAGD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,CAAC,EAAE;QACf,MAAM,EAAE,cAAc,GAAG,cAAc,CAAA;QACvC,OAAO,CAAC,EAAE,SAAS,CAAA;QAEnB,cAAc,CAAC,EAAE,KAAK,CAAC;YACrB,IAAI,EAAE,MAAM,CAAA;YACZ,IAAI,EAAE,MAAM,CAAA;SACb,CAAC,CAAA;KACH,CAAA;CACF,CAAA;AAGD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC;CACrE;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE,SAAS,CAAC,YAAY,CAAA;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,IAAI,CAAA;IACV,aAAa,CAAC,EAAE,iBAAiB,CAAA;IACjC,aAAa,CAAC,EAAE,iBAAiB,CAAA;IAGjC,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,SAAS,CAAC,OAAO,CAAA;IAC1B,IAAI,EAAE,WAAW,CAAA;IACjB,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAGD,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,SAAS,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { Message } from '../types/message';
2
2
  import { queryLLM } from '../services/api/queryLLM';
3
+ import { CompactMicroData } from '../events/types';
3
4
  import { Tool } from '../tools/base/Tool';
4
5
  declare const defaultCompactDependencies: {
5
6
  queryLLM: typeof queryLLM;
@@ -38,8 +39,28 @@ export type AutoCompactResult = {
38
39
  /**
39
40
  * 根据令牌使用量判断是否应触发自动压缩
40
41
  * 只计算输入token数,因为API调用时主要关心的是输入token限制
42
+ *
43
+ * @param discountTokens 估算折扣:countTokens 读的是上一次 API 响应的 usage,
44
+ * micro 清理的节省要到下一次响应才可见,期间用该折扣修正判断。默认 0,行为与原先一致。
45
+ */
46
+ export declare function needsAutoCompact(messages: Message[], discountTokens?: number): boolean;
47
+ export type MicroCompactApplyResult = {
48
+ messages: Message[];
49
+ needFullCompact: boolean;
50
+ changed: boolean;
51
+ /** 清理统计(仅 changed=true 时存在),与 compact:micro 事件载荷完全一致 */
52
+ stats?: CompactMicroData;
53
+ };
54
+ /**
55
+ * Micro 压缩集成入口(全量摘要前的第一道防线)
56
+ *
57
+ * 把模型已消费过的旧 tool_result 块替换为占位符(纯本地操作,不调模型),
58
+ * 再用估算折扣判断清理后是否仍需全量摘要。清理无条件生效并随历史落盘,
59
+ * 与后续摘要成败无关。有清理时发 compact:micro 事件(便于观测节省量)。
60
+ *
61
+ * 任何异常均退回旧行为(needFullCompact: true,消息原样返回)。
41
62
  */
42
- export declare function needsAutoCompact(messages: Message[]): boolean;
63
+ export declare function applyMicroCompact(messages: Message[], sessionId?: string): MicroCompactApplyResult;
43
64
  /**
44
65
  * 执行上下文压缩(公开接口)
45
66
  *
@@ -54,6 +75,7 @@ export declare function needsAutoCompact(messages: Message[]): boolean;
54
75
  */
55
76
  export declare function compactMessages(messages: Message[], abortController: AbortController, sessionId?: string, options?: {
56
77
  allowTruncationFallback?: boolean;
78
+ customInstructions?: string;
57
79
  }): Promise<CompactResult>;
58
80
  /**
59
81
  * 自动上下文压缩的主要入口函数
@@ -1 +1 @@
1
- {"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../src/util/compact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAGrD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAKnD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAKzC,QAAA,MAAM,0BAA0B;;;;CAI/B,CAAA;AAID,eAAO,MAAM,kBAAkB;kCACC,OAAO,CAAC,OAAO,0BAA0B,CAAC,GAAG,IAAI;yBAG1D,IAAI;CAG1B,CAAA;AASD,MAAM,MAAM,sBAAsB,GAC9B,eAAe,GACf,0BAA0B,GAC1B,eAAe,CAAA;AAEnB,MAAM,MAAM,aAAa,GACrB;IACE,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAA;CACpB,GACD;IACE,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB,GACD;IACE,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,MAAM,EAAE,sBAAsB,CAAA;CAC/B,GACD;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAEL,MAAM,MAAM,iBAAiB,GACzB;IACE,OAAO,EAAE,IAAI,CAAA;IACb,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,IAAI,EAAE,SAAS,GAAG,WAAW,CAAA;CAC9B,GACD;IACE,OAAO,EAAE,KAAK,CAAA;IACd,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AA+LL;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAO7D;AAGD;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,OAAO,EAAE,EACnB,eAAe,EAAE,eAAe,EAChC,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAO,GAClD,OAAO,CAAC,aAAa,CAAC,CAsExB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,OAAO,EAAE,EACnB,eAAe,EAAE,eAAe,EAChC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC,CAwD5B;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,IASvB,CAAA"}
1
+ {"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../src/util/compact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAGrD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAInD,OAAO,EAAmB,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAKzC,QAAA,MAAM,0BAA0B;;;;CAI/B,CAAA;AAID,eAAO,MAAM,kBAAkB;kCACC,OAAO,CAAC,OAAO,0BAA0B,CAAC,GAAG,IAAI;yBAG1D,IAAI;CAG1B,CAAA;AASD,MAAM,MAAM,sBAAsB,GAC9B,eAAe,GACf,0BAA0B,GAC1B,eAAe,CAAA;AAEnB,MAAM,MAAM,aAAa,GACrB;IACE,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAA;CACpB,GACD;IACE,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB,GACD;IACE,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,MAAM,EAAE,sBAAsB,CAAA;CAC/B,GACD;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAEL,MAAM,MAAM,iBAAiB,GACzB;IACE,OAAO,EAAE,IAAI,CAAA;IACb,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,IAAI,EAAE,SAAS,GAAG,WAAW,CAAA;CAC9B,GACD;IACE,OAAO,EAAE,KAAK,CAAA;IACd,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AA+LL;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,cAAc,SAAI,GAAG,OAAO,CAOjF;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,eAAe,EAAE,OAAO,CAAA;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,wDAAwD;IACxD,KAAK,CAAC,EAAE,gBAAgB,CAAA;CACzB,CAAA;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAmClG;AAGD;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,OAAO,EAAE,EACnB,eAAe,EAAE,eAAe,EAChC,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/E,OAAO,CAAC,aAAa,CAAC,CAsExB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,OAAO,EAAE,EACnB,eAAe,EAAE,eAAe,EAChC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC,CAwD5B;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,IASvB,CAAA"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NULL_TOOL = exports.__compactTestHooks = void 0;
4
4
  exports.needsAutoCompact = needsAutoCompact;
5
+ exports.applyMicroCompact = applyMicroCompact;
5
6
  exports.compactMessages = compactMessages;
6
7
  exports.autoCompact = autoCompact;
7
8
  const tokens_1 = require("./tokens");
@@ -10,6 +11,7 @@ const queryLLM_1 = require("../services/api/queryLLM");
10
11
  const ModelManager_1 = require("../manager/ModelManager");
11
12
  const log_1 = require("./log");
12
13
  const EventSystem_1 = require("../events/EventSystem");
14
+ const microcompact_1 = require("./microcompact");
13
15
  const zod_1 = require("zod");
14
16
  const tokens_2 = require("./tokens");
15
17
  const compact_1 = require("../prompt/compact");
@@ -183,13 +185,56 @@ function emitCompactUsage(messagesBefore, messagesAfter, sessionId, mode, reason
183
185
  /**
184
186
  * 根据令牌使用量判断是否应触发自动压缩
185
187
  * 只计算输入token数,因为API调用时主要关心的是输入token限制
188
+ *
189
+ * @param discountTokens 估算折扣:countTokens 读的是上一次 API 响应的 usage,
190
+ * micro 清理的节省要到下一次响应才可见,期间用该折扣修正判断。默认 0,行为与原先一致。
186
191
  */
187
- function needsAutoCompact(messages) {
192
+ function needsAutoCompact(messages, discountTokens = 0) {
188
193
  if (messages.length < 3)
189
194
  return false;
190
195
  const inputTokenCount = (0, tokens_1.countTokens)(messages).inputTokens;
191
196
  const autoCompactThreshold = getContextLimit() * AUTO_COMPACT_THRESHOLD_RATIO;
192
- return inputTokenCount >= autoCompactThreshold;
197
+ return (inputTokenCount - discountTokens) >= autoCompactThreshold;
198
+ }
199
+ /**
200
+ * Micro 压缩集成入口(全量摘要前的第一道防线)
201
+ *
202
+ * 把模型已消费过的旧 tool_result 块替换为占位符(纯本地操作,不调模型),
203
+ * 再用估算折扣判断清理后是否仍需全量摘要。清理无条件生效并随历史落盘,
204
+ * 与后续摘要成败无关。有清理时发 compact:micro 事件(便于观测节省量)。
205
+ *
206
+ * 任何异常均退回旧行为(needFullCompact: true,消息原样返回)。
207
+ */
208
+ function applyMicroCompact(messages, sessionId) {
209
+ try {
210
+ const result = (0, microcompact_1.microCompactMessages)(messages);
211
+ if (!result.changed) {
212
+ return { messages, needFullCompact: true, changed: false };
213
+ }
214
+ const stillOver = needsAutoCompact(result.messages, result.estimatedSavedTokens);
215
+ // estimatedTokenAfter = 上次 API 响应的真实 usage − 估算节省,与"要不要全量摘要"的判断口径一致;
216
+ // 清理前的值不重复携带(= 紧邻上一条 conversation:usage 的 promptTokens)
217
+ const tokenBefore = (0, tokens_1.countTokens)(result.messages).inputTokens;
218
+ const microData = {
219
+ clearedCount: result.clearedCount,
220
+ estimatedSavedTokens: result.estimatedSavedTokens,
221
+ estimatedTokenAfter: Math.max(0, tokenBefore - result.estimatedSavedTokens),
222
+ skippedFullCompact: !stillOver,
223
+ };
224
+ // 独立事件:绝不复用 compact:exec(该事件语义是"历史已被摘要替换",下游会隐藏 transcript)
225
+ try {
226
+ compactDependencies.getEventBus().emit('compact:micro', microData, sessionId);
227
+ }
228
+ catch (emitError) {
229
+ (0, log_1.logError)(`[MicroCompact] Failed to emit compact:micro: ${emitError}`);
230
+ }
231
+ (0, log_1.logDebug)(`[MicroCompact] cleared=${microData.clearedCount} blocks, estimatedSaved=${microData.estimatedSavedTokens} tokens, estimatedTokenAfter=${microData.estimatedTokenAfter}, skippedFullCompact=${microData.skippedFullCompact}`);
232
+ return { messages: result.messages, needFullCompact: stillOver, changed: true, stats: microData };
233
+ }
234
+ catch (error) {
235
+ (0, log_1.logError)(`[MicroCompact] failed, falling back to full compact: ${error}`);
236
+ return { messages, needFullCompact: true, changed: false };
237
+ }
193
238
  }
194
239
  /**
195
240
  * 执行上下文压缩(公开接口)
@@ -209,7 +254,7 @@ async function compactMessages(messages, abortController, sessionId, options = {
209
254
  return { kind: 'unchanged', messages };
210
255
  }
211
256
  try {
212
- const summaryResult = await executeAutoCompact(messages, abortController);
257
+ const summaryResult = await executeAutoCompact(messages, abortController, sessionId, options.customInstructions);
213
258
  if (summaryResult.kind === 'summary') {
214
259
  emitCompactUsage(messages, summaryResult.messages, sessionId, 'summary');
215
260
  return summaryResult;
@@ -350,20 +395,23 @@ exports.NULL_TOOL = {
350
395
  *
351
396
  * 注意:新用户消息的分离和添加由 autoCompact 统一处理
352
397
  */
353
- async function executeAutoCompact(messages, abortController) {
398
+ async function executeAutoCompact(messages, abortController, sessionId, customInstructions) {
354
399
  // 使用 null tool 作为占位,避免模型调用任何工具
355
400
  const tools = [exports.NULL_TOOL];
356
401
  // 将压缩指令作为 user message 追加到要压缩的历史对话后
402
+ // 无自定义指示时 buildCompressionPrompt 返回 COMPRESSION_PROMPT 原文,自动压缩路径行为不变
357
403
  const messagesWithPrompt = [
358
404
  ...(0, message_1.prepareMessagesForApi)([...messages]),
359
- (0, message_1.buildUserMsg)(compact_1.COMPRESSION_PROMPT)
405
+ (0, message_1.buildUserMsg)((0, compact_1.buildCompressionPrompt)(customInstructions))
360
406
  ];
361
407
  const summaryResponse = await compactDependencies.queryLLM(messagesWithPrompt, [
362
408
  {
363
409
  type: 'text',
364
410
  text: 'An AI assistant that helps summarize coding conversations.'
365
411
  }
366
- ], abortController.signal, tools, { modelPointer: 'main', disableChunkEvents: true });
412
+ ], abortController.signal, tools,
413
+ // sessionId 透传:压缩的 LLM 调用日志按会话拆分(llm_logs/日期_会话id.log)
414
+ { modelPointer: 'main', disableChunkEvents: true, sessionId });
367
415
  if (isInvalidCompactResponse(summaryResponse)) {
368
416
  return {
369
417
  kind: 'invalid',