cmp-standards 2.4.0 → 2.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.
- package/README.md +633 -611
- package/dist/cli/index.js +0 -0
- package/dist/db/drizzle-client.d.ts +3 -3
- package/dist/db/drizzle-client.d.ts.map +1 -1
- package/dist/db/drizzle-client.js +57 -58
- package/dist/db/drizzle-client.js.map +1 -1
- package/dist/db/turso-client.js +11 -11
- package/dist/eslint/rules/no-async-useeffect.js +6 -6
- package/dist/hooks/cloud-pre-tool-use.js +20 -20
- package/dist/hooks/cloud-session-start.d.ts +15 -3
- package/dist/hooks/cloud-session-start.d.ts.map +1 -1
- package/dist/hooks/cloud-session-start.js +135 -8
- package/dist/hooks/cloud-session-start.js.map +1 -1
- package/dist/hooks/session-start.d.ts +2 -1
- package/dist/hooks/session-start.d.ts.map +1 -1
- package/dist/hooks/session-start.js +99 -74
- package/dist/hooks/session-start.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.js +2 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/schema/plans.d.ts +194 -0
- package/dist/schema/plans.d.ts.map +1 -0
- package/dist/schema/plans.js +180 -0
- package/dist/schema/plans.js.map +1 -0
- package/dist/schema/tracking.d.ts +90 -90
- package/dist/services/ContextGenerator.d.ts +16 -0
- package/dist/services/ContextGenerator.d.ts.map +1 -0
- package/dist/services/ContextGenerator.js +62 -0
- package/dist/services/ContextGenerator.js.map +1 -0
- package/dist/services/PlanManager.d.ts +99 -0
- package/dist/services/PlanManager.d.ts.map +1 -0
- package/dist/services/PlanManager.js +372 -0
- package/dist/services/PlanManager.js.map +1 -0
- package/dist/services/ProjectScaffold.js +76 -76
- package/dist/services/context-injector.d.ts +111 -0
- package/dist/services/context-injector.d.ts.map +1 -0
- package/dist/services/context-injector.js +397 -0
- package/dist/services/context-injector.js.map +1 -0
- package/dist/services/index.d.ts +15 -15
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +18 -20
- package/dist/services/index.js.map +1 -1
- package/dist/services/memory-router.d.ts +122 -0
- package/dist/services/memory-router.d.ts.map +1 -0
- package/dist/services/memory-router.js +517 -0
- package/dist/services/memory-router.js.map +1 -0
- package/dist/services/pattern-tracker.d.ts +97 -0
- package/dist/services/pattern-tracker.d.ts.map +1 -0
- package/dist/services/pattern-tracker.js +425 -0
- package/dist/services/pattern-tracker.js.map +1 -0
- package/dist/services/semantic-search.d.ts +33 -35
- package/dist/services/semantic-search.d.ts.map +1 -1
- package/dist/services/semantic-search.js +207 -165
- package/dist/services/semantic-search.js.map +1 -1
- package/dist/types/index.d.ts +329 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +186 -9
- package/dist/types/index.js.map +1 -1
- package/package.json +104 -100
- package/standards/README.md +50 -50
- package/standards/experts/expert-routing.md +215 -215
- package/standards/general/code-quality.md +86 -86
- package/standards/general/memory-usage.md +205 -205
- package/standards/general/sync-workflow.md +235 -235
- package/standards/general/workflow.md +82 -82
- package/standards/hooks/mandatory-tracking.md +446 -446
- package/standards/infrastructure/cloud-database.md +287 -287
- package/standards/mcp/server-design.md +243 -243
- package/standards/mcp/tool-patterns.md +354 -354
- package/standards/skills/skill-structure.md +286 -286
- package/standards/skills/workflow-design.md +323 -323
- package/standards/tools/tool-design.md +297 -297
- package/templates/agents/architecture-expert.md +61 -61
- package/templates/agents/database-expert.md +62 -62
- package/templates/agents/documentation-expert.md +57 -57
- package/templates/agents/memory-expert.md +88 -88
- package/templates/agents/performance-expert.md +61 -61
- package/templates/agents/security-expert.md +59 -59
- package/templates/agents/ux-expert.md +63 -63
- package/templates/agents/worker.md +75 -75
- package/templates/ai-skills/SKILL_TEMPLATE.md +55 -55
- package/templates/claude-settings.json +72 -72
- package/templates/commands/experts.md +138 -138
- package/templates/hooks/README.md +158 -158
- package/templates/hooks/project.config.json.template +77 -77
- package/templates/hooks/settings.local.json.template +57 -57
- package/templates/memory-config.json +56 -56
- package/templates/memory-config.schema.json +212 -212
- package/templates/settings.json +58 -58
- package/templates/skills/continue.md +205 -205
- package/templates/workflows/business-improvement.md +264 -264
- package/templates/workflows/expert-review.md +153 -153
- package/templates/workflows/internal-app.md +245 -245
- package/templates/workflows/sync-docs.md +187 -187
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-injector.d.ts","sourceRoot":"","sources":["../../src/services/context-injector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Context Injector Service
|
|
3
|
+
* @description Smart context loading for sessions and tools
|
|
4
|
+
*
|
|
5
|
+
* Provides:
|
|
6
|
+
* - Domain-specific memory loading
|
|
7
|
+
* - Semantic context matching for tasks
|
|
8
|
+
* - Skill suggestions based on context
|
|
9
|
+
* - "Did we solve this before?" detection
|
|
10
|
+
*/
|
|
11
|
+
import { memoryRouter } from './memory-router.js';
|
|
12
|
+
import { cloud } from '../db/cloud.js';
|
|
13
|
+
import { upstash } from '../db/upstash-client.js';
|
|
14
|
+
import { loadConfig } from '../utils/config.js';
|
|
15
|
+
// =============================================================================
|
|
16
|
+
// Skill Registry
|
|
17
|
+
// =============================================================================
|
|
18
|
+
const DOMAIN_SKILLS = {
|
|
19
|
+
finances: [
|
|
20
|
+
{ name: 'implement', description: 'Feature implementation with finance guards', command: '/sc:implement', relevance: 0.9 },
|
|
21
|
+
{ name: 'analyze', description: 'Analyze code quality and security', command: '/sc:analyze --focus security', relevance: 0.8 }
|
|
22
|
+
],
|
|
23
|
+
reserves: [
|
|
24
|
+
{ name: 'implement', description: 'Reservation feature implementation', command: '/sc:implement', relevance: 0.9 },
|
|
25
|
+
{ name: 'test', description: 'Execute tests', command: '/sc:test', relevance: 0.7 }
|
|
26
|
+
],
|
|
27
|
+
marketing: [
|
|
28
|
+
{ name: 'implement', description: 'Marketing feature implementation', command: '/sc:implement', relevance: 0.9 },
|
|
29
|
+
{ name: 'design', description: 'Design system architecture', command: '/sc:design', relevance: 0.8 }
|
|
30
|
+
],
|
|
31
|
+
infrastructure: [
|
|
32
|
+
{ name: 'troubleshoot', description: 'Diagnose and resolve issues', command: '/sc:troubleshoot', relevance: 0.9 },
|
|
33
|
+
{ name: 'build', description: 'Build and compile', command: '/sc:build', relevance: 0.8 }
|
|
34
|
+
],
|
|
35
|
+
default: [
|
|
36
|
+
{ name: 'implement', description: 'General implementation', command: '/sc:implement', relevance: 0.8 },
|
|
37
|
+
{ name: 'analyze', description: 'Code analysis', command: '/sc:analyze', relevance: 0.7 },
|
|
38
|
+
{ name: 'improve', description: 'Apply improvements', command: '/sc:improve', relevance: 0.6 }
|
|
39
|
+
]
|
|
40
|
+
};
|
|
41
|
+
// =============================================================================
|
|
42
|
+
// Context Injector Implementation
|
|
43
|
+
// =============================================================================
|
|
44
|
+
class ContextInjectorService {
|
|
45
|
+
config = null;
|
|
46
|
+
/**
|
|
47
|
+
* Get full session context for SessionStart hook
|
|
48
|
+
*/
|
|
49
|
+
async getSessionContext(system, domain, projectRoot) {
|
|
50
|
+
// Load config if needed
|
|
51
|
+
if (!this.config && projectRoot) {
|
|
52
|
+
this.config = await loadConfig(projectRoot);
|
|
53
|
+
}
|
|
54
|
+
// Run all queries in parallel for performance
|
|
55
|
+
const [recentMemories, unresolved, patterns, activeTasks, pendingImprovements, health] = await Promise.all([
|
|
56
|
+
this.getRecentMemories(system, domain),
|
|
57
|
+
this.getUnresolvedIssues(system, domain),
|
|
58
|
+
this.getFrequentPatterns(system),
|
|
59
|
+
this.getActiveTasks(system),
|
|
60
|
+
this.getPendingImprovementsCount(system),
|
|
61
|
+
this.checkHealth()
|
|
62
|
+
]);
|
|
63
|
+
// Get relevant skills for the domain
|
|
64
|
+
const skills = this.getSkillsForDomain(domain);
|
|
65
|
+
return {
|
|
66
|
+
recentMemories,
|
|
67
|
+
unresolved,
|
|
68
|
+
patterns,
|
|
69
|
+
skills,
|
|
70
|
+
activeTasks,
|
|
71
|
+
pendingImprovements,
|
|
72
|
+
health
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get context for a specific task/operation
|
|
77
|
+
* Called by PreToolUse for Task tool
|
|
78
|
+
*/
|
|
79
|
+
async getTaskContext(taskDescription, system) {
|
|
80
|
+
// Search for related past work
|
|
81
|
+
const searchResult = await memoryRouter.search({
|
|
82
|
+
query: taskDescription,
|
|
83
|
+
system,
|
|
84
|
+
limit: 5,
|
|
85
|
+
minScore: 0.5
|
|
86
|
+
});
|
|
87
|
+
// Filter for gotchas/warnings
|
|
88
|
+
const potentialGotchas = searchResult.memories.filter(m => m.title.toLowerCase().includes('gotcha') ||
|
|
89
|
+
m.title.toLowerCase().includes('bug') ||
|
|
90
|
+
m.title.toLowerCase().includes('warning') ||
|
|
91
|
+
m.title.toLowerCase().includes('issue'));
|
|
92
|
+
// Get similar completed tasks
|
|
93
|
+
const similarTasks = await this.getSimilarCompletedTasks(taskDescription, system);
|
|
94
|
+
// Generate suggested approach if we have relevant past work
|
|
95
|
+
let suggestedApproach;
|
|
96
|
+
if (searchResult.memories.length > 0) {
|
|
97
|
+
suggestedApproach = this.generateApproachSuggestion(searchResult.memories);
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
relatedWork: searchResult.memories,
|
|
101
|
+
potentialGotchas,
|
|
102
|
+
suggestedApproach,
|
|
103
|
+
similarTasks
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Check if similar work was done before
|
|
108
|
+
* Returns matching memories if found
|
|
109
|
+
*/
|
|
110
|
+
async checkPreviousWork(query, system, filePath) {
|
|
111
|
+
// Build search query
|
|
112
|
+
let searchQuery = query;
|
|
113
|
+
if (filePath) {
|
|
114
|
+
// Extract filename for more specific matching
|
|
115
|
+
const fileName = filePath.split('/').pop() || '';
|
|
116
|
+
searchQuery = `${query} ${fileName}`;
|
|
117
|
+
}
|
|
118
|
+
const result = await memoryRouter.search({
|
|
119
|
+
query: searchQuery,
|
|
120
|
+
system,
|
|
121
|
+
limit: 3,
|
|
122
|
+
minScore: 0.7 // Higher threshold for "did we solve this" detection
|
|
123
|
+
});
|
|
124
|
+
if (result.memories.length === 0) {
|
|
125
|
+
return { found: false, memories: [] };
|
|
126
|
+
}
|
|
127
|
+
// Check for highly relevant matches
|
|
128
|
+
const highlyRelevant = result.memories.filter(m => m.score && m.score > 0.8);
|
|
129
|
+
if (highlyRelevant.length > 0) {
|
|
130
|
+
const most = highlyRelevant[0];
|
|
131
|
+
return {
|
|
132
|
+
found: true,
|
|
133
|
+
memories: highlyRelevant,
|
|
134
|
+
message: `📚 **Similar work found**: "${most.title}"\n\nThis might be relevant to what you're doing now.`
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
found: result.memories.length > 0,
|
|
139
|
+
memories: result.memories
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Format session context as markdown for injection
|
|
144
|
+
*/
|
|
145
|
+
formatSessionContext(context, system) {
|
|
146
|
+
const lines = [];
|
|
147
|
+
// System status
|
|
148
|
+
lines.push(`## 🚀 Session Started: ${system}`);
|
|
149
|
+
lines.push('');
|
|
150
|
+
// Health indicator
|
|
151
|
+
const healthIcon = context.health.overall === 'healthy' ? '✅' :
|
|
152
|
+
context.health.overall === 'degraded' ? '⚠️' : '❌';
|
|
153
|
+
lines.push(`**Cloud Status**: ${healthIcon} ${context.health.overall}`);
|
|
154
|
+
lines.push('');
|
|
155
|
+
// Active tasks
|
|
156
|
+
if (context.activeTasks.length > 0) {
|
|
157
|
+
lines.push(`## 📋 Active Tasks (${context.activeTasks.length})`);
|
|
158
|
+
lines.push('');
|
|
159
|
+
for (const task of context.activeTasks.slice(0, 3)) {
|
|
160
|
+
lines.push(`### ${task.title}`);
|
|
161
|
+
lines.push(`- **Progress**: ${task.progress}`);
|
|
162
|
+
lines.push(`- **Last activity**: ${task.lastActivity}`);
|
|
163
|
+
lines.push(`- **ID**: \`${task.id}\``);
|
|
164
|
+
lines.push('');
|
|
165
|
+
}
|
|
166
|
+
if (context.activeTasks.length > 3) {
|
|
167
|
+
lines.push(`> ... and ${context.activeTasks.length - 3} more tasks`);
|
|
168
|
+
lines.push('');
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// Pending improvements
|
|
172
|
+
if (context.pendingImprovements > 0) {
|
|
173
|
+
lines.push(`## 💡 Pending Improvements: ${context.pendingImprovements}`);
|
|
174
|
+
lines.push('');
|
|
175
|
+
lines.push(`> Run \`npm run ec improvements\` to see details`);
|
|
176
|
+
lines.push('');
|
|
177
|
+
}
|
|
178
|
+
// Unresolved issues
|
|
179
|
+
if (context.unresolved.length > 0) {
|
|
180
|
+
lines.push(`## ⚠️ Active Gotchas`);
|
|
181
|
+
lines.push('');
|
|
182
|
+
for (const issue of context.unresolved.slice(0, 3)) {
|
|
183
|
+
lines.push(`- **${issue.title}**${issue.domain ? ` (${issue.domain})` : ''}`);
|
|
184
|
+
}
|
|
185
|
+
lines.push('');
|
|
186
|
+
}
|
|
187
|
+
// Recent memories
|
|
188
|
+
if (context.recentMemories.length > 0) {
|
|
189
|
+
lines.push(`## 📚 Recent Context`);
|
|
190
|
+
lines.push('');
|
|
191
|
+
for (const memory of context.recentMemories.slice(0, 5)) {
|
|
192
|
+
lines.push(`- ${memory.title}${memory.domain ? ` [${memory.domain}]` : ''}`);
|
|
193
|
+
}
|
|
194
|
+
lines.push('');
|
|
195
|
+
}
|
|
196
|
+
// Available skills
|
|
197
|
+
if (context.skills.length > 0) {
|
|
198
|
+
lines.push(`## 🛠️ Available Skills`);
|
|
199
|
+
lines.push('');
|
|
200
|
+
for (const skill of context.skills.slice(0, 4)) {
|
|
201
|
+
lines.push(`- \`${skill.command}\` - ${skill.description}`);
|
|
202
|
+
}
|
|
203
|
+
lines.push('');
|
|
204
|
+
}
|
|
205
|
+
// Workflow reminder
|
|
206
|
+
lines.push(`## ⚙️ Workflow`);
|
|
207
|
+
lines.push('');
|
|
208
|
+
lines.push(`1. **Register task** before starting work`);
|
|
209
|
+
lines.push(`2. **Update progress** as you work`);
|
|
210
|
+
lines.push(`3. **Capture learnings** when done`);
|
|
211
|
+
lines.push('');
|
|
212
|
+
return lines.join('\n');
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Format task context as markdown for injection
|
|
216
|
+
*/
|
|
217
|
+
formatTaskContext(context) {
|
|
218
|
+
if (context.relatedWork.length === 0 && context.potentialGotchas.length === 0) {
|
|
219
|
+
return '';
|
|
220
|
+
}
|
|
221
|
+
const lines = [];
|
|
222
|
+
// Suggested approach
|
|
223
|
+
if (context.suggestedApproach) {
|
|
224
|
+
lines.push(`## 💡 Suggested Approach`);
|
|
225
|
+
lines.push('');
|
|
226
|
+
lines.push(context.suggestedApproach);
|
|
227
|
+
lines.push('');
|
|
228
|
+
}
|
|
229
|
+
// Potential gotchas
|
|
230
|
+
if (context.potentialGotchas.length > 0) {
|
|
231
|
+
lines.push(`## ⚠️ Potential Gotchas`);
|
|
232
|
+
lines.push('');
|
|
233
|
+
for (const gotcha of context.potentialGotchas.slice(0, 3)) {
|
|
234
|
+
lines.push(`- **${gotcha.title}**: ${gotcha.body.slice(0, 100)}...`);
|
|
235
|
+
}
|
|
236
|
+
lines.push('');
|
|
237
|
+
}
|
|
238
|
+
// Related past work
|
|
239
|
+
if (context.relatedWork.length > 0) {
|
|
240
|
+
lines.push(`## 📚 Related Past Work`);
|
|
241
|
+
lines.push('');
|
|
242
|
+
for (const work of context.relatedWork.slice(0, 3)) {
|
|
243
|
+
const score = work.score ? ` (${Math.round(work.score * 100)}% match)` : '';
|
|
244
|
+
lines.push(`- ${work.title}${score}`);
|
|
245
|
+
}
|
|
246
|
+
lines.push('');
|
|
247
|
+
}
|
|
248
|
+
return lines.join('\n');
|
|
249
|
+
}
|
|
250
|
+
// =============================================================================
|
|
251
|
+
// Private Methods
|
|
252
|
+
// =============================================================================
|
|
253
|
+
async getRecentMemories(system, domain) {
|
|
254
|
+
if (domain) {
|
|
255
|
+
return memoryRouter.getByDomain(system, domain, 5);
|
|
256
|
+
}
|
|
257
|
+
return memoryRouter.getRecent(system, 5);
|
|
258
|
+
}
|
|
259
|
+
async getUnresolvedIssues(system, domain) {
|
|
260
|
+
return memoryRouter.getUnresolved(system, domain);
|
|
261
|
+
}
|
|
262
|
+
async getFrequentPatterns(system) {
|
|
263
|
+
const patterns = await memoryRouter.getTriggeredPatterns(system);
|
|
264
|
+
return patterns.map(p => ({
|
|
265
|
+
id: p.patternId,
|
|
266
|
+
description: p.description,
|
|
267
|
+
occurrences: p.occurrences,
|
|
268
|
+
severity: p.severity
|
|
269
|
+
}));
|
|
270
|
+
}
|
|
271
|
+
async getActiveTasks(system) {
|
|
272
|
+
try {
|
|
273
|
+
const tasks = await cloud.turso.getActiveTasks(system);
|
|
274
|
+
return tasks.map(t => {
|
|
275
|
+
// Safe type assertion for dynamically stored content
|
|
276
|
+
const content = t.content;
|
|
277
|
+
return {
|
|
278
|
+
id: t.id,
|
|
279
|
+
title: content.title || 'Untitled Task',
|
|
280
|
+
status: content.status || 'in_progress',
|
|
281
|
+
progress: `Step ${(content.context?.todoItems?.length ?? 0) + 1}`,
|
|
282
|
+
lastActivity: this.formatTimeAgo(content.startedAt || new Date().toISOString())
|
|
283
|
+
};
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
return [];
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
async getPendingImprovementsCount(system) {
|
|
291
|
+
try {
|
|
292
|
+
const improvements = await cloud.turso.getPendingImprovements(system);
|
|
293
|
+
return improvements.length;
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
return 0;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
async checkHealth() {
|
|
300
|
+
try {
|
|
301
|
+
const status = await cloud.healthCheck();
|
|
302
|
+
return {
|
|
303
|
+
turso: status.turso.ok,
|
|
304
|
+
redis: status.redis.ok,
|
|
305
|
+
vector: status.vector.ok,
|
|
306
|
+
overall: status.turso.ok && status.redis.ok ? 'healthy' :
|
|
307
|
+
status.turso.ok || status.redis.ok ? 'degraded' : 'offline'
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
catch {
|
|
311
|
+
return {
|
|
312
|
+
turso: false,
|
|
313
|
+
redis: false,
|
|
314
|
+
vector: false,
|
|
315
|
+
overall: 'offline'
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
getSkillsForDomain(domain) {
|
|
320
|
+
if (!domain)
|
|
321
|
+
return DOMAIN_SKILLS.default;
|
|
322
|
+
return DOMAIN_SKILLS[domain] || DOMAIN_SKILLS.default;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Find similar completed tasks using semantic search
|
|
326
|
+
*
|
|
327
|
+
* Uses vector embeddings to find tasks with similar descriptions,
|
|
328
|
+
* helping inform approach based on past successful implementations.
|
|
329
|
+
*/
|
|
330
|
+
async getSimilarCompletedTasks(description, system) {
|
|
331
|
+
try {
|
|
332
|
+
// Search for similar tasks using vector search
|
|
333
|
+
const results = await upstash.searchVectors(description, {
|
|
334
|
+
topK: 5,
|
|
335
|
+
filter: `system = "${system}" AND type = "task"`,
|
|
336
|
+
includeMetadata: true
|
|
337
|
+
});
|
|
338
|
+
// Filter to completed tasks with good similarity
|
|
339
|
+
const similarTasks = [];
|
|
340
|
+
for (const result of results) {
|
|
341
|
+
if (result.score < 0.6)
|
|
342
|
+
continue; // Minimum similarity threshold
|
|
343
|
+
const metadata = result.metadata;
|
|
344
|
+
if (!metadata)
|
|
345
|
+
continue;
|
|
346
|
+
// Check if task is completed
|
|
347
|
+
const status = metadata.status;
|
|
348
|
+
if (status !== 'completed' && status !== 'done')
|
|
349
|
+
continue;
|
|
350
|
+
similarTasks.push({
|
|
351
|
+
id: result.id,
|
|
352
|
+
title: metadata.title || 'Untitled Task',
|
|
353
|
+
status: status,
|
|
354
|
+
progress: metadata.progress || 'Completed',
|
|
355
|
+
lastActivity: this.formatTimeAgo(metadata.completedAt ||
|
|
356
|
+
metadata.updatedAt ||
|
|
357
|
+
new Date().toISOString())
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
return similarTasks.slice(0, 3); // Return top 3 similar tasks
|
|
361
|
+
}
|
|
362
|
+
catch (error) {
|
|
363
|
+
console.warn('[ContextInjector] Semantic task search failed:', error);
|
|
364
|
+
return [];
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
generateApproachSuggestion(memories) {
|
|
368
|
+
if (memories.length === 0)
|
|
369
|
+
return '';
|
|
370
|
+
// Find the most relevant memory with actual content
|
|
371
|
+
const relevant = memories.find(m => m.body && m.body.length > 50);
|
|
372
|
+
if (!relevant)
|
|
373
|
+
return '';
|
|
374
|
+
return `Based on previous work on "${relevant.title}", consider reviewing the approach used there before implementing.`;
|
|
375
|
+
}
|
|
376
|
+
formatTimeAgo(isoDate) {
|
|
377
|
+
const date = new Date(isoDate);
|
|
378
|
+
const now = new Date();
|
|
379
|
+
const diffMs = now.getTime() - date.getTime();
|
|
380
|
+
const diffMins = Math.floor(diffMs / 60000);
|
|
381
|
+
const diffHours = Math.floor(diffMins / 60);
|
|
382
|
+
const diffDays = Math.floor(diffHours / 24);
|
|
383
|
+
if (diffMins < 1)
|
|
384
|
+
return 'just now';
|
|
385
|
+
if (diffMins < 60)
|
|
386
|
+
return `${diffMins}m ago`;
|
|
387
|
+
if (diffHours < 24)
|
|
388
|
+
return `${diffHours}h ago`;
|
|
389
|
+
return `${diffDays}d ago`;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
// =============================================================================
|
|
393
|
+
// Export Singleton
|
|
394
|
+
// =============================================================================
|
|
395
|
+
export const contextInjector = new ContextInjectorService();
|
|
396
|
+
export default contextInjector;
|
|
397
|
+
//# sourceMappingURL=context-injector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-injector.js","sourceRoot":"","sources":["../../src/services/context-injector.ts"],"names":[],"mappings":"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"}
|
package/dist/services/index.d.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export {
|
|
1
|
+
export * from "./IdeaCollector.js";
|
|
2
|
+
export * from "./ProjectScanner.js";
|
|
3
|
+
export * from "./TaskTracker.js";
|
|
4
|
+
export * from "./WorkPlanManager.js";
|
|
5
|
+
export * from "./ProjectScaffold.js";
|
|
6
|
+
export * from "./semantic-search.js";
|
|
7
|
+
export * from "./ContextGenerator.js";
|
|
8
|
+
export * from "./auto-inject.js";
|
|
9
|
+
export * from "./auto-tag.js";
|
|
10
|
+
export { memoryRouter, type UnifiedMemory, type SearchOptions, type SearchResult, type WriteOptions } from './memory-router.js';
|
|
11
|
+
export { contextInjector, type SessionContext, type TaskContext, type SystemHealth } from './context-injector.js';
|
|
12
|
+
export { patternTracker, type TrackedPattern, type PatternContext, type ESLintRuleSpec } from './pattern-tracker.js';
|
|
13
|
+
export { MemoryConsolidationService, createConsolidationService, type ConsolidationResult, type ConflictInfo, type DecayResult, type MemoryWithMeta, } from './memory-consolidation.js';
|
|
11
14
|
export { WeeklyDigestService, createWeeklyDigestService, type WeeklyDigest, type DigestSummary, type DigestHighlight, type DigestPattern, type DigestRecommendation, type DigestTrend, } from './weekly-digest.js';
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
14
|
-
export { WorkPlanManager, getWorkPlanManager, createWorkPlanManager, type CreatePlanOptions, type PlanTask, type PlanSummary, } from './WorkPlanManager.js';
|
|
15
|
-
export { ProjectScanner, createProjectScanner, type ProjectScanResult, } from './ProjectScanner.js';
|
|
16
|
-
export { ProjectScaffold, createProjectScaffold, type ScaffoldOptions, type ScaffoldResult, type ProjectConfig, } from './ProjectScaffold.js';
|
|
15
|
+
export { CrossProjectSyncService, createCrossProjectSyncService, ECOSYSTEM_SYSTEMS, type SyncConfig, type SyncResult, type SharedMemory, } from './cross-project-sync.js';
|
|
16
|
+
export { PlanManager, getPlanManager, createPlanManager } from './PlanManager.js';
|
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChI,OAAO,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAClH,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGrH,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,GAClB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/services/index.js
CHANGED
|
@@ -1,23 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
|
|
6
|
-
export
|
|
7
|
-
export
|
|
1
|
+
export * from "./IdeaCollector.js";
|
|
2
|
+
export * from "./ProjectScanner.js";
|
|
3
|
+
export * from "./TaskTracker.js";
|
|
4
|
+
export * from "./WorkPlanManager.js";
|
|
5
|
+
export * from "./ProjectScaffold.js";
|
|
6
|
+
export * from "./semantic-search.js";
|
|
7
|
+
export * from "./ContextGenerator.js";
|
|
8
|
+
export * from "./auto-inject.js";
|
|
9
|
+
export * from "./auto-tag.js";
|
|
10
|
+
// v3.0 Services
|
|
11
|
+
export { memoryRouter } from './memory-router.js';
|
|
12
|
+
export { contextInjector } from './context-injector.js';
|
|
13
|
+
export { patternTracker } from './pattern-tracker.js';
|
|
14
|
+
// Memory Consolidation & Weekly Digest
|
|
8
15
|
export { MemoryConsolidationService, createConsolidationService, } from './memory-consolidation.js';
|
|
9
|
-
export { AutoTagService, createAutoTagService, } from './auto-tag.js';
|
|
10
|
-
export { CrossProjectSyncService, createCrossProjectSyncService, ECOSYSTEM_SYSTEMS, } from './cross-project-sync.js';
|
|
11
16
|
export { WeeklyDigestService, createWeeklyDigestService, } from './weekly-digest.js';
|
|
12
|
-
//
|
|
13
|
-
|
|
14
|
-
//
|
|
15
|
-
export {
|
|
16
|
-
export { IdeaCollector, getIdeaCollector, createIdeaCollector, } from './IdeaCollector.js';
|
|
17
|
-
export { WorkPlanManager, getWorkPlanManager, createWorkPlanManager, } from './WorkPlanManager.js';
|
|
18
|
-
// =============================================================================
|
|
19
|
-
// PROJECT SETUP SERVICES
|
|
20
|
-
// =============================================================================
|
|
21
|
-
export { ProjectScanner, createProjectScanner, } from './ProjectScanner.js';
|
|
22
|
-
export { ProjectScaffold, createProjectScaffold, } from './ProjectScaffold.js';
|
|
17
|
+
// Cross-Project Sync
|
|
18
|
+
export { CrossProjectSyncService, createCrossProjectSyncService, ECOSYSTEM_SYSTEMS, } from './cross-project-sync.js';
|
|
19
|
+
// Plan Manager (v2.5.0+)
|
|
20
|
+
export { PlanManager, getPlanManager, createPlanManager } from './PlanManager.js';
|
|
23
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAE9B,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAgF,MAAM,oBAAoB,CAAC;AAChI,OAAO,EAAE,eAAe,EAA4D,MAAM,uBAAuB,CAAC;AAClH,OAAO,EAAE,cAAc,EAAiE,MAAM,sBAAsB,CAAC;AAErH,uCAAuC;AACvC,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAK3B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,mBAAmB,EACnB,yBAAyB,GAO1B,MAAM,oBAAoB,CAAC;AAE5B,qBAAqB;AACrB,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,iBAAiB,GAIlB,MAAM,yBAAyB,CAAC;AAEjC,yBAAyB;AACzB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Memory Router Service
|
|
3
|
+
* @description Unified memory layer that routes queries across all backends
|
|
4
|
+
*
|
|
5
|
+
* Backends:
|
|
6
|
+
* - DEV_Items (Turso/SQLite) - Persistent structured storage
|
|
7
|
+
* - Upstash Vector - Semantic search with embeddings
|
|
8
|
+
* - Upstash Redis - Session cache and quick lookups
|
|
9
|
+
*/
|
|
10
|
+
import type { DevSystem, PatternContent } from '../types/index.js';
|
|
11
|
+
export interface UnifiedMemory {
|
|
12
|
+
id: string;
|
|
13
|
+
title: string;
|
|
14
|
+
body: string;
|
|
15
|
+
domain?: string;
|
|
16
|
+
source: 'turso' | 'vector' | 'redis' | 'claude-mem';
|
|
17
|
+
score?: number;
|
|
18
|
+
createdAt: string;
|
|
19
|
+
tags?: string[];
|
|
20
|
+
metadata?: Record<string, unknown>;
|
|
21
|
+
}
|
|
22
|
+
export interface SearchOptions {
|
|
23
|
+
query: string;
|
|
24
|
+
system: DevSystem;
|
|
25
|
+
domain?: string;
|
|
26
|
+
limit?: number;
|
|
27
|
+
includeArchived?: boolean;
|
|
28
|
+
minScore?: number;
|
|
29
|
+
}
|
|
30
|
+
export interface SearchResult {
|
|
31
|
+
memories: UnifiedMemory[];
|
|
32
|
+
sources: {
|
|
33
|
+
turso: number;
|
|
34
|
+
vector: number;
|
|
35
|
+
redis: number;
|
|
36
|
+
};
|
|
37
|
+
took: number;
|
|
38
|
+
}
|
|
39
|
+
export interface WriteOptions {
|
|
40
|
+
system: DevSystem;
|
|
41
|
+
title: string;
|
|
42
|
+
body: string;
|
|
43
|
+
domain?: string;
|
|
44
|
+
tags?: string[];
|
|
45
|
+
source?: 'claude' | 'gemini' | 'user' | 'system' | 'checkpoint';
|
|
46
|
+
priority?: 'critical' | 'high' | 'medium' | 'low';
|
|
47
|
+
sessionId?: string;
|
|
48
|
+
relatedFiles?: string[];
|
|
49
|
+
}
|
|
50
|
+
declare class MemoryRouterService {
|
|
51
|
+
private initialized;
|
|
52
|
+
/**
|
|
53
|
+
* Initialize all backends
|
|
54
|
+
*/
|
|
55
|
+
init(): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Unified search across all memory backends
|
|
58
|
+
*/
|
|
59
|
+
search(options: SearchOptions): Promise<SearchResult>;
|
|
60
|
+
/**
|
|
61
|
+
* Write memory to all backends atomically
|
|
62
|
+
*/
|
|
63
|
+
write(options: WriteOptions): Promise<string>;
|
|
64
|
+
/**
|
|
65
|
+
* Get memories by domain for context loading
|
|
66
|
+
*/
|
|
67
|
+
getByDomain(system: DevSystem, domain: string, limit?: number): Promise<UnifiedMemory[]>;
|
|
68
|
+
/**
|
|
69
|
+
* Get unresolved issues/gotchas for a domain
|
|
70
|
+
*/
|
|
71
|
+
getUnresolved(system: DevSystem, domain?: string): Promise<UnifiedMemory[]>;
|
|
72
|
+
/**
|
|
73
|
+
* Get recent memories across all domains
|
|
74
|
+
*/
|
|
75
|
+
getRecent(system: DevSystem, limit?: number): Promise<UnifiedMemory[]>;
|
|
76
|
+
/**
|
|
77
|
+
* Get patterns that have reached threshold
|
|
78
|
+
*/
|
|
79
|
+
getTriggeredPatterns(system: DevSystem): Promise<PatternContent[]>;
|
|
80
|
+
/**
|
|
81
|
+
* Sync claude-mem observations to DEV_Items
|
|
82
|
+
* Call this periodically or on session start
|
|
83
|
+
*
|
|
84
|
+
* @param system - Target DevSystem for the memories
|
|
85
|
+
* @param options - Sync options
|
|
86
|
+
* @returns Number of observations synced
|
|
87
|
+
*/
|
|
88
|
+
syncFromClaudeMem(system: DevSystem, options?: {
|
|
89
|
+
project?: string;
|
|
90
|
+
sinceEpoch?: number;
|
|
91
|
+
limit?: number;
|
|
92
|
+
}): Promise<{
|
|
93
|
+
synced: number;
|
|
94
|
+
skipped: number;
|
|
95
|
+
errors: number;
|
|
96
|
+
}>;
|
|
97
|
+
/**
|
|
98
|
+
* Get existing claude-mem synced IDs to avoid duplicates
|
|
99
|
+
*/
|
|
100
|
+
private getExistingClaudeMemIds;
|
|
101
|
+
/**
|
|
102
|
+
* Map observation type to priority
|
|
103
|
+
*/
|
|
104
|
+
private mapObsTypeToPriority;
|
|
105
|
+
/**
|
|
106
|
+
* Detect domain from file paths
|
|
107
|
+
*/
|
|
108
|
+
private detectDomainFromFiles;
|
|
109
|
+
private searchTurso;
|
|
110
|
+
private searchVector;
|
|
111
|
+
private searchRedis;
|
|
112
|
+
private writeToTurso;
|
|
113
|
+
private writeToVector;
|
|
114
|
+
private writeToRedis;
|
|
115
|
+
/**
|
|
116
|
+
* Convert a raw database row to UnifiedMemory
|
|
117
|
+
*/
|
|
118
|
+
private rowToUnifiedMemory;
|
|
119
|
+
}
|
|
120
|
+
export declare const memoryRouter: MemoryRouterService;
|
|
121
|
+
export default memoryRouter;
|
|
122
|
+
//# sourceMappingURL=memory-router.d.ts.map
|