mnueron 0.3.0 → 0.5.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/dist/tools.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { importClaudeExport } from './import/claude.js';
2
2
  import { importOpenAIExport } from './import/openai.js';
3
+ import { probeClaudeCowork, importFromCoworkSession } from './import/claude_cowork.js';
3
4
  // Sentinel registry for callers that don't pass one (CLI commands, tests).
4
5
  const EMPTY_REGISTRY = {
5
6
  processors: [],
@@ -90,7 +91,10 @@ export const TOOL_DEFINITIONS = [
90
91
  name: 'memory_recall',
91
92
  description: 'Search saved memories by relevance. Returns PREVIEWS (first ~800 chars) plus full length and id for each match. ' +
92
93
  'Use memory_get(id) to fetch the complete text of a specific result. ' +
93
- 'Defaults to top 5 results. Search is hybrid (keyword + semantic), so the query can be a natural-language description.',
94
+ 'Defaults to top 5 results. Search is hybrid (keyword + semantic), so the query can be a natural-language description. ' +
95
+ 'AUTO-SURFACES RUNBOOKS: if the query matches any saved procedural memory trigger phrase ' +
96
+ '(e.g. "ship to vercel" → "Push mnueron changes to Vercel" runbook), those runbooks come back ' +
97
+ 'in a separate "procedurals" array alongside the memories. Use procedural_get(id) to fetch full step content.',
94
98
  inputSchema: {
95
99
  type: 'object',
96
100
  properties: {
@@ -176,6 +180,73 @@ export const TOOL_DEFINITIONS = [
176
180
  required: ['path'],
177
181
  },
178
182
  },
183
+ {
184
+ name: 'memory_import_cowork',
185
+ description: 'Import every Claude Cowork (desktop "local agent") session transcript on this machine into memory. Probes platform-specific roots (~/.claude/projects, %APPDATA%\\Claude\\local-agent-mode-sessions, and the Microsoft Store Packages location), recursively finds Cowork JSONL transcripts, and saves each session as one memory (the chunker splits per-turn). Idempotent: re-running upserts by source_ref="cowork:<sessionId>". Use this when the user says "import my cowork chats" / "remember context from my past sessions" / similar.',
186
+ inputSchema: {
187
+ type: 'object',
188
+ properties: {
189
+ namespace: { type: 'string', description: 'Target namespace (default "claude-cowork").' },
190
+ limit: { type: 'number', description: 'Cap the number of sessions imported in this call (default unlimited).' },
191
+ probe_only: { type: 'boolean', description: 'If true, return what would be imported but do not save.' },
192
+ },
193
+ },
194
+ },
195
+ // ─── Procedural memory (runbooks) ──────────────────────────────────────
196
+ // Procedural memory stores how-to runbooks: title + trigger phrases + step
197
+ // list. Use these tools when the user asks how to do a recurring task and
198
+ // memory_recall doesn't already surface a runbook automatically.
199
+ {
200
+ name: 'procedural_match',
201
+ description: 'Look up saved runbooks whose trigger phrases match a query. ' +
202
+ 'Returns each matching runbook with its full step list. ' +
203
+ 'Use this when the user asks how to do something — "how do I deploy", "ship to vercel", etc. ' +
204
+ 'memory_recall also auto-surfaces runbooks, but call this directly when you specifically want procedural results.',
205
+ inputSchema: {
206
+ type: 'object',
207
+ properties: {
208
+ trigger: { type: 'string', description: 'The phrase to match against trigger_phrases.' },
209
+ limit: { type: 'number', description: 'Top-k runbooks to return. Default 5.' },
210
+ },
211
+ required: ['trigger'],
212
+ },
213
+ },
214
+ {
215
+ name: 'procedural_list',
216
+ description: 'List saved runbooks, most-recently-used first. Returns titles, trigger phrases, and reliability counters. ' +
217
+ 'Use to browse available procedures without a specific query.',
218
+ inputSchema: {
219
+ type: 'object',
220
+ properties: {
221
+ limit: { type: 'number', description: 'Default 50, max 200.' },
222
+ },
223
+ },
224
+ },
225
+ {
226
+ name: 'procedural_get',
227
+ description: 'Fetch a saved runbook by id, including every step with its command and verification check.',
228
+ inputSchema: {
229
+ type: 'object',
230
+ properties: {
231
+ id: { type: 'string', description: 'The runbook id from procedural_match or procedural_list.' },
232
+ },
233
+ required: ['id'],
234
+ },
235
+ },
236
+ {
237
+ name: 'procedural_record_outcome',
238
+ description: 'Record that a runbook was run, with the outcome. Bumps the success or failure counter and stamps last_used_at. ' +
239
+ 'Use after the user (or you) has actually executed the runbook end-to-end. ' +
240
+ 'Argument: outcome must be exactly "success" or "failure".',
241
+ inputSchema: {
242
+ type: 'object',
243
+ properties: {
244
+ id: { type: 'string', description: 'The runbook id.' },
245
+ outcome: { type: 'string', enum: ['success', 'failure'] },
246
+ },
247
+ required: ['id', 'outcome'],
248
+ },
249
+ },
179
250
  ];
180
251
  export async function handleToolCall(provider, defaultNamespace, name, args, registry = EMPTY_REGISTRY) {
181
252
  switch (name) {
@@ -195,14 +266,62 @@ export async function handleToolCall(provider, defaultNamespace, name, args, reg
195
266
  }
196
267
  case 'memory_recall': {
197
268
  const k = Math.min(25, Math.max(1, args.k ?? 5));
198
- const memories = await provider.search({
199
- query: String(args.query ?? ''),
200
- namespace: args.namespace,
201
- k,
202
- tags: args.tags,
203
- });
269
+ const query = String(args.query ?? '');
270
+ // Hosted mode: use the unified /api/recall/unified endpoint which
271
+ // returns BOTH memories and matching runbooks in one round trip.
272
+ // This is what lets an agent saying "ship to vercel" auto-pull the
273
+ // matching runbook without ever calling procedural_match directly.
274
+ //
275
+ // Local mode (or hosted-old-binary): fall back to the legacy
276
+ // provider.search() — no runbook surfacing, but agents can still
277
+ // call procedural_match explicitly.
278
+ const unifiedRecall = provider.unifiedRecall;
279
+ let memories;
280
+ let procedurals = [];
281
+ if (typeof unifiedRecall === 'function') {
282
+ const r = await unifiedRecall.call(provider, query, {
283
+ namespace: args.namespace,
284
+ limit: k,
285
+ });
286
+ memories = r.memories ?? [];
287
+ procedurals = r.procedurals ?? [];
288
+ }
289
+ else {
290
+ memories = await provider.search({
291
+ query,
292
+ namespace: args.namespace,
293
+ k,
294
+ tags: args.tags,
295
+ });
296
+ }
204
297
  const processed = await runAfterRecall(memories, registry);
205
- return processed.map(toPreview);
298
+ const memPreviews = processed.map(toPreview);
299
+ // Trim runbook steps to the same kind of context-friendly preview
300
+ // the memory previews use. Full step content is still one
301
+ // procedural_get away — the agent can fetch it if it actually
302
+ // needs to execute the runbook.
303
+ const runbookPreviews = procedurals.map((rb) => ({
304
+ id: rb.id,
305
+ title: rb.title,
306
+ summary: rb.summary,
307
+ trigger_phrases: rb.trigger_phrases,
308
+ step_count: Array.isArray(rb.steps) ? rb.steps.length : 0,
309
+ match_kind: rb.match_kind,
310
+ success_count: rb.success_count,
311
+ failure_count: rb.failure_count,
312
+ last_used_at: rb.last_used_at,
313
+ }));
314
+ // Backwards-compat: if no runbooks matched, return a flat array
315
+ // (the legacy shape every existing caller expects). If runbooks
316
+ // ARE present, return the richer envelope. Agents that care about
317
+ // runbooks see the new shape; old agents see the old one.
318
+ if (runbookPreviews.length === 0) {
319
+ return memPreviews;
320
+ }
321
+ return {
322
+ memories: memPreviews,
323
+ procedurals: runbookPreviews,
324
+ };
206
325
  }
207
326
  case 'memory_get': {
208
327
  const id = String(args.id ?? '');
@@ -296,6 +415,134 @@ export async function handleToolCall(provider, defaultNamespace, name, args, reg
296
415
  const result = await provider.bulkSave(filtered);
297
416
  return { ...result, namespace: ns, format, dropped_by_plugin: droppedByPlugin };
298
417
  }
418
+ case 'memory_import_cowork': {
419
+ const ns = args.namespace ?? 'claude-cowork';
420
+ const limit = typeof args.limit === 'number' ? Math.max(1, Math.floor(args.limit)) : undefined;
421
+ const probeOnly = Boolean(args.probe_only);
422
+ const probe = probeClaudeCowork();
423
+ if (!probe.found || probe.sessions.length === 0) {
424
+ return {
425
+ imported: 0,
426
+ saved: 0,
427
+ dropped_by_plugin: 0,
428
+ empty_sessions: 0,
429
+ errors: 0,
430
+ total_sessions: 0,
431
+ scanned_roots: probe.scannedRoots,
432
+ paths_attempted: probe.pathsAttempted,
433
+ hints: probe.hints,
434
+ namespace: ns,
435
+ };
436
+ }
437
+ const targets = limit ? probe.sessions.slice(0, limit) : probe.sessions;
438
+ const items = [];
439
+ let empty = 0;
440
+ let parseErrors = 0;
441
+ for (const s of targets) {
442
+ try {
443
+ const sessionItems = importFromCoworkSession(s.filePath, ns, {
444
+ sessionId: s.sessionId,
445
+ title: s.title,
446
+ cwd: s.cwd,
447
+ });
448
+ if (sessionItems.length === 0)
449
+ empty++;
450
+ else
451
+ items.push(...sessionItems);
452
+ }
453
+ catch {
454
+ parseErrors++;
455
+ }
456
+ }
457
+ if (probeOnly) {
458
+ return {
459
+ would_import: items.length,
460
+ empty_sessions: empty,
461
+ parse_errors: parseErrors,
462
+ total_sessions: probe.sessions.length,
463
+ scanned_roots: probe.scannedRoots,
464
+ namespace: ns,
465
+ probe_only: true,
466
+ };
467
+ }
468
+ let droppedByPlugin = 0;
469
+ const filtered = [];
470
+ for (const it of items) {
471
+ const transformed = await runBeforeSave(it, registry);
472
+ if (transformed === null)
473
+ droppedByPlugin++;
474
+ else
475
+ filtered.push(transformed);
476
+ }
477
+ const result = await provider.bulkSave(filtered);
478
+ return {
479
+ ...result,
480
+ namespace: ns,
481
+ imported_sessions: items.length,
482
+ empty_sessions: empty,
483
+ parse_errors: parseErrors,
484
+ dropped_by_plugin: droppedByPlugin,
485
+ total_sessions: probe.sessions.length,
486
+ scanned_roots: probe.scannedRoots,
487
+ };
488
+ }
489
+ // ── Procedural memory tools ────────────────────────────────────────
490
+ // All four delegate to RemoteProvider methods (defined in remote.ts).
491
+ // Local SQLite has procedural support too but a different shape; the
492
+ // bridging is left for a follow-up. If the user is on a local-only
493
+ // setup, these tools error gracefully with a clear message.
494
+ case 'procedural_match': {
495
+ const trigger = String(args.trigger ?? '');
496
+ if (!trigger)
497
+ throw new Error('trigger is required');
498
+ const limit = Math.min(25, Math.max(1, args.limit ?? 5));
499
+ const match = provider.proceduralMatch;
500
+ if (typeof match !== 'function') {
501
+ throw new Error('procedural_match is only supported on hosted mode. ' +
502
+ 'Set MNUERON_API_URL + MNUERON_API_TOKEN to enable.');
503
+ }
504
+ const runbooks = await match.call(provider, trigger, limit);
505
+ return { trigger, count: runbooks.length, runbooks };
506
+ }
507
+ case 'procedural_list': {
508
+ const limit = Math.min(200, Math.max(1, args.limit ?? 50));
509
+ const list = provider.proceduralList;
510
+ if (typeof list !== 'function') {
511
+ throw new Error('procedural_list is only supported on hosted mode.');
512
+ }
513
+ const runbooks = await list.call(provider, limit);
514
+ return { count: runbooks.length, runbooks };
515
+ }
516
+ case 'procedural_get': {
517
+ const id = String(args.id ?? '');
518
+ if (!id)
519
+ throw new Error('id is required');
520
+ const get = provider.proceduralGet;
521
+ if (typeof get !== 'function') {
522
+ throw new Error('procedural_get is only supported on hosted mode.');
523
+ }
524
+ const runbook = await get.call(provider, id);
525
+ if (!runbook)
526
+ throw new Error(`runbook not found: ${id}`);
527
+ return runbook;
528
+ }
529
+ case 'procedural_record_outcome': {
530
+ const id = String(args.id ?? '');
531
+ const outcome = String(args.outcome ?? '');
532
+ if (!id)
533
+ throw new Error('id is required');
534
+ if (outcome !== 'success' && outcome !== 'failure') {
535
+ throw new Error('outcome must be "success" or "failure"');
536
+ }
537
+ const record = provider.proceduralRecordOutcome;
538
+ if (typeof record !== 'function') {
539
+ throw new Error('procedural_record_outcome is only supported on hosted mode.');
540
+ }
541
+ const updated = await record.call(provider, id, outcome);
542
+ if (!updated)
543
+ throw new Error(`runbook not found: ${id}`);
544
+ return updated;
545
+ }
299
546
  default:
300
547
  throw new Error(`Unknown tool: ${name}`);
301
548
  }
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * v0.2.6 — Cowork background sync.
3
+ *
4
+ * Periodically probes the on-disk Cowork transcripts and incrementally
5
+ * imports new or changed ones into mnueron. Drives `mnueron watch
6
+ * --claude-cowork`.
7
+ *
8
+ * State file at `~/.mnueron/cowork-sync.json` records the last-synced
9
+ * mtimeMs per sessionId. On each tick we re-import only sessions whose
10
+ * file mtime has advanced. Idempotent: re-importing a session upserts via
11
+ * `source_ref="cowork:<sessionId>"` so duplicates never accumulate.
12
+ *
13
+ * Stop with Ctrl+C — SIGINT/SIGTERM are caught and we flush the state
14
+ * file before exiting.
15
+ */
16
+ import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
17
+ import { homedir } from 'node:os';
18
+ import { dirname, join } from 'node:path';
19
+ import { probeClaudeCowork, importFromCoworkSession } from '../import/claude_cowork.js';
20
+ const STATE_VERSION = 1;
21
+ const DEFAULT_INTERVAL_MS = 5 * 60 * 1000; // 5 minutes
22
+ function stateFilePath() {
23
+ return join(homedir(), '.mnueron', 'cowork-sync.json');
24
+ }
25
+ function loadState() {
26
+ const p = stateFilePath();
27
+ try {
28
+ const raw = readFileSync(p, 'utf8');
29
+ const obj = JSON.parse(raw);
30
+ if (obj?.version === STATE_VERSION && obj.sessions && typeof obj.sessions === 'object') {
31
+ return obj;
32
+ }
33
+ }
34
+ catch { /* missing or malformed — start fresh */ }
35
+ return { version: STATE_VERSION, last_run_ms: 0, sessions: {} };
36
+ }
37
+ function saveState(s) {
38
+ const p = stateFilePath();
39
+ try {
40
+ mkdirSync(dirname(p), { recursive: true });
41
+ writeFileSync(p, JSON.stringify(s, null, 2), 'utf8');
42
+ }
43
+ catch (e) {
44
+ process.stderr.write(`[mnueron watch] failed to write sync state: ${e.message}\n`);
45
+ }
46
+ }
47
+ /**
48
+ * Run one tick of the sync: probe disk, compare against state, import any
49
+ * changed sessions. Returns counts so callers can log / surface in UIs.
50
+ */
51
+ export async function runCoworkSyncTick(provider, state, namespace) {
52
+ const probe = probeClaudeCowork();
53
+ const out = { checked: probe.sessions.length, changed: 0, imported: 0, saved: 0, errors: 0 };
54
+ if (probe.sessions.length === 0)
55
+ return out;
56
+ const items = [];
57
+ const pendingMtimes = [];
58
+ for (const s of probe.sessions) {
59
+ const prevMtime = state.sessions[s.sessionId] ?? 0;
60
+ if (s.mtimeMs <= prevMtime)
61
+ continue; // unchanged, skip
62
+ out.changed++;
63
+ try {
64
+ const sessionItems = importFromCoworkSession(s.filePath, namespace, {
65
+ sessionId: s.sessionId,
66
+ title: s.title,
67
+ cwd: s.cwd,
68
+ });
69
+ if (sessionItems.length > 0) {
70
+ items.push(...sessionItems);
71
+ out.imported++;
72
+ }
73
+ pendingMtimes.push([s.sessionId, s.mtimeMs]);
74
+ }
75
+ catch {
76
+ out.errors++;
77
+ }
78
+ }
79
+ if (items.length > 0) {
80
+ const result = await provider.bulkSave(items);
81
+ out.saved = result.saved;
82
+ out.errors += result.errors;
83
+ }
84
+ // Stamp success mtimes only after the save succeeds.
85
+ for (const [id, mtime] of pendingMtimes)
86
+ state.sessions[id] = mtime;
87
+ state.last_run_ms = Date.now();
88
+ saveState(state);
89
+ return out;
90
+ }
91
+ /**
92
+ * Long-running watcher. Resolves only on signal (--once mode) or never
93
+ * (continuous mode). Caller is responsible for provider lifecycle.
94
+ */
95
+ export async function runCoworkWatch(provider, opts = {}) {
96
+ const intervalMs = Math.max(10_000, opts.intervalMs ?? DEFAULT_INTERVAL_MS);
97
+ const namespace = opts.namespace ?? 'claude-cowork';
98
+ const log = opts.log ?? ((m) => console.log(m));
99
+ let state = loadState();
100
+ let stopping = false;
101
+ const onSignal = (sig) => {
102
+ if (stopping)
103
+ return;
104
+ stopping = true;
105
+ log(`[watch] caught ${sig}, flushing state and exiting…`);
106
+ saveState(state);
107
+ // Give any in-flight tick a tiny window to wrap up cleanly.
108
+ setTimeout(() => process.exit(0), 250).unref();
109
+ };
110
+ process.on('SIGINT', () => onSignal('SIGINT'));
111
+ process.on('SIGTERM', () => onSignal('SIGTERM'));
112
+ log(`[watch] cowork sync started — interval ${(intervalMs / 1000).toFixed(0)}s, ` +
113
+ `ns "${namespace}", state @ ${stateFilePath()}`);
114
+ const tick = async () => {
115
+ if (stopping)
116
+ return;
117
+ const startedAt = new Date().toISOString();
118
+ try {
119
+ const result = await runCoworkSyncTick(provider, state, namespace);
120
+ log(`[watch ${startedAt}] checked=${result.checked} changed=${result.changed} ` +
121
+ `imported=${result.imported} saved=${result.saved} errors=${result.errors}`);
122
+ }
123
+ catch (e) {
124
+ log(`[watch ${startedAt}] tick failed: ${e.message}`);
125
+ }
126
+ };
127
+ // Run an initial tick immediately so a fresh `mnueron watch` is useful
128
+ // without waiting for the first interval.
129
+ await tick();
130
+ if (opts.once)
131
+ return;
132
+ // Schedule subsequent ticks. The active setInterval keeps the event loop
133
+ // alive; we exit via the SIGINT/SIGTERM handler.
134
+ setInterval(() => { void tick(); }, intervalMs);
135
+ await new Promise(() => { });
136
+ }
137
+ //# sourceMappingURL=cowork.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cowork.js","sourceRoot":"","sources":["../../src/watch/cowork.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mnueron",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "MNUERON — persistent memory for Claude Desktop, Claude Code, Cursor, and any AI dev tool or app. Local-first, free, with optional hosted multi-tenant backend.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",