@mnemopay/sdk 0.7.2 → 0.7.4

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.
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * npx @mnemopay/sdk setup
4
+ *
5
+ * Auto-configures Claude Code hooks for MnemoPay session lifecycle:
6
+ * - Stop hook: blocks exit once, prompts Claude to save session summary
7
+ * - UserPromptSubmit hook: injects recall reminder on each message
8
+ *
9
+ * Works on Windows, macOS, and Linux.
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG"}
@@ -0,0 +1,241 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * npx @mnemopay/sdk setup
5
+ *
6
+ * Auto-configures Claude Code hooks for MnemoPay session lifecycle:
7
+ * - Stop hook: blocks exit once, prompts Claude to save session summary
8
+ * - UserPromptSubmit hook: injects recall reminder on each message
9
+ *
10
+ * Works on Windows, macOS, and Linux.
11
+ */
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ const fs_1 = __importDefault(require("fs"));
17
+ const path_1 = __importDefault(require("path"));
18
+ const os_1 = __importDefault(require("os"));
19
+ const AUTO_CAPTURE_HOOK_CONTENT = `#!/bin/bash
20
+ # MnemoPay auto-capture hook — PostToolUse
21
+ # Detects high-signal tool outcomes and instructs Claude to save them to memory.
22
+ INPUT=$(cat)
23
+ TOOL=$(echo "$INPUT" | grep -o '"tool_name":"[^"]*"' | grep -o '[^"]*"$' | tr -d '"' 2>/dev/null)
24
+ COMMAND=$(echo "$INPUT" | grep -o '"command":"[^"]*"' | head -1 | grep -o '"[^"]*"$' | tr -d '"' 2>/dev/null)
25
+ EXIT_CODE=$(echo "$INPUT" | grep -o '"exit_code":[0-9]*' | grep -o '[0-9]*' 2>/dev/null)
26
+
27
+ MSG=""
28
+
29
+ # git commit — always worth remembering
30
+ if echo "$COMMAND" | grep -q "git commit"; then
31
+ MSG="A git commit was just made. Call mcp__mnemopay__remember with what was committed and why. Importance: 0.7, tags: [commit, progress]."
32
+ fi
33
+
34
+ # git push — milestone
35
+ if echo "$COMMAND" | grep -q "git push"; then
36
+ MSG="Code was just pushed to remote. Call mcp__mnemopay__remember with what shipped. Importance: 0.75, tags: [shipped, milestone]."
37
+ fi
38
+
39
+ # npm publish — release
40
+ if echo "$COMMAND" | grep -q "npm publish"; then
41
+ MSG="A package was just published to npm. Call mcp__mnemopay__remember with the version and what changed. Importance: 0.8, tags: [release, shipped]."
42
+ fi
43
+
44
+ # test run completed successfully
45
+ if [ "$TOOL" = "Bash" ] && echo "$COMMAND" | grep -qE "vitest|jest|pytest|npm test|npm run test"; then
46
+ if [ "$EXIT_CODE" = "0" ]; then
47
+ MSG="Tests just passed. Call mcp__mnemopay__remember with what was tested and that it passed. Importance: 0.6, tags: [tests, progress]."
48
+ fi
49
+ fi
50
+
51
+ # File written — significant new file
52
+ if [ "$TOOL" = "Write" ]; then
53
+ FILE=$(echo "$INPUT" | grep -o '"file_path":"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' 2>/dev/null)
54
+ if echo "$FILE" | grep -qvE "node_modules|dist|.git|tmp|temp"; then
55
+ MSG="A new file was just written: $FILE. If this is significant (new feature, config, doc), call mcp__mnemopay__remember with what it does. Importance: 0.55, tags: [file, progress]."
56
+ fi
57
+ fi
58
+
59
+ if [ -n "$MSG" ]; then
60
+ printf '{"systemMessage":"%s"}\n' "$MSG"
61
+ else
62
+ printf '{}\n'
63
+ fi
64
+ `;
65
+ const STOP_HOOK_CONTENT = `#!/bin/bash
66
+ MARKER="$HOME/.claude/hooks/.mnemo-stop"
67
+
68
+ if [ ! -f "$MARKER" ]; then
69
+ touch "$MARKER"
70
+ printf '{"decision":"block","reason":"Before stopping: call mcp__mnemopay__remember with a concise summary of this session (what was accomplished, decisions made, follow-up needed). Use importance 0.85 and tags [\\"session-summary\\"]."}\n'
71
+ else
72
+ rm "$MARKER"
73
+ printf '{}\n'
74
+ fi
75
+ `;
76
+ const USER_PROMPT_HOOK_COMMAND = `bash -c "echo '{\\"systemMessage\\":\\"You have persistent memory via MnemoPay MCP. ` +
77
+ `If this is the start of a new topic or session, call mcp__mnemopay__recall to load relevant context. ` +
78
+ `Store any important new facts or decisions with mcp__mnemopay__remember.\\"}'"\n`.trimEnd();
79
+ function log(msg) {
80
+ process.stdout.write(msg + "\n");
81
+ }
82
+ function err(msg) {
83
+ process.stderr.write("✗ " + msg + "\n");
84
+ }
85
+ function claudeDir() {
86
+ return path_1.default.join(os_1.default.homedir(), ".claude");
87
+ }
88
+ function hooksDir() {
89
+ return path_1.default.join(claudeDir(), "hooks");
90
+ }
91
+ function settingsPath() {
92
+ return path_1.default.join(claudeDir(), "settings.json");
93
+ }
94
+ function stopHookPath() {
95
+ return path_1.default.join(hooksDir(), "stop-hook.sh");
96
+ }
97
+ function autoCaptureHookPath() {
98
+ return path_1.default.join(hooksDir(), "auto-capture-hook.sh");
99
+ }
100
+ function stopHookCommand() {
101
+ const p = stopHookPath().replace(/\\/g, "/");
102
+ return `bash ${p}`;
103
+ }
104
+ function autoCaptureHookCommand() {
105
+ const p = autoCaptureHookPath().replace(/\\/g, "/");
106
+ return `bash ${p}`;
107
+ }
108
+ function ensureDir(dir) {
109
+ if (!fs_1.default.existsSync(dir)) {
110
+ fs_1.default.mkdirSync(dir, { recursive: true });
111
+ log(` created ${dir}`);
112
+ }
113
+ }
114
+ function writeStopHook() {
115
+ const p = stopHookPath();
116
+ fs_1.default.writeFileSync(p, STOP_HOOK_CONTENT, { encoding: "utf8" });
117
+ if (process.platform !== "win32")
118
+ fs_1.default.chmodSync(p, 0o755);
119
+ log(` wrote ${p}`);
120
+ }
121
+ function writeAutoCaptureHook() {
122
+ const p = autoCaptureHookPath();
123
+ fs_1.default.writeFileSync(p, AUTO_CAPTURE_HOOK_CONTENT, { encoding: "utf8" });
124
+ if (process.platform !== "win32")
125
+ fs_1.default.chmodSync(p, 0o755);
126
+ log(` wrote ${p}`);
127
+ }
128
+ function readSettings() {
129
+ const p = settingsPath();
130
+ if (!fs_1.default.existsSync(p))
131
+ return {};
132
+ try {
133
+ return JSON.parse(fs_1.default.readFileSync(p, "utf8"));
134
+ }
135
+ catch {
136
+ err(`Could not parse ${p} — backing up and starting fresh`);
137
+ fs_1.default.copyFileSync(p, p + ".bak");
138
+ return {};
139
+ }
140
+ }
141
+ function hasHook(groups, matcher) {
142
+ if (!groups)
143
+ return false;
144
+ return groups.some((g) => g.matcher === matcher);
145
+ }
146
+ function injectHooks(settings) {
147
+ let changed = false;
148
+ if (!settings.hooks) {
149
+ settings.hooks = {};
150
+ changed = true;
151
+ }
152
+ // Stop hook
153
+ if (!hasHook(settings.hooks.Stop, "")) {
154
+ settings.hooks.Stop = [
155
+ ...(settings.hooks.Stop ?? []),
156
+ {
157
+ matcher: "",
158
+ hooks: [
159
+ {
160
+ type: "command",
161
+ command: stopHookCommand(),
162
+ timeout: 10000,
163
+ },
164
+ ],
165
+ },
166
+ ];
167
+ changed = true;
168
+ log(" injected Stop hook");
169
+ }
170
+ else {
171
+ log(" Stop hook already present — skipped");
172
+ }
173
+ // UserPromptSubmit hook
174
+ if (!hasHook(settings.hooks.UserPromptSubmit, "")) {
175
+ settings.hooks.UserPromptSubmit = [
176
+ ...(settings.hooks.UserPromptSubmit ?? []),
177
+ {
178
+ matcher: "",
179
+ hooks: [
180
+ {
181
+ type: "command",
182
+ command: USER_PROMPT_HOOK_COMMAND,
183
+ timeout: 5000,
184
+ },
185
+ ],
186
+ },
187
+ ];
188
+ changed = true;
189
+ log(" injected UserPromptSubmit hook");
190
+ }
191
+ else {
192
+ log(" UserPromptSubmit hook already present — skipped");
193
+ }
194
+ // PostToolUse auto-capture hook
195
+ if (!hasHook(settings.hooks.PostToolUse, "")) {
196
+ settings.hooks.PostToolUse = [
197
+ ...(settings.hooks.PostToolUse ?? []),
198
+ {
199
+ matcher: "",
200
+ hooks: [
201
+ {
202
+ type: "command",
203
+ command: autoCaptureHookCommand(),
204
+ timeout: 5000,
205
+ },
206
+ ],
207
+ },
208
+ ];
209
+ changed = true;
210
+ log(" injected PostToolUse auto-capture hook");
211
+ }
212
+ else {
213
+ log(" PostToolUse hook already present — skipped");
214
+ }
215
+ return { settings, changed };
216
+ }
217
+ function main() {
218
+ log("\nMnemoPay Claude Code Setup\n");
219
+ // 1. Ensure directories
220
+ ensureDir(claudeDir());
221
+ ensureDir(hooksDir());
222
+ // 2. Write hook scripts
223
+ writeStopHook();
224
+ writeAutoCaptureHook();
225
+ // 3. Read + patch settings.json
226
+ const raw = readSettings();
227
+ const { settings, changed } = injectHooks(raw);
228
+ if (changed) {
229
+ fs_1.default.writeFileSync(settingsPath(), JSON.stringify(settings, null, 2), "utf8");
230
+ log(` saved ${settingsPath()}`);
231
+ }
232
+ log("\nDone! Claude Code hooks are configured for MnemoPay.\n");
233
+ log("What happens now:");
234
+ log(" • On session end — Claude is prompted to save a session summary");
235
+ log(" • On each message — Claude is reminded to recall relevant memories");
236
+ log(" • After tool use — git commits, publishes, writes auto-trigger memory saves\n");
237
+ log("Make sure MnemoPay MCP is connected:");
238
+ log(" claude mcp add mnemopay -s user -- npx -y @mnemopay/sdk\n");
239
+ }
240
+ main();
241
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mnemopay/sdk",
3
- "version": "0.7.2",
3
+ "version": "0.7.4",
4
4
  "description": "Give any AI agent memory and a wallet in 5 lines. Unified SDK for Mnemosyne (cognitive memory) + AgentPay (escrow economics).",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -39,7 +39,8 @@
39
39
  }
40
40
  },
41
41
  "bin": {
42
- "mnemopay-mcp": "dist/mcp/server.js"
42
+ "mnemopay-mcp": "dist/mcp/server.js",
43
+ "mnemopay-setup": "dist/cli/setup.js"
43
44
  },
44
45
  "files": [
45
46
  "dist",