micro-models-agent 0.2.49 → 0.2.51

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 (151) hide show
  1. package/dist/agent/loop.d.ts.map +1 -1
  2. package/dist/agent/loop.js +87 -303
  3. package/dist/agent/loop.js.map +1 -1
  4. package/dist/agent/modes/applier.d.ts +43 -0
  5. package/dist/agent/modes/applier.d.ts.map +1 -0
  6. package/dist/agent/modes/applier.js +30 -0
  7. package/dist/agent/modes/applier.js.map +1 -0
  8. package/dist/agent/modes/registry.d.ts +35 -0
  9. package/dist/agent/modes/registry.d.ts.map +1 -0
  10. package/dist/agent/modes/registry.js +169 -0
  11. package/dist/agent/modes/registry.js.map +1 -0
  12. package/dist/agent/modes/types.d.ts +54 -0
  13. package/dist/agent/modes/types.d.ts.map +1 -0
  14. package/dist/agent/modes/types.js +13 -0
  15. package/dist/agent/modes/types.js.map +1 -0
  16. package/dist/agent/react-loop.d.ts +61 -0
  17. package/dist/agent/react-loop.d.ts.map +1 -0
  18. package/dist/agent/react-loop.js +119 -0
  19. package/dist/agent/react-loop.js.map +1 -0
  20. package/dist/agent/tool-executor.d.ts +44 -0
  21. package/dist/agent/tool-executor.d.ts.map +1 -0
  22. package/dist/agent/tool-executor.js +186 -0
  23. package/dist/agent/tool-executor.js.map +1 -0
  24. package/dist/cli.d.ts.map +1 -1
  25. package/dist/cli.js +48 -1
  26. package/dist/cli.js.map +1 -1
  27. package/dist/config/types.d.ts +5 -2
  28. package/dist/config/types.d.ts.map +1 -1
  29. package/dist/plugins/adapters/hooks-adapter.d.ts +12 -0
  30. package/dist/plugins/adapters/hooks-adapter.d.ts.map +1 -0
  31. package/dist/plugins/adapters/hooks-adapter.js +23 -0
  32. package/dist/plugins/adapters/hooks-adapter.js.map +1 -0
  33. package/dist/plugins/loader.d.ts +13 -0
  34. package/dist/plugins/loader.d.ts.map +1 -0
  35. package/dist/plugins/loader.js +145 -0
  36. package/dist/plugins/loader.js.map +1 -0
  37. package/dist/plugins/manager.d.ts +52 -0
  38. package/dist/plugins/manager.d.ts.map +1 -0
  39. package/dist/plugins/manager.js +183 -0
  40. package/dist/plugins/manager.js.map +1 -0
  41. package/dist/plugins/types.d.ts +73 -0
  42. package/dist/plugins/types.d.ts.map +1 -0
  43. package/dist/plugins/types.js +8 -0
  44. package/dist/plugins/types.js.map +1 -0
  45. package/dist/repl/commands.d.ts +1 -0
  46. package/dist/repl/commands.d.ts.map +1 -1
  47. package/dist/repl/commands.js.map +1 -1
  48. package/dist/repl/index.d.ts.map +1 -1
  49. package/dist/repl/index.js +3 -2
  50. package/dist/repl/index.js.map +1 -1
  51. package/dist/session/store.d.ts +4 -2
  52. package/dist/session/store.d.ts.map +1 -1
  53. package/dist/session/store.js +4 -2
  54. package/dist/session/store.js.map +1 -1
  55. package/dist/tools/bash.d.ts +4 -0
  56. package/dist/tools/bash.d.ts.map +1 -1
  57. package/dist/tools/bash.js +24 -0
  58. package/dist/tools/bash.js.map +1 -1
  59. package/dist/tools/fs/copy-file.d.ts +2 -0
  60. package/dist/tools/fs/copy-file.d.ts.map +1 -1
  61. package/dist/tools/fs/copy-file.js +7 -0
  62. package/dist/tools/fs/copy-file.js.map +1 -1
  63. package/dist/tools/fs/create-dir.d.ts +2 -0
  64. package/dist/tools/fs/create-dir.d.ts.map +1 -1
  65. package/dist/tools/fs/create-dir.js +7 -0
  66. package/dist/tools/fs/create-dir.js.map +1 -1
  67. package/dist/tools/fs/delete-file.d.ts +2 -0
  68. package/dist/tools/fs/delete-file.d.ts.map +1 -1
  69. package/dist/tools/fs/delete-file.js +7 -0
  70. package/dist/tools/fs/delete-file.js.map +1 -1
  71. package/dist/tools/fs/edit-file.d.ts +2 -0
  72. package/dist/tools/fs/edit-file.d.ts.map +1 -1
  73. package/dist/tools/fs/edit-file.js +7 -0
  74. package/dist/tools/fs/edit-file.js.map +1 -1
  75. package/dist/tools/fs/file-info.d.ts +2 -0
  76. package/dist/tools/fs/file-info.d.ts.map +1 -1
  77. package/dist/tools/fs/file-info.js +7 -0
  78. package/dist/tools/fs/file-info.js.map +1 -1
  79. package/dist/tools/fs/glob-search.d.ts +2 -0
  80. package/dist/tools/fs/glob-search.d.ts.map +1 -1
  81. package/dist/tools/fs/glob-search.js +7 -0
  82. package/dist/tools/fs/glob-search.js.map +1 -1
  83. package/dist/tools/fs/grep-search.d.ts +2 -0
  84. package/dist/tools/fs/grep-search.d.ts.map +1 -1
  85. package/dist/tools/fs/grep-search.js +7 -0
  86. package/dist/tools/fs/grep-search.js.map +1 -1
  87. package/dist/tools/fs/list-dir.d.ts +2 -0
  88. package/dist/tools/fs/list-dir.d.ts.map +1 -1
  89. package/dist/tools/fs/list-dir.js +7 -0
  90. package/dist/tools/fs/list-dir.js.map +1 -1
  91. package/dist/tools/fs/move-file.d.ts +2 -0
  92. package/dist/tools/fs/move-file.d.ts.map +1 -1
  93. package/dist/tools/fs/move-file.js +7 -0
  94. package/dist/tools/fs/move-file.js.map +1 -1
  95. package/dist/tools/fs/read-file.d.ts +2 -0
  96. package/dist/tools/fs/read-file.d.ts.map +1 -1
  97. package/dist/tools/fs/read-file.js +7 -0
  98. package/dist/tools/fs/read-file.js.map +1 -1
  99. package/dist/tools/fs/tree.d.ts +2 -0
  100. package/dist/tools/fs/tree.d.ts.map +1 -1
  101. package/dist/tools/fs/tree.js +7 -0
  102. package/dist/tools/fs/tree.js.map +1 -1
  103. package/dist/tools/fs/write-file.d.ts +2 -0
  104. package/dist/tools/fs/write-file.d.ts.map +1 -1
  105. package/dist/tools/fs/write-file.js +7 -0
  106. package/dist/tools/fs/write-file.js.map +1 -1
  107. package/dist/tools/native/approve.d.ts +11 -0
  108. package/dist/tools/native/approve.d.ts.map +1 -0
  109. package/dist/tools/native/approve.js +39 -0
  110. package/dist/tools/native/approve.js.map +1 -0
  111. package/dist/tools/native/plan.d.ts +10 -0
  112. package/dist/tools/native/plan.d.ts.map +1 -0
  113. package/dist/tools/native/plan.js +46 -0
  114. package/dist/tools/native/plan.js.map +1 -0
  115. package/dist/tools/native/question.d.ts +11 -0
  116. package/dist/tools/native/question.d.ts.map +1 -0
  117. package/dist/tools/native/question.js +41 -0
  118. package/dist/tools/native/question.js.map +1 -0
  119. package/dist/tools/native/theme.d.ts +10 -0
  120. package/dist/tools/native/theme.d.ts.map +1 -0
  121. package/dist/tools/native/theme.js +106 -0
  122. package/dist/tools/native/theme.js.map +1 -0
  123. package/dist/tools/native/todo.d.ts +10 -0
  124. package/dist/tools/native/todo.d.ts.map +1 -0
  125. package/dist/tools/native/todo.js +58 -0
  126. package/dist/tools/native/todo.js.map +1 -0
  127. package/dist/tools/native/user-profile.d.ts +10 -0
  128. package/dist/tools/native/user-profile.d.ts.map +1 -0
  129. package/dist/tools/native/user-profile.js +58 -0
  130. package/dist/tools/native/user-profile.js.map +1 -0
  131. package/dist/tools/registry.d.ts +11 -10
  132. package/dist/tools/registry.d.ts.map +1 -1
  133. package/dist/tools/registry.js +40 -147
  134. package/dist/tools/registry.js.map +1 -1
  135. package/dist/tools/subagent.d.ts +2 -1
  136. package/dist/tools/subagent.d.ts.map +1 -1
  137. package/dist/tools/subagent.js +7 -4
  138. package/dist/tools/subagent.js.map +1 -1
  139. package/dist/tools/types.d.ts +59 -0
  140. package/dist/tools/types.d.ts.map +1 -0
  141. package/dist/tools/types.js +2 -0
  142. package/dist/tools/types.js.map +1 -0
  143. package/dist/tools/web-fetch.d.ts +2 -0
  144. package/dist/tools/web-fetch.d.ts.map +1 -1
  145. package/dist/tools/web-fetch.js +7 -0
  146. package/dist/tools/web-fetch.js.map +1 -1
  147. package/dist/tools/web-search.d.ts +2 -0
  148. package/dist/tools/web-search.d.ts.map +1 -1
  149. package/dist/tools/web-search.js +7 -0
  150. package/dist/tools/web-search.js.map +1 -1
  151. package/package.json +1 -1
@@ -0,0 +1,106 @@
1
+ import { listThemes, switchTheme } from '../../styling/index.js';
2
+ import { loadThemeConfig, installTheme, removeTheme } from '../../styling/loader.js';
3
+ import { loadConfig, saveConfig } from '../../config/config.js';
4
+ /**
5
+ * Нативный инструмент theme — управление темами оформления.
6
+ *
7
+ * @module tools/native/theme
8
+ */
9
+ export const themeDefinition = {
10
+ type: 'function',
11
+ function: {
12
+ name: 'theme',
13
+ description: 'Manage UI themes. Actions: list, show, switch, install, remove.',
14
+ parameters: {
15
+ type: 'object',
16
+ properties: {
17
+ action: { type: 'string', description: 'list, show, switch, install, remove' },
18
+ name: { type: 'string', description: 'Theme name (for switch/install/remove)' },
19
+ url: { type: 'string', description: 'Theme URL (for install)' },
20
+ },
21
+ required: ['action'],
22
+ },
23
+ },
24
+ };
25
+ export const themeHandler = {
26
+ name: 'theme',
27
+ definition: themeDefinition,
28
+ async execute(args, ctx) {
29
+ const action = String(args.action || 'list');
30
+ const name = String(args.name || '');
31
+ const url = String(args.url || '');
32
+ if (!ctx.quiet) {
33
+ ctx.renderer?.writeBracketTag('theme', action);
34
+ }
35
+ let output = '';
36
+ let exitCode = 0;
37
+ switch (action) {
38
+ case 'list': {
39
+ const allThemes = listThemes();
40
+ const current = loadThemeConfig().name;
41
+ output = `Available themes (${allThemes.length}):\n`;
42
+ for (const t of allThemes) {
43
+ output += ` ${t}${t === current ? ' (active)' : ''}\n`;
44
+ }
45
+ break;
46
+ }
47
+ case 'show': {
48
+ const config = loadThemeConfig();
49
+ output = `Theme: ${config.name}\nColors: ${JSON.stringify(config.colors, null, 2)}\nIcons: ${JSON.stringify(config.icons, null, 2)}`;
50
+ break;
51
+ }
52
+ case 'switch': {
53
+ const allThemes = listThemes();
54
+ if (!allThemes.includes(name)) {
55
+ output = `Unknown theme "${name}". Available: ${allThemes.join(', ')}`;
56
+ exitCode = 1;
57
+ break;
58
+ }
59
+ const appConfig = loadConfig();
60
+ appConfig.theme = name;
61
+ saveConfig(appConfig);
62
+ switchTheme(name);
63
+ try {
64
+ const { resetInkTheme } = await import('../../ui/ink/theme.js');
65
+ resetInkTheme();
66
+ }
67
+ catch { /* not in ink mode */ }
68
+ output = `Theme switched to "${name}"`;
69
+ break;
70
+ }
71
+ case 'install': {
72
+ if (!name || !url) {
73
+ output = 'Usage: theme install <name> <url>';
74
+ exitCode = 1;
75
+ break;
76
+ }
77
+ try {
78
+ const resp = await fetch(url);
79
+ const text = await resp.text();
80
+ JSON.parse(text);
81
+ installTheme(name, text);
82
+ output = `Theme "${name}" installed from ${url}`;
83
+ }
84
+ catch (e) {
85
+ output = `Failed to install theme: ${e.message}`;
86
+ exitCode = 1;
87
+ }
88
+ break;
89
+ }
90
+ case 'remove': {
91
+ if (!removeTheme(name)) {
92
+ output = `Theme "${name}" not found`;
93
+ exitCode = 1;
94
+ break;
95
+ }
96
+ output = `Theme "${name}" removed`;
97
+ break;
98
+ }
99
+ default:
100
+ output = 'Unknown theme action. Use: list, show, switch, install, remove';
101
+ exitCode = 1;
102
+ }
103
+ return { stdout: output, stderr: '', exitCode, truncated: false };
104
+ },
105
+ };
106
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/tools/native/theme.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;;;GAIG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAmB;IAC7C,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,iEAAiE;QAC9E,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAAqC,EAAE;gBAC9E,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBAC/E,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;aAChE;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAgB;IACvC,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,eAAe;IAC3B,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;QACrB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAEnC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC,IAAI,CAAC;gBACvC,MAAM,GAAG,qBAAqB,SAAS,CAAC,MAAM,MAAM,CAAC;gBACrD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;oBAC1B,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;gBAC1D,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;gBACjC,MAAM,GAAG,UAAU,MAAM,CAAC,IAAI,aAAa,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACrI,MAAM;YACR,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;gBAC/B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9B,MAAM,GAAG,kBAAkB,IAAI,iBAAiB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvE,QAAQ,GAAG,CAAC,CAAC;oBACb,MAAM;gBACR,CAAC;gBACD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;gBAC/B,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;gBACvB,UAAU,CAAC,SAAS,CAAC,CAAC;gBACtB,WAAW,CAAC,IAAI,CAAC,CAAC;gBAClB,IAAI,CAAC;oBACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;oBAChE,aAAa,EAAE,CAAC;gBAClB,CAAC;gBAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC;gBACjC,MAAM,GAAG,sBAAsB,IAAI,GAAG,CAAC;gBACvC,MAAM;YACR,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,GAAG,mCAAmC,CAAC;oBAC7C,QAAQ,GAAG,CAAC,CAAC;oBACb,MAAM;gBACR,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACjB,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACzB,MAAM,GAAG,UAAU,IAAI,oBAAoB,GAAG,EAAE,CAAC;gBACnD,CAAC;gBAAC,OAAO,CAAM,EAAE,CAAC;oBAChB,MAAM,GAAG,4BAA4B,CAAC,CAAC,OAAO,EAAE,CAAC;oBACjD,QAAQ,GAAG,CAAC,CAAC;gBACf,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvB,MAAM,GAAG,UAAU,IAAI,aAAa,CAAC;oBACrC,QAAQ,GAAG,CAAC,CAAC;oBACb,MAAM;gBACR,CAAC;gBACD,MAAM,GAAG,UAAU,IAAI,WAAW,CAAC;gBACnC,MAAM;YACR,CAAC;YACD;gBACE,MAAM,GAAG,gEAAgE,CAAC;gBAC1E,QAAQ,GAAG,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACpE,CAAC;CACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ToolDefinition } from '../registry.js';
2
+ import type { ToolHandler } from '../types.js';
3
+ /**
4
+ * Нативный инструмент todo — управление списком задач.
5
+ *
6
+ * @module tools/native/todo
7
+ */
8
+ export declare const todoDefinition: ToolDefinition;
9
+ export declare const todoHandler: ToolHandler;
10
+ //# sourceMappingURL=todo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todo.d.ts","sourceRoot":"","sources":["../../../src/tools/native/todo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C;;;;GAIG;AAEH,eAAO,MAAM,cAAc,EAAE,cAc5B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,WA4BzB,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { addTodo, doneTodo, removeTodo, listTodos } from '../todo.js';
2
+ /**
3
+ * Нативный инструмент todo — управление списком задач.
4
+ *
5
+ * @module tools/native/todo
6
+ */
7
+ export const todoDefinition = {
8
+ type: 'function',
9
+ function: {
10
+ name: 'todo',
11
+ description: 'Manage a todo list. Actions: add, done, remove, list.',
12
+ parameters: {
13
+ type: 'object',
14
+ properties: {
15
+ action: { type: 'string', description: 'add, done, remove, list' },
16
+ text: { type: 'string', description: 'Todo text (for add/done/remove)' },
17
+ },
18
+ required: ['action'],
19
+ },
20
+ },
21
+ };
22
+ export const todoHandler = {
23
+ name: 'todo',
24
+ definition: todoDefinition,
25
+ async execute(args, ctx) {
26
+ const action = String(args.action || 'list');
27
+ const text = String(args.text || '');
28
+ if (!ctx.quiet) {
29
+ ctx.renderer?.writeBracketTag('todo', action);
30
+ }
31
+ let output = '';
32
+ let exitCode = 0;
33
+ switch (action) {
34
+ case 'add':
35
+ output = addTodo(text);
36
+ break;
37
+ case 'done':
38
+ output = doneTodo(text);
39
+ break;
40
+ case 'remove':
41
+ case 'rm':
42
+ output = removeTodo(text);
43
+ break;
44
+ case 'list':
45
+ case 'ls':
46
+ output = listTodos();
47
+ break;
48
+ default:
49
+ output = 'Unknown todo action. Use: add, done, remove, list';
50
+ exitCode = 1;
51
+ }
52
+ if (!ctx.quiet && exitCode === 0 && output) {
53
+ ctx.renderer?.writeLine(output);
54
+ }
55
+ return { stdout: output, stderr: '', exitCode, truncated: false };
56
+ },
57
+ };
58
+ //# sourceMappingURL=todo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todo.js","sourceRoot":"","sources":["../../../src/tools/native/todo.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;GAIG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,uDAAuD;QACpE,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;gBAClE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE;aACzE;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAgB;IACtC,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,cAAc;IAC1B,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;QACrB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAErC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,KAAK;gBAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAAC,MAAM;YAC1C,KAAK,MAAM;gBAAE,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAAC,MAAM;YAC5C,KAAK,QAAQ,CAAC;YAAC,KAAK,IAAI;gBAAE,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAAC,MAAM;YAC3D,KAAK,MAAM,CAAC;YAAC,KAAK,IAAI;gBAAE,MAAM,GAAG,SAAS,EAAE,CAAC;gBAAC,MAAM;YACpD;gBAAS,MAAM,GAAG,mDAAmD,CAAC;gBAAC,QAAQ,GAAG,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,QAAQ,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;YAC3C,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACpE,CAAC;CACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ToolDefinition } from '../registry.js';
2
+ import type { ToolHandler } from '../types.js';
3
+ /**
4
+ * Нативный инструмент user_profile — управление профилем пользователя.
5
+ *
6
+ * @module tools/native/user-profile
7
+ */
8
+ export declare const userProfileDefinition: ToolDefinition;
9
+ export declare const userProfileHandler: ToolHandler;
10
+ //# sourceMappingURL=user-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-profile.d.ts","sourceRoot":"","sources":["../../../src/tools/native/user-profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C;;;;GAIG;AAEH,eAAO,MAAM,qBAAqB,EAAE,cAenC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,WAsChC,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { loadProfile, appendNote } from '../../agent/user-profile.js';
2
+ /**
3
+ * Нативный инструмент user_profile — управление профилем пользователя.
4
+ *
5
+ * @module tools/native/user-profile
6
+ */
7
+ export const userProfileDefinition = {
8
+ type: 'function',
9
+ function: {
10
+ name: 'user_profile',
11
+ description: 'View or add notes to user profile. Actions: show, add_note.',
12
+ parameters: {
13
+ type: 'object',
14
+ properties: {
15
+ action: { type: 'string', description: 'show or add_note' },
16
+ note: { type: 'string', description: 'Note text (for add_note)' },
17
+ section: { type: 'string', description: 'Section name (for add_note, default: Notes)' },
18
+ },
19
+ required: ['action'],
20
+ },
21
+ },
22
+ };
23
+ export const userProfileHandler = {
24
+ name: 'user_profile',
25
+ definition: userProfileDefinition,
26
+ async execute(args, ctx) {
27
+ const action = String(args.action || 'show');
28
+ if (!ctx.quiet) {
29
+ ctx.renderer?.writeBracketTag('user_profile', action);
30
+ }
31
+ let output = '';
32
+ let exitCode = 0;
33
+ switch (action) {
34
+ case 'show': {
35
+ const content = loadProfile();
36
+ output = content || 'User profile is empty.';
37
+ break;
38
+ }
39
+ case 'add_note': {
40
+ const note = String(args.note || args.text || '');
41
+ const section = String(args.section || 'Notes');
42
+ if (!note) {
43
+ output = 'Usage: user_profile action=add_note section=Notes note=...';
44
+ exitCode = 1;
45
+ break;
46
+ }
47
+ appendNote(note, section);
48
+ output = `Note added to "${section}" section.`;
49
+ break;
50
+ }
51
+ default:
52
+ output = 'Unknown user_profile action. Use: show, add_note';
53
+ exitCode = 1;
54
+ }
55
+ return { stdout: output, stderr: '', exitCode, truncated: false };
56
+ },
57
+ };
58
+ //# sourceMappingURL=user-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-profile.js","sourceRoot":"","sources":["../../../src/tools/native/user-profile.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEtE;;;;GAIG;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAmB;IACnD,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,6DAA6D;QAC1E,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;gBAC3D,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;gBACjE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;aACxF;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAgB;IAC7C,IAAI,EAAE,cAAc;IACpB,UAAU,EAAE,qBAAqB;IACjC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;QACrB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;QAE7C,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;gBAC9B,MAAM,GAAG,OAAO,IAAI,wBAAwB,CAAC;gBAC7C,MAAM;YACR,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBAClD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;gBAChD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,MAAM,GAAG,4DAA4D,CAAC;oBACtE,QAAQ,GAAG,CAAC,CAAC;oBACb,MAAM;gBACR,CAAC;gBACD,UAAU,CAAC,IAAI,EAAE,OAAc,CAAC,CAAC;gBACjC,MAAM,GAAG,kBAAkB,OAAO,YAAY,CAAC;gBAC/C,MAAM;YACR,CAAC;YACD;gBACE,MAAM,GAAG,kDAAkD,CAAC;gBAC5D,QAAQ,GAAG,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACpE,CAAC;CACF,CAAC"}
@@ -1,5 +1,13 @@
1
1
  import type { ChatMessage } from '../llm/provider.js';
2
- import { type BashResult } from './bash.js';
2
+ import type { BashResult } from './bash.js';
3
+ /**
4
+ * Реестр всех инструментов агента.
5
+ *
6
+ * Хранит определения инструментов для LLM и валидирует имена.
7
+ * Исполнение вынесено в ToolExecutor (src/agent/tool-executor.ts).
8
+ *
9
+ * @module tools/registry
10
+ */
3
11
  export interface ToolDefinition {
4
12
  type: 'function';
5
13
  function: {
@@ -15,17 +23,10 @@ export interface ToolCall {
15
23
  }
16
24
  export type ToolResult = BashResult;
17
25
  /**
18
- * Реестр инструментов — центральная точка регистрации и исполнения.
19
- * Все инструменты регистрируются здесь и вызываются через execute().
26
+ * Реестр инструментов — хранит определения и валидирует имена.
27
+ * Исполнение — через ToolExecutor.
20
28
  */
21
29
  export declare class ToolRegistry {
22
- private cwd;
23
- constructor(cwd?: string);
24
- /**
25
- * Исполняет tool call: определяет тип инструмента и вызывает handler.
26
- * После успешной модификации файла уведомляет indexer и инвалидирует кэш.
27
- */
28
- execute(toolCall: ToolCall): Promise<ToolResult>;
29
30
  /** Возвращает определения всех доступных инструментов для system prompt */
30
31
  getDefinitions(): ToolDefinition[];
31
32
  isToolCall(message: ChatMessage): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAmDzD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC;AA4CpC;;;GAGG;AACH,qBAAa,YAAY;IACX,OAAO,CAAC,GAAG;gBAAH,GAAG,GAAE,MAAsB;IAE/C;;;OAGG;IACG,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IA+CtD,2EAA2E;IAC3E,cAAc,IAAI,cAAc,EAAE;IA+BlC,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO;IAIzC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGnC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAgBtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C;;;;;;;GAOG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC;AA0CpC;;;GAGG;AACH,qBAAa,YAAY;IACvB,2EAA2E;IAC3E,cAAc,IAAI,cAAc,EAAE;IAIlC,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO;IAIzC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGnC"}
@@ -1,69 +1,21 @@
1
- import { executeBash } from './bash.js';
2
- import { logToolCall } from '../logger.js';
3
- import { readFileDefinition, handleReadFile } from './fs/read-file.js';
4
- import { writeFileDefinition, handleWriteFile } from './fs/write-file.js';
5
- import { editFileDefinition, handleEditFile } from './fs/edit-file.js';
6
- import { listDirDefinition, handleListDir } from './fs/list-dir.js';
7
- import { createDirDefinition, handleCreateDir } from './fs/create-dir.js';
8
- import { deleteFileDefinition, handleDeleteFile } from './fs/delete-file.js';
9
- import { copyFileDefinition, handleCopyFile } from './fs/copy-file.js';
10
- import { moveFileDefinition, handleMoveFile } from './fs/move-file.js';
11
- import { fileInfoDefinition, handleFileInfo } from './fs/file-info.js';
12
- import { globSearchDefinition, handleGlobSearch } from './fs/glob-search.js';
13
- import { grepSearchDefinition, handleGrepSearch } from './fs/grep-search.js';
14
- import { treeDefinition, handleTree } from './fs/tree.js';
15
- import { notifyFileChanged } from '../indexer/cache.js';
16
- import { invalidateSystemPromptCache } from '../agent/system-prompt.js';
17
- import { webSearchDefinition, handleWebSearch } from './web-search.js';
18
- import { webFetchDefinition, handleWebFetch } from './web-fetch.js';
19
- /**
20
- * Реестр всех инструментов агента.
21
- *
22
- * Управляет:
23
- * - Файловыми инструментами (read, write, edit, list, search и т.д.)
24
- * - Bash-командами
25
- * - Веб-инструментами (search, fetch)
26
- * - Нативными инструментами (subagent)
27
- *
28
- * При записи файлов автоматически:
29
- * - Уведомляет indexer об изменениях (notifyFileChanged)
30
- * - Инвалидирует кэш system prompt
31
- *
32
- * @module tools/registry
33
- */
34
- // Инструменты, которые модифицируют файловую систему
35
- const MODIFYING_TOOLS = new Set(['write_file', 'edit_file', 'delete_file', 'copy_file', 'move_file']);
36
- /** Извлекает пути изменённых файлов из аргументов инструмента */
37
- function getChangedFilePaths(toolName, args) {
38
- const normalize = (p) => String(p ?? '').replace(/\\/g, '/');
39
- switch (toolName) {
40
- case 'write_file': return [normalize(args.path)];
41
- case 'edit_file': return [normalize(args.path)];
42
- case 'delete_file': return [normalize(args.path)];
43
- case 'copy_file': return [normalize(args.destination)];
44
- case 'move_file': return [normalize(args.source), normalize(args.destination)];
45
- default: return [];
46
- }
47
- }
48
- const FS_HANDLERS = new Map([
49
- ['read_file', { def: readFileDefinition, handler: handleReadFile }],
50
- ['write_file', { def: writeFileDefinition, handler: handleWriteFile }],
51
- ['edit_file', { def: editFileDefinition, handler: handleEditFile }],
52
- ['list_dir', { def: listDirDefinition, handler: handleListDir }],
53
- ['create_dir', { def: createDirDefinition, handler: handleCreateDir }],
54
- ['delete_file', { def: deleteFileDefinition, handler: handleDeleteFile }],
55
- ['copy_file', { def: copyFileDefinition, handler: handleCopyFile }],
56
- ['move_file', { def: moveFileDefinition, handler: handleMoveFile }],
57
- ['file_info', { def: fileInfoDefinition, handler: handleFileInfo }],
58
- ['glob_search', { def: globSearchDefinition, handler: handleGlobSearch }],
59
- ['grep_search', { def: grepSearchDefinition, handler: handleGrepSearch }],
60
- ['tree', { def: treeDefinition, handler: handleTree }],
61
- ]);
62
- const WEB_TOOLS = new Map([
63
- ['web_search', { def: webSearchDefinition, handler: handleWebSearch }],
64
- ['web_fetch', { def: webFetchDefinition, handler: handleWebFetch }],
65
- ]);
66
- const NATIVE_TOOL_DEFS = [
1
+ import { readFileDefinition } from './fs/read-file.js';
2
+ import { writeFileDefinition } from './fs/write-file.js';
3
+ import { editFileDefinition } from './fs/edit-file.js';
4
+ import { listDirDefinition } from './fs/list-dir.js';
5
+ import { createDirDefinition } from './fs/create-dir.js';
6
+ import { deleteFileDefinition } from './fs/delete-file.js';
7
+ import { copyFileDefinition } from './fs/copy-file.js';
8
+ import { moveFileDefinition } from './fs/move-file.js';
9
+ import { fileInfoDefinition } from './fs/file-info.js';
10
+ import { globSearchDefinition } from './fs/glob-search.js';
11
+ import { grepSearchDefinition } from './fs/grep-search.js';
12
+ import { treeDefinition } from './fs/tree.js';
13
+ import { bashDefinition } from './bash.js';
14
+ import { webSearchDefinition } from './web-search.js';
15
+ import { webFetchDefinition } from './web-fetch.js';
16
+ /** Все определения инструментов (для system prompt) */
17
+ const ALL_DEFINITIONS = [
18
+ // Native
67
19
  {
68
20
  type: 'function',
69
21
  function: {
@@ -79,93 +31,34 @@ const NATIVE_TOOL_DEFS = [
79
31
  },
80
32
  },
81
33
  },
34
+ // Bash
35
+ bashDefinition,
36
+ // FS
37
+ readFileDefinition,
38
+ writeFileDefinition,
39
+ editFileDefinition,
40
+ listDirDefinition,
41
+ createDirDefinition,
42
+ deleteFileDefinition,
43
+ copyFileDefinition,
44
+ moveFileDefinition,
45
+ fileInfoDefinition,
46
+ globSearchDefinition,
47
+ grepSearchDefinition,
48
+ treeDefinition,
49
+ // Web
50
+ webSearchDefinition,
51
+ webFetchDefinition,
82
52
  ];
83
- const VALID_TOOL_NAMES = new Set(['bash', 'subagent', ...FS_HANDLERS.keys(), ...WEB_TOOLS.keys()]);
53
+ const VALID_TOOL_NAMES = new Set(ALL_DEFINITIONS.map(d => d.function.name));
84
54
  /**
85
- * Реестр инструментов — центральная точка регистрации и исполнения.
86
- * Все инструменты регистрируются здесь и вызываются через execute().
55
+ * Реестр инструментов — хранит определения и валидирует имена.
56
+ * Исполнение — через ToolExecutor.
87
57
  */
88
58
  export class ToolRegistry {
89
- cwd;
90
- constructor(cwd = process.cwd()) {
91
- this.cwd = cwd;
92
- }
93
- /**
94
- * Исполняет tool call: определяет тип инструмента и вызывает handler.
95
- * После успешной модификации файла уведомляет indexer и инвалидирует кэш.
96
- */
97
- async execute(toolCall) {
98
- const start = performance.now();
99
- const preview = JSON.stringify(toolCall.arguments).slice(0, 120);
100
- const fsEntry = FS_HANDLERS.get(toolCall.name);
101
- if (fsEntry) {
102
- let result;
103
- try {
104
- result = fsEntry.handler(toolCall.arguments, this.cwd);
105
- }
106
- catch (e) {
107
- result = { stdout: '', stderr: `Tool error: ${e.message}`, exitCode: 1, truncated: false };
108
- }
109
- if (result.exitCode === 0 && MODIFYING_TOOLS.has(toolCall.name)) {
110
- const paths = getChangedFilePaths(toolCall.name, toolCall.arguments);
111
- for (const p of paths)
112
- notifyFileChanged(p);
113
- invalidateSystemPromptCache();
114
- }
115
- const elapsed = (performance.now() - start).toFixed(1);
116
- logToolCall(toolCall.name, preview, `${result.stdout.length} bytes, ${elapsed}s`);
117
- return result;
118
- }
119
- if (toolCall.name === 'bash') {
120
- const cmd = String(toolCall.arguments.cmd ?? '');
121
- const timeout = Number(toolCall.arguments.timeout ?? 120);
122
- const result = await executeBash(cmd, timeout);
123
- const elapsed = (performance.now() - start).toFixed(1);
124
- logToolCall(toolCall.name, preview, `exit:${result.exitCode} ${result.stdout.length} bytes, ${elapsed}s`);
125
- return result;
126
- }
127
- const webEntry = WEB_TOOLS.get(toolCall.name);
128
- if (webEntry) {
129
- try {
130
- const result = await webEntry.handler(toolCall.arguments);
131
- const elapsed = (performance.now() - start).toFixed(1);
132
- logToolCall(toolCall.name, preview, `${result.stdout.length} bytes, ${elapsed}s`);
133
- return result;
134
- }
135
- catch (e) {
136
- return { stdout: '', stderr: `Web tool error: ${e.message}`, exitCode: 1, truncated: false };
137
- }
138
- }
139
- logToolCall(toolCall.name, preview, 'unknown tool');
140
- return { stdout: '', stderr: `Unknown tool: ${toolCall.name}`, exitCode: 1, truncated: false };
141
- }
142
59
  /** Возвращает определения всех доступных инструментов для system prompt */
143
60
  getDefinitions() {
144
- const defs = [
145
- ...NATIVE_TOOL_DEFS,
146
- {
147
- type: 'function',
148
- function: {
149
- name: 'bash',
150
- description: `Execute a shell command. Use for non-file operations (npm, git, etc).`,
151
- parameters: {
152
- type: 'object',
153
- properties: {
154
- cmd: { type: 'string', description: 'The command to execute' },
155
- timeout: { type: 'number', description: 'Seconds before timeout (default 120, max 600)' },
156
- },
157
- required: ['cmd'],
158
- },
159
- },
160
- },
161
- ];
162
- for (const entry of FS_HANDLERS.values()) {
163
- defs.push(entry.def);
164
- }
165
- for (const entry of WEB_TOOLS.values()) {
166
- defs.push(entry.def);
167
- }
168
- return defs;
61
+ return ALL_DEFINITIONS;
169
62
  }
170
63
  isToolCall(message) {
171
64
  return message.role === 'assistant' && message.content === '';
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAmB,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEpE;;;;;;;;;;;;;;GAcG;AAEH,qDAAqD;AACrD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AAEtG,iEAAiE;AACjE,SAAS,mBAAmB,CAAC,QAAgB,EAAE,IAA6B;IAC1E,MAAM,SAAS,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtE,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,YAAY,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,KAAK,WAAW,CAAC,CAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,KAAK,aAAa,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClD,KAAK,WAAW,CAAC,CAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACxD,KAAK,WAAW,CAAC,CAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAqBD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAwD;IACjF,CAAC,WAAW,EAAK,EAAE,GAAG,EAAE,kBAAkB,EAAK,OAAO,EAAE,cAAc,EAAE,CAAC;IACzE,CAAC,YAAY,EAAI,EAAE,GAAG,EAAE,mBAAmB,EAAI,OAAO,EAAE,eAAe,EAAE,CAAC;IAC1E,CAAC,WAAW,EAAK,EAAE,GAAG,EAAE,kBAAkB,EAAK,OAAO,EAAE,cAAc,EAAE,CAAC;IACzE,CAAC,UAAU,EAAM,EAAE,GAAG,EAAE,iBAAiB,EAAM,OAAO,EAAE,aAAa,EAAE,CAAC;IACxE,CAAC,YAAY,EAAI,EAAE,GAAG,EAAE,mBAAmB,EAAI,OAAO,EAAE,eAAe,EAAE,CAAC;IAC1E,CAAC,aAAa,EAAG,EAAE,GAAG,EAAE,oBAAoB,EAAG,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC3E,CAAC,WAAW,EAAK,EAAE,GAAG,EAAE,kBAAkB,EAAK,OAAO,EAAE,cAAc,EAAE,CAAC;IACzE,CAAC,WAAW,EAAK,EAAE,GAAG,EAAE,kBAAkB,EAAK,OAAO,EAAE,cAAc,EAAE,CAAC;IACzE,CAAC,WAAW,EAAK,EAAE,GAAG,EAAE,kBAAkB,EAAK,OAAO,EAAE,cAAc,EAAE,CAAC;IACzE,CAAC,aAAa,EAAG,EAAE,GAAG,EAAE,oBAAoB,EAAG,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC3E,CAAC,aAAa,EAAG,EAAE,GAAG,EAAE,oBAAoB,EAAG,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC3E,CAAC,MAAM,EAAU,EAAE,GAAG,EAAE,cAAc,EAAU,OAAO,EAAE,UAAU,EAAE,CAAC;CACvE,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAmG;IAC1H,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IACtE,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;CACpE,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAqB;IACzC;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,6MAA6M;YAC1N,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;oBAClF,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oEAAoE,EAAE;iBACrH;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACnB;SACF;KACF;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAEnG;;;GAGG;AACH,MAAM,OAAO,YAAY;IACH;IAApB,YAAoB,MAAc,OAAO,CAAC,GAAG,EAAE;QAA3B,QAAG,GAAH,GAAG,CAAwB;IAAG,CAAC;IAEnD;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,QAAkB;QAC9B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAEjE,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,MAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACzD,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC7F,CAAC;YACD,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChE,MAAM,KAAK,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACrE,KAAK,MAAM,CAAC,IAAI,KAAK;oBAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC5C,2BAA2B,EAAE,CAAC;YAChC,CAAC;YACD,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACvD,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,WAAW,OAAO,GAAG,CAAC,CAAC;YAClF,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACvD,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,WAAW,OAAO,GAAG,CAAC,CAAC;YAC1G,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAC1D,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACvD,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,WAAW,OAAO,GAAG,CAAC,CAAC;gBAClF,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC/F,CAAC;QACH,CAAC;QAED,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QACpD,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,iBAAiB,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACjG,CAAC;IAED,2EAA2E;IAC3E,cAAc;QACZ,MAAM,IAAI,GAAqB;YAC7B,GAAG,gBAAgB;YACnB;gBACE,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE;oBACR,IAAI,EAAE,MAAM;oBACZ,WAAW,EAAE,uEAAuE;oBACpF,UAAU,EAAE;wBACV,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;4BAC9D,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;yBAC1F;wBACD,QAAQ,EAAE,CAAC,KAAK,CAAC;qBAClB;iBACF;aACF;SACF,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,OAAoB;QAC7B,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,OAAO,KAAK,EAAE,CAAC;IAChE,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;CACF"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AA6BpD,uDAAuD;AACvD,MAAM,eAAe,GAAqB;IACxC,SAAS;IACT;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,6MAA6M;YAC1N,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;oBAClF,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oEAAoE,EAAE;iBACrH;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACnB;SACF;KACF;IACD,OAAO;IACP,cAAc;IACd,KAAK;IACL,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;IAClB,iBAAiB;IACjB,mBAAmB;IACnB,oBAAoB;IACpB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,oBAAoB;IACpB,oBAAoB;IACpB,cAAc;IACd,MAAM;IACN,mBAAmB;IACnB,kBAAkB;CACnB,CAAC;AAEF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAE5E;;;GAGG;AACH,MAAM,OAAO,YAAY;IACvB,2EAA2E;IAC3E,cAAc;QACZ,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,UAAU,CAAC,OAAoB;QAC7B,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,OAAO,KAAK,EAAE,CAAC;IAChE,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;CACF"}
@@ -1,5 +1,6 @@
1
1
  import type { LLMProvider, ChatMessage } from '../llm/provider.js';
2
2
  import { ToolRegistry } from './registry.js';
3
+ import type { ToolExecutor } from '../agent/tool-executor.js';
3
4
  import type { OutputRenderer } from '../ui/renderer.js';
4
5
  /**
5
6
  * Изолированный цикл агента для субагентов.
@@ -78,7 +79,7 @@ export declare function doChat(provider: LLMProvider, messages: ChatMessage[], r
78
79
  *
79
80
  * @returns Результат: созданные файлы, ошибки, краткое описание, количество ходов
80
81
  */
81
- export declare function runIsolatedLoop(provider: LLMProvider, registry: ToolRegistry, task: string, existingFiles: string, cwd: string, quiet: boolean, renderer: OutputRenderer): Promise<IsolatedLoopResult>;
82
+ export declare function runIsolatedLoop(provider: LLMProvider, registry: ToolRegistry, task: string, existingFiles: string, cwd: string, quiet: boolean, renderer: OutputRenderer, toolExecutor?: ToolExecutor, mode?: string): Promise<IsolatedLoopResult>;
82
83
  import type { ToolDefinition } from './registry.js';
83
84
  export declare const subagentDefinition: ToolDefinition;
84
85
  //# sourceMappingURL=subagent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../src/tools/subagent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAI7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD;;;;;;;;;;;;;GAaG;AAIH,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAID;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAwDxD;AAID;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CA+C9D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAmD7G;AAID;;;;;;;;;;;GAWG;AACH,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,WAAW,EAAE,EACvB,QAAQ,EAAE,cAAc,EACxB,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,SAAI,EACX,YAAY,UAAQ,EACpB,MAAM,GAAE,MAAM,GAAG,UAAmB,GACnC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAwGlD;AAID;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,kBAAkB,CAAC,CA2J7B;AAID,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,eAAO,MAAM,kBAAkB,EAAE,cAchC,CAAC"}
1
+ {"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../src/tools/subagent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD;;;;;;;;;;;;;GAaG;AAIH,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAID;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAwDxD;AAID;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CA+C9D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAmD7G;AAID;;;;;;;;;;;GAWG;AACH,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,WAAW,EAAE,EACvB,QAAQ,EAAE,cAAc,EACxB,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,SAAI,EACX,YAAY,UAAQ,EACpB,MAAM,GAAE,MAAM,GAAG,UAAmB,GACnC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAwGlD;AAID;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,cAAc,EACxB,YAAY,CAAC,EAAE,YAAY,EAC3B,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,CAAC,CA8J7B;AAID,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,eAAO,MAAM,kBAAkB,EAAE,cAchC,CAAC"}
@@ -304,7 +304,7 @@ export async function doChat(provider, messages, renderer, signal, retries = 1,
304
304
  *
305
305
  * @returns Результат: созданные файлы, ошибки, краткое описание, количество ходов
306
306
  */
307
- export async function runIsolatedLoop(provider, registry, task, existingFiles, cwd, quiet, renderer) {
307
+ export async function runIsolatedLoop(provider, registry, task, existingFiles, cwd, quiet, renderer, toolExecutor, mode) {
308
308
  const createdFiles = [];
309
309
  const errors = [];
310
310
  const startTime = performance.now();
@@ -317,7 +317,7 @@ export async function runIsolatedLoop(provider, registry, task, existingFiles, c
317
317
  if (mergedContext) {
318
318
  logDebug('SUBAGENT', `context (${mergedContext.split('\n').length} lines):\n${mergedContext}`);
319
319
  }
320
- const systemPrompt = buildSystemPrompt(undefined, 'base');
320
+ const systemPrompt = buildSystemPrompt(undefined, (mode || "base"));
321
321
  const contextInfo = mergedContext
322
322
  ? `\n\nКонтекст проекта:\n${mergedContext}\nПосмотри package.json для списка пакетов. Используй read_file для чтения существующих файлов.`
323
323
  : '';
@@ -387,7 +387,9 @@ export async function runIsolatedLoop(provider, registry, task, existingFiles, c
387
387
  ? String(parsed.arguments.path ?? '').slice(-60)
388
388
  : JSON.stringify(parsed.arguments).slice(0, 80);
389
389
  logToolCall(`sub:${parsed.name}`, preview);
390
- const result = await registry.execute({ id: toolId, name: parsed.name, arguments: parsed.arguments });
390
+ const hookCmd = isBash ? String(cmd) : `${parsed.name} ${JSON.stringify(parsed.arguments)}`;
391
+ const execResult = toolExecutor ? await toolExecutor.execute({ id: toolId, name: parsed.name, arguments: parsed.arguments }, { cwd, quiet: false }, hookCmd) : null;
392
+ const result = execResult?.result ?? { stdout: '', stderr: 'ToolExecutor not available', exitCode: 1, truncated: false };
391
393
  toolOutput = result.stdout || result.stderr || '(no output)';
392
394
  toolExitCode = result.exitCode;
393
395
  if (toolExitCode !== 0) {
@@ -416,7 +418,8 @@ export async function runIsolatedLoop(provider, registry, task, existingFiles, c
416
418
  }
417
419
  else {
418
420
  logToolCall('sub:bash', String(cmd).slice(0, 80));
419
- const result = await registry.execute({ id: toolId, name: 'bash', arguments: { cmd, timeout: parsed.arguments?.timeout ?? 30 } });
421
+ const bashExecResult = toolExecutor ? await toolExecutor.execute({ id: toolId, name: 'bash', arguments: { cmd, timeout: parsed.arguments?.timeout ?? 30 } }, { cwd, quiet: false }, String(cmd)) : null;
422
+ const result = bashExecResult?.result ?? { stdout: '', stderr: 'ToolExecutor not available', exitCode: 1, truncated: false };
420
423
  toolOutput = result.stdout || result.stderr || '(no output)';
421
424
  toolExitCode = result.exitCode;
422
425
  if (toolExitCode !== 0) {