linguclaw 0.4.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 (168) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +161 -0
  3. package/dist/agent-system.d.ts +196 -0
  4. package/dist/agent-system.d.ts.map +1 -0
  5. package/dist/agent-system.js +738 -0
  6. package/dist/agent-system.js.map +1 -0
  7. package/dist/alphabeta.d.ts +54 -0
  8. package/dist/alphabeta.d.ts.map +1 -0
  9. package/dist/alphabeta.js +193 -0
  10. package/dist/alphabeta.js.map +1 -0
  11. package/dist/browser.d.ts +62 -0
  12. package/dist/browser.d.ts.map +1 -0
  13. package/dist/browser.js +224 -0
  14. package/dist/browser.js.map +1 -0
  15. package/dist/cli.d.ts +7 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +565 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/code-parser.d.ts +39 -0
  20. package/dist/code-parser.d.ts.map +1 -0
  21. package/dist/code-parser.js +385 -0
  22. package/dist/code-parser.js.map +1 -0
  23. package/dist/config.d.ts +66 -0
  24. package/dist/config.d.ts.map +1 -0
  25. package/dist/config.js +232 -0
  26. package/dist/config.js.map +1 -0
  27. package/dist/core/engine.d.ts +359 -0
  28. package/dist/core/engine.d.ts.map +1 -0
  29. package/dist/core/engine.js +127 -0
  30. package/dist/core/engine.js.map +1 -0
  31. package/dist/daemon.d.ts +29 -0
  32. package/dist/daemon.d.ts.map +1 -0
  33. package/dist/daemon.js +212 -0
  34. package/dist/daemon.js.map +1 -0
  35. package/dist/email-receiver.d.ts +63 -0
  36. package/dist/email-receiver.d.ts.map +1 -0
  37. package/dist/email-receiver.js +553 -0
  38. package/dist/email-receiver.js.map +1 -0
  39. package/dist/git-integration.d.ts +180 -0
  40. package/dist/git-integration.d.ts.map +1 -0
  41. package/dist/git-integration.js +850 -0
  42. package/dist/git-integration.js.map +1 -0
  43. package/dist/inbox.d.ts +84 -0
  44. package/dist/inbox.d.ts.map +1 -0
  45. package/dist/inbox.js +198 -0
  46. package/dist/inbox.js.map +1 -0
  47. package/dist/index.d.ts +6 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +41 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/languages/cpp.d.ts +51 -0
  52. package/dist/languages/cpp.d.ts.map +1 -0
  53. package/dist/languages/cpp.js +930 -0
  54. package/dist/languages/cpp.js.map +1 -0
  55. package/dist/languages/csharp.d.ts +79 -0
  56. package/dist/languages/csharp.d.ts.map +1 -0
  57. package/dist/languages/csharp.js +1776 -0
  58. package/dist/languages/csharp.js.map +1 -0
  59. package/dist/languages/go.d.ts +50 -0
  60. package/dist/languages/go.d.ts.map +1 -0
  61. package/dist/languages/go.js +882 -0
  62. package/dist/languages/go.js.map +1 -0
  63. package/dist/languages/java.d.ts +47 -0
  64. package/dist/languages/java.d.ts.map +1 -0
  65. package/dist/languages/java.js +649 -0
  66. package/dist/languages/java.js.map +1 -0
  67. package/dist/languages/python.d.ts +47 -0
  68. package/dist/languages/python.d.ts.map +1 -0
  69. package/dist/languages/python.js +655 -0
  70. package/dist/languages/python.js.map +1 -0
  71. package/dist/languages/rust.d.ts +61 -0
  72. package/dist/languages/rust.d.ts.map +1 -0
  73. package/dist/languages/rust.js +1064 -0
  74. package/dist/languages/rust.js.map +1 -0
  75. package/dist/logger.d.ts +20 -0
  76. package/dist/logger.d.ts.map +1 -0
  77. package/dist/logger.js +133 -0
  78. package/dist/logger.js.map +1 -0
  79. package/dist/longterm-memory.d.ts +47 -0
  80. package/dist/longterm-memory.d.ts.map +1 -0
  81. package/dist/longterm-memory.js +300 -0
  82. package/dist/longterm-memory.js.map +1 -0
  83. package/dist/memory.d.ts +42 -0
  84. package/dist/memory.d.ts.map +1 -0
  85. package/dist/memory.js +274 -0
  86. package/dist/memory.js.map +1 -0
  87. package/dist/messaging.d.ts +103 -0
  88. package/dist/messaging.d.ts.map +1 -0
  89. package/dist/messaging.js +645 -0
  90. package/dist/messaging.js.map +1 -0
  91. package/dist/multi-provider.d.ts +69 -0
  92. package/dist/multi-provider.d.ts.map +1 -0
  93. package/dist/multi-provider.js +484 -0
  94. package/dist/multi-provider.js.map +1 -0
  95. package/dist/orchestrator.d.ts +65 -0
  96. package/dist/orchestrator.d.ts.map +1 -0
  97. package/dist/orchestrator.js +441 -0
  98. package/dist/orchestrator.js.map +1 -0
  99. package/dist/plugins.d.ts +52 -0
  100. package/dist/plugins.d.ts.map +1 -0
  101. package/dist/plugins.js +215 -0
  102. package/dist/plugins.js.map +1 -0
  103. package/dist/prism-orchestrator.d.ts +26 -0
  104. package/dist/prism-orchestrator.d.ts.map +1 -0
  105. package/dist/prism-orchestrator.js +191 -0
  106. package/dist/prism-orchestrator.js.map +1 -0
  107. package/dist/prism.d.ts +46 -0
  108. package/dist/prism.d.ts.map +1 -0
  109. package/dist/prism.js +188 -0
  110. package/dist/prism.js.map +1 -0
  111. package/dist/privacy.d.ts +23 -0
  112. package/dist/privacy.d.ts.map +1 -0
  113. package/dist/privacy.js +220 -0
  114. package/dist/privacy.js.map +1 -0
  115. package/dist/proactive.d.ts +30 -0
  116. package/dist/proactive.d.ts.map +1 -0
  117. package/dist/proactive.js +260 -0
  118. package/dist/proactive.js.map +1 -0
  119. package/dist/refactoring-engine.d.ts +100 -0
  120. package/dist/refactoring-engine.d.ts.map +1 -0
  121. package/dist/refactoring-engine.js +717 -0
  122. package/dist/refactoring-engine.js.map +1 -0
  123. package/dist/resilience.d.ts +43 -0
  124. package/dist/resilience.d.ts.map +1 -0
  125. package/dist/resilience.js +200 -0
  126. package/dist/resilience.js.map +1 -0
  127. package/dist/safety.d.ts +40 -0
  128. package/dist/safety.d.ts.map +1 -0
  129. package/dist/safety.js +133 -0
  130. package/dist/safety.js.map +1 -0
  131. package/dist/sandbox.d.ts +33 -0
  132. package/dist/sandbox.d.ts.map +1 -0
  133. package/dist/sandbox.js +173 -0
  134. package/dist/sandbox.js.map +1 -0
  135. package/dist/scheduler.d.ts +72 -0
  136. package/dist/scheduler.d.ts.map +1 -0
  137. package/dist/scheduler.js +374 -0
  138. package/dist/scheduler.js.map +1 -0
  139. package/dist/semantic-memory.d.ts +70 -0
  140. package/dist/semantic-memory.d.ts.map +1 -0
  141. package/dist/semantic-memory.js +430 -0
  142. package/dist/semantic-memory.js.map +1 -0
  143. package/dist/skills.d.ts +97 -0
  144. package/dist/skills.d.ts.map +1 -0
  145. package/dist/skills.js +575 -0
  146. package/dist/skills.js.map +1 -0
  147. package/dist/static/dashboard.html +853 -0
  148. package/dist/static/hub.html +772 -0
  149. package/dist/static/index.html +818 -0
  150. package/dist/static/logo.svg +24 -0
  151. package/dist/static/workflow-editor.html +913 -0
  152. package/dist/tools.d.ts +67 -0
  153. package/dist/tools.d.ts.map +1 -0
  154. package/dist/tools.js +303 -0
  155. package/dist/tools.js.map +1 -0
  156. package/dist/types.d.ts +295 -0
  157. package/dist/types.d.ts.map +1 -0
  158. package/dist/types.js +90 -0
  159. package/dist/types.js.map +1 -0
  160. package/dist/web.d.ts +76 -0
  161. package/dist/web.d.ts.map +1 -0
  162. package/dist/web.js +2139 -0
  163. package/dist/web.js.map +1 -0
  164. package/dist/workflow-engine.d.ts +114 -0
  165. package/dist/workflow-engine.d.ts.map +1 -0
  166. package/dist/workflow-engine.js +855 -0
  167. package/dist/workflow-engine.js.map +1 -0
  168. package/package.json +77 -0
@@ -0,0 +1,441 @@
1
+ "use strict";
2
+ /**
3
+ * Multi-agent orchestration layer
4
+ * TypeScript equivalent of Python orchestrator.py
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.Orchestrator = void 0;
8
+ const types_1 = require("./types");
9
+ const safety_1 = require("./safety");
10
+ const memory_1 = require("./memory");
11
+ const semantic_memory_1 = require("./semantic-memory");
12
+ const logger_1 = require("./logger");
13
+ const logger = (0, logger_1.getLogger)();
14
+ // System prompts for each agent role
15
+ const SYSTEM_PROMPTS = {
16
+ [types_1.AgentRole.PLANNER]: `You are a Planner agent. Create structured plans as a JSON array.
17
+ Break down tasks into clear steps. Each step uses one of: executor, planner, reviewer.
18
+ IMPORTANT: Return ONLY a valid JSON array. No extra text before or after.
19
+ Commands run in the project root directory already - never use "cd" commands.
20
+
21
+ Example response:
22
+ [
23
+ {"id": "step-1", "description": "Run: find . -name '*.ts'", "agent": "executor", "dependencies": []},
24
+ {"id": "step-2", "description": "Review the output", "agent": "reviewer", "dependencies": ["step-1"]}
25
+ ]`,
26
+ [types_1.AgentRole.EXECUTOR]: `You are an Executor agent. Execute the given step using ONE action.
27
+ Available actions:
28
+ - shell: Execute a shell command (already runs in project root, do NOT use cd)
29
+ - filesystem: Read/write files (use relative paths from project root)
30
+
31
+ IMPORTANT: Return ONLY valid JSON. No extra text.
32
+ IMPORTANT: Never use "cd" in commands. Commands already run in the project directory.
33
+
34
+ Example:
35
+ {"thought": "List TypeScript files", "action": "shell", "input": "find . -name '*.ts'"}
36
+ {"thought": "Read a file", "action": "filesystem", "input": "read src/index.ts"}`,
37
+ [types_1.AgentRole.REVIEWER]: `You are a Reviewer agent. Your job is to validate the execution result.
38
+ Check for:
39
+ - Errors or incomplete work
40
+ - Safety issues
41
+ - Quality standards
42
+ - Alignment with the original task
43
+
44
+ Output format: Return JSON with:
45
+ {
46
+ "review": "Your assessment",
47
+ "approved": true/false,
48
+ "feedback": "If rejected, explain why and what to fix"
49
+ }`,
50
+ };
51
+ class Orchestrator {
52
+ provider;
53
+ shell;
54
+ fs;
55
+ safety;
56
+ maxIterations;
57
+ state;
58
+ memory;
59
+ semanticMemory;
60
+ constructor(provider, shell, fs, maxIterations = 15, projectRoot = '.') {
61
+ this.provider = provider;
62
+ this.shell = shell;
63
+ this.fs = fs;
64
+ this.safety = new safety_1.SafetyMiddleware();
65
+ this.maxIterations = maxIterations;
66
+ this.memory = new memory_1.RAGMemory(projectRoot);
67
+ this.semanticMemory = (0, semantic_memory_1.getSemanticMemory)();
68
+ this.state = {
69
+ task: '',
70
+ plan: [],
71
+ current_step_idx: -1,
72
+ execution_log: [],
73
+ files_modified: [],
74
+ context: new Map(),
75
+ iteration: 0,
76
+ max_iterations: maxIterations,
77
+ aborted: false,
78
+ };
79
+ }
80
+ /**
81
+ * Main execution loop
82
+ */
83
+ async run(task) {
84
+ this.state.task = task;
85
+ // Initialize memory if not already done
86
+ await this.memory.init();
87
+ logger.info(`Starting orchestration for: ${task}`);
88
+ // Get codebase context for planning
89
+ const codeContext = await this.getCodebaseContext(task);
90
+ // For simple/conversational tasks, respond directly
91
+ if (this.isSimpleTask(task)) {
92
+ return this.handleSimpleTask(task);
93
+ }
94
+ // Phase 1: Planning with codebase context
95
+ const planResult = await this.planPhase(task, codeContext);
96
+ if (!planResult.success) {
97
+ return `Planning failed: ${planResult.error}`;
98
+ }
99
+ // Phase 2: Execute plan steps
100
+ for (let i = 0; i < this.state.plan.length; i++) {
101
+ if (this.state.aborted || this.state.iteration >= this.maxIterations) {
102
+ break;
103
+ }
104
+ this.state.current_step_idx = i;
105
+ const step = this.state.plan[i];
106
+ // Check dependencies
107
+ if (step.dependencies.length > 0) {
108
+ const depsCompleted = step.dependencies.every(depId => {
109
+ const dep = this.state.plan.find(p => p.id === depId);
110
+ return dep && dep.status === types_1.StepStatus.COMPLETED;
111
+ });
112
+ if (!depsCompleted) {
113
+ step.status = types_1.StepStatus.PENDING;
114
+ continue;
115
+ }
116
+ }
117
+ // Execute step based on agent role
118
+ step.status = types_1.StepStatus.IN_PROGRESS;
119
+ // Execute with timeout (60s per step)
120
+ const result = await Promise.race([
121
+ this.executeStep(step),
122
+ new Promise((resolve) => setTimeout(() => resolve({ success: false, error: 'Step execution timed out after 60s' }), 60000)),
123
+ ]);
124
+ if (result.success) {
125
+ step.status = types_1.StepStatus.COMPLETED;
126
+ step.result = result.output;
127
+ }
128
+ else {
129
+ step.status = types_1.StepStatus.FAILED;
130
+ step.error = result.error;
131
+ // Retry logic
132
+ if (step.retry_count < step.max_retries) {
133
+ step.retry_count++;
134
+ step.status = types_1.StepStatus.RETRYING;
135
+ i--; // Retry this step
136
+ }
137
+ }
138
+ this.state.iteration++;
139
+ }
140
+ // Phase 3: Final review and summary
141
+ return this.generateSummary();
142
+ }
143
+ /**
144
+ * Get codebase context relevant to the task
145
+ */
146
+ async getCodebaseContext(task) {
147
+ try {
148
+ // Search for relevant code
149
+ const codeResults = await this.memory.search(task, 5);
150
+ // Search semantic memory for related conversations/knowledge
151
+ const semanticResults = this.semanticMemory.search(task, 3, undefined, 0.1);
152
+ let context = '';
153
+ if (codeResults && codeResults !== '[Memory unavailable]' && codeResults !== '[No relevant code found]') {
154
+ context += `\n\nRelevant codebase:\n${codeResults}`;
155
+ }
156
+ if (semanticResults.length > 0) {
157
+ context += `\n\nRelated knowledge:\n${semanticResults.map(r => `- ${r.content.substring(0, 150)}`).join('\n')}`;
158
+ }
159
+ return context;
160
+ }
161
+ catch (err) {
162
+ logger.debug(`Failed to get codebase context: ${err.message}`);
163
+ return '';
164
+ }
165
+ }
166
+ /**
167
+ * Planning phase with codebase context
168
+ */
169
+ async planPhase(task, codeContext = '') {
170
+ try {
171
+ const messages = [
172
+ { role: 'system', content: SYSTEM_PROMPTS[types_1.AgentRole.PLANNER] },
173
+ { role: 'user', content: `Create a plan for: ${task}${codeContext}` },
174
+ ];
175
+ const response = await this.provider.complete(messages, 0.3, 1000);
176
+ if (response.error) {
177
+ return { success: false, error: response.error };
178
+ }
179
+ if (!response.content || response.content.trim().length === 0) {
180
+ return { success: false, error: 'LLM returned empty response. Check your API key and credits.' };
181
+ }
182
+ logger.info(`Plan response: ${response.content.substring(0, 200)}`);
183
+ // Parse plan from response
184
+ const plan = this.parsePlan(response.content);
185
+ this.state.plan = plan;
186
+ logger.info(`Created plan with ${plan.length} steps`);
187
+ return { success: true };
188
+ }
189
+ catch (error) {
190
+ return { success: false, error: error.message };
191
+ }
192
+ }
193
+ /**
194
+ * Parse plan from LLM response
195
+ */
196
+ parsePlan(content) {
197
+ const mapStep = (step, idx) => ({
198
+ id: step.id || `step-${idx + 1}`,
199
+ description: step.description || '',
200
+ agent: step.agent || types_1.AgentRole.EXECUTOR,
201
+ status: types_1.StepStatus.PENDING,
202
+ dependencies: step.dependencies || [],
203
+ retry_count: 0,
204
+ max_retries: 3,
205
+ });
206
+ // Try 1: Extract JSON array
207
+ try {
208
+ const arrayMatch = content.match(/\[[\s\S]*\]/);
209
+ if (arrayMatch) {
210
+ const parsed = JSON.parse(arrayMatch[0]);
211
+ if (Array.isArray(parsed) && parsed.length > 0) {
212
+ logger.info(`Parsed ${parsed.length} steps from JSON array`);
213
+ return parsed.map(mapStep);
214
+ }
215
+ }
216
+ }
217
+ catch (e) {
218
+ logger.warn('JSON array parse failed, trying individual objects');
219
+ }
220
+ // Try 2: Extract individual JSON objects
221
+ try {
222
+ const objMatches = content.match(/\{[^{}]*"id"[^{}]*"description"[^{}]*\}/g);
223
+ if (objMatches && objMatches.length > 0) {
224
+ const steps = [];
225
+ for (let i = 0; i < objMatches.length; i++) {
226
+ try {
227
+ const parsed = JSON.parse(objMatches[i]);
228
+ steps.push(mapStep(parsed, i));
229
+ }
230
+ catch (e) { /* skip malformed */ }
231
+ }
232
+ if (steps.length > 0) {
233
+ logger.info(`Parsed ${steps.length} steps from individual objects`);
234
+ return steps;
235
+ }
236
+ }
237
+ }
238
+ catch (e) {
239
+ logger.warn('Individual object parse failed');
240
+ }
241
+ // Fallback: Create single executor step from content
242
+ logger.warn('Using fallback single step plan');
243
+ return [{
244
+ id: 'step-1',
245
+ description: content.trim(),
246
+ agent: types_1.AgentRole.EXECUTOR,
247
+ status: types_1.StepStatus.PENDING,
248
+ dependencies: [],
249
+ retry_count: 0,
250
+ max_retries: 3,
251
+ }];
252
+ }
253
+ /**
254
+ * Execute a single plan step
255
+ */
256
+ async executeStep(step) {
257
+ switch (step.agent) {
258
+ case types_1.AgentRole.EXECUTOR:
259
+ return this.executeToolStep(step);
260
+ case types_1.AgentRole.PLANNER:
261
+ return this.executeDecisionStep(step);
262
+ case types_1.AgentRole.REVIEWER:
263
+ return this.executeReviewStep(step);
264
+ default:
265
+ return { success: false, error: `Unknown agent role: ${step.agent}` };
266
+ }
267
+ }
268
+ /**
269
+ * Execute tool-based step (shell, filesystem)
270
+ */
271
+ async executeToolStep(step) {
272
+ try {
273
+ const messages = [
274
+ { role: 'system', content: SYSTEM_PROMPTS[types_1.AgentRole.EXECUTOR] },
275
+ { role: 'user', content: step.description },
276
+ ];
277
+ const response = await this.provider.complete(messages, 0.7, 1024);
278
+ if (response.error) {
279
+ return { success: false, error: response.error };
280
+ }
281
+ // Parse action from response
282
+ const action = this.parseAction(response.content);
283
+ logger.info(`Executor action: ${action.action} - ${action.input.substring(0, 100)}`);
284
+ if (action.action === 'shell') {
285
+ // Strip cd commands - shell tool already runs in project root
286
+ let cmd = action.input.replace(/^\s*cd\s+[^\s;&&|]+\s*[;&|]*\s*/g, '').trim();
287
+ if (!cmd)
288
+ cmd = 'echo "No command to run"';
289
+ logger.info(`Shell exec: ${cmd}`);
290
+ const result = await this.shell.run(cmd);
291
+ return {
292
+ success: result.returncode === 0,
293
+ output: result.stdout,
294
+ error: result.stderr || undefined,
295
+ };
296
+ }
297
+ else if (action.action === 'filesystem') {
298
+ // Parse filesystem command
299
+ const parts = action.input.split(' ');
300
+ const cmd = parts[0];
301
+ const filePath = parts[1];
302
+ if (cmd === 'read') {
303
+ const result = this.fs.read(filePath);
304
+ return { success: result.success, output: result.content !== null ? result.content : undefined, error: result.error || undefined };
305
+ }
306
+ else if (cmd === 'write') {
307
+ const content = parts.slice(2).join(' ');
308
+ const result = this.fs.write(filePath, content);
309
+ return { success: result.success, error: result.error || undefined };
310
+ }
311
+ }
312
+ return { success: true, output: response.content };
313
+ }
314
+ catch (error) {
315
+ return { success: false, error: error.message };
316
+ }
317
+ }
318
+ /**
319
+ * Execute decision/planning step - re-plans based on current state
320
+ */
321
+ async executeDecisionStep(step) {
322
+ try {
323
+ const completedSteps = this.state.plan
324
+ .filter(s => s.status === types_1.StepStatus.COMPLETED)
325
+ .map(s => `${s.id}: ${s.description} -> ${(s.result || '').substring(0, 200)}`);
326
+ const failedSteps = this.state.plan
327
+ .filter(s => s.status === types_1.StepStatus.FAILED)
328
+ .map(s => `${s.id}: ${s.description} -> ERROR: ${s.error}`);
329
+ const messages = [
330
+ { role: 'system', content: SYSTEM_PROMPTS[types_1.AgentRole.PLANNER] },
331
+ { role: 'user', content: `Original task: ${this.state.task}\nCompleted: ${completedSteps.join('\n')}\nFailed: ${failedSteps.join('\n')}\nDecision needed: ${step.description}` },
332
+ ];
333
+ const response = await this.provider.complete(messages, 0.3, 1000);
334
+ if (response.error) {
335
+ return { success: false, error: response.error };
336
+ }
337
+ return { success: true, output: response.content };
338
+ }
339
+ catch (error) {
340
+ return { success: false, error: error.message };
341
+ }
342
+ }
343
+ /**
344
+ * Execute review step
345
+ */
346
+ async executeReviewStep(step) {
347
+ try {
348
+ // Build execution context for reviewer
349
+ const executionResults = this.state.plan
350
+ .filter(s => s.status === types_1.StepStatus.COMPLETED || s.status === types_1.StepStatus.FAILED)
351
+ .map(s => ({
352
+ step: s.id,
353
+ description: s.description,
354
+ status: s.status,
355
+ result: (s.result || '').substring(0, 500),
356
+ error: s.error,
357
+ }));
358
+ const messages = [
359
+ { role: 'system', content: SYSTEM_PROMPTS[types_1.AgentRole.REVIEWER] },
360
+ { role: 'user', content: `Task: ${this.state.task}\n\nExecution Results:\n${JSON.stringify(executionResults, null, 2)}` },
361
+ ];
362
+ const response = await this.provider.complete(messages, 0.3, 1024);
363
+ // Parse review result
364
+ const approved = response.content.toLowerCase().includes('approved: true') ||
365
+ response.content.toLowerCase().includes('"approved": true');
366
+ return { success: approved, output: response.content };
367
+ }
368
+ catch (error) {
369
+ return { success: false, error: error.message };
370
+ }
371
+ }
372
+ /**
373
+ * Parse action from executor response
374
+ */
375
+ parseAction(content) {
376
+ try {
377
+ const jsonMatch = content.match(/\{[\s\S]*\}/);
378
+ if (jsonMatch) {
379
+ const parsed = JSON.parse(jsonMatch[0]);
380
+ return {
381
+ action: parsed.action || 'unknown',
382
+ input: parsed.input || parsed.command || '',
383
+ };
384
+ }
385
+ }
386
+ catch (err) {
387
+ logger.debug(`parseAction: JSON parse failed for content, treating as thought: ${err.message}`);
388
+ }
389
+ return { action: 'unknown', input: content };
390
+ }
391
+ /**
392
+ * Generate final summary
393
+ */
394
+ isSimpleTask(task) {
395
+ const simple = task.trim().toLowerCase();
396
+ const simplePatterns = ['hello', 'hi', 'hey', 'merhaba', 'selam', 'test', 'ping', 'help', 'yardım'];
397
+ return simple.split(/\s+/).length <= 3 && simplePatterns.some(p => simple.includes(p));
398
+ }
399
+ async handleSimpleTask(task) {
400
+ try {
401
+ const messages = [
402
+ { role: 'system', content: 'You are LinguClaw, a helpful AI coding assistant. Respond concisely and helpfully.' },
403
+ { role: 'user', content: task },
404
+ ];
405
+ const response = await this.provider.complete(messages, 0.7, 500);
406
+ if (response.error) {
407
+ return 'Error: ' + response.error;
408
+ }
409
+ if (!response.content || response.content.trim().length === 0) {
410
+ return 'Error: LLM returned empty response. Check your API key and credits.';
411
+ }
412
+ return response.content;
413
+ }
414
+ catch (error) {
415
+ return 'Error: ' + error.message;
416
+ }
417
+ }
418
+ generateSummary() {
419
+ const completed = this.state.plan.filter(s => s.status === types_1.StepStatus.COMPLETED).length;
420
+ const failed = this.state.plan.filter(s => s.status === types_1.StepStatus.FAILED).length;
421
+ const total = this.state.plan.length;
422
+ let summary = `# Execution Summary\n\n`;
423
+ summary += `Task: ${this.state.task}\n`;
424
+ summary += `Steps: ${completed}/${total} completed, ${failed} failed\n\n`;
425
+ summary += `## Results\n\n`;
426
+ for (const step of this.state.plan) {
427
+ const icon = step.status === types_1.StepStatus.COMPLETED ? '✅' :
428
+ step.status === types_1.StepStatus.FAILED ? '❌' : '⏳';
429
+ summary += `${icon} **${step.id}**: ${step.description}\n`;
430
+ if (step.result) {
431
+ summary += ` Result: ${step.result}\n`;
432
+ }
433
+ if (step.error) {
434
+ summary += ` Error: ${step.error}\n`;
435
+ }
436
+ }
437
+ return summary;
438
+ }
439
+ }
440
+ exports.Orchestrator = Orchestrator;
441
+ //# sourceMappingURL=orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Plugin System - OpenClaw Architecture
3
+ * TypeScript equivalent of Python plugins.py
4
+ */
5
+ import { PluginInfo, PluginContext } from './types';
6
+ export declare abstract class BasePlugin {
7
+ NAME: string;
8
+ VERSION: string;
9
+ DESCRIPTION: string;
10
+ AUTHOR: string;
11
+ DEPENDENCIES: string[];
12
+ protected context: PluginContext;
13
+ protected initialized: boolean;
14
+ constructor();
15
+ initialize(context: PluginContext): Promise<boolean>;
16
+ shutdown(): Promise<void>;
17
+ getInfo(): PluginInfo;
18
+ }
19
+ export declare abstract class ToolPlugin extends BasePlugin {
20
+ abstract _defineTools(): Record<string, (...args: any[]) => any>;
21
+ getTools(): Record<string, (...args: any[]) => any>;
22
+ }
23
+ export declare abstract class AgentPlugin extends BasePlugin {
24
+ _onInit(): void;
25
+ _onStep(step: any): void;
26
+ _onComplete(result: any): void;
27
+ _modifySystemPromptSafe(basePrompt: string, context: any): string;
28
+ }
29
+ export declare abstract class WorkflowPlugin extends BasePlugin {
30
+ _beforeWorkflow(workflowId: string, params: any): any;
31
+ _afterWorkflow(workflowId: string, result: any): any;
32
+ _onError(workflowId: string, error: Error): void;
33
+ }
34
+ export declare class PluginManager {
35
+ plugins: Map<string, BasePlugin>;
36
+ toolPlugins: Map<string, ToolPlugin>;
37
+ agentPlugins: Map<string, AgentPlugin>;
38
+ workflowPlugins: Map<string, WorkflowPlugin>;
39
+ private pluginDir;
40
+ constructor(pluginDir?: string);
41
+ discoverPlugins(): Promise<string[]>;
42
+ loadPlugin(pluginPath: string, context: PluginContext): Promise<boolean>;
43
+ loadAllPlugins(context: PluginContext): Promise<number>;
44
+ getPlugin(name: string): BasePlugin | undefined;
45
+ getToolPlugins(): Map<string, ToolPlugin>;
46
+ getAgentPlugins(): Map<string, AgentPlugin>;
47
+ getWorkflowPlugins(): Map<string, WorkflowPlugin>;
48
+ getAllTools(): Record<string, (...args: any[]) => any>;
49
+ shutdown(): Promise<void>;
50
+ }
51
+ export declare function getPluginManager(pluginDir?: string): PluginManager;
52
+ //# sourceMappingURL=plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAgB,aAAa,EAAU,MAAM,SAAS,CAAC;AAM1E,8BAAsB,UAAU;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IAEvB,SAAS,CAAC,OAAO,EAAG,aAAa,CAAC;IAClC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC;;IAWzB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAepD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAK/B,OAAO,IAAI,UAAU;CAStB;AAGD,8BAAsB,UAAW,SAAQ,UAAU;IACjD,QAAQ,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IAEhE,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;CAOpD;AAGD,8BAAsB,WAAY,SAAQ,UAAU;IAClD,OAAO,IAAI,IAAI;IACf,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IACxB,WAAW,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAE9B,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,MAAM;CAGlE;AAGD,8BAAsB,cAAe,SAAQ,UAAU;IACrD,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG;IAIrD,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG;IAIpD,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAGjD;AAGD,qBAAa,aAAa;IACxB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC7C,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,GAAE,MAA+B;IAQhD,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAwBpC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAuCxE,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAc7D,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI/C,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAIzC,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;IAI3C,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAIjD,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IAWhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAShC;AAKD,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa,CAKlE"}