@thelapyae/geniclaw 1.0.0 → 1.1.2
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/bin/geniclaw.js +198 -35
- package/dist/config-manager.d.ts +1 -0
- package/dist/config-manager.d.ts.map +1 -1
- package/dist/config-manager.js.map +1 -1
- package/dist/queue-processor.js +41 -14
- package/dist/queue-processor.js.map +1 -1
- package/dist/skill-manager.d.ts +24 -0
- package/dist/skill-manager.d.ts.map +1 -0
- package/dist/skill-manager.js +114 -0
- package/dist/skill-manager.js.map +1 -0
- package/package.json +3 -3
package/bin/geniclaw.js
CHANGED
|
@@ -5,12 +5,14 @@ const fs = require('fs');
|
|
|
5
5
|
const os = require('os');
|
|
6
6
|
const { program } = require('commander');
|
|
7
7
|
const inquirer = require('inquirer');
|
|
8
|
+
const https = require('https'); // For simple URL fetch if needed in TUI directly or via script
|
|
8
9
|
|
|
9
10
|
// Config Paths
|
|
10
11
|
const LOCAL_DIR = path.join(process.cwd(), '.geniclaw');
|
|
11
12
|
const GENICLAW_WORK_DIR = process.env.GENICLAW_WORK_DIR || (fs.existsSync(LOCAL_DIR) ? LOCAL_DIR : path.join(os.homedir(), '.geniclaw'));
|
|
12
13
|
const CONFIG_FILE = path.join(GENICLAW_WORK_DIR, 'config.json');
|
|
13
14
|
const SESSIONS_DIR = path.join(GENICLAW_WORK_DIR, 'sessions');
|
|
15
|
+
const SKILLS_DIR = path.join(GENICLAW_WORK_DIR, 'skills');
|
|
14
16
|
|
|
15
17
|
const SCRIPT_PATH = path.join(__dirname, '../geniclaw.sh');
|
|
16
18
|
|
|
@@ -48,19 +50,39 @@ function saveConfig(config) {
|
|
|
48
50
|
fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
|
|
49
51
|
}
|
|
50
52
|
|
|
51
|
-
//
|
|
52
|
-
function
|
|
53
|
-
if (!fs.existsSync(
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
53
|
+
// Helper: Get Skills
|
|
54
|
+
function getSkills() {
|
|
55
|
+
if (!fs.existsSync(SKILLS_DIR)) return [];
|
|
56
|
+
return fs.readdirSync(SKILLS_DIR)
|
|
57
|
+
.filter(f => f.endsWith('.json'))
|
|
58
|
+
.map(f => {
|
|
59
|
+
try { return JSON.parse(fs.readFileSync(path.join(SKILLS_DIR, f), 'utf8')); }
|
|
60
|
+
catch(e) { return null; }
|
|
61
|
+
})
|
|
62
|
+
.filter(s => s !== null);
|
|
59
63
|
}
|
|
60
64
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return
|
|
65
|
+
// Helper: Install Skill
|
|
66
|
+
async function installSkillFromUrl(url) {
|
|
67
|
+
return new Promise((resolve, reject) => {
|
|
68
|
+
https.get(url, (res) => {
|
|
69
|
+
let data = '';
|
|
70
|
+
res.on('data', chunk => data += chunk);
|
|
71
|
+
res.on('end', () => {
|
|
72
|
+
try {
|
|
73
|
+
const skill = JSON.parse(data);
|
|
74
|
+
if (!skill.name || !skill.systemInstruction) {
|
|
75
|
+
reject(new Error("Invalid skill JSON"));
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (!fs.existsSync(SKILLS_DIR)) fs.mkdirSync(SKILLS_DIR, { recursive: true });
|
|
79
|
+
const safeName = skill.name.replace(/[^a-zA-Z0-9_-]/g, '_');
|
|
80
|
+
fs.writeFileSync(path.join(SKILLS_DIR, `${safeName}.json`), JSON.stringify(skill, null, 2));
|
|
81
|
+
resolve(skill);
|
|
82
|
+
} catch(e) { reject(e); }
|
|
83
|
+
});
|
|
84
|
+
}).on('error', reject);
|
|
85
|
+
});
|
|
64
86
|
}
|
|
65
87
|
|
|
66
88
|
// Interactive Menu
|
|
@@ -69,12 +91,29 @@ async function showMenu() {
|
|
|
69
91
|
console.log('🦁 GeniClaw CLI TUI');
|
|
70
92
|
console.log('===================');
|
|
71
93
|
|
|
94
|
+
// Auto-Setup Check
|
|
95
|
+
const config = loadConfig();
|
|
96
|
+
const activeSession = config.activeSession || 'default';
|
|
97
|
+
const activeSkill = config.activeSkill || 'None';
|
|
98
|
+
|
|
99
|
+
if (!config.geminiApiKey) {
|
|
100
|
+
console.log('⚠️ Configuration Missing: No Gemini API Key found.');
|
|
101
|
+
const { runSetup } = await inquirer.prompt([
|
|
102
|
+
{ type: 'confirm', name: 'runSetup', message: 'Would you like to run the setup wizard now?', default: true }
|
|
103
|
+
]);
|
|
104
|
+
|
|
105
|
+
if (runSetup) {
|
|
106
|
+
await runScript(['setup']);
|
|
107
|
+
await promptContinue();
|
|
108
|
+
return showMenu();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
72
112
|
// Show current status summary
|
|
73
113
|
try {
|
|
74
|
-
|
|
75
|
-
const activeSession = config.activeSession || 'default';
|
|
76
|
-
console.log(`Current Model: ${config.geminiModel || 'Default (gemini-2.5-flash)'}`);
|
|
114
|
+
console.log(`Current Model: ${config.geminiModel || 'Default'}`);
|
|
77
115
|
console.log(`Active Session: 📂 ${activeSession}`);
|
|
116
|
+
console.log(`Active Skill: 🧠 ${activeSkill}`);
|
|
78
117
|
} catch (e) {}
|
|
79
118
|
console.log('');
|
|
80
119
|
|
|
@@ -91,8 +130,10 @@ async function showMenu() {
|
|
|
91
130
|
{ name: 'View Logs', value: 'logs' },
|
|
92
131
|
new inquirer.Separator(),
|
|
93
132
|
{ name: '📂 Manage Sessions', value: 'sessions' },
|
|
94
|
-
{ name: '🧠
|
|
133
|
+
{ name: '🧠 Manage Skills', value: 'skills' },
|
|
134
|
+
{ name: '🤖 Change Gemini Model', value: 'model' },
|
|
95
135
|
new inquirer.Separator(),
|
|
136
|
+
{ name: 'Run Setup Wizard', value: 'setup' },
|
|
96
137
|
{ name: 'Exit', value: 'exit' }
|
|
97
138
|
]
|
|
98
139
|
}
|
|
@@ -101,6 +142,12 @@ async function showMenu() {
|
|
|
101
142
|
if (action === 'exit') {
|
|
102
143
|
process.exit(0);
|
|
103
144
|
}
|
|
145
|
+
|
|
146
|
+
if (action === 'setup') {
|
|
147
|
+
await runScript(['setup']);
|
|
148
|
+
await promptContinue();
|
|
149
|
+
return showMenu();
|
|
150
|
+
}
|
|
104
151
|
|
|
105
152
|
if (action === 'model') {
|
|
106
153
|
await changeModel();
|
|
@@ -113,6 +160,11 @@ async function showMenu() {
|
|
|
113
160
|
return showMenu();
|
|
114
161
|
}
|
|
115
162
|
|
|
163
|
+
if (action === 'skills') {
|
|
164
|
+
await manageSkills();
|
|
165
|
+
return showMenu();
|
|
166
|
+
}
|
|
167
|
+
|
|
116
168
|
if (action === 'logs') {
|
|
117
169
|
await showLogsMenu();
|
|
118
170
|
return showMenu();
|
|
@@ -178,7 +230,9 @@ async function changeModel() {
|
|
|
178
230
|
async function manageSessions() {
|
|
179
231
|
const config = loadConfig();
|
|
180
232
|
const activeSession = config.activeSession || 'default';
|
|
181
|
-
const sessions =
|
|
233
|
+
const sessions = fs.existsSync(SESSIONS_DIR)
|
|
234
|
+
? fs.readdirSync(SESSIONS_DIR).filter(file => fs.statSync(path.join(SESSIONS_DIR, file)).isDirectory())
|
|
235
|
+
: ['default'];
|
|
182
236
|
|
|
183
237
|
const { action } = await inquirer.prompt([
|
|
184
238
|
{
|
|
@@ -210,11 +264,6 @@ async function manageSessions() {
|
|
|
210
264
|
config.activeSession = session;
|
|
211
265
|
saveConfig(config);
|
|
212
266
|
console.log(`✅ Switched to session: ${session}`);
|
|
213
|
-
// We should ideally restart the queue processor or signal it, but usually it re-reads config per message
|
|
214
|
-
// Wait, our queue processor reads config inside processMessage, so it will pick it up instantly for NEW messages!
|
|
215
|
-
// BUT HistoryManager.load() might need to know.
|
|
216
|
-
// In our TS code, HistoryManager.getHistoryPath() calls SessionManager.getActiveSessionPath() which loads config.
|
|
217
|
-
// So it supports hot-swapping!
|
|
218
267
|
} else {
|
|
219
268
|
console.log('Already on this session.');
|
|
220
269
|
}
|
|
@@ -226,7 +275,7 @@ async function manageSessions() {
|
|
|
226
275
|
type: 'input',
|
|
227
276
|
name: 'name',
|
|
228
277
|
message: 'Enter new session name (alphanumeric):',
|
|
229
|
-
validate: input => /^[a-zA-Z0-9_-]+$/.test(input) ? true : 'Invalid name.
|
|
278
|
+
validate: input => /^[a-zA-Z0-9_-]+$/.test(input) ? true : 'Invalid name.'
|
|
230
279
|
}
|
|
231
280
|
]);
|
|
232
281
|
|
|
@@ -236,15 +285,12 @@ async function manageSessions() {
|
|
|
236
285
|
} else {
|
|
237
286
|
fs.mkdirSync(sessionPath, { recursive: true });
|
|
238
287
|
console.log(`✅ Session '${name}' created.`);
|
|
239
|
-
|
|
240
288
|
const { switchTo } = await inquirer.prompt([
|
|
241
289
|
{ type: 'confirm', name: 'switchTo', message: 'Switch to this session now?', default: true }
|
|
242
290
|
]);
|
|
243
|
-
|
|
244
291
|
if (switchTo) {
|
|
245
292
|
config.activeSession = name;
|
|
246
293
|
saveConfig(config);
|
|
247
|
-
console.log(`✅ Switched to session: ${name}`);
|
|
248
294
|
}
|
|
249
295
|
}
|
|
250
296
|
}
|
|
@@ -255,26 +301,141 @@ async function manageSessions() {
|
|
|
255
301
|
type: 'list',
|
|
256
302
|
name: 'session',
|
|
257
303
|
message: 'Select session to delete:',
|
|
258
|
-
choices: sessions.filter(s => s !== 'default' && s !== activeSession)
|
|
304
|
+
choices: sessions.filter(s => s !== 'default' && s !== activeSession)
|
|
259
305
|
}
|
|
260
306
|
]);
|
|
261
|
-
|
|
262
|
-
if (!session) {
|
|
263
|
-
console.log("No deletable sessions available (cannot delete 'default' or active session).");
|
|
264
|
-
} else {
|
|
307
|
+
if (session) {
|
|
265
308
|
const { confirm } = await inquirer.prompt([
|
|
266
|
-
{ type: 'confirm', name: 'confirm', message: `
|
|
309
|
+
{ type: 'confirm', name: 'confirm', message: `Delete '${session}' permanently?`, default: false }
|
|
267
310
|
]);
|
|
268
|
-
|
|
269
311
|
if (confirm) {
|
|
270
312
|
fs.rmSync(path.join(SESSIONS_DIR, session), { recursive: true, force: true });
|
|
271
|
-
console.log(`🗑️ Session
|
|
313
|
+
console.log(`🗑️ Session deleted.`);
|
|
272
314
|
}
|
|
273
315
|
}
|
|
274
316
|
}
|
|
317
|
+
return manageSessions();
|
|
318
|
+
}
|
|
275
319
|
|
|
276
|
-
|
|
277
|
-
|
|
320
|
+
async function manageSkills() {
|
|
321
|
+
const config = loadConfig();
|
|
322
|
+
const activeSkill = config.activeSkill || 'None';
|
|
323
|
+
const skills = getSkills();
|
|
324
|
+
|
|
325
|
+
const { action } = await inquirer.prompt([
|
|
326
|
+
{
|
|
327
|
+
type: 'list',
|
|
328
|
+
name: 'action',
|
|
329
|
+
message: `Manage Skills (Active: ${activeSkill})`,
|
|
330
|
+
choices: [
|
|
331
|
+
{ name: 'Acivate/Deactivate Skill', value: 'activate' },
|
|
332
|
+
{ name: 'Install Skill (from URL)', value: 'install' },
|
|
333
|
+
{ name: 'Create New Skill', value: 'create' },
|
|
334
|
+
{ name: 'List Installed Skills', value: 'list' },
|
|
335
|
+
{ name: 'Delete Skill', value: 'delete' },
|
|
336
|
+
{ name: 'Back', value: 'back' }
|
|
337
|
+
]
|
|
338
|
+
}
|
|
339
|
+
]);
|
|
340
|
+
|
|
341
|
+
if (action === 'back') return;
|
|
342
|
+
|
|
343
|
+
if (action === 'activate') {
|
|
344
|
+
const choices = [
|
|
345
|
+
{ name: 'None (Deactivate)', value: null },
|
|
346
|
+
new inquirer.Separator(),
|
|
347
|
+
...skills.map(s => ({ name: s.name, value: s.name }))
|
|
348
|
+
];
|
|
349
|
+
const { skill } = await inquirer.prompt([
|
|
350
|
+
{
|
|
351
|
+
type: 'list',
|
|
352
|
+
name: 'skill',
|
|
353
|
+
message: 'Select skill to activate:',
|
|
354
|
+
choices: choices,
|
|
355
|
+
default: activeSkill === 'None' ? null : activeSkill
|
|
356
|
+
}
|
|
357
|
+
]);
|
|
358
|
+
|
|
359
|
+
config.activeSkill = skill;
|
|
360
|
+
saveConfig(config);
|
|
361
|
+
console.log(skill ? `✅ Activated skill: ${skill}` : `✅ Skill deactivated.`);
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
if (action === 'install') {
|
|
365
|
+
const { url } = await inquirer.prompt([
|
|
366
|
+
{ type: 'input', name: 'url', message: 'Enter Skill JSON URL:' }
|
|
367
|
+
]);
|
|
368
|
+
try {
|
|
369
|
+
console.log('Downloading...');
|
|
370
|
+
const skill = await installSkillFromUrl(url);
|
|
371
|
+
console.log(`✅ Installed skill: ${skill.name}`);
|
|
372
|
+
const { activate } = await inquirer.prompt([
|
|
373
|
+
{ type: 'confirm', name: 'activate', message: 'Activate this skill now?', default: true }
|
|
374
|
+
]);
|
|
375
|
+
if (activate) {
|
|
376
|
+
config.activeSkill = skill.name;
|
|
377
|
+
saveConfig(config);
|
|
378
|
+
}
|
|
379
|
+
} catch(e) {
|
|
380
|
+
console.log(`❌ Failed: ${e.message}`);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
if (action === 'create') {
|
|
385
|
+
// Simple creation wizard
|
|
386
|
+
const answers = await inquirer.prompt([
|
|
387
|
+
{ type: 'input', name: 'name', message: 'Skill Name:', validate: i => /^[a-z0-9_-]+$/.test(i) },
|
|
388
|
+
{ type: 'input', name: 'description', message: 'Description:' },
|
|
389
|
+
{ type: 'editor', name: 'instruction', message: 'System Instruction (Persona):' }
|
|
390
|
+
]);
|
|
391
|
+
|
|
392
|
+
const skill = {
|
|
393
|
+
name: answers.name,
|
|
394
|
+
version: "1.0.0",
|
|
395
|
+
description: answers.description,
|
|
396
|
+
author: "local",
|
|
397
|
+
systemInstruction: answers.instruction,
|
|
398
|
+
examples: []
|
|
399
|
+
};
|
|
400
|
+
|
|
401
|
+
if (!fs.existsSync(SKILLS_DIR)) fs.mkdirSync(SKILLS_DIR, { recursive: true });
|
|
402
|
+
fs.writeFileSync(path.join(SKILLS_DIR, `${skill.name}.json`), JSON.stringify(skill, null, 2));
|
|
403
|
+
console.log(`✅ Skill '${skill.name}' created.`);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
if (action === 'list') {
|
|
407
|
+
console.log('\nInstalled Skills:');
|
|
408
|
+
skills.forEach(s => {
|
|
409
|
+
console.log(`- ${s.name}: ${s.description} (${s.active ? 'ACTIVE' : ''})`);
|
|
410
|
+
});
|
|
411
|
+
await promptContinue();
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
if (action === 'delete') {
|
|
415
|
+
const { skill } = await inquirer.prompt([
|
|
416
|
+
{
|
|
417
|
+
type: 'list',
|
|
418
|
+
name: 'skill',
|
|
419
|
+
message: 'Select skill to delete:',
|
|
420
|
+
choices: skills.map(s => ({ name: s.name, value: s.name}))
|
|
421
|
+
}
|
|
422
|
+
]);
|
|
423
|
+
if (skill) {
|
|
424
|
+
const { confirm } = await inquirer.prompt([
|
|
425
|
+
{ type: 'confirm', name: 'confirm', message: `Delete '${skill}'?`, default: false }
|
|
426
|
+
]);
|
|
427
|
+
if (confirm) {
|
|
428
|
+
fs.unlinkSync(path.join(SKILLS_DIR, `${skill}.json`));
|
|
429
|
+
if (config.activeSkill === skill) {
|
|
430
|
+
delete config.activeSkill;
|
|
431
|
+
saveConfig(config);
|
|
432
|
+
}
|
|
433
|
+
console.log(`🗑️ Skill deleted.`);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
return manageSkills();
|
|
278
439
|
}
|
|
279
440
|
|
|
280
441
|
async function showLogsMenu() {
|
|
@@ -313,6 +474,8 @@ program
|
|
|
313
474
|
await changeModel();
|
|
314
475
|
} else if (command === 'sessions') {
|
|
315
476
|
await manageSessions();
|
|
477
|
+
} else if (command === 'skills') {
|
|
478
|
+
await manageSkills();
|
|
316
479
|
} else {
|
|
317
480
|
const args = process.argv.slice(2);
|
|
318
481
|
await runScript(args);
|
package/dist/config-manager.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../src/config-manager.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,iBAAiB,QAAiH,CAAC;AAChJ,eAAO,MAAM,WAAW,QAA8C,CAAC;AAGvE,MAAM,WAAW,SAAS;IAEtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAG/B,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,GAAG,eAAe,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,OAAO,CAAC;CAClG;AAED,qBAAa,aAAa;IACtB,OAAO,CAAC,MAAM,CAAC,YAAY,CAA0B;IAErD,MAAM,CAAC,IAAI,IAAI,SAAS;IAiBxB,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAcpC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI;CAKnD"}
|
|
1
|
+
{"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../src/config-manager.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,iBAAiB,QAAiH,CAAC;AAChJ,eAAO,MAAM,WAAW,QAA8C,CAAC;AAGvE,MAAM,WAAW,SAAS;IAEtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAG/B,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,GAAG,eAAe,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,OAAO,CAAC;CAClG;AAED,qBAAa,aAAa;IACtB,OAAO,CAAC,MAAM,CAAC,YAAY,CAA0B;IAErD,MAAM,CAAC,IAAI,IAAI,SAAS;IAiBxB,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAcpC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI;CAKnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../src/config-manager.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,4CAAoB;AAEpB,eAAe;AACf,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;AAC3C,QAAA,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;AACnI,QAAA,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,yBAAiB,EAAE,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../src/config-manager.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,4CAAoB;AAEpB,eAAe;AACf,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;AAC3C,QAAA,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;AACnI,QAAA,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,yBAAiB,EAAE,aAAa,CAAC,CAAC;AAuBvE,MAAa,aAAa;IACd,MAAM,CAAC,YAAY,GAAqB,IAAI,CAAC;IAErD,MAAM,CAAC,IAAI;QACP,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QAEhD,IAAI,YAAE,CAAC,UAAU,CAAC,mBAAW,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,YAAE,CAAC,YAAY,CAAC,mBAAW,EAAE,MAAM,CAAC,CAAC;gBAClD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrC,OAAO,IAAI,CAAC,YAAa,CAAC;YAC9B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,0BAA2B,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACpE,CAAC;QACL,CAAC;QAED,iBAAiB;QACjB,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAiB;QACzB,IAAI,CAAC;YACD,0BAA0B;YAC1B,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,yBAAiB,CAAC,EAAE,CAAC;gBACpC,YAAE,CAAC,SAAS,CAAC,yBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,CAAC;YAED,YAAE,CAAC,aAAa,CAAC,mBAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,0BAA2B,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;IACL,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,OAA2B;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;;AAtCL,sCAuCC"}
|
package/dist/queue-processor.js
CHANGED
|
@@ -15,6 +15,7 @@ const generative_ai_1 = require("@google/generative-ai");
|
|
|
15
15
|
const dotenv_1 = __importDefault(require("dotenv"));
|
|
16
16
|
const config_manager_1 = require("./config-manager");
|
|
17
17
|
const session_manager_1 = require("./session-manager");
|
|
18
|
+
const skill_manager_1 = require("./skill-manager");
|
|
18
19
|
// Load environment variables
|
|
19
20
|
const SCRIPT_DIR = path_1.default.resolve(__dirname, '..');
|
|
20
21
|
const GENICLAW_WORK_DIR = process.env.GENICLAW_WORK_DIR || path_1.default.join(os_1.default.homedir(), '.geniclaw');
|
|
@@ -93,10 +94,6 @@ class HistoryManager {
|
|
|
93
94
|
// Memory Management
|
|
94
95
|
async function manageMemory(model, history, newContent) {
|
|
95
96
|
try {
|
|
96
|
-
// Calculate tokens
|
|
97
|
-
// We need to approximation or use countTokens if possible.
|
|
98
|
-
// To count tokens correctly, we need to construct the request.
|
|
99
|
-
// We'll approximate for speed or count if API allows.
|
|
100
97
|
// Construct full history for counting
|
|
101
98
|
const fullContent = [
|
|
102
99
|
...history,
|
|
@@ -112,15 +109,9 @@ async function manageMemory(model, history, newContent) {
|
|
|
112
109
|
if (totalTokens > MAX_HISTORY_TOKENS) {
|
|
113
110
|
log('WARN', `Context limit exceeded (${totalTokens}). Pruning history...`);
|
|
114
111
|
// Sliding Window: Remove oldest messages until we fit.
|
|
115
|
-
// Always keep latest message (newContent).
|
|
116
|
-
// Strategy: Remove from index 0 until we fit.
|
|
117
112
|
let prunedHistory = [...history];
|
|
118
|
-
// Safety break
|
|
119
113
|
let attempts = 0;
|
|
120
114
|
while (prunedHistory.length > 0 && attempts < 100) {
|
|
121
|
-
// Remove 2 items (user + model pair) to keep conversation flow, or just 1.
|
|
122
|
-
// Removing 1 might mess up turns if model expects strict user/model alternation?
|
|
123
|
-
// Gemini usually handles it, but pairs are safer.
|
|
124
115
|
prunedHistory.shift();
|
|
125
116
|
const currentContents = [
|
|
126
117
|
...prunedHistory,
|
|
@@ -133,7 +124,6 @@ async function manageMemory(model, history, newContent) {
|
|
|
133
124
|
}
|
|
134
125
|
attempts++;
|
|
135
126
|
}
|
|
136
|
-
// If we cant fit even with empty history (just new message), we just return empty history
|
|
137
127
|
return [];
|
|
138
128
|
}
|
|
139
129
|
return history;
|
|
@@ -182,12 +172,21 @@ async function processMessage(messageFile) {
|
|
|
182
172
|
let config = config_manager_1.ConfigManager.load();
|
|
183
173
|
// Prepare System Instruction
|
|
184
174
|
let systemInstruction = "";
|
|
175
|
+
// 1. User/Bot Onboarding Info
|
|
185
176
|
if (config.userName)
|
|
186
177
|
systemInstruction += `User's Name: ${config.userName}\n`;
|
|
187
178
|
if (config.botName)
|
|
188
179
|
systemInstruction += `Your Name: ${config.botName}\n`;
|
|
189
180
|
if (config.botPurpose)
|
|
190
181
|
systemInstruction += `Your Persona/Purpose: ${config.botPurpose}\n`;
|
|
182
|
+
// 2. Active Skill
|
|
183
|
+
const activeSkill = skill_manager_1.SkillManager.getActiveSkill();
|
|
184
|
+
if (activeSkill) {
|
|
185
|
+
systemInstruction += `\n--- ACTIVE SKILL: ${activeSkill.name} ---\n`;
|
|
186
|
+
systemInstruction += `${activeSkill.systemInstruction}\n`;
|
|
187
|
+
systemInstruction += `----------------------------------\n`;
|
|
188
|
+
log('INFO', `Using Skill: ${activeSkill.name}`);
|
|
189
|
+
}
|
|
191
190
|
// Get Model
|
|
192
191
|
if (!genAI)
|
|
193
192
|
await initGemini();
|
|
@@ -205,7 +204,6 @@ async function processMessage(messageFile) {
|
|
|
205
204
|
let history = HistoryManager.load();
|
|
206
205
|
// Check for Stats Command
|
|
207
206
|
if (message.trim() === '/stats') {
|
|
208
|
-
// Calculate current stats
|
|
209
207
|
let sessionName = config.activeSession || 'default';
|
|
210
208
|
let tokenCount = 0;
|
|
211
209
|
try {
|
|
@@ -214,7 +212,8 @@ async function processMessage(messageFile) {
|
|
|
214
212
|
tokenCount = result.totalTokens;
|
|
215
213
|
}
|
|
216
214
|
catch (e) { }
|
|
217
|
-
|
|
215
|
+
let skillInfo = activeSkill ? `\nActive Skill: \`${activeSkill.name}\`` : '';
|
|
216
|
+
const reply = `📊 **Session Stats**\nSession: \`${sessionName}\`${skillInfo}\nHistory Length: ${history.length} turns\nTokens Used: ~${tokenCount} / ${MAX_HISTORY_TOKENS}`;
|
|
218
217
|
const responseData = {
|
|
219
218
|
channel,
|
|
220
219
|
sender,
|
|
@@ -229,7 +228,35 @@ async function processMessage(messageFile) {
|
|
|
229
228
|
fs_1.default.unlinkSync(processingFile);
|
|
230
229
|
return;
|
|
231
230
|
}
|
|
231
|
+
// Inject Skill Examples into History (Transient, only for this turn if history is empty?
|
|
232
|
+
// Or strictly pre-pend?
|
|
233
|
+
// If we inject into history, it becomes part of the conversation.
|
|
234
|
+
// Let's prepend them transiently for the chat start if supported,
|
|
235
|
+
// OR just rely on System Instruction which is safer for context window management.
|
|
236
|
+
// Actually, few-shot examples are best in history.
|
|
237
|
+
// But if history is long, they might get pruned or be too far back.
|
|
238
|
+
// For simplicity in this iteration, we stick to System Instruction for the persona.
|
|
239
|
+
// If skill has specific examples, we could add them if history is empty.
|
|
240
|
+
if (history.length === 0 && activeSkill && activeSkill.examples && activeSkill.examples.length > 0) {
|
|
241
|
+
for (const example of activeSkill.examples) {
|
|
242
|
+
history.push({ role: 'user', parts: [{ text: example.input }] });
|
|
243
|
+
history.push({ role: 'model', parts: [{ text: example.output }] });
|
|
244
|
+
}
|
|
245
|
+
// Note: We don't save this to file, so it's "transient" for the first turn?
|
|
246
|
+
// Actually, if we pass it to `startChat`, it initializes the chat with it.
|
|
247
|
+
// If we don't save it, next time history is loaded, it's gone.
|
|
248
|
+
// That's actually perfect for "System Examples".
|
|
249
|
+
// BUT, `history` variable here is what we pass to `startChat`.
|
|
250
|
+
// If we assume `startChat` maintains it in memory object, that's fine.
|
|
251
|
+
// But we save `history` after generation.
|
|
252
|
+
// If we save it, it becomes permanent.
|
|
253
|
+
// Let's NOT save examples to persistent history to avoid cluttering or duplicating.
|
|
254
|
+
// So we pass a `chatHistory` to startChat but keep `history` (file) separate?
|
|
255
|
+
// No, file history is source of truth.
|
|
256
|
+
// Let's just USE SYSTEM INSTRUCTION for now.
|
|
257
|
+
}
|
|
232
258
|
// Memory Management: Prune if necessary
|
|
259
|
+
// Note: We pass `history` (from file) to manageMemory.
|
|
233
260
|
history = await manageMemory(model, history, message);
|
|
234
261
|
// Generate
|
|
235
262
|
let responseText;
|
|
@@ -238,7 +265,7 @@ async function processMessage(messageFile) {
|
|
|
238
265
|
const result = await chat.sendMessage(message);
|
|
239
266
|
const response = await result.response;
|
|
240
267
|
responseText = response.text();
|
|
241
|
-
// Save History
|
|
268
|
+
// Save History (append new turn)
|
|
242
269
|
history.push({ role: 'user', parts: [{ text: message }] });
|
|
243
270
|
history.push({ role: 'model', parts: [{ text: responseText }] });
|
|
244
271
|
HistoryManager.save(history);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-processor.js","sourceRoot":"","sources":["../src/queue-processor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queue-processor.js","sourceRoot":"","sources":["../src/queue-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface SkillExample {
|
|
2
|
+
input: string;
|
|
3
|
+
output: string;
|
|
4
|
+
}
|
|
5
|
+
export interface Skill {
|
|
6
|
+
name: string;
|
|
7
|
+
version: string;
|
|
8
|
+
description: string;
|
|
9
|
+
author: string;
|
|
10
|
+
systemInstruction: string;
|
|
11
|
+
examples?: SkillExample[];
|
|
12
|
+
}
|
|
13
|
+
export declare class SkillManager {
|
|
14
|
+
static init(): void;
|
|
15
|
+
static listSkills(): Skill[];
|
|
16
|
+
static getSkill(name: string): Skill | null;
|
|
17
|
+
static startSkillCreation(name: string, description: string, instruction: string): void;
|
|
18
|
+
static saveSkill(skill: Skill): void;
|
|
19
|
+
static deleteSkill(name: string): boolean;
|
|
20
|
+
static activateSkill(name: string | undefined): void;
|
|
21
|
+
static getActiveSkill(): Skill | null;
|
|
22
|
+
static installFromUrl(url: string): Promise<string>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=skill-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-manager.d.ts","sourceRoot":"","sources":["../src/skill-manager.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,KAAK;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B;AAED,qBAAa,YAAY;IACrB,MAAM,CAAC,IAAI;IAMX,MAAM,CAAC,UAAU,IAAI,KAAK,EAAE;IAe5B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IAa3C,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAavF,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAOpC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAgBzC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIpD,MAAM,CAAC,cAAc,IAAI,KAAK,GAAG,IAAI;WAMxB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAwB5D"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SkillManager = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const https_1 = __importDefault(require("https"));
|
|
10
|
+
const config_manager_1 = require("./config-manager");
|
|
11
|
+
const SKILLS_DIR = path_1.default.join(config_manager_1.GENICLAW_WORK_DIR, 'skills');
|
|
12
|
+
class SkillManager {
|
|
13
|
+
static init() {
|
|
14
|
+
if (!fs_1.default.existsSync(SKILLS_DIR)) {
|
|
15
|
+
fs_1.default.mkdirSync(SKILLS_DIR, { recursive: true });
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
static listSkills() {
|
|
19
|
+
this.init();
|
|
20
|
+
return fs_1.default.readdirSync(SKILLS_DIR)
|
|
21
|
+
.filter(file => file.endsWith('.json'))
|
|
22
|
+
.map(file => {
|
|
23
|
+
try {
|
|
24
|
+
const content = fs_1.default.readFileSync(path_1.default.join(SKILLS_DIR, file), 'utf8');
|
|
25
|
+
return JSON.parse(content);
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
})
|
|
31
|
+
.filter((s) => s !== null);
|
|
32
|
+
}
|
|
33
|
+
static getSkill(name) {
|
|
34
|
+
this.init();
|
|
35
|
+
const skillPath = path_1.default.join(SKILLS_DIR, `${name}.json`);
|
|
36
|
+
if (fs_1.default.existsSync(skillPath)) {
|
|
37
|
+
try {
|
|
38
|
+
return JSON.parse(fs_1.default.readFileSync(skillPath, 'utf8'));
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
static startSkillCreation(name, description, instruction) {
|
|
47
|
+
this.init();
|
|
48
|
+
const skill = {
|
|
49
|
+
name,
|
|
50
|
+
version: '1.0.0',
|
|
51
|
+
description,
|
|
52
|
+
author: 'user',
|
|
53
|
+
systemInstruction: instruction,
|
|
54
|
+
examples: []
|
|
55
|
+
};
|
|
56
|
+
this.saveSkill(skill);
|
|
57
|
+
}
|
|
58
|
+
static saveSkill(skill) {
|
|
59
|
+
this.init();
|
|
60
|
+
const safeName = skill.name.replace(/[^a-zA-Z0-9_-]/g, '_');
|
|
61
|
+
const skillPath = path_1.default.join(SKILLS_DIR, `${safeName}.json`);
|
|
62
|
+
fs_1.default.writeFileSync(skillPath, JSON.stringify(skill, null, 2));
|
|
63
|
+
}
|
|
64
|
+
static deleteSkill(name) {
|
|
65
|
+
this.init();
|
|
66
|
+
const skillPath = path_1.default.join(SKILLS_DIR, `${name}.json`);
|
|
67
|
+
if (fs_1.default.existsSync(skillPath)) {
|
|
68
|
+
fs_1.default.unlinkSync(skillPath);
|
|
69
|
+
// If active, deactivate
|
|
70
|
+
const config = config_manager_1.ConfigManager.load();
|
|
71
|
+
if (config.activeSkill === name) {
|
|
72
|
+
config_manager_1.ConfigManager.update({ activeSkill: undefined });
|
|
73
|
+
}
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
static activateSkill(name) {
|
|
79
|
+
config_manager_1.ConfigManager.update({ activeSkill: name });
|
|
80
|
+
}
|
|
81
|
+
static getActiveSkill() {
|
|
82
|
+
const config = config_manager_1.ConfigManager.load();
|
|
83
|
+
if (!config.activeSkill)
|
|
84
|
+
return null;
|
|
85
|
+
return this.getSkill(config.activeSkill);
|
|
86
|
+
}
|
|
87
|
+
static async installFromUrl(url) {
|
|
88
|
+
this.init();
|
|
89
|
+
return new Promise((resolve, reject) => {
|
|
90
|
+
https_1.default.get(url, (res) => {
|
|
91
|
+
let data = '';
|
|
92
|
+
res.on('data', (chunk) => data += chunk);
|
|
93
|
+
res.on('end', () => {
|
|
94
|
+
try {
|
|
95
|
+
const skill = JSON.parse(data);
|
|
96
|
+
if (!skill.name || !skill.systemInstruction) {
|
|
97
|
+
reject(new Error('Invalid skill format: missing name or systemInstruction'));
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
this.saveSkill(skill);
|
|
101
|
+
resolve(skill.name);
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
reject(new Error('Failed to parse skill JSON'));
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}).on('error', (err) => {
|
|
108
|
+
reject(err);
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
exports.SkillManager = SkillManager;
|
|
114
|
+
//# sourceMappingURL=skill-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-manager.js","sourceRoot":"","sources":["../src/skill-manager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thelapyae/geniclaw",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "Geniclaw - Gemini + Telegram CLI Assistant",
|
|
5
5
|
"main": "dist/telegram-client.js",
|
|
6
6
|
"bin": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@google/generative-ai": "^0.24.1",
|
|
25
25
|
"commander": "^14.0.3",
|
|
26
|
-
"dotenv": "^
|
|
26
|
+
"dotenv": "^17.2.4",
|
|
27
27
|
"google-auth-library": "^10.5.0",
|
|
28
28
|
"inquirer": "^13.2.2",
|
|
29
29
|
"telegraf": "^4.16.3"
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@types/dotenv": "^6.1.1",
|
|
33
33
|
"@types/express": "^5.0.6",
|
|
34
|
-
"@types/node": "^25.2.
|
|
34
|
+
"@types/node": "^25.2.3",
|
|
35
35
|
"@types/qrcode-terminal": "^0.12.2",
|
|
36
36
|
"typescript": "^5.9.3"
|
|
37
37
|
}
|