micro-models-agent 0.6.0 → 0.6.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/dist/agent/error-escalation.d.ts +1 -0
- package/dist/agent/error-escalation.d.ts.map +1 -1
- package/dist/agent/error-escalation.js +16 -3
- package/dist/agent/error-escalation.js.map +1 -1
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +177 -200
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/tool-executor.js +1 -1
- package/dist/agent/tool-executor.js.map +1 -1
- package/dist/agent/write-enforcer.d.ts +1 -1
- package/dist/agent/write-enforcer.d.ts.map +1 -1
- package/dist/agent/write-enforcer.js +4 -24
- package/dist/agent/write-enforcer.js.map +1 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +2 -2
- package/dist/config/config.js.map +1 -1
- package/dist/tools/adapters/bash-to-fs.d.ts +20 -0
- package/dist/tools/adapters/bash-to-fs.d.ts.map +1 -0
- package/dist/tools/adapters/bash-to-fs.js +74 -0
- package/dist/tools/adapters/bash-to-fs.js.map +1 -0
- package/dist/tools/adapters/content-sanitizer.d.ts +13 -0
- package/dist/tools/adapters/content-sanitizer.d.ts.map +1 -0
- package/dist/tools/adapters/content-sanitizer.js +73 -0
- package/dist/tools/adapters/content-sanitizer.js.map +1 -0
- package/dist/tools/adapters/grounding-fixer.d.ts +15 -0
- package/dist/tools/adapters/grounding-fixer.d.ts.map +1 -0
- package/dist/tools/adapters/grounding-fixer.js +57 -0
- package/dist/tools/adapters/grounding-fixer.js.map +1 -0
- package/dist/tools/adapters/index.d.ts +6 -0
- package/dist/tools/adapters/index.d.ts.map +1 -0
- package/dist/tools/adapters/index.js +5 -0
- package/dist/tools/adapters/index.js.map +1 -0
- package/dist/tools/adapters/pipeline.d.ts +34 -0
- package/dist/tools/adapters/pipeline.d.ts.map +1 -0
- package/dist/tools/adapters/pipeline.js +58 -0
- package/dist/tools/adapters/pipeline.js.map +1 -0
- package/dist/tools/adapters/types.d.ts +46 -0
- package/dist/tools/adapters/types.d.ts.map +1 -0
- package/dist/tools/adapters/types.js +2 -0
- package/dist/tools/adapters/types.js.map +1 -0
- package/dist/tools/subagent.d.ts.map +1 -1
- package/dist/tools/subagent.js +36 -1
- package/dist/tools/subagent.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Адаптер grounding-fixer.
|
|
3
|
+
*
|
|
4
|
+
* Маленькие модели часто забывают добавить @grounding[файл: path] маркер
|
|
5
|
+
* перед вызовом fs-инструментов. Вместо того чтобы блокировать вызов и
|
|
6
|
+
* гонять модель по retry-циклу, этот адаптер проверяет, есть ли в ответе
|
|
7
|
+
* LLM соответствующий маркер, и если нет — НЕ блокирует вызов, а просто
|
|
8
|
+
* пропускает его. Grounding check в loop.ts после этого адаптера
|
|
9
|
+
* не блокирует, а только предупреждает.
|
|
10
|
+
*
|
|
11
|
+
* Адаптер можно отключить через config.agent.grounding.enabled = false.
|
|
12
|
+
*/
|
|
13
|
+
export const groundingFixerAdapter = {
|
|
14
|
+
name: "grounding-fixer",
|
|
15
|
+
priority: 20,
|
|
16
|
+
async adapt(call, ctx) {
|
|
17
|
+
const groundingCfg = ctx.config.agent?.grounding;
|
|
18
|
+
if (groundingCfg?.enabled === false)
|
|
19
|
+
return { action: "pass" };
|
|
20
|
+
// Проверяем только fs-инструменты с path-аргументом
|
|
21
|
+
const path = call.parsed?.arguments?.path;
|
|
22
|
+
if (!path || typeof path !== "string")
|
|
23
|
+
return { action: "pass" };
|
|
24
|
+
const fsTools = new Set([
|
|
25
|
+
"read_file",
|
|
26
|
+
"write_file",
|
|
27
|
+
"edit_file",
|
|
28
|
+
"delete_file",
|
|
29
|
+
"file_info",
|
|
30
|
+
"create_dir",
|
|
31
|
+
"list_dir",
|
|
32
|
+
]);
|
|
33
|
+
if (!fsTools.has(call.parsed?.name ?? ""))
|
|
34
|
+
return { action: "pass" };
|
|
35
|
+
// Ищем @grounding[файл: path] в сыром ответе LLM
|
|
36
|
+
const markerPattern = /@grounding\[файл:\s*([^\]]+)\]/gi;
|
|
37
|
+
let found = false;
|
|
38
|
+
let match;
|
|
39
|
+
while ((match = markerPattern.exec(ctx.responseText)) !== null) {
|
|
40
|
+
const markerPath = match[1].trim().replace(/\\/g, "/");
|
|
41
|
+
const callPath = String(path).replace(/\\/g, "/");
|
|
42
|
+
if (callPath.endsWith(markerPath) || markerPath.endsWith(callPath)) {
|
|
43
|
+
found = true;
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (!found) {
|
|
48
|
+
return {
|
|
49
|
+
action: "replace",
|
|
50
|
+
call,
|
|
51
|
+
log: `[adapter:grounding-fixer] added implicit grounding for "${path}"`,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return { action: "pass" };
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=grounding-fixer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grounding-fixer.js","sourceRoot":"","sources":["../../../src/tools/adapters/grounding-fixer.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAgB;IAChD,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE,EAAE;IAEZ,KAAK,CAAC,KAAK,CAAC,IAAgB,EAAE,GAAmB;QAC/C,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC;QACjD,IAAI,YAAY,EAAE,OAAO,KAAK,KAAK;YAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAE/D,oDAAoD;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC;QAC1C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAEjE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC;YACtB,WAAW;YACX,YAAY;YACZ,WAAW;YACX,aAAa;YACb,WAAW;YACX,YAAY;YACZ,UAAU;SACX,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAErE,iDAAiD;QACjD,MAAM,aAAa,GAAG,kCAAkC,CAAC;QACzD,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,KAA6B,CAAC;QAClC,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/D,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAClD,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnE,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,IAAI;gBACJ,GAAG,EAAE,2DAA2D,IAAI,GAAG;aACxE,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { AdapterPipeline } from "./pipeline.js";
|
|
2
|
+
export { bashToFsAdapter } from "./bash-to-fs.js";
|
|
3
|
+
export { groundingFixerAdapter } from "./grounding-fixer.js";
|
|
4
|
+
export { contentSanitizerAdapter } from "./content-sanitizer.js";
|
|
5
|
+
export type { ToolAdapter, AdapterContext, AdapterResult } from "./types.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ParsedCall } from "../parse-tool-call.js";
|
|
2
|
+
import type { ToolAdapter, AdapterContext } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Пайплайн адаптеров — запускает все зарегистрированные адаптеры
|
|
5
|
+
* последовательно, позволяя каждому исправить tool call.
|
|
6
|
+
*
|
|
7
|
+
* Адаптеры сортируются по priority (меньше = раньше).
|
|
8
|
+
* Если адаптер вернул 'block', пайплайн останавливается.
|
|
9
|
+
* Если 'replace', следующий адаптер получает уже заменённый call.
|
|
10
|
+
*/
|
|
11
|
+
export declare class AdapterPipeline {
|
|
12
|
+
private adapters;
|
|
13
|
+
constructor();
|
|
14
|
+
/** Регистрирует стартовый набор адаптеров */
|
|
15
|
+
private registerDefaults;
|
|
16
|
+
/** Добавить кастомный адаптер */
|
|
17
|
+
register(adapter: ToolAdapter): void;
|
|
18
|
+
/** Заменить все адаптеры */
|
|
19
|
+
setAdapters(adapters: ToolAdapter[]): void;
|
|
20
|
+
/** Получить список адаптеров */
|
|
21
|
+
getAdapters(): ToolAdapter[];
|
|
22
|
+
/**
|
|
23
|
+
* Прогнать tool call через все адаптеры.
|
|
24
|
+
*
|
|
25
|
+
* @returns исправленный call, или null если заблокирован, или undefined если без изменений
|
|
26
|
+
*/
|
|
27
|
+
process(call: ParsedCall, ctx: AdapterContext): Promise<{
|
|
28
|
+
call: ParsedCall;
|
|
29
|
+
logs: string[];
|
|
30
|
+
} | {
|
|
31
|
+
blocked: string;
|
|
32
|
+
}>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/tools/adapters/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAK9D;;;;;;;GAOG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAqB;;IAMrC,6CAA6C;IAC7C,OAAO,CAAC,gBAAgB;IAOxB,iCAAiC;IACjC,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAKpC,4BAA4B;IAC5B,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI;IAI1C,gCAAgC;IAChC,WAAW,IAAI,WAAW,EAAE;IAI5B;;;;OAIG;IACG,OAAO,CACX,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAiBvE"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { bashToFsAdapter } from "./bash-to-fs.js";
|
|
2
|
+
import { groundingFixerAdapter } from "./grounding-fixer.js";
|
|
3
|
+
import { contentSanitizerAdapter } from "./content-sanitizer.js";
|
|
4
|
+
/**
|
|
5
|
+
* Пайплайн адаптеров — запускает все зарегистрированные адаптеры
|
|
6
|
+
* последовательно, позволяя каждому исправить tool call.
|
|
7
|
+
*
|
|
8
|
+
* Адаптеры сортируются по priority (меньше = раньше).
|
|
9
|
+
* Если адаптер вернул 'block', пайплайн останавливается.
|
|
10
|
+
* Если 'replace', следующий адаптер получает уже заменённый call.
|
|
11
|
+
*/
|
|
12
|
+
export class AdapterPipeline {
|
|
13
|
+
adapters = [];
|
|
14
|
+
constructor() {
|
|
15
|
+
this.registerDefaults();
|
|
16
|
+
}
|
|
17
|
+
/** Регистрирует стартовый набор адаптеров */
|
|
18
|
+
registerDefaults() {
|
|
19
|
+
this.adapters.push(bashToFsAdapter);
|
|
20
|
+
this.adapters.push(groundingFixerAdapter);
|
|
21
|
+
this.adapters.push(contentSanitizerAdapter);
|
|
22
|
+
this.adapters.sort((a, b) => a.priority - b.priority);
|
|
23
|
+
}
|
|
24
|
+
/** Добавить кастомный адаптер */
|
|
25
|
+
register(adapter) {
|
|
26
|
+
this.adapters.push(adapter);
|
|
27
|
+
this.adapters.sort((a, b) => a.priority - b.priority);
|
|
28
|
+
}
|
|
29
|
+
/** Заменить все адаптеры */
|
|
30
|
+
setAdapters(adapters) {
|
|
31
|
+
this.adapters = [...adapters].sort((a, b) => a.priority - b.priority);
|
|
32
|
+
}
|
|
33
|
+
/** Получить список адаптеров */
|
|
34
|
+
getAdapters() {
|
|
35
|
+
return [...this.adapters];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Прогнать tool call через все адаптеры.
|
|
39
|
+
*
|
|
40
|
+
* @returns исправленный call, или null если заблокирован, или undefined если без изменений
|
|
41
|
+
*/
|
|
42
|
+
async process(call, ctx) {
|
|
43
|
+
let current = call;
|
|
44
|
+
const logs = [];
|
|
45
|
+
for (const adapter of this.adapters) {
|
|
46
|
+
const result = await adapter.adapt(current, ctx);
|
|
47
|
+
if (result.action === "block") {
|
|
48
|
+
return { blocked: result.message };
|
|
49
|
+
}
|
|
50
|
+
if (result.action === "replace") {
|
|
51
|
+
logs.push(result.log);
|
|
52
|
+
current = result.call;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return { call: current, logs };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/tools/adapters/pipeline.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE;;;;;;;GAOG;AACH,MAAM,OAAO,eAAe;IAClB,QAAQ,GAAkB,EAAE,CAAC;IAErC;QACE,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,6CAA6C;IACrC,gBAAgB;QACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,iCAAiC;IACjC,QAAQ,CAAC,OAAoB;QAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,4BAA4B;IAC5B,WAAW,CAAC,QAAuB;QACjC,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxE,CAAC;IAED,gCAAgC;IAChC,WAAW;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CACX,IAAgB,EAChB,GAAmB;QAEnB,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACjD,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;YACrC,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtB,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;YACxB,CAAC;QACH,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { ParsedCall } from "../parse-tool-call.js";
|
|
2
|
+
import type { AppConfig } from "../../config/types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Контекст, передаваемый в каждый адаптер при обработке tool call'а.
|
|
5
|
+
*/
|
|
6
|
+
export interface AdapterContext {
|
|
7
|
+
/** Рабочая директория проекта */
|
|
8
|
+
cwd: string;
|
|
9
|
+
/** Конфигурация приложения */
|
|
10
|
+
config: AppConfig;
|
|
11
|
+
/** Сырой ответ LLM (нужен для grounding-fixer) */
|
|
12
|
+
responseText: string;
|
|
13
|
+
/** Список существующих файлов в проекте (для path-resolver) */
|
|
14
|
+
existingFiles: string[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Результат обработки tool call'а адаптером.
|
|
18
|
+
*/
|
|
19
|
+
export type AdapterResult = {
|
|
20
|
+
action: "pass";
|
|
21
|
+
} | {
|
|
22
|
+
action: "replace";
|
|
23
|
+
call: ParsedCall;
|
|
24
|
+
log: string;
|
|
25
|
+
} | {
|
|
26
|
+
action: "block";
|
|
27
|
+
message: string;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Адаптер — единица пайплайна, которая перехватывает и исправляет
|
|
31
|
+
* некорректные вызовы инструментов от LLM.
|
|
32
|
+
*
|
|
33
|
+
* Каждый адаптер решает одну конкретную проблему маленьких моделей:
|
|
34
|
+
* - bash-to-fs: конвертирует bash-команды записи в write_file
|
|
35
|
+
* - grounding-fixer: добавляет пропущенные grounding-маркеры
|
|
36
|
+
* - content-sanitizer: чинит битый content
|
|
37
|
+
*/
|
|
38
|
+
export interface ToolAdapter {
|
|
39
|
+
/** Уникальное имя адаптера */
|
|
40
|
+
name: string;
|
|
41
|
+
/** Порядок в пайплайне (меньше = раньше) */
|
|
42
|
+
priority: number;
|
|
43
|
+
/** Обработать tool call. Может пропустить, заменить или заблокировать. */
|
|
44
|
+
adapt(call: ParsedCall, ctx: AdapterContext): Promise<AdapterResult>;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/adapters/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,MAAM,EAAE,SAAS,CAAC;IAClB,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACtE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/adapters/types.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../src/tools/subagent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,oBAAoB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYxD;;;;;;;;;;;;;GAaG;AAIH,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAsHD;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,cAAc,EACxB,YAAY,CAAC,EAAE,YAAY,EAC3B,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../src/tools/subagent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,oBAAoB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYxD;;;;;;;;;;;;;GAaG;AAIH,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAsHD;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,cAAc,EACxB,YAAY,CAAC,EAAE,YAAY,EAC3B,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAuM7B"}
|
package/dist/tools/subagent.js
CHANGED
|
@@ -129,6 +129,7 @@ export async function runIsolatedLoop(provider, registry, task, existingFiles, c
|
|
|
129
129
|
const ctx = new ContextManager(effectiveProvider.contextWindow);
|
|
130
130
|
const maxSteps = maxStepsParam ?? 20;
|
|
131
131
|
let toolCallCount = 0;
|
|
132
|
+
let consecutiveNoToolSteps = 0;
|
|
132
133
|
for (let step = 0; step < maxSteps; step++) {
|
|
133
134
|
await ctx.updateTokens(messages);
|
|
134
135
|
if (step === 0 || step % 5 === 0) {
|
|
@@ -150,11 +151,45 @@ export async function runIsolatedLoop(provider, registry, task, existingFiles, c
|
|
|
150
151
|
break;
|
|
151
152
|
}
|
|
152
153
|
messages.push({ role: "assistant", content: response });
|
|
153
|
-
const { validCalls } = parseToolCalls(response);
|
|
154
|
+
const { validCalls, invalidCalls } = parseToolCalls(response);
|
|
154
155
|
if (validCalls.length === 0) {
|
|
156
|
+
// Поведенческий контроль: не анализируем текст ответа,
|
|
157
|
+
// а смотрим — вызывала ли модель инструменты.
|
|
158
|
+
if (invalidCalls.length > 0) {
|
|
159
|
+
messages.push({
|
|
160
|
+
role: "user",
|
|
161
|
+
content: `[Tool call format error: ${invalidCalls[0]}. Fix and try again.]`,
|
|
162
|
+
});
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
if (createdFiles.length === 0 && errors.length === 0) {
|
|
166
|
+
consecutiveNoToolSteps++;
|
|
167
|
+
if (consecutiveNoToolSteps >= 2 || toolCallCount > 0) {
|
|
168
|
+
logWarn("SUBAGENT", `model idle for ${consecutiveNoToolSteps} steps without tools at step ${step}`);
|
|
169
|
+
if (toolCallCount === 0) {
|
|
170
|
+
messages.push({
|
|
171
|
+
role: "user",
|
|
172
|
+
content: "[System: ты не вызвал(а) ни одного инструмента. Если задача требует действий — вызови соответствующий инструмент.]",
|
|
173
|
+
});
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
logDebug("SUBAGENT", `no valid tool calls, stopping`);
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
// Первое бездействие — даём шанс
|
|
180
|
+
logDebug("SUBAGENT", `step ${step}: no tool calls, continuing`);
|
|
181
|
+
messages.push({
|
|
182
|
+
role: "user",
|
|
183
|
+
content: "[System: ты не вызвал(а) ни одного инструмента. Если задача требует действий — вызови соответствующий инструмент.]",
|
|
184
|
+
});
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
// Была хоть какая-то работа — можно выйти
|
|
155
188
|
logDebug("SUBAGENT", `no valid tool calls at step ${step}, stopping`);
|
|
156
189
|
break;
|
|
157
190
|
}
|
|
191
|
+
// Инструменты вызваны — сбрасываем счётчик
|
|
192
|
+
consecutiveNoToolSteps = 0;
|
|
158
193
|
for (const call of validCalls) {
|
|
159
194
|
toolCallCount++;
|
|
160
195
|
const { output, exitCode } = await executeToolCall(call, toolExecutor, cwd, createdFiles, errors, step);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../src/tools/subagent.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../src/tools/subagent.ts"],"names":[],"mappings":"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"}
|