@lace-cloud/chat-core
v0.6.5
Published
IDE-agnostic chat machinery for Lace Cloud. The agentic loop, tool registry, proactivity watcher, and history codec — all decoupled from any particular IDE host.
Readme
@lace-cloud/chat-core
IDE-agnostic chat machinery for Lace Cloud. The agentic loop, tool registry, proactivity watcher, and history codec — all decoupled from any particular IDE host.
Zero vscode imports. Editor adapters (VS Code, future JetBrains)
implement the ChatHostAdapter interface and pass an instance into
AgentController.
Install
npm install @lace-cloud/chat-coreUsage (adapter implementer's perspective)
import {
AgentController,
createToolRegistry,
ProactivityWatcher,
type ChatHostAdapter,
type WebviewTransport,
} from '@lace-cloud/chat-core';
// 1. Implement ChatHostAdapter for your IDE.
const adapter: ChatHostAdapter = {
selectModel: async (selector) => /* IDE's LM API */,
sendRequest: async (model, messages, tools, signal) => /* … */,
saveHistory: async (messages) => /* … */,
loadHistory: async () => /* … */,
getConfig: () => /* … */,
getWorkspaceName: () => /* … */,
log: (level, msg) => /* … */,
};
// 2. Implement WebviewTransport (postMessage shape).
const transport: WebviewTransport = {
postMessage: (msg) => webview.postMessage(msg),
onMessage: (handler) => webview.onDidReceiveMessage(handler),
};
// 3. Wire up the agentic loop.
const registry = createToolRegistry();
registry.register(/* your IDE-specific tools */);
const agent = new AgentController({
adapter,
transport,
toolRegistry: registry,
buildSystemPrompt: /* … */,
getCanvasView: () => latestView,
historyKey: 'lace.chatHistory',
});
await agent.init();Proactivity
Pure rule matchers. Adapter wires concrete IDE events to abstract trigger types:
import { ProactivityWatcher, defaultRules } from '@lace-cloud/chat-core';
const watcher = new ProactivityWatcher({
rules: defaultRules,
transport: laceTransport, // from @lace-cloud/host
onSuggestion: (text) => agent.injectSuggestion(text),
});
watcher.mount();License
Proprietary — see LICENSE.
