@s_s/mnemo 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -6
- package/build/core/config.d.ts +12 -0
- package/build/core/config.js +24 -0
- package/build/core/config.js.map +1 -1
- package/build/core/embedding.d.ts +1 -0
- package/build/core/embedding.js +4 -0
- package/build/core/embedding.js.map +1 -1
- package/build/core/notes.d.ts +2 -2
- package/build/core/notes.js +13 -5
- package/build/core/notes.js.map +1 -1
- package/build/hooks/installer.d.ts +20 -0
- package/build/hooks/installer.js +124 -0
- package/build/hooks/installer.js.map +1 -0
- package/build/hooks/reminders.d.ts +47 -0
- package/build/hooks/reminders.js +191 -0
- package/build/hooks/reminders.js.map +1 -0
- package/build/index.js +0 -0
- package/build/prompts/templates.js +82 -12
- package/build/prompts/templates.js.map +1 -1
- package/build/tools/compress.js +5 -3
- package/build/tools/compress.js.map +1 -1
- package/build/tools/get.js +2 -0
- package/build/tools/get.js.map +1 -1
- package/build/tools/save.js +17 -6
- package/build/tools/save.js.map +1 -1
- package/build/tools/search.js +16 -4
- package/build/tools/search.js.map +1 -1
- package/build/tools/setup.js +70 -32
- package/build/tools/setup.js.map +1 -1
- package/package.json +1 -1
package/build/tools/setup.js
CHANGED
|
@@ -4,14 +4,26 @@ import path from 'node:path';
|
|
|
4
4
|
import { execFile } from 'node:child_process';
|
|
5
5
|
import { promisify } from 'node:util';
|
|
6
6
|
import { z } from 'zod';
|
|
7
|
-
import { AGENT_TYPES, writeStorageConfig } from '../core/config.js';
|
|
7
|
+
import { AGENT_TYPES, CLIENT_NAME_MAP, writeStorageConfig } from '../core/config.js';
|
|
8
8
|
import { getAgentConfig, injectPrompt, hasPromptInjected } from '../prompts/templates.js';
|
|
9
|
+
import { installHooks } from '../hooks/installer.js';
|
|
9
10
|
const execFileAsync = promisify(execFile);
|
|
10
11
|
const PROJECT_ROOT_MARKERS = ['.git', 'package.json', 'pyproject.toml', 'Cargo.toml', 'go.mod'];
|
|
11
12
|
/**
|
|
12
|
-
* Detect
|
|
13
|
+
* Detect agent type from MCP protocol clientInfo.
|
|
14
|
+
* The initialize handshake includes clientInfo.name which authoritatively identifies the client.
|
|
13
15
|
*/
|
|
14
|
-
|
|
16
|
+
function detectAgentTypeFromClient(server) {
|
|
17
|
+
const clientInfo = server.server.getClientVersion();
|
|
18
|
+
if (!clientInfo?.name)
|
|
19
|
+
return null;
|
|
20
|
+
return CLIENT_NAME_MAP[clientInfo.name] ?? null;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Detect which agent tool is being used by checking config file existence.
|
|
24
|
+
* Used as fallback when MCP protocol-level detection is not available.
|
|
25
|
+
*/
|
|
26
|
+
async function detectAgentTypeFromFiles(cwd) {
|
|
15
27
|
const home = os.homedir();
|
|
16
28
|
// Check for agent-specific config files
|
|
17
29
|
const checks = [
|
|
@@ -116,22 +128,28 @@ export function registerSetupTool(server) {
|
|
|
116
128
|
}, async ({ agent_type, scope, project_root }) => {
|
|
117
129
|
const cwd = process.cwd();
|
|
118
130
|
const home = os.homedir();
|
|
119
|
-
// Determine agent type
|
|
131
|
+
// Determine agent type: explicit param > MCP protocol > file-based detection
|
|
120
132
|
let agentType = agent_type;
|
|
121
133
|
if (!agentType) {
|
|
122
|
-
const
|
|
123
|
-
if (
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
134
|
+
const fromClient = detectAgentTypeFromClient(server);
|
|
135
|
+
if (fromClient) {
|
|
136
|
+
agentType = fromClient;
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
const fromFiles = await detectAgentTypeFromFiles(cwd);
|
|
140
|
+
if (!fromFiles) {
|
|
141
|
+
return {
|
|
142
|
+
content: [
|
|
143
|
+
{
|
|
144
|
+
type: 'text',
|
|
145
|
+
text: `Could not auto-detect agent type. Please specify agent_type parameter. Valid values: ${AGENT_TYPES.join(', ')}`,
|
|
146
|
+
},
|
|
147
|
+
],
|
|
148
|
+
isError: true,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
agentType = fromFiles;
|
|
133
152
|
}
|
|
134
|
-
agentType = detected;
|
|
135
153
|
}
|
|
136
154
|
const config = getAgentConfig(agentType);
|
|
137
155
|
const projectRoot = scope === 'project' ? await resolveProjectRoot(cwd, project_root) : null;
|
|
@@ -146,31 +164,51 @@ export function registerSetupTool(server) {
|
|
|
146
164
|
catch {
|
|
147
165
|
// File doesn't exist yet, that's fine
|
|
148
166
|
}
|
|
149
|
-
//
|
|
150
|
-
|
|
151
|
-
// Update in place
|
|
152
|
-
const updated = injectPrompt(existingContent, agentType);
|
|
153
|
-
await fs.writeFile(targetPath, updated, 'utf-8');
|
|
154
|
-
return {
|
|
155
|
-
content: [
|
|
156
|
-
{
|
|
157
|
-
type: 'text',
|
|
158
|
-
text: `Mnemo memory instructions updated successfully.\n\nAgent type: ${agentType}\nPrompt scope: ${scope}\nPrompt file: ${targetPath}\nStorage scope: ${scope}\nStorage path: ${storagePath}`,
|
|
159
|
-
},
|
|
160
|
-
],
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
// Inject prompt
|
|
167
|
+
// --- Step 1: Prompt injection ---
|
|
168
|
+
const isUpdate = hasPromptInjected(existingContent);
|
|
164
169
|
const updated = injectPrompt(existingContent, agentType);
|
|
165
170
|
// Ensure parent directory exists
|
|
166
171
|
const dir = targetPath.substring(0, targetPath.lastIndexOf('/'));
|
|
167
172
|
await fs.mkdir(dir, { recursive: true });
|
|
168
173
|
await fs.writeFile(targetPath, updated, 'utf-8');
|
|
174
|
+
const promptStatus = isUpdate ? 'updated' : 'installed';
|
|
175
|
+
// --- Step 2: Hook installation (independent from prompt) ---
|
|
176
|
+
const hookResult = await installHooks(agentType);
|
|
177
|
+
// --- Build report ---
|
|
178
|
+
const lines = [
|
|
179
|
+
isUpdate
|
|
180
|
+
? 'Mnemo memory instructions updated successfully.'
|
|
181
|
+
: 'Mnemo memory management initialized successfully.',
|
|
182
|
+
'',
|
|
183
|
+
`Agent type: ${agentType}`,
|
|
184
|
+
`Prompt: ${promptStatus} → ${targetPath}`,
|
|
185
|
+
`Storage scope: ${scope}`,
|
|
186
|
+
`Storage path: ${storagePath}`,
|
|
187
|
+
];
|
|
188
|
+
if (hookResult.success) {
|
|
189
|
+
lines.push('');
|
|
190
|
+
lines.push(`Hooks: installed → ${hookResult.hookDir}`);
|
|
191
|
+
if (hookResult.settingsUpdated) {
|
|
192
|
+
lines.push('Hook settings: merged into agent settings.json');
|
|
193
|
+
}
|
|
194
|
+
for (const note of hookResult.notes) {
|
|
195
|
+
lines.push(`Note: ${note}`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
lines.push('');
|
|
200
|
+
lines.push(`Hooks: failed — ${hookResult.error}`);
|
|
201
|
+
lines.push('Prompt injection succeeded independently. Hooks can be retried later.');
|
|
202
|
+
}
|
|
203
|
+
if (!isUpdate) {
|
|
204
|
+
lines.push('');
|
|
205
|
+
lines.push('Mnemo is now ready to use.');
|
|
206
|
+
}
|
|
169
207
|
return {
|
|
170
208
|
content: [
|
|
171
209
|
{
|
|
172
210
|
type: 'text',
|
|
173
|
-
text:
|
|
211
|
+
text: lines.join('\n'),
|
|
174
212
|
},
|
|
175
213
|
],
|
|
176
214
|
};
|
package/build/tools/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/tools/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAkB,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/tools/setup.ts"],"names":[],"mappings":"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"}
|