@timmeck/brain 2.1.1 → 2.2.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 (90) hide show
  1. package/README.md +71 -21
  2. package/brain.log +22 -0
  3. package/dist/brain.js +54 -0
  4. package/dist/brain.js.map +1 -1
  5. package/dist/cli/commands/status.js +9 -0
  6. package/dist/cli/commands/status.js.map +1 -1
  7. package/dist/db/migrations/010_memory_schema.d.ts +2 -0
  8. package/dist/db/migrations/010_memory_schema.js +52 -0
  9. package/dist/db/migrations/010_memory_schema.js.map +1 -0
  10. package/dist/db/migrations/011_memory_fts.d.ts +2 -0
  11. package/dist/db/migrations/011_memory_fts.js +54 -0
  12. package/dist/db/migrations/011_memory_fts.js.map +1 -0
  13. package/dist/db/migrations/012_decisions_changelog.d.ts +2 -0
  14. package/dist/db/migrations/012_decisions_changelog.js +97 -0
  15. package/dist/db/migrations/012_decisions_changelog.js.map +1 -0
  16. package/dist/db/migrations/013_tasks.d.ts +2 -0
  17. package/dist/db/migrations/013_tasks.js +53 -0
  18. package/dist/db/migrations/013_tasks.js.map +1 -0
  19. package/dist/db/migrations/014_project_docs.d.ts +2 -0
  20. package/dist/db/migrations/014_project_docs.js +43 -0
  21. package/dist/db/migrations/014_project_docs.js.map +1 -0
  22. package/dist/db/migrations/index.js +10 -0
  23. package/dist/db/migrations/index.js.map +1 -1
  24. package/dist/db/repositories/changelog.repository.d.ts +15 -0
  25. package/dist/db/repositories/changelog.repository.js +60 -0
  26. package/dist/db/repositories/changelog.repository.js.map +1 -0
  27. package/dist/db/repositories/decision.repository.d.ts +17 -0
  28. package/dist/db/repositories/decision.repository.js +89 -0
  29. package/dist/db/repositories/decision.repository.js.map +1 -0
  30. package/dist/db/repositories/doc.repository.d.ts +16 -0
  31. package/dist/db/repositories/doc.repository.js +85 -0
  32. package/dist/db/repositories/doc.repository.js.map +1 -0
  33. package/dist/db/repositories/memory.repository.d.ts +26 -0
  34. package/dist/db/repositories/memory.repository.js +136 -0
  35. package/dist/db/repositories/memory.repository.js.map +1 -0
  36. package/dist/db/repositories/session.repository.d.ts +18 -0
  37. package/dist/db/repositories/session.repository.js +82 -0
  38. package/dist/db/repositories/session.repository.js.map +1 -0
  39. package/dist/db/repositories/task.repository.d.ts +18 -0
  40. package/dist/db/repositories/task.repository.js +110 -0
  41. package/dist/db/repositories/task.repository.js.map +1 -0
  42. package/dist/embeddings/engine.d.ts +5 -0
  43. package/dist/embeddings/engine.js +82 -3
  44. package/dist/embeddings/engine.js.map +1 -1
  45. package/dist/hooks/post-tool-use.js +40 -18
  46. package/dist/hooks/post-tool-use.js.map +1 -1
  47. package/dist/hooks/pre-tool-use.d.ts +2 -0
  48. package/dist/hooks/pre-tool-use.js +44 -0
  49. package/dist/hooks/pre-tool-use.js.map +1 -0
  50. package/dist/index.js +2 -1
  51. package/dist/index.js.map +1 -1
  52. package/dist/ipc/router.d.ts +10 -0
  53. package/dist/ipc/router.js +37 -1
  54. package/dist/ipc/router.js.map +1 -1
  55. package/dist/mcp/tools.js +266 -0
  56. package/dist/mcp/tools.js.map +1 -1
  57. package/dist/services/analytics.service.d.ts +13 -0
  58. package/dist/services/analytics.service.js +13 -0
  59. package/dist/services/analytics.service.js.map +1 -1
  60. package/dist/services/changelog.service.d.ts +17 -0
  61. package/dist/services/changelog.service.js +77 -0
  62. package/dist/services/changelog.service.js.map +1 -0
  63. package/dist/services/decision.service.d.ts +17 -0
  64. package/dist/services/decision.service.js +64 -0
  65. package/dist/services/decision.service.js.map +1 -0
  66. package/dist/services/doc.service.d.ts +30 -0
  67. package/dist/services/doc.service.js +140 -0
  68. package/dist/services/doc.service.js.map +1 -0
  69. package/dist/services/memory.service.d.ts +44 -0
  70. package/dist/services/memory.service.js +189 -0
  71. package/dist/services/memory.service.js.map +1 -0
  72. package/dist/services/task.service.d.ts +35 -0
  73. package/dist/services/task.service.js +116 -0
  74. package/dist/services/task.service.js.map +1 -0
  75. package/dist/types/decision.types.d.ts +75 -0
  76. package/dist/types/decision.types.js +2 -0
  77. package/dist/types/decision.types.js.map +1 -0
  78. package/dist/types/doc.types.d.ts +23 -0
  79. package/dist/types/doc.types.js +2 -0
  80. package/dist/types/doc.types.js.map +1 -0
  81. package/dist/types/memory.types.d.ts +1 -0
  82. package/dist/types/memory.types.js +2 -0
  83. package/dist/types/memory.types.js.map +1 -0
  84. package/dist/types/synapse.types.d.ts +2 -2
  85. package/dist/types/task.types.d.ts +47 -0
  86. package/dist/types/task.types.js +2 -0
  87. package/dist/types/task.types.js.map +1 -0
  88. package/dist/utils/events.d.ts +47 -0
  89. package/dist/utils/events.js.map +1 -1
  90. package/package.json +2 -2
@@ -0,0 +1,82 @@
1
+ export class SessionRepository {
2
+ db;
3
+ stmts;
4
+ constructor(db) {
5
+ this.db = db;
6
+ this.stmts = {
7
+ create: this.db.prepare(`
8
+ INSERT INTO sessions (session_id, project_id, started_at, ended_at, summary, goals, outcome, metadata, embedding)
9
+ VALUES (@session_id, @project_id, @started_at, @ended_at, @summary, @goals, @outcome, @metadata, @embedding)
10
+ `),
11
+ getById: this.db.prepare('SELECT * FROM sessions WHERE id = ?'),
12
+ findBySessionId: this.db.prepare('SELECT * FROM sessions WHERE session_id = ?'),
13
+ findByProject: this.db.prepare('SELECT * FROM sessions WHERE project_id = ? ORDER BY started_at DESC LIMIT ?'),
14
+ findRecent: this.db.prepare('SELECT * FROM sessions ORDER BY started_at DESC LIMIT ?'),
15
+ update: this.db.prepare(`
16
+ UPDATE sessions
17
+ SET summary = COALESCE(@summary, summary),
18
+ ended_at = COALESCE(@ended_at, ended_at),
19
+ outcome = COALESCE(@outcome, outcome),
20
+ goals = COALESCE(@goals, goals),
21
+ metadata = COALESCE(@metadata, metadata)
22
+ WHERE id = @id
23
+ `),
24
+ search: this.db.prepare(`
25
+ SELECT s.* FROM sessions s
26
+ JOIN sessions_fts ON s.id = sessions_fts.rowid
27
+ WHERE sessions_fts MATCH ?
28
+ ORDER BY rank
29
+ LIMIT ?
30
+ `),
31
+ countAll: this.db.prepare('SELECT COUNT(*) as count FROM sessions'),
32
+ findLast: this.db.prepare('SELECT * FROM sessions ORDER BY started_at DESC LIMIT 1'),
33
+ };
34
+ }
35
+ create(data) {
36
+ const result = this.stmts.create.run({
37
+ session_id: data.session_id,
38
+ project_id: data.project_id ?? null,
39
+ started_at: data.started_at ?? new Date().toISOString(),
40
+ ended_at: data.ended_at ?? null,
41
+ summary: data.summary ?? null,
42
+ goals: data.goals ?? null,
43
+ outcome: data.outcome ?? null,
44
+ metadata: data.metadata ?? null,
45
+ embedding: data.embedding ?? null,
46
+ });
47
+ return result.lastInsertRowid;
48
+ }
49
+ getById(id) {
50
+ return this.stmts.getById.get(id);
51
+ }
52
+ findBySessionId(sessionId) {
53
+ return this.stmts.findBySessionId.get(sessionId);
54
+ }
55
+ findByProject(projectId, limit = 20) {
56
+ return this.stmts.findByProject.all(projectId, limit);
57
+ }
58
+ findRecent(limit = 20) {
59
+ return this.stmts.findRecent.all(limit);
60
+ }
61
+ update(id, data) {
62
+ this.stmts.update.run({
63
+ id,
64
+ summary: data.summary ?? null,
65
+ ended_at: data.ended_at ?? null,
66
+ outcome: data.outcome ?? null,
67
+ goals: data.goals ?? null,
68
+ metadata: data.metadata ?? null,
69
+ });
70
+ }
71
+ search(query, limit = 20) {
72
+ return this.stmts.search.all(query, limit);
73
+ }
74
+ countAll() {
75
+ const row = this.stmts.countAll.get();
76
+ return row.count;
77
+ }
78
+ findLast() {
79
+ return this.stmts.findLast.get();
80
+ }
81
+ }
82
+ //# sourceMappingURL=session.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.repository.js","sourceRoot":"","sources":["../../../src/db/repositories/session.repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type Database from 'better-sqlite3';
2
+ import type { TaskRecord, TaskStatus } from '../../types/task.types.js';
3
+ type CreateTaskData = Omit<TaskRecord, 'id' | 'created_at' | 'updated_at'>;
4
+ export declare class TaskRepository {
5
+ private db;
6
+ private stmts;
7
+ constructor(db: Database.Database);
8
+ create(data: CreateTaskData): number;
9
+ getById(id: number): TaskRecord | undefined;
10
+ findByProject(projectId: number, limit?: number): TaskRecord[];
11
+ findByStatus(status: TaskStatus, projectId?: number, limit?: number): TaskRecord[];
12
+ findSubtasks(parentTaskId: number): TaskRecord[];
13
+ findAll(projectId?: number, limit?: number): TaskRecord[];
14
+ search(query: string, limit?: number): TaskRecord[];
15
+ update(id: number, data: Partial<TaskRecord>): void;
16
+ addNote(id: number, note: string): void;
17
+ }
18
+ export {};
@@ -0,0 +1,110 @@
1
+ export class TaskRepository {
2
+ db;
3
+ stmts;
4
+ constructor(db) {
5
+ this.db = db;
6
+ this.stmts = {
7
+ create: this.db.prepare(`
8
+ INSERT INTO tasks (project_id, session_id, parent_task_id, title, description, status, priority, due_date, completed_at, blocked_by, tags, notes, embedding)
9
+ VALUES (@project_id, @session_id, @parent_task_id, @title, @description, @status, @priority, @due_date, @completed_at, @blocked_by, @tags, @notes, @embedding)
10
+ `),
11
+ getById: this.db.prepare('SELECT * FROM tasks WHERE id = ?'),
12
+ findByProject: this.db.prepare('SELECT * FROM tasks WHERE project_id = ? ORDER BY priority DESC, created_at DESC LIMIT ?'),
13
+ findByStatus: this.db.prepare('SELECT * FROM tasks WHERE status = ? ORDER BY priority DESC, created_at DESC LIMIT ?'),
14
+ findByStatusProject: this.db.prepare('SELECT * FROM tasks WHERE status = ? AND project_id = ? ORDER BY priority DESC, created_at DESC LIMIT ?'),
15
+ findSubtasks: this.db.prepare('SELECT * FROM tasks WHERE parent_task_id = ? ORDER BY priority DESC, created_at'),
16
+ findAll: this.db.prepare('SELECT * FROM tasks ORDER BY priority DESC, created_at DESC LIMIT ?'),
17
+ findAllProject: this.db.prepare('SELECT * FROM tasks WHERE project_id = ? ORDER BY priority DESC, created_at DESC LIMIT ?'),
18
+ search: this.db.prepare(`
19
+ SELECT t.* FROM tasks t
20
+ JOIN tasks_fts ON t.id = tasks_fts.rowid
21
+ WHERE tasks_fts MATCH ?
22
+ ORDER BY rank
23
+ LIMIT ?
24
+ `),
25
+ update: this.db.prepare(`
26
+ UPDATE tasks
27
+ SET title = COALESCE(@title, title),
28
+ description = COALESCE(@description, description),
29
+ status = COALESCE(@status, status),
30
+ priority = COALESCE(@priority, priority),
31
+ due_date = COALESCE(@due_date, due_date),
32
+ completed_at = COALESCE(@completed_at, completed_at),
33
+ blocked_by = COALESCE(@blocked_by, blocked_by),
34
+ tags = COALESCE(@tags, tags),
35
+ notes = COALESCE(@notes, notes),
36
+ updated_at = datetime('now')
37
+ WHERE id = @id
38
+ `),
39
+ addNote: this.db.prepare(`
40
+ UPDATE tasks
41
+ SET notes = CASE
42
+ WHEN notes IS NULL THEN @note
43
+ ELSE notes || char(10) || @note
44
+ END,
45
+ updated_at = datetime('now')
46
+ WHERE id = @id
47
+ `),
48
+ };
49
+ }
50
+ create(data) {
51
+ const result = this.stmts.create.run({
52
+ project_id: data.project_id ?? null,
53
+ session_id: data.session_id ?? null,
54
+ parent_task_id: data.parent_task_id ?? null,
55
+ title: data.title,
56
+ description: data.description ?? null,
57
+ status: data.status ?? 'pending',
58
+ priority: data.priority ?? 5,
59
+ due_date: data.due_date ?? null,
60
+ completed_at: data.completed_at ?? null,
61
+ blocked_by: data.blocked_by ?? null,
62
+ tags: data.tags ?? null,
63
+ notes: data.notes ?? null,
64
+ embedding: data.embedding ?? null,
65
+ });
66
+ return result.lastInsertRowid;
67
+ }
68
+ getById(id) {
69
+ return this.stmts.getById.get(id);
70
+ }
71
+ findByProject(projectId, limit = 50) {
72
+ return this.stmts.findByProject.all(projectId, limit);
73
+ }
74
+ findByStatus(status, projectId, limit = 50) {
75
+ if (projectId !== undefined) {
76
+ return this.stmts.findByStatusProject.all(status, projectId, limit);
77
+ }
78
+ return this.stmts.findByStatus.all(status, limit);
79
+ }
80
+ findSubtasks(parentTaskId) {
81
+ return this.stmts.findSubtasks.all(parentTaskId);
82
+ }
83
+ findAll(projectId, limit = 50) {
84
+ if (projectId !== undefined) {
85
+ return this.stmts.findAllProject.all(projectId, limit);
86
+ }
87
+ return this.stmts.findAll.all(limit);
88
+ }
89
+ search(query, limit = 20) {
90
+ return this.stmts.search.all(query, limit);
91
+ }
92
+ update(id, data) {
93
+ this.stmts.update.run({
94
+ id,
95
+ title: data.title ?? null,
96
+ description: data.description ?? null,
97
+ status: data.status ?? null,
98
+ priority: data.priority ?? null,
99
+ due_date: data.due_date ?? null,
100
+ completed_at: data.completed_at ?? null,
101
+ blocked_by: data.blocked_by ?? null,
102
+ tags: data.tags ?? null,
103
+ notes: data.notes ?? null,
104
+ });
105
+ }
106
+ addNote(id, note) {
107
+ this.stmts.addNote.run({ id, note });
108
+ }
109
+ }
110
+ //# sourceMappingURL=task.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.repository.js","sourceRoot":"","sources":["../../../src/db/repositories/task.repository.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,11 @@ export declare class EmbeddingEngine {
28
28
  sweep(): Promise<{
29
29
  errors: number;
30
30
  modules: number;
31
+ memories: number;
32
+ sessions: number;
33
+ decisions: number;
34
+ tasks: number;
35
+ docs: number;
31
36
  }>;
32
37
  /** Load vector scores for error matching (sync - reads pre-computed embeddings from DB) */
33
38
  computeErrorVectorScores(errorId: number, projectId: number): Map<number, number>;
@@ -89,6 +89,11 @@ export class EmbeddingEngine {
89
89
  async sweep() {
90
90
  let errorsProcessed = 0;
91
91
  let modulesProcessed = 0;
92
+ let memoriesProcessed = 0;
93
+ let sessionsProcessed = 0;
94
+ let decisionsProcessed = 0;
95
+ let tasksProcessed = 0;
96
+ let docsProcessed = 0;
92
97
  // Process errors without embeddings
93
98
  const pendingErrors = this.db.prepare('SELECT id, type, message, context FROM errors WHERE embedding IS NULL ORDER BY id DESC LIMIT ?').all(this.config.batchSize);
94
99
  if (pendingErrors.length > 0) {
@@ -117,10 +122,84 @@ export class EmbeddingEngine {
117
122
  }
118
123
  }
119
124
  }
120
- if (errorsProcessed > 0 || modulesProcessed > 0) {
121
- this.logger.info(`Embedding sweep: ${errorsProcessed} errors, ${modulesProcessed} modules processed`);
125
+ // Process memories without embeddings
126
+ const pendingMemories = this.db.prepare('SELECT id, category, key, content FROM memories WHERE embedding IS NULL AND active = 1 ORDER BY id DESC LIMIT ?').all(this.config.batchSize);
127
+ if (pendingMemories.length > 0) {
128
+ const texts = pendingMemories.map(m => [m.category, m.key, m.content].filter(Boolean).join(' '));
129
+ const embeddings = await this.embedBatch(texts);
130
+ const updateStmt = this.db.prepare('UPDATE memories SET embedding = ? WHERE id = ?');
131
+ for (let i = 0; i < pendingMemories.length; i++) {
132
+ const emb = embeddings[i];
133
+ if (emb) {
134
+ updateStmt.run(EmbeddingEngine.serialize(emb), pendingMemories[i].id);
135
+ memoriesProcessed++;
136
+ }
137
+ }
138
+ }
139
+ // Process sessions without embeddings
140
+ const pendingSessions = this.db.prepare('SELECT id, summary, goals FROM sessions WHERE embedding IS NULL AND summary IS NOT NULL ORDER BY id DESC LIMIT ?').all(this.config.batchSize);
141
+ if (pendingSessions.length > 0) {
142
+ const texts = pendingSessions.map(s => [s.summary, s.goals].filter(Boolean).join(' '));
143
+ const embeddings = await this.embedBatch(texts);
144
+ const updateStmt = this.db.prepare('UPDATE sessions SET embedding = ? WHERE id = ?');
145
+ for (let i = 0; i < pendingSessions.length; i++) {
146
+ const emb = embeddings[i];
147
+ if (emb) {
148
+ updateStmt.run(EmbeddingEngine.serialize(emb), pendingSessions[i].id);
149
+ sessionsProcessed++;
150
+ }
151
+ }
152
+ }
153
+ // Process decisions without embeddings
154
+ const pendingDecisions = this.db.prepare('SELECT id, title, description, alternatives FROM decisions WHERE embedding IS NULL ORDER BY id DESC LIMIT ?').all(this.config.batchSize);
155
+ if (pendingDecisions.length > 0) {
156
+ const texts = pendingDecisions.map(d => [d.title, d.description, d.alternatives].filter(Boolean).join(' '));
157
+ const embeddings = await this.embedBatch(texts);
158
+ const updateStmt = this.db.prepare('UPDATE decisions SET embedding = ? WHERE id = ?');
159
+ for (let i = 0; i < pendingDecisions.length; i++) {
160
+ const emb = embeddings[i];
161
+ if (emb) {
162
+ updateStmt.run(EmbeddingEngine.serialize(emb), pendingDecisions[i].id);
163
+ decisionsProcessed++;
164
+ }
165
+ }
166
+ }
167
+ // Process tasks without embeddings
168
+ const pendingTasks = this.db.prepare('SELECT id, title, description, notes FROM tasks WHERE embedding IS NULL ORDER BY id DESC LIMIT ?').all(this.config.batchSize);
169
+ if (pendingTasks.length > 0) {
170
+ const texts = pendingTasks.map(t => [t.title, t.description, t.notes].filter(Boolean).join(' '));
171
+ const embeddings = await this.embedBatch(texts);
172
+ const updateStmt = this.db.prepare('UPDATE tasks SET embedding = ? WHERE id = ?');
173
+ for (let i = 0; i < pendingTasks.length; i++) {
174
+ const emb = embeddings[i];
175
+ if (emb) {
176
+ updateStmt.run(EmbeddingEngine.serialize(emb), pendingTasks[i].id);
177
+ tasksProcessed++;
178
+ }
179
+ }
180
+ }
181
+ // Process project docs without embeddings
182
+ const pendingDocs = this.db.prepare('SELECT id, file_path, content FROM project_docs WHERE embedding IS NULL ORDER BY id DESC LIMIT ?').all(this.config.batchSize);
183
+ if (pendingDocs.length > 0) {
184
+ const texts = pendingDocs.map(d =>
185
+ // Truncate content for embedding (max ~500 chars)
186
+ `${d.file_path} ${d.content.slice(0, 500)}`);
187
+ const embeddings = await this.embedBatch(texts);
188
+ const updateStmt = this.db.prepare('UPDATE project_docs SET embedding = ? WHERE id = ?');
189
+ for (let i = 0; i < pendingDocs.length; i++) {
190
+ const emb = embeddings[i];
191
+ if (emb) {
192
+ updateStmt.run(EmbeddingEngine.serialize(emb), pendingDocs[i].id);
193
+ docsProcessed++;
194
+ }
195
+ }
196
+ }
197
+ const totalProcessed = errorsProcessed + modulesProcessed + memoriesProcessed +
198
+ sessionsProcessed + decisionsProcessed + tasksProcessed + docsProcessed;
199
+ if (totalProcessed > 0) {
200
+ this.logger.info(`Embedding sweep: ${errorsProcessed} errors, ${modulesProcessed} modules, ${memoriesProcessed} memories, ${sessionsProcessed} sessions, ${decisionsProcessed} decisions, ${tasksProcessed} tasks, ${docsProcessed} docs`);
122
201
  }
123
- return { errors: errorsProcessed, modules: modulesProcessed };
202
+ return { errors: errorsProcessed, modules: modulesProcessed, memories: memoriesProcessed, sessions: sessionsProcessed, decisions: decisionsProcessed, tasks: tasksProcessed, docs: docsProcessed };
124
203
  }
125
204
  /** Load vector scores for error matching (sync - reads pre-computed embeddings from DB) */
126
205
  computeErrorVectorScores(errorId, projectId) {
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/embeddings/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/embeddings/engine.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  // PostToolUse hook for Bash tool — auto-detects errors and reports to Brain
3
+ // Also captures significant commands as context memories
3
4
  // Configured in .claude/settings.json:
4
5
  // { "hooks": { "PostToolUse": [{ "matcher": { "tool_name": "Bash" }, "command": "node <brain-dist>/hooks/post-tool-use.js" }] } }
5
6
  import { IpcClient } from '../ipc/client.js';
@@ -19,6 +20,11 @@ const ERROR_PATTERNS = [
19
20
  /command not found/,
20
21
  /Permission denied/,
21
22
  ];
23
+ const SIGNIFICANT_PATTERNS = [
24
+ /npm|yarn|pnpm|bun/, /git commit|git push|git merge/, /docker/,
25
+ /test|jest|vitest|mocha/, /build|compile/, /deploy|publish/,
26
+ /migrate|seed/, /install|uninstall/,
27
+ ];
22
28
  function isError(input) {
23
29
  if (input.exit_code !== undefined && input.exit_code !== 0)
24
30
  return true;
@@ -43,29 +49,45 @@ async function main() {
43
49
  catch {
44
50
  return;
45
51
  }
46
- if (!isError(input))
52
+ const hasError = isError(input);
53
+ const hasSignificantCommand = !hasError && input.tool_input?.command &&
54
+ SIGNIFICANT_PATTERNS.some(p => p.test(input.tool_input.command));
55
+ // Skip if nothing to do
56
+ if (!hasError && !hasSignificantCommand)
47
57
  return;
48
58
  const client = new IpcClient(getPipeName(), 3000);
49
59
  try {
50
60
  await client.connect();
51
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
52
- const result = await client.request('error.report', {
53
- project: 'auto-detected',
54
- errorOutput: input.tool_output,
55
- command: input.tool_input?.command,
56
- workingDirectory: process.cwd(),
57
- });
58
- if (result.matches?.length > 0) {
59
- const best = result.matches[0];
60
- process.stderr.write(`Brain: Similar error found (#${best.errorId}, ${Math.round(best.score * 100)}% match)\n`);
61
+ if (hasError) {
62
+ // Error detection and reporting
63
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
64
+ const result = await client.request('error.report', {
65
+ project: 'auto-detected',
66
+ errorOutput: input.tool_output,
67
+ command: input.tool_input?.command,
68
+ workingDirectory: process.cwd(),
69
+ });
70
+ if (result.matches?.length > 0) {
71
+ const best = result.matches[0];
72
+ process.stderr.write(`Brain: Similar error found (#${best.errorId}, ${Math.round(best.score * 100)}% match)\n`);
73
+ }
74
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
+ const antipatterns = await client.request('prevention.antipatterns', {
76
+ errorType: '',
77
+ message: input.tool_output,
78
+ });
79
+ if (antipatterns?.length > 0 && antipatterns[0].matched) {
80
+ process.stderr.write(`Brain WARNING: Known anti-pattern: ${antipatterns[0].description}\n`);
81
+ }
61
82
  }
62
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
63
- const antipatterns = await client.request('prevention.antipatterns', {
64
- errorType: '',
65
- message: input.tool_output,
66
- });
67
- if (antipatterns?.length > 0 && antipatterns[0].matched) {
68
- process.stderr.write(`Brain WARNING: Known anti-pattern: ${antipatterns[0].description}\n`);
83
+ else if (hasSignificantCommand) {
84
+ // Context capture for significant non-error commands
85
+ await client.request('memory.remember', {
86
+ content: `Ran: ${input.tool_input.command}`,
87
+ category: 'context',
88
+ importance: 3,
89
+ source: 'hook',
90
+ });
69
91
  }
70
92
  }
71
93
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"post-tool-use.js","sourceRoot":"","sources":["../../src/hooks/post-tool-use.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post-tool-use.js","sourceRoot":"","sources":["../../src/hooks/post-tool-use.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env node
2
+ // PreToolUse hook — auto-starts a Brain session for context tracking
3
+ // Configured in .claude/settings.json:
4
+ // { "hooks": { "PreToolUse": [{ "matcher": {}, "hooks": [{ "command": "node <brain-dist>/hooks/pre-tool-use.js" }] }] } }
5
+ import crypto from 'node:crypto';
6
+ import path from 'node:path';
7
+ import { IpcClient } from '../ipc/client.js';
8
+ import { getPipeName } from '../utils/paths.js';
9
+ function readStdin() {
10
+ return new Promise((resolve) => {
11
+ let data = '';
12
+ process.stdin.setEncoding('utf8');
13
+ process.stdin.on('data', (chunk) => { data += chunk; });
14
+ process.stdin.on('end', () => resolve(data));
15
+ });
16
+ }
17
+ async function main() {
18
+ const raw = await readStdin();
19
+ if (!raw.trim())
20
+ return;
21
+ // Generate a session key based on working directory
22
+ const sessionKey = crypto.createHash('sha256').update(process.cwd()).digest('hex').slice(0, 32);
23
+ const client = new IpcClient(getPipeName(), 3000);
24
+ try {
25
+ await client.connect();
26
+ // Check if session for this working directory already exists
27
+ const existing = await client.request('session.current', { sessionId: sessionKey });
28
+ if (!existing) {
29
+ await client.request('session.start', {
30
+ sessionId: sessionKey,
31
+ project: path.basename(process.cwd()),
32
+ goals: [],
33
+ });
34
+ }
35
+ }
36
+ catch {
37
+ // Hook must never block workflow
38
+ }
39
+ finally {
40
+ client.disconnect();
41
+ }
42
+ }
43
+ main();
44
+ //# sourceMappingURL=pre-tool-use.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pre-tool-use.js","sourceRoot":"","sources":["../../src/hooks/pre-tool-use.ts"],"names":[],"mappings":";AAEA,qEAAqE;AACrE,uCAAuC;AACvC,0HAA0H;AAE1H,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,SAAS,SAAS;IAChB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO;IAExB,oDAAoD;IACpD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhG,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QAEvB,6DAA6D;QAC7D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE;gBACpC,SAAS,EAAE,UAAU;gBACrB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACrC,KAAK,EAAE,EAAE;aACV,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -17,11 +17,12 @@ import { doctorCommand } from './cli/commands/doctor.js';
17
17
  import { explainCommand } from './cli/commands/explain.js';
18
18
  import { peersCommand } from './cli/commands/peers.js';
19
19
  import { setupCommand } from './cli/commands/setup.js';
20
+ import { getCurrentVersion } from './cli/update-check.js';
20
21
  const program = new Command();
21
22
  program
22
23
  .name('brain')
23
24
  .description('Brain — Adaptive Error Memory & Code Intelligence System')
24
- .version('2.0.0');
25
+ .version(getCurrentVersion());
25
26
  program.addCommand(startCommand());
26
27
  program.addCommand(stopCommand());
27
28
  program.addCommand(statusCommand());
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,11 @@ import type { ResearchService } from '../services/research.service.js';
8
8
  import type { NotificationService } from '../services/notification.service.js';
9
9
  import type { AnalyticsService } from '../services/analytics.service.js';
10
10
  import type { GitService } from '../services/git.service.js';
11
+ import type { MemoryService } from '../services/memory.service.js';
12
+ import type { DecisionService } from '../services/decision.service.js';
13
+ import type { ChangelogService } from '../services/changelog.service.js';
14
+ import type { TaskService } from '../services/task.service.js';
15
+ import type { DocService } from '../services/doc.service.js';
11
16
  import type { LearningEngine } from '../learning/learning-engine.js';
12
17
  import type { CrossBrainClient } from '@timmeck/brain-core';
13
18
  export interface Services {
@@ -21,6 +26,11 @@ export interface Services {
21
26
  notification: NotificationService;
22
27
  analytics: AnalyticsService;
23
28
  git: GitService;
29
+ memory: MemoryService;
30
+ decision: DecisionService;
31
+ changelog: ChangelogService;
32
+ task: TaskService;
33
+ doc: DocService;
24
34
  learning?: LearningEngine;
25
35
  crossBrain?: CrossBrainClient;
26
36
  }