claude-brain 0.30.2 → 0.30.3
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 +241 -191
- package/VERSION +1 -1
- package/assets/CLAUDE-unified.md +11 -11
- package/assets/CLAUDE.md +29 -29
- package/package.json +7 -3
- package/packs/backend/node.json +173 -173
- package/packs/core/javascript.json +176 -176
- package/packs/core/typescript.json +222 -222
- package/packs/frontend/react.json +254 -254
- package/packs/meta/testing.json +172 -172
- package/scripts/postinstall.mjs +531 -531
- package/src/automation/decision-detector.ts +452 -452
- package/src/automation/phase12-manager.ts +456 -456
- package/src/automation/proactive-recall.ts +373 -373
- package/src/automation/project-detector.ts +310 -310
- package/src/automation/repo-scanner.ts +210 -205
- package/src/cli/auto-setup.ts +75 -75
- package/src/cli/auto-start.ts +266 -266
- package/src/cli/bin.ts +264 -264
- package/src/cli/commands/autostart.ts +90 -90
- package/src/cli/commands/chroma.ts +578 -577
- package/src/cli/commands/export-training.ts +70 -70
- package/src/cli/commands/export.ts +130 -130
- package/src/cli/commands/git-hook.ts +183 -183
- package/src/cli/commands/hooks.ts +217 -217
- package/src/cli/commands/init.ts +123 -123
- package/src/cli/commands/install-mcp.ts +122 -111
- package/src/cli/commands/models.ts +979 -979
- package/src/cli/commands/pack.ts +200 -200
- package/src/cli/commands/refresh.ts +344 -339
- package/src/cli/commands/reindex.ts +120 -120
- package/src/cli/commands/serve.ts +466 -463
- package/src/cli/commands/start.ts +44 -44
- package/src/cli/commands/status.ts +220 -203
- package/src/cli/commands/uninstall-mcp.ts +45 -41
- package/src/cli/commands/update.ts +130 -124
- package/src/cli/migrate-chroma.ts +106 -106
- package/src/cli/ui/animations.ts +80 -80
- package/src/cli/ui/components.ts +82 -82
- package/src/cli/ui/index.ts +4 -4
- package/src/cli/ui/logo.ts +36 -36
- package/src/cli/ui/theme.ts +55 -55
- package/src/code-intelligence/indexer.ts +352 -352
- package/src/code-intelligence/linker.ts +178 -178
- package/src/code-intelligence/parser.ts +484 -484
- package/src/code-intelligence/query.ts +291 -291
- package/src/code-intelligence/schema.ts +83 -83
- package/src/code-intelligence/types.ts +95 -95
- package/src/config/defaults.ts +52 -52
- package/src/config/home.ts +56 -56
- package/src/config/index.ts +5 -5
- package/src/config/loader.ts +192 -192
- package/src/config/schema.ts +446 -415
- package/src/config/validator.ts +182 -182
- package/src/context/assembler.ts +407 -400
- package/src/context/index.ts +79 -79
- package/src/context/progress-tracker.ts +174 -174
- package/src/context/standards-manager.ts +287 -287
- package/src/context/validator.ts +58 -58
- package/src/diagnostics/index.ts +122 -121
- package/src/health/index.ts +233 -232
- package/src/hooks/brain-hook.ts +134 -131
- package/src/hooks/capture.ts +168 -168
- package/src/hooks/claude-code-mastery.md +112 -112
- package/src/hooks/context-hook.ts +260 -245
- package/src/hooks/deduplicator.ts +72 -72
- package/src/hooks/git-capture.ts +109 -109
- package/src/hooks/git-hook-installer.ts +211 -207
- package/src/hooks/index.ts +20 -20
- package/src/hooks/installer.ts +306 -288
- package/src/hooks/interceptor-hook.ts +204 -201
- package/src/hooks/passive-classifier.ts +397 -397
- package/src/hooks/queue.ts +160 -129
- package/src/hooks/session-tracker.ts +312 -312
- package/src/hooks/types.ts +52 -52
- package/src/index.ts +7 -7
- package/src/intelligence/cross-project/generalizer.ts +283 -283
- package/src/intelligence/cross-project/index.ts +7 -7
- package/src/intelligence/hf-downloader.ts +222 -222
- package/src/intelligence/hf-manifest.json +78 -78
- package/src/intelligence/index.ts +24 -24
- package/src/intelligence/inference-router.ts +762 -762
- package/src/intelligence/model-manager.ts +263 -245
- package/src/intelligence/optimization/index.ts +10 -10
- package/src/intelligence/optimization/precompute.ts +202 -202
- package/src/intelligence/optimization/semantic-cache.ts +213 -207
- package/src/intelligence/prediction/index.ts +7 -7
- package/src/intelligence/prediction/recommender.ts +276 -268
- package/src/intelligence/reasoning/chain-retrieval.ts +243 -247
- package/src/intelligence/reasoning/index.ts +7 -7
- package/src/intelligence/temporal/evolution.ts +193 -197
- package/src/intelligence/temporal/index.ts +16 -16
- package/src/intelligence/temporal/query-processor.ts +190 -190
- package/src/intelligence/temporal/timeline.ts +272 -259
- package/src/intelligence/temporal/trends.ts +263 -263
- package/src/intelligence/tokenizer.ts +118 -118
- package/src/knowledge/entity-extractor.ts +447 -443
- package/src/knowledge/graph/builder.ts +185 -185
- package/src/knowledge/graph/linker.ts +201 -201
- package/src/knowledge/graph/memory-graph.ts +359 -359
- package/src/knowledge/graph/schema.ts +99 -99
- package/src/knowledge/graph/search.ts +166 -166
- package/src/knowledge/relationship-extractor.ts +108 -108
- package/src/memory/chroma/client.ts +211 -192
- package/src/memory/chroma/collection-manager.ts +92 -92
- package/src/memory/chroma/config.ts +57 -57
- package/src/memory/chroma/embeddings.ts +177 -175
- package/src/memory/chroma/index.ts +82 -82
- package/src/memory/chroma/migration.ts +270 -270
- package/src/memory/chroma/schemas.ts +69 -69
- package/src/memory/chroma/search.ts +319 -315
- package/src/memory/chroma/store.ts +755 -747
- package/src/memory/compression.ts +121 -121
- package/src/memory/consolidation/archiver.ts +162 -165
- package/src/memory/consolidation/merger.ts +182 -186
- package/src/memory/consolidation/scorer.ts +136 -136
- package/src/memory/database.ts +9 -0
- package/src/memory/dual-write.ts +145 -0
- package/src/memory/embeddings.ts +226 -226
- package/src/memory/episodic/detector.ts +108 -108
- package/src/memory/episodic/manager.ts +347 -351
- package/src/memory/episodic/summarizer.ts +179 -179
- package/src/memory/episodic/types.ts +52 -52
- package/src/memory/fts5-search.ts +692 -633
- package/src/memory/index.ts +943 -1060
- package/src/memory/migrations/add-fts5.ts +118 -108
- package/src/memory/patterns.ts +438 -438
- package/src/memory/pruning.ts +60 -60
- package/src/memory/schema.ts +88 -88
- package/src/memory/store.ts +911 -787
- package/src/orchestrator/handlers/decision-handler.ts +204 -204
- package/src/packs/index.ts +9 -9
- package/src/packs/loader.ts +134 -134
- package/src/packs/manager.ts +204 -204
- package/src/packs/ranker.ts +78 -78
- package/src/packs/types.ts +81 -81
- package/src/phase12/index.ts +5 -5
- package/src/retrieval/bm25/index.ts +300 -297
- package/src/retrieval/bm25/tokenizer.ts +184 -184
- package/src/retrieval/feedback/adaptive.ts +221 -221
- package/src/retrieval/feedback/index.ts +16 -16
- package/src/retrieval/feedback/metrics.ts +221 -221
- package/src/retrieval/feedback/store.ts +283 -283
- package/src/retrieval/fusion/index.ts +194 -194
- package/src/retrieval/fusion/rrf.ts +165 -165
- package/src/retrieval/index.ts +12 -12
- package/src/retrieval/pipeline.ts +375 -375
- package/src/retrieval/query/expander.ts +203 -203
- package/src/retrieval/query/index.ts +27 -27
- package/src/retrieval/query/intent-classifier.ts +252 -252
- package/src/retrieval/query/temporal-parser.ts +295 -295
- package/src/retrieval/reranker/index.ts +189 -188
- package/src/retrieval/reranker/model.ts +99 -95
- package/src/retrieval/service.ts +125 -125
- package/src/retrieval/types.ts +162 -162
- package/src/routing/entity-extractor.ts +454 -454
- package/src/routing/handlers/exploration-handler.ts +369 -0
- package/src/routing/handlers/index.ts +19 -0
- package/src/routing/handlers/memory-handler.ts +273 -0
- package/src/routing/handlers/mutation-handler.ts +241 -0
- package/src/routing/handlers/recall-handler.ts +642 -0
- package/src/routing/handlers/shared.ts +515 -0
- package/src/routing/handlers/types.ts +48 -0
- package/src/routing/intent-classifier.ts +552 -552
- package/src/routing/response-filter.ts +399 -391
- package/src/routing/router.ts +245 -2193
- package/src/routing/search-engine.ts +521 -514
- package/src/routing/types.ts +104 -94
- package/src/scripts/health-check.ts +118 -118
- package/src/scripts/setup.ts +122 -122
- package/src/server/auto-updater.ts +283 -276
- package/src/server/handlers/call-tool.ts +159 -159
- package/src/server/handlers/list-tools.ts +35 -35
- package/src/server/handlers/tools/auto-remember.ts +165 -165
- package/src/server/handlers/tools/brain.ts +86 -86
- package/src/server/handlers/tools/create-project.ts +135 -135
- package/src/server/handlers/tools/get-code-standards.ts +123 -123
- package/src/server/handlers/tools/get-corrections.ts +152 -152
- package/src/server/handlers/tools/get-patterns.ts +156 -156
- package/src/server/handlers/tools/get-project-context.ts +75 -75
- package/src/server/handlers/tools/index.ts +30 -30
- package/src/server/handlers/tools/init-project.ts +756 -756
- package/src/server/handlers/tools/list-projects.ts +126 -126
- package/src/server/handlers/tools/recall-similar.ts +87 -87
- package/src/server/handlers/tools/recognize-pattern.ts +132 -132
- package/src/server/handlers/tools/record-correction.ts +131 -131
- package/src/server/handlers/tools/remember-decision.ts +168 -168
- package/src/server/handlers/tools/schemas.ts +179 -179
- package/src/server/handlers/tools/search-code.ts +122 -122
- package/src/server/handlers/tools/smart-context.ts +146 -146
- package/src/server/handlers/tools/update-progress.ts +131 -131
- package/src/server/http-api.ts +215 -1229
- package/src/server/mcp-proxy.ts +85 -84
- package/src/server/mcp-server.ts +285 -284
- package/src/server/middleware/auth.ts +39 -0
- package/src/server/middleware/error-handler.ts +37 -0
- package/src/server/middleware/rate-limit.ts +53 -0
- package/src/server/middleware/validate.ts +42 -0
- package/src/server/pid-manager.ts +137 -136
- package/src/server/providers/resources.ts +581 -581
- package/src/server/routes/code.ts +228 -0
- package/src/server/routes/context.ts +26 -0
- package/src/server/routes/health.ts +19 -0
- package/src/server/routes/helpers.ts +100 -0
- package/src/server/routes/hooks.ts +197 -0
- package/src/server/routes/mcp.ts +47 -0
- package/src/server/routes/memory.ts +397 -0
- package/src/server/routes/models.ts +96 -0
- package/src/server/routes/projects.ts +89 -0
- package/src/server/routes/types.ts +21 -0
- package/src/server/schemas/api-schemas.ts +202 -0
- package/src/server/services.ts +720 -720
- package/src/server/utils/memory-indicator.ts +84 -84
- package/src/server/utils/response-formatter.ts +129 -129
- package/src/server/web-viewer.ts +1145 -1115
- package/src/setup/index.ts +38 -38
- package/src/tools/registry.ts +115 -115
- package/src/tools/schemas.ts +666 -666
- package/src/tools/types.ts +412 -412
- package/src/training/data-store.ts +320 -298
- package/src/training/retrain-pipeline.ts +399 -394
- package/src/utils/error-handler.ts +136 -136
- package/src/utils/index.ts +58 -58
- package/src/utils/kill-port.ts +55 -53
- package/src/utils/phase12-helper.ts +56 -56
- package/src/utils/safe-path.ts +43 -0
- package/src/utils/timing.ts +47 -47
- package/src/utils/transaction.ts +63 -63
- package/src/vault/index.ts +4 -3
- package/src/vault/paths.ts +106 -106
- package/src/vault/query.ts +4 -1
- package/src/vault/reader.ts +44 -1
- package/src/vault/watcher.ts +24 -1
- package/src/vault/writer.ts +487 -413
- package/skills/persistent-memory/SKILL.md +0 -148
- package/skills/persistent-memory/references/tool-reference.md +0 -90
package/src/tools/schemas.ts
CHANGED
|
@@ -1,666 +1,666 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Tool Schemas
|
|
3
|
-
* Defines all available tools that Claude Code can call
|
|
4
|
-
*
|
|
5
|
-
* Each tool has:
|
|
6
|
-
* - name: Unique identifier for the tool
|
|
7
|
-
* - description: Explains when and how to use the tool
|
|
8
|
-
* - inputSchema: JSON Schema for validating input parameters
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
/** Tool definition type */
|
|
12
|
-
export interface ToolDefinition {
|
|
13
|
-
name: string
|
|
14
|
-
description: string
|
|
15
|
-
inputSchema: {
|
|
16
|
-
type: 'object'
|
|
17
|
-
properties: Record<string, unknown>
|
|
18
|
-
required?: string[]
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* All available tools for Claude Brain MCP server
|
|
24
|
-
*/
|
|
25
|
-
export const TOOLS = {
|
|
26
|
-
/**
|
|
27
|
-
* GET_PROJECT_CONTEXT
|
|
28
|
-
* Primary tool for retrieving complete project context
|
|
29
|
-
*
|
|
30
|
-
* Use this when:
|
|
31
|
-
* - Starting work on a project
|
|
32
|
-
* - Need to understand project standards and conventions
|
|
33
|
-
* - Want to see recent decisions and progress
|
|
34
|
-
*
|
|
35
|
-
* Returns: Project description, standards, progress, and optionally relevant memories
|
|
36
|
-
*/
|
|
37
|
-
GET_PROJECT_CONTEXT: {
|
|
38
|
-
name: 'get_project_context',
|
|
39
|
-
description: 'Retrieves complete project context including standards, progress, past decisions, and relevant memories. This is the primary tool for getting context about a project.',
|
|
40
|
-
inputSchema: {
|
|
41
|
-
type: 'object' as const,
|
|
42
|
-
properties: {
|
|
43
|
-
project_name: {
|
|
44
|
-
type: 'string',
|
|
45
|
-
description: 'Name of the project to get context for'
|
|
46
|
-
},
|
|
47
|
-
include_memories: {
|
|
48
|
-
type: 'boolean',
|
|
49
|
-
description: 'Whether to include similar past decisions from semantic memory',
|
|
50
|
-
default: true
|
|
51
|
-
},
|
|
52
|
-
memory_limit: {
|
|
53
|
-
type: 'number',
|
|
54
|
-
description: 'Maximum number of relevant memories to include',
|
|
55
|
-
default: 5
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
required: ['project_name']
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* UPDATE_PROGRESS
|
|
64
|
-
* Track project progress and completed work
|
|
65
|
-
*
|
|
66
|
-
* Use this when:
|
|
67
|
-
* - Completing a task or milestone
|
|
68
|
-
* - Making significant progress
|
|
69
|
-
* - Updating what should happen next
|
|
70
|
-
*
|
|
71
|
-
* Returns: Confirmation of progress update
|
|
72
|
-
*/
|
|
73
|
-
UPDATE_PROGRESS: {
|
|
74
|
-
name: 'update_progress',
|
|
75
|
-
description: 'Updates project progress tracking with completed tasks and next steps. Use this when you complete a task or make significant progress.',
|
|
76
|
-
inputSchema: {
|
|
77
|
-
type: 'object' as const,
|
|
78
|
-
properties: {
|
|
79
|
-
project_name: {
|
|
80
|
-
type: 'string',
|
|
81
|
-
description: 'Name of the project'
|
|
82
|
-
},
|
|
83
|
-
completed_task: {
|
|
84
|
-
type: 'string',
|
|
85
|
-
description: 'Description of what was just completed'
|
|
86
|
-
},
|
|
87
|
-
next_steps: {
|
|
88
|
-
type: 'string',
|
|
89
|
-
description: 'What should be done next'
|
|
90
|
-
},
|
|
91
|
-
notes: {
|
|
92
|
-
type: 'string',
|
|
93
|
-
description: 'Optional additional notes or context'
|
|
94
|
-
}
|
|
95
|
-
},
|
|
96
|
-
required: ['project_name', 'completed_task', 'next_steps']
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* REMEMBER_DECISION
|
|
102
|
-
* Store important decisions in long-term memory
|
|
103
|
-
*
|
|
104
|
-
* Use this when:
|
|
105
|
-
* - Making architectural decisions
|
|
106
|
-
* - Choosing between alternatives
|
|
107
|
-
* - Establishing patterns that should persist
|
|
108
|
-
*
|
|
109
|
-
* Returns: Confirmation with memory ID
|
|
110
|
-
*/
|
|
111
|
-
REMEMBER_DECISION: {
|
|
112
|
-
name: 'remember_decision',
|
|
113
|
-
description: 'Stores an important architectural or technical decision in long-term memory. Use this for decisions that should influence future development.',
|
|
114
|
-
inputSchema: {
|
|
115
|
-
type: 'object' as const,
|
|
116
|
-
properties: {
|
|
117
|
-
project_name: {
|
|
118
|
-
type: 'string',
|
|
119
|
-
description: 'Project this decision relates to'
|
|
120
|
-
},
|
|
121
|
-
context: {
|
|
122
|
-
type: 'string',
|
|
123
|
-
description: 'What situation or problem led to this decision'
|
|
124
|
-
},
|
|
125
|
-
decision: {
|
|
126
|
-
type: 'string',
|
|
127
|
-
description: 'The decision that was made'
|
|
128
|
-
},
|
|
129
|
-
reasoning: {
|
|
130
|
-
type: 'string',
|
|
131
|
-
description: 'Why this decision was made'
|
|
132
|
-
},
|
|
133
|
-
alternatives_considered: {
|
|
134
|
-
type: 'string',
|
|
135
|
-
description: 'Other options that were considered'
|
|
136
|
-
},
|
|
137
|
-
tags: {
|
|
138
|
-
type: 'array',
|
|
139
|
-
items: { type: 'string' },
|
|
140
|
-
description: 'Tags for categorizing this decision (e.g., "architecture", "performance", "security")'
|
|
141
|
-
}
|
|
142
|
-
},
|
|
143
|
-
required: ['project_name', 'context', 'decision', 'reasoning']
|
|
144
|
-
}
|
|
145
|
-
},
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* RECALL_SIMILAR
|
|
149
|
-
* Semantic search through past decisions and context
|
|
150
|
-
*
|
|
151
|
-
* Use this when:
|
|
152
|
-
* - Facing a similar situation to past work
|
|
153
|
-
* - Want to learn from previous decisions
|
|
154
|
-
* - Need context from related work
|
|
155
|
-
*
|
|
156
|
-
* Returns: Array of similar decisions with similarity scores
|
|
157
|
-
*/
|
|
158
|
-
RECALL_SIMILAR: {
|
|
159
|
-
name: 'recall_similar',
|
|
160
|
-
description: 'Finds past decisions and context similar to the current situation using semantic search. Helps learn from past experience.',
|
|
161
|
-
inputSchema: {
|
|
162
|
-
type: 'object' as const,
|
|
163
|
-
properties: {
|
|
164
|
-
query: {
|
|
165
|
-
type: 'string',
|
|
166
|
-
description: 'Description of current situation or question'
|
|
167
|
-
},
|
|
168
|
-
project_filter: {
|
|
169
|
-
type: 'string',
|
|
170
|
-
description: 'Optional: only search within specific project'
|
|
171
|
-
},
|
|
172
|
-
limit: {
|
|
173
|
-
type: 'number',
|
|
174
|
-
description: 'Maximum number of results to return',
|
|
175
|
-
default: 5
|
|
176
|
-
},
|
|
177
|
-
min_similarity: {
|
|
178
|
-
type: 'number',
|
|
179
|
-
description: 'Minimum similarity score (0-1)',
|
|
180
|
-
default: 0.7
|
|
181
|
-
}
|
|
182
|
-
},
|
|
183
|
-
required: ['query']
|
|
184
|
-
}
|
|
185
|
-
},
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* GET_CODE_STANDARDS
|
|
189
|
-
* Retrieve coding standards and conventions
|
|
190
|
-
*
|
|
191
|
-
* Use this when:
|
|
192
|
-
* - Need to follow project coding style
|
|
193
|
-
* - Want to ensure consistency
|
|
194
|
-
* - Starting to write new code
|
|
195
|
-
*
|
|
196
|
-
* Returns: Merged global and project-specific standards
|
|
197
|
-
*/
|
|
198
|
-
GET_CODE_STANDARDS: {
|
|
199
|
-
name: 'get_code_standards',
|
|
200
|
-
description: 'Retrieves coding standards, patterns, and conventions for a project. Includes global standards merged with project-specific rules.',
|
|
201
|
-
inputSchema: {
|
|
202
|
-
type: 'object' as const,
|
|
203
|
-
properties: {
|
|
204
|
-
project_name: {
|
|
205
|
-
type: 'string',
|
|
206
|
-
description: 'Name of the project'
|
|
207
|
-
},
|
|
208
|
-
language: {
|
|
209
|
-
type: 'string',
|
|
210
|
-
description: 'Optional: filter standards by programming language (e.g., "typescript", "python")'
|
|
211
|
-
}
|
|
212
|
-
},
|
|
213
|
-
required: ['project_name']
|
|
214
|
-
}
|
|
215
|
-
},
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* LIST_PROJECTS
|
|
219
|
-
* Get available projects from the vault
|
|
220
|
-
*
|
|
221
|
-
* Use this when:
|
|
222
|
-
* - Need to see what projects exist
|
|
223
|
-
* - Want project metadata and status
|
|
224
|
-
* - Looking for active vs archived projects
|
|
225
|
-
*
|
|
226
|
-
* Returns: Array of project summaries with metadata
|
|
227
|
-
*/
|
|
228
|
-
LIST_PROJECTS: {
|
|
229
|
-
name: 'list_projects',
|
|
230
|
-
description: 'Lists all available projects in the Obsidian vault with their metadata and status.',
|
|
231
|
-
inputSchema: {
|
|
232
|
-
type: 'object' as const,
|
|
233
|
-
properties: {
|
|
234
|
-
status_filter: {
|
|
235
|
-
type: 'string',
|
|
236
|
-
enum: ['active', 'archived', 'planning', 'all'],
|
|
237
|
-
description: 'Filter projects by status',
|
|
238
|
-
default: 'active'
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
},
|
|
243
|
-
|
|
244
|
-
/**
|
|
245
|
-
* SMART_CONTEXT
|
|
246
|
-
* Intelligent context with proactive memory recall
|
|
247
|
-
*
|
|
248
|
-
* Use this when:
|
|
249
|
-
* - Starting work and want automatic relevant memory recall
|
|
250
|
-
* - Asking a question and want past decisions automatically searched
|
|
251
|
-
* - Need context + relevant memories in one call
|
|
252
|
-
*/
|
|
253
|
-
SMART_CONTEXT: {
|
|
254
|
-
name: 'smart_context',
|
|
255
|
-
description: 'Gets project context AND automatically searches for relevant past decisions based on your current question or task. More intelligent than get_project_context - use this when you have a specific question or task.',
|
|
256
|
-
inputSchema: {
|
|
257
|
-
type: 'object' as const,
|
|
258
|
-
properties: {
|
|
259
|
-
project_name: {
|
|
260
|
-
type: 'string',
|
|
261
|
-
description: 'Name of the project'
|
|
262
|
-
},
|
|
263
|
-
current_task: {
|
|
264
|
-
type: 'string',
|
|
265
|
-
description: 'What you are currently working on or asking about. This triggers proactive memory recall.'
|
|
266
|
-
},
|
|
267
|
-
min_similarity: {
|
|
268
|
-
type: 'number',
|
|
269
|
-
description: 'Minimum similarity for memory recall (0-1). Lower = more results.',
|
|
270
|
-
default: 0.3
|
|
271
|
-
}
|
|
272
|
-
},
|
|
273
|
-
required: ['project_name', 'current_task']
|
|
274
|
-
}
|
|
275
|
-
},
|
|
276
|
-
|
|
277
|
-
/**
|
|
278
|
-
* AUTO_REMEMBER
|
|
279
|
-
* Automatically detects and saves decisions from text
|
|
280
|
-
*
|
|
281
|
-
* Use this when:
|
|
282
|
-
* - Claude made a recommendation and wants to auto-save it
|
|
283
|
-
* - Processing a response that might contain decisions
|
|
284
|
-
* - Want Claude Brain to detect decisions automatically
|
|
285
|
-
*/
|
|
286
|
-
AUTO_REMEMBER: {
|
|
287
|
-
name: 'auto_remember',
|
|
288
|
-
description: 'Automatically detects decisions in text and saves them. Pass any text containing recommendations like "I recommend X because Y" or "We should use X". Decisions with >70% confidence are auto-saved.',
|
|
289
|
-
inputSchema: {
|
|
290
|
-
type: 'object' as const,
|
|
291
|
-
properties: {
|
|
292
|
-
project_name: {
|
|
293
|
-
type: 'string',
|
|
294
|
-
description: 'Project to associate the decision with'
|
|
295
|
-
},
|
|
296
|
-
text: {
|
|
297
|
-
type: 'string',
|
|
298
|
-
description: 'Text to analyze for decisions (e.g., Claude\'s response containing recommendations)'
|
|
299
|
-
},
|
|
300
|
-
confidence_threshold: {
|
|
301
|
-
type: 'number',
|
|
302
|
-
description: 'Minimum confidence to auto-save (0-1)',
|
|
303
|
-
default: 0.7
|
|
304
|
-
}
|
|
305
|
-
},
|
|
306
|
-
required: ['project_name', 'text']
|
|
307
|
-
}
|
|
308
|
-
},
|
|
309
|
-
|
|
310
|
-
/**
|
|
311
|
-
* GET_PHASE12_STATUS
|
|
312
|
-
* Get status of intelligent automation features
|
|
313
|
-
*/
|
|
314
|
-
GET_PHASE12_STATUS: {
|
|
315
|
-
name: 'get_phase12_status',
|
|
316
|
-
description: 'Shows status of Claude Brain\'s intelligent automation: current project, patterns detected, learning insights, and recall statistics.',
|
|
317
|
-
inputSchema: {
|
|
318
|
-
type: 'object' as const,
|
|
319
|
-
properties: {}
|
|
320
|
-
}
|
|
321
|
-
},
|
|
322
|
-
|
|
323
|
-
/**
|
|
324
|
-
* CREATE_PROJECT
|
|
325
|
-
* Create a new project in the vault with all necessary files
|
|
326
|
-
*
|
|
327
|
-
* Use this when:
|
|
328
|
-
* - Starting a brand new project
|
|
329
|
-
* - User wants to track a project with Claude Brain
|
|
330
|
-
* - Need to set up project structure automatically
|
|
331
|
-
*/
|
|
332
|
-
CREATE_PROJECT: {
|
|
333
|
-
name: 'create_project',
|
|
334
|
-
description: 'Creates a new project in the Obsidian vault with all necessary files (context.md, progress.md, decisions.md, standards.md). Use this when starting a new project.',
|
|
335
|
-
inputSchema: {
|
|
336
|
-
type: 'object' as const,
|
|
337
|
-
properties: {
|
|
338
|
-
project_name: {
|
|
339
|
-
type: 'string',
|
|
340
|
-
description: 'Name of the project (lowercase with hyphens, e.g., "my-awesome-app")'
|
|
341
|
-
},
|
|
342
|
-
description: {
|
|
343
|
-
type: 'string',
|
|
344
|
-
description: 'Brief description of the project'
|
|
345
|
-
},
|
|
346
|
-
tech_stack: {
|
|
347
|
-
type: 'array',
|
|
348
|
-
items: { type: 'string' },
|
|
349
|
-
description: 'Technologies used (e.g., ["typescript", "react", "node"])'
|
|
350
|
-
},
|
|
351
|
-
status: {
|
|
352
|
-
type: 'string',
|
|
353
|
-
enum: ['planning', 'active', 'on-hold', 'completed'],
|
|
354
|
-
description: 'Initial project status',
|
|
355
|
-
default: 'planning'
|
|
356
|
-
},
|
|
357
|
-
tags: {
|
|
358
|
-
type: 'array',
|
|
359
|
-
items: { type: 'string' },
|
|
360
|
-
description: 'Tags for categorizing the project (e.g., ["web", "frontend", "personal"])'
|
|
361
|
-
}
|
|
362
|
-
},
|
|
363
|
-
required: ['project_name']
|
|
364
|
-
}
|
|
365
|
-
},
|
|
366
|
-
|
|
367
|
-
/**
|
|
368
|
-
* INIT_PROJECT
|
|
369
|
-
* Analyze existing codebase and initialize in Claude Brain
|
|
370
|
-
*
|
|
371
|
-
* Use this when:
|
|
372
|
-
* - Opening Claude Code in an existing project
|
|
373
|
-
* - Want to auto-detect tech stack, structure, conventions
|
|
374
|
-
* - Similar to `claude init` but for Claude Brain
|
|
375
|
-
*
|
|
376
|
-
* LOW USAGE: Pure file reading, no LLM calls
|
|
377
|
-
*/
|
|
378
|
-
INIT_PROJECT: {
|
|
379
|
-
name: 'init_project',
|
|
380
|
-
description: 'Analyzes an existing codebase and creates/updates project in Claude Brain. Reads package.json, config files, and structure to auto-detect tech stack, frameworks, and conventions. Similar to `claude init`. Use this when starting work on an existing project.',
|
|
381
|
-
inputSchema: {
|
|
382
|
-
type: 'object' as const,
|
|
383
|
-
properties: {
|
|
384
|
-
project_path: {
|
|
385
|
-
type: 'string',
|
|
386
|
-
description: 'Path to be project directory. Defaults to current working directory.'
|
|
387
|
-
},
|
|
388
|
-
project_name: {
|
|
389
|
-
type: 'string',
|
|
390
|
-
description: 'Override project name (otherwise detected from package.json or folder name)'
|
|
391
|
-
},
|
|
392
|
-
save_to_memory: {
|
|
393
|
-
type: 'boolean',
|
|
394
|
-
description: 'Whether to save project context to semantic memory for future recall',
|
|
395
|
-
default: true
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
},
|
|
400
|
-
|
|
401
|
-
/**
|
|
402
|
-
* RECOGNIZE_PATTERN
|
|
403
|
-
* Save a recognized pattern to ChromaDB
|
|
404
|
-
*
|
|
405
|
-
* Use this when:
|
|
406
|
-
* - You notice a recurring solution approach
|
|
407
|
-
* - You identify an anti-pattern
|
|
408
|
-
* - You find a best practice that should be documented
|
|
409
|
-
*
|
|
410
|
-
* Patterns are stored in ChromaDB patterns collection for semantic recall
|
|
411
|
-
*/
|
|
412
|
-
RECOGNIZE_PATTERN: {
|
|
413
|
-
name: 'recognize_pattern',
|
|
414
|
-
description: 'Saves a recognized pattern (solution, anti-pattern, best-practice, or common-issue) to ChromaDB semantic memory. Patterns help identify recurring approaches and avoid mistakes.',
|
|
415
|
-
inputSchema: {
|
|
416
|
-
type: 'object' as const,
|
|
417
|
-
properties: {
|
|
418
|
-
project_name: {
|
|
419
|
-
type: 'string',
|
|
420
|
-
description: 'Project this pattern relates to'
|
|
421
|
-
},
|
|
422
|
-
pattern_type: {
|
|
423
|
-
type: 'string',
|
|
424
|
-
enum: ['solution', 'anti-pattern', 'best-practice', 'common-issue'],
|
|
425
|
-
description: 'Type of pattern'
|
|
426
|
-
},
|
|
427
|
-
description: {
|
|
428
|
-
type: 'string',
|
|
429
|
-
description: 'Detailed description of the pattern'
|
|
430
|
-
},
|
|
431
|
-
example: {
|
|
432
|
-
type: 'string',
|
|
433
|
-
description: 'Code example illustrating the pattern (optional)'
|
|
434
|
-
},
|
|
435
|
-
confidence: {
|
|
436
|
-
type: 'number',
|
|
437
|
-
minimum: 0,
|
|
438
|
-
maximum: 1,
|
|
439
|
-
description: 'Confidence in this pattern (0-1, default 0.8)'
|
|
440
|
-
},
|
|
441
|
-
context: {
|
|
442
|
-
type: 'string',
|
|
443
|
-
description: 'When this pattern was observed or applicable'
|
|
444
|
-
}
|
|
445
|
-
},
|
|
446
|
-
required: ['project_name', 'pattern_type', 'description']
|
|
447
|
-
}
|
|
448
|
-
},
|
|
449
|
-
|
|
450
|
-
/**
|
|
451
|
-
* RECORD_CORRECTION
|
|
452
|
-
* Save a correction/lesson learned to ChromaDB
|
|
453
|
-
*
|
|
454
|
-
* Use this when:
|
|
455
|
-
* - You made a mistake that should be documented
|
|
456
|
-
* - You learned a better approach after an error
|
|
457
|
-
* - You want to track lessons learned
|
|
458
|
-
*
|
|
459
|
-
* Corrections are stored in ChromaDB corrections collection for learning from mistakes
|
|
460
|
-
*/
|
|
461
|
-
RECORD_CORRECTION: {
|
|
462
|
-
name: 'record_correction',
|
|
463
|
-
description: 'Saves a correction or lesson learned to ChromaDB semantic memory. Use this when you made a mistake, learned something new, or want to document what NOT to do.',
|
|
464
|
-
inputSchema: {
|
|
465
|
-
type: 'object' as const,
|
|
466
|
-
properties: {
|
|
467
|
-
project_name: {
|
|
468
|
-
type: 'string',
|
|
469
|
-
description: 'Project this correction relates to'
|
|
470
|
-
},
|
|
471
|
-
original: {
|
|
472
|
-
type: 'string',
|
|
473
|
-
description: 'What was wrong or the mistake that was made'
|
|
474
|
-
},
|
|
475
|
-
correction: {
|
|
476
|
-
type: 'string',
|
|
477
|
-
description: 'What should have been done instead'
|
|
478
|
-
},
|
|
479
|
-
reasoning: {
|
|
480
|
-
type: 'string',
|
|
481
|
-
description: 'Why the correction is better than the original approach'
|
|
482
|
-
},
|
|
483
|
-
context: {
|
|
484
|
-
type: 'string',
|
|
485
|
-
description: 'When this correction was identified or applicable'
|
|
486
|
-
},
|
|
487
|
-
confidence: {
|
|
488
|
-
type: 'number',
|
|
489
|
-
minimum: 0,
|
|
490
|
-
maximum: 1,
|
|
491
|
-
description: 'Confidence in this correction (0-1, default 0.9)'
|
|
492
|
-
}
|
|
493
|
-
},
|
|
494
|
-
required: ['project_name', 'original', 'correction', 'reasoning']
|
|
495
|
-
}
|
|
496
|
-
},
|
|
497
|
-
|
|
498
|
-
/**
|
|
499
|
-
* GET_PATTERNS
|
|
500
|
-
* Retrieve recognized patterns from ChromaDB
|
|
501
|
-
*
|
|
502
|
-
* Use this when:
|
|
503
|
-
* - You want to review documented patterns
|
|
504
|
-
* - You need to know what solutions have worked before
|
|
505
|
-
* - You want to avoid known anti-patterns
|
|
506
|
-
*
|
|
507
|
-
* Results are ranked by similarity to your query
|
|
508
|
-
*/
|
|
509
|
-
GET_PATTERNS: {
|
|
510
|
-
name: 'get_patterns',
|
|
511
|
-
description: 'Retrieves recognized patterns from ChromaDB semantic memory. Use this to review documented solutions, best practices, anti-patterns, and common issues. Patterns are returned ranked by semantic similarity.',
|
|
512
|
-
inputSchema: {
|
|
513
|
-
type: 'object' as const,
|
|
514
|
-
properties: {
|
|
515
|
-
project_name: {
|
|
516
|
-
type: 'string',
|
|
517
|
-
description: 'Project to retrieve patterns from (optional, returns all projects if not specified)'
|
|
518
|
-
},
|
|
519
|
-
pattern_type: {
|
|
520
|
-
type: 'string',
|
|
521
|
-
enum: ['solution', 'anti-pattern', 'best-practice', 'common-issue'],
|
|
522
|
-
description: 'Filter by pattern type (optional)'
|
|
523
|
-
},
|
|
524
|
-
limit: {
|
|
525
|
-
type: 'number',
|
|
526
|
-
minimum: 1,
|
|
527
|
-
description: 'Maximum number of patterns to return (default 10)'
|
|
528
|
-
},
|
|
529
|
-
query: {
|
|
530
|
-
type: 'string',
|
|
531
|
-
description: 'Search query to find relevant patterns (optional, uses semantic search if not provided)'
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
}
|
|
535
|
-
},
|
|
536
|
-
|
|
537
|
-
/**
|
|
538
|
-
* GET_CORRECTIONS
|
|
539
|
-
* Retrieve corrections/lessons learned from ChromaDB
|
|
540
|
-
*
|
|
541
|
-
* Use this when:
|
|
542
|
-
* - You want to review past mistakes and lessons learned
|
|
543
|
-
* - You need to know what corrections have been documented
|
|
544
|
-
* - You want to avoid repeating previous errors
|
|
545
|
-
*
|
|
546
|
-
* Results are ranked by similarity to your query
|
|
547
|
-
*/
|
|
548
|
-
GET_CORRECTIONS: {
|
|
549
|
-
name: 'get_corrections',
|
|
550
|
-
description: 'Retrieves corrections and lessons learned from ChromaDB semantic memory. Use this to review past mistakes, what was fixed, and why it was better. Corrections are returned ranked by semantic similarity.',
|
|
551
|
-
inputSchema: {
|
|
552
|
-
type: 'object' as const,
|
|
553
|
-
properties: {
|
|
554
|
-
project_name: {
|
|
555
|
-
type: 'string',
|
|
556
|
-
description: 'Project to retrieve corrections from (optional, returns all projects if not specified)'
|
|
557
|
-
},
|
|
558
|
-
limit: {
|
|
559
|
-
type: 'number',
|
|
560
|
-
minimum: 1,
|
|
561
|
-
description: 'Maximum number of corrections to return (default 10)'
|
|
562
|
-
},
|
|
563
|
-
query: {
|
|
564
|
-
type: 'string',
|
|
565
|
-
description: 'Search query to find relevant corrections (optional, uses semantic search if not provided)'
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
}
|
|
569
|
-
},
|
|
570
|
-
|
|
571
|
-
// =========================================================================
|
|
572
|
-
// Phase 16 - Unified Brain Tool
|
|
573
|
-
// =========================================================================
|
|
574
|
-
// Phase 19: Removed 9 redundant MCP tools whose functionality is now
|
|
575
|
-
// absorbed into brain(). Removed: rate_memory, search_knowledge_graph,
|
|
576
|
-
// get_episode, list_episodes, get_decision_timeline,
|
|
577
|
-
// analyze_decision_evolution, detect_trends, what_if_analysis,
|
|
578
|
-
// get_recommendations, find_cross_project_patterns.
|
|
579
|
-
// The underlying modules are still available internally.
|
|
580
|
-
|
|
581
|
-
/**
|
|
582
|
-
* BRAIN
|
|
583
|
-
* Unified intelligent tool that replaces all 25 tools
|
|
584
|
-
*
|
|
585
|
-
* Use this when:
|
|
586
|
-
* - You want a single tool for all Claude Brain interactions
|
|
587
|
-
* - Enabled via unifiedToolMode config flag
|
|
588
|
-
*
|
|
589
|
-
* The server classifies intent and routes internally
|
|
590
|
-
*/
|
|
591
|
-
BRAIN: {
|
|
592
|
-
name: 'brain',
|
|
593
|
-
description: 'Your persistent memory. Tell it decisions, ask it questions, or update/delete past notes. Most context is captured automatically — only call this for intentional storage or recall. Search returns compact summaries — use brain("details {ID}") for full context.',
|
|
594
|
-
inputSchema: {
|
|
595
|
-
type: 'object' as const,
|
|
596
|
-
properties: {
|
|
597
|
-
message: {
|
|
598
|
-
type: 'string',
|
|
599
|
-
description: 'What you are doing, decided, learned, or need. Natural language.'
|
|
600
|
-
},
|
|
601
|
-
project: {
|
|
602
|
-
type: 'string',
|
|
603
|
-
description: 'Project name (IMPORTANT: pass this to scope memories correctly, e.g. "my-app"). Auto-detected from message if omitted, defaults to "general".'
|
|
604
|
-
},
|
|
605
|
-
action: {
|
|
606
|
-
type: 'string',
|
|
607
|
-
enum: ['auto', 'store', 'recall', 'update', 'delete'],
|
|
608
|
-
description: 'Force a specific action instead of auto-detecting intent. "store" = always save, "recall" = always search, "update" = modify last stored, "delete" = remove. Default: auto (use intent classifier).'
|
|
609
|
-
}
|
|
610
|
-
},
|
|
611
|
-
required: ['message']
|
|
612
|
-
}
|
|
613
|
-
},
|
|
614
|
-
|
|
615
|
-
/**
|
|
616
|
-
* SEARCH_CODE
|
|
617
|
-
* Search indexed code symbols, files, and dependencies
|
|
618
|
-
*
|
|
619
|
-
* Use this when:
|
|
620
|
-
* - Looking for a function, class, or type definition
|
|
621
|
-
* - Need to find which file contains a symbol
|
|
622
|
-
* - Want to see imports/dependencies of a file
|
|
623
|
-
* - Faster than grep for known symbol names
|
|
624
|
-
*/
|
|
625
|
-
SEARCH_CODE: {
|
|
626
|
-
name: 'search_code',
|
|
627
|
-
description: 'Search indexed code for symbols (functions, classes, types), files, or dependencies. Faster than grep when the project is indexed. Run `claude-brain reindex` first if no results.',
|
|
628
|
-
inputSchema: {
|
|
629
|
-
type: 'object' as const,
|
|
630
|
-
properties: {
|
|
631
|
-
query: {
|
|
632
|
-
type: 'string',
|
|
633
|
-
description: 'Symbol name, file name, or search term'
|
|
634
|
-
},
|
|
635
|
-
project: {
|
|
636
|
-
type: 'string',
|
|
637
|
-
description: 'Project name (usually the directory name, e.g. "claude-brain")'
|
|
638
|
-
},
|
|
639
|
-
type: {
|
|
640
|
-
type: 'string',
|
|
641
|
-
enum: ['symbols', 'files', 'dependencies'],
|
|
642
|
-
description: 'What to search for: symbols (functions/classes/types), files, or dependencies of a file',
|
|
643
|
-
default: 'symbols'
|
|
644
|
-
},
|
|
645
|
-
file_path: {
|
|
646
|
-
type: 'string',
|
|
647
|
-
description: 'File path (required when type is "dependencies")'
|
|
648
|
-
},
|
|
649
|
-
limit: {
|
|
650
|
-
type: 'number',
|
|
651
|
-
description: 'Maximum results to return',
|
|
652
|
-
default: 20
|
|
653
|
-
}
|
|
654
|
-
},
|
|
655
|
-
required: ['query', 'project']
|
|
656
|
-
}
|
|
657
|
-
}
|
|
658
|
-
} as const satisfies Record<string, ToolDefinition>
|
|
659
|
-
|
|
660
|
-
/** Tool names as a union type */
|
|
661
|
-
export type ToolName = typeof TOOLS[keyof typeof TOOLS]['name']
|
|
662
|
-
|
|
663
|
-
/** Get all tool names as an array */
|
|
664
|
-
export function getToolNames(): ToolName[] {
|
|
665
|
-
return Object.values(TOOLS).map(tool => tool.name)
|
|
666
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Schemas
|
|
3
|
+
* Defines all available tools that Claude Code can call
|
|
4
|
+
*
|
|
5
|
+
* Each tool has:
|
|
6
|
+
* - name: Unique identifier for the tool
|
|
7
|
+
* - description: Explains when and how to use the tool
|
|
8
|
+
* - inputSchema: JSON Schema for validating input parameters
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** Tool definition type */
|
|
12
|
+
export interface ToolDefinition {
|
|
13
|
+
name: string
|
|
14
|
+
description: string
|
|
15
|
+
inputSchema: {
|
|
16
|
+
type: 'object'
|
|
17
|
+
properties: Record<string, unknown>
|
|
18
|
+
required?: string[]
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* All available tools for Claude Brain MCP server
|
|
24
|
+
*/
|
|
25
|
+
export const TOOLS = {
|
|
26
|
+
/**
|
|
27
|
+
* GET_PROJECT_CONTEXT
|
|
28
|
+
* Primary tool for retrieving complete project context
|
|
29
|
+
*
|
|
30
|
+
* Use this when:
|
|
31
|
+
* - Starting work on a project
|
|
32
|
+
* - Need to understand project standards and conventions
|
|
33
|
+
* - Want to see recent decisions and progress
|
|
34
|
+
*
|
|
35
|
+
* Returns: Project description, standards, progress, and optionally relevant memories
|
|
36
|
+
*/
|
|
37
|
+
GET_PROJECT_CONTEXT: {
|
|
38
|
+
name: 'get_project_context',
|
|
39
|
+
description: 'Retrieves complete project context including standards, progress, past decisions, and relevant memories. This is the primary tool for getting context about a project.',
|
|
40
|
+
inputSchema: {
|
|
41
|
+
type: 'object' as const,
|
|
42
|
+
properties: {
|
|
43
|
+
project_name: {
|
|
44
|
+
type: 'string',
|
|
45
|
+
description: 'Name of the project to get context for'
|
|
46
|
+
},
|
|
47
|
+
include_memories: {
|
|
48
|
+
type: 'boolean',
|
|
49
|
+
description: 'Whether to include similar past decisions from semantic memory',
|
|
50
|
+
default: true
|
|
51
|
+
},
|
|
52
|
+
memory_limit: {
|
|
53
|
+
type: 'number',
|
|
54
|
+
description: 'Maximum number of relevant memories to include',
|
|
55
|
+
default: 5
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
required: ['project_name']
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* UPDATE_PROGRESS
|
|
64
|
+
* Track project progress and completed work
|
|
65
|
+
*
|
|
66
|
+
* Use this when:
|
|
67
|
+
* - Completing a task or milestone
|
|
68
|
+
* - Making significant progress
|
|
69
|
+
* - Updating what should happen next
|
|
70
|
+
*
|
|
71
|
+
* Returns: Confirmation of progress update
|
|
72
|
+
*/
|
|
73
|
+
UPDATE_PROGRESS: {
|
|
74
|
+
name: 'update_progress',
|
|
75
|
+
description: 'Updates project progress tracking with completed tasks and next steps. Use this when you complete a task or make significant progress.',
|
|
76
|
+
inputSchema: {
|
|
77
|
+
type: 'object' as const,
|
|
78
|
+
properties: {
|
|
79
|
+
project_name: {
|
|
80
|
+
type: 'string',
|
|
81
|
+
description: 'Name of the project'
|
|
82
|
+
},
|
|
83
|
+
completed_task: {
|
|
84
|
+
type: 'string',
|
|
85
|
+
description: 'Description of what was just completed'
|
|
86
|
+
},
|
|
87
|
+
next_steps: {
|
|
88
|
+
type: 'string',
|
|
89
|
+
description: 'What should be done next'
|
|
90
|
+
},
|
|
91
|
+
notes: {
|
|
92
|
+
type: 'string',
|
|
93
|
+
description: 'Optional additional notes or context'
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
required: ['project_name', 'completed_task', 'next_steps']
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* REMEMBER_DECISION
|
|
102
|
+
* Store important decisions in long-term memory
|
|
103
|
+
*
|
|
104
|
+
* Use this when:
|
|
105
|
+
* - Making architectural decisions
|
|
106
|
+
* - Choosing between alternatives
|
|
107
|
+
* - Establishing patterns that should persist
|
|
108
|
+
*
|
|
109
|
+
* Returns: Confirmation with memory ID
|
|
110
|
+
*/
|
|
111
|
+
REMEMBER_DECISION: {
|
|
112
|
+
name: 'remember_decision',
|
|
113
|
+
description: 'Stores an important architectural or technical decision in long-term memory. Use this for decisions that should influence future development.',
|
|
114
|
+
inputSchema: {
|
|
115
|
+
type: 'object' as const,
|
|
116
|
+
properties: {
|
|
117
|
+
project_name: {
|
|
118
|
+
type: 'string',
|
|
119
|
+
description: 'Project this decision relates to'
|
|
120
|
+
},
|
|
121
|
+
context: {
|
|
122
|
+
type: 'string',
|
|
123
|
+
description: 'What situation or problem led to this decision'
|
|
124
|
+
},
|
|
125
|
+
decision: {
|
|
126
|
+
type: 'string',
|
|
127
|
+
description: 'The decision that was made'
|
|
128
|
+
},
|
|
129
|
+
reasoning: {
|
|
130
|
+
type: 'string',
|
|
131
|
+
description: 'Why this decision was made'
|
|
132
|
+
},
|
|
133
|
+
alternatives_considered: {
|
|
134
|
+
type: 'string',
|
|
135
|
+
description: 'Other options that were considered'
|
|
136
|
+
},
|
|
137
|
+
tags: {
|
|
138
|
+
type: 'array',
|
|
139
|
+
items: { type: 'string' },
|
|
140
|
+
description: 'Tags for categorizing this decision (e.g., "architecture", "performance", "security")'
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
required: ['project_name', 'context', 'decision', 'reasoning']
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* RECALL_SIMILAR
|
|
149
|
+
* Semantic search through past decisions and context
|
|
150
|
+
*
|
|
151
|
+
* Use this when:
|
|
152
|
+
* - Facing a similar situation to past work
|
|
153
|
+
* - Want to learn from previous decisions
|
|
154
|
+
* - Need context from related work
|
|
155
|
+
*
|
|
156
|
+
* Returns: Array of similar decisions with similarity scores
|
|
157
|
+
*/
|
|
158
|
+
RECALL_SIMILAR: {
|
|
159
|
+
name: 'recall_similar',
|
|
160
|
+
description: 'Finds past decisions and context similar to the current situation using semantic search. Helps learn from past experience.',
|
|
161
|
+
inputSchema: {
|
|
162
|
+
type: 'object' as const,
|
|
163
|
+
properties: {
|
|
164
|
+
query: {
|
|
165
|
+
type: 'string',
|
|
166
|
+
description: 'Description of current situation or question'
|
|
167
|
+
},
|
|
168
|
+
project_filter: {
|
|
169
|
+
type: 'string',
|
|
170
|
+
description: 'Optional: only search within specific project'
|
|
171
|
+
},
|
|
172
|
+
limit: {
|
|
173
|
+
type: 'number',
|
|
174
|
+
description: 'Maximum number of results to return',
|
|
175
|
+
default: 5
|
|
176
|
+
},
|
|
177
|
+
min_similarity: {
|
|
178
|
+
type: 'number',
|
|
179
|
+
description: 'Minimum similarity score (0-1)',
|
|
180
|
+
default: 0.7
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
required: ['query']
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* GET_CODE_STANDARDS
|
|
189
|
+
* Retrieve coding standards and conventions
|
|
190
|
+
*
|
|
191
|
+
* Use this when:
|
|
192
|
+
* - Need to follow project coding style
|
|
193
|
+
* - Want to ensure consistency
|
|
194
|
+
* - Starting to write new code
|
|
195
|
+
*
|
|
196
|
+
* Returns: Merged global and project-specific standards
|
|
197
|
+
*/
|
|
198
|
+
GET_CODE_STANDARDS: {
|
|
199
|
+
name: 'get_code_standards',
|
|
200
|
+
description: 'Retrieves coding standards, patterns, and conventions for a project. Includes global standards merged with project-specific rules.',
|
|
201
|
+
inputSchema: {
|
|
202
|
+
type: 'object' as const,
|
|
203
|
+
properties: {
|
|
204
|
+
project_name: {
|
|
205
|
+
type: 'string',
|
|
206
|
+
description: 'Name of the project'
|
|
207
|
+
},
|
|
208
|
+
language: {
|
|
209
|
+
type: 'string',
|
|
210
|
+
description: 'Optional: filter standards by programming language (e.g., "typescript", "python")'
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
required: ['project_name']
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* LIST_PROJECTS
|
|
219
|
+
* Get available projects from the vault
|
|
220
|
+
*
|
|
221
|
+
* Use this when:
|
|
222
|
+
* - Need to see what projects exist
|
|
223
|
+
* - Want project metadata and status
|
|
224
|
+
* - Looking for active vs archived projects
|
|
225
|
+
*
|
|
226
|
+
* Returns: Array of project summaries with metadata
|
|
227
|
+
*/
|
|
228
|
+
LIST_PROJECTS: {
|
|
229
|
+
name: 'list_projects',
|
|
230
|
+
description: 'Lists all available projects in the Obsidian vault with their metadata and status.',
|
|
231
|
+
inputSchema: {
|
|
232
|
+
type: 'object' as const,
|
|
233
|
+
properties: {
|
|
234
|
+
status_filter: {
|
|
235
|
+
type: 'string',
|
|
236
|
+
enum: ['active', 'archived', 'planning', 'all'],
|
|
237
|
+
description: 'Filter projects by status',
|
|
238
|
+
default: 'active'
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* SMART_CONTEXT
|
|
246
|
+
* Intelligent context with proactive memory recall
|
|
247
|
+
*
|
|
248
|
+
* Use this when:
|
|
249
|
+
* - Starting work and want automatic relevant memory recall
|
|
250
|
+
* - Asking a question and want past decisions automatically searched
|
|
251
|
+
* - Need context + relevant memories in one call
|
|
252
|
+
*/
|
|
253
|
+
SMART_CONTEXT: {
|
|
254
|
+
name: 'smart_context',
|
|
255
|
+
description: 'Gets project context AND automatically searches for relevant past decisions based on your current question or task. More intelligent than get_project_context - use this when you have a specific question or task.',
|
|
256
|
+
inputSchema: {
|
|
257
|
+
type: 'object' as const,
|
|
258
|
+
properties: {
|
|
259
|
+
project_name: {
|
|
260
|
+
type: 'string',
|
|
261
|
+
description: 'Name of the project'
|
|
262
|
+
},
|
|
263
|
+
current_task: {
|
|
264
|
+
type: 'string',
|
|
265
|
+
description: 'What you are currently working on or asking about. This triggers proactive memory recall.'
|
|
266
|
+
},
|
|
267
|
+
min_similarity: {
|
|
268
|
+
type: 'number',
|
|
269
|
+
description: 'Minimum similarity for memory recall (0-1). Lower = more results.',
|
|
270
|
+
default: 0.3
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
required: ['project_name', 'current_task']
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* AUTO_REMEMBER
|
|
279
|
+
* Automatically detects and saves decisions from text
|
|
280
|
+
*
|
|
281
|
+
* Use this when:
|
|
282
|
+
* - Claude made a recommendation and wants to auto-save it
|
|
283
|
+
* - Processing a response that might contain decisions
|
|
284
|
+
* - Want Claude Brain to detect decisions automatically
|
|
285
|
+
*/
|
|
286
|
+
AUTO_REMEMBER: {
|
|
287
|
+
name: 'auto_remember',
|
|
288
|
+
description: 'Automatically detects decisions in text and saves them. Pass any text containing recommendations like "I recommend X because Y" or "We should use X". Decisions with >70% confidence are auto-saved.',
|
|
289
|
+
inputSchema: {
|
|
290
|
+
type: 'object' as const,
|
|
291
|
+
properties: {
|
|
292
|
+
project_name: {
|
|
293
|
+
type: 'string',
|
|
294
|
+
description: 'Project to associate the decision with'
|
|
295
|
+
},
|
|
296
|
+
text: {
|
|
297
|
+
type: 'string',
|
|
298
|
+
description: 'Text to analyze for decisions (e.g., Claude\'s response containing recommendations)'
|
|
299
|
+
},
|
|
300
|
+
confidence_threshold: {
|
|
301
|
+
type: 'number',
|
|
302
|
+
description: 'Minimum confidence to auto-save (0-1)',
|
|
303
|
+
default: 0.7
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
required: ['project_name', 'text']
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* GET_PHASE12_STATUS
|
|
312
|
+
* Get status of intelligent automation features
|
|
313
|
+
*/
|
|
314
|
+
GET_PHASE12_STATUS: {
|
|
315
|
+
name: 'get_phase12_status',
|
|
316
|
+
description: 'Shows status of Claude Brain\'s intelligent automation: current project, patterns detected, learning insights, and recall statistics.',
|
|
317
|
+
inputSchema: {
|
|
318
|
+
type: 'object' as const,
|
|
319
|
+
properties: {}
|
|
320
|
+
}
|
|
321
|
+
},
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* CREATE_PROJECT
|
|
325
|
+
* Create a new project in the vault with all necessary files
|
|
326
|
+
*
|
|
327
|
+
* Use this when:
|
|
328
|
+
* - Starting a brand new project
|
|
329
|
+
* - User wants to track a project with Claude Brain
|
|
330
|
+
* - Need to set up project structure automatically
|
|
331
|
+
*/
|
|
332
|
+
CREATE_PROJECT: {
|
|
333
|
+
name: 'create_project',
|
|
334
|
+
description: 'Creates a new project in the Obsidian vault with all necessary files (context.md, progress.md, decisions.md, standards.md). Use this when starting a new project.',
|
|
335
|
+
inputSchema: {
|
|
336
|
+
type: 'object' as const,
|
|
337
|
+
properties: {
|
|
338
|
+
project_name: {
|
|
339
|
+
type: 'string',
|
|
340
|
+
description: 'Name of the project (lowercase with hyphens, e.g., "my-awesome-app")'
|
|
341
|
+
},
|
|
342
|
+
description: {
|
|
343
|
+
type: 'string',
|
|
344
|
+
description: 'Brief description of the project'
|
|
345
|
+
},
|
|
346
|
+
tech_stack: {
|
|
347
|
+
type: 'array',
|
|
348
|
+
items: { type: 'string' },
|
|
349
|
+
description: 'Technologies used (e.g., ["typescript", "react", "node"])'
|
|
350
|
+
},
|
|
351
|
+
status: {
|
|
352
|
+
type: 'string',
|
|
353
|
+
enum: ['planning', 'active', 'on-hold', 'completed'],
|
|
354
|
+
description: 'Initial project status',
|
|
355
|
+
default: 'planning'
|
|
356
|
+
},
|
|
357
|
+
tags: {
|
|
358
|
+
type: 'array',
|
|
359
|
+
items: { type: 'string' },
|
|
360
|
+
description: 'Tags for categorizing the project (e.g., ["web", "frontend", "personal"])'
|
|
361
|
+
}
|
|
362
|
+
},
|
|
363
|
+
required: ['project_name']
|
|
364
|
+
}
|
|
365
|
+
},
|
|
366
|
+
|
|
367
|
+
/**
|
|
368
|
+
* INIT_PROJECT
|
|
369
|
+
* Analyze existing codebase and initialize in Claude Brain
|
|
370
|
+
*
|
|
371
|
+
* Use this when:
|
|
372
|
+
* - Opening Claude Code in an existing project
|
|
373
|
+
* - Want to auto-detect tech stack, structure, conventions
|
|
374
|
+
* - Similar to `claude init` but for Claude Brain
|
|
375
|
+
*
|
|
376
|
+
* LOW USAGE: Pure file reading, no LLM calls
|
|
377
|
+
*/
|
|
378
|
+
INIT_PROJECT: {
|
|
379
|
+
name: 'init_project',
|
|
380
|
+
description: 'Analyzes an existing codebase and creates/updates project in Claude Brain. Reads package.json, config files, and structure to auto-detect tech stack, frameworks, and conventions. Similar to `claude init`. Use this when starting work on an existing project.',
|
|
381
|
+
inputSchema: {
|
|
382
|
+
type: 'object' as const,
|
|
383
|
+
properties: {
|
|
384
|
+
project_path: {
|
|
385
|
+
type: 'string',
|
|
386
|
+
description: 'Path to be project directory. Defaults to current working directory.'
|
|
387
|
+
},
|
|
388
|
+
project_name: {
|
|
389
|
+
type: 'string',
|
|
390
|
+
description: 'Override project name (otherwise detected from package.json or folder name)'
|
|
391
|
+
},
|
|
392
|
+
save_to_memory: {
|
|
393
|
+
type: 'boolean',
|
|
394
|
+
description: 'Whether to save project context to semantic memory for future recall',
|
|
395
|
+
default: true
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
},
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* RECOGNIZE_PATTERN
|
|
403
|
+
* Save a recognized pattern to ChromaDB
|
|
404
|
+
*
|
|
405
|
+
* Use this when:
|
|
406
|
+
* - You notice a recurring solution approach
|
|
407
|
+
* - You identify an anti-pattern
|
|
408
|
+
* - You find a best practice that should be documented
|
|
409
|
+
*
|
|
410
|
+
* Patterns are stored in ChromaDB patterns collection for semantic recall
|
|
411
|
+
*/
|
|
412
|
+
RECOGNIZE_PATTERN: {
|
|
413
|
+
name: 'recognize_pattern',
|
|
414
|
+
description: 'Saves a recognized pattern (solution, anti-pattern, best-practice, or common-issue) to ChromaDB semantic memory. Patterns help identify recurring approaches and avoid mistakes.',
|
|
415
|
+
inputSchema: {
|
|
416
|
+
type: 'object' as const,
|
|
417
|
+
properties: {
|
|
418
|
+
project_name: {
|
|
419
|
+
type: 'string',
|
|
420
|
+
description: 'Project this pattern relates to'
|
|
421
|
+
},
|
|
422
|
+
pattern_type: {
|
|
423
|
+
type: 'string',
|
|
424
|
+
enum: ['solution', 'anti-pattern', 'best-practice', 'common-issue'],
|
|
425
|
+
description: 'Type of pattern'
|
|
426
|
+
},
|
|
427
|
+
description: {
|
|
428
|
+
type: 'string',
|
|
429
|
+
description: 'Detailed description of the pattern'
|
|
430
|
+
},
|
|
431
|
+
example: {
|
|
432
|
+
type: 'string',
|
|
433
|
+
description: 'Code example illustrating the pattern (optional)'
|
|
434
|
+
},
|
|
435
|
+
confidence: {
|
|
436
|
+
type: 'number',
|
|
437
|
+
minimum: 0,
|
|
438
|
+
maximum: 1,
|
|
439
|
+
description: 'Confidence in this pattern (0-1, default 0.8)'
|
|
440
|
+
},
|
|
441
|
+
context: {
|
|
442
|
+
type: 'string',
|
|
443
|
+
description: 'When this pattern was observed or applicable'
|
|
444
|
+
}
|
|
445
|
+
},
|
|
446
|
+
required: ['project_name', 'pattern_type', 'description']
|
|
447
|
+
}
|
|
448
|
+
},
|
|
449
|
+
|
|
450
|
+
/**
|
|
451
|
+
* RECORD_CORRECTION
|
|
452
|
+
* Save a correction/lesson learned to ChromaDB
|
|
453
|
+
*
|
|
454
|
+
* Use this when:
|
|
455
|
+
* - You made a mistake that should be documented
|
|
456
|
+
* - You learned a better approach after an error
|
|
457
|
+
* - You want to track lessons learned
|
|
458
|
+
*
|
|
459
|
+
* Corrections are stored in ChromaDB corrections collection for learning from mistakes
|
|
460
|
+
*/
|
|
461
|
+
RECORD_CORRECTION: {
|
|
462
|
+
name: 'record_correction',
|
|
463
|
+
description: 'Saves a correction or lesson learned to ChromaDB semantic memory. Use this when you made a mistake, learned something new, or want to document what NOT to do.',
|
|
464
|
+
inputSchema: {
|
|
465
|
+
type: 'object' as const,
|
|
466
|
+
properties: {
|
|
467
|
+
project_name: {
|
|
468
|
+
type: 'string',
|
|
469
|
+
description: 'Project this correction relates to'
|
|
470
|
+
},
|
|
471
|
+
original: {
|
|
472
|
+
type: 'string',
|
|
473
|
+
description: 'What was wrong or the mistake that was made'
|
|
474
|
+
},
|
|
475
|
+
correction: {
|
|
476
|
+
type: 'string',
|
|
477
|
+
description: 'What should have been done instead'
|
|
478
|
+
},
|
|
479
|
+
reasoning: {
|
|
480
|
+
type: 'string',
|
|
481
|
+
description: 'Why the correction is better than the original approach'
|
|
482
|
+
},
|
|
483
|
+
context: {
|
|
484
|
+
type: 'string',
|
|
485
|
+
description: 'When this correction was identified or applicable'
|
|
486
|
+
},
|
|
487
|
+
confidence: {
|
|
488
|
+
type: 'number',
|
|
489
|
+
minimum: 0,
|
|
490
|
+
maximum: 1,
|
|
491
|
+
description: 'Confidence in this correction (0-1, default 0.9)'
|
|
492
|
+
}
|
|
493
|
+
},
|
|
494
|
+
required: ['project_name', 'original', 'correction', 'reasoning']
|
|
495
|
+
}
|
|
496
|
+
},
|
|
497
|
+
|
|
498
|
+
/**
|
|
499
|
+
* GET_PATTERNS
|
|
500
|
+
* Retrieve recognized patterns from ChromaDB
|
|
501
|
+
*
|
|
502
|
+
* Use this when:
|
|
503
|
+
* - You want to review documented patterns
|
|
504
|
+
* - You need to know what solutions have worked before
|
|
505
|
+
* - You want to avoid known anti-patterns
|
|
506
|
+
*
|
|
507
|
+
* Results are ranked by similarity to your query
|
|
508
|
+
*/
|
|
509
|
+
GET_PATTERNS: {
|
|
510
|
+
name: 'get_patterns',
|
|
511
|
+
description: 'Retrieves recognized patterns from ChromaDB semantic memory. Use this to review documented solutions, best practices, anti-patterns, and common issues. Patterns are returned ranked by semantic similarity.',
|
|
512
|
+
inputSchema: {
|
|
513
|
+
type: 'object' as const,
|
|
514
|
+
properties: {
|
|
515
|
+
project_name: {
|
|
516
|
+
type: 'string',
|
|
517
|
+
description: 'Project to retrieve patterns from (optional, returns all projects if not specified)'
|
|
518
|
+
},
|
|
519
|
+
pattern_type: {
|
|
520
|
+
type: 'string',
|
|
521
|
+
enum: ['solution', 'anti-pattern', 'best-practice', 'common-issue'],
|
|
522
|
+
description: 'Filter by pattern type (optional)'
|
|
523
|
+
},
|
|
524
|
+
limit: {
|
|
525
|
+
type: 'number',
|
|
526
|
+
minimum: 1,
|
|
527
|
+
description: 'Maximum number of patterns to return (default 10)'
|
|
528
|
+
},
|
|
529
|
+
query: {
|
|
530
|
+
type: 'string',
|
|
531
|
+
description: 'Search query to find relevant patterns (optional, uses semantic search if not provided)'
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
},
|
|
536
|
+
|
|
537
|
+
/**
|
|
538
|
+
* GET_CORRECTIONS
|
|
539
|
+
* Retrieve corrections/lessons learned from ChromaDB
|
|
540
|
+
*
|
|
541
|
+
* Use this when:
|
|
542
|
+
* - You want to review past mistakes and lessons learned
|
|
543
|
+
* - You need to know what corrections have been documented
|
|
544
|
+
* - You want to avoid repeating previous errors
|
|
545
|
+
*
|
|
546
|
+
* Results are ranked by similarity to your query
|
|
547
|
+
*/
|
|
548
|
+
GET_CORRECTIONS: {
|
|
549
|
+
name: 'get_corrections',
|
|
550
|
+
description: 'Retrieves corrections and lessons learned from ChromaDB semantic memory. Use this to review past mistakes, what was fixed, and why it was better. Corrections are returned ranked by semantic similarity.',
|
|
551
|
+
inputSchema: {
|
|
552
|
+
type: 'object' as const,
|
|
553
|
+
properties: {
|
|
554
|
+
project_name: {
|
|
555
|
+
type: 'string',
|
|
556
|
+
description: 'Project to retrieve corrections from (optional, returns all projects if not specified)'
|
|
557
|
+
},
|
|
558
|
+
limit: {
|
|
559
|
+
type: 'number',
|
|
560
|
+
minimum: 1,
|
|
561
|
+
description: 'Maximum number of corrections to return (default 10)'
|
|
562
|
+
},
|
|
563
|
+
query: {
|
|
564
|
+
type: 'string',
|
|
565
|
+
description: 'Search query to find relevant corrections (optional, uses semantic search if not provided)'
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
},
|
|
570
|
+
|
|
571
|
+
// =========================================================================
|
|
572
|
+
// Phase 16 - Unified Brain Tool
|
|
573
|
+
// =========================================================================
|
|
574
|
+
// Phase 19: Removed 9 redundant MCP tools whose functionality is now
|
|
575
|
+
// absorbed into brain(). Removed: rate_memory, search_knowledge_graph,
|
|
576
|
+
// get_episode, list_episodes, get_decision_timeline,
|
|
577
|
+
// analyze_decision_evolution, detect_trends, what_if_analysis,
|
|
578
|
+
// get_recommendations, find_cross_project_patterns.
|
|
579
|
+
// The underlying modules are still available internally.
|
|
580
|
+
|
|
581
|
+
/**
|
|
582
|
+
* BRAIN
|
|
583
|
+
* Unified intelligent tool that replaces all 25 tools
|
|
584
|
+
*
|
|
585
|
+
* Use this when:
|
|
586
|
+
* - You want a single tool for all Claude Brain interactions
|
|
587
|
+
* - Enabled via unifiedToolMode config flag
|
|
588
|
+
*
|
|
589
|
+
* The server classifies intent and routes internally
|
|
590
|
+
*/
|
|
591
|
+
BRAIN: {
|
|
592
|
+
name: 'brain',
|
|
593
|
+
description: 'Your persistent memory. Tell it decisions, ask it questions, or update/delete past notes. Most context is captured automatically — only call this for intentional storage or recall. Search returns compact summaries — use brain("details {ID}") for full context.',
|
|
594
|
+
inputSchema: {
|
|
595
|
+
type: 'object' as const,
|
|
596
|
+
properties: {
|
|
597
|
+
message: {
|
|
598
|
+
type: 'string',
|
|
599
|
+
description: 'What you are doing, decided, learned, or need. Natural language.'
|
|
600
|
+
},
|
|
601
|
+
project: {
|
|
602
|
+
type: 'string',
|
|
603
|
+
description: 'Project name (IMPORTANT: pass this to scope memories correctly, e.g. "my-app"). Auto-detected from message if omitted, defaults to "general".'
|
|
604
|
+
},
|
|
605
|
+
action: {
|
|
606
|
+
type: 'string',
|
|
607
|
+
enum: ['auto', 'store', 'recall', 'update', 'delete'],
|
|
608
|
+
description: 'Force a specific action instead of auto-detecting intent. "store" = always save, "recall" = always search, "update" = modify last stored, "delete" = remove. Default: auto (use intent classifier).'
|
|
609
|
+
}
|
|
610
|
+
},
|
|
611
|
+
required: ['message']
|
|
612
|
+
}
|
|
613
|
+
},
|
|
614
|
+
|
|
615
|
+
/**
|
|
616
|
+
* SEARCH_CODE
|
|
617
|
+
* Search indexed code symbols, files, and dependencies
|
|
618
|
+
*
|
|
619
|
+
* Use this when:
|
|
620
|
+
* - Looking for a function, class, or type definition
|
|
621
|
+
* - Need to find which file contains a symbol
|
|
622
|
+
* - Want to see imports/dependencies of a file
|
|
623
|
+
* - Faster than grep for known symbol names
|
|
624
|
+
*/
|
|
625
|
+
SEARCH_CODE: {
|
|
626
|
+
name: 'search_code',
|
|
627
|
+
description: 'Search indexed code for symbols (functions, classes, types), files, or dependencies. Faster than grep when the project is indexed. Run `claude-brain reindex` first if no results.',
|
|
628
|
+
inputSchema: {
|
|
629
|
+
type: 'object' as const,
|
|
630
|
+
properties: {
|
|
631
|
+
query: {
|
|
632
|
+
type: 'string',
|
|
633
|
+
description: 'Symbol name, file name, or search term'
|
|
634
|
+
},
|
|
635
|
+
project: {
|
|
636
|
+
type: 'string',
|
|
637
|
+
description: 'Project name (usually the directory name, e.g. "claude-brain")'
|
|
638
|
+
},
|
|
639
|
+
type: {
|
|
640
|
+
type: 'string',
|
|
641
|
+
enum: ['symbols', 'files', 'dependencies'],
|
|
642
|
+
description: 'What to search for: symbols (functions/classes/types), files, or dependencies of a file',
|
|
643
|
+
default: 'symbols'
|
|
644
|
+
},
|
|
645
|
+
file_path: {
|
|
646
|
+
type: 'string',
|
|
647
|
+
description: 'File path (required when type is "dependencies")'
|
|
648
|
+
},
|
|
649
|
+
limit: {
|
|
650
|
+
type: 'number',
|
|
651
|
+
description: 'Maximum results to return',
|
|
652
|
+
default: 20
|
|
653
|
+
}
|
|
654
|
+
},
|
|
655
|
+
required: ['query', 'project']
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
} as const satisfies Record<string, ToolDefinition>
|
|
659
|
+
|
|
660
|
+
/** Tool names as a union type */
|
|
661
|
+
export type ToolName = typeof TOOLS[keyof typeof TOOLS]['name']
|
|
662
|
+
|
|
663
|
+
/** Get all tool names as an array */
|
|
664
|
+
export function getToolNames(): ToolName[] {
|
|
665
|
+
return Object.values(TOOLS).map(tool => tool.name)
|
|
666
|
+
}
|