@praveencs/agent 0.3.0 → 0.7.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 (43) hide show
  1. package/README.md +42 -982
  2. package/dist/src/cli/commands/goal.d.ts.map +1 -1
  3. package/dist/src/cli/commands/goal.js +67 -0
  4. package/dist/src/cli/commands/goal.js.map +1 -1
  5. package/dist/src/cli/commands/report.d.ts +3 -0
  6. package/dist/src/cli/commands/report.d.ts.map +1 -0
  7. package/dist/src/cli/commands/report.js +34 -0
  8. package/dist/src/cli/commands/report.js.map +1 -0
  9. package/dist/src/cli/commands/skills.d.ts.map +1 -1
  10. package/dist/src/cli/commands/skills.js +100 -0
  11. package/dist/src/cli/commands/skills.js.map +1 -1
  12. package/dist/src/cli/index.d.ts.map +1 -1
  13. package/dist/src/cli/index.js +3 -1
  14. package/dist/src/cli/index.js.map +1 -1
  15. package/dist/src/goals/decomposer.d.ts +41 -0
  16. package/dist/src/goals/decomposer.d.ts.map +1 -0
  17. package/dist/src/goals/decomposer.js +167 -0
  18. package/dist/src/goals/decomposer.js.map +1 -0
  19. package/dist/src/goals/executor.d.ts +52 -0
  20. package/dist/src/goals/executor.d.ts.map +1 -0
  21. package/dist/src/goals/executor.js +198 -0
  22. package/dist/src/goals/executor.js.map +1 -0
  23. package/dist/src/goals/store.d.ts +4 -0
  24. package/dist/src/goals/store.d.ts.map +1 -1
  25. package/dist/src/goals/store.js +13 -0
  26. package/dist/src/goals/store.js.map +1 -1
  27. package/dist/src/memory/store.d.ts +12 -0
  28. package/dist/src/memory/store.d.ts.map +1 -1
  29. package/dist/src/memory/store.js +57 -1
  30. package/dist/src/memory/store.js.map +1 -1
  31. package/dist/src/reporting/generator.d.ts +14 -0
  32. package/dist/src/reporting/generator.d.ts.map +1 -0
  33. package/dist/src/reporting/generator.js +91 -0
  34. package/dist/src/reporting/generator.js.map +1 -0
  35. package/dist/src/skills/doctor.d.ts +30 -0
  36. package/dist/src/skills/doctor.d.ts.map +1 -0
  37. package/dist/src/skills/doctor.js +108 -0
  38. package/dist/src/skills/doctor.js.map +1 -0
  39. package/dist/src/skills/loader.d.ts +4 -0
  40. package/dist/src/skills/loader.d.ts.map +1 -1
  41. package/dist/src/skills/loader.js +13 -0
  42. package/dist/src/skills/loader.js.map +1 -1
  43. package/package.json +2 -2
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Available skills context for the LLM
3
+ */
4
+ function getSkillsCatalog() {
5
+ return `
6
+ Available skills the agent can use:
7
+ - code-review: Analyze code for bugs, style, and improvements
8
+ - git-commit: Stage, commit, and push changes using conventional commits
9
+ - docker-deploy: Build Docker images and deploy containers
10
+ - project-scaffold: Create new projects (React, Next.js, Express, etc.)
11
+ - npm-publish: Version bump, build, and publish npm packages
12
+ - system-monitor: Check CPU, memory, disk, and running processes
13
+ - log-analyzer: Parse and summarize log files for errors/patterns
14
+ - file-organizer: Sort and organize files by type/date/size
15
+ - web-search: Search the web for information
16
+ - create-note: Create markdown notes and documentation
17
+ - api-tester: Test HTTP endpoints with assertions
18
+ - db-query: Execute and explain database queries
19
+ - backup: Create timestamped backups of files/directories
20
+ - cron-scheduler: Schedule recurring tasks
21
+ - send-email: Send notification emails
22
+ - open-vscode: Open files/projects in VS Code
23
+ `.trim();
24
+ }
25
+ export class GoalDecomposer {
26
+ llm;
27
+ memoryStore;
28
+ goalStore;
29
+ constructor(llm, memoryStore, goalStore) {
30
+ this.llm = llm;
31
+ this.memoryStore = memoryStore;
32
+ this.goalStore = goalStore;
33
+ }
34
+ /**
35
+ * Decompose a goal into tasks using the LLM
36
+ */
37
+ async decompose(goal) {
38
+ // Gather context from memory
39
+ const memoryContext = this.memoryStore.getContext(goal.title, 300);
40
+ const systemPrompt = `You are an autonomous AI agent planner. Your job is to break down a high-level goal into specific, actionable tasks.
41
+
42
+ Rules:
43
+ 1. Each task should be a single, concrete action
44
+ 2. Assign the most appropriate skill to each task (from the catalog below)
45
+ 3. Define dependencies between tasks (which tasks must complete first)
46
+ 4. Flag any task that modifies production systems or has destructive effects as requiresApproval: true
47
+ 5. Tasks should be ordered logically
48
+ 6. Keep tasks focused — one action per task
49
+ 7. Include a brief description for each task
50
+
51
+ ${getSkillsCatalog()}
52
+
53
+ ${memoryContext ? `\nRelevant context from agent memory:\n${memoryContext}` : ''}
54
+
55
+ Respond ONLY with valid JSON in this exact format:
56
+ {
57
+ "reasoning": "Brief explanation of your decomposition strategy",
58
+ "estimatedMinutes": <number>,
59
+ "tasks": [
60
+ {
61
+ "title": "Short task title",
62
+ "description": "What this task does",
63
+ "skill": "skill-name or null",
64
+ "dependsOnIndex": [0, 1],
65
+ "requiresApproval": false,
66
+ "input": {}
67
+ }
68
+ ]
69
+ }`;
70
+ const userPrompt = `Decompose this goal into executable tasks:
71
+
72
+ Goal: ${goal.title}
73
+ ${goal.description ? `Description: ${goal.description}` : ''}
74
+ ${goal.deadline ? `Deadline: ${goal.deadline}` : ''}
75
+ Priority: ${goal.priority}/10`;
76
+ const response = await this.llm.chat({
77
+ messages: [
78
+ { role: 'system', content: systemPrompt },
79
+ { role: 'user', content: userPrompt },
80
+ ],
81
+ temperature: 0.3,
82
+ maxTokens: 2000,
83
+ });
84
+ // Parse the LLM response
85
+ const parsed = this.parseResponse(response.content);
86
+ return parsed;
87
+ }
88
+ /**
89
+ * Decompose and immediately create tasks in the goal store
90
+ */
91
+ async decomposeAndCreate(goal) {
92
+ const result = await this.decompose(goal);
93
+ const createdTasks = [];
94
+ // Map task indices to real task IDs for dependency resolution
95
+ const indexToId = new Map();
96
+ for (let i = 0; i < result.tasks.length; i++) {
97
+ const taskDef = result.tasks[i];
98
+ // Resolve dependencies from array indices to task IDs
99
+ const dependsOn = [];
100
+ if (taskDef.dependsOnIndex) {
101
+ for (const depIdx of taskDef.dependsOnIndex) {
102
+ const depId = indexToId.get(depIdx);
103
+ if (depId !== undefined) {
104
+ dependsOn.push(depId);
105
+ }
106
+ }
107
+ }
108
+ const task = this.goalStore.addTask(goal.id, taskDef.title, {
109
+ description: taskDef.description,
110
+ skill: taskDef.skill,
111
+ input: taskDef.input,
112
+ dependsOn,
113
+ requiresApproval: taskDef.requiresApproval ?? false,
114
+ });
115
+ indexToId.set(i, task.id);
116
+ createdTasks.push(task);
117
+ }
118
+ // Save the decomposition reasoning as a memory
119
+ this.memoryStore.save(`Decomposed goal "${goal.title}" into ${createdTasks.length} tasks. ` +
120
+ `Strategy: ${result.reasoning}. ` +
121
+ `Estimated: ${result.estimatedMinutes} minutes.`, 'learned', 'agent', ['goal', 'decomposition', 'planning']);
122
+ return createdTasks;
123
+ }
124
+ /**
125
+ * Parse the LLM's JSON response robustly
126
+ */
127
+ parseResponse(content) {
128
+ // Try to extract JSON from the response (handles markdown code blocks)
129
+ let jsonStr = content;
130
+ // Strip markdown code fences if present
131
+ const jsonMatch = content.match(/```(?:json)?\s*\n?([\s\S]*?)\n?\s*```/);
132
+ if (jsonMatch) {
133
+ jsonStr = jsonMatch[1];
134
+ }
135
+ try {
136
+ const parsed = JSON.parse(jsonStr.trim());
137
+ if (!Array.isArray(parsed.tasks)) {
138
+ throw new Error('Response missing tasks array');
139
+ }
140
+ return {
141
+ tasks: parsed.tasks.map((t) => ({
142
+ title: t.title ?? 'Unnamed task',
143
+ description: t.description ?? '',
144
+ skill: t.skill ?? undefined,
145
+ dependsOnIndex: t.dependsOnIndex ?? [],
146
+ requiresApproval: t.requiresApproval ?? false,
147
+ input: t.input ?? {},
148
+ })),
149
+ reasoning: parsed.reasoning ?? 'No reasoning provided',
150
+ estimatedMinutes: parsed.estimatedMinutes ?? 30,
151
+ };
152
+ }
153
+ catch (err) {
154
+ // Fallback: create a single task from the goal
155
+ return {
156
+ tasks: [{
157
+ title: 'Execute goal manually',
158
+ description: `LLM decomposition failed. Original response: ${content.slice(0, 200)}`,
159
+ requiresApproval: true,
160
+ }],
161
+ reasoning: `Decomposition failed: ${err.message}`,
162
+ estimatedMinutes: 60,
163
+ };
164
+ }
165
+ }
166
+ }
167
+ //# sourceMappingURL=decomposer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decomposer.js","sourceRoot":"","sources":["../../../src/goals/decomposer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { LLMRouter } from '../llm/router.js';
2
+ import { MemoryStore } from '../memory/store.js';
3
+ import { GoalStore, type Task } from './store.js';
4
+ /**
5
+ * Task Executor — Runs individual tasks within goals
6
+ *
7
+ * Provides real execution via:
8
+ * 1. LLM-guided skill execution (sends task + skill prompt to LLM)
9
+ * 2. Direct shell command execution
10
+ * 3. Compound multi-step execution
11
+ */
12
+ export declare class TaskExecutor {
13
+ private llm;
14
+ private memoryStore;
15
+ private goalStore;
16
+ private workDir;
17
+ constructor(llm: LLMRouter, memoryStore: MemoryStore, goalStore: GoalStore, workDir?: string);
18
+ /**
19
+ * Execute a single task
20
+ */
21
+ execute(task: Task): Promise<{
22
+ success: boolean;
23
+ output: string;
24
+ }>;
25
+ /**
26
+ * Execute task using an assigned skill
27
+ */
28
+ private executeWithSkill;
29
+ /**
30
+ * Execute task directly with LLM reasoning (no specific skill)
31
+ */
32
+ private executeWithLLM;
33
+ /**
34
+ * Process the entire task queue for active goals
35
+ */
36
+ processQueue(maxTasks?: number): Promise<{
37
+ processed: number;
38
+ completed: number;
39
+ failed: number;
40
+ results: Array<{
41
+ taskId: number;
42
+ title: string;
43
+ success: boolean;
44
+ output: string;
45
+ }>;
46
+ }>;
47
+ /**
48
+ * Extract bash commands from LLM response
49
+ */
50
+ private extractCommands;
51
+ }
52
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/goals/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAMlD;;;;;;;GAOG;AACH,qBAAa,YAAY;IAEjB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;gBAHP,GAAG,EAAE,SAAS,EACd,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,MAAsB;IAG3C;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAmCxE;;OAEG;YACW,gBAAgB;IAgF9B;;OAEG;YACW,cAAc;IAyB5B;;OAEG;IACG,YAAY,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACvF,CAAC;IA8BF;;OAEG;IACH,OAAO,CAAC,eAAe;CAiB1B"}
@@ -0,0 +1,198 @@
1
+ import { exec } from 'node:child_process';
2
+ import { promisify } from 'node:util';
3
+ const execAsync = promisify(exec);
4
+ /**
5
+ * Task Executor — Runs individual tasks within goals
6
+ *
7
+ * Provides real execution via:
8
+ * 1. LLM-guided skill execution (sends task + skill prompt to LLM)
9
+ * 2. Direct shell command execution
10
+ * 3. Compound multi-step execution
11
+ */
12
+ export class TaskExecutor {
13
+ llm;
14
+ memoryStore;
15
+ goalStore;
16
+ workDir;
17
+ constructor(llm, memoryStore, goalStore, workDir = process.cwd()) {
18
+ this.llm = llm;
19
+ this.memoryStore = memoryStore;
20
+ this.goalStore = goalStore;
21
+ this.workDir = workDir;
22
+ }
23
+ /**
24
+ * Execute a single task
25
+ */
26
+ async execute(task) {
27
+ // Mark as running
28
+ this.goalStore.startTask(task.id);
29
+ try {
30
+ let result;
31
+ if (task.skill) {
32
+ result = await this.executeWithSkill(task);
33
+ }
34
+ else {
35
+ result = await this.executeWithLLM(task);
36
+ }
37
+ if (result.success) {
38
+ this.goalStore.completeTask(task.id, result.output);
39
+ // Save learnings for future context
40
+ this.memoryStore.save(`Task completed: "${task.title}" → ${result.output.slice(0, 300)}`, 'learned', 'agent', ['task', 'execution', task.skill ?? 'general']);
41
+ }
42
+ else {
43
+ this.goalStore.failTask(task.id, result.output);
44
+ }
45
+ return result;
46
+ }
47
+ catch (err) {
48
+ const error = err.message;
49
+ this.goalStore.failTask(task.id, error);
50
+ return { success: false, output: error };
51
+ }
52
+ }
53
+ /**
54
+ * Execute task using an assigned skill
55
+ */
56
+ async executeWithSkill(task) {
57
+ const start = Date.now();
58
+ // Gather context
59
+ const memoryContext = this.memoryStore.getContext(task.title, 200);
60
+ const goal = this.goalStore.getGoal(task.goal_id);
61
+ const systemPrompt = `You are an autonomous agent executing a task as part of a larger goal.
62
+ You have the skill "${task.skill}" available.
63
+
64
+ Your job:
65
+ 1. Analyze the task and determine the exact actions needed
66
+ 2. Provide shell commands to execute (if applicable)
67
+ 3. Report what was accomplished
68
+
69
+ Important:
70
+ - Be specific and actionable
71
+ - If you need to run commands, wrap them in \`\`\`bash blocks
72
+ - Report results clearly
73
+ - Working directory: ${this.workDir}
74
+
75
+ ${memoryContext ? `\nRelevant context:\n${memoryContext}` : ''}`;
76
+ const userPrompt = `Execute this task:
77
+
78
+ Task: ${task.title}
79
+ ${task.description ? `Description: ${task.description}` : ''}
80
+ Skill: ${task.skill}
81
+ ${goal ? `Parent Goal: ${goal.title}` : ''}
82
+ ${Object.keys(task.input).length > 0 ? `Input: ${JSON.stringify(task.input)}` : ''}`;
83
+ let success = true;
84
+ let output = '';
85
+ try {
86
+ const response = await this.llm.chat({
87
+ messages: [
88
+ { role: 'system', content: systemPrompt },
89
+ { role: 'user', content: userPrompt },
90
+ ],
91
+ temperature: 0.2,
92
+ maxTokens: 1500,
93
+ skillName: task.skill ?? undefined,
94
+ });
95
+ // Extract and run any bash commands from the response
96
+ const commands = this.extractCommands(response.content);
97
+ const commandResults = [];
98
+ for (const cmd of commands) {
99
+ try {
100
+ const { stdout, stderr } = await execAsync(cmd, {
101
+ cwd: this.workDir,
102
+ timeout: 60_000,
103
+ env: { ...process.env },
104
+ });
105
+ commandResults.push(`$ ${cmd}\n${stdout.trim()}${stderr ? '\nstderr: ' + stderr.trim() : ''}`);
106
+ }
107
+ catch (err) {
108
+ success = false;
109
+ commandResults.push(`$ ${cmd}\nFailed: ${err.message}`);
110
+ }
111
+ }
112
+ output = commands.length > 0
113
+ ? `${response.content}\n\n--- Executed Commands ---\n${commandResults.join('\n\n')}`
114
+ : response.content;
115
+ }
116
+ catch (err) {
117
+ success = false;
118
+ output = `LLM/Execution Error: ${err.message}`;
119
+ }
120
+ // Record metrics
121
+ if (task.skill) {
122
+ this.memoryStore.recordSkillMetric(task.skill, success, Date.now() - start);
123
+ }
124
+ return { success, output };
125
+ }
126
+ /**
127
+ * Execute task directly with LLM reasoning (no specific skill)
128
+ */
129
+ async executeWithLLM(task) {
130
+ const memoryContext = this.memoryStore.getContext(task.title, 200);
131
+ const response = await this.llm.chat({
132
+ messages: [
133
+ {
134
+ role: 'system',
135
+ content: `You are an autonomous agent. Analyze and execute the given task.
136
+ Provide clear, actionable results.
137
+ If shell commands are needed, wrap them in \`\`\`bash blocks.
138
+ Working directory: ${this.workDir}
139
+ ${memoryContext ? `\nContext:\n${memoryContext}` : ''}`,
140
+ },
141
+ {
142
+ role: 'user',
143
+ content: `Execute: ${task.title}\n${task.description ?? ''}`,
144
+ },
145
+ ],
146
+ temperature: 0.2,
147
+ maxTokens: 1000,
148
+ });
149
+ return { success: true, output: response.content };
150
+ }
151
+ /**
152
+ * Process the entire task queue for active goals
153
+ */
154
+ async processQueue(maxTasks = 5) {
155
+ let processed = 0;
156
+ let completed = 0;
157
+ let failed = 0;
158
+ const results = [];
159
+ while (processed < maxTasks) {
160
+ const task = this.goalStore.getNextTask();
161
+ if (!task)
162
+ break;
163
+ processed++;
164
+ const result = await this.execute(task);
165
+ results.push({
166
+ taskId: task.id,
167
+ title: task.title,
168
+ success: result.success,
169
+ output: result.output.slice(0, 500),
170
+ });
171
+ if (result.success) {
172
+ completed++;
173
+ }
174
+ else {
175
+ failed++;
176
+ }
177
+ }
178
+ return { processed, completed, failed, results };
179
+ }
180
+ /**
181
+ * Extract bash commands from LLM response
182
+ */
183
+ extractCommands(content) {
184
+ const commands = [];
185
+ const regex = /```bash\n([\s\S]*?)```/g;
186
+ let match;
187
+ while ((match = regex.exec(content)) !== null) {
188
+ const block = match[1].trim();
189
+ // Split multi-line blocks into individual commands
190
+ const lines = block.split('\n')
191
+ .map(l => l.trim())
192
+ .filter(l => l && !l.startsWith('#'));
193
+ commands.push(...lines);
194
+ }
195
+ return commands;
196
+ }
197
+ }
198
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/goals/executor.ts"],"names":[],"mappings":"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"}
@@ -106,6 +106,10 @@ export declare class GoalStore {
106
106
  * Approve a task that requires human approval
107
107
  */
108
108
  approveTask(id: number): boolean;
109
+ /**
110
+ * Get recent errors for a specific skill
111
+ */
112
+ getSkillErrors(skillName: string, limit?: number): string[];
109
113
  /**
110
114
  * Get tasks waiting for approval
111
115
  */
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/goals/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/goals/store.ts"],"names":[],"mappings":"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"}
@@ -189,6 +189,19 @@ export class GoalStore {
189
189
  }
190
190
  return result.changes > 0;
191
191
  }
192
+ /**
193
+ * Get recent errors for a specific skill
194
+ */
195
+ getSkillErrors(skillName, limit = 5) {
196
+ const stmt = this.db.prepare(`
197
+ SELECT error, output FROM tasks
198
+ WHERE skill = ? AND (status IN ('failed', 'blocked') OR error IS NOT NULL)
199
+ ORDER BY created_at DESC
200
+ LIMIT ?
201
+ `);
202
+ const rows = stmt.all(skillName, limit);
203
+ return rows.map(r => r.error || r.output || 'Unknown error');
204
+ }
192
205
  /**
193
206
  * Get tasks waiting for approval
194
207
  */
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/goals/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/goals/store.ts"],"names":[],"mappings":"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"}
@@ -64,6 +64,18 @@ export declare class MemoryStore {
64
64
  };
65
65
  private logAudit;
66
66
  getAuditLog(limit?: number): any[];
67
+ /**
68
+ * Get activity for a specific date (default: today)
69
+ */
70
+ getDailyActivity(date?: Date): any[];
71
+ /**
72
+ * Record usage of a skill
73
+ */
74
+ recordSkillMetric(skill: string, success: boolean, durationMs: number): void;
75
+ /**
76
+ * Get metrics for all skills
77
+ */
78
+ getSkillMetrics(): any[];
67
79
  close(): void;
68
80
  }
69
81
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/memory/store.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,MAAM,WAAW,MAAM;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACpE,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAClC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAmB,SAAQ,MAAM;IAC9C,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,WAAW;IACpB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA4B;gBAEvC,MAAM,EAAE,MAAM;IAY1B;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IASzC;;OAEG;IACH,OAAO,CAAC,OAAO;IAsGf;;OAEG;IACH,IAAI,CACA,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,CAAC,UAAU,CAAa,EACxC,MAAM,GAAE,MAAM,CAAC,QAAQ,CAAU,EACjC,IAAI,GAAE,MAAM,EAAO,GACpB,MAAM;IAYT;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,kBAAkB,EAAE;IA0BvD;;OAEG;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,SAAK,GAAG,MAAM,EAAE;IAqBzD;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOpC;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAS3B;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,MAAM;IAkBlD;;OAEG;IACH,KAAK,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAoBhG,OAAO,CAAC,QAAQ;IAOhB,WAAW,CAAC,KAAK,SAAK,GAAG,GAAG,EAAE;IAQ9B,KAAK,IAAI,IAAI;CAIhB"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/memory/store.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,MAAM,WAAW,MAAM;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACpE,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAClC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAmB,SAAQ,MAAM;IAC9C,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,WAAW;IACpB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA4B;gBAEvC,MAAM,EAAE,MAAM;IAY1B;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IASzC;;OAEG;IACH,OAAO,CAAC,OAAO;IAgHf;;OAEG;IACH,IAAI,CACA,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,CAAC,UAAU,CAAa,EACxC,MAAM,GAAE,MAAM,CAAC,QAAQ,CAAU,EACjC,IAAI,GAAE,MAAM,EAAO,GACpB,MAAM;IAYT;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,kBAAkB,EAAE;IAqCvD;;OAEG;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,SAAK,GAAG,MAAM,EAAE;IAqBzD;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOpC;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAS3B;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,MAAM;IAkBlD;;OAEG;IACH,KAAK,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAoBhG,OAAO,CAAC,QAAQ;IAOhB,WAAW,CAAC,KAAK,SAAK,GAAG,GAAG,EAAE;IAM9B;;OAEG;IACH,gBAAgB,CAAC,IAAI,GAAE,IAAiB,GAAG,GAAG,EAAE;IAgBhD;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAmB5E;;OAEG;IACH,eAAe,IAAI,GAAG,EAAE;IAMxB,KAAK,IAAI,IAAI;CAIhB"}
@@ -123,6 +123,16 @@ export class MemoryStore {
123
123
  CREATE INDEX IF NOT EXISTS idx_tasks_goal ON tasks(goal_id);
124
124
  CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status);
125
125
  CREATE INDEX IF NOT EXISTS idx_audit_entity ON audit_events(entity_type, entity_id);
126
+
127
+ -- Skill Metrics table
128
+ CREATE TABLE IF NOT EXISTS skill_metrics (
129
+ skill TEXT PRIMARY KEY,
130
+ calls INTEGER DEFAULT 0,
131
+ successes INTEGER DEFAULT 0,
132
+ failures INTEGER DEFAULT 0,
133
+ total_duration_ms INTEGER DEFAULT 0,
134
+ last_used DATETIME
135
+ );
126
136
  `);
127
137
  }
128
138
  // ─── Memory Operations ─────────────────────────────────────
@@ -150,7 +160,16 @@ export class MemoryStore {
150
160
  ORDER BY fts.rank
151
161
  LIMIT ?
152
162
  `);
153
- const results = stmt.all(query, limit);
163
+ // Sanitize query for FTS5: remove special chars that break syntax
164
+ // or wrap in quotes if you want exact match.
165
+ // For now, let's just strip non-alphanumeric except spaces.
166
+ const safeQuery = query.replace(/[^\w\s]/g, ' ').trim();
167
+ // If query becomes empty after sanitization, return empty results
168
+ if (!safeQuery)
169
+ return [];
170
+ // Use OR logic for multiple terms for broader context
171
+ const ftsQuery = safeQuery.split(/\s+/).join(' OR ');
172
+ const results = stmt.all(ftsQuery, limit);
154
173
  // Update accessed_at for returned memories
155
174
  const updateStmt = this.db.prepare(`
156
175
  UPDATE memories SET accessed_at = datetime('now') WHERE id = ?
@@ -246,6 +265,43 @@ export class MemoryStore {
246
265
  getAuditLog(limit = 20) {
247
266
  return this.db.prepare('SELECT * FROM audit_events ORDER BY created_at DESC LIMIT ?').all(limit);
248
267
  }
268
+ /**
269
+ * Get activity for a specific date (default: today)
270
+ */
271
+ getDailyActivity(date = new Date()) {
272
+ const startOfDay = new Date(date);
273
+ startOfDay.setHours(0, 0, 0, 0);
274
+ const endOfDay = new Date(date);
275
+ endOfDay.setHours(23, 59, 59, 999);
276
+ return this.db.prepare(`
277
+ SELECT * FROM audit_events
278
+ WHERE created_at BETWEEN ? AND ?
279
+ ORDER BY created_at ASC
280
+ `).all(startOfDay.toISOString(), endOfDay.toISOString());
281
+ }
282
+ // ─── Skill Metrics ───────────────────────────────────────
283
+ /**
284
+ * Record usage of a skill
285
+ */
286
+ recordSkillMetric(skill, success, durationMs) {
287
+ const stmt = this.db.prepare(`
288
+ INSERT INTO skill_metrics (skill, calls, successes, failures, total_duration_ms, last_used)
289
+ VALUES (?, 1, ?, ?, ?, datetime('now'))
290
+ ON CONFLICT(skill) DO UPDATE SET
291
+ calls = calls + 1,
292
+ successes = successes + (excluded.successes),
293
+ failures = failures + (excluded.failures),
294
+ total_duration_ms = total_duration_ms + excluded.total_duration_ms,
295
+ last_used = datetime('now')
296
+ `);
297
+ stmt.run(skill, success ? 1 : 0, success ? 0 : 1, durationMs);
298
+ }
299
+ /**
300
+ * Get metrics for all skills
301
+ */
302
+ getSkillMetrics() {
303
+ return this.db.prepare('SELECT * FROM skill_metrics ORDER BY calls DESC').all();
304
+ }
249
305
  // ─── Cleanup ─────────────────────────────────────────────
250
306
  close() {
251
307
  this.db.close();