didev 1.0.0

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 (112) hide show
  1. package/README.md +378 -0
  2. package/dist/agents/analyst.d.ts +21 -0
  3. package/dist/agents/analyst.d.ts.map +1 -0
  4. package/dist/agents/analyst.js +69 -0
  5. package/dist/agents/analyst.js.map +1 -0
  6. package/dist/agents/architect.d.ts +21 -0
  7. package/dist/agents/architect.d.ts.map +1 -0
  8. package/dist/agents/architect.js +85 -0
  9. package/dist/agents/architect.js.map +1 -0
  10. package/dist/agents/base-agent.d.ts +56 -0
  11. package/dist/agents/base-agent.d.ts.map +1 -0
  12. package/dist/agents/base-agent.js +263 -0
  13. package/dist/agents/base-agent.js.map +1 -0
  14. package/dist/agents/developer.d.ts +21 -0
  15. package/dist/agents/developer.d.ts.map +1 -0
  16. package/dist/agents/developer.js +87 -0
  17. package/dist/agents/developer.js.map +1 -0
  18. package/dist/agents/orchestrator.d.ts +23 -0
  19. package/dist/agents/orchestrator.d.ts.map +1 -0
  20. package/dist/agents/orchestrator.js +287 -0
  21. package/dist/agents/orchestrator.js.map +1 -0
  22. package/dist/agents/reviewer.d.ts +15 -0
  23. package/dist/agents/reviewer.d.ts.map +1 -0
  24. package/dist/agents/reviewer.js +65 -0
  25. package/dist/agents/reviewer.js.map +1 -0
  26. package/dist/agents/tester.d.ts +15 -0
  27. package/dist/agents/tester.d.ts.map +1 -0
  28. package/dist/agents/tester.js +64 -0
  29. package/dist/agents/tester.js.map +1 -0
  30. package/dist/bmad/method.d.ts +6 -0
  31. package/dist/bmad/method.d.ts.map +1 -0
  32. package/dist/bmad/method.js +221 -0
  33. package/dist/bmad/method.js.map +1 -0
  34. package/dist/cli/commands/agent.d.ts +10 -0
  35. package/dist/cli/commands/agent.d.ts.map +1 -0
  36. package/dist/cli/commands/agent.js +28 -0
  37. package/dist/cli/commands/agent.js.map +1 -0
  38. package/dist/cli/commands/chat.d.ts +6 -0
  39. package/dist/cli/commands/chat.d.ts.map +1 -0
  40. package/dist/cli/commands/chat.js +556 -0
  41. package/dist/cli/commands/chat.js.map +1 -0
  42. package/dist/cli/commands/config.d.ts +3 -0
  43. package/dist/cli/commands/config.d.ts.map +1 -0
  44. package/dist/cli/commands/config.js +65 -0
  45. package/dist/cli/commands/config.js.map +1 -0
  46. package/dist/cli/commands/init.d.ts +8 -0
  47. package/dist/cli/commands/init.d.ts.map +1 -0
  48. package/dist/cli/commands/init.js +204 -0
  49. package/dist/cli/commands/init.js.map +1 -0
  50. package/dist/cli/commands/mcp.d.ts +5 -0
  51. package/dist/cli/commands/mcp.d.ts.map +1 -0
  52. package/dist/cli/commands/mcp.js +836 -0
  53. package/dist/cli/commands/mcp.js.map +1 -0
  54. package/dist/cli/commands/refactor.d.ts +8 -0
  55. package/dist/cli/commands/refactor.d.ts.map +1 -0
  56. package/dist/cli/commands/refactor.js +161 -0
  57. package/dist/cli/commands/refactor.js.map +1 -0
  58. package/dist/cli/commands/review.d.ts +9 -0
  59. package/dist/cli/commands/review.d.ts.map +1 -0
  60. package/dist/cli/commands/review.js +138 -0
  61. package/dist/cli/commands/review.js.map +1 -0
  62. package/dist/core/api.d.ts +73 -0
  63. package/dist/core/api.d.ts.map +1 -0
  64. package/dist/core/api.js +206 -0
  65. package/dist/core/api.js.map +1 -0
  66. package/dist/core/config.d.ts +42 -0
  67. package/dist/core/config.d.ts.map +1 -0
  68. package/dist/core/config.js +180 -0
  69. package/dist/core/config.js.map +1 -0
  70. package/dist/core/context.d.ts +33 -0
  71. package/dist/core/context.d.ts.map +1 -0
  72. package/dist/core/context.js +235 -0
  73. package/dist/core/context.js.map +1 -0
  74. package/dist/core/file-manager.d.ts +20 -0
  75. package/dist/core/file-manager.d.ts.map +1 -0
  76. package/dist/core/file-manager.js +133 -0
  77. package/dist/core/file-manager.js.map +1 -0
  78. package/dist/core/mcp.d.ts +31 -0
  79. package/dist/core/mcp.d.ts.map +1 -0
  80. package/dist/core/mcp.js +112 -0
  81. package/dist/core/mcp.js.map +1 -0
  82. package/dist/core/session.d.ts +16 -0
  83. package/dist/core/session.d.ts.map +1 -0
  84. package/dist/core/session.js +60 -0
  85. package/dist/core/session.js.map +1 -0
  86. package/dist/index.d.ts +3 -0
  87. package/dist/index.d.ts.map +1 -0
  88. package/dist/index.js +237 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/utils/banner.d.ts +2 -0
  91. package/dist/utils/banner.d.ts.map +1 -0
  92. package/dist/utils/banner.js +50 -0
  93. package/dist/utils/banner.js.map +1 -0
  94. package/dist/utils/git.d.ts +9 -0
  95. package/dist/utils/git.d.ts.map +1 -0
  96. package/dist/utils/git.js +49 -0
  97. package/dist/utils/git.js.map +1 -0
  98. package/dist/utils/logger.d.ts +42 -0
  99. package/dist/utils/logger.d.ts.map +1 -0
  100. package/dist/utils/logger.js +98 -0
  101. package/dist/utils/logger.js.map +1 -0
  102. package/dist/utils/resilience.d.ts +17 -0
  103. package/dist/utils/resilience.d.ts.map +1 -0
  104. package/dist/utils/resilience.js +41 -0
  105. package/dist/utils/resilience.js.map +1 -0
  106. package/dist/utils/token-counter.d.ts +7 -0
  107. package/dist/utils/token-counter.d.ts.map +1 -0
  108. package/dist/utils/token-counter.js +20 -0
  109. package/dist/utils/token-counter.js.map +1 -0
  110. package/package.json +62 -0
  111. package/scripts/postinstall.mjs +54 -0
  112. package/scripts/setup-path.sh +42 -0
@@ -0,0 +1,263 @@
1
+ import chalk from 'chalk';
2
+ import { readProjectFile, writeProjectFile } from '../core/file-manager.js';
3
+ import { logger } from '../utils/logger.js';
4
+ import { getMcpManager } from '../core/mcp.js';
5
+ import { getDiff } from '../utils/git.js';
6
+ import { glob } from 'glob';
7
+ import { readFile } from 'fs/promises';
8
+ import { join } from 'path';
9
+ export const AGENT_TOOLS = [
10
+ {
11
+ type: 'function',
12
+ function: {
13
+ name: 'read_file',
14
+ description: 'Read contents of a project file',
15
+ parameters: {
16
+ type: 'object',
17
+ properties: {
18
+ path: { type: 'string', description: 'Relative file path' },
19
+ },
20
+ required: ['path'],
21
+ },
22
+ },
23
+ },
24
+ {
25
+ type: 'function',
26
+ function: {
27
+ name: 'write_file',
28
+ description: 'Create or update a project file',
29
+ parameters: {
30
+ type: 'object',
31
+ properties: {
32
+ path: { type: 'string', description: 'Relative file path' },
33
+ content: { type: 'string', description: 'Complete file content' },
34
+ description: { type: 'string', description: 'What this file does' },
35
+ },
36
+ required: ['path', 'content'],
37
+ },
38
+ },
39
+ },
40
+ {
41
+ type: 'function',
42
+ function: {
43
+ name: 'list_files',
44
+ description: 'List files matching a glob pattern',
45
+ parameters: {
46
+ type: 'object',
47
+ properties: {
48
+ pattern: { type: 'string', description: 'Glob pattern (e.g. src/**/*.ts)' },
49
+ },
50
+ required: ['pattern'],
51
+ },
52
+ },
53
+ },
54
+ {
55
+ type: 'function',
56
+ function: {
57
+ name: 'search_code',
58
+ description: 'Search for text across project files',
59
+ parameters: {
60
+ type: 'object',
61
+ properties: {
62
+ query: { type: 'string', description: 'Text to search for' },
63
+ pattern: { type: 'string', description: 'File pattern to search in' },
64
+ },
65
+ required: ['query'],
66
+ },
67
+ },
68
+ },
69
+ {
70
+ type: 'function',
71
+ function: {
72
+ name: 'git_diff',
73
+ description: 'Get git diff to see recent changes',
74
+ parameters: {
75
+ type: 'object',
76
+ properties: {
77
+ base: { type: 'string', description: 'Base ref (default: HEAD)' },
78
+ },
79
+ required: [],
80
+ },
81
+ },
82
+ },
83
+ ];
84
+ export class BaseAgent {
85
+ pendingWrites = new Map();
86
+ async run(options) {
87
+ const start = Date.now();
88
+ const { client, model, projectContext, rootDir, task, previousResults, dryRun } = options;
89
+ logger.agentHeader(this.emoji + ' ' + this.name, this.role);
90
+ const spinner = logger.spinner({ text: chalk.gray('Working...'), color: 'magenta' }).start();
91
+ const systemPrompt = this.buildSystemPrompt(projectContext, task);
92
+ const userMessage = this.buildUserMessage(task, previousResults);
93
+ const messages = [
94
+ { role: 'system', content: systemPrompt },
95
+ { role: 'user', content: userMessage },
96
+ ];
97
+ let output = '';
98
+ const fileChanges = [];
99
+ // In dry-run mode writes go here; otherwise they are applied immediately
100
+ const pendingWrites = new Map();
101
+ // Merge built-in agent tools with any connected MCP tools
102
+ const mcp = getMcpManager();
103
+ const allTools = [...AGENT_TOOLS, ...mcp.tools];
104
+ try {
105
+ const { messages: finalMsgs, finalContent } = await client.runToolLoop(messages, allTools, async (name, args) => {
106
+ if (mcp.isMcpTool(name))
107
+ return mcp.call(name, args);
108
+ return this.executeToolCall(name, args, rootDir, fileChanges, dryRun ? pendingWrites : undefined);
109
+ }, model, { temperature: 0.3 }, options.maxRounds ?? 10);
110
+ output = finalContent;
111
+ spinner.stop();
112
+ // Display output
113
+ logger.newline();
114
+ console.log(chalk.white(output));
115
+ logger.newline();
116
+ // Show file changes summary (written files)
117
+ if (fileChanges.length > 0) {
118
+ logger.dim(` Создано/изменено ${fileChanges.length} файл(ов):`);
119
+ for (const fc of fileChanges) {
120
+ logger.step('✓', chalk.green(` ${fc.path}`) + chalk.gray(fc.description ? ` — ${fc.description}` : ''));
121
+ }
122
+ }
123
+ // Show pending writes summary (dry-run mode)
124
+ if (pendingWrites.size > 0) {
125
+ logger.dim(` Ожидают записи (dry-run): ${pendingWrites.size} файл(ов)`);
126
+ for (const [path] of pendingWrites) {
127
+ logger.step('○', chalk.yellow(` ${path}`));
128
+ }
129
+ }
130
+ void finalMsgs;
131
+ }
132
+ catch (e) {
133
+ spinner.fail(chalk.red(`${this.name} завершился с ошибкой: ${e.message}`));
134
+ throw e;
135
+ }
136
+ const artifacts = this.extractArtifacts(output);
137
+ return {
138
+ agentName: this.name,
139
+ role: this.role,
140
+ emoji: this.emoji,
141
+ output,
142
+ artifacts,
143
+ fileChanges,
144
+ pendingWrites,
145
+ duration: Date.now() - start,
146
+ };
147
+ }
148
+ buildUserMessage(task, previousResults) {
149
+ let msg = `Task: ${task}`;
150
+ if (previousResults && previousResults.length > 0) {
151
+ msg += '\n\n## Previous Agent Outputs\n';
152
+ for (const r of previousResults) {
153
+ msg += `\n### ${r.agentName} (${r.role})\n${r.output.slice(0, 40_000)}\n`;
154
+ if (r.fileChanges.length > 0) {
155
+ msg += `\nFiles created: ${r.fileChanges.map(f => f.path).join(', ')}\n`;
156
+ }
157
+ }
158
+ }
159
+ return msg;
160
+ }
161
+ async executeToolCall(name, args, rootDir, fileChanges, pendingWrites) {
162
+ switch (name) {
163
+ case 'read_file': {
164
+ try {
165
+ const content = await readProjectFile(String(args['path']), rootDir);
166
+ return content.slice(0, 400_000);
167
+ }
168
+ catch (e) {
169
+ return `Error: ${e.message}`;
170
+ }
171
+ }
172
+ case 'write_file': {
173
+ const path = String(args['path']);
174
+ const content = String(args['content']);
175
+ const description = args['description'] ? String(args['description']) : undefined;
176
+ if (pendingWrites) {
177
+ // Dry-run: queue for later confirmation
178
+ pendingWrites.set(path, { content, description });
179
+ return `File ${path} queued for writing (dry-run mode)`;
180
+ }
181
+ try {
182
+ await writeProjectFile(path, content, rootDir);
183
+ fileChanges.push({ path, content, description });
184
+ return `File ${path} written successfully`;
185
+ }
186
+ catch (e) {
187
+ return `Error writing ${path}: ${e.message}`;
188
+ }
189
+ }
190
+ case 'list_files': {
191
+ try {
192
+ const pattern = String(args['pattern'] ?? '**/*');
193
+ const files = await glob(pattern, {
194
+ cwd: rootDir,
195
+ ignore: ['node_modules/**', 'dist/**', '.git/**'],
196
+ });
197
+ return files.slice(0, 100).join('\n') || 'No files found';
198
+ }
199
+ catch (e) {
200
+ return `Error: ${e.message}`;
201
+ }
202
+ }
203
+ case 'search_code': {
204
+ const query = String(args['query']);
205
+ const filePattern = String(args['pattern'] ?? '**/*.{ts,tsx,js,jsx,py,go}');
206
+ try {
207
+ const files = await glob(filePattern, {
208
+ cwd: rootDir,
209
+ ignore: ['node_modules/**', 'dist/**', '.git/**'],
210
+ });
211
+ const results = [];
212
+ for (const f of files.slice(0, 50)) {
213
+ try {
214
+ const content = await readFile(join(rootDir, f), 'utf-8');
215
+ const lines = content.split('\n');
216
+ for (let i = 0; i < lines.length; i++) {
217
+ if (lines[i].includes(query)) {
218
+ results.push(`${f}:${i + 1}: ${lines[i].trim()}`);
219
+ if (results.length >= 50)
220
+ break;
221
+ }
222
+ }
223
+ }
224
+ catch { /* skip */ }
225
+ }
226
+ return results.join('\n') || 'No matches found';
227
+ }
228
+ catch (e) {
229
+ return `Error: ${e.message}`;
230
+ }
231
+ }
232
+ case 'git_diff': {
233
+ try {
234
+ const base = String(args['base'] ?? 'HEAD');
235
+ const diff = await getDiff(base, rootDir);
236
+ return diff.slice(0, 400_000) || 'No changes';
237
+ }
238
+ catch (e) {
239
+ return `Git not available or no changes: ${e.message}`;
240
+ }
241
+ }
242
+ default:
243
+ return `Unknown tool: ${name}`;
244
+ }
245
+ }
246
+ extractArtifacts(output) {
247
+ const artifacts = [];
248
+ // Extract markdown sections as artifacts
249
+ const sections = output.match(/#{1,3}\s+(.+)\n([\s\S]+?)(?=#{1,3}\s|$)/g) ?? [];
250
+ for (const section of sections.slice(0, 5)) {
251
+ const titleMatch = section.match(/#{1,3}\s+(.+)/);
252
+ if (titleMatch) {
253
+ artifacts.push({
254
+ type: 'analysis',
255
+ title: titleMatch[1].trim(),
256
+ content: section,
257
+ });
258
+ }
259
+ }
260
+ return artifacts;
261
+ }
262
+ }
263
+ //# sourceMappingURL=base-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-agent.js","sourceRoot":"","sources":["../../src/agents/base-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { BaseAgent } from './base-agent.js';
2
+ import type { ProjectContext } from '../core/context.js';
3
+ export declare class DeveloperAgent extends BaseAgent {
4
+ readonly name = "Developer";
5
+ readonly role = "Code Implementation";
6
+ readonly emoji = "\uD83D\uDCBB";
7
+ protected buildSystemPrompt(ctx: ProjectContext): string;
8
+ }
9
+ export declare class FrontendDeveloperAgent extends BaseAgent {
10
+ readonly name = "Frontend Developer";
11
+ readonly role = "Component & Feature Implementation";
12
+ readonly emoji = "\uD83D\uDCBB";
13
+ protected buildSystemPrompt(ctx: ProjectContext): string;
14
+ }
15
+ export declare class BackendDeveloperAgent extends BaseAgent {
16
+ readonly name = "Backend Developer";
17
+ readonly role = "API & Business Logic Implementation";
18
+ readonly emoji = "\uD83D\uDCBB";
19
+ protected buildSystemPrompt(ctx: ProjectContext): string;
20
+ }
21
+ //# sourceMappingURL=developer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"developer.d.ts","sourceRoot":"","sources":["../../src/agents/developer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,qBAAa,cAAe,SAAQ,SAAS;IAC3C,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,IAAI,yBAAyB;IACtC,QAAQ,CAAC,KAAK,kBAAQ;IAEtB,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM;CAsBzD;AAED,qBAAa,sBAAuB,SAAQ,SAAS;IACnD,QAAQ,CAAC,IAAI,wBAAwB;IACrC,QAAQ,CAAC,IAAI,wCAAwC;IACrD,QAAQ,CAAC,KAAK,kBAAQ;IAEtB,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM;CAuBzD;AAED,qBAAa,qBAAsB,SAAQ,SAAS;IAClD,QAAQ,CAAC,IAAI,uBAAuB;IACpC,QAAQ,CAAC,IAAI,yCAAyC;IACtD,QAAQ,CAAC,KAAK,kBAAQ;IAEtB,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM;CAwBzD"}
@@ -0,0 +1,87 @@
1
+ import { BaseAgent } from './base-agent.js';
2
+ import { contextToSystemPrompt } from '../core/context.js';
3
+ export class DeveloperAgent extends BaseAgent {
4
+ name = 'Developer';
5
+ role = 'Code Implementation';
6
+ emoji = '💻';
7
+ buildSystemPrompt(ctx) {
8
+ return `You are an expert ${ctx.language} developer working on a ${ctx.type} project using ${ctx.framework}.
9
+
10
+ ${contextToSystemPrompt(ctx)}
11
+
12
+ Your responsibilities:
13
+ 1. Implement the code based on the architect's design
14
+ 2. Follow the project's existing patterns and conventions
15
+ 3. Write clean, type-safe, production-ready code
16
+ 4. Add proper error handling and logging
17
+ 5. Ensure all files integrate correctly with existing codebase
18
+
19
+ Rules:
20
+ - Use the write_file tool to actually create/modify files
21
+ - Read existing files before modifying them to understand current patterns
22
+ - Use TypeScript types properly (no 'any' unless absolutely necessary)
23
+ - Follow the existing file/folder naming conventions
24
+ - Add imports for all dependencies
25
+ - Do NOT add comments explaining what code does — only add comments for non-obvious WHY
26
+
27
+ Implement ALL files identified in the architecture. Use write_file for each file.`;
28
+ }
29
+ }
30
+ export class FrontendDeveloperAgent extends BaseAgent {
31
+ name = 'Frontend Developer';
32
+ role = 'Component & Feature Implementation';
33
+ emoji = '💻';
34
+ buildSystemPrompt(ctx) {
35
+ return `You are an expert Frontend Developer specializing in ${ctx.framework} and ${ctx.language}.
36
+
37
+ ${contextToSystemPrompt(ctx)}
38
+
39
+ Your responsibilities:
40
+ 1. Implement React/Vue/Svelte components
41
+ 2. Implement custom hooks and utilities
42
+ 3. Implement state management (Context, stores, etc.)
43
+ 4. Add proper TypeScript types for all props and state
44
+ 5. Implement responsive design with CSS/Tailwind
45
+ 6. Handle loading states, error states, and edge cases
46
+
47
+ Rules:
48
+ - Use write_file to create ALL component files
49
+ - Read existing components to match the project's style
50
+ - Use the project's existing UI component library if present
51
+ - Follow accessibility best practices
52
+ - Keep components focused and composable
53
+ - Handle all edge cases (empty state, loading, error)
54
+
55
+ Create production-ready components that work immediately.`;
56
+ }
57
+ }
58
+ export class BackendDeveloperAgent extends BaseAgent {
59
+ name = 'Backend Developer';
60
+ role = 'API & Business Logic Implementation';
61
+ emoji = '💻';
62
+ buildSystemPrompt(ctx) {
63
+ return `You are an expert Backend Developer specializing in ${ctx.framework} and ${ctx.language}.
64
+
65
+ ${contextToSystemPrompt(ctx)}
66
+
67
+ Your responsibilities:
68
+ 1. Implement controllers/route handlers
69
+ 2. Implement service layer with business logic
70
+ 3. Implement data access layer (repositories, queries)
71
+ 4. Implement input validation (Zod, Joi, class-validator)
72
+ 5. Proper error handling with status codes
73
+ 6. Implement middleware if needed
74
+ 7. Write database migrations if applicable
75
+
76
+ Rules:
77
+ - Use write_file to create all implementation files
78
+ - Read existing code for patterns (how routes are registered, how errors are handled)
79
+ - Validate all inputs at the API boundary
80
+ - Use proper HTTP status codes
81
+ - Handle all error cases gracefully
82
+ - Return consistent response shapes
83
+
84
+ Create production-ready, secure backend code.`;
85
+ }
86
+ }
87
+ //# sourceMappingURL=developer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"developer.js","sourceRoot":"","sources":["../../src/agents/developer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,OAAO,cAAe,SAAQ,SAAS;IAClC,IAAI,GAAG,WAAW,CAAC;IACnB,IAAI,GAAG,qBAAqB,CAAC;IAC7B,KAAK,GAAG,IAAI,CAAC;IAEZ,iBAAiB,CAAC,GAAmB;QAC7C,OAAO,qBAAqB,GAAG,CAAC,QAAQ,2BAA2B,GAAG,CAAC,IAAI,kBAAkB,GAAG,CAAC,SAAS;;EAE5G,qBAAqB,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;kFAiBsD,CAAC;IACjF,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,SAAS;IAC1C,IAAI,GAAG,oBAAoB,CAAC;IAC5B,IAAI,GAAG,oCAAoC,CAAC;IAC5C,KAAK,GAAG,IAAI,CAAC;IAEZ,iBAAiB,CAAC,GAAmB;QAC7C,OAAO,wDAAwD,GAAG,CAAC,SAAS,QAAQ,GAAG,CAAC,QAAQ;;EAElG,qBAAqB,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;0DAkB8B,CAAC;IACzD,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,SAAS;IACzC,IAAI,GAAG,mBAAmB,CAAC;IAC3B,IAAI,GAAG,qCAAqC,CAAC;IAC7C,KAAK,GAAG,IAAI,CAAC;IAEZ,iBAAiB,CAAC,GAAmB;QAC7C,OAAO,uDAAuD,GAAG,CAAC,SAAS,QAAQ,GAAG,CAAC,QAAQ;;EAEjG,qBAAqB,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;8CAmBkB,CAAC;IAC7C,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ import type { AgentResult } from './base-agent.js';
2
+ export type AgentFamily = 'frontend' | 'backend' | 'fullstack' | 'auto';
3
+ export type OrchestrationMode = 'full' | 'light' | 'developer-only';
4
+ export interface OrchestrationOptions {
5
+ task: string;
6
+ family?: AgentFamily;
7
+ mode?: OrchestrationMode;
8
+ model?: string;
9
+ rootDir?: string;
10
+ skipAgents?: string[];
11
+ /** When true, agents queue writes and ask for confirmation before applying (default: true) */
12
+ confirmWrites?: boolean;
13
+ }
14
+ export interface OrchestrationResult {
15
+ task: string;
16
+ agentResults: AgentResult[];
17
+ totalDuration: number;
18
+ filesCreated: string[];
19
+ filesModified: string[];
20
+ summary: string;
21
+ }
22
+ export declare function runOrchestration(options: OrchestrationOptions): Promise<OrchestrationResult>;
23
+ //# sourceMappingURL=orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/agents/orchestrator.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,iBAAiB,CAAC;AAWjE,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;AACxE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,gBAAgB,CAAC;AAKpE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,8FAA8F;IAC9F,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAoFD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAqIlG"}