engram-tools 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +158 -0
- package/dist/index.js +426 -105
- package/dist/index.js.map +1 -1
- package/package.json +15 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Emre Varol
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Engram Tools
|
|
2
|
+
|
|
3
|
+
Shared memory for AI coding agents. Engram lets MCP-compatible agents store what they learn, recall team knowledge, transfer lessons across repos, and report whether recalled memories actually helped.
|
|
4
|
+
|
|
5
|
+
## What Works Today
|
|
6
|
+
|
|
7
|
+
- MCP server package: `engram-tools`
|
|
8
|
+
- HTTP API for hosted or custom agent integrations
|
|
9
|
+
- Persistent memories by workspace and repo
|
|
10
|
+
- `engram_start` for one-call session setup + smart context loading
|
|
11
|
+
- `engram_smarter` for task-specific context loading when switching tasks
|
|
12
|
+
- `engram_store`, `engram_recall`, `engram_report_outcome`, `engram_get_context`, `engram_skill`, and `engram_setup`
|
|
13
|
+
- Outcome-based confidence updates
|
|
14
|
+
- Plan limits and daily API usage metering
|
|
15
|
+
- Stripe checkout/webhook plan updates
|
|
16
|
+
- Basic team dashboard for usage, limits, and recent memories
|
|
17
|
+
- PostgreSQL + pgvector semantic search when `VOYAGE_API_KEY` is configured
|
|
18
|
+
- Text-search fallback when embeddings are unavailable
|
|
19
|
+
|
|
20
|
+
## Quick Start
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npx engram-tools --setup engram_your_api_key
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The setup command writes MCP config for Claude Code, Cursor, Gemini CLI, Codex, and VS Code/Copilot project config when possible. For Claude Code, it also writes optional slash-command aliases for convenience.
|
|
27
|
+
|
|
28
|
+
After setup, restart your AI tool or start a new session. Most MCP clients load servers only at session startup. Start every client the same way: call `engram_start` once with project, repo, stack, role, market, and task.
|
|
29
|
+
|
|
30
|
+
Manual MCP config:
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
{
|
|
34
|
+
"mcpServers": {
|
|
35
|
+
"engram": {
|
|
36
|
+
"command": "npx",
|
|
37
|
+
"args": ["-y", "engram-tools"],
|
|
38
|
+
"env": {
|
|
39
|
+
"ENGRAM_API_KEY": "engram_your_api_key",
|
|
40
|
+
"ENGRAM_API_URL": "https://api.engram.tools"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Core Tools
|
|
48
|
+
|
|
49
|
+
`engram_start`
|
|
50
|
+
|
|
51
|
+
Start a session in one call. This loads setup guidance and the most relevant memories/skill guides.
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"project": "HouseCompass",
|
|
56
|
+
"repo": "housecompass.uk",
|
|
57
|
+
"role": "frontend product engineer",
|
|
58
|
+
"market": "UK property",
|
|
59
|
+
"task": "build the listing detail page",
|
|
60
|
+
"stack": ["Next.js", "TypeScript", "PostgreSQL"]
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
`engram_smarter`
|
|
65
|
+
|
|
66
|
+
Load task-specific memories and matching skill guides in one call.
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"context": "Next.js 16 + Prisma signup bug, fixing API key setup",
|
|
71
|
+
"repo": "engram",
|
|
72
|
+
"include_skills": true
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`engram_cross_pollinate`
|
|
77
|
+
|
|
78
|
+
Find reusable lessons from other repos in the same workspace.
|
|
79
|
+
|
|
80
|
+
```json
|
|
81
|
+
{
|
|
82
|
+
"target_repo": "engram",
|
|
83
|
+
"context": "Stripe webhook tier updates and signup reliability"
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
`engram_store`
|
|
88
|
+
|
|
89
|
+
Save a convention, pattern, gotcha, solution, architecture note, or dependency quirk.
|
|
90
|
+
|
|
91
|
+
`engram_recall`
|
|
92
|
+
|
|
93
|
+
Search memories by semantic query, repo, type, or tags.
|
|
94
|
+
|
|
95
|
+
`engram_report_outcome`
|
|
96
|
+
|
|
97
|
+
Report whether a recalled memory helped. This updates confidence and improves future ranking.
|
|
98
|
+
|
|
99
|
+
## HTTP API
|
|
100
|
+
|
|
101
|
+
Hosted API base:
|
|
102
|
+
|
|
103
|
+
```text
|
|
104
|
+
https://api.engram.tools
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Useful endpoints:
|
|
108
|
+
|
|
109
|
+
- `POST /api/v1/start`
|
|
110
|
+
- `POST /api/v1/smarter`
|
|
111
|
+
- `POST /api/v1/cross-pollinate`
|
|
112
|
+
- `POST /api/v1/store`
|
|
113
|
+
- `POST /api/v1/recall`
|
|
114
|
+
- `POST /api/v1/report`
|
|
115
|
+
- `POST /api/v1/context`
|
|
116
|
+
- `POST /api/v1/skill`
|
|
117
|
+
- `POST /api/v1/setup`
|
|
118
|
+
- `GET /api/v1/capabilities`
|
|
119
|
+
|
|
120
|
+
All private endpoints require:
|
|
121
|
+
|
|
122
|
+
```text
|
|
123
|
+
Authorization: Bearer <ENGRAM_API_KEY>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Local Development
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
npm install
|
|
130
|
+
npm run db:setup
|
|
131
|
+
npm run dev:http
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Environment:
|
|
135
|
+
|
|
136
|
+
```text
|
|
137
|
+
DATABASE_URL=postgresql://...
|
|
138
|
+
ENGRAM_API_KEY=engram-dev-key-001
|
|
139
|
+
VOYAGE_API_KEY=optional
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Run verification:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
npm run typecheck
|
|
146
|
+
npm run build
|
|
147
|
+
npm run test:product
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
The product smoke test stores memories, calls `/api/v1/smarter`, and verifies `/api/v1/cross-pollinate`.
|
|
151
|
+
|
|
152
|
+
## Status
|
|
153
|
+
|
|
154
|
+
Engram is in beta. The core memory, smarter context, cross-repo transfer, outcome-learning, hosted limits, API metering, Stripe plan updates, and basic dashboard flows are implemented. Scale-plan items such as SSO/SAML, self-hosted packaging, and SLA terms are handled as custom rollout work.
|
|
155
|
+
|
|
156
|
+
## License
|
|
157
|
+
|
|
158
|
+
MIT
|
package/dist/index.js
CHANGED
|
@@ -5,14 +5,162 @@ import { z } from 'zod';
|
|
|
5
5
|
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
|
|
6
6
|
import { join } from 'path';
|
|
7
7
|
import { homedir } from 'os';
|
|
8
|
+
import { execFileSync } from 'child_process';
|
|
9
|
+
function readJsonFile(path) {
|
|
10
|
+
if (!existsSync(path))
|
|
11
|
+
return {};
|
|
12
|
+
return JSON.parse(readFileSync(path, 'utf-8'));
|
|
13
|
+
}
|
|
14
|
+
function writeJsonFile(path, value) {
|
|
15
|
+
const dir = path.replace(/\/[^/]+$/, '');
|
|
16
|
+
if (!existsSync(dir))
|
|
17
|
+
mkdirSync(dir, { recursive: true });
|
|
18
|
+
writeFileSync(path, JSON.stringify(value, null, 2) + '\n');
|
|
19
|
+
}
|
|
20
|
+
function mergeMcpServers(path, serverConfig) {
|
|
21
|
+
const existing = readJsonFile(path);
|
|
22
|
+
const mcpServers = (existing.mcpServers || {});
|
|
23
|
+
mcpServers.engram = serverConfig;
|
|
24
|
+
existing.mcpServers = mcpServers;
|
|
25
|
+
writeJsonFile(path, existing);
|
|
26
|
+
}
|
|
27
|
+
function mergeVsCodeMcp(path, serverConfig) {
|
|
28
|
+
const existing = readJsonFile(path);
|
|
29
|
+
const servers = (existing.servers || {});
|
|
30
|
+
servers.engram = {
|
|
31
|
+
type: 'stdio',
|
|
32
|
+
...serverConfig,
|
|
33
|
+
};
|
|
34
|
+
existing.servers = servers;
|
|
35
|
+
writeJsonFile(path, existing);
|
|
36
|
+
}
|
|
37
|
+
function tomlString(value) {
|
|
38
|
+
return JSON.stringify(value);
|
|
39
|
+
}
|
|
40
|
+
function tomlArray(values) {
|
|
41
|
+
return `[${values.map(tomlString).join(', ')}]`;
|
|
42
|
+
}
|
|
43
|
+
function tomlInlineTable(values) {
|
|
44
|
+
return `{ ${Object.entries(values).map(([key, value]) => `${key} = ${tomlString(value)}`).join(', ')} }`;
|
|
45
|
+
}
|
|
46
|
+
function mergeCodexConfig(path, apiKey) {
|
|
47
|
+
const dir = path.replace(/\/[^/]+$/, '');
|
|
48
|
+
if (!existsSync(dir))
|
|
49
|
+
mkdirSync(dir, { recursive: true });
|
|
50
|
+
const existing = existsSync(path) ? readFileSync(path, 'utf-8') : '';
|
|
51
|
+
const block = [
|
|
52
|
+
'[mcp_servers.engram]',
|
|
53
|
+
'type = "stdio"',
|
|
54
|
+
'command = "npx"',
|
|
55
|
+
`args = ${tomlArray(['-y', 'engram-tools'])}`,
|
|
56
|
+
`env = ${tomlInlineTable({ ENGRAM_API_KEY: apiKey, ENGRAM_API_URL: 'https://api.engram.tools' })}`,
|
|
57
|
+
'',
|
|
58
|
+
].join('\n');
|
|
59
|
+
const pattern = /(?:^|\n)\[mcp_servers\.engram\]\n(?:[^\n[]|\n(?!\[))*\n?/m;
|
|
60
|
+
const next = pattern.test(existing)
|
|
61
|
+
? existing.replace(pattern, `${existing.startsWith('[mcp_servers.engram]') ? '' : '\n'}${block}`)
|
|
62
|
+
: `${existing.trimEnd()}${existing.trim() ? '\n\n' : ''}${block}`;
|
|
63
|
+
writeFileSync(path, next.endsWith('\n') ? next : `${next}\n`);
|
|
64
|
+
}
|
|
65
|
+
function ensureAgentInstruction(path) {
|
|
66
|
+
const snippet = `## Engram Memory
|
|
67
|
+
|
|
68
|
+
At the start of a meaningful coding session, use the Engram MCP server before implementing:
|
|
69
|
+
|
|
70
|
+
1. Call \`engram_start\` with the current project, repo, role, stack, market, and task.
|
|
71
|
+
2. If the work resembles another repo, call \`engram_cross_pollinate\`.
|
|
72
|
+
3. Store useful durable knowledge with \`engram_store\`.
|
|
73
|
+
4. Report whether recalled memories helped with \`engram_report_outcome\`.
|
|
74
|
+
|
|
75
|
+
Use Engram for project conventions, architecture, gotchas, reusable patterns, business/domain context, and handoff knowledge.
|
|
76
|
+
`;
|
|
77
|
+
const existing = existsSync(path) ? readFileSync(path, 'utf-8') : '';
|
|
78
|
+
if (existing.includes('## Engram Memory'))
|
|
79
|
+
return false;
|
|
80
|
+
writeFileSync(path, `${existing.trimEnd()}${existing.trim() ? '\n\n' : ''}${snippet}`);
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
function tryConfigureClaudeCli(serverConfig) {
|
|
84
|
+
if (process.env.ENGRAM_SETUP_SKIP_CLI_HELPERS === '1')
|
|
85
|
+
return false;
|
|
86
|
+
try {
|
|
87
|
+
execFileSync('claude', [
|
|
88
|
+
'mcp',
|
|
89
|
+
'add-json',
|
|
90
|
+
'-s',
|
|
91
|
+
'user',
|
|
92
|
+
'engram',
|
|
93
|
+
JSON.stringify({
|
|
94
|
+
type: 'stdio',
|
|
95
|
+
...serverConfig,
|
|
96
|
+
}),
|
|
97
|
+
], { stdio: 'pipe' });
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
8
104
|
// Handle --setup flag: auto-configure MCP
|
|
9
105
|
const args = process.argv.slice(2);
|
|
10
106
|
if (args[0] === '--setup' && args[1]) {
|
|
11
107
|
const apiKey = args[1];
|
|
12
108
|
const home = homedir();
|
|
13
|
-
const
|
|
14
|
-
{ name: 'Claude Code', path: join(home, '.claude', 'mcp.json') },
|
|
15
|
-
{ name: 'Cursor', path: join(
|
|
109
|
+
const jsonConfigs = [
|
|
110
|
+
{ name: 'Claude Code', path: join(home, '.claude', 'mcp.json'), writer: mergeMcpServers },
|
|
111
|
+
{ name: 'Cursor global', path: join(home, '.cursor', 'mcp.json'), writer: mergeMcpServers },
|
|
112
|
+
{ name: 'Gemini CLI', path: join(home, '.gemini', 'settings.json'), writer: mergeMcpServers },
|
|
113
|
+
];
|
|
114
|
+
const projectConfigs = [
|
|
115
|
+
{ name: 'Cursor project', path: join(process.cwd(), '.cursor', 'mcp.json'), writer: mergeMcpServers },
|
|
116
|
+
{ name: 'VS Code/Copilot project', path: join(process.cwd(), '.vscode', 'mcp.json'), writer: mergeVsCodeMcp },
|
|
117
|
+
];
|
|
118
|
+
const slashCommands = [
|
|
119
|
+
{
|
|
120
|
+
name: 'smarter',
|
|
121
|
+
path: join(home, '.claude', 'commands', 'smarter.md'),
|
|
122
|
+
body: `Load Engram smart context for the current task.
|
|
123
|
+
|
|
124
|
+
Use the MCP tool \`mcp__engram__engram_smarter\` with:
|
|
125
|
+
- \`context\`: a concise summary of the current repo, stack, files, and task
|
|
126
|
+
- \`repo\`: infer from the current working directory when possible
|
|
127
|
+
- \`include_skills\`: true
|
|
128
|
+
|
|
129
|
+
After applying any recalled memory, call \`mcp__engram__engram_report_outcome\` with the memory ID and whether it helped.
|
|
130
|
+
`,
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
name: 'engram-warmup',
|
|
134
|
+
path: join(home, '.claude', 'commands', 'engram-warmup.md'),
|
|
135
|
+
body: `Warm up this agent with Engram before starting implementation.
|
|
136
|
+
|
|
137
|
+
Call \`mcp__engram__engram_start\` with:
|
|
138
|
+
- \`agent_tool\`: "claude-code"
|
|
139
|
+
- \`project\`: infer from the current repo or ask the human
|
|
140
|
+
- \`repo\`: infer from the current directory
|
|
141
|
+
- \`role\`: describe your role for this task, e.g. "frontend product engineer", "product designer", "UK property marketplace builder"
|
|
142
|
+
- \`market\`: target market if known, e.g. "UK property"
|
|
143
|
+
- \`task\`: what you are about to do
|
|
144
|
+
- \`stack\`: detected stack, e.g. ["Next.js", "TypeScript", "PostgreSQL"]
|
|
145
|
+
|
|
146
|
+
If the project resembles another workspace project, call \`mcp__engram__engram_cross_pollinate\`.
|
|
147
|
+
If you are missing domain, legal, brand, pricing, or product assumptions, ask the human a concise question before guessing.
|
|
148
|
+
Report outcomes for any memory you use.
|
|
149
|
+
`,
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
name: 'cross-pollinate',
|
|
153
|
+
path: join(home, '.claude', 'commands', 'cross-pollinate.md'),
|
|
154
|
+
body: `Find lessons from other repos that may apply to this repo.
|
|
155
|
+
|
|
156
|
+
Use the MCP tool \`mcp__engram__engram_cross_pollinate\` with:
|
|
157
|
+
- \`target_repo\`: infer from the current working directory when possible
|
|
158
|
+
- \`context\`: a concise summary of the task, stack, error, or decision
|
|
159
|
+
- \`include_public\`: true
|
|
160
|
+
|
|
161
|
+
Apply only lessons that fit this repo. Report outcomes on any memory you use.
|
|
162
|
+
`,
|
|
163
|
+
},
|
|
16
164
|
];
|
|
17
165
|
const engramConfig = {
|
|
18
166
|
command: 'npx',
|
|
@@ -23,30 +171,56 @@ if (args[0] === '--setup' && args[1]) {
|
|
|
23
171
|
},
|
|
24
172
|
};
|
|
25
173
|
let configured = 0;
|
|
26
|
-
|
|
174
|
+
if (tryConfigureClaudeCli(engramConfig)) {
|
|
175
|
+
console.log(` ✓ Claude Code user config: claude mcp add-json -s user engram`);
|
|
176
|
+
configured++;
|
|
177
|
+
}
|
|
178
|
+
for (const cfg of [...jsonConfigs, ...projectConfigs]) {
|
|
27
179
|
try {
|
|
28
|
-
|
|
29
|
-
if (!existsSync(dir))
|
|
30
|
-
mkdirSync(dir, { recursive: true });
|
|
31
|
-
let existing = {};
|
|
32
|
-
if (existsSync(cfg.path)) {
|
|
33
|
-
existing = JSON.parse(readFileSync(cfg.path, 'utf-8'));
|
|
34
|
-
}
|
|
35
|
-
const mcpServers = (existing.mcpServers || {});
|
|
36
|
-
mcpServers.engram = engramConfig;
|
|
37
|
-
existing.mcpServers = mcpServers;
|
|
38
|
-
writeFileSync(cfg.path, JSON.stringify(existing, null, 2) + '\n');
|
|
180
|
+
cfg.writer(cfg.path, engramConfig);
|
|
39
181
|
console.log(` ✓ ${cfg.name}: ${cfg.path}`);
|
|
40
182
|
configured++;
|
|
41
183
|
}
|
|
42
184
|
catch {
|
|
43
|
-
// Skip
|
|
185
|
+
// Skip clients we cannot write for. The manual config is printed below if nothing worked.
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
try {
|
|
189
|
+
const codexPath = join(home, '.codex', 'config.toml');
|
|
190
|
+
mergeCodexConfig(codexPath, apiKey);
|
|
191
|
+
console.log(` ✓ Codex: ${codexPath}`);
|
|
192
|
+
configured++;
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
// Codex support is best-effort; other clients can still be configured.
|
|
196
|
+
}
|
|
197
|
+
try {
|
|
198
|
+
const agentsPath = join(process.cwd(), 'AGENTS.md');
|
|
199
|
+
const created = ensureAgentInstruction(agentsPath);
|
|
200
|
+
console.log(` ✓ Agent instructions ${created ? 'added to' : 'already present in'}: ${agentsPath}`);
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
// AGENTS.md is guidance only. MCP config is the activation path.
|
|
204
|
+
}
|
|
205
|
+
for (const command of slashCommands) {
|
|
206
|
+
try {
|
|
207
|
+
const dir = command.path.replace(/\/[^/]+$/, '');
|
|
208
|
+
if (!existsSync(dir))
|
|
209
|
+
mkdirSync(dir, { recursive: true });
|
|
210
|
+
writeFileSync(command.path, command.body);
|
|
211
|
+
console.log(` ✓ Claude slash command /${command.name}: ${command.path}`);
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
// Slash commands are a convenience. MCP config is enough if this fails.
|
|
44
215
|
}
|
|
45
216
|
}
|
|
46
217
|
if (configured > 0) {
|
|
47
|
-
console.log(`\nEngram configured! Restart your AI tool to activate.`);
|
|
48
|
-
console.log(`Your agent will have
|
|
49
|
-
console.log(`\
|
|
218
|
+
console.log(`\nEngram configured! Restart your AI tool, or start a new session, to activate the MCP tools.`);
|
|
219
|
+
console.log(`Your agent will have Engram memory tools including engram_start, engram_smarter, engram_store, engram_recall, and engram_report_outcome.`);
|
|
220
|
+
console.log(`\nStart every client the same way: call engram_start once with project, repo, stack, role, market, and task.`);
|
|
221
|
+
console.log(`Use engram_cross_pollinate when lessons from other repos may apply, and engram_report_outcome after using recalled memory.`);
|
|
222
|
+
console.log(`Claude Code also gets optional slash aliases, but the MCP tool to call is still engram_start.`);
|
|
223
|
+
console.log(`If your AI tool was already running during setup, exit/reopen it first; most MCP clients load servers only at session startup.`);
|
|
50
224
|
}
|
|
51
225
|
else {
|
|
52
226
|
console.log(`\nManual setup: Add this to your MCP config (~/.claude/mcp.json):`);
|
|
@@ -91,6 +265,180 @@ async function main() {
|
|
|
91
265
|
name: 'engram',
|
|
92
266
|
version: '0.2.0',
|
|
93
267
|
});
|
|
268
|
+
// Canonical Engram tools. The older atm_* names remain below as backward-compatible aliases.
|
|
269
|
+
server.registerTool('engram_start', {
|
|
270
|
+
title: 'Start Engram',
|
|
271
|
+
description: 'One-call session starter. Use this at the beginning of every meaningful session. It explains the workspace and loads smart task context in one call.',
|
|
272
|
+
inputSchema: {
|
|
273
|
+
agent_tool: z.string().optional().describe('Which AI tool you are, e.g. "claude-code", "codex", "cursor", "gemini-cli"'),
|
|
274
|
+
project: z.string().optional().describe('Project or product name, e.g. "HouseCompass"'),
|
|
275
|
+
repo: z.string().optional().describe('Current repository name'),
|
|
276
|
+
role: z.string().optional().describe('The role you are playing for this task'),
|
|
277
|
+
market: z.string().optional().describe('Target market/domain, e.g. "UK property"'),
|
|
278
|
+
task: z.string().optional().describe('What you are about to do'),
|
|
279
|
+
stack: z.array(z.string()).optional().describe('Detected stack, e.g. ["Next.js", "TypeScript"]'),
|
|
280
|
+
context: z.string().optional().describe('Optional full context summary. If omitted, Engram builds one from the other fields.'),
|
|
281
|
+
include_skills: z.boolean().optional().describe('Also fetch matching skill guides (default: true)'),
|
|
282
|
+
limit: z.number().min(1).max(30).optional().describe('Max memories to include'),
|
|
283
|
+
},
|
|
284
|
+
}, async (args) => {
|
|
285
|
+
try {
|
|
286
|
+
const result = await apiCall('/api/v1/start', args);
|
|
287
|
+
return { content: [{ type: 'text', text: result.markdown }] };
|
|
288
|
+
}
|
|
289
|
+
catch (e) {
|
|
290
|
+
return { content: [{ type: 'text', text: `Failed to start Engram: ${e}` }], isError: true };
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
server.registerTool('engram_setup', {
|
|
294
|
+
title: 'Engram Setup',
|
|
295
|
+
description: 'Return workspace info, available tools, and usage guidance. Most sessions should call engram_start instead because it also loads task context.',
|
|
296
|
+
inputSchema: {
|
|
297
|
+
agent_tool: z.string().optional().describe('Which AI tool you are'),
|
|
298
|
+
project: z.string().optional().describe('Project or product name'),
|
|
299
|
+
repo: z.string().optional().describe('Current repository name'),
|
|
300
|
+
role: z.string().optional().describe('The role you are playing for this task'),
|
|
301
|
+
market: z.string().optional().describe('Target market/domain'),
|
|
302
|
+
task: z.string().optional().describe('What you are about to do'),
|
|
303
|
+
stack: z.array(z.string()).optional().describe('Detected stack'),
|
|
304
|
+
},
|
|
305
|
+
}, async (args) => {
|
|
306
|
+
try {
|
|
307
|
+
const result = await apiCall('/api/v1/setup', args);
|
|
308
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
309
|
+
}
|
|
310
|
+
catch (e) {
|
|
311
|
+
return { content: [{ type: 'text', text: `Engram setup failed: ${e}` }], isError: true };
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
server.registerTool('engram_smarter', {
|
|
315
|
+
title: 'Engram Smarter',
|
|
316
|
+
description: 'Load smart context for a specific task. Use engram_start at session start; use this later when switching tasks.',
|
|
317
|
+
inputSchema: {
|
|
318
|
+
context: z.string().describe('Context summary: project name, tech stack, current task'),
|
|
319
|
+
repo: z.string().optional().describe('Current repository name'),
|
|
320
|
+
file: z.string().optional().describe('Current file path'),
|
|
321
|
+
include_skills: z.boolean().optional().describe('Also fetch matching skill guides (default: true)'),
|
|
322
|
+
limit: z.number().min(1).max(30).optional().describe('Max memories to include'),
|
|
323
|
+
},
|
|
324
|
+
}, async (args) => {
|
|
325
|
+
try {
|
|
326
|
+
const result = await apiCall('/api/v1/smarter', args);
|
|
327
|
+
return { content: [{ type: 'text', text: result.markdown }] };
|
|
328
|
+
}
|
|
329
|
+
catch (e) {
|
|
330
|
+
return { content: [{ type: 'text', text: `Failed to load Engram context: ${e}` }], isError: true };
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
server.registerTool('engram_cross_pollinate', {
|
|
334
|
+
title: 'Engram Cross-Pollinate',
|
|
335
|
+
description: 'Find reusable lessons from other repositories in the same workspace.',
|
|
336
|
+
inputSchema: {
|
|
337
|
+
target_repo: z.string().describe('Current repository that needs help'),
|
|
338
|
+
context: z.string().describe('Current task, stack, error, or decision to cross-pollinate'),
|
|
339
|
+
source_repos: z.array(z.string()).optional().describe('Optional source repo names to search'),
|
|
340
|
+
include_public: z.boolean().optional().describe('Include public starter-pack memories (default: true)'),
|
|
341
|
+
limit: z.number().min(1).max(25).optional().describe('Max cross-project memories to return'),
|
|
342
|
+
},
|
|
343
|
+
}, async (args) => {
|
|
344
|
+
try {
|
|
345
|
+
const result = await apiCall('/api/v1/cross-pollinate', args);
|
|
346
|
+
return { content: [{ type: 'text', text: result.markdown }] };
|
|
347
|
+
}
|
|
348
|
+
catch (e) {
|
|
349
|
+
return { content: [{ type: 'text', text: `Failed to cross-pollinate with Engram: ${e}` }], isError: true };
|
|
350
|
+
}
|
|
351
|
+
});
|
|
352
|
+
server.registerTool('engram_store', {
|
|
353
|
+
title: 'Engram Store',
|
|
354
|
+
description: 'Store durable knowledge for the team. Use when you discover a convention, pattern, gotcha, solution, architecture decision, or dependency quirk.',
|
|
355
|
+
inputSchema: {
|
|
356
|
+
type: z.enum(['CONVENTION', 'PATTERN', 'GOTCHA', 'SOLUTION', 'ARCHITECTURE', 'DEPENDENCY']),
|
|
357
|
+
content: z.string().describe('The knowledge to store. Be specific and actionable.'),
|
|
358
|
+
repo: z.string().optional().describe('Repository name'),
|
|
359
|
+
tags: z.array(z.string()).optional().describe('Tags for categorization'),
|
|
360
|
+
agent_tool: z.string().optional().describe('Which AI tool you are'),
|
|
361
|
+
context: z.record(z.string(), z.unknown()).optional().describe('Additional context'),
|
|
362
|
+
},
|
|
363
|
+
}, async (args) => {
|
|
364
|
+
try {
|
|
365
|
+
const result = await apiCall('/api/v1/store', args);
|
|
366
|
+
const r = result;
|
|
367
|
+
return { content: [{ type: 'text', text: r.message }] };
|
|
368
|
+
}
|
|
369
|
+
catch (e) {
|
|
370
|
+
return { content: [{ type: 'text', text: `Failed to store in Engram: ${e}` }], isError: true };
|
|
371
|
+
}
|
|
372
|
+
});
|
|
373
|
+
server.registerTool('engram_recall', {
|
|
374
|
+
title: 'Engram Recall',
|
|
375
|
+
description: 'Search Engram memory before making decisions or debugging unfamiliar problems.',
|
|
376
|
+
inputSchema: {
|
|
377
|
+
query: z.string().describe('What you want to know'),
|
|
378
|
+
repo: z.string().optional().describe('Filter by repository'),
|
|
379
|
+
type: z.enum(['CONVENTION', 'PATTERN', 'GOTCHA', 'SOLUTION', 'ARCHITECTURE', 'DEPENDENCY']).optional(),
|
|
380
|
+
tags: z.array(z.string()).optional(),
|
|
381
|
+
limit: z.number().min(1).max(20).optional().describe('Max results'),
|
|
382
|
+
},
|
|
383
|
+
}, async (args) => {
|
|
384
|
+
try {
|
|
385
|
+
const result = await apiCall('/api/v1/recall', args);
|
|
386
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
387
|
+
}
|
|
388
|
+
catch (e) {
|
|
389
|
+
return { content: [{ type: 'text', text: `Failed to recall from Engram: ${e}` }], isError: true };
|
|
390
|
+
}
|
|
391
|
+
});
|
|
392
|
+
server.registerTool('engram_report_outcome', {
|
|
393
|
+
title: 'Engram Report Outcome',
|
|
394
|
+
description: 'Report whether a recalled memory helped. This improves future memory ranking.',
|
|
395
|
+
inputSchema: {
|
|
396
|
+
memory_id: z.string().describe('The memory ID from recall/start results'),
|
|
397
|
+
success: z.boolean().describe('true = helped, false = did not help or was wrong'),
|
|
398
|
+
detail: z.string().optional().describe('Explain the outcome'),
|
|
399
|
+
failure_reason: z.enum(['outdated', 'wrong_context', 'incorrect', 'partial', 'other']).optional(),
|
|
400
|
+
},
|
|
401
|
+
}, async (args) => {
|
|
402
|
+
try {
|
|
403
|
+
const result = await apiCall('/api/v1/report', args);
|
|
404
|
+
return { content: [{ type: 'text', text: result.message }] };
|
|
405
|
+
}
|
|
406
|
+
catch (e) {
|
|
407
|
+
return { content: [{ type: 'text', text: `Failed to report Engram outcome: ${e}` }], isError: true };
|
|
408
|
+
}
|
|
409
|
+
});
|
|
410
|
+
server.registerTool('engram_get_context', {
|
|
411
|
+
title: 'Engram Get Context',
|
|
412
|
+
description: 'Load repo memory by type. Use engram_start for normal session startup.',
|
|
413
|
+
inputSchema: {
|
|
414
|
+
repo: z.string().describe('Repository name'),
|
|
415
|
+
file: z.string().optional().describe('Current file path'),
|
|
416
|
+
task: z.string().optional().describe('What you are about to do'),
|
|
417
|
+
},
|
|
418
|
+
}, async (args) => {
|
|
419
|
+
try {
|
|
420
|
+
const result = await apiCall('/api/v1/context', args);
|
|
421
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
422
|
+
}
|
|
423
|
+
catch (e) {
|
|
424
|
+
return { content: [{ type: 'text', text: `Failed to get Engram context: ${e}` }], isError: true };
|
|
425
|
+
}
|
|
426
|
+
});
|
|
427
|
+
server.registerTool('engram_skill', {
|
|
428
|
+
title: 'Engram Skill',
|
|
429
|
+
description: 'Load a complete skill guide by skill name. Call with no skill to list available skills.',
|
|
430
|
+
inputSchema: {
|
|
431
|
+
skill: z.string().optional().describe('Skill name, e.g. "code-review"'),
|
|
432
|
+
},
|
|
433
|
+
}, async (args) => {
|
|
434
|
+
try {
|
|
435
|
+
const result = await apiCall('/api/v1/skill', { skill: args.skill || '' });
|
|
436
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
437
|
+
}
|
|
438
|
+
catch (e) {
|
|
439
|
+
return { content: [{ type: 'text', text: `Failed to get Engram skill: ${e}` }], isError: true };
|
|
440
|
+
}
|
|
441
|
+
});
|
|
94
442
|
// atm_store
|
|
95
443
|
server.registerTool('atm_store', {
|
|
96
444
|
title: 'Store Memory',
|
|
@@ -130,7 +478,7 @@ async function main() {
|
|
|
130
478
|
const result = await apiCall('/api/v1/recall', args);
|
|
131
479
|
const r = result;
|
|
132
480
|
if (r.count === 0) {
|
|
133
|
-
return { content: [{ type: 'text', text: 'No relevant memories found. Consider storing new knowledge with
|
|
481
|
+
return { content: [{ type: 'text', text: 'No relevant memories found. Consider storing new knowledge with engram_store.' }] };
|
|
134
482
|
}
|
|
135
483
|
const summary = r.memories.slice(0, 3).map(m => m.content.split('\n')[0].slice(0, 80)).join(' | ');
|
|
136
484
|
const formatted = r.memories.map((m, i) => {
|
|
@@ -140,7 +488,7 @@ async function main() {
|
|
|
140
488
|
}).join('\n\n');
|
|
141
489
|
const staleCount = r.memories.filter(m => m.stale).length;
|
|
142
490
|
const staleNote = staleCount > 0 ? `\n\nNote: ${staleCount} memories are 30+ days old. Verify before acting on them.` : '';
|
|
143
|
-
return { content: [{ type: 'text', text: `Found ${r.count} relevant memories.\n\nQuick summary: ${summary}\n\n${formatted}${staleNote}\n\nTip: Use
|
|
491
|
+
return { content: [{ type: 'text', text: `Found ${r.count} relevant memories.\n\nQuick summary: ${summary}\n\n${formatted}${staleNote}\n\nTip: Use engram_report_outcome to confirm or flag memories after using them.` }] };
|
|
144
492
|
}
|
|
145
493
|
catch (e) {
|
|
146
494
|
return { content: [{ type: 'text', text: `Failed to recall: ${e}` }], isError: true };
|
|
@@ -151,7 +499,7 @@ async function main() {
|
|
|
151
499
|
title: 'Report Outcome',
|
|
152
500
|
description: 'Report whether a recalled memory was helpful or not. This is critical for learning. Always report after using a recalled memory. If it failed, explain WHY.',
|
|
153
501
|
inputSchema: {
|
|
154
|
-
memory_id: z.string().describe('The memory ID from
|
|
502
|
+
memory_id: z.string().describe('The memory ID from engram_recall results'),
|
|
155
503
|
success: z.boolean().describe('true = helped, false = did not help or was wrong'),
|
|
156
504
|
detail: z.string().optional().describe('Explain the outcome. REQUIRED when success=false.'),
|
|
157
505
|
failure_reason: z.enum(['outdated', 'wrong_context', 'incorrect', 'partial', 'other']).optional()
|
|
@@ -170,7 +518,7 @@ async function main() {
|
|
|
170
518
|
// atm_get_context
|
|
171
519
|
server.registerTool('atm_get_context', {
|
|
172
520
|
title: 'Get Context',
|
|
173
|
-
description: 'Load all relevant memories for a repository. Use
|
|
521
|
+
description: 'Load all relevant memories for a repository. Use engram_start for normal session startup; use this when switching repos or when you need a focused repo dump.',
|
|
174
522
|
inputSchema: {
|
|
175
523
|
repo: z.string().describe('Repository name'),
|
|
176
524
|
file: z.string().optional().describe('Current file path'),
|
|
@@ -193,7 +541,7 @@ async function main() {
|
|
|
193
541
|
if (r.architecture.length)
|
|
194
542
|
sections.push('## Architecture\n' + fmt(r.architecture));
|
|
195
543
|
if (sections.length === 0) {
|
|
196
|
-
return { content: [{ type: 'text', text: `No memories for repo "${args.repo}". Use
|
|
544
|
+
return { content: [{ type: 'text', text: `No memories for repo "${args.repo}". Use engram_store to save useful findings as you work.` }] };
|
|
197
545
|
}
|
|
198
546
|
const guidance = `\n---\n## When to use Engram this session\n\n**STORE** when you fix a hard bug, discover a convention, or find a solution.\n**RECALL** before architectural decisions or when encountering errors.\n**REPORT** after using a recalled memory (helps the system learn).\n\n_${r.total} memories loaded._`;
|
|
199
547
|
return { content: [{ type: 'text', text: `# Team Context for ${args.repo}\n\n${sections.join('\n\n')}${guidance}` }] };
|
|
@@ -208,6 +556,12 @@ async function main() {
|
|
|
208
556
|
description: 'Call this ONCE when you first connect to Engram, or when you need a refresher on how to use the memory system.',
|
|
209
557
|
inputSchema: {
|
|
210
558
|
agent_tool: z.string().optional().describe('Which AI tool you are (e.g. "claude-code", "cursor")'),
|
|
559
|
+
project: z.string().optional().describe('Project or product name, e.g. "HouseCompass"'),
|
|
560
|
+
repo: z.string().optional().describe('Current repository name'),
|
|
561
|
+
role: z.string().optional().describe('The role you are playing for this task'),
|
|
562
|
+
market: z.string().optional().describe('Target market/domain, e.g. "UK property"'),
|
|
563
|
+
task: z.string().optional().describe('What you are about to do'),
|
|
564
|
+
stack: z.array(z.string()).optional().describe('Detected stack, e.g. ["Next.js", "TypeScript"]'),
|
|
211
565
|
},
|
|
212
566
|
}, async (args) => {
|
|
213
567
|
try {
|
|
@@ -220,12 +574,27 @@ async function main() {
|
|
|
220
574
|
- Team members: ${r.workspace.members}
|
|
221
575
|
- Repos: ${r.workspace.repos}
|
|
222
576
|
|
|
223
|
-
##
|
|
224
|
-
- **
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
- **
|
|
228
|
-
- **
|
|
577
|
+
## Start Here
|
|
578
|
+
- **engram_start** - One-call session start: setup guidance + smart task context
|
|
579
|
+
|
|
580
|
+
## Other Engram Tools
|
|
581
|
+
- **engram_smarter** - Load task-specific memories and skill guides when switching tasks
|
|
582
|
+
- **engram_cross_pollinate** - Reuse lessons from other repos in this workspace
|
|
583
|
+
- **engram_store** - Save knowledge for the team
|
|
584
|
+
- **engram_recall** - Search before you decide
|
|
585
|
+
- **engram_skill** - Load a complete skill guide
|
|
586
|
+
- **engram_report_outcome** - Help the system learn
|
|
587
|
+
- **engram_get_context** - Load repo knowledge by type
|
|
588
|
+
- **engram_setup** - This onboarding only
|
|
589
|
+
|
|
590
|
+
## First Conversation
|
|
591
|
+
${(r.first_conversation || []).map(s => `- ${s}`).join('\n') || '- Tell Engram your project, market, stack, role, and current task.'}
|
|
592
|
+
|
|
593
|
+
## Immediate Next Calls
|
|
594
|
+
${(r.immediate_next_calls || []).map(call => `### ${call.tool}\nWhy: ${call.why}\nPayload:\n\`\`\`json\n${JSON.stringify(call.example, null, 2)}\n\`\`\``).join('\n\n')}
|
|
595
|
+
|
|
596
|
+
## Operating Protocol
|
|
597
|
+
${(r.guidelines.operating_protocol || []).map(s => `- ${s}`).join('\n')}
|
|
229
598
|
|
|
230
599
|
## When to Store
|
|
231
600
|
${r.guidelines.store_when.map(s => `- ${s}`).join('\n')}
|
|
@@ -240,7 +609,7 @@ ${r.guidelines.recall_when.map(s => `- ${s}`).join('\n')}
|
|
|
240
609
|
After using a recalled memory, report if it helped or not. This is how Engram learns.
|
|
241
610
|
|
|
242
611
|
---
|
|
243
|
-
Setup complete.
|
|
612
|
+
Setup complete. In normal use, call **engram_start** once at session start. Use **engram_cross_pollinate** when another project may have solved the same problem.`;
|
|
244
613
|
return { content: [{ type: 'text', text }] };
|
|
245
614
|
}
|
|
246
615
|
catch (e) {
|
|
@@ -259,7 +628,7 @@ Setup complete. Start with **atm_get_context** for your current repo.`;
|
|
|
259
628
|
const result = await apiCall('/api/v1/skill', { skill: args.skill || '' });
|
|
260
629
|
const r = result;
|
|
261
630
|
if (r.available_skills) {
|
|
262
|
-
return { content: [{ type: 'text', text: `Available skills:\n${r.available_skills.map(s => `- ${s}`).join('\n')}\n\nUsage:
|
|
631
|
+
return { content: [{ type: 'text', text: `Available skills:\n${r.available_skills.map(s => `- ${s}`).join('\n')}\n\nUsage: engram_skill({ skill: "skill-name" })` }] };
|
|
263
632
|
}
|
|
264
633
|
if (r.count === 0) {
|
|
265
634
|
return { content: [{ type: 'text', text: r.message || `No memories found for skill "${args.skill}".` }] };
|
|
@@ -276,88 +645,40 @@ Setup complete. Start with **atm_get_context** for your current repo.`;
|
|
|
276
645
|
description: 'Fetch relevant knowledge for your current project and task. Send a context summary (project name, tech stack, current task) and get back the most relevant memories, patterns, gotchas, and skill guides. Use this at the start of a session or when switching tasks to load relevant knowledge. The more specific your context, the better the results.',
|
|
277
646
|
inputSchema: {
|
|
278
647
|
context: z.string().describe('Context summary: project name, tech stack, current task. Example: "evimibul - Next.js 16, Prisma 5, Neon - fixing search aggregator, adding location filters"'),
|
|
648
|
+
repo: z.string().optional().describe('Current repository name'),
|
|
649
|
+
file: z.string().optional().describe('Current file path'),
|
|
279
650
|
include_skills: z.boolean().optional().describe('Also fetch matching skill guides (default: true)'),
|
|
651
|
+
limit: z.number().min(1).max(30).optional().describe('Max memories to include'),
|
|
280
652
|
},
|
|
281
653
|
}, async (args) => {
|
|
282
654
|
try {
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
query: args.context,
|
|
286
|
-
limit: 20,
|
|
287
|
-
});
|
|
288
|
-
const memories = recallResult;
|
|
289
|
-
// Step 2: Detect which skills might be relevant from context
|
|
290
|
-
const contextLower = args.context.toLowerCase();
|
|
291
|
-
const skillMap = {
|
|
292
|
-
'auth': ['auth', 'login', 'signup', 'authentication', 'nextauth', 'oauth', 'jwt'],
|
|
293
|
-
'database-migration': ['migration', 'schema', 'prisma migrate', 'alter table', 'add column'],
|
|
294
|
-
'deployment': ['deploy', 'production', 'vercel', 'fly.io', 'release', 'ci/cd'],
|
|
295
|
-
'code-review': ['review', 'pr', 'pull request', 'code quality'],
|
|
296
|
-
'security-audit': ['security', 'vulnerability', 'owasp', 'xss', 'csrf', 'injection'],
|
|
297
|
-
'performance': ['performance', 'slow', 'optimize', 'cache', 'speed', 'latency'],
|
|
298
|
-
'testing': ['test', 'jest', 'vitest', 'playwright', 'coverage'],
|
|
299
|
-
'api-design': ['api', 'endpoint', 'rest', 'graphql', 'route'],
|
|
300
|
-
'debugging': ['bug', 'error', 'debug', 'fix', 'crash', 'issue'],
|
|
301
|
-
'refactoring': ['refactor', 'clean', 'restructure', 'simplify'],
|
|
302
|
-
'error-handling': ['error handling', 'try catch', 'exception'],
|
|
303
|
-
'state-management': ['state', 'zustand', 'redux', 'context', 'store'],
|
|
304
|
-
'responsive-design': ['responsive', 'mobile', 'breakpoint', 'media query'],
|
|
305
|
-
'accessibility': ['accessibility', 'a11y', 'aria', 'screen reader'],
|
|
306
|
-
'monitoring': ['monitoring', 'logging', 'metrics', 'alert', 'observability'],
|
|
307
|
-
'data-modeling': ['schema', 'model', 'entity', 'relation', 'database design'],
|
|
308
|
-
'i18n': ['i18n', 'translation', 'locale', 'next-intl', 'internationalization'],
|
|
309
|
-
'cicd': ['ci', 'cd', 'pipeline', 'github actions', 'workflow'],
|
|
310
|
-
'git-workflow': ['git', 'branch', 'merge', 'rebase', 'commit'],
|
|
311
|
-
'documentation': ['docs', 'readme', 'documentation', 'api docs'],
|
|
312
|
-
};
|
|
313
|
-
const matchedSkills = [];
|
|
314
|
-
if (args.include_skills !== false) {
|
|
315
|
-
for (const [skill, keywords] of Object.entries(skillMap)) {
|
|
316
|
-
if (keywords.some(kw => contextLower.includes(kw))) {
|
|
317
|
-
matchedSkills.push(skill);
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
// Step 3: Fetch matched skills (max 2 most relevant)
|
|
322
|
-
const skillResults = [];
|
|
323
|
-
for (const skill of matchedSkills.slice(0, 2)) {
|
|
324
|
-
try {
|
|
325
|
-
const sr = await apiCall('/api/v1/skill', { skill });
|
|
326
|
-
if (sr.count > 0) {
|
|
327
|
-
skillResults.push(`## Skill: ${sr.skill} (${sr.count} steps)\n${sr.combined}`);
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
catch { /* skip */ }
|
|
331
|
-
}
|
|
332
|
-
// Step 4: Build response
|
|
333
|
-
const sections = [];
|
|
334
|
-
sections.push(`# Smart Context Loaded\n\nContext: ${args.context}\n`);
|
|
335
|
-
if (memories.count > 0) {
|
|
336
|
-
const byType = {};
|
|
337
|
-
for (const m of memories.memories) {
|
|
338
|
-
const type = m.type || 'OTHER';
|
|
339
|
-
if (!byType[type])
|
|
340
|
-
byType[type] = [];
|
|
341
|
-
byType[type].push(m.content);
|
|
342
|
-
}
|
|
343
|
-
sections.push(`## ${memories.count} Relevant Memories\n`);
|
|
344
|
-
for (const [type, items] of Object.entries(byType)) {
|
|
345
|
-
sections.push(`### ${type} (${items.length})`);
|
|
346
|
-
for (const item of items.slice(0, 5)) {
|
|
347
|
-
sections.push(`- ${item.slice(0, 200)}`);
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
if (skillResults.length > 0) {
|
|
352
|
-
sections.push('\n' + skillResults.join('\n\n'));
|
|
353
|
-
}
|
|
354
|
-
sections.push('\n---\nKnowledge loaded. Apply these patterns, respect these gotchas, follow these conventions throughout the session.');
|
|
355
|
-
return { content: [{ type: 'text', text: sections.join('\n') }] };
|
|
655
|
+
const result = await apiCall('/api/v1/smarter', args);
|
|
656
|
+
return { content: [{ type: 'text', text: result.markdown }] };
|
|
356
657
|
}
|
|
357
658
|
catch (e) {
|
|
358
659
|
return { content: [{ type: 'text', text: `Failed to load smart context: ${e}` }], isError: true };
|
|
359
660
|
}
|
|
360
661
|
});
|
|
662
|
+
// atm_cross_pollinate
|
|
663
|
+
server.registerTool('atm_cross_pollinate', {
|
|
664
|
+
title: 'Cross-Pollinate Project Knowledge',
|
|
665
|
+
description: 'Find reusable lessons from other repositories in the workspace. Use when the current task resembles something another Varol Inc. project may have solved already, or before building a pattern that might exist elsewhere.',
|
|
666
|
+
inputSchema: {
|
|
667
|
+
target_repo: z.string().describe('Current repository that needs help'),
|
|
668
|
+
context: z.string().describe('Current task, stack, error, or decision to cross-pollinate'),
|
|
669
|
+
source_repos: z.array(z.string()).optional().describe('Optional source repo names to search'),
|
|
670
|
+
include_public: z.boolean().optional().describe('Include public starter-pack memories (default: true)'),
|
|
671
|
+
limit: z.number().min(1).max(25).optional().describe('Max cross-project memories to return'),
|
|
672
|
+
},
|
|
673
|
+
}, async (args) => {
|
|
674
|
+
try {
|
|
675
|
+
const result = await apiCall('/api/v1/cross-pollinate', args);
|
|
676
|
+
return { content: [{ type: 'text', text: result.markdown }] };
|
|
677
|
+
}
|
|
678
|
+
catch (e) {
|
|
679
|
+
return { content: [{ type: 'text', text: `Failed to cross-pollinate: ${e}` }], isError: true };
|
|
680
|
+
}
|
|
681
|
+
});
|
|
361
682
|
// Connect via stdio
|
|
362
683
|
const transport = new StdioServerTransport();
|
|
363
684
|
await server.connect(transport);
|
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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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "engram-tools",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Shared memory for AI coding agents. Store, recall, and learn across tools, sessions, and teams.",
|
|
5
5
|
"type": "module",
|
|
6
|
+
"homepage": "https://engram.tools",
|
|
6
7
|
"main": "dist/index.js",
|
|
7
8
|
"bin": {
|
|
8
9
|
"engram-tools": "dist/index.js"
|
|
@@ -24,14 +25,25 @@
|
|
|
24
25
|
"db:migrate": "prisma migrate dev",
|
|
25
26
|
"db:seed": "tsx prisma/seed.ts",
|
|
26
27
|
"db:setup": "prisma db push && tsx prisma/seed.ts",
|
|
27
|
-
"typecheck": "tsc --noEmit"
|
|
28
|
+
"typecheck": "tsc --noEmit",
|
|
29
|
+
"test:product": "tsx tests/product-smoke.ts",
|
|
30
|
+
"test:signup": "tsx tests/signup-otp.test.ts",
|
|
31
|
+
"test:setup": "tsx tests/setup-cli.test.ts",
|
|
32
|
+
"test:platform": "tsx tests/platform-setup.test.ts",
|
|
33
|
+
"test:visibility": "tsx tests/visibility.test.ts",
|
|
34
|
+
"test:parity": "tsx tests/api-parity.test.ts",
|
|
35
|
+
"test:all": "npm run build && npm run test:parity && npm run test:visibility && npm run test:product"
|
|
28
36
|
},
|
|
29
37
|
"keywords": [
|
|
30
38
|
"mcp",
|
|
39
|
+
"model-context-protocol",
|
|
31
40
|
"ai",
|
|
41
|
+
"ai-agents",
|
|
32
42
|
"memory",
|
|
33
43
|
"team",
|
|
34
|
-
"coding-agent"
|
|
44
|
+
"coding-agent",
|
|
45
|
+
"claude",
|
|
46
|
+
"cursor"
|
|
35
47
|
],
|
|
36
48
|
"author": "Emre Varol",
|
|
37
49
|
"license": "MIT",
|