@pcircle/memesh 3.0.1 → 3.1.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.
Files changed (45) hide show
  1. package/README.de.md +234 -0
  2. package/README.es.md +234 -0
  3. package/README.fr.md +234 -0
  4. package/README.ja.md +234 -0
  5. package/README.ko.md +234 -0
  6. package/README.md +141 -94
  7. package/README.pt.md +234 -0
  8. package/README.th.md +234 -0
  9. package/README.vi.md +234 -0
  10. package/README.zh-CN.md +234 -0
  11. package/README.zh-TW.md +234 -0
  12. package/dashboard/dist/index.html +16 -0
  13. package/dist/core/config.d.ts.map +1 -1
  14. package/dist/core/config.js +5 -1
  15. package/dist/core/config.js.map +1 -1
  16. package/dist/core/failure-analyzer.d.ts +13 -0
  17. package/dist/core/failure-analyzer.d.ts.map +1 -0
  18. package/dist/core/failure-analyzer.js +98 -0
  19. package/dist/core/failure-analyzer.js.map +1 -0
  20. package/dist/core/lesson-engine.d.ts +21 -0
  21. package/dist/core/lesson-engine.d.ts.map +1 -0
  22. package/dist/core/lesson-engine.js +76 -0
  23. package/dist/core/lesson-engine.js.map +1 -0
  24. package/dist/core/operations.d.ts +2 -1
  25. package/dist/core/operations.d.ts.map +1 -1
  26. package/dist/core/operations.js +15 -0
  27. package/dist/core/operations.js.map +1 -1
  28. package/dist/core/schema-export.d.ts.map +1 -1
  29. package/dist/core/schema-export.js +18 -0
  30. package/dist/core/schema-export.js.map +1 -1
  31. package/dist/core/types.d.ts +12 -0
  32. package/dist/core/types.d.ts.map +1 -1
  33. package/dist/transports/cli/cli.js +35 -3
  34. package/dist/transports/cli/cli.js.map +1 -1
  35. package/dist/transports/http/server.d.ts.map +1 -1
  36. package/dist/transports/http/server.js +52 -1
  37. package/dist/transports/http/server.js.map +1 -1
  38. package/dist/transports/mcp/handlers.d.ts +31 -0
  39. package/dist/transports/mcp/handlers.d.ts.map +1 -1
  40. package/dist/transports/mcp/handlers.js +34 -1
  41. package/dist/transports/mcp/handlers.js.map +1 -1
  42. package/package.json +1 -1
  43. package/plugin.json +1 -1
  44. package/scripts/hooks/session-start.js +38 -1
  45. package/scripts/hooks/session-summary.js +34 -2
@@ -6,8 +6,9 @@
6
6
 
7
7
  import { createRequire } from 'module';
8
8
  import { homedir } from 'os';
9
- import { join, basename } from 'path';
9
+ import { join, basename, dirname } from 'path';
10
10
  import { existsSync, mkdirSync, readFileSync } from 'fs';
11
+ import { fileURLToPath } from 'url';
11
12
 
12
13
  const require = createRequire(import.meta.url);
13
14
 
@@ -118,7 +119,7 @@ function parseTranscript(transcriptPath) {
118
119
  let input = '';
119
120
  process.stdin.setEncoding('utf8');
120
121
  process.stdin.on('data', (chunk) => { input += chunk; });
121
- process.stdin.on('end', () => {
122
+ process.stdin.on('end', async () => {
122
123
  try {
123
124
  if (!input.trim()) return exit0();
124
125
 
@@ -240,6 +241,37 @@ process.stdin.on('end', () => {
240
241
  } finally {
241
242
  db.close();
242
243
  }
244
+
245
+ // ── LLM-powered failure analysis (Level 1 only) ──────────────────────
246
+ // Runs AFTER the hook's own DB is closed.
247
+ // Uses the core module's DB singleton (openDatabase/closeDatabase).
248
+ // Wrapped in its own try/catch — never blocks rule-based extraction.
249
+ if (errorsEncountered.length > 0 && filesEdited.length > 0) {
250
+ try {
251
+ const pluginRoot = process.env.CLAUDE_PLUGIN_ROOT
252
+ || dirname(dirname(fileURLToPath(import.meta.url)));
253
+ const configMod = await import(join(pluginRoot, 'dist/core/config.js'));
254
+ const config = configMod.readConfig();
255
+
256
+ if (config.llm) {
257
+ const { openDatabase, closeDatabase } = await import(join(pluginRoot, 'dist/db.js'));
258
+ const { analyzeFailure } = await import(join(pluginRoot, 'dist/core/failure-analyzer.js'));
259
+ const { createLesson } = await import(join(pluginRoot, 'dist/core/lesson-engine.js'));
260
+
261
+ openDatabase();
262
+ try {
263
+ const lesson = await analyzeFailure(errorsEncountered, filesEdited, config.llm);
264
+ if (lesson) {
265
+ createLesson(lesson, projectName);
266
+ }
267
+ } finally {
268
+ closeDatabase();
269
+ }
270
+ }
271
+ } catch {
272
+ // LLM analysis failed — rule-based extraction already captured the session
273
+ }
274
+ }
243
275
  } catch (err) {
244
276
  // Never crash Claude Code — leave a trace for debugging
245
277
  try { process.stderr.write(`[memesh session-summary] ${err?.message || err}\n`); } catch {}