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
package/dist/skills.js ADDED
@@ -0,0 +1,575 @@
1
+ "use strict";
2
+ /**
3
+ * Skills system - modular automation and task execution
4
+ * TypeScript equivalent of Python skills.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.SkillManager = exports.NoteSkill = exports.SystemSkill = exports.WebSearchSkill = exports.FileSkill = exports.CalendarSkill = exports.EmailSkill = exports.BaseSkill = void 0;
11
+ exports.getSkillManager = getSkillManager;
12
+ const types_1 = require("./types");
13
+ const logger_1 = require("./logger");
14
+ const nodemailer_1 = __importDefault(require("nodemailer"));
15
+ const path_1 = __importDefault(require("path"));
16
+ const fs_1 = __importDefault(require("fs"));
17
+ const logger = (0, logger_1.getLogger)();
18
+ class BaseSkill {
19
+ config;
20
+ constructor(config = {}) {
21
+ this.config = config;
22
+ }
23
+ getSchema() {
24
+ return {
25
+ name: this.NAME,
26
+ description: this.DESCRIPTION,
27
+ version: this.VERSION,
28
+ type: this.TYPE,
29
+ parameters: {},
30
+ };
31
+ }
32
+ }
33
+ exports.BaseSkill = BaseSkill;
34
+ // ============== Email Skill ==============
35
+ class EmailSkill extends BaseSkill {
36
+ NAME = 'email';
37
+ DESCRIPTION = 'Send and manage emails';
38
+ VERSION = '1.0.0';
39
+ AUTHOR = 'LinguClaw';
40
+ TYPE = types_1.SkillType.PYTHON;
41
+ async execute(params) {
42
+ const action = params.action || 'send';
43
+ switch (action) {
44
+ case 'send':
45
+ return this.sendEmail(params);
46
+ case 'read':
47
+ return { success: true, output: 'Email reading requires IMAP configuration' };
48
+ case 'search':
49
+ return { success: true, output: 'Email search requires IMAP configuration' };
50
+ default:
51
+ return { success: false, error: `Unknown action: ${action}` };
52
+ }
53
+ }
54
+ async sendEmail(params) {
55
+ try {
56
+ const smtpHost = this.config.smtp_host || process.env.SMTP_HOST || 'smtp.gmail.com';
57
+ const smtpPort = parseInt(this.config.smtp_port || process.env.SMTP_PORT || '587', 10);
58
+ const username = this.config.username || process.env.EMAIL_USERNAME;
59
+ const password = this.config.password || process.env.EMAIL_PASSWORD;
60
+ if (!username || !password) {
61
+ return { success: false, error: 'Email credentials not configured' };
62
+ }
63
+ const transporter = nodemailer_1.default.createTransport({
64
+ host: smtpHost,
65
+ port: smtpPort,
66
+ secure: smtpPort === 465,
67
+ auth: { user: username, pass: password },
68
+ });
69
+ await transporter.sendMail({
70
+ from: username,
71
+ to: params.to,
72
+ subject: params.subject || 'No Subject',
73
+ text: params.body || '',
74
+ });
75
+ return { success: true, output: 'Email sent successfully' };
76
+ }
77
+ catch (error) {
78
+ return { success: false, error: error.message };
79
+ }
80
+ }
81
+ }
82
+ exports.EmailSkill = EmailSkill;
83
+ // ============== Calendar Skill ==============
84
+ class CalendarSkill extends BaseSkill {
85
+ NAME = 'calendar';
86
+ DESCRIPTION = 'Manage calendar events and scheduling';
87
+ VERSION = '1.0.0';
88
+ AUTHOR = 'LinguClaw';
89
+ TYPE = types_1.SkillType.PYTHON;
90
+ async execute(params) {
91
+ const action = params.action || 'list';
92
+ switch (action) {
93
+ case 'create':
94
+ return this.createEvent(params);
95
+ case 'list':
96
+ return { success: true, output: 'Calendar events listed' };
97
+ case 'delete':
98
+ return { success: true, output: 'Event deleted' };
99
+ default:
100
+ return { success: false, error: `Unknown action: ${action}` };
101
+ }
102
+ }
103
+ async createEvent(params) {
104
+ try {
105
+ const event = {
106
+ title: params.title || 'New Event',
107
+ description: params.description || '',
108
+ start: new Date(params.start),
109
+ end: new Date(params.end),
110
+ };
111
+ // Save to simple JSON storage
112
+ const dataDir = path_1.default.join(process.env.HOME || '~', '.linguclaw');
113
+ if (!fs_1.default.existsSync(dataDir)) {
114
+ fs_1.default.mkdirSync(dataDir, { recursive: true });
115
+ }
116
+ const calendarFile = path_1.default.join(dataDir, 'calendar.json');
117
+ let events = [];
118
+ if (fs_1.default.existsSync(calendarFile)) {
119
+ events = JSON.parse(fs_1.default.readFileSync(calendarFile, 'utf-8'));
120
+ }
121
+ events.push(event);
122
+ fs_1.default.writeFileSync(calendarFile, JSON.stringify(events, null, 2));
123
+ return { success: true, output: `Event created: ${event.title}` };
124
+ }
125
+ catch (error) {
126
+ return { success: false, error: error.message };
127
+ }
128
+ }
129
+ }
130
+ exports.CalendarSkill = CalendarSkill;
131
+ // ============== File Manager Skill ==============
132
+ class FileSkill extends BaseSkill {
133
+ NAME = 'file_manager';
134
+ DESCRIPTION = 'Advanced file operations and organization';
135
+ VERSION = '1.0.0';
136
+ AUTHOR = 'LinguClaw';
137
+ TYPE = types_1.SkillType.PYTHON;
138
+ async execute(params) {
139
+ const action = params.action;
140
+ switch (action) {
141
+ case 'organize':
142
+ return this.organizeFiles(params);
143
+ case 'search':
144
+ return this.searchFiles(params);
145
+ case 'backup':
146
+ return this.backupFiles(params);
147
+ default:
148
+ return { success: false, error: `Unknown action: ${action}` };
149
+ }
150
+ }
151
+ async organizeFiles(params) {
152
+ try {
153
+ const source = path_1.default.resolve(params.source || '.');
154
+ const by = params.by || 'type';
155
+ if (!fs_1.default.existsSync(source)) {
156
+ return { success: false, error: `Source path not found: ${source}` };
157
+ }
158
+ let organized = 0;
159
+ const entries = fs_1.default.readdirSync(source);
160
+ for (const entry of entries) {
161
+ const fullPath = path_1.default.join(source, entry);
162
+ const stat = fs_1.default.statSync(fullPath);
163
+ if (stat.isFile()) {
164
+ let dest;
165
+ if (by === 'type') {
166
+ const ext = path_1.default.extname(entry) || 'no_extension';
167
+ dest = path_1.default.join(source, ext.replace('.', ''));
168
+ }
169
+ else if (by === 'date') {
170
+ const mtime = stat.mtime;
171
+ dest = path_1.default.join(source, mtime.getFullYear().toString(), (mtime.getMonth() + 1).toString());
172
+ }
173
+ else {
174
+ continue;
175
+ }
176
+ if (!fs_1.default.existsSync(dest)) {
177
+ fs_1.default.mkdirSync(dest, { recursive: true });
178
+ }
179
+ const newPath = path_1.default.join(dest, entry);
180
+ fs_1.default.renameSync(fullPath, newPath);
181
+ organized++;
182
+ }
183
+ }
184
+ return { success: true, output: `Organized ${organized} files` };
185
+ }
186
+ catch (error) {
187
+ return { success: false, error: error.message };
188
+ }
189
+ }
190
+ async searchFiles(params) {
191
+ try {
192
+ const root = path_1.default.resolve(params.root || '.');
193
+ const pattern = params.pattern || '*';
194
+ const matches = [];
195
+ const searchRecursive = (dir) => {
196
+ const entries = fs_1.default.readdirSync(dir);
197
+ for (const entry of entries) {
198
+ const fullPath = path_1.default.join(dir, entry);
199
+ const stat = fs_1.default.statSync(fullPath);
200
+ if (stat.isDirectory() && !entry.startsWith('.') && entry !== 'node_modules') {
201
+ searchRecursive(fullPath);
202
+ }
203
+ else if (stat.isFile()) {
204
+ // Simple glob matching
205
+ const regex = new RegExp(pattern.replace(/\*/g, '.*').replace(/\?/g, '.'));
206
+ if (regex.test(entry)) {
207
+ matches.push(fullPath);
208
+ }
209
+ }
210
+ }
211
+ };
212
+ searchRecursive(root);
213
+ return { success: true, output: `Found ${matches.length} files`, metadata: { files: matches.slice(0, 20) } };
214
+ }
215
+ catch (error) {
216
+ return { success: false, error: error.message };
217
+ }
218
+ }
219
+ async backupFiles(params) {
220
+ try {
221
+ const source = path_1.default.resolve(params.source);
222
+ const dest = path_1.default.resolve(params.destination);
223
+ if (!fs_1.default.existsSync(source)) {
224
+ return { success: false, error: `Source not found: ${source}` };
225
+ }
226
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, -5);
227
+ const backupDir = path_1.default.join(dest, `backup_${timestamp}`);
228
+ fs_1.default.mkdirSync(backupDir, { recursive: true });
229
+ // Copy directory recursively
230
+ this.copyRecursive(source, path_1.default.join(backupDir, path_1.default.basename(source)));
231
+ return { success: true, output: `Backup created at ${backupDir}` };
232
+ }
233
+ catch (error) {
234
+ return { success: false, error: error.message };
235
+ }
236
+ }
237
+ copyRecursive(src, dest) {
238
+ const stat = fs_1.default.statSync(src);
239
+ if (stat.isDirectory()) {
240
+ if (!fs_1.default.existsSync(dest)) {
241
+ fs_1.default.mkdirSync(dest, { recursive: true });
242
+ }
243
+ const entries = fs_1.default.readdirSync(src);
244
+ for (const entry of entries) {
245
+ this.copyRecursive(path_1.default.join(src, entry), path_1.default.join(dest, entry));
246
+ }
247
+ }
248
+ else {
249
+ fs_1.default.copyFileSync(src, dest);
250
+ }
251
+ }
252
+ }
253
+ exports.FileSkill = FileSkill;
254
+ // ============== Web Search Skill ==============
255
+ class WebSearchSkill extends BaseSkill {
256
+ NAME = 'web_search';
257
+ DESCRIPTION = 'Search the web and fetch page content';
258
+ VERSION = '1.0.0';
259
+ AUTHOR = 'LinguClaw';
260
+ TYPE = types_1.SkillType.PYTHON;
261
+ async execute(params) {
262
+ const action = params.action || 'search';
263
+ switch (action) {
264
+ case 'search':
265
+ return this.search(params.query);
266
+ case 'fetch':
267
+ return this.fetchPage(params.url);
268
+ default:
269
+ return { success: false, error: `Unknown action: ${action}` };
270
+ }
271
+ }
272
+ async search(query) {
273
+ if (!query)
274
+ return { success: false, error: 'Query is required' };
275
+ try {
276
+ const axios = require('axios');
277
+ const res = await axios.get(`https://html.duckduckgo.com/html/?q=${encodeURIComponent(query)}`, {
278
+ headers: { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36' },
279
+ timeout: 10000,
280
+ });
281
+ const html = res.data;
282
+ const results = [];
283
+ const titleRegex = /<a[^>]*class="result__a"[^>]*>(.*?)<\/a>/gi;
284
+ const snippetRegex = /<a[^>]*class="result__snippet"[^>]*>(.*?)<\/a>/gi;
285
+ let titleMatch;
286
+ while ((titleMatch = titleRegex.exec(html)) !== null && results.length < 5) {
287
+ results.push({
288
+ title: titleMatch[1].replace(/<[^>]*>/g, '').trim(),
289
+ url: '',
290
+ snippet: '',
291
+ });
292
+ }
293
+ let snippetMatch;
294
+ let idx = 0;
295
+ while ((snippetMatch = snippetRegex.exec(html)) !== null && idx < results.length) {
296
+ results[idx].snippet = snippetMatch[1].replace(/<[^>]*>/g, '').trim();
297
+ idx++;
298
+ }
299
+ return {
300
+ success: true,
301
+ output: results.map((r, i) => `${i + 1}. ${r.title}\n ${r.snippet}`).join('\n\n'),
302
+ metadata: { results },
303
+ };
304
+ }
305
+ catch (error) {
306
+ return { success: false, error: error.message };
307
+ }
308
+ }
309
+ async fetchPage(url) {
310
+ if (!url)
311
+ return { success: false, error: 'URL is required' };
312
+ try {
313
+ const axios = require('axios');
314
+ const res = await axios.get(url, {
315
+ headers: { 'User-Agent': 'Mozilla/5.0' },
316
+ timeout: 15000,
317
+ maxContentLength: 1024 * 1024, // 1MB max
318
+ });
319
+ const html = res.data;
320
+ // Extract text content
321
+ const text = html
322
+ .replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '')
323
+ .replace(/<style[^>]*>[\s\S]*?<\/style>/gi, '')
324
+ .replace(/<[^>]*>/g, ' ')
325
+ .replace(/\s+/g, ' ')
326
+ .trim()
327
+ .substring(0, 5000);
328
+ return { success: true, output: text };
329
+ }
330
+ catch (error) {
331
+ return { success: false, error: error.message };
332
+ }
333
+ }
334
+ }
335
+ exports.WebSearchSkill = WebSearchSkill;
336
+ // ============== System Command Skill ==============
337
+ class SystemSkill extends BaseSkill {
338
+ NAME = 'system';
339
+ DESCRIPTION = 'System utilities: time, uptime, disk, processes';
340
+ VERSION = '1.0.0';
341
+ AUTHOR = 'LinguClaw';
342
+ TYPE = types_1.SkillType.PYTHON;
343
+ async execute(params) {
344
+ const action = params.action || 'info';
345
+ switch (action) {
346
+ case 'info':
347
+ return this.systemInfo();
348
+ case 'time':
349
+ return { success: true, output: new Date().toLocaleString() };
350
+ case 'uptime':
351
+ return this.getUptime();
352
+ case 'disk':
353
+ return this.getDisk();
354
+ case 'exec':
355
+ return this.safeExec(params.command);
356
+ default:
357
+ return { success: false, error: `Unknown action: ${action}` };
358
+ }
359
+ }
360
+ systemInfo() {
361
+ const os = require('os');
362
+ const totalMem = os.totalmem();
363
+ const freeMem = os.freemem();
364
+ const info = [
365
+ `Hostname: ${os.hostname()}`,
366
+ `Platform: ${os.platform()} ${os.arch()}`,
367
+ `CPUs: ${os.cpus().length}x ${os.cpus()[0]?.model || 'Unknown'}`,
368
+ `Memory: ${((totalMem - freeMem) / 1024 / 1024 / 1024).toFixed(1)}GB / ${(totalMem / 1024 / 1024 / 1024).toFixed(1)}GB`,
369
+ `Uptime: ${Math.floor(os.uptime() / 3600)}h ${Math.floor((os.uptime() % 3600) / 60)}m`,
370
+ `Load: ${os.loadavg().map((l) => l.toFixed(2)).join(', ')}`,
371
+ ].join('\n');
372
+ return { success: true, output: info };
373
+ }
374
+ getUptime() {
375
+ const os = require('os');
376
+ const uptime = os.uptime();
377
+ const days = Math.floor(uptime / 86400);
378
+ const hours = Math.floor((uptime % 86400) / 3600);
379
+ const mins = Math.floor((uptime % 3600) / 60);
380
+ return { success: true, output: `System uptime: ${days}d ${hours}h ${mins}m` };
381
+ }
382
+ getDisk() {
383
+ try {
384
+ const { execSync } = require('child_process');
385
+ const output = execSync('df -h / 2>/dev/null', { encoding: 'utf-8', timeout: 5000 });
386
+ return { success: true, output: output.trim() };
387
+ }
388
+ catch (error) {
389
+ return { success: false, error: error.message };
390
+ }
391
+ }
392
+ safeExec(command) {
393
+ if (!command)
394
+ return { success: false, error: 'Command is required' };
395
+ // Block dangerous commands
396
+ const blocked = ['rm -rf', 'mkfs', 'dd if=', ':(){', 'chmod -R 777', 'sudo rm'];
397
+ for (const b of blocked) {
398
+ if (command.includes(b)) {
399
+ return { success: false, error: `Blocked dangerous command: ${b}` };
400
+ }
401
+ }
402
+ try {
403
+ const { execSync } = require('child_process');
404
+ const output = execSync(command, {
405
+ encoding: 'utf-8',
406
+ timeout: 10000,
407
+ maxBuffer: 1024 * 512, // 512KB
408
+ });
409
+ return { success: true, output: output.trim().substring(0, 5000) };
410
+ }
411
+ catch (error) {
412
+ return { success: false, error: error.message };
413
+ }
414
+ }
415
+ }
416
+ exports.SystemSkill = SystemSkill;
417
+ // ============== Note Taking Skill ==============
418
+ class NoteSkill extends BaseSkill {
419
+ NAME = 'notes';
420
+ DESCRIPTION = 'Create, search, and manage quick notes';
421
+ VERSION = '1.0.0';
422
+ AUTHOR = 'LinguClaw';
423
+ TYPE = types_1.SkillType.PYTHON;
424
+ notesPath;
425
+ constructor(config = {}) {
426
+ super(config);
427
+ this.notesPath = path_1.default.join(process.env.HOME || '~', '.linguclaw', 'notes.json');
428
+ }
429
+ async execute(params) {
430
+ const action = params.action || 'list';
431
+ switch (action) {
432
+ case 'add':
433
+ return this.addNote(params.title, params.content, params.tags);
434
+ case 'list':
435
+ return this.listNotes(params.tag);
436
+ case 'search':
437
+ return this.searchNotes(params.query);
438
+ case 'delete':
439
+ return this.deleteNote(params.id);
440
+ default:
441
+ return { success: false, error: `Unknown action: ${action}` };
442
+ }
443
+ }
444
+ loadNotes() {
445
+ try {
446
+ if (fs_1.default.existsSync(this.notesPath)) {
447
+ return JSON.parse(fs_1.default.readFileSync(this.notesPath, 'utf-8'));
448
+ }
449
+ }
450
+ catch (err) {
451
+ const logger = (0, logger_1.getLogger)();
452
+ logger.debug(`Notes load failed: ${err.message}`);
453
+ }
454
+ return [];
455
+ }
456
+ saveNotes(notes) {
457
+ const dir = path_1.default.dirname(this.notesPath);
458
+ if (!fs_1.default.existsSync(dir))
459
+ fs_1.default.mkdirSync(dir, { recursive: true });
460
+ fs_1.default.writeFileSync(this.notesPath, JSON.stringify(notes, null, 2));
461
+ }
462
+ addNote(title, content, tags) {
463
+ if (!title)
464
+ return { success: false, error: 'Title is required' };
465
+ const notes = this.loadNotes();
466
+ const note = {
467
+ id: 'n-' + Date.now().toString(36),
468
+ title,
469
+ content: content || '',
470
+ tags: tags ? tags.split(',').map((t) => t.trim()) : [],
471
+ createdAt: new Date().toISOString(),
472
+ };
473
+ notes.push(note);
474
+ this.saveNotes(notes);
475
+ return { success: true, output: `Note created: "${title}" (${note.id})` };
476
+ }
477
+ listNotes(tag) {
478
+ let notes = this.loadNotes();
479
+ if (tag) {
480
+ notes = notes.filter((n) => n.tags?.some((t) => t.toLowerCase() === tag.toLowerCase()));
481
+ }
482
+ if (notes.length === 0)
483
+ return { success: true, output: 'No notes found' };
484
+ const output = notes.map((n) => `[${n.id}] ${n.title} ${n.tags?.length ? '(' + n.tags.join(', ') + ')' : ''}`).join('\n');
485
+ return { success: true, output, metadata: { count: notes.length } };
486
+ }
487
+ searchNotes(query) {
488
+ if (!query)
489
+ return this.listNotes();
490
+ const notes = this.loadNotes();
491
+ const q = query.toLowerCase();
492
+ const results = notes.filter((n) => n.title?.toLowerCase().includes(q) || n.content?.toLowerCase().includes(q));
493
+ if (results.length === 0)
494
+ return { success: true, output: `No notes matching "${query}"` };
495
+ const output = results.map((n) => `[${n.id}] ${n.title}: ${(n.content || '').substring(0, 80)}`).join('\n');
496
+ return { success: true, output };
497
+ }
498
+ deleteNote(id) {
499
+ if (!id)
500
+ return { success: false, error: 'Note ID is required' };
501
+ const notes = this.loadNotes();
502
+ const idx = notes.findIndex((n) => n.id === id);
503
+ if (idx === -1)
504
+ return { success: false, error: `Note not found: ${id}` };
505
+ const removed = notes.splice(idx, 1)[0];
506
+ this.saveNotes(notes);
507
+ return { success: true, output: `Deleted: "${removed.title}"` };
508
+ }
509
+ }
510
+ exports.NoteSkill = NoteSkill;
511
+ // ============== Skill Manager ==============
512
+ class SkillManager {
513
+ skills;
514
+ skillsDir;
515
+ constructor(skillsDir) {
516
+ this.skills = new Map();
517
+ this.skillsDir = skillsDir || path_1.default.join(process.env.HOME || '~', '.linguclaw', 'skills');
518
+ if (!fs_1.default.existsSync(this.skillsDir)) {
519
+ fs_1.default.mkdirSync(this.skillsDir, { recursive: true });
520
+ }
521
+ }
522
+ register(skill) {
523
+ this.skills.set(skill.NAME, skill);
524
+ logger.info(`Registered skill: ${skill.NAME}`);
525
+ }
526
+ unregister(name) {
527
+ if (this.skills.has(name)) {
528
+ this.skills.delete(name);
529
+ logger.info(`Unregistered skill: ${name}`);
530
+ }
531
+ }
532
+ get(name) {
533
+ return this.skills.get(name);
534
+ }
535
+ listSkills() {
536
+ return Array.from(this.skills.values()).map(skill => ({
537
+ name: skill.NAME,
538
+ description: skill.DESCRIPTION,
539
+ version: skill.VERSION,
540
+ type: skill.TYPE,
541
+ }));
542
+ }
543
+ async execute(skillName, params) {
544
+ const skill = this.skills.get(skillName);
545
+ if (!skill) {
546
+ return { success: false, error: `Skill not found: ${skillName}` };
547
+ }
548
+ try {
549
+ return await skill.execute(params);
550
+ }
551
+ catch (error) {
552
+ logger.error(`Skill execution error: ${error.message}`);
553
+ return { success: false, error: error.message };
554
+ }
555
+ }
556
+ loadBuiltinSkills() {
557
+ this.register(new EmailSkill());
558
+ this.register(new CalendarSkill());
559
+ this.register(new FileSkill());
560
+ this.register(new WebSearchSkill());
561
+ this.register(new SystemSkill());
562
+ this.register(new NoteSkill());
563
+ logger.info(`Loaded ${this.skills.size} built-in skills`);
564
+ }
565
+ }
566
+ exports.SkillManager = SkillManager;
567
+ // Global instance
568
+ let skillManagerInstance = null;
569
+ function getSkillManager() {
570
+ if (!skillManagerInstance) {
571
+ skillManagerInstance = new SkillManager();
572
+ }
573
+ return skillManagerInstance;
574
+ }
575
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}