micro-models-agent 0.2.62 → 0.2.64
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/README.md +354 -354
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +125 -3
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/tool-executor.d.ts +2 -10
- package/dist/agent/tool-executor.d.ts.map +1 -1
- package/dist/agent/tool-executor.js +92 -1
- package/dist/agent/tool-executor.js.map +1 -1
- package/dist/async-map.d.ts +6 -0
- package/dist/async-map.d.ts.map +1 -0
- package/dist/async-map.js +16 -0
- package/dist/async-map.js.map +1 -0
- package/dist/blog-api/types/index.d.ts +2 -0
- package/dist/blog-api/types/index.d.ts.map +1 -0
- package/dist/blog-api/types/index.js +2 -0
- package/dist/blog-api/types/index.js.map +1 -0
- package/dist/cli/config.js +1 -1
- package/dist/cli/config.js.map +1 -1
- package/dist/config/config.d.ts +10 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +29 -2
- package/dist/config/config.js.map +1 -1
- package/dist/config/types.d.ts +16 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/examples.d.ts +22 -0
- package/dist/examples.d.ts.map +1 -0
- package/dist/examples.js +45 -0
- package/dist/examples.js.map +1 -0
- package/dist/fibonacci.d.ts +19 -0
- package/dist/fibonacci.d.ts.map +1 -0
- package/dist/fibonacci.js +61 -0
- package/dist/fibonacci.js.map +1 -0
- package/dist/plugins/builtin/lint-on-write/index.ts +96 -96
- package/dist/plugins/builtin/notify/index.js +6 -6
- package/dist/plugins/builtin/notify/index.ts +104 -104
- package/dist/repl.d.ts +5 -0
- package/dist/repl.d.ts.map +1 -0
- package/dist/repl.js +472 -0
- package/dist/repl.js.map +1 -0
- package/dist/skills/builtin/agent-test/SKILL.md +68 -68
- package/dist/skills/builtin/grill-me/SKILL.md +46 -46
- package/dist/sort.d.ts +8 -0
- package/dist/sort.d.ts.map +1 -0
- package/dist/sort.js +36 -0
- package/dist/sort.js.map +1 -0
- package/dist/stack.d.ts +9 -0
- package/dist/stack.d.ts.map +1 -0
- package/dist/stack.js +22 -0
- package/dist/stack.js.map +1 -0
- package/dist/test-run.d.ts +2 -0
- package/dist/test-run.d.ts.map +1 -0
- package/dist/test-run.js +13 -0
- package/dist/test-run.js.map +1 -0
- package/dist/tools/subagent.d.ts +16 -1
- package/dist/tools/subagent.d.ts.map +1 -1
- package/dist/tools/subagent.js +84 -9
- package/dist/tools/subagent.js.map +1 -1
- package/dist/ui/components/diff-view.d.ts +8 -0
- package/dist/ui/components/diff-view.d.ts.map +1 -0
- package/dist/ui/components/diff-view.js +25 -0
- package/dist/ui/components/diff-view.js.map +1 -0
- package/dist/ui/double-press.d.ts +9 -0
- package/dist/ui/double-press.d.ts.map +1 -0
- package/dist/ui/double-press.js +18 -0
- package/dist/ui/double-press.js.map +1 -0
- package/dist/ui/ink/components/App.d.ts +2 -0
- package/dist/ui/ink/components/App.d.ts.map +1 -1
- package/dist/ui/ink/components/App.js +12 -0
- package/dist/ui/ink/components/App.js.map +1 -1
- package/dist/ui/ink/renderer.d.ts +1 -0
- package/dist/ui/ink/renderer.d.ts.map +1 -1
- package/dist/ui/ink/renderer.js +3 -0
- package/dist/ui/ink/renderer.js.map +1 -1
- package/dist/ui/opentui-renderer.d.ts +53 -0
- package/dist/ui/opentui-renderer.d.ts.map +1 -0
- package/dist/ui/opentui-renderer.js +463 -0
- package/dist/ui/opentui-renderer.js.map +1 -0
- package/dist/ui/readline-renderer.d.ts +1 -0
- package/dist/ui/readline-renderer.d.ts.map +1 -1
- package/dist/ui/readline-renderer.js +3 -0
- package/dist/ui/readline-renderer.js.map +1 -1
- package/dist/ui/renderer.d.ts +1 -0
- package/dist/ui/renderer.d.ts.map +1 -1
- package/dist/ui/subagent-renderer.d.ts +1 -0
- package/dist/ui/subagent-renderer.d.ts.map +1 -1
- package/dist/ui/subagent-renderer.js +3 -0
- package/dist/ui/subagent-renderer.js.map +1 -1
- package/dist/utils/memoize.d.ts +14 -0
- package/dist/utils/memoize.d.ts.map +1 -0
- package/dist/utils/memoize.js +51 -0
- package/dist/utils/memoize.js.map +1 -0
- package/dist/utils/types.d.ts +6 -0
- package/dist/utils/types.d.ts.map +1 -0
- package/dist/utils/types.js +2 -0
- package/dist/utils/types.js.map +1 -0
- package/dist/utils.d.ts +22 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +81 -0
- package/dist/utils.js.map +1 -0
- package/package.json +2 -2
package/dist/cli/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C;;;;;;;;;GASG;AAEH,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAEhF,SAAS;SACN,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEL,SAAS;SACN,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;QACtB,MAAM,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;QACnE,MAAM,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config/config.d.ts
CHANGED
|
@@ -17,8 +17,18 @@ declare const LLM_DEFAULTS: {
|
|
|
17
17
|
maxTokensDefault: number;
|
|
18
18
|
maxTokensAfterTool: number;
|
|
19
19
|
emptyResponseThreshold: number;
|
|
20
|
+
toolModel: string | undefined;
|
|
20
21
|
};
|
|
21
22
|
/** Получить LLM конфиг с заполненными defaults */
|
|
22
23
|
export declare function getLLMConfig(config?: AppConfig): typeof LLM_DEFAULTS;
|
|
24
|
+
/** Specialist config defaults */
|
|
25
|
+
declare const SPECIALIST_DEFAULTS: {
|
|
26
|
+
enabled: boolean;
|
|
27
|
+
triggerThreshold: number;
|
|
28
|
+
maxSteps: number;
|
|
29
|
+
minErrorLength: number;
|
|
30
|
+
};
|
|
31
|
+
/** Получить specialist конфиг с заполненными defaults */
|
|
32
|
+
export declare function getSpecialistConfig(config?: AppConfig): typeof SPECIALIST_DEFAULTS;
|
|
23
33
|
export {};
|
|
24
34
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA2F5C;;;GAGG;AACH,wBAAgB,UAAU,IAAI,SAAS,CA0BtC;AAID,4EAA4E;AAC5E,wBAAgB,YAAY,IAAI,IAAI,CAInC;AAED,kDAAkD;AAClD,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAIlD;AAED,0BAA0B;AAC1B,QAAA,MAAM,YAAY;;;;;;;;eAQQ,MAAM,GAAG,SAAS;CAC3C,CAAC;AAEF,kDAAkD;AAClD,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,YAAY,CAapE;AAED,iCAAiC;AACjC,QAAA,MAAM,mBAAmB;;;;;CAKxB,CAAC;AAEF,yDAAyD;AACzD,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,mBAAmB,CASlF"}
|
package/dist/config/config.js
CHANGED
|
@@ -51,11 +51,17 @@ const DEFAULT_CONFIG = {
|
|
|
51
51
|
retries: 1,
|
|
52
52
|
retryWithoutThinking: true,
|
|
53
53
|
fallbackToReasoning: true,
|
|
54
|
-
maxTokensReasoning:
|
|
54
|
+
maxTokensReasoning: 32768,
|
|
55
55
|
maxTokensDefault: 4096,
|
|
56
56
|
maxTokensAfterTool: 24576,
|
|
57
57
|
emptyResponseThreshold: 10,
|
|
58
58
|
},
|
|
59
|
+
specialist: {
|
|
60
|
+
enabled: true,
|
|
61
|
+
triggerThreshold: 2,
|
|
62
|
+
maxSteps: 10,
|
|
63
|
+
minErrorLength: 15,
|
|
64
|
+
},
|
|
59
65
|
},
|
|
60
66
|
};
|
|
61
67
|
/** Ищет корень проекта (по .mmrc или package.json) */
|
|
@@ -133,10 +139,11 @@ const LLM_DEFAULTS = {
|
|
|
133
139
|
retries: 1,
|
|
134
140
|
retryWithoutThinking: true,
|
|
135
141
|
fallbackToReasoning: true,
|
|
136
|
-
maxTokensReasoning:
|
|
142
|
+
maxTokensReasoning: 32768,
|
|
137
143
|
maxTokensDefault: 4096,
|
|
138
144
|
maxTokensAfterTool: 24576,
|
|
139
145
|
emptyResponseThreshold: 10,
|
|
146
|
+
toolModel: undefined,
|
|
140
147
|
};
|
|
141
148
|
/** Получить LLM конфиг с заполненными defaults */
|
|
142
149
|
export function getLLMConfig(config) {
|
|
@@ -151,6 +158,26 @@ export function getLLMConfig(config) {
|
|
|
151
158
|
maxTokensDefault: src.maxTokensDefault ?? LLM_DEFAULTS.maxTokensDefault,
|
|
152
159
|
maxTokensAfterTool: src.maxTokensAfterTool ?? LLM_DEFAULTS.maxTokensAfterTool,
|
|
153
160
|
emptyResponseThreshold: src.emptyResponseThreshold ?? LLM_DEFAULTS.emptyResponseThreshold,
|
|
161
|
+
toolModel: src.toolModel ?? LLM_DEFAULTS.toolModel,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/** Specialist config defaults */
|
|
165
|
+
const SPECIALIST_DEFAULTS = {
|
|
166
|
+
enabled: true,
|
|
167
|
+
triggerThreshold: 2,
|
|
168
|
+
maxSteps: 10,
|
|
169
|
+
minErrorLength: 15,
|
|
170
|
+
};
|
|
171
|
+
/** Получить specialist конфиг с заполненными defaults */
|
|
172
|
+
export function getSpecialistConfig(config) {
|
|
173
|
+
const src = config?.agent?.specialist;
|
|
174
|
+
if (!src)
|
|
175
|
+
return { ...SPECIALIST_DEFAULTS };
|
|
176
|
+
return {
|
|
177
|
+
enabled: src.enabled ?? SPECIALIST_DEFAULTS.enabled,
|
|
178
|
+
triggerThreshold: src.triggerThreshold ?? SPECIALIST_DEFAULTS.triggerThreshold,
|
|
179
|
+
maxSteps: src.maxSteps ?? SPECIALIST_DEFAULTS.maxSteps,
|
|
180
|
+
minErrorLength: src.minErrorLength ?? SPECIALIST_DEFAULTS.minErrorLength,
|
|
154
181
|
};
|
|
155
182
|
}
|
|
156
183
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config/types.d.ts
CHANGED
|
@@ -55,6 +55,8 @@ export interface AgentConfig {
|
|
|
55
55
|
maxSkillsPro?: number;
|
|
56
56
|
/** Параметры LLM: retry, thinking, max_tokens */
|
|
57
57
|
llm?: LLMConfig;
|
|
58
|
+
/** Auto-specialist конфигурация */
|
|
59
|
+
specialist?: SpecialistConfig;
|
|
58
60
|
/** Список плагинов для активации (имена через запятую) */
|
|
59
61
|
plugins?: string[];
|
|
60
62
|
}
|
|
@@ -66,7 +68,7 @@ export interface LLMConfig {
|
|
|
66
68
|
retryWithoutThinking?: boolean;
|
|
67
69
|
/** Fallback: использовать reasoning как content при пустом ответе (default: true) */
|
|
68
70
|
fallbackToReasoning?: boolean;
|
|
69
|
-
/** max_tokens для reasoning-моделей (default:
|
|
71
|
+
/** max_tokens для reasoning-моделей (default: 32768) */
|
|
70
72
|
maxTokensReasoning?: number;
|
|
71
73
|
/** max_tokens для обычных моделей (default: 4096) */
|
|
72
74
|
maxTokensDefault?: number;
|
|
@@ -74,6 +76,19 @@ export interface LLMConfig {
|
|
|
74
76
|
maxTokensAfterTool?: number;
|
|
75
77
|
/** Мин. количество reasoning chunks для триггера retry (default: 10) */
|
|
76
78
|
emptyResponseThreshold?: number;
|
|
79
|
+
/** Модель для tool execution в subagent (default: undefined = тот же模型) */
|
|
80
|
+
toolModel?: string;
|
|
81
|
+
}
|
|
82
|
+
/** Конфигурация auto-specialist (автоделегирование при повторяющихся ошибках) */
|
|
83
|
+
export interface SpecialistConfig {
|
|
84
|
+
/** Включить auto-specialist (default: true) */
|
|
85
|
+
enabled?: boolean;
|
|
86
|
+
/** Кол-во одинаковых ошибок до триггера (default: 2) */
|
|
87
|
+
triggerThreshold?: number;
|
|
88
|
+
/** Макс. ходов specialist'а (default: 10) */
|
|
89
|
+
maxSteps?: number;
|
|
90
|
+
/** Мин. длина текста ошибки для триггера — отсекает trivia (default: 15) */
|
|
91
|
+
minErrorLength?: number;
|
|
77
92
|
}
|
|
78
93
|
/** Режимы работы агента: fast (без скилов), base (обычный), pro (с grill-me) */
|
|
79
94
|
export type AgentMode = 'fast' | 'base' | 'pro';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,0BAA0B;AAC1B,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,iCAAiC;AACjC,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,kCAAkC;AAClC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC;AAED,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,uBAAuB;AACvB,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wDAAwD;IACxD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,yEAAyE;AACzE,MAAM,WAAW,SAAS;IACxB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qFAAqF;IACrF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wDAAwD;IACxD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,sBAAsB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Пример рекурсивных функций для демонстрации
|
|
3
|
+
*/
|
|
4
|
+
export declare function quickSort(arr: number[]): number[];
|
|
5
|
+
/**
|
|
6
|
+
* Рекурсивное умножение (без оператора *)
|
|
7
|
+
*/
|
|
8
|
+
export declare function multiply(a: number, b: number): number;
|
|
9
|
+
/**
|
|
10
|
+
* Рекурсивная генерация чисел Фибоначчи (классическая)
|
|
11
|
+
*/
|
|
12
|
+
export declare function fibonacciClassic(n: number): number;
|
|
13
|
+
/**
|
|
14
|
+
* Рекурсивный поиск в глубину для дерева
|
|
15
|
+
*/
|
|
16
|
+
interface Node<T> {
|
|
17
|
+
value: T;
|
|
18
|
+
children?: Node<T>[];
|
|
19
|
+
}
|
|
20
|
+
export declare function traverseTree<T>(node: Node<T>, callback: (value: T, node: Node<T>) => void): void;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=examples.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"examples.d.ts","sourceRoot":"","sources":["../src/examples.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CASjD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CASrD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED;;GAEG;AACH,UAAU,IAAI,CAAC,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;CACtB;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,QAUzF"}
|
package/dist/examples.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Пример рекурсивных функций для демонстрации
|
|
3
|
+
*/
|
|
4
|
+
export function quickSort(arr) {
|
|
5
|
+
if (arr.length <= 1)
|
|
6
|
+
return arr;
|
|
7
|
+
const pivot = arr[arr.length - 1];
|
|
8
|
+
const left = arr.filter(x => x < pivot);
|
|
9
|
+
const middle = arr.filter(x => x === pivot);
|
|
10
|
+
const right = arr.filter(x => x > pivot);
|
|
11
|
+
return [...quickSort(left), ...middle, ...quickSort(right)];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Рекурсивное умножение (без оператора *)
|
|
15
|
+
*/
|
|
16
|
+
export function multiply(a, b) {
|
|
17
|
+
if (b === 0)
|
|
18
|
+
return 0;
|
|
19
|
+
if (b < 0)
|
|
20
|
+
return -multiply(a, -b);
|
|
21
|
+
let sum = 0;
|
|
22
|
+
for (let i = 0; i < b; i++) {
|
|
23
|
+
sum += a;
|
|
24
|
+
}
|
|
25
|
+
return sum;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Рекурсивная генерация чисел Фибоначчи (классическая)
|
|
29
|
+
*/
|
|
30
|
+
export function fibonacciClassic(n) {
|
|
31
|
+
if (n <= 1)
|
|
32
|
+
return n;
|
|
33
|
+
return fibonacciClassic(n - 1) + fibonacciClassic(n - 2);
|
|
34
|
+
}
|
|
35
|
+
export function traverseTree(node, callback) {
|
|
36
|
+
if (!node)
|
|
37
|
+
return;
|
|
38
|
+
callback(node.value, node);
|
|
39
|
+
if (node.children) {
|
|
40
|
+
for (const child of node.children) {
|
|
41
|
+
traverseTree(child, callback);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=examples.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"examples.js","sourceRoot":"","sources":["../src/examples.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,UAAU,SAAS,CAAC,GAAa;IACrC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IAEhC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IAEzC,OAAO,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,CAAS;IAC3C,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,GAAG,IAAI,CAAC,CAAC;IACX,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACrB,OAAO,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC;AAUD,MAAM,UAAU,YAAY,CAAI,IAAa,EAAE,QAA2C;IACxF,IAAI,CAAC,IAAI;QAAE,OAAO;IAElB,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAE3B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Вычисляет n-е число Фибоначчи
|
|
3
|
+
* @param n - номер позиции (0-based)
|
|
4
|
+
* @returns значение числа Фибоначчи
|
|
5
|
+
*/
|
|
6
|
+
export declare function fibonacci(n: number): number;
|
|
7
|
+
/**
|
|
8
|
+
* Возвращает массив чисел Фибоначчи от 0 до n
|
|
9
|
+
* @param n - количество элементов в массиве
|
|
10
|
+
* @returns массив с числами Фибоначчи
|
|
11
|
+
*/
|
|
12
|
+
export declare function fibonacciSequence(n: number): number[];
|
|
13
|
+
/**
|
|
14
|
+
* Вычисляет n-е число Фибоначчи с мемоизацией для O(1) времени доступа
|
|
15
|
+
* @param n - номер позиции
|
|
16
|
+
* @returns значение числа Фибоначчи
|
|
17
|
+
*/
|
|
18
|
+
export declare function fibonacciMemoized(n: number): number;
|
|
19
|
+
//# sourceMappingURL=fibonacci.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fibonacci.d.ts","sourceRoot":"","sources":["../src/fibonacci.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAe3C;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CASrD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAgBnD"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
/**
|
|
3
|
+
* Вычисляет n-е число Фибоначчи
|
|
4
|
+
* @param n - номер позиции (0-based)
|
|
5
|
+
* @returns значение числа Фибоначчи
|
|
6
|
+
*/
|
|
7
|
+
export function fibonacci(n) {
|
|
8
|
+
if (n < 0) {
|
|
9
|
+
throw new Error('n должен быть не менее 0');
|
|
10
|
+
}
|
|
11
|
+
if (n === 0)
|
|
12
|
+
return 0;
|
|
13
|
+
if (n === 1)
|
|
14
|
+
return 1;
|
|
15
|
+
let prev = 0;
|
|
16
|
+
let curr = 1;
|
|
17
|
+
for (let i = 2; i <= n; i++) {
|
|
18
|
+
const next = prev + curr;
|
|
19
|
+
prev = curr;
|
|
20
|
+
curr = next;
|
|
21
|
+
}
|
|
22
|
+
return curr;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Возвращает массив чисел Фибоначчи от 0 до n
|
|
26
|
+
* @param n - количество элементов в массиве
|
|
27
|
+
* @returns массив с числами Фибоначчи
|
|
28
|
+
*/
|
|
29
|
+
export function fibonacciSequence(n) {
|
|
30
|
+
if (n < 0) {
|
|
31
|
+
throw new Error('n должен быть не менее 0');
|
|
32
|
+
}
|
|
33
|
+
const result = [];
|
|
34
|
+
for (let i = 0; i < n; i++) {
|
|
35
|
+
result.push(fibonacci(i));
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Вычисляет n-е число Фибоначчи с мемоизацией для O(1) времени доступа
|
|
41
|
+
* @param n - номер позиции
|
|
42
|
+
* @returns значение числа Фибоначчи
|
|
43
|
+
*/
|
|
44
|
+
export function fibonacciMemoized(n) {
|
|
45
|
+
const memo = new Map();
|
|
46
|
+
function fib(n) {
|
|
47
|
+
if (memo.has(n))
|
|
48
|
+
return memo.get(n);
|
|
49
|
+
if (n < 0)
|
|
50
|
+
throw new Error('n должен быть не менее 0');
|
|
51
|
+
if (n === 0 || n === 1) {
|
|
52
|
+
memo.set(n, n);
|
|
53
|
+
return n;
|
|
54
|
+
}
|
|
55
|
+
const result = fib(n - 1) + fib(n - 2);
|
|
56
|
+
memo.set(n, result);
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
return fib(n);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=fibonacci.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fibonacci.js","sourceRoot":"","sources":["../src/fibonacci.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAEtB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzB,IAAI,GAAG,IAAI,CAAC;QACZ,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAAS;IACzC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAAS;IACzC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEvC,SAAS,GAAG,CAAC,CAAS;QACpB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACf,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACpB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;AAChB,CAAC"}
|
|
@@ -1,97 +1,97 @@
|
|
|
1
|
-
import { execSync } from 'node:child_process';
|
|
2
|
-
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
import type { AgentPlugin, PluginContext } from '../../types.js';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Плагин lint-on-write.
|
|
8
|
-
*
|
|
9
|
-
* После каждого write_file/edit_file запускает линтер
|
|
10
|
-
* и добавляет ошибки в tool result (модель видит их сразу).
|
|
11
|
-
*
|
|
12
|
-
* Линтер определяется автоматически (eslint → biome → prettier).
|
|
13
|
-
*
|
|
14
|
-
* @module plugins/builtin/lint-on-write
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
const LINTER_DETECT_COMMANDS = [
|
|
18
|
-
{ name: 'eslint', cmd: 'npx eslint --version' },
|
|
19
|
-
{ name: 'biome', cmd: 'npx @biomejs/biome --version' },
|
|
20
|
-
{ name: 'prettier', cmd: 'npx prettier --version' },
|
|
21
|
-
];
|
|
22
|
-
|
|
23
|
-
function detectLinter(cwd: string, cacheFile: string): string | null {
|
|
24
|
-
const cachePath = join(cwd, cacheFile);
|
|
25
|
-
if (existsSync(cachePath)) {
|
|
26
|
-
try {
|
|
27
|
-
const cached = readFileSync(cachePath, 'utf-8').trim();
|
|
28
|
-
if (cached) return cached;
|
|
29
|
-
} catch { /* ignore */ }
|
|
30
|
-
}
|
|
31
|
-
for (const { name, cmd } of LINTER_DETECT_COMMANDS) {
|
|
32
|
-
try {
|
|
33
|
-
execSync(cmd, { cwd, timeout: 5000, windowsHide: true, stdio: 'pipe' });
|
|
34
|
-
try { writeFileSync(cachePath, name, 'utf-8'); } catch { /* ignore */ }
|
|
35
|
-
return name;
|
|
36
|
-
} catch { /* not found */ }
|
|
37
|
-
}
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
function runLinter(linter: string, filePath: string, cwd: string): string | null {
|
|
42
|
-
try {
|
|
43
|
-
let cmd: string;
|
|
44
|
-
switch (linter) {
|
|
45
|
-
case 'eslint': cmd = `npx eslint "${filePath}" --format compact`; break;
|
|
46
|
-
case 'biome': cmd = `npx @biomejs/biome check "${filePath}"`; break;
|
|
47
|
-
case 'prettier': cmd = `npx prettier --check "${filePath}"`; break;
|
|
48
|
-
default: return null;
|
|
49
|
-
}
|
|
50
|
-
execSync(cmd, { cwd, timeout: 15000, windowsHide: true, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
|
|
51
|
-
return null;
|
|
52
|
-
} catch (e: any) {
|
|
53
|
-
const output = e.stdout?.toString() || e.stderr?.toString() || '';
|
|
54
|
-
return output ? output.slice(0, 1000) : null;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// Module-level linter cache
|
|
59
|
-
let cachedLinter: string | null = null;
|
|
60
|
-
|
|
61
|
-
export default function createLintOnWrite(): AgentPlugin {
|
|
62
|
-
return {
|
|
63
|
-
name: 'lint-on-write',
|
|
64
|
-
version: '1.0.0',
|
|
65
|
-
description: 'Auto-run linter after write_file/edit_file',
|
|
66
|
-
onActivate(ctx: PluginContext) {
|
|
67
|
-
ctx.logger.info('lint-on-write: active (linter detected on first file write)');
|
|
68
|
-
},
|
|
69
|
-
on(_event: string, _handler: any) { /* via PluginManager.on() */ },
|
|
70
|
-
onDeactivate() { cachedLinter = null; },
|
|
71
|
-
getPromptSection() {
|
|
72
|
-
return '## Lint-on-Write Plugin\nAfter writing/editing .ts/.tsx/.js/.jsx files, lint errors (if any) are automatically appended to the tool result.';
|
|
73
|
-
},
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Обработчик tool:after — вызывается через PluginManager.on().
|
|
79
|
-
* Экспортируется для регистрации в loop.ts.
|
|
80
|
-
*/
|
|
81
|
-
export function handleToolAfter(
|
|
82
|
-
toolName: string,
|
|
83
|
-
args: Record<string, unknown>,
|
|
84
|
-
_result: { stdout: string; stderr: string; exitCode: number },
|
|
85
|
-
cwd: string,
|
|
86
|
-
cacheFile: string,
|
|
87
|
-
): string | null {
|
|
88
|
-
if (toolName !== 'write_file' && toolName !== 'edit_file') return null;
|
|
89
|
-
const filePath = String(args.path ?? '');
|
|
90
|
-
if (!filePath || !/\.(ts|tsx|js|jsx|mjs|cjs)$/.test(filePath)) return null;
|
|
91
|
-
|
|
92
|
-
const linter = cachedLinter ?? detectLinter(cwd, cacheFile);
|
|
93
|
-
if (!linter) return null;
|
|
94
|
-
cachedLinter = linter;
|
|
95
|
-
|
|
96
|
-
return runLinter(linter, filePath, cwd);
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import type { AgentPlugin, PluginContext } from '../../types.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Плагин lint-on-write.
|
|
8
|
+
*
|
|
9
|
+
* После каждого write_file/edit_file запускает линтер
|
|
10
|
+
* и добавляет ошибки в tool result (модель видит их сразу).
|
|
11
|
+
*
|
|
12
|
+
* Линтер определяется автоматически (eslint → biome → prettier).
|
|
13
|
+
*
|
|
14
|
+
* @module plugins/builtin/lint-on-write
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const LINTER_DETECT_COMMANDS = [
|
|
18
|
+
{ name: 'eslint', cmd: 'npx eslint --version' },
|
|
19
|
+
{ name: 'biome', cmd: 'npx @biomejs/biome --version' },
|
|
20
|
+
{ name: 'prettier', cmd: 'npx prettier --version' },
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
function detectLinter(cwd: string, cacheFile: string): string | null {
|
|
24
|
+
const cachePath = join(cwd, cacheFile);
|
|
25
|
+
if (existsSync(cachePath)) {
|
|
26
|
+
try {
|
|
27
|
+
const cached = readFileSync(cachePath, 'utf-8').trim();
|
|
28
|
+
if (cached) return cached;
|
|
29
|
+
} catch { /* ignore */ }
|
|
30
|
+
}
|
|
31
|
+
for (const { name, cmd } of LINTER_DETECT_COMMANDS) {
|
|
32
|
+
try {
|
|
33
|
+
execSync(cmd, { cwd, timeout: 5000, windowsHide: true, stdio: 'pipe' });
|
|
34
|
+
try { writeFileSync(cachePath, name, 'utf-8'); } catch { /* ignore */ }
|
|
35
|
+
return name;
|
|
36
|
+
} catch { /* not found */ }
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function runLinter(linter: string, filePath: string, cwd: string): string | null {
|
|
42
|
+
try {
|
|
43
|
+
let cmd: string;
|
|
44
|
+
switch (linter) {
|
|
45
|
+
case 'eslint': cmd = `npx eslint "${filePath}" --format compact`; break;
|
|
46
|
+
case 'biome': cmd = `npx @biomejs/biome check "${filePath}"`; break;
|
|
47
|
+
case 'prettier': cmd = `npx prettier --check "${filePath}"`; break;
|
|
48
|
+
default: return null;
|
|
49
|
+
}
|
|
50
|
+
execSync(cmd, { cwd, timeout: 15000, windowsHide: true, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
|
|
51
|
+
return null;
|
|
52
|
+
} catch (e: any) {
|
|
53
|
+
const output = e.stdout?.toString() || e.stderr?.toString() || '';
|
|
54
|
+
return output ? output.slice(0, 1000) : null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Module-level linter cache
|
|
59
|
+
let cachedLinter: string | null = null;
|
|
60
|
+
|
|
61
|
+
export default function createLintOnWrite(): AgentPlugin {
|
|
62
|
+
return {
|
|
63
|
+
name: 'lint-on-write',
|
|
64
|
+
version: '1.0.0',
|
|
65
|
+
description: 'Auto-run linter after write_file/edit_file',
|
|
66
|
+
onActivate(ctx: PluginContext) {
|
|
67
|
+
ctx.logger.info('lint-on-write: active (linter detected on first file write)');
|
|
68
|
+
},
|
|
69
|
+
on(_event: string, _handler: any) { /* via PluginManager.on() */ },
|
|
70
|
+
onDeactivate() { cachedLinter = null; },
|
|
71
|
+
getPromptSection() {
|
|
72
|
+
return '## Lint-on-Write Plugin\nAfter writing/editing .ts/.tsx/.js/.jsx files, lint errors (if any) are automatically appended to the tool result.';
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Обработчик tool:after — вызывается через PluginManager.on().
|
|
79
|
+
* Экспортируется для регистрации в loop.ts.
|
|
80
|
+
*/
|
|
81
|
+
export function handleToolAfter(
|
|
82
|
+
toolName: string,
|
|
83
|
+
args: Record<string, unknown>,
|
|
84
|
+
_result: { stdout: string; stderr: string; exitCode: number },
|
|
85
|
+
cwd: string,
|
|
86
|
+
cacheFile: string,
|
|
87
|
+
): string | null {
|
|
88
|
+
if (toolName !== 'write_file' && toolName !== 'edit_file') return null;
|
|
89
|
+
const filePath = String(args.path ?? '');
|
|
90
|
+
if (!filePath || !/\.(ts|tsx|js|jsx|mjs|cjs)$/.test(filePath)) return null;
|
|
91
|
+
|
|
92
|
+
const linter = cachedLinter ?? detectLinter(cwd, cacheFile);
|
|
93
|
+
if (!linter) return null;
|
|
94
|
+
cachedLinter = linter;
|
|
95
|
+
|
|
96
|
+
return runLinter(linter, filePath, cwd);
|
|
97
97
|
}
|
|
@@ -22,12 +22,12 @@ function sendNotification(title, body) {
|
|
|
22
22
|
// Write temp .ps1 file to avoid $ escaping issues in shell
|
|
23
23
|
const safeTitle = title.replace(/'/g, "''");
|
|
24
24
|
const safeBody = body.replace(/'/g, "''");
|
|
25
|
-
const psScript = `Add-Type -AssemblyName System.Windows.Forms
|
|
26
|
-
$n = New-Object System.Windows.Forms.NotifyIcon
|
|
27
|
-
$n.Icon = [System.Drawing.SystemIcons]::Information
|
|
28
|
-
$n.Visible = $true
|
|
29
|
-
$n.ShowBalloonTip(5000, '${safeTitle}', '${safeBody}', [System.Windows.Forms.ToolTipIcon]::Info)
|
|
30
|
-
Start-Sleep -Seconds 2
|
|
25
|
+
const psScript = `Add-Type -AssemblyName System.Windows.Forms
|
|
26
|
+
$n = New-Object System.Windows.Forms.NotifyIcon
|
|
27
|
+
$n.Icon = [System.Drawing.SystemIcons]::Information
|
|
28
|
+
$n.Visible = $true
|
|
29
|
+
$n.ShowBalloonTip(5000, '${safeTitle}', '${safeBody}', [System.Windows.Forms.ToolTipIcon]::Info)
|
|
30
|
+
Start-Sleep -Seconds 2
|
|
31
31
|
$n.Dispose()`;
|
|
32
32
|
const tmpFile = join(tmpdir(), `mma-notify-${Date.now()}.ps1`);
|
|
33
33
|
writeFileSync(tmpFile, psScript, 'utf-8');
|