@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/README.md
CHANGED
|
@@ -2,15 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
[中文文档](./docs/README.zh-CN.md)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
> _Mnemosyne, mother of all creation, stood against Lethe. Mnemo keeps only what still matters._
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Persistent, high-value long-term context for AI coding assistants via [MCP](https://modelcontextprotocol.io/).
|
|
8
|
+
|
|
9
|
+
Mnemo is not a transcript archive. It captures only the context that will still matter across future sessions — decisions, preferences, rules, and unresolved threads — and makes it available through semantic search. Think of it as durable long-term memory for your AI agent.
|
|
8
10
|
|
|
9
11
|
## Features
|
|
10
12
|
|
|
13
|
+
- **Memory types** — 8 semantic categories (preference, profile, goal, continuity, fact, decision, rule, experience) with save-time classification
|
|
14
|
+
- **Lifecycle hooks** — per-turn reminders injected via agent-native hooks (Claude Code, Codex, OpenClaw, OpenCode) so the agent actually remembers to use memory tools
|
|
11
15
|
- **Hybrid search** — find memories by meaning and keywords (vector + keyword, with automatic fallback)
|
|
12
16
|
- **Progressive disclosure** — search returns summaries; retrieve full content on demand
|
|
13
|
-
- **Multi-agent support** — works with OpenCode, Claude Code,
|
|
17
|
+
- **Multi-agent support** — works with OpenCode, Claude Code, OpenClaw, and Codex; auto-detects agent type via MCP protocol
|
|
14
18
|
- **Fully local** — no API calls, no cloud storage; all data stays on your machine
|
|
15
19
|
- **Auto-prompted** — injects instructions into your agent's config so it knows when to save and recall memories
|
|
16
20
|
- **Compression workflow** — atomic distillation of old notes into fewer, concise ones
|
|
@@ -101,13 +105,18 @@ mcporter config add mnemo --command mnemo --scope home
|
|
|
101
105
|
|
|
102
106
|
### Initialize
|
|
103
107
|
|
|
104
|
-
Once connected, call the `memory_setup` tool to
|
|
108
|
+
Once connected, call the `memory_setup` tool to initialize Mnemo:
|
|
105
109
|
|
|
106
110
|
```
|
|
107
111
|
> Use the memory_setup tool to initialize Mnemo
|
|
108
112
|
```
|
|
109
113
|
|
|
110
|
-
This
|
|
114
|
+
This does two things:
|
|
115
|
+
|
|
116
|
+
1. **Prompt injection** — writes memory management instructions into your agent's config file (e.g., `AGENTS.md` for OpenCode, `CLAUDE.md` for Claude Code)
|
|
117
|
+
2. **Hook installation** — installs lifecycle hooks that remind the agent to use memory tools at key moments (per-turn for Claude Code/Codex, session-start for OpenClaw, session lifecycle events for OpenCode)
|
|
118
|
+
|
|
119
|
+
Both steps are independent — if one fails, the other still succeeds. Agent type is auto-detected via MCP protocol, with file-based detection as fallback.
|
|
111
120
|
|
|
112
121
|
By default, `memory_setup()` initializes **global** memory shared across projects. If you want project-isolated memory, call `memory_setup` with `scope: "project"`.
|
|
113
122
|
|
|
@@ -187,13 +196,30 @@ Mnemo provides 7 MCP tools:
|
|
|
187
196
|
| Tool | Description |
|
|
188
197
|
| ----------------------- | ------------------------------------------------------------------- |
|
|
189
198
|
| `memory_setup` | Initialize Mnemo — inject usage instructions and set up storage |
|
|
190
|
-
| `memory_save` | Save a memory note with optional tags and source
|
|
199
|
+
| `memory_save` | Save a memory note with type, optional tags, and source |
|
|
191
200
|
| `memory_search` | Hybrid search across memories; returns summaries (supports filters) |
|
|
192
201
|
| `memory_get` | Retrieve full content of specific notes by ID |
|
|
193
202
|
| `memory_compress` | List all notes for review/distillation |
|
|
194
203
|
| `memory_compress_apply` | Atomically save distilled notes and delete originals |
|
|
195
204
|
| `memory_delete` | Delete notes by ID |
|
|
196
205
|
|
|
206
|
+
## Memory Model
|
|
207
|
+
|
|
208
|
+
Every memory note is classified into one of 8 types before saving:
|
|
209
|
+
|
|
210
|
+
| Type | Purpose | Example |
|
|
211
|
+
| ------------ | ----------------------------------------------- | ----------------------------------------------- |
|
|
212
|
+
| `preference` | User preferences and collaboration habits | "Prefers 4-space indentation, single quotes" |
|
|
213
|
+
| `profile` | Stable background about user, project, or topic | "Project uses Next.js 14 with App Router" |
|
|
214
|
+
| `goal` | Long-term directions and objectives | "Migrate from REST to GraphQL by Q3" |
|
|
215
|
+
| `continuity` | Unresolved threads to resume later | "Auth module: left off at refresh token logic" |
|
|
216
|
+
| `fact` | Stable objective information | "Production DB is on PostgreSQL 16" |
|
|
217
|
+
| `decision` | Confirmed choices from a discussion | "Chose Prisma over Drizzle for type safety" |
|
|
218
|
+
| `rule` | Reusable conventions and agreements | "All API errors return { code, message } shape" |
|
|
219
|
+
| `experience` | Validated, reusable lessons (high bar) | "Batch DB writes cut migration time by 10x" |
|
|
220
|
+
|
|
221
|
+
A memory must meet at least 2 of 3 criteria to be worth saving: (1) useful across future sessions, (2) affects future work, (3) would require re-alignment if forgotten.
|
|
222
|
+
|
|
197
223
|
## How It Works
|
|
198
224
|
|
|
199
225
|
### Storage
|
package/build/core/config.d.ts
CHANGED
|
@@ -3,7 +3,18 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export declare const AGENT_TYPES: readonly ["opencode", "claude-code", "openclaw", "codex"];
|
|
5
5
|
export type AgentType = (typeof AGENT_TYPES)[number];
|
|
6
|
+
/**
|
|
7
|
+
* Map from MCP clientInfo.name to AgentType.
|
|
8
|
+
* Used for protocol-level agent identification during the initialize handshake.
|
|
9
|
+
*/
|
|
10
|
+
export declare const CLIENT_NAME_MAP: Record<string, AgentType>;
|
|
6
11
|
export type StorageScope = 'global' | 'project';
|
|
12
|
+
/**
|
|
13
|
+
* Memory type categories for the minimal constraint mechanism.
|
|
14
|
+
* Each memory should be classified into one of these types before saving.
|
|
15
|
+
*/
|
|
16
|
+
export declare const MEMORY_TYPES: readonly ["preference", "profile", "goal", "continuity", "fact", "decision", "rule", "experience"];
|
|
17
|
+
export type MemoryType = (typeof MEMORY_TYPES)[number];
|
|
7
18
|
export interface StorageContext {
|
|
8
19
|
scope: StorageScope;
|
|
9
20
|
dataDir: string;
|
|
@@ -68,6 +79,7 @@ export interface NoteMeta {
|
|
|
68
79
|
updated: string;
|
|
69
80
|
tags: string[];
|
|
70
81
|
source: string;
|
|
82
|
+
type?: MemoryType;
|
|
71
83
|
}
|
|
72
84
|
/**
|
|
73
85
|
* Memory note (metadata + content)
|
package/build/core/config.js
CHANGED
|
@@ -5,6 +5,30 @@ import fs from 'node:fs/promises';
|
|
|
5
5
|
* Supported agent tool types
|
|
6
6
|
*/
|
|
7
7
|
export const AGENT_TYPES = ['opencode', 'claude-code', 'openclaw', 'codex'];
|
|
8
|
+
/**
|
|
9
|
+
* Map from MCP clientInfo.name to AgentType.
|
|
10
|
+
* Used for protocol-level agent identification during the initialize handshake.
|
|
11
|
+
*/
|
|
12
|
+
export const CLIENT_NAME_MAP = {
|
|
13
|
+
opencode: 'opencode',
|
|
14
|
+
'claude-code': 'claude-code',
|
|
15
|
+
'openclaw-acp-client': 'openclaw',
|
|
16
|
+
'codex-mcp-client': 'codex',
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Memory type categories for the minimal constraint mechanism.
|
|
20
|
+
* Each memory should be classified into one of these types before saving.
|
|
21
|
+
*/
|
|
22
|
+
export const MEMORY_TYPES = [
|
|
23
|
+
'preference',
|
|
24
|
+
'profile',
|
|
25
|
+
'goal',
|
|
26
|
+
'continuity',
|
|
27
|
+
'fact',
|
|
28
|
+
'decision',
|
|
29
|
+
'rule',
|
|
30
|
+
'experience',
|
|
31
|
+
];
|
|
8
32
|
/**
|
|
9
33
|
* Get platform-appropriate data directory for Mnemo.
|
|
10
34
|
*
|
package/build/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
package/build/core/embedding.js
CHANGED
|
@@ -81,6 +81,7 @@ export async function indexNote(note) {
|
|
|
81
81
|
tags: note.meta.tags.join(','),
|
|
82
82
|
source: note.meta.source,
|
|
83
83
|
created: note.meta.created,
|
|
84
|
+
type: note.meta.type || '',
|
|
84
85
|
},
|
|
85
86
|
});
|
|
86
87
|
}
|
|
@@ -158,6 +159,7 @@ function mergeResults(vectorResults, keywordResults, vectorWeight = 0.7, textWei
|
|
|
158
159
|
tags: kr.note.meta.tags.join(','),
|
|
159
160
|
source: kr.note.meta.source,
|
|
160
161
|
created: kr.note.meta.created,
|
|
162
|
+
type: kr.note.meta.type || '',
|
|
161
163
|
});
|
|
162
164
|
}
|
|
163
165
|
}
|
|
@@ -184,6 +186,7 @@ export async function searchNotes(query, topK = 5, sourceFilter) {
|
|
|
184
186
|
tags: r.item.metadata.tags,
|
|
185
187
|
source: r.item.metadata.source,
|
|
186
188
|
created: r.item.metadata.created,
|
|
189
|
+
type: r.item.metadata.type || '',
|
|
187
190
|
}));
|
|
188
191
|
}
|
|
189
192
|
// Keyword search
|
|
@@ -202,6 +205,7 @@ export async function searchNotes(query, topK = 5, sourceFilter) {
|
|
|
202
205
|
tags: kr.note.meta.tags.join(','),
|
|
203
206
|
source: kr.note.meta.source,
|
|
204
207
|
created: kr.note.meta.created,
|
|
208
|
+
type: kr.note.meta.type || '',
|
|
205
209
|
}));
|
|
206
210
|
}
|
|
207
211
|
const merged = mergeResults(vectorResults, keywordResults);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedding.js","sourceRoot":"","sources":["../../src/core/embedding.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"embedding.js","sourceRoot":"","sources":["../../src/core/embedding.ts"],"names":[],"mappings":"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"}
|
package/build/core/notes.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Note } from './config.js';
|
|
1
|
+
import { type Note, type MemoryType } from './config.js';
|
|
2
2
|
/**
|
|
3
3
|
* Parse a note markdown file into Note object
|
|
4
4
|
*/
|
|
@@ -10,7 +10,7 @@ export declare function serializeNote(note: Note): string;
|
|
|
10
10
|
/**
|
|
11
11
|
* Save a new note to disk and return it
|
|
12
12
|
*/
|
|
13
|
-
export declare function saveNote(content: string, tags?: string[], source?: string): Promise<Note>;
|
|
13
|
+
export declare function saveNote(content: string, tags?: string[], source?: string, type?: MemoryType): Promise<Note>;
|
|
14
14
|
/**
|
|
15
15
|
* Read a single note by ID
|
|
16
16
|
*/
|
package/build/core/notes.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import crypto from 'node:crypto';
|
|
4
|
-
import { ensureDir, resolveStorageContext } from './config.js';
|
|
4
|
+
import { ensureDir, resolveStorageContext, MEMORY_TYPES } from './config.js';
|
|
5
5
|
/**
|
|
6
6
|
* Generate a timestamp-based unique ID.
|
|
7
7
|
* Format: YYYYMMDD-HHmmss-xxxx (4-char random suffix to avoid same-second collisions)
|
|
@@ -50,6 +50,11 @@ export function parseNote(raw) {
|
|
|
50
50
|
case 'source':
|
|
51
51
|
meta.source = value;
|
|
52
52
|
break;
|
|
53
|
+
case 'type':
|
|
54
|
+
if (MEMORY_TYPES.includes(value)) {
|
|
55
|
+
meta.type = value;
|
|
56
|
+
}
|
|
57
|
+
break;
|
|
53
58
|
case 'tags':
|
|
54
59
|
meta.tags = value
|
|
55
60
|
.replace(/^\[/, '')
|
|
@@ -69,6 +74,7 @@ export function parseNote(raw) {
|
|
|
69
74
|
updated: meta.updated || now(),
|
|
70
75
|
tags: meta.tags || [],
|
|
71
76
|
source: meta.source || 'unknown',
|
|
77
|
+
...(meta.type ? { type: meta.type } : {}),
|
|
72
78
|
},
|
|
73
79
|
content,
|
|
74
80
|
};
|
|
@@ -84,16 +90,17 @@ export function serializeNote(note) {
|
|
|
84
90
|
`updated: ${note.meta.updated}`,
|
|
85
91
|
`tags: [${note.meta.tags.join(', ')}]`,
|
|
86
92
|
`source: ${note.meta.source}`,
|
|
87
|
-
'---',
|
|
88
|
-
'',
|
|
89
|
-
note.content,
|
|
90
93
|
];
|
|
94
|
+
if (note.meta.type) {
|
|
95
|
+
lines.push(`type: ${note.meta.type}`);
|
|
96
|
+
}
|
|
97
|
+
lines.push('---', '', note.content);
|
|
91
98
|
return lines.join('\n') + '\n';
|
|
92
99
|
}
|
|
93
100
|
/**
|
|
94
101
|
* Save a new note to disk and return it
|
|
95
102
|
*/
|
|
96
|
-
export async function saveNote(content, tags = [], source = 'unknown') {
|
|
103
|
+
export async function saveNote(content, tags = [], source = 'unknown', type) {
|
|
97
104
|
const { notesDir } = await resolveStorageContext();
|
|
98
105
|
await ensureDir(notesDir);
|
|
99
106
|
const id = generateId();
|
|
@@ -105,6 +112,7 @@ export async function saveNote(content, tags = [], source = 'unknown') {
|
|
|
105
112
|
updated: timestamp,
|
|
106
113
|
tags,
|
|
107
114
|
source,
|
|
115
|
+
...(type ? { type } : {}),
|
|
108
116
|
},
|
|
109
117
|
content,
|
|
110
118
|
};
|
package/build/core/notes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notes.js","sourceRoot":"","sources":["../../src/core/notes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"notes.js","sourceRoot":"","sources":["../../src/core/notes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type AgentType } from '../core/config.js';
|
|
2
|
+
export interface HookInstallResult {
|
|
3
|
+
success: boolean;
|
|
4
|
+
hookDir: string;
|
|
5
|
+
filesWritten: string[];
|
|
6
|
+
settingsUpdated: boolean;
|
|
7
|
+
/** Non-fatal messages (e.g. manual steps needed) */
|
|
8
|
+
notes: string[];
|
|
9
|
+
/** Error message if success is false */
|
|
10
|
+
error?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Install hook scripts/plugins for the given agent type.
|
|
14
|
+
* This is independent from prompt injection — either can succeed/fail without affecting the other.
|
|
15
|
+
*/
|
|
16
|
+
export declare function installHooks(agentType: AgentType): Promise<HookInstallResult>;
|
|
17
|
+
/**
|
|
18
|
+
* Check if hooks are already installed for the given agent type.
|
|
19
|
+
*/
|
|
20
|
+
export declare function hasHooksInstalled(agentType: AgentType): Promise<boolean>;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import { ensureDir } from '../core/config.js';
|
|
5
|
+
import { HOOK_CONFIGS } from './reminders.js';
|
|
6
|
+
/**
|
|
7
|
+
* Install hook scripts/plugins for the given agent type.
|
|
8
|
+
* This is independent from prompt injection — either can succeed/fail without affecting the other.
|
|
9
|
+
*/
|
|
10
|
+
export async function installHooks(agentType) {
|
|
11
|
+
const home = os.homedir();
|
|
12
|
+
const config = HOOK_CONFIGS[agentType];
|
|
13
|
+
const hookDir = config.getHookDir(home);
|
|
14
|
+
const result = {
|
|
15
|
+
success: false,
|
|
16
|
+
hookDir,
|
|
17
|
+
filesWritten: [],
|
|
18
|
+
settingsUpdated: false,
|
|
19
|
+
notes: [],
|
|
20
|
+
};
|
|
21
|
+
try {
|
|
22
|
+
// Step 1: Generate hook files to target directory
|
|
23
|
+
await ensureDir(hookDir);
|
|
24
|
+
for (const [fileName, content] of Object.entries(config.files)) {
|
|
25
|
+
const filePath = path.join(hookDir, fileName);
|
|
26
|
+
await fs.writeFile(filePath, content, 'utf-8');
|
|
27
|
+
// Make shell scripts executable
|
|
28
|
+
if (fileName.endsWith('.sh')) {
|
|
29
|
+
await fs.chmod(filePath, 0o755);
|
|
30
|
+
}
|
|
31
|
+
result.filesWritten.push(filePath);
|
|
32
|
+
}
|
|
33
|
+
// Step 2: For Claude Code / Codex, merge hook config into settings.json
|
|
34
|
+
if (config.getSettingsPath) {
|
|
35
|
+
const settingsPath = config.getSettingsPath(home);
|
|
36
|
+
const activatorPath = path.join(hookDir, 'mnemo-activator.sh');
|
|
37
|
+
await mergeHookSettings(settingsPath, activatorPath);
|
|
38
|
+
result.settingsUpdated = true;
|
|
39
|
+
}
|
|
40
|
+
// Step 3: Agent-specific post-install notes
|
|
41
|
+
if (agentType === 'openclaw') {
|
|
42
|
+
result.notes.push('Run `openclaw hooks enable mnemo` to activate the hook.');
|
|
43
|
+
}
|
|
44
|
+
result.success = true;
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
result.error = err instanceof Error ? err.message : String(err);
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Merge Mnemo hook configuration into a Claude Code / Codex settings.json.
|
|
53
|
+
* Reads existing settings, adds/updates the Mnemo hook entry, writes back.
|
|
54
|
+
* Does not overwrite other existing hooks.
|
|
55
|
+
*/
|
|
56
|
+
async function mergeHookSettings(settingsPath, activatorPath) {
|
|
57
|
+
// Read existing settings or start fresh
|
|
58
|
+
let settings = {};
|
|
59
|
+
try {
|
|
60
|
+
const raw = await fs.readFile(settingsPath, 'utf-8');
|
|
61
|
+
settings = JSON.parse(raw);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// File doesn't exist or is invalid JSON — start fresh
|
|
65
|
+
}
|
|
66
|
+
// Ensure hooks object exists
|
|
67
|
+
if (!settings.hooks || typeof settings.hooks !== 'object') {
|
|
68
|
+
settings.hooks = {};
|
|
69
|
+
}
|
|
70
|
+
const hooks = settings.hooks;
|
|
71
|
+
// Build the Mnemo hook entry
|
|
72
|
+
const mnemoHookEntry = {
|
|
73
|
+
matcher: '',
|
|
74
|
+
hooks: [
|
|
75
|
+
{
|
|
76
|
+
type: 'command',
|
|
77
|
+
command: activatorPath,
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
};
|
|
81
|
+
// Merge into UserPromptSubmit
|
|
82
|
+
if (!Array.isArray(hooks.UserPromptSubmit)) {
|
|
83
|
+
hooks.UserPromptSubmit = [];
|
|
84
|
+
}
|
|
85
|
+
// Remove existing Mnemo entries (identified by command path containing 'mnemo')
|
|
86
|
+
hooks.UserPromptSubmit = hooks.UserPromptSubmit.filter((entry) => {
|
|
87
|
+
if (!entry || typeof entry !== 'object')
|
|
88
|
+
return true;
|
|
89
|
+
const e = entry;
|
|
90
|
+
if (!Array.isArray(e.hooks))
|
|
91
|
+
return true;
|
|
92
|
+
return !e.hooks.some((h) => {
|
|
93
|
+
if (!h || typeof h !== 'object')
|
|
94
|
+
return false;
|
|
95
|
+
const hook = h;
|
|
96
|
+
return typeof hook.command === 'string' && hook.command.includes('mnemo');
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
// Add the new Mnemo entry
|
|
100
|
+
hooks.UserPromptSubmit.push(mnemoHookEntry);
|
|
101
|
+
// Write back
|
|
102
|
+
await ensureDir(path.dirname(settingsPath));
|
|
103
|
+
await fs.writeFile(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Check if hooks are already installed for the given agent type.
|
|
107
|
+
*/
|
|
108
|
+
export async function hasHooksInstalled(agentType) {
|
|
109
|
+
const home = os.homedir();
|
|
110
|
+
const config = HOOK_CONFIGS[agentType];
|
|
111
|
+
const hookDir = config.getHookDir(home);
|
|
112
|
+
try {
|
|
113
|
+
// Check if at least one hook file exists
|
|
114
|
+
for (const fileName of Object.keys(config.files)) {
|
|
115
|
+
await fs.access(path.join(hookDir, fileName));
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// Not installed
|
|
121
|
+
}
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/hooks/installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAa9C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,SAAoB;IACnD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAExC,MAAM,MAAM,GAAsB;QAC9B,OAAO,EAAE,KAAK;QACd,OAAO;QACP,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,KAAK;QACtB,KAAK,EAAE,EAAE;KACZ,CAAC;IAEF,IAAI,CAAC;QACD,kDAAkD;QAClD,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QAEzB,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC9C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAE/C,gCAAgC;YAChC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACpC,CAAC;YAED,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QAED,wEAAwE;QACxE,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;YAC/D,MAAM,iBAAiB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YACrD,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;QAClC,CAAC;QAED,4CAA4C;QAC5C,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,iBAAiB,CAAC,YAAoB,EAAE,aAAqB;IACxE,wCAAwC;IACxC,IAAI,QAAQ,GAA4B,EAAE,CAAC;IAC3C,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACrD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACL,sDAAsD;IAC1D,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxD,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;IACxB,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAkC,CAAC;IAE1D,6BAA6B;IAC7B,MAAM,cAAc,GAAG;QACnB,OAAO,EAAE,EAAE;QACX,KAAK,EAAE;YACH;gBACI,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,aAAa;aACzB;SACJ;KACJ,CAAC;IAEF,8BAA8B;IAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACzC,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC;IAChC,CAAC;IAED,gFAAgF;IAChF,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACrD,MAAM,CAAC,GAAG,KAAgC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE;YAChC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAC9C,MAAM,IAAI,GAAG,CAA4B,CAAC;YAC1C,OAAO,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAE5C,aAAa;IACb,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACxF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAAoB;IACxD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAExC,IAAI,CAAC;QACD,yCAAyC;QACzC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,gBAAgB;IACpB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type AgentType } from '../core/config.js';
|
|
2
|
+
/**
|
|
3
|
+
* Core reminder texts used across all agents.
|
|
4
|
+
* Keep each reminder minimal (~50 tokens) to avoid attention overhead.
|
|
5
|
+
*/
|
|
6
|
+
export declare const REMINDERS: {
|
|
7
|
+
/** Per-turn self-check reminder (UserPromptSubmit equivalent) */
|
|
8
|
+
readonly perTurn: "<mnemo-reminder>\nAfter this task, briefly self-check:\n- Did a durable preference, decision, or rule emerge? → memory_save\n- Is there an unresolved thread to resume later? → memory_save (continuity)\n- Did context window reset? → memory_compress\nIf nothing qualifies, skip. Don't force saves.\n</mnemo-reminder>";
|
|
9
|
+
/** Session start reminder */
|
|
10
|
+
readonly sessionStart: "<mnemo-session-start>\nSearch memory for relevant context before starting work.\nCall memory_search with a query based on the user's message.\n</mnemo-session-start>";
|
|
11
|
+
/** Context compaction reminder */
|
|
12
|
+
readonly compaction: "<mnemo-compaction>\nContext is being compacted. Before losing context:\n1. Save any important unresolved threads as continuity memories (memory_save)\n2. Call memory_compress if many notes have accumulated\n</mnemo-compaction>";
|
|
13
|
+
/** Session end / idle self-check */
|
|
14
|
+
readonly sessionEnd: "<mnemo-session-end>\nSession ending. Quick self-check:\n- Did a durable conclusion, preference, or decision emerge? → memory_save\n- Was an important thread left unresolved? → memory_save (continuity)\n- Did I learn something reusable that would be lost without saving? → memory_save (experience)\n</mnemo-session-end>";
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Shell script for Claude Code / Codex UserPromptSubmit hook.
|
|
18
|
+
* Outputs the per-turn reminder to stdout so the agent sees it as context.
|
|
19
|
+
*/
|
|
20
|
+
export declare const ACTIVATOR_SCRIPT: string;
|
|
21
|
+
/**
|
|
22
|
+
* OpenClaw HOOK.md manifest for the mnemo hook.
|
|
23
|
+
*/
|
|
24
|
+
export declare const OPENCLAW_HOOK_MD = "---\nname: mnemo\ndescription: \"Injects memory management reminder during agent bootstrap\"\nmetadata: {\"openclaw\":{\"emoji\":\"\\ud83e\\udde0\",\"events\":[\"agent:bootstrap\"]}}\n---\n";
|
|
25
|
+
/**
|
|
26
|
+
* OpenClaw handler.ts for agent:bootstrap event.
|
|
27
|
+
* Injects a virtual MNEMO_REMINDER.md file into the bootstrap context.
|
|
28
|
+
*/
|
|
29
|
+
export declare const OPENCLAW_HANDLER_TS: string;
|
|
30
|
+
/**
|
|
31
|
+
* OpenCode plugin for mnemo memory reminders.
|
|
32
|
+
* Subscribes to session lifecycle events.
|
|
33
|
+
*/
|
|
34
|
+
export declare const OPENCODE_PLUGIN_TS: string;
|
|
35
|
+
interface HookScriptConfig {
|
|
36
|
+
/** Directory where hook files are installed */
|
|
37
|
+
getHookDir: (home: string) => string;
|
|
38
|
+
/** Files to generate: filename → content */
|
|
39
|
+
files: Record<string, string>;
|
|
40
|
+
/**
|
|
41
|
+
* For Claude Code / Codex: path to settings.json that needs hook config merged.
|
|
42
|
+
* For OpenClaw / OpenCode: null (no settings merge needed).
|
|
43
|
+
*/
|
|
44
|
+
getSettingsPath?: (home: string) => string;
|
|
45
|
+
}
|
|
46
|
+
export declare const HOOK_CONFIGS: Record<AgentType, HookScriptConfig>;
|
|
47
|
+
export {};
|