metal-kompanion/integrations/js/kompanionMemoryClient.js

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
};