micro-models-agent 0.2.63 → 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.
Files changed (82) hide show
  1. package/README.md +354 -354
  2. package/dist/agent/loop.d.ts.map +1 -1
  3. package/dist/agent/loop.js +119 -3
  4. package/dist/agent/loop.js.map +1 -1
  5. package/dist/agent/tool-executor.d.ts +2 -10
  6. package/dist/agent/tool-executor.d.ts.map +1 -1
  7. package/dist/agent/tool-executor.js +92 -1
  8. package/dist/agent/tool-executor.js.map +1 -1
  9. package/dist/async-map.d.ts +6 -0
  10. package/dist/async-map.d.ts.map +1 -0
  11. package/dist/async-map.js +16 -0
  12. package/dist/async-map.js.map +1 -0
  13. package/dist/blog-api/types/index.d.ts +2 -0
  14. package/dist/blog-api/types/index.d.ts.map +1 -0
  15. package/dist/blog-api/types/index.js +2 -0
  16. package/dist/blog-api/types/index.js.map +1 -0
  17. package/dist/cli/config.js +1 -1
  18. package/dist/cli/config.js.map +1 -1
  19. package/dist/config/config.d.ts +10 -0
  20. package/dist/config/config.d.ts.map +1 -1
  21. package/dist/config/config.js +29 -2
  22. package/dist/config/config.js.map +1 -1
  23. package/dist/config/types.d.ts +16 -1
  24. package/dist/config/types.d.ts.map +1 -1
  25. package/dist/examples.d.ts +22 -0
  26. package/dist/examples.d.ts.map +1 -0
  27. package/dist/examples.js +45 -0
  28. package/dist/examples.js.map +1 -0
  29. package/dist/fibonacci.d.ts +19 -0
  30. package/dist/fibonacci.d.ts.map +1 -0
  31. package/dist/fibonacci.js +61 -0
  32. package/dist/fibonacci.js.map +1 -0
  33. package/dist/plugins/builtin/lint-on-write/index.ts +96 -96
  34. package/dist/plugins/builtin/notify/index.js +6 -6
  35. package/dist/plugins/builtin/notify/index.ts +104 -104
  36. package/dist/repl.d.ts +5 -0
  37. package/dist/repl.d.ts.map +1 -0
  38. package/dist/repl.js +472 -0
  39. package/dist/repl.js.map +1 -0
  40. package/dist/skills/builtin/agent-test/SKILL.md +68 -68
  41. package/dist/skills/builtin/grill-me/SKILL.md +46 -46
  42. package/dist/sort.d.ts +8 -0
  43. package/dist/sort.d.ts.map +1 -0
  44. package/dist/sort.js +36 -0
  45. package/dist/sort.js.map +1 -0
  46. package/dist/stack.d.ts +9 -0
  47. package/dist/stack.d.ts.map +1 -0
  48. package/dist/stack.js +22 -0
  49. package/dist/stack.js.map +1 -0
  50. package/dist/test-run.d.ts +2 -0
  51. package/dist/test-run.d.ts.map +1 -0
  52. package/dist/test-run.js +13 -0
  53. package/dist/test-run.js.map +1 -0
  54. package/dist/tools/subagent.d.ts +16 -1
  55. package/dist/tools/subagent.d.ts.map +1 -1
  56. package/dist/tools/subagent.js +84 -9
  57. package/dist/tools/subagent.js.map +1 -1
  58. package/dist/ui/components/diff-view.d.ts +8 -0
  59. package/dist/ui/components/diff-view.d.ts.map +1 -0
  60. package/dist/ui/components/diff-view.js +25 -0
  61. package/dist/ui/components/diff-view.js.map +1 -0
  62. package/dist/ui/double-press.d.ts +9 -0
  63. package/dist/ui/double-press.d.ts.map +1 -0
  64. package/dist/ui/double-press.js +18 -0
  65. package/dist/ui/double-press.js.map +1 -0
  66. package/dist/ui/opentui-renderer.d.ts +53 -0
  67. package/dist/ui/opentui-renderer.d.ts.map +1 -0
  68. package/dist/ui/opentui-renderer.js +463 -0
  69. package/dist/ui/opentui-renderer.js.map +1 -0
  70. package/dist/utils/memoize.d.ts +14 -0
  71. package/dist/utils/memoize.d.ts.map +1 -0
  72. package/dist/utils/memoize.js +51 -0
  73. package/dist/utils/memoize.js.map +1 -0
  74. package/dist/utils/types.d.ts +6 -0
  75. package/dist/utils/types.d.ts.map +1 -0
  76. package/dist/utils/types.js +2 -0
  77. package/dist/utils/types.js.map +1 -0
  78. package/dist/utils.d.ts +22 -0
  79. package/dist/utils.d.ts.map +1 -0
  80. package/dist/utils.js +81 -0
  81. package/dist/utils.js.map +1 -0
  82. package/package.json +2 -2
@@ -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;AAqF5C;;;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;;;;;;;;CAQjB,CAAC;AAEF,kDAAkD;AAClD,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,YAAY,CAYpE"}
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"}
@@ -51,11 +51,17 @@ const DEFAULT_CONFIG = {
51
51
  retries: 1,
52
52
  retryWithoutThinking: true,
53
53
  fallbackToReasoning: true,
54
- maxTokensReasoning: 16384,
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: 16384,
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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"}
@@ -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: 16384) */
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;CACjC;AAED,gFAAgF;AAChF,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAEhD,qCAAqC;AACrC,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACjD"}
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"}
@@ -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');