50 lines
1.1 KiB
JavaScript
50 lines
1.1 KiB
JavaScript
/**
|
|
* Minimal Node.js client for Kompanion MCP memory tools.
|
|
*
|
|
* The helpers spawn the `kom_mcp` CLI with a tool name and JSON payload,
|
|
* then return the parsed response.
|
|
*/
|
|
|
|
import { spawnSync } from 'node:child_process';
|
|
|
|
function runKomMcp(toolName, payload) {
|
|
const request = JSON.stringify(payload);
|
|
const result = spawnSync('kom_mcp', [toolName, request], {
|
|
encoding: 'utf8'
|
|
});
|
|
|
|
if (result.error) {
|
|
throw result.error;
|
|
}
|
|
if (result.status !== 0) {
|
|
throw new Error(`kom_mcp exited with code ${result.status}: ${result.stderr}`);
|
|
}
|
|
const output = result.stdout.trim();
|
|
if (!output) {
|
|
return {};
|
|
}
|
|
try {
|
|
return JSON.parse(output);
|
|
} catch (err) {
|
|
throw new Error(`Failed to parse kom_mcp response: ${err}. Raw output: ${output}`);
|
|
}
|
|
}
|
|
|
|
export function saveContext(payload) {
|
|
return runKomMcp('kom.memory.v1.save_context', payload);
|
|
}
|
|
|
|
export function recallContext(payload) {
|
|
return runKomMcp('kom.memory.v1.recall_context', payload);
|
|
}
|
|
|
|
export function searchMemory(payload) {
|
|
return runKomMcp('kom.memory.v1.search_memory', payload);
|
|
}
|
|
|
|
export default {
|
|
saveContext,
|
|
recallContext,
|
|
searchMemory
|
|
};
|