micro-models-agent 0.2.63 → 0.2.65

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 (114) hide show
  1. package/README.md +401 -354
  2. package/dist/agent/loop.d.ts.map +1 -1
  3. package/dist/agent/loop.js +254 -14
  4. package/dist/agent/loop.js.map +1 -1
  5. package/dist/agent/system-prompt.d.ts +16 -16
  6. package/dist/agent/system-prompt.d.ts.map +1 -1
  7. package/dist/agent/system-prompt.js +104 -67
  8. package/dist/agent/system-prompt.js.map +1 -1
  9. package/dist/agent/tool-executor.d.ts +2 -10
  10. package/dist/agent/tool-executor.d.ts.map +1 -1
  11. package/dist/agent/tool-executor.js +92 -1
  12. package/dist/agent/tool-executor.js.map +1 -1
  13. package/dist/async-map.d.ts +6 -0
  14. package/dist/async-map.d.ts.map +1 -0
  15. package/dist/async-map.js +16 -0
  16. package/dist/async-map.js.map +1 -0
  17. package/dist/blog-api/types/index.d.ts +2 -0
  18. package/dist/blog-api/types/index.d.ts.map +1 -0
  19. package/dist/blog-api/types/index.js +2 -0
  20. package/dist/blog-api/types/index.js.map +1 -0
  21. package/dist/cli/config.js +1 -1
  22. package/dist/cli/config.js.map +1 -1
  23. package/dist/cli.js +2 -2
  24. package/dist/cli.js.map +1 -1
  25. package/dist/config/config.d.ts +10 -0
  26. package/dist/config/config.d.ts.map +1 -1
  27. package/dist/config/config.js +29 -2
  28. package/dist/config/config.js.map +1 -1
  29. package/dist/config/types.d.ts +16 -1
  30. package/dist/config/types.d.ts.map +1 -1
  31. package/dist/examples.d.ts +22 -0
  32. package/dist/examples.d.ts.map +1 -0
  33. package/dist/examples.js +45 -0
  34. package/dist/examples.js.map +1 -0
  35. package/dist/fibonacci.d.ts +19 -0
  36. package/dist/fibonacci.d.ts.map +1 -0
  37. package/dist/fibonacci.js +61 -0
  38. package/dist/fibonacci.js.map +1 -0
  39. package/dist/llm/lmstudio-native.d.ts +10 -0
  40. package/dist/llm/lmstudio-native.d.ts.map +1 -0
  41. package/dist/llm/lmstudio-native.js +179 -0
  42. package/dist/llm/lmstudio-native.js.map +1 -0
  43. package/dist/llm/openai-compat.js +1 -1
  44. package/dist/plugins/builtin/lint-on-write/index.ts +96 -96
  45. package/dist/plugins/builtin/notify/index.js +6 -6
  46. package/dist/plugins/builtin/notify/index.ts +104 -104
  47. package/dist/repl.d.ts +5 -0
  48. package/dist/repl.d.ts.map +1 -0
  49. package/dist/repl.js +472 -0
  50. package/dist/repl.js.map +1 -0
  51. package/dist/skills/builtin/agent-test/SKILL.md +68 -68
  52. package/dist/skills/builtin/grill-me/SKILL.md +46 -46
  53. package/dist/sort.d.ts +8 -0
  54. package/dist/sort.d.ts.map +1 -0
  55. package/dist/sort.js +36 -0
  56. package/dist/sort.js.map +1 -0
  57. package/dist/stack.d.ts +9 -0
  58. package/dist/stack.d.ts.map +1 -0
  59. package/dist/stack.js +22 -0
  60. package/dist/stack.js.map +1 -0
  61. package/dist/test-run.d.ts +2 -0
  62. package/dist/test-run.d.ts.map +1 -0
  63. package/dist/test-run.js +13 -0
  64. package/dist/test-run.js.map +1 -0
  65. package/dist/tools/bash.d.ts.map +1 -1
  66. package/dist/tools/bash.js +19 -0
  67. package/dist/tools/bash.js.map +1 -1
  68. package/dist/tools/fs/write-file.d.ts.map +1 -1
  69. package/dist/tools/fs/write-file.js +13 -2
  70. package/dist/tools/fs/write-file.js.map +1 -1
  71. package/dist/tools/native/plan.d.ts +1 -1
  72. package/dist/tools/native/plan.d.ts.map +1 -1
  73. package/dist/tools/native/plan.js +85 -16
  74. package/dist/tools/native/plan.js.map +1 -1
  75. package/dist/tools/native/scaffold.d.ts +5 -0
  76. package/dist/tools/native/scaffold.d.ts.map +1 -0
  77. package/dist/tools/native/scaffold.js +246 -0
  78. package/dist/tools/native/scaffold.js.map +1 -0
  79. package/dist/tools/plan.d.ts +9 -0
  80. package/dist/tools/plan.d.ts.map +1 -1
  81. package/dist/tools/plan.js +27 -2
  82. package/dist/tools/plan.js.map +1 -1
  83. package/dist/tools/registry.d.ts.map +1 -1
  84. package/dist/tools/registry.js +3 -0
  85. package/dist/tools/registry.js.map +1 -1
  86. package/dist/tools/subagent.d.ts +16 -1
  87. package/dist/tools/subagent.d.ts.map +1 -1
  88. package/dist/tools/subagent.js +99 -10
  89. package/dist/tools/subagent.js.map +1 -1
  90. package/dist/ui/components/diff-view.d.ts +8 -0
  91. package/dist/ui/components/diff-view.d.ts.map +1 -0
  92. package/dist/ui/components/diff-view.js +25 -0
  93. package/dist/ui/components/diff-view.js.map +1 -0
  94. package/dist/ui/double-press.d.ts +9 -0
  95. package/dist/ui/double-press.d.ts.map +1 -0
  96. package/dist/ui/double-press.js +18 -0
  97. package/dist/ui/double-press.js.map +1 -0
  98. package/dist/ui/opentui-renderer.d.ts +53 -0
  99. package/dist/ui/opentui-renderer.d.ts.map +1 -0
  100. package/dist/ui/opentui-renderer.js +463 -0
  101. package/dist/ui/opentui-renderer.js.map +1 -0
  102. package/dist/utils/memoize.d.ts +14 -0
  103. package/dist/utils/memoize.d.ts.map +1 -0
  104. package/dist/utils/memoize.js +51 -0
  105. package/dist/utils/memoize.js.map +1 -0
  106. package/dist/utils/types.d.ts +6 -0
  107. package/dist/utils/types.d.ts.map +1 -0
  108. package/dist/utils/types.js +2 -0
  109. package/dist/utils/types.js.map +1 -0
  110. package/dist/utils.d.ts +22 -0
  111. package/dist/utils.d.ts.map +1 -0
  112. package/dist/utils.js +81 -0
  113. package/dist/utils.js.map +1 -0
  114. package/package.json +2 -2
@@ -7,24 +7,24 @@ import { getOrBuildProjectMap } from '../indexer/cache.js';
7
7
  import { loadAgentsMd, listInstalledSkills, formatSkillsBlock } from '../skills/loader.js';
8
8
  import { logInfo, logDebug } from '../logger.js';
9
9
  /**
10
- * Построение system prompt для LLM-агента.
10
+ * Build system prompt for the LLM agent.
11
11
  *
12
- * System prompt собирается из нескольких блоков:
13
- * - Основные инструкции поведения агента
14
- * - Информация о проекте (package.json, зависимости)
15
- * - Технологический стек проекта
16
- * - Установленные скилы
17
- * - Профиль пользователя (наблюдения агента)
18
- * - Память агента (долгосрочные знания)
19
- * - Правила безопасного поведения
12
+ * System prompt is assembled from multiple blocks:
13
+ * - Core agent behavior instructions
14
+ * - Project info (package.json, dependencies)
15
+ * - Project tech stack
16
+ * - Installed skills
17
+ * - User profile (agent observations)
18
+ * - Agent memory (long-term knowledge)
19
+ * - Safe behavior rules
20
20
  *
21
- * System prompt кэшируется: при неизменном контексте
22
- * повторно не пересобирается (инвалидация по hash).
21
+ * System prompt is cached: when context is unchanged,
22
+ * it is not rebuilt (invalidation by hash).
23
23
  *
24
24
  * @module agent/system-prompt
25
25
  */
26
- // ─── Формат инструментов ───────────────────────────────
27
- // Блок system prompt, описывающий формат вызова инструментов
26
+ // ─── Tool format ──────────────────────────────────────
27
+ // System prompt block describing the tool calling format
28
28
  const TOOL_FORMAT = `CRITICAL: Use filesystem tools for file operations — they are more reliable than bash.
29
29
 
30
30
  To call a tool, output EXACTLY this format (on its own line):
@@ -71,8 +71,10 @@ Search literal dot: {"name":"grep_search","arguments":{"pattern":"config\\.json"
71
71
  Directory tree: {"name":"tree","arguments":{"depth":2}}
72
72
 
73
73
  ## Plan / Todo / Question / Approve (native tools):
74
- {"name":"plan","arguments":{"name":"Todo App","steps":["Step 1","Step 2"]}}
75
- {"name":"plan","arguments":{"TaskName":"Todo App","Steps":"1. Init\n2. Create\n3. Test"}}
74
+ {"name":"plan","arguments":{"action":"create","name":"Todo App","steps":["Step 1","Step 2"]}}
75
+ {"name":"plan","arguments":{"action":"done","step":1}}
76
+ {"name":"plan","arguments":{"action":"show"}}
77
+ {"name":"plan","arguments":{"action":"clear"}}
76
78
  {"name":"todo","arguments":{"action":"add","text":"Implement feature X"}}
77
79
  {"name":"todo","arguments":{"action":"list"}}
78
80
  {"name":"question","arguments":{"question":"What color?","choices":["Red","Blue"]}}
@@ -81,29 +83,37 @@ Directory tree: {"name":"tree","arguments":{"depth":2}}
81
83
  {"name":"user_profile","arguments":{"action":"add_note","section":"Notes","note":"text"}}
82
84
 
83
85
  ## Subagent (isolate a single task in fresh context):
84
- {"name":"subagent","arguments":{"task":"Создай файл db.ts с better-sqlite3","existingFiles":"package.json"}}
86
+ {"name":"subagent","arguments":{"task":"Create file db.ts with better-sqlite3","existingFiles":"package.json"}}
85
87
 
86
88
  ## Web tools (search & fetch):
87
89
  {"name":"web_search","arguments":{"query":"weather in Minsk","maxResults":5}}
88
90
  {"name":"web_fetch","arguments":{"url":"https://example.com"}}
89
91
 
90
- ## Theme tool (управление темами):
92
+ ## Theme tool (theme management):
91
93
  {"name":"theme","arguments":{"action":"list"}}
92
94
  {"name":"theme","arguments":{"action":"switch","name":"dark"}}
93
95
  {"name":"theme","arguments":{"action":"show"}}
94
96
  {"name":"theme","arguments":{"action":"install","name":"monokai","url":"https://example.com/monokai.json"}}
95
97
  {"name":"theme","arguments":{"action":"remove","name":"monokai"}}
96
98
 
97
- Темы в ~/.mma/themes/. Встроенные: light, dark. Можно установить из URL.
98
- Если пользователь хочет сменить тему — предложи подходящую из списка и переключи.
99
+ Themes are in ~/.mma/themes/. Built-in: light, dark. Can install from URL.
100
+ If the user wants to switch themes — suggest a matching one from the list and switch.
101
+
102
+ ## Scaffold (create complete project structure programmatically):
103
+ {"name":"scaffold","arguments":{"template":"vite-react-ts","dir":"todo-app"}}
104
+ {"name":"scaffold","arguments":{"template":"vite-vanilla-ts","dir":"my-app"}}
105
+ {"name":"scaffold","arguments":{"template":"node-express-ts","dir":"api-server"}}
106
+
107
+ Templates: vite-react-ts (React+TypeScript), vite-vanilla-ts (vanilla TS), node-express-ts (Express+TS)
108
+ Use scaffold INSTEAD of creating project files manually. It creates all config files correctly.
99
109
 
100
110
  ## Bash (for non-file operations — npm, git, etc):
101
111
  {"name":"bash","arguments":{"cmd":"npm test"}}
102
112
  {"name":"bash","arguments":{"cmd":"git status"}}
103
113
 
104
114
  NEVER output tool calls in any other format. ALWAYS use <tool_call> tags.`;
105
- // ─── Поток диалога ──────────────────────────────────────
106
- // Блок system prompt, объясняющий агенту как работает цикл диалога
115
+ // ─── Conversation flow ──────────────────────────────────
116
+ // System prompt block explaining how the dialog cycle works
107
117
  const CONVERSATION_FLOW = `## How This Works (IMPORTANT — read this carefully)
108
118
 
109
119
  You are in a loop. Each turn works like this:
@@ -140,7 +150,7 @@ File src/utils.ts created successfully. It exports a hello() function that retur
140
150
  NEVER stop after a tool call. ALWAYS continue with either another tool call or a text reply.`;
141
151
  const RULES_COMMON = `Rules:
142
152
  1. Use filesystem tools for file operations (read_file, write_file, edit_file, list_dir, glob_search, grep_search, tree). Use bash ONLY for non-file commands (npm, git, etc).
143
- 2. Always respond in the user's language (Русский или English). Do NOT mix languages in one response — pick ONE and stick with it.
153
+ 2. Always respond in the user's language (Russian or English). Do NOT mix languages in one response — pick ONE and stick with it.
144
154
  3. CRITICAL: After every tool call, CHECK the result (exit code + output).
145
155
  If exit code != 0, DO NOT claim success — tell the user about the error.
146
156
  Verify files were created before saying "done".
@@ -158,32 +168,51 @@ const RULES_COMMON = `Rules:
158
168
  7. SKILLS AND PLANNING: For complex tasks (3+ steps):
159
169
  a. AUTOMATICALLY load relevant skills by mentioning them: "@nodejs-expert @typescript-expert"
160
170
  b. Do NOT ask the user — just load and start working
161
- c. IMMEDIATELY create a plan with SPECIFIC FILE NAMES: plan create TodoApp create-project install-deps write-AppTsx write-TodoListTsx connect-components
162
- d. Mark current step as in_progress BEFORE writing the file
163
- e. Mark step as done AFTER syntax check passes and file is complete
171
+ c. Create a plan with SPECIFIC STEP NAMES: plan({action:"create", name:"TodoApp", steps:["Create package.json and install deps", "Create src/App.tsx", "Create src/main.tsx", "Verify with tsc --noEmit"]})
172
+ d. For each step: use subagent to create the file, then mark step done: plan({action:"done", step:1})
173
+ e. Do NOT use write_file directly when a plan is active — delegate to subagents
164
174
  f. ONE FILE PER STEP — never combine multiple files in one step
165
175
  8. FOR SIMPLE TASKS (1-2 steps): Just do it, no plan needed. Use common sense.
166
- 9. NEVER JUST TALK — ALWAYS ACT. Do NOT say "напиши навыки в следующем сообщении" or similar waiting phrases. If skills are loaded, START WORKING IMMEDIATELY.
176
+ 9. NEVER JUST TALK — ALWAYS ACT. Do NOT say "write skills in the next message" or similar waiting phrases. If skills are loaded, START WORKING IMMEDIATELY.
167
177
  10. When skills are already loaded in your context, you MUST use filesystem tools (write_file, create_dir, etc.) for file operations. Do NOT ask the user to load skills again.
168
178
  11. USER PROFILE: The ## User Profile block contains observations about the user (name, stack, style). Use it silently — never mention or comment on it to the user. Do NOT proactively ask for the user's name or personal details. Never call user_profile, list_dir, tree, or any other tool just for exploration — only use tools when there is actual work to do.
169
179
  12. NEVER call list_dir or tree just to "see what's in the project". Use glob_search or grep_search instead — they give more useful results. Only use list_dir when a user explicitly asks to see a directory listing.
170
180
  13. OFF-TOPIC QUESTIONS: If the user asks something unrelated to coding (jokes, space, cooking, etc.), answer briefly and warmly — 1-2 sentences. Do NOT refuse or say "I'm a coding assistant". Just answer, then naturally offer to return to work.
171
181
  14. ONE FILE AT A TIME: When creating multiple files: a) Write the FIRST file completely, b) Wait for syntax check result, c) If error → fix it before continuing, d) Only then write the NEXT file. NEVER write multiple files in one response — small models lose track.
172
- 15. SUBAGENTS — delegate file creation for multi-file projects:
173
- Use subagent WHEN:
174
- - Creating 3+ new files in a project (one subagent call per file)
175
- - Any file that depends on another file you haven't created yet
176
- - Running verification (tsc --noEmit) after all files created
182
+ 15. SUBAGENTS — strict delegation for multi-file projects:
183
+ ABSOLUTE RULE: 1 FILE = 1 SUBAGENT CALL. No exceptions.
184
+ - Every file in the plan gets its OWN subagent call.
185
+ - NEVER combine multiple files in one subagent task.
186
+ - If plan has 5 files → 5 separate subagent calls.
187
+ - Task description MUST include the FULL path: "Create ONLY todo-app/package.json" not just "Create package.json".
188
+ CRITICAL RULES FOR SUBAGENT:
189
+ - Subagent MUST create ONLY what is in the task description. Do NOT create extra files.
190
+ - If task says "Create todo-app/package.json" — create ONLY todo-app/package.json. Nothing else.
191
+ - NEVER let subagent "help" by creating additional files beyond the task scope.
192
+ - After subagent completes, parent checks what was created and verifies it matches the plan.
193
+ Example: subagent({task:"Create ONLY todo-app/src/db.ts with sqlite connection", existingFiles:"todo-app/package.json"})
177
194
  Do NOT use subagent for:
178
195
  - Editing existing files (use edit_file directly)
179
- - Single file creation (write_file is fine)
180
196
  - Bash commands like npm install, git, etc. (use bash tool)
181
- Example: subagent("Create src/db.ts: sqlite connection + schema")
182
197
  Each subagent gets fresh context. Parent only tracks results (summary). After all subagents — verify with tsc --noEmit.
183
- 16. CHECK BEFORE INSTALLING: Прочитай файл зависимостей проекта. Если пакет уже указан — не устанавливай.`;
198
+ 16. CHECK BEFORE INSTALLING: Read the project dependency file. If the package is already listed — do not install it.
199
+ 17. FILE EXTENSIONS MATTER: .tsx = TypeScript + JSX, .jsx = plain JavaScript. NEVER write TypeScript imports (import X from './Y.tsx') into a .jsx file. If the project uses TypeScript — all files must be .tsx/.ts. If JavaScript — all files must be .jsx/.js. Check existing files to determine which stack the project uses.
200
+ 18. VITE PROJECTS: When creating a Vite + React + TypeScript project, ALWAYS create these files in order:
201
+ a. package.json (with react, react-dom, vite, @vitejs/plugin-react, typescript)
202
+ b. vite.config.ts (import react plugin, defineConfig)
203
+ c. tsconfig.json (jsx: "react-jsx", strict: true)
204
+ d. index.html (<!DOCTYPE html>, <div id="root">, <script type="module" src="/src/main.tsx">)
205
+ e. src/main.tsx (import React, ReactDOM, App, index.css; ReactDOM.createRoot)
206
+ f. src/App.tsx (the actual component)
207
+ NEVER skip index.html or vite.config.ts — Vite won't work without them.
208
+ 19. SUBAGENT CONTEXT: When calling subagent, ALWAYS pass:
209
+ - existingFiles: files already created in this session (prevents duplicates)
210
+ - The task description should say "Create ONLY file X" — not "Create file X and related files"
211
+ Example: subagent({task:"Create ONLY src/api.ts with Express CRUD", existingFiles:"src/db.ts,src/types.ts"})
212
+ The subagent will see the project context and should NOT create files beyond what's in the task.`;
184
213
  const RULES_FAST = `Rules:
185
214
  1. Use filesystem tools for file operations (read_file, write_file, edit_file, list_dir, glob_search, grep_search, tree). Use bash ONLY for non-file commands (npm, git, etc).
186
- 2. Always respond in the user's language (Русский или English). Do NOT mix languages in one response — pick ONE and stick with it.
215
+ 2. Always respond in the user's language (Russian or English). Do NOT mix languages in one response — pick ONE and stick with it.
187
216
  3. CRITICAL: After every tool call, CHECK the result (exit code + output).
188
217
  If exit code != 0, DO NOT claim success — tell the user about the error.
189
218
  Verify files were created before saying "done".
@@ -199,20 +228,28 @@ const RULES_FAST = `Rules:
199
228
  Only use read_file with offset/limit when you need to SEE the full file context.
200
229
  Do NOT call read_file multiple times on the same file sequentially — use grep first.
201
230
  7. Execute tasks directly. Simple tasks (1-2 steps): just do it without commentary. Complex tasks: break into steps and execute ONE FILE AT A TIME. Write first file → check syntax → fix if needed → then next file.
202
- 8. NEVER JUST TALK — ALWAYS ACT. Do NOT say "напиши" or similar waiting phrases. START WORKING IMMEDIATELY.
231
+ 8. NEVER JUST TALK — ALWAYS ACT. Do NOT say "write" or similar waiting phrases. START WORKING IMMEDIATELY.
203
232
  9. USER PROFILE: The ## User Profile block contains observations about the user (name, stack, style). Use it silently — never mention or comment on it to the user. Do NOT proactively ask for the user's name or personal details. Never call tools just for exploration.
204
233
  10. NEVER call list_dir or tree just to "see what's in the project". Use glob_search or grep_search instead. Only use list_dir when explicitly asked.
205
234
  11. OFF-TOPIC QUESTIONS: Answer briefly and warmly (1-2 sentences). Do NOT refuse. Then offer to return to work.
206
235
  12. ONE FILE AT A TIME: When creating multiple files, complete each file fully before starting the next. NEVER write multiple files in one response.
207
- 13. SUBAGENTS: For 3+ files, use subagent for each file. One call per file. Do NOT use subagent for bash, edits, or single files. Example: subagent("Create X.ts. Existing: Y.ts"). Each gets fresh context.
208
- 14. CHECK BEFORE INSTALLING: Прочитай файл зависимостей проекта перед установкой пакета.
209
- Если пакет уже указан — не устанавливай.`;
236
+ 13. SUBAGENTS: For 3+ files, use subagent for each file. One call per file. CRITICAL: Subagent MUST create ONLY what is in the task. If task says "Create X.ts" — create ONLY X.ts. Do NOT create extra files. Do NOT use subagent for bash, edits, or single files.
237
+ 13. SUBAGENTS: ABSOLUTE RULE: 1 FILE = 1 SUBAGENT CALL. Every file gets its own subagent. NEVER combine multiple files in one task. If plan has 5 files → 5 subagent calls. Task MUST include FULL path (e.g. "Create ONLY todo-app/package.json"). Do NOT use subagent for bash or edits.
238
+ 14. CHECK BEFORE INSTALLING: Read the project dependency file before installing a package.
239
+ If the package is already listed — do not install it.
240
+ 15. FILE EXTENSIONS MATTER: .tsx = TypeScript + JSX, .jsx = plain JavaScript. NEVER write TypeScript imports into .jsx files. Check existing files to determine the stack.
241
+ 16. VITE PROJECTS: When creating a Vite project, create these files via SEPARATE subagent calls: package.json, vite.config.ts, tsconfig.json, index.html, src/main.tsx, src/App.tsx. NEVER skip index.html or vite.config.ts.
242
+ 17. SUBAGENT CONTEXT: When calling subagent, pass existingFiles and use "Create ONLY" in task. Example: subagent({task:"Create ONLY X.ts with debounce function", existingFiles:"Y.ts"})`;
210
243
  const POWERSHELL_EXAMPLES = `Examples (PowerShell):
211
244
  <tool_call>{"name":"bash","arguments":{"cmd":"dir"}}</tool_call>
212
245
  <tool_call>{"name":"bash","arguments":{"cmd":"Get-Content src\\\\index.ts"}}</tool_call>
213
246
  <tool_call>{"name":"bash","arguments":{"cmd":"npm test"}}</tool_call>
214
247
  <tool_call>{"name":"bash","arguments":{"cmd":"Set-Content -Path file.md -Value 'Hello World'"}}</tool_call>`;
215
248
  const POWERSHELL_RULES = `PowerShell specifics:
249
+ - NEVER use && in commands — PowerShell doesn't support it. Use ; instead, or make separate bash calls.
250
+ WRONG: cd todo-app && npm install
251
+ RIGHT: npm install (run from todo-app directory)
252
+ RIGHT: Set-Location todo-app; npm install
216
253
  - Create/write files: Set-Content -Path file.md -Value "content"
217
254
  - Append to file: Add-Content -Path file.md -Value "line"
218
255
  - Read files: Get-Content file.md
@@ -235,35 +272,35 @@ const UNIX_RULES = `Unix specifics:
235
272
  - List directory: ls -la
236
273
  - Paths use forward slashes: src/index.ts
237
274
  - Check file exists: test -f file.md`;
238
- // ─── Кэш system prompt ─────────────────────────────────
239
- // Кэширует собранный prompt по ключу (cwd + mode + skills)
275
+ // ─── System prompt cache ────────────────────────────────
276
+ // Caches the assembled prompt by key (cwd + mode + skills)
240
277
  const systemPromptCache = new Map();
241
- /** Инвалидация кэша system prompt (вызывается при изменении конфига) */
278
+ /** Invalidate system prompt cache (called when config changes) */
242
279
  export function invalidateSystemPromptCache() {
243
280
  systemPromptCache.clear();
244
281
  }
245
282
  /**
246
- * Собирает system prompt из всех блоков.
283
+ * Assembles system prompt from all blocks.
247
284
  *
248
- * Алгоритм:
249
- * 1. Проверка кэша по ключу (cwd + mode + имена скилов)
250
- * 2. Сборка заголовка (имя агента, описание)
251
- * 3. Платформо-зависимые блоки (PowerShell/Unix примеры + правила)
252
- * 4. Системная информация (дата, ОС, путь, проект)
253
- * 5. Память агента + профиль пользователя
254
- * 6. Карта проекта (indexer)
255
- * 7. Инструкции из AGENTS.md
256
- * 8. Хинт о доступных скилах
257
- * 9. Блок текущего режима (fast/pro/base)
258
- * 10. Контент загруженных скилов
285
+ * Algorithm:
286
+ * 1. Check cache by key (cwd + mode + skill names)
287
+ * 2. Build header (agent name, description)
288
+ * 3. Platform-dependent blocks (PowerShell/Unix examples + rules)
289
+ * 4. System info (date, OS, path, project)
290
+ * 5. Agent memory + user profile
291
+ * 6. Project map (indexer)
292
+ * 7. Instructions from AGENTS.md
293
+ * 8. Available skills hint
294
+ * 9. Current mode block (fast/pro/base)
295
+ * 10. Loaded skill content
259
296
  *
260
- * @param extraSkills - дополнительные скилы из промпта пользователя
261
- * @param mode - режим работы (fast/pro/base)
262
- * @returns Собранный system prompt строкой
297
+ * @param extraSkills - additional skills from user prompt
298
+ * @param mode - working mode (fast/pro/base)
299
+ * @returns Assembled system prompt string
263
300
  */
264
301
  export function buildSystemPrompt(extraSkills, mode, pluginSections) {
265
302
  const start = performance.now();
266
- // Ключ кэша: текущий каталог + режим + имена скилов (sorted)
303
+ // Cache key: current directory + mode + skill names (sorted)
267
304
  const key = `${process.cwd()}:${mode || 'base'}:${extraSkills?.map(s => s.name).sort().join(',') || ''}:${pluginSections?.length || 0}`;
268
305
  const cached = systemPromptCache.get(key);
269
306
  if (cached) {
@@ -279,8 +316,8 @@ export function buildSystemPrompt(extraSkills, mode, pluginSections) {
279
316
  }
280
317
  catch { /* ignore */ }
281
318
  const now = new Date();
282
- const dateStr = now.toLocaleDateString('ru-RU', { year: 'numeric', month: 'long', day: 'numeric', weekday: 'long' });
283
- const timeStr = now.toLocaleTimeString('ru-RU');
319
+ const dateStr = now.toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric', weekday: 'long' });
320
+ const timeStr = now.toLocaleTimeString('en-US');
284
321
  let projectName = 'unknown';
285
322
  const pkgPath = resolve(process.cwd(), 'package.json');
286
323
  if (existsSync(pkgPath)) {
@@ -306,10 +343,10 @@ You help with software engineering tasks in the project directory.`;
306
343
  `Project: ${projectName}`,
307
344
  '',
308
345
  ].join('\n');
309
- // ─── Память и профиль пользователя ───────────────────
346
+ // ─── Memory and user profile ──────────────────────────
310
347
  const memory = loadAllMemoryDetailed();
311
348
  const userProfile = loadProfileSummary();
312
- // ─── Карта проекта (из indexer) ──────────────────────
349
+ // ─── Project map (from indexer) ───────────────────────
313
350
  let projectMap = '';
314
351
  try {
315
352
  const { formatted, fromCache } = getOrBuildProjectMap(process.cwd());
@@ -318,21 +355,21 @@ You help with software engineering tasks in the project directory.`;
318
355
  }
319
356
  }
320
357
  catch { /* ignore */ }
321
- // ─── Инструкции проекта (AGENTS.md) ──────────────────
358
+ // ─── Project instructions (AGENTS.md) ─────────────────
322
359
  const agentsMd = loadAgentsMd(process.cwd());
323
360
  const agentsBlock = agentsMd ? `\n## Project Instructions (AGENTS.md)\n${agentsMd}` : '';
324
- // ─── Хинт о доступных скилах ─────────────────────────
361
+ // ─── Available skills hint ────────────────────────────
325
362
  const allSkills = listInstalledSkills();
326
363
  const skillsHint = allSkills.length > 0
327
- ? `\n## Available Skills (${allSkills.length})\nSkills contain ready-made workflows, best practices, and step-by-step guides.\nFor complex tasks (3+ steps): mention @skill-name in your response — skills will be auto-loaded into context.\nDo NOT put @skill-name inside tool_call. Just mention them naturally in your text.\nWorkflow:\n 1. User asks: "Создай REST API"\n 2. You: "I'll use @typescript-expert @nodejs-expert for this task." (skills auto-load on next turn)\n 3. You create plan BASED ON skill guidance: plan create REST API ...\n 4. You execute plan step by step\n\nInstalled skills: ${allSkills.map(s => '@' + s).join(' ')}`
364
+ ? `\n## Available Skills (${allSkills.length})\nSkills contain ready-made workflows, best practices, and step-by-step guides.\nFor complex tasks (3+ steps): mention @skill-name in your response — skills will be auto-loaded into context.\nDo NOT put @skill-name inside tool_call. Just mention them naturally in your text.\nWorkflow:\n 1. User asks: "Create a REST API"\n 2. You: "I'll use @typescript-expert @nodejs-expert for this task." (skills auto-load on next turn)\n 3. You create plan BASED ON skill guidance: plan create REST API ...\n 4. You execute plan step by step\n\nInstalled skills: ${allSkills.map(s => '@' + s).join(' ')}`
328
365
  : '';
329
- // ─── Блок режима работы ──────────────────────────────
366
+ // ─── Mode block ──────────────────────────────────────
330
367
  const modeBlock = mode === 'fast'
331
368
  ? `\n## Mode: Fast\n\u26a1 Fast mode \u2014 execute tasks directly without planning or loading skills. Skills are not available in this mode. Proceed immediately.`
332
369
  : mode === 'pro'
333
370
  ? `\n## Mode: Pro\n\ud83d\udd0d Pro mode — @grill-me skill is pre-loaded. Before starting any task, you MUST first read and run the grill-me skill instructions to clarify requirements. Use it to refine the task before execution. Minimum context window: 64000.`
334
371
  : '';
335
- // ─── Сборка финального prompt ────────────────────────
372
+ // ─── Final prompt assembly ───────────────────────────
336
373
  const base = mode === 'fast'
337
374
  ? [header, platformBlock, sysInfo, memory, userProfile, projectMap, agentsBlock, modeBlock].filter(Boolean).join('\n')
338
375
  : [header, platformBlock, sysInfo, memory, userProfile, projectMap, agentsBlock, skillsHint, modeBlock].filter(Boolean).join('\n');
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"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"}
@@ -6,19 +6,11 @@ export interface ExecutorResult {
6
6
  /** Время выполнения в секундах */
7
7
  elapsed: number;
8
8
  }
9
- /**
10
- * Диспетчер инструментов.
11
- *
12
- * Пайплайн для каждого tool call:
13
- * 1. pre-hooks (runPreToolUseHooks) — могут заблокировать выполнение
14
- * 2. handler.execute() — выполнение инструмента
15
- * 3. post-hooks (runPostToolUseHooks)
16
- * 4. Уведомление indexer (для модифицирующих инструментов)
17
- * 5. Обрезка вывода (truncateOutput)
18
- */
19
9
  export declare class ToolExecutor {
20
10
  private handlers;
21
11
  private pluginManager?;
12
+ /** Повторяющиеся ошибки: hash → { count, lastStderr } */
13
+ private recentErrors;
22
14
  /** Установка менеджера плагинов */
23
15
  setPluginManager(pm: PluginManager): void;
24
16
  /** Регистрация обработчика инструмента */
@@ -1 +1 @@
1
- {"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/agent/tool-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAI9F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAwD3D,wCAAwC;AACxC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,aAAa,CAAC,CAAgB;IAEtC,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI;IAIzC,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAIpC,0CAA0C;IAC1C,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI;IAM1C,yCAAyC;IACzC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,qCAAqC;IACrC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI1C,sDAAsD;IACtD,cAAc;IAId;;;;;;;OAOG;IACG,OAAO,CACX,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC;CA4F3B"}
1
+ {"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/agent/tool-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAI9F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAkF3D,wCAAwC;AACxC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AA2BD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,yDAAyD;IACzD,OAAO,CAAC,YAAY,CAAiE;IAErF,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI;IAIzC,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAIpC,0CAA0C;IAC1C,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI;IAM1C,yCAAyC;IACzC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,qCAAqC;IACrC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI1C,sDAAsD;IACtD,cAAc;IAId;;;;;;;OAOG;IACG,OAAO,CACX,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC;CA2I3B"}
@@ -1,6 +1,7 @@
1
1
  import { runPreToolUseHooks, runPostToolUseHooks } from '../tools/hooks.js';
2
2
  import { notifyFileChanged } from '../indexer/cache.js';
3
3
  import { invalidateSystemPromptCache } from './system-prompt.js';
4
+ import { dirname } from 'node:path';
4
5
  /**
5
6
  * Диспетчер инструментов с пайплайном: pre-hooks → execute → post-hooks → truncate.
6
7
  *
@@ -40,6 +41,30 @@ const TRUNCATION_LIMITS = {
40
41
  };
41
42
  const DEFAULT_LIMIT = 800;
42
43
  const ERROR_LIMIT = 3000;
44
+ /** Паттерны ошибок "path not found" */
45
+ const PATH_NOT_FOUND_PATTERNS = [
46
+ /cannot find path/i,
47
+ /no such file/i,
48
+ /does not exist/i,
49
+ /not found/i,
50
+ /enoent/i,
51
+ ];
52
+ /** Проверяет, является ли ошибка ошибкой "path not found" */
53
+ function isPathNotFoundError(stderr) {
54
+ return PATH_NOT_FOUND_PATTERNS.some(p => p.test(stderr));
55
+ }
56
+ /** Извлекает путь из ошибки */
57
+ function extractPathFromError(stderr) {
58
+ // Windows: "Cannot find path 'E:\foo\bar' because it does not exist."
59
+ const winMatch = stderr.match(/(?:cannot find path|no such file|does not exist)['"]\s*['"]?([A-Z]:\\[^'"]+)['"]?/i);
60
+ if (winMatch)
61
+ return winMatch[1];
62
+ // Unix: "No such file or directory '/foo/bar'"
63
+ const unixMatch = stderr.match(/['"]?(\/[^\s'"]+)['"]?\s*(?:because|no such)/i);
64
+ if (unixMatch)
65
+ return unixMatch[1];
66
+ return null;
67
+ }
43
68
  /** Обрезка вывода инструмента для экономии токенов */
44
69
  function truncateOutput(toolName, output, exitCode) {
45
70
  if (exitCode !== 0) {
@@ -60,9 +85,25 @@ function truncateOutput(toolName, output, exitCode) {
60
85
  * 4. Уведомление indexer (для модифицирующих инструментов)
61
86
  * 5. Обрезка вывода (truncateOutput)
62
87
  */
88
+ /**
89
+ * Хэш ошибки для детекции повторяющихся паттернов.
90
+ * Нормализует stderr, убирая вариативные части (пути, timestamps).
91
+ */
92
+ function hashError(toolName, stderr) {
93
+ // Убираем пути файлов, numbers, timestamps для нормализации
94
+ const normalized = stderr
95
+ .replace(/[A-Z]:\\[^\s"']+/gi, '<PATH>')
96
+ .replace(/\/[^\s"']+/g, '<PATH>')
97
+ .replace(/\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}/g, '<TS>')
98
+ .replace(/\b\d{10,13}\b/g, '<ID>')
99
+ .trim();
100
+ return `${toolName}::${normalized}`;
101
+ }
63
102
  export class ToolExecutor {
64
103
  handlers = new Map();
65
104
  pluginManager;
105
+ /** Повторяющиеся ошибки: hash → { count, lastStderr } */
106
+ recentErrors = new Map();
66
107
  /** Установка менеджера плагинов */
67
108
  setPluginManager(pm) {
68
109
  this.pluginManager = pm;
@@ -170,7 +211,57 @@ export class ToolExecutor {
170
211
  }
171
212
  // 5. Truncate output
172
213
  const truncatedStdout = truncateOutput(call.name, result.stdout, result.exitCode);
173
- const truncatedStderr = truncateOutput(call.name, result.stderr, result.exitCode);
214
+ let truncatedStderr = truncateOutput(call.name, result.stderr, result.exitCode);
215
+ // 5.5. Path-not-found enrichment — показываем содержимое родительской директории
216
+ if (result.exitCode !== 0 && isPathNotFoundError(result.stderr)) {
217
+ const errPath = extractPathFromError(result.stderr) ?? call.arguments?.path;
218
+ if (errPath) {
219
+ const parentDir = dirname(String(errPath));
220
+ const listDirHandler = this.handlers.get('list_dir');
221
+ if (listDirHandler) {
222
+ try {
223
+ const dirResult = await listDirHandler.execute({ path: parentDir }, context);
224
+ if (dirResult.exitCode === 0 && dirResult.stdout.trim()) {
225
+ truncatedStderr += `\n\n[ENRICHMENT] Contents of ${parentDir}:\n${dirResult.stdout}`;
226
+ }
227
+ else {
228
+ truncatedStderr += `\n\n[ENRICHMENT] Parent directory ${parentDir} is empty or inaccessible.`;
229
+ }
230
+ }
231
+ catch { /* enrichment is best-effort */ }
232
+ }
233
+ }
234
+ }
235
+ // 6. Error pattern detection — обогащение при повторяющихся ошибках
236
+ if (result.exitCode !== 0 && truncatedStderr) {
237
+ const errHash = hashError(call.name, truncatedStderr);
238
+ const prev = this.recentErrors.get(errHash);
239
+ if (prev) {
240
+ prev.count++;
241
+ if (prev.count === 2) {
242
+ truncatedStderr += `\n[HINT] This error occurred ${prev.count} times. The input is likely wrong — double-check arguments before retrying.`;
243
+ }
244
+ else if (prev.count >= 3) {
245
+ truncatedStderr += `\n[WARNING] Same error ${prev.count} times in a row. STOP retrying this exact call. Try a different approach or ask for help.`;
246
+ }
247
+ }
248
+ else {
249
+ this.recentErrors.set(errHash, { count: 1, lastStderr: truncatedStderr });
250
+ }
251
+ // Ограничиваем размер карты
252
+ if (this.recentErrors.size > 50) {
253
+ const first = this.recentErrors.keys().next().value;
254
+ this.recentErrors.delete(first);
255
+ }
256
+ }
257
+ else if (result.exitCode === 0) {
258
+ // При успехе — сбрасываем счётчик для этого инструмента
259
+ for (const [key] of this.recentErrors) {
260
+ if (key.startsWith(call.name + '::')) {
261
+ this.recentErrors.delete(key);
262
+ }
263
+ }
264
+ }
174
265
  const elapsed = (performance.now() - start) / 1000;
175
266
  return {
176
267
  result: {
@@ -1 +1 @@
1
- {"version":3,"file":"tool-executor.js","sourceRoot":"","sources":["../../src/agent/tool-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-executor.js","sourceRoot":"","sources":["../../src/agent/tool-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Применяет асинхронную функцию ко всем элементам массива параллельно.
3
+ * Все промпты выполняются одновременно, возвращает Promise, решающий по первому.
4
+ */
5
+ export declare function asyncMap<T, R>(array: readonly T[], fn: (item: T) => Promise<R>): Promise<R[]>;
6
+ //# sourceMappingURL=async-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-map.d.ts","sourceRoot":"","sources":["../src/async-map.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAAE,CAAC,EACjC,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,CAAC,EAAE,CAAC,CAad"}
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+ /**
3
+ * Применяет асинхронную функцию ко всем элементам массива параллельно.
4
+ * Все промпты выполняются одновременно, возвращает Promise, решающий по первому.
5
+ */
6
+ export async function asyncMap(array, fn) {
7
+ const results = new Array(array.length);
8
+ // Запускаем все промпты параллельно
9
+ await Promise.all(array.map((item, index) => {
10
+ return fn(item).then((result) => {
11
+ results[index] = result;
12
+ });
13
+ }));
14
+ return results;
15
+ }
16
+ //# sourceMappingURL=async-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-map.js","sourceRoot":"","sources":["../src/async-map.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,KAAmB,EACnB,EAA2B;IAE3B,MAAM,OAAO,GAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAE5C,oCAAoC;IACpC,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACxB,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAC9B,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAA;QACzB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CACH,CAAA;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blog-api/types/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/blog-api/types/index.ts"],"names":[],"mappings":""}
@@ -27,7 +27,7 @@ export function registerConfigCommands(program) {
27
27
  const theme = getTheme();
28
28
  config.providers = {};
29
29
  config.active = { provider: 'lmstudio', model: 'qwen/qwen3.5-9b' };
30
- config.agent = { maxSteps: 100, autoCompact: true, compactThreshold: 0.70, toolTimeout: 120, maxOutputLength: 2000, showThinking: false, skillTokenBudget: 4000, maxSkillsBase: 2, maxSkillsPro: 0 };
30
+ config.agent = { maxSteps: 100, autoCompact: true, compactThreshold: 0.70, toolTimeout: 120, maxOutputLength: 2000, showThinking: false, skillTokenBudget: 4000, maxSkillsBase: 2, maxSkillsPro: 0, specialist: { enabled: true, triggerThreshold: 2, maxSteps: 10, minErrorLength: 15 } };
31
31
  saveConfig(config);
32
32
  console.log(theme.successMsg('Configuration reset to defaults'));
33
33
  });