@n24q02m/mnemo-plugin 1.3.0 → 1.4.1

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 (36) hide show
  1. package/bin/cli.mjs +147 -9
  2. package/build/src/core/memory-service.d.ts +63 -0
  3. package/build/src/core/memory-service.d.ts.map +1 -0
  4. package/build/src/core/memory-service.js +151 -0
  5. package/build/src/core/memory-service.js.map +1 -0
  6. package/build/src/hooks/auto-capture.d.ts +1 -0
  7. package/build/src/hooks/auto-capture.d.ts.map +1 -1
  8. package/build/src/hooks/auto-capture.js +33 -38
  9. package/build/src/hooks/auto-capture.js.map +1 -1
  10. package/build/src/hooks/compaction.d.ts +8 -0
  11. package/build/src/hooks/compaction.d.ts.map +1 -1
  12. package/build/src/hooks/compaction.js +9 -20
  13. package/build/src/hooks/compaction.js.map +1 -1
  14. package/build/src/hooks/system-prompt.d.ts +1 -2
  15. package/build/src/hooks/system-prompt.d.ts.map +1 -1
  16. package/build/src/hooks/system-prompt.js +14 -60
  17. package/build/src/hooks/system-prompt.js.map +1 -1
  18. package/build/src/index.d.ts +8 -7
  19. package/build/src/index.d.ts.map +1 -1
  20. package/build/src/index.js +6 -46
  21. package/build/src/index.js.map +1 -1
  22. package/build/src/platforms/omp/index.d.ts +24 -0
  23. package/build/src/platforms/omp/index.d.ts.map +1 -0
  24. package/build/src/platforms/omp/index.js +74 -0
  25. package/build/src/platforms/omp/index.js.map +1 -0
  26. package/build/src/platforms/opencode/index.d.ts +11 -0
  27. package/build/src/platforms/opencode/index.d.ts.map +1 -0
  28. package/build/src/platforms/opencode/index.js +50 -0
  29. package/build/src/platforms/opencode/index.js.map +1 -0
  30. package/build/src/tools/memory.d.ts.map +1 -1
  31. package/build/src/tools/memory.js +1 -6
  32. package/build/src/tools/memory.js.map +1 -1
  33. package/build/tests/auto-capture.test.js +12 -0
  34. package/build/tests/auto-capture.test.js.map +1 -1
  35. package/build/tsconfig.tsbuildinfo +1 -1
  36. package/package.json +8 -4
@@ -1,36 +1,12 @@
1
- import { logger } from '../logger.js';
1
+ /**
2
+ * System Prompt Hook
3
+ *
4
+ * Injects relevant memories into the system prompt using adaptive budget
5
+ * based on the model's context window. Delegates core logic to memory-service.
6
+ */
2
7
  import { MnemoBridge } from '../bridge.js';
3
- /** Maximum percentage of context window to use for memory injection */
4
- const BUDGET_PERCENT = 0.025;
5
- /** Budget bounds in characters */
6
- const MIN_BUDGET = 600;
7
- const MAX_BUDGET = 8000;
8
- /** Self-awareness block always injected (tells agent about available memory tools) */
9
- const SELF_AWARENESS = `You have persistent memory via the Mnemo system. You can use:
10
- - mnemo_search: Search stored memories, facts, preferences, decisions
11
- - mnemo_remember: Permanently store new facts, rules, preferences
12
- - mnemo_forget: Delete outdated or incorrect memories
13
- Proactively search memory when entering a new codebase or when the user asks about past decisions.`;
14
- /** Extract project name from directory path */
15
- function getProjectName(directory) {
16
- const cleanDir = directory.replace(/\\/g, '/');
17
- const parts = cleanDir.split('/');
18
- return parts[parts.length - 1] || 'unknown';
19
- }
20
- /** Compute injection budget based on model context limit */
21
- function computeBudget(model) {
22
- const contextLimit = model?.limit?.context;
23
- if (!contextLimit || contextLimit <= 0)
24
- return MIN_BUDGET;
25
- const budget = Math.floor(contextLimit * BUDGET_PERCENT * 4); // ~4 chars per token
26
- return Math.max(MIN_BUDGET, Math.min(MAX_BUDGET, budget));
27
- }
28
- /** Truncate text to fit within character budget */
29
- function truncateToFit(text, budget) {
30
- if (text.length <= budget)
31
- return text;
32
- return `${text.slice(0, budget - 3)}...`;
33
- }
8
+ import { buildMemoryContext, computeBudget, getProjectName, SELF_AWARENESS } from '../core/memory-service.js';
9
+ import { logger } from '../logger.js';
34
10
  export const systemPromptHook = async (input, output, directory) => {
35
11
  try {
36
12
  const bridge = MnemoBridge.getInstance();
@@ -40,36 +16,14 @@ export const systemPromptHook = async (input, output, directory) => {
40
16
  if (!bridge.isAvailable())
41
17
  return;
42
18
  const projectName = getProjectName(directory);
43
- const budget = computeBudget(input.model);
44
- // Search memories relevant to current project
45
- const searchRes = await bridge.callTool('memory', {
46
- action: 'search',
47
- query: projectName,
48
- limit: 10
49
- });
50
- if (!searchRes || !searchRes.count || searchRes.count === 0)
51
- return;
52
- const results = searchRes.results;
53
- // Build memory injection with budget constraint
54
- let injection = `[Mnemo Context for "${projectName}"]\n`;
55
- let usedBudget = injection.length;
56
- for (const mem of results) {
57
- const line = `- [${mem.category}] ${mem.content}\n`;
58
- if (usedBudget + line.length > budget) {
59
- // Try to fit a truncated version
60
- const remaining = budget - usedBudget;
61
- if (remaining > 20) {
62
- injection += truncateToFit(line, remaining);
63
- }
64
- break;
65
- }
66
- injection += line;
67
- usedBudget += line.length;
68
- }
69
- output.system.push(injection);
19
+ const budget = computeBudget(input.model?.limit?.context);
20
+ const injection = await buildMemoryContext(bridge, projectName, budget);
21
+ if (injection)
22
+ output.system.push(injection);
70
23
  }
71
24
  catch (error) {
72
- logger.error(`[Mnemo] Error injecting system prompt: ${error}`);
25
+ const message = error instanceof Error ? error.message : String(error);
26
+ logger.error(`[Mnemo] Error injecting system prompt: ${message}`);
73
27
  }
74
28
  };
75
29
  //# sourceMappingURL=system-prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../../src/hooks/system-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../../src/hooks/system-prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC7G,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,KAA2C,EAC3C,MAA4B,EAC5B,SAAiB,EACjB,EAAE;IACF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;QAExC,sDAAsD;QACtD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAElC,wEAAwE;QACxE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YAAE,OAAM;QAEjC,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;QAEzD,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;QACvE,IAAI,SAAS;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACtE,MAAM,CAAC,KAAK,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAA;IACnE,CAAC;AACH,CAAC,CAAA"}
@@ -1,11 +1,12 @@
1
1
  /**
2
- * mnemo-plugin - Universal Memory Plugin for OpenCode & Claude Code
2
+ * mnemo-plugin - Universal Memory Plugin
3
3
  *
4
- * Plugin entrypoint that registers tools and hooks with the OpenCode runtime.
5
- * Connects to mnemo-mcp (Python MCP server) via stdio transport to provide
6
- * persistent memory capabilities across coding sessions.
4
+ * Default export: OpenCode platform adapter (backward-compatible).
5
+ * Named exports: Platform adapters and core service for other runtimes.
7
6
  */
8
- import type { Plugin } from '@opencode-ai/plugin';
9
- declare const plugin: Plugin;
10
- export default plugin;
7
+ export type { MemoryResult } from './core/memory-service.js';
8
+ export { buildMemoryContext, captureConstraint, computeBudget, exportMemoriesAsMarkdown, fetchCompactionMemories, getProjectName, hashContent, SELF_AWARENESS } from './core/memory-service.js';
9
+ export type { OmpContext, OmpPlugin } from './platforms/omp/index.js';
10
+ export { register as registerOmp } from './platforms/omp/index.js';
11
+ export { default } from './platforms/opencode/index.js';
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAOjD,QAAA,MAAM,MAAM,EAAE,MAwCb,CAAA;AAED,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,wBAAwB,EACxB,uBAAuB,EACvB,cAAc,EACd,WAAW,EACX,cAAc,EACf,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAA"}
@@ -1,50 +1,10 @@
1
1
  /**
2
- * mnemo-plugin - Universal Memory Plugin for OpenCode & Claude Code
2
+ * mnemo-plugin - Universal Memory Plugin
3
3
  *
4
- * Plugin entrypoint that registers tools and hooks with the OpenCode runtime.
5
- * Connects to mnemo-mcp (Python MCP server) via stdio transport to provide
6
- * persistent memory capabilities across coding sessions.
4
+ * Default export: OpenCode platform adapter (backward-compatible).
5
+ * Named exports: Platform adapters and core service for other runtimes.
7
6
  */
8
- import { MnemoBridge } from './bridge.js';
9
- import { autoCaptureHook, messageHook } from './hooks/auto-capture.js';
10
- import { compactionHook } from './hooks/compaction.js';
11
- import { systemPromptHook } from './hooks/system-prompt.js';
12
- import { mnemoForget, mnemoRemember, mnemoSearch } from './tools/memory.js';
13
- const plugin = async (input) => {
14
- const bridge = MnemoBridge.getInstance();
15
- // Start bridge connection in background (non-blocking).
16
- // If this fails, the circuit breaker in MnemoBridge will prevent repeated
17
- // connection attempts from hooks, avoiding log noise.
18
- setTimeout(async () => {
19
- try {
20
- await bridge.connect();
21
- }
22
- catch {
23
- // Silently handled -- circuit breaker will prevent further attempts.
24
- // Hooks check bridge.isAvailable() before calling, so no cascading errors.
25
- }
26
- }, 100);
27
- return {
28
- // Tools
29
- tool: {
30
- mnemo_search: mnemoSearch,
31
- mnemo_remember: mnemoRemember,
32
- mnemo_forget: mnemoForget
33
- },
34
- // Hooks
35
- 'experimental.chat.system.transform': async (inParams, outParams) => {
36
- await systemPromptHook(inParams, outParams, input.directory);
37
- },
38
- 'chat.message': async (inParams, outParams) => {
39
- await messageHook(inParams, outParams);
40
- },
41
- event: async (inParams) => {
42
- await autoCaptureHook(inParams, input.directory);
43
- },
44
- 'experimental.session.compacting': async (inParams, outParams) => {
45
- await compactionHook(inParams, outParams);
46
- }
47
- };
48
- };
49
- export default plugin;
7
+ export { buildMemoryContext, captureConstraint, computeBudget, exportMemoriesAsMarkdown, fetchCompactionMemories, getProjectName, hashContent, SELF_AWARENESS } from './core/memory-service.js';
8
+ export { register as registerOmp } from './platforms/omp/index.js';
9
+ export { default } from './platforms/opencode/index.js';
50
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE3E,MAAM,MAAM,GAAW,KAAK,EAAE,KAAK,EAAE,EAAE;IACrC,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;IAExC,wDAAwD;IACxD,0EAA0E;IAC1E,sDAAsD;IACtD,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,qEAAqE;YACrE,2EAA2E;QAC7E,CAAC;IACH,CAAC,EAAE,GAAG,CAAC,CAAA;IAEP,OAAO;QACL,QAAQ;QACR,IAAI,EAAE;YACJ,YAAY,EAAE,WAAW;YACzB,cAAc,EAAE,aAAa;YAC7B,YAAY,EAAE,WAAW;SAC1B;QAED,QAAQ;QACR,oCAAoC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;YAClE,MAAM,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;QAC9D,CAAC;QAED,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;YAC5C,MAAM,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QACxC,CAAC;QAED,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YACxB,MAAM,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;QAClD,CAAC;QAED,iCAAiC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;YAC/D,MAAM,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC3C,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAED,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,wBAAwB,EACxB,uBAAuB,EACvB,cAAc,EACd,WAAW,EACX,cAAc,EACf,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAA"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * oh-my-pi (OMP) Platform Adapter
3
+ *
4
+ * Registers mnemo memory hooks using the pi.on() event paradigm.
5
+ * Provides the same memory capabilities as the OpenCode adapter
6
+ * but through OMP's event-driven plugin interface.
7
+ */
8
+ /** Context object passed to OMP event handlers */
9
+ export interface OmpContext {
10
+ directory: string;
11
+ model?: {
12
+ contextLimit?: number;
13
+ };
14
+ system?: string[];
15
+ content?: string;
16
+ context?: string[];
17
+ }
18
+ /** OMP plugin interface using the pi.on() paradigm */
19
+ export interface OmpPlugin {
20
+ on(event: string, handler: (ctx: OmpContext) => Promise<void>): void;
21
+ }
22
+ /** Register mnemo hooks with an OMP plugin instance */
23
+ export declare function register(pi: OmpPlugin): void;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/platforms/omp/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH,kDAAkD;AAClD,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACjC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,sDAAsD;AACtD,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CACrE;AAKD,uDAAuD;AACvD,wBAAgB,QAAQ,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CA6D5C"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * oh-my-pi (OMP) Platform Adapter
3
+ *
4
+ * Registers mnemo memory hooks using the pi.on() event paradigm.
5
+ * Provides the same memory capabilities as the OpenCode adapter
6
+ * but through OMP's event-driven plugin interface.
7
+ */
8
+ import { MnemoBridge } from '../../bridge.js';
9
+ import { buildMemoryContext, COMPACTION_INSTRUCTION, captureConstraint, computeBudget, fetchCompactionMemories, getProjectName, hashContent, SELF_AWARENESS } from '../../core/memory-service.js';
10
+ import { logger } from '../../logger.js';
11
+ /** Dedup set for auto-capture (per-process lifetime) */
12
+ const capturedHashes = new Set();
13
+ /** Register mnemo hooks with an OMP plugin instance */
14
+ export function register(pi) {
15
+ const bridge = MnemoBridge.getInstance();
16
+ // Background connect (non-blocking)
17
+ setTimeout(async () => {
18
+ try {
19
+ await bridge.connect();
20
+ }
21
+ catch {
22
+ // Circuit breaker handles repeated failures
23
+ }
24
+ }, 100);
25
+ pi.on('system-prompt', async (ctx) => {
26
+ try {
27
+ ctx.system = ctx.system ?? [];
28
+ ctx.system.push(SELF_AWARENESS);
29
+ if (!bridge.isAvailable())
30
+ return;
31
+ const projectName = getProjectName(ctx.directory);
32
+ const budget = computeBudget(ctx.model?.contextLimit);
33
+ const injection = await buildMemoryContext(bridge, projectName, budget);
34
+ if (injection)
35
+ ctx.system.push(injection);
36
+ }
37
+ catch (error) {
38
+ logger.error(`[Mnemo/OMP] Error in system-prompt: ${error}`);
39
+ }
40
+ });
41
+ pi.on('message', async (ctx) => {
42
+ if (!ctx.content || !bridge.isAvailable())
43
+ return;
44
+ try {
45
+ const projectName = getProjectName(ctx.directory);
46
+ const hash = hashContent(ctx.content);
47
+ if (capturedHashes.has(hash))
48
+ return;
49
+ const captured = await captureConstraint(bridge, ctx.content, projectName);
50
+ if (captured) {
51
+ capturedHashes.add(hash);
52
+ logger.info(`[Mnemo/OMP] Auto-captured a new rule for ${projectName}`);
53
+ }
54
+ }
55
+ catch (error) {
56
+ logger.error(`[Mnemo/OMP] Error in message capture: ${error}`);
57
+ }
58
+ });
59
+ pi.on('compact', async (ctx) => {
60
+ try {
61
+ if (!bridge.isAvailable())
62
+ return;
63
+ ctx.context = ctx.context ?? [];
64
+ const memoryContext = await fetchCompactionMemories(bridge);
65
+ if (memoryContext)
66
+ ctx.context.push(memoryContext);
67
+ ctx.context.push(COMPACTION_INSTRUCTION);
68
+ }
69
+ catch (error) {
70
+ logger.error(`[Mnemo/OMP] Error in compaction: ${error}`);
71
+ }
72
+ });
73
+ }
74
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platforms/omp/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * OpenCode Platform Adapter
3
+ *
4
+ * Plugin entrypoint that registers tools and hooks with the OpenCode runtime.
5
+ * Connects to mnemo-mcp (Python MCP server) via stdio transport to provide
6
+ * persistent memory capabilities across coding sessions.
7
+ */
8
+ import type { Plugin } from '@opencode-ai/plugin';
9
+ declare const plugin: Plugin;
10
+ export default plugin;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/platforms/opencode/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAOjD,QAAA,MAAM,MAAM,EAAE,MAwCb,CAAA;AAED,eAAe,MAAM,CAAA"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * OpenCode Platform Adapter
3
+ *
4
+ * Plugin entrypoint that registers tools and hooks with the OpenCode runtime.
5
+ * Connects to mnemo-mcp (Python MCP server) via stdio transport to provide
6
+ * persistent memory capabilities across coding sessions.
7
+ */
8
+ import { MnemoBridge } from '../../bridge.js';
9
+ import { autoCaptureHook, messageHook } from '../../hooks/auto-capture.js';
10
+ import { compactionHook } from '../../hooks/compaction.js';
11
+ import { systemPromptHook } from '../../hooks/system-prompt.js';
12
+ import { mnemoForget, mnemoRemember, mnemoSearch } from '../../tools/memory.js';
13
+ const plugin = async (input) => {
14
+ const bridge = MnemoBridge.getInstance();
15
+ // Start bridge connection in background (non-blocking).
16
+ // If this fails, the circuit breaker in MnemoBridge will prevent repeated
17
+ // connection attempts from hooks, avoiding log noise.
18
+ setTimeout(async () => {
19
+ try {
20
+ await bridge.connect();
21
+ }
22
+ catch {
23
+ // Silently handled -- circuit breaker will prevent further attempts.
24
+ // Hooks check bridge.isAvailable() before calling, so no cascading errors.
25
+ }
26
+ }, 100);
27
+ return {
28
+ // Tools
29
+ tool: {
30
+ mnemo_search: mnemoSearch,
31
+ mnemo_remember: mnemoRemember,
32
+ mnemo_forget: mnemoForget
33
+ },
34
+ // Hooks
35
+ 'experimental.chat.system.transform': async (inParams, outParams) => {
36
+ await systemPromptHook(inParams, outParams, input.directory);
37
+ },
38
+ 'chat.message': async (inParams, outParams) => {
39
+ await messageHook(inParams, outParams);
40
+ },
41
+ event: async (inParams) => {
42
+ await autoCaptureHook(inParams, input.directory);
43
+ },
44
+ 'experimental.session.compacting': async (inParams, outParams) => {
45
+ await compactionHook(inParams, outParams);
46
+ }
47
+ };
48
+ };
49
+ export default plugin;
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platforms/opencode/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAE/E,MAAM,MAAM,GAAW,KAAK,EAAE,KAAK,EAAE,EAAE;IACrC,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;IAExC,wDAAwD;IACxD,0EAA0E;IAC1E,sDAAsD;IACtD,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,qEAAqE;YACrE,2EAA2E;QAC7E,CAAC;IACH,CAAC,EAAE,GAAG,CAAC,CAAA;IAEP,OAAO;QACL,QAAQ;QACR,IAAI,EAAE;YACJ,YAAY,EAAE,WAAW;YACzB,cAAc,EAAE,aAAa;YAC7B,YAAY,EAAE,WAAW;SAC1B;QAED,QAAQ;QACR,oCAAoC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;YAClE,MAAM,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;QAC9D,CAAC;QAED,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;YAC5C,MAAM,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QACxC,CAAC;QAED,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YACxB,MAAM,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;QAClD,CAAC;QAED,iCAAiC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;YAC/D,MAAM,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC3C,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAED,eAAe,MAAM,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/tools/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,cAAc,EAAQ,MAAM,0BAA0B,CAAA;AAkBpE,eAAO,MAAM,WAAW,EAAE,cAwCxB,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,cAsC1B,CAAA;AAEF,eAAO,MAAM,WAAW,EAAE,cAuBxB,CAAA"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/tools/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,cAAc,EAAQ,MAAM,0BAA0B,CAAA;AAMpE,eAAO,MAAM,WAAW,EAAE,cAwCxB,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,cAsC1B,CAAA;AAEF,eAAO,MAAM,WAAW,EAAE,cAuBxB,CAAA"}
@@ -8,12 +8,7 @@
8
8
  */
9
9
  import { tool } from '@opencode-ai/plugin/tool';
10
10
  import { MnemoBridge } from '../bridge.js';
11
- /** Extract project name from directory path */
12
- function getProjectName(directory) {
13
- const cleanDir = directory.replace(/\\/g, '/');
14
- const parts = cleanDir.split('/');
15
- return parts[parts.length - 1] || 'unknown';
16
- }
11
+ import { getProjectName } from '../core/memory-service.js';
17
12
  export const mnemoSearch = tool({
18
13
  description: 'Search the persistent memory system (mnemo) for project rules, facts, preferences, or context. Use this proactively when entering a new codebase or when the user asks about past decisions.',
19
14
  args: {
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/tools/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/tools/memory.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,18 @@ describe('auto-capture', () => {
52
52
  await mod.messageHook({}, output);
53
53
  // Whitespace-only is trimmed to empty, not buffered
54
54
  });
55
+ it('limits buffer size to MAX_SESSION_BUFFER_SIZE', async () => {
56
+ const { mod, mockCallTool } = await freshModule();
57
+ // Add 105 messages (MAX_SESSION_BUFFER_SIZE is 100)
58
+ for (let i = 0; i < 105; i++) {
59
+ await mod.messageHook({}, { parts: [{ type: 'text', text: `message ${i} must be tested` }] });
60
+ }
61
+ await mod.autoCaptureHook({ event: { type: 'session.idle' } }, '/home/user/app');
62
+ // Ensure the capture was attempted and check content contains message 5 (shifted 0-4 out) but not message 0
63
+ const callArgs = mockCallTool.mock.calls[0][1];
64
+ expect(callArgs.content).toContain('message 5');
65
+ expect(callArgs.content).not.toContain('message 0');
66
+ });
55
67
  });
56
68
  describe('autoCaptureHook', () => {
57
69
  it('only triggers on session.idle event', async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"auto-capture.test.js","sourceRoot":"","sources":["../../tests/auto-capture.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-capture.test.js","sourceRoot":"","sources":["../../tests/auto-capture.test.ts"],"names":[],"mappings":"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"}