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.
- package/LICENSE +21 -0
- package/README.md +161 -0
- package/dist/agent-system.d.ts +196 -0
- package/dist/agent-system.d.ts.map +1 -0
- package/dist/agent-system.js +738 -0
- package/dist/agent-system.js.map +1 -0
- package/dist/alphabeta.d.ts +54 -0
- package/dist/alphabeta.d.ts.map +1 -0
- package/dist/alphabeta.js +193 -0
- package/dist/alphabeta.js.map +1 -0
- package/dist/browser.d.ts +62 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +224 -0
- package/dist/browser.js.map +1 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +565 -0
- package/dist/cli.js.map +1 -0
- package/dist/code-parser.d.ts +39 -0
- package/dist/code-parser.d.ts.map +1 -0
- package/dist/code-parser.js +385 -0
- package/dist/code-parser.js.map +1 -0
- package/dist/config.d.ts +66 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +232 -0
- package/dist/config.js.map +1 -0
- package/dist/core/engine.d.ts +359 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/engine.js +127 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/daemon.d.ts +29 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +212 -0
- package/dist/daemon.js.map +1 -0
- package/dist/email-receiver.d.ts +63 -0
- package/dist/email-receiver.d.ts.map +1 -0
- package/dist/email-receiver.js +553 -0
- package/dist/email-receiver.js.map +1 -0
- package/dist/git-integration.d.ts +180 -0
- package/dist/git-integration.d.ts.map +1 -0
- package/dist/git-integration.js +850 -0
- package/dist/git-integration.js.map +1 -0
- package/dist/inbox.d.ts +84 -0
- package/dist/inbox.d.ts.map +1 -0
- package/dist/inbox.js +198 -0
- package/dist/inbox.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/languages/cpp.d.ts +51 -0
- package/dist/languages/cpp.d.ts.map +1 -0
- package/dist/languages/cpp.js +930 -0
- package/dist/languages/cpp.js.map +1 -0
- package/dist/languages/csharp.d.ts +79 -0
- package/dist/languages/csharp.d.ts.map +1 -0
- package/dist/languages/csharp.js +1776 -0
- package/dist/languages/csharp.js.map +1 -0
- package/dist/languages/go.d.ts +50 -0
- package/dist/languages/go.d.ts.map +1 -0
- package/dist/languages/go.js +882 -0
- package/dist/languages/go.js.map +1 -0
- package/dist/languages/java.d.ts +47 -0
- package/dist/languages/java.d.ts.map +1 -0
- package/dist/languages/java.js +649 -0
- package/dist/languages/java.js.map +1 -0
- package/dist/languages/python.d.ts +47 -0
- package/dist/languages/python.d.ts.map +1 -0
- package/dist/languages/python.js +655 -0
- package/dist/languages/python.js.map +1 -0
- package/dist/languages/rust.d.ts +61 -0
- package/dist/languages/rust.d.ts.map +1 -0
- package/dist/languages/rust.js +1064 -0
- package/dist/languages/rust.js.map +1 -0
- package/dist/logger.d.ts +20 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +133 -0
- package/dist/logger.js.map +1 -0
- package/dist/longterm-memory.d.ts +47 -0
- package/dist/longterm-memory.d.ts.map +1 -0
- package/dist/longterm-memory.js +300 -0
- package/dist/longterm-memory.js.map +1 -0
- package/dist/memory.d.ts +42 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +274 -0
- package/dist/memory.js.map +1 -0
- package/dist/messaging.d.ts +103 -0
- package/dist/messaging.d.ts.map +1 -0
- package/dist/messaging.js +645 -0
- package/dist/messaging.js.map +1 -0
- package/dist/multi-provider.d.ts +69 -0
- package/dist/multi-provider.d.ts.map +1 -0
- package/dist/multi-provider.js +484 -0
- package/dist/multi-provider.js.map +1 -0
- package/dist/orchestrator.d.ts +65 -0
- package/dist/orchestrator.d.ts.map +1 -0
- package/dist/orchestrator.js +441 -0
- package/dist/orchestrator.js.map +1 -0
- package/dist/plugins.d.ts +52 -0
- package/dist/plugins.d.ts.map +1 -0
- package/dist/plugins.js +215 -0
- package/dist/plugins.js.map +1 -0
- package/dist/prism-orchestrator.d.ts +26 -0
- package/dist/prism-orchestrator.d.ts.map +1 -0
- package/dist/prism-orchestrator.js +191 -0
- package/dist/prism-orchestrator.js.map +1 -0
- package/dist/prism.d.ts +46 -0
- package/dist/prism.d.ts.map +1 -0
- package/dist/prism.js +188 -0
- package/dist/prism.js.map +1 -0
- package/dist/privacy.d.ts +23 -0
- package/dist/privacy.d.ts.map +1 -0
- package/dist/privacy.js +220 -0
- package/dist/privacy.js.map +1 -0
- package/dist/proactive.d.ts +30 -0
- package/dist/proactive.d.ts.map +1 -0
- package/dist/proactive.js +260 -0
- package/dist/proactive.js.map +1 -0
- package/dist/refactoring-engine.d.ts +100 -0
- package/dist/refactoring-engine.d.ts.map +1 -0
- package/dist/refactoring-engine.js +717 -0
- package/dist/refactoring-engine.js.map +1 -0
- package/dist/resilience.d.ts +43 -0
- package/dist/resilience.d.ts.map +1 -0
- package/dist/resilience.js +200 -0
- package/dist/resilience.js.map +1 -0
- package/dist/safety.d.ts +40 -0
- package/dist/safety.d.ts.map +1 -0
- package/dist/safety.js +133 -0
- package/dist/safety.js.map +1 -0
- package/dist/sandbox.d.ts +33 -0
- package/dist/sandbox.d.ts.map +1 -0
- package/dist/sandbox.js +173 -0
- package/dist/sandbox.js.map +1 -0
- package/dist/scheduler.d.ts +72 -0
- package/dist/scheduler.d.ts.map +1 -0
- package/dist/scheduler.js +374 -0
- package/dist/scheduler.js.map +1 -0
- package/dist/semantic-memory.d.ts +70 -0
- package/dist/semantic-memory.d.ts.map +1 -0
- package/dist/semantic-memory.js +430 -0
- package/dist/semantic-memory.js.map +1 -0
- package/dist/skills.d.ts +97 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +575 -0
- package/dist/skills.js.map +1 -0
- package/dist/static/dashboard.html +853 -0
- package/dist/static/hub.html +772 -0
- package/dist/static/index.html +818 -0
- package/dist/static/logo.svg +24 -0
- package/dist/static/workflow-editor.html +913 -0
- package/dist/tools.d.ts +67 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +303 -0
- package/dist/tools.js.map +1 -0
- package/dist/types.d.ts +295 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +90 -0
- package/dist/types.js.map +1 -0
- package/dist/web.d.ts +76 -0
- package/dist/web.d.ts.map +1 -0
- package/dist/web.js +2139 -0
- package/dist/web.js.map +1 -0
- package/dist/workflow-engine.d.ts +114 -0
- package/dist/workflow-engine.d.ts.map +1 -0
- package/dist/workflow-engine.js +855 -0
- package/dist/workflow-engine.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Proactive behavior system - reminders, alerts, briefings
|
|
4
|
+
* TypeScript equivalent of Python proactive.py
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.ProactiveEngine = void 0;
|
|
11
|
+
exports.getProactiveEngine = getProactiveEngine;
|
|
12
|
+
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
13
|
+
const path_1 = __importDefault(require("path"));
|
|
14
|
+
const types_1 = require("./types");
|
|
15
|
+
const logger_1 = require("./logger");
|
|
16
|
+
const logger = (0, logger_1.getLogger)();
|
|
17
|
+
class ProactiveEngine {
|
|
18
|
+
dbPath;
|
|
19
|
+
db;
|
|
20
|
+
tasks;
|
|
21
|
+
running;
|
|
22
|
+
checkInterval;
|
|
23
|
+
constructor(dbPath) {
|
|
24
|
+
this.dbPath = dbPath || path_1.default.join(process.env.HOME || '~', '.linguclaw', 'proactive.db');
|
|
25
|
+
this.db = null;
|
|
26
|
+
this.tasks = new Map();
|
|
27
|
+
this.running = false;
|
|
28
|
+
this.checkInterval = null;
|
|
29
|
+
}
|
|
30
|
+
async init() {
|
|
31
|
+
try {
|
|
32
|
+
this.db = new better_sqlite3_1.default(this.dbPath);
|
|
33
|
+
this.createTable();
|
|
34
|
+
this.loadTasks();
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
logger.error(`Failed to initialize proactive engine: ${error}`);
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
createTable() {
|
|
43
|
+
if (!this.db)
|
|
44
|
+
return;
|
|
45
|
+
this.db.exec(`
|
|
46
|
+
CREATE TABLE IF NOT EXISTS proactive_tasks (
|
|
47
|
+
id TEXT PRIMARY KEY,
|
|
48
|
+
name TEXT NOT NULL,
|
|
49
|
+
description TEXT,
|
|
50
|
+
trigger_type TEXT NOT NULL,
|
|
51
|
+
trigger_config TEXT NOT NULL,
|
|
52
|
+
action_type TEXT NOT NULL,
|
|
53
|
+
action_config TEXT NOT NULL,
|
|
54
|
+
enabled INTEGER DEFAULT 1,
|
|
55
|
+
last_run TEXT,
|
|
56
|
+
run_count INTEGER DEFAULT 0,
|
|
57
|
+
created_at TEXT NOT NULL,
|
|
58
|
+
tags TEXT DEFAULT '[]'
|
|
59
|
+
)
|
|
60
|
+
`);
|
|
61
|
+
this.db.exec(`CREATE INDEX IF NOT EXISTS idx_tags ON proactive_tasks(tags)`);
|
|
62
|
+
}
|
|
63
|
+
loadTasks() {
|
|
64
|
+
if (!this.db)
|
|
65
|
+
return;
|
|
66
|
+
const rows = this.db.prepare('SELECT * FROM proactive_tasks').all();
|
|
67
|
+
for (const row of rows) {
|
|
68
|
+
const task = {
|
|
69
|
+
id: row.id,
|
|
70
|
+
name: row.name,
|
|
71
|
+
description: row.description || '',
|
|
72
|
+
trigger_type: row.trigger_type,
|
|
73
|
+
trigger_config: JSON.parse(row.trigger_config),
|
|
74
|
+
action_type: row.action_type,
|
|
75
|
+
action_config: JSON.parse(row.action_config),
|
|
76
|
+
enabled: Boolean(row.enabled),
|
|
77
|
+
last_run: row.last_run ? new Date(row.last_run) : null,
|
|
78
|
+
run_count: row.run_count,
|
|
79
|
+
created_at: new Date(row.created_at),
|
|
80
|
+
tags: JSON.parse(row.tags),
|
|
81
|
+
};
|
|
82
|
+
this.tasks.set(task.id, task);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
saveTask(task) {
|
|
86
|
+
if (!this.db)
|
|
87
|
+
return;
|
|
88
|
+
const stmt = this.db.prepare(`
|
|
89
|
+
INSERT OR REPLACE INTO proactive_tasks
|
|
90
|
+
(id, name, description, trigger_type, trigger_config, action_type,
|
|
91
|
+
action_config, enabled, last_run, run_count, created_at, tags)
|
|
92
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
93
|
+
`);
|
|
94
|
+
stmt.run(task.id, task.name, task.description, task.trigger_type, JSON.stringify(task.trigger_config), task.action_type, JSON.stringify(task.action_config), task.enabled ? 1 : 0, task.last_run?.toISOString() || null, task.run_count, task.created_at.toISOString(), JSON.stringify(task.tags));
|
|
95
|
+
}
|
|
96
|
+
addTask(task) {
|
|
97
|
+
this.tasks.set(task.id, task);
|
|
98
|
+
this.saveTask(task);
|
|
99
|
+
logger.info(`Added proactive task: ${task.name} (${task.id})`);
|
|
100
|
+
return task.id;
|
|
101
|
+
}
|
|
102
|
+
removeTask(taskId) {
|
|
103
|
+
if (this.tasks.has(taskId)) {
|
|
104
|
+
this.tasks.delete(taskId);
|
|
105
|
+
if (this.db) {
|
|
106
|
+
this.db.prepare('DELETE FROM proactive_tasks WHERE id = ?').run(taskId);
|
|
107
|
+
}
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
enableTask(taskId) {
|
|
113
|
+
const task = this.tasks.get(taskId);
|
|
114
|
+
if (task) {
|
|
115
|
+
task.enabled = true;
|
|
116
|
+
this.saveTask(task);
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
disableTask(taskId) {
|
|
122
|
+
const task = this.tasks.get(taskId);
|
|
123
|
+
if (task) {
|
|
124
|
+
task.enabled = false;
|
|
125
|
+
this.saveTask(task);
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
checkTriggers() {
|
|
131
|
+
const triggered = [];
|
|
132
|
+
const now = new Date();
|
|
133
|
+
for (const task of this.tasks.values()) {
|
|
134
|
+
if (!task.enabled)
|
|
135
|
+
continue;
|
|
136
|
+
if (task.trigger_type === types_1.TriggerType.TIME) {
|
|
137
|
+
const targetTime = task.trigger_config.time;
|
|
138
|
+
if (targetTime) {
|
|
139
|
+
const target = new Date(targetTime);
|
|
140
|
+
const diff = (now.getTime() - target.getTime()) / 1000;
|
|
141
|
+
if (diff >= 0 && diff <= 60) {
|
|
142
|
+
if (!task.last_run || task.last_run < target) {
|
|
143
|
+
triggered.push(task);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else if (task.trigger_type === types_1.TriggerType.INTERVAL) {
|
|
149
|
+
const intervalMinutes = task.trigger_config.minutes || 60;
|
|
150
|
+
if (task.last_run) {
|
|
151
|
+
const diff = (now.getTime() - task.last_run.getTime()) / (1000 * 60);
|
|
152
|
+
if (diff >= intervalMinutes) {
|
|
153
|
+
triggered.push(task);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
triggered.push(task);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return triggered;
|
|
162
|
+
}
|
|
163
|
+
executeTask(task) {
|
|
164
|
+
logger.info(`Executing proactive task: ${task.name}`);
|
|
165
|
+
task.last_run = new Date();
|
|
166
|
+
task.run_count++;
|
|
167
|
+
this.saveTask(task);
|
|
168
|
+
// Execute action based on type
|
|
169
|
+
switch (task.action_type) {
|
|
170
|
+
case types_1.ActionType.REMINDER:
|
|
171
|
+
logger.info(`REMINDER: ${task.action_config.message}`);
|
|
172
|
+
break;
|
|
173
|
+
case types_1.ActionType.ALERT:
|
|
174
|
+
logger.warn(`ALERT: ${task.action_config.message}`);
|
|
175
|
+
break;
|
|
176
|
+
case types_1.ActionType.BRIEFING:
|
|
177
|
+
logger.info(`BRIEFING: ${task.action_config.type}`);
|
|
178
|
+
break;
|
|
179
|
+
case types_1.ActionType.NOTIFICATION:
|
|
180
|
+
logger.info(`NOTIFICATION: ${task.action_config.message}`);
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
start() {
|
|
185
|
+
if (this.running)
|
|
186
|
+
return;
|
|
187
|
+
this.running = true;
|
|
188
|
+
logger.info('Proactive engine started');
|
|
189
|
+
// Check triggers every 30 seconds
|
|
190
|
+
this.checkInterval = setInterval(() => {
|
|
191
|
+
const triggered = this.checkTriggers();
|
|
192
|
+
for (const task of triggered) {
|
|
193
|
+
this.executeTask(task);
|
|
194
|
+
}
|
|
195
|
+
}, 30000);
|
|
196
|
+
}
|
|
197
|
+
stop() {
|
|
198
|
+
this.running = false;
|
|
199
|
+
if (this.checkInterval) {
|
|
200
|
+
clearInterval(this.checkInterval);
|
|
201
|
+
this.checkInterval = null;
|
|
202
|
+
}
|
|
203
|
+
logger.info('Proactive engine stopped');
|
|
204
|
+
}
|
|
205
|
+
addReminder(name, description, time, message, channels) {
|
|
206
|
+
const task = {
|
|
207
|
+
id: `reminder_${Date.now()}`,
|
|
208
|
+
name,
|
|
209
|
+
description,
|
|
210
|
+
trigger_type: types_1.TriggerType.TIME,
|
|
211
|
+
trigger_config: { time: time.toISOString() },
|
|
212
|
+
action_type: types_1.ActionType.REMINDER,
|
|
213
|
+
action_config: { message, channels: channels || ['console'] },
|
|
214
|
+
enabled: true,
|
|
215
|
+
run_count: 0,
|
|
216
|
+
created_at: new Date(),
|
|
217
|
+
tags: ['reminder'],
|
|
218
|
+
};
|
|
219
|
+
return this.addTask(task);
|
|
220
|
+
}
|
|
221
|
+
addDailyBriefing(timeStr = '08:00', channels) {
|
|
222
|
+
const [hour, minute] = timeStr.split(':').map(Number);
|
|
223
|
+
const now = new Date();
|
|
224
|
+
const target = new Date(now.getFullYear(), now.getMonth(), now.getDate(), hour, minute);
|
|
225
|
+
if (target < now) {
|
|
226
|
+
target.setDate(target.getDate() + 1);
|
|
227
|
+
}
|
|
228
|
+
const task = {
|
|
229
|
+
id: `briefing_${timeStr.replace(':', '')}`,
|
|
230
|
+
name: 'Daily Morning Briefing',
|
|
231
|
+
description: 'Morning summary of tasks, calendar, and news',
|
|
232
|
+
trigger_type: types_1.TriggerType.TIME,
|
|
233
|
+
trigger_config: { time: target.toISOString(), recurring: 'daily' },
|
|
234
|
+
action_type: types_1.ActionType.BRIEFING,
|
|
235
|
+
action_config: { channels: channels || ['console'], type: 'morning' },
|
|
236
|
+
enabled: true,
|
|
237
|
+
run_count: 0,
|
|
238
|
+
created_at: new Date(),
|
|
239
|
+
tags: ['briefing', 'daily'],
|
|
240
|
+
};
|
|
241
|
+
return this.addTask(task);
|
|
242
|
+
}
|
|
243
|
+
listTasks(tag) {
|
|
244
|
+
const tasks = Array.from(this.tasks.values());
|
|
245
|
+
if (tag) {
|
|
246
|
+
return tasks.filter(t => t.tags.includes(tag));
|
|
247
|
+
}
|
|
248
|
+
return tasks;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
exports.ProactiveEngine = ProactiveEngine;
|
|
252
|
+
// Global instance
|
|
253
|
+
let proactiveEngineInstance = null;
|
|
254
|
+
function getProactiveEngine() {
|
|
255
|
+
if (!proactiveEngineInstance) {
|
|
256
|
+
proactiveEngineInstance = new ProactiveEngine();
|
|
257
|
+
}
|
|
258
|
+
return proactiveEngineInstance;
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=proactive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proactive.js","sourceRoot":"","sources":["../src/proactive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code Refactoring Engine for LinguClaw
|
|
3
|
+
* Automated code transformations and improvements
|
|
4
|
+
*/
|
|
5
|
+
import type { ASTNode } from './core/engine';
|
|
6
|
+
export interface RefactoringOperation {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
category: RefactoringCategory;
|
|
11
|
+
appliesTo: string[];
|
|
12
|
+
canApply: (node: ASTNode) => boolean;
|
|
13
|
+
apply: (node: ASTNode, source: string) => RefactoringResult;
|
|
14
|
+
safety: 'safe' | 'requires-review' | 'risky';
|
|
15
|
+
breaking: boolean;
|
|
16
|
+
}
|
|
17
|
+
export type RefactoringCategory = 'simplification' | 'extraction' | 'reorganization' | 'modernization' | 'performance' | 'readability';
|
|
18
|
+
export interface RefactoringResult {
|
|
19
|
+
success: boolean;
|
|
20
|
+
original: string;
|
|
21
|
+
transformed: string;
|
|
22
|
+
changes: CodeChange[];
|
|
23
|
+
warnings: string[];
|
|
24
|
+
errors: string[];
|
|
25
|
+
}
|
|
26
|
+
export interface CodeChange {
|
|
27
|
+
type: 'replace' | 'insert' | 'delete';
|
|
28
|
+
startLine: number;
|
|
29
|
+
startColumn: number;
|
|
30
|
+
endLine: number;
|
|
31
|
+
endColumn: number;
|
|
32
|
+
originalText: string;
|
|
33
|
+
newText: string;
|
|
34
|
+
description: string;
|
|
35
|
+
}
|
|
36
|
+
export declare class RefactoringEngine {
|
|
37
|
+
private operations;
|
|
38
|
+
private appliedRefactorings;
|
|
39
|
+
constructor();
|
|
40
|
+
private registerDefaultOperations;
|
|
41
|
+
register(operation: RefactoringOperation): void;
|
|
42
|
+
getAvailableOperations(language: string): RefactoringOperation[];
|
|
43
|
+
analyzeForRefactoring(ast: ASTNode, language: string, source: string): RefactoringSuggestion[];
|
|
44
|
+
private calculateImpact;
|
|
45
|
+
applyRefactoring(filePath: string, operationId: string, ast: ASTNode, dryRun?: boolean): Promise<RefactoringResult>;
|
|
46
|
+
private hasUnusedImports;
|
|
47
|
+
private removeUnusedImports;
|
|
48
|
+
private findUnusedImports;
|
|
49
|
+
private hasRedundantBooleanExpressions;
|
|
50
|
+
private simplifyBooleanExpressions;
|
|
51
|
+
private hasDeadCode;
|
|
52
|
+
private removeDeadCode;
|
|
53
|
+
private canExtractMethod;
|
|
54
|
+
private extractMethod;
|
|
55
|
+
private canExtractVariable;
|
|
56
|
+
private extractVariable;
|
|
57
|
+
private canExtractInterface;
|
|
58
|
+
private extractInterface;
|
|
59
|
+
private canConvertToArrowFunction;
|
|
60
|
+
private convertToArrowFunction;
|
|
61
|
+
private hasStringConcatenation;
|
|
62
|
+
private convertToTemplateLiterals;
|
|
63
|
+
private hasPromiseChains;
|
|
64
|
+
private convertToAsyncAwait;
|
|
65
|
+
private hasNestedPropertyChecks;
|
|
66
|
+
private convertToOptionalChaining;
|
|
67
|
+
private hasStringConcatInLoop;
|
|
68
|
+
private optimizeStringConcatenation;
|
|
69
|
+
private canConvertToLinq;
|
|
70
|
+
private convertToLinq;
|
|
71
|
+
private hasPoorlyNamedVariables;
|
|
72
|
+
private renameVariables;
|
|
73
|
+
private missingTypeAnnotations;
|
|
74
|
+
private addTypeAnnotations;
|
|
75
|
+
private hasUnorganizedMembers;
|
|
76
|
+
private reorganizeClassMembers;
|
|
77
|
+
private applyChanges;
|
|
78
|
+
batchRefactor(files: string[], operationIds: string[], dryRun?: boolean): Promise<BatchRefactoringResult>;
|
|
79
|
+
getAppliedRefactorings(): RefactoringResult[];
|
|
80
|
+
undoLastRefactoring(): boolean;
|
|
81
|
+
}
|
|
82
|
+
export interface RefactoringSuggestion {
|
|
83
|
+
operation: RefactoringOperation;
|
|
84
|
+
preview: RefactoringResult;
|
|
85
|
+
impact: number;
|
|
86
|
+
}
|
|
87
|
+
export interface FileRefactoringResult {
|
|
88
|
+
file: string;
|
|
89
|
+
results: RefactoringResult[];
|
|
90
|
+
totalChanges: number;
|
|
91
|
+
}
|
|
92
|
+
export interface BatchRefactoringResult {
|
|
93
|
+
files: FileRefactoringResult[];
|
|
94
|
+
totalFiles: number;
|
|
95
|
+
successfulRefactorings: number;
|
|
96
|
+
totalChanges: number;
|
|
97
|
+
dryRun: boolean;
|
|
98
|
+
}
|
|
99
|
+
export default RefactoringEngine;
|
|
100
|
+
//# sourceMappingURL=refactoring-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refactoring-engine.d.ts","sourceRoot":"","sources":["../src/refactoring-engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,eAAe,CAAC;AAQ7D,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;IACrC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,iBAAiB,CAAC;IAC5D,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,OAAO,CAAC;IAC7C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,mBAAmB,GAC3B,gBAAgB,GAChB,YAAY,GACZ,gBAAgB,GAChB,eAAe,GACf,aAAa,GACb,aAAa,CAAC;AAElB,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAgD;IAClE,OAAO,CAAC,mBAAmB,CAA2B;;IAMtD,OAAO,CAAC,yBAAyB;IA2LjC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAI/C,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,EAAE;IAKhE,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,qBAAqB,EAAE;IAoB9F,OAAO,CAAC,eAAe;IAejB,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,OAAO,EACZ,MAAM,GAAE,OAAe,GACtB,OAAO,CAAC,iBAAiB,CAAC;IAyC7B,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,8BAA8B;IAKtC,OAAO,CAAC,0BAA0B;IA0ClC,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,gBAAgB;IAkCxB,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,sBAAsB;IAmC9B,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,yBAAyB;IAwCjC,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,yBAAyB;IAqCjC,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,2BAA2B;IAWnC,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,YAAY;IAyBd,aAAa,CACjB,KAAK,EAAE,MAAM,EAAE,EACf,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,GAAE,OAAc,GACrB,OAAO,CAAC,sBAAsB,CAAC;IA4ClC,sBAAsB,IAAI,iBAAiB,EAAE;IAI7C,mBAAmB,IAAI,OAAO;CAS/B;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,oBAAoB,CAAC;IAChC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,eAAe,iBAAiB,CAAC"}
|