goto-assistant 0.6.2 → 0.7.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.
package/README.md CHANGED
@@ -38,24 +38,25 @@ One command, no Docker, no framework — just MCP. Chat from the web or WhatsApp
38
38
  chat / ask
39
39
 
40
40
 
41
- ┌───────────┐
42
- │ AI
43
- │ Assistant │
44
- └──┬──┬──┬──┘
45
- │ │ │ │
46
- │ │ │ └── create / update / run / ──▶ ┌───────┐
47
- │ │ │ schedule / get results Cron │──── ┐
48
- │ │ └───── read / write ────────────▶ ┌─┴───────┴┐
49
- │ │ Files │ AI tasks
50
- └──────── remember / recall ───────▶ ┌┴──────────┴┐ w/ MCP
51
- Memory │◀─┘ access
52
- ├────────────┤
53
- └────────── do anything ──────────────▶ + your │
54
- │ MCP servers
55
- └────────────┘
41
+ ┌──────────────────┐
42
+ │ AI Assistant
43
+ └──┬──┬──┬──┬──┬──┘
44
+ │ │ │ │ │
45
+ │ │ │ │ └── create / update / run / ──▶ ┌──────────────┐
46
+ │ │ │ │ schedule / get results │ Cron │────
47
+ │ │ │ └───── read / write ────────────▶ ├──────────────┤
48
+ │ │ │ │ Files AI tasks
49
+ │ │ └──────── remember / recall ───────▶ ├──────────────┤ w/ MCP
50
+ │ │ │ Memory │◀── access
51
+ └── recall conversations & task runs ──▶ ├──────────────┤
52
+ │ Episodic │
53
+ ├──────────────┤
54
+ └────────── do anything ─────────────────▶ + your MCP
55
+ │ servers │
56
+ └──────────────┘
56
57
  ```
57
58
 
58
- That one `npx` command gives you an AI assistant that can remember across conversations, manage your files, and run tasks on a schedule or on-demand — all through the standard [MCP protocol](https://modelcontextprotocol.io). Add any MCP server to extend it further.
59
+ That one `npx` command gives you an AI assistant that can remember across conversations, search past interactions, manage your files, and run tasks on a schedule or on-demand — all through the standard [MCP protocol](https://modelcontextprotocol.io). Add any MCP server to extend it further.
59
60
 
60
61
  ## See it in action
61
62
 
@@ -173,7 +174,7 @@ Messages go through the same AI pipeline as the web chat. The agent only respond
173
174
 
174
175
  ## Architecture
175
176
 
176
- Browser and WhatsApp clients connect to `server.ts` (WebSocket + REST), which routes messages through `router.ts` to the Claude or OpenAI agent SDK. Agents access MCP servers (memory, filesystem, cron, messaging, etc.) for extended capabilities. Messaging flows through a channel registry — the `mcp-messaging` MCP server proxies tool calls to `POST /api/messaging/send`, which routes to the appropriate channel (WhatsApp, etc.).
177
+ Browser and WhatsApp clients connect to `server.ts` (WebSocket + REST), which routes messages through `router.ts` to the Claude or OpenAI agent SDK. Agents access MCP servers (memory, filesystem, cron, messaging, etc.) for extended capabilities. Messaging flows through a channel registry — the `mcp-messaging` MCP server proxies tool calls to `POST /api/messaging/send`, which routes to the appropriate channel (WhatsApp, etc.). The `episodic-memory` MCP server provides full-text search over past conversations and task results using SQLite FTS5, enabling the agent to recall prior interactions.
177
178
 
178
179
  See [docs/architecture.md](docs/architecture.md) for the full architecture diagram.
179
180
 
@@ -217,5 +218,6 @@ The assistant comes pre-configured with these MCP servers:
217
218
  | **time** | [`mcp-server-time`](https://github.com/modelcontextprotocol/servers/tree/main/src/time) | Current time and timezone conversions |
218
219
  | **cron** | [`mcp-cron`](https://github.com/jolks/mcp-cron) | Schedule or run on-demand shell commands and AI prompts with access to MCP servers |
219
220
  | **messaging** | built-in | Send messages via connected platforms (WhatsApp, more coming) |
221
+ | **episodic-memory** | built-in | Full-text search over past conversations and task results |
220
222
 
221
223
  Add your own through the setup page — either via the form or by asking the setup wizard AI chat — or by editing `data/mcp.json` directly. Any MCP server that supports stdio transport will work — browse the [MCP server directory](https://github.com/modelcontextprotocol/servers) for more.
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ await import("../dist/mcp-episodic.js");
package/dist/config.d.ts CHANGED
@@ -51,12 +51,19 @@ export declare function unmaskMcpServers(incoming: Record<string, McpServerConfi
51
51
  export declare function maskApiKey(key: string): string;
52
52
  export declare function getMaskedConfig(config: Config): Config;
53
53
  export declare const MESSAGING_SERVER_NAME = "messaging";
54
+ export declare const EPISODIC_SERVER_NAME = "episodic-memory";
54
55
  /**
55
56
  * Auto-manage the messaging MCP server entry in mcp.json.
56
57
  * Adds when any messaging channel is enabled; removes when none are.
57
58
  * Updates GOTO_ASSISTANT_URL when the port changes.
58
59
  */
59
60
  export declare function syncMessagingMcpServer(config?: Config): void;
61
+ /**
62
+ * Auto-manage the episodic-memory MCP server entry in mcp.json.
63
+ * Always adds the entry (episodic memory is universally useful).
64
+ * Resolves MCP_CRON_DB_PATH from cron config's --db-path arg or default.
65
+ */
66
+ export declare function syncEpisodicMcpServer(): void;
60
67
  /** Known gateways that only support Chat Completions (not the Responses API). */
61
68
  export declare const CHAT_COMPLETIONS_ONLY_GATEWAYS: readonly ["api.kilo.ai", "generativelanguage.googleapis.com"];
62
69
  /** Check if a base URL points to a known Chat Completions-only gateway. */
package/dist/config.js CHANGED
@@ -107,6 +107,7 @@ export function getMaskedConfig(config) {
107
107
  };
108
108
  }
109
109
  export const MESSAGING_SERVER_NAME = "messaging";
110
+ export const EPISODIC_SERVER_NAME = "episodic-memory";
110
111
  /**
111
112
  * Auto-manage the messaging MCP server entry in mcp.json.
112
113
  * Adds when any messaging channel is enabled; removes when none are.
@@ -137,6 +138,38 @@ export function syncMessagingMcpServer(config) {
137
138
  }
138
139
  saveMcpServers(servers);
139
140
  }
141
+ /**
142
+ * Auto-manage the episodic-memory MCP server entry in mcp.json.
143
+ * Always adds the entry (episodic memory is universally useful).
144
+ * Resolves MCP_CRON_DB_PATH from cron config's --db-path arg or default.
145
+ */
146
+ export function syncEpisodicMcpServer() {
147
+ if (!isConfigured())
148
+ return;
149
+ const servers = loadMcpServers();
150
+ // Resolve cron DB path from cron config's --db-path arg, fall back to default
151
+ let cronDbPath = path.join(process.env.HOME || process.env.USERPROFILE || "", ".mcp-cron", "results.db");
152
+ const cronConfig = servers["cron"];
153
+ if (cronConfig) {
154
+ const dbIdx = cronConfig.args.indexOf("--db-path");
155
+ if (dbIdx !== -1 && cronConfig.args[dbIdx + 1]) {
156
+ cronDbPath = cronConfig.args[dbIdx + 1];
157
+ }
158
+ }
159
+ const entryPoint = path.resolve(import.meta.dirname, "..", "dist", "mcp-episodic.js");
160
+ const desired = {
161
+ command: "node",
162
+ args: [entryPoint],
163
+ env: {
164
+ GOTO_DATA_DIR: DATA_DIR,
165
+ MCP_CRON_DB_PATH: cronDbPath,
166
+ },
167
+ };
168
+ if (JSON.stringify(servers[EPISODIC_SERVER_NAME]) === JSON.stringify(desired))
169
+ return;
170
+ servers[EPISODIC_SERVER_NAME] = desired;
171
+ saveMcpServers(servers);
172
+ }
140
173
  /** Known gateways that only support Chat Completions (not the Responses API). */
141
174
  export const CHAT_COMPLETIONS_ONLY_GATEWAYS = [
142
175
  "api.kilo.ai",
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Episodic memory: search and retrieve past conversations and task execution results.
3
+ *
4
+ * Opens sessions.db (goto-assistant) and results.db (mcp-cron) read-only.
5
+ * Maintains a separate FTS5 index DB (episodic-index.db) that is a rebuildable index.
6
+ */
7
+ export interface TimeRange {
8
+ after?: string;
9
+ before?: string;
10
+ }
11
+ export interface ConversationMessageResult {
12
+ type: "conversation_message";
13
+ conversation_id: string;
14
+ conversation_title: string | null;
15
+ message_id: number;
16
+ role: string;
17
+ snippet: string;
18
+ created_at: string;
19
+ }
20
+ export interface TaskResultResult {
21
+ type: "task_result";
22
+ task_id: string;
23
+ task_name: string;
24
+ result_id: number;
25
+ snippet: string;
26
+ start_time: string;
27
+ exit_code: number;
28
+ }
29
+ export type EpisodeResult = ConversationMessageResult | TaskResultResult;
30
+ export interface ConversationContext {
31
+ conversation_id: string;
32
+ title: string | null;
33
+ provider: string | null;
34
+ created_at: string | null;
35
+ messages: Array<{
36
+ id: number;
37
+ role: string;
38
+ content: string;
39
+ created_at: string;
40
+ }>;
41
+ }
42
+ export interface TaskHistory {
43
+ task_id: string;
44
+ task_name: string | null;
45
+ description: string | null;
46
+ schedule: string | null;
47
+ results: Array<{
48
+ id: number;
49
+ output: string;
50
+ error: string;
51
+ exit_code: number;
52
+ start_time: string;
53
+ end_time: string;
54
+ duration: string;
55
+ }>;
56
+ }
57
+ export interface RecentEpisode {
58
+ type: "conversation" | "task_result";
59
+ id: string;
60
+ title: string | null;
61
+ timestamp: string;
62
+ preview: string;
63
+ }
64
+ export declare function closeIndexDb(): void;
65
+ export declare function ensureIndex(): void;
66
+ export declare function searchEpisodes(query: string, options?: {
67
+ source?: "all" | "conversations" | "tasks";
68
+ time_range?: TimeRange;
69
+ limit?: number;
70
+ }): EpisodeResult[];
71
+ export declare function getConversationContext(conversationId: string, options?: {
72
+ limit?: number;
73
+ around_message_id?: number;
74
+ }): ConversationContext;
75
+ export declare function getTaskHistory(taskId: string, options?: {
76
+ limit?: number;
77
+ }): TaskHistory;
78
+ export declare function listRecentEpisodes(options?: {
79
+ source?: "all" | "conversations" | "tasks";
80
+ limit?: number;
81
+ before?: string;
82
+ }): RecentEpisode[];
@@ -0,0 +1,446 @@
1
+ /**
2
+ * Episodic memory: search and retrieve past conversations and task execution results.
3
+ *
4
+ * Opens sessions.db (goto-assistant) and results.db (mcp-cron) read-only.
5
+ * Maintains a separate FTS5 index DB (episodic-index.db) that is a rebuildable index.
6
+ */
7
+ import Database from "better-sqlite3";
8
+ import fs from "node:fs";
9
+ import path from "node:path";
10
+ // ── Paths ──────────────────────────────────────────────────────────────────
11
+ // Evaluated once at import time. This module is only imported by mcp-episodic.ts
12
+ // which runs as a separate child process with GOTO_DATA_DIR and MCP_CRON_DB_PATH
13
+ // already set. Do not import this module from the main app process.
14
+ const dataDir = process.env.GOTO_DATA_DIR || "";
15
+ const sessionsDbPath = dataDir ? path.join(dataDir, "sessions.db") : "";
16
+ const cronDbPath = process.env.MCP_CRON_DB_PATH || "";
17
+ const indexDbPath = dataDir ? path.join(dataDir, "episodic-index.db") : "";
18
+ // ── DB helpers ─────────────────────────────────────────────────────────────
19
+ function openReadOnly(dbPath) {
20
+ if (!dbPath || !fs.existsSync(dbPath))
21
+ return null;
22
+ try {
23
+ return new Database(dbPath, { readonly: true });
24
+ }
25
+ catch {
26
+ return null;
27
+ }
28
+ }
29
+ let indexDb = null;
30
+ function getIndexDb() {
31
+ if (indexDb)
32
+ return indexDb;
33
+ if (!dataDir)
34
+ throw new Error("GOTO_DATA_DIR is not set");
35
+ if (!fs.existsSync(dataDir)) {
36
+ fs.mkdirSync(dataDir, { recursive: true });
37
+ }
38
+ indexDb = new Database(indexDbPath);
39
+ indexDb.pragma("journal_mode = WAL");
40
+ indexDb.exec(`
41
+ CREATE TABLE IF NOT EXISTS index_state (
42
+ source TEXT PRIMARY KEY,
43
+ last_indexed_id INTEGER DEFAULT 0,
44
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
45
+ );
46
+ CREATE VIRTUAL TABLE IF NOT EXISTS messages_fts USING fts5(
47
+ content,
48
+ conversation_id UNINDEXED,
49
+ message_id UNINDEXED,
50
+ role UNINDEXED,
51
+ conversation_title UNINDEXED,
52
+ created_at UNINDEXED,
53
+ tokenize='porter unicode61'
54
+ );
55
+ CREATE VIRTUAL TABLE IF NOT EXISTS results_fts USING fts5(
56
+ content,
57
+ task_id UNINDEXED,
58
+ result_id UNINDEXED,
59
+ task_name UNINDEXED,
60
+ start_time UNINDEXED,
61
+ exit_code UNINDEXED,
62
+ tokenize='porter unicode61'
63
+ );
64
+ `);
65
+ return indexDb;
66
+ }
67
+ export function closeIndexDb() {
68
+ if (indexDb) {
69
+ indexDb.close();
70
+ indexDb = null;
71
+ }
72
+ }
73
+ // ── Content parsing (duplicated from sessions.ts to avoid import) ──────────
74
+ function parseMessageContent(content) {
75
+ try {
76
+ const parsed = JSON.parse(content);
77
+ if (parsed && typeof parsed.text === "string") {
78
+ return parsed.text;
79
+ }
80
+ }
81
+ catch {
82
+ // Not JSON — plain text
83
+ }
84
+ return content;
85
+ }
86
+ // ── FTS5 query sanitization (same approach as mcp-broker) ──────────────────
87
+ const FTS5_KEYWORDS = new Set(["AND", "OR", "NOT", "NEAR"]);
88
+ function sanitizeQuery(query) {
89
+ // Strip FTS5 special characters, convert words to prefix searches
90
+ const cleaned = query.replace(/[^\p{L}\p{N}\s]/gu, "").trim();
91
+ if (!cleaned)
92
+ return '""'; // empty query matches nothing
93
+ return cleaned
94
+ .split(/\s+/)
95
+ .filter((w) => w && !FTS5_KEYWORDS.has(w.toUpperCase()))
96
+ .map((w) => `"${w}"*`)
97
+ .join(" ");
98
+ }
99
+ // ── Index management ───────────────────────────────────────────────────────
100
+ export function ensureIndex() {
101
+ const idx = getIndexDb();
102
+ // Index sessions.db messages
103
+ const sessionsDb = openReadOnly(sessionsDbPath);
104
+ if (sessionsDb) {
105
+ try {
106
+ const stateRow = idx
107
+ .prepare("SELECT last_indexed_id FROM index_state WHERE source = 'sessions'")
108
+ .get();
109
+ const lastId = stateRow?.last_indexed_id ?? 0;
110
+ const rows = sessionsDb
111
+ .prepare(`
112
+ SELECT m.id, m.conversation_id, m.role, m.content, m.created_at, c.title
113
+ FROM messages m
114
+ LEFT JOIN conversations c ON m.conversation_id = c.id
115
+ WHERE m.id > ?
116
+ ORDER BY m.id ASC
117
+ `)
118
+ .all(lastId);
119
+ if (rows.length > 0) {
120
+ const insert = idx.prepare(`
121
+ INSERT INTO messages_fts (content, conversation_id, message_id, role, conversation_title, created_at)
122
+ VALUES (?, ?, ?, ?, ?, ?)
123
+ `);
124
+ const tx = idx.transaction(() => {
125
+ for (const row of rows) {
126
+ const text = parseMessageContent(row.content);
127
+ insert.run(text, row.conversation_id, row.id, row.role, row.title, row.created_at);
128
+ }
129
+ });
130
+ tx();
131
+ const maxId = rows[rows.length - 1].id;
132
+ idx
133
+ .prepare(`INSERT INTO index_state (source, last_indexed_id, updated_at)
134
+ VALUES ('sessions', ?, datetime('now'))
135
+ ON CONFLICT(source) DO UPDATE SET last_indexed_id = ?, updated_at = datetime('now')`)
136
+ .run(maxId, maxId);
137
+ }
138
+ }
139
+ finally {
140
+ sessionsDb.close();
141
+ }
142
+ }
143
+ // Index cron results.db
144
+ const cronDb = openReadOnly(cronDbPath);
145
+ if (cronDb) {
146
+ try {
147
+ const stateRow = idx
148
+ .prepare("SELECT last_indexed_id FROM index_state WHERE source = 'cron'")
149
+ .get();
150
+ const lastId = stateRow?.last_indexed_id ?? 0;
151
+ // Check if tasks table exists (it may not in early versions)
152
+ const tablesExist = cronDb
153
+ .prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='tasks'")
154
+ .get();
155
+ const rows = cronDb
156
+ .prepare(`
157
+ SELECT r.id, r.task_id, r.output, r.error, r.start_time, r.exit_code,
158
+ r.prompt${tablesExist ? ", t.name AS task_name, t.description" : ""}
159
+ FROM results r
160
+ ${tablesExist ? "LEFT JOIN tasks t ON r.task_id = t.id" : ""}
161
+ WHERE r.id > ?
162
+ ORDER BY r.id ASC
163
+ `)
164
+ .all(lastId);
165
+ if (rows.length > 0) {
166
+ const insert = idx.prepare(`
167
+ INSERT INTO results_fts (content, task_id, result_id, task_name, start_time, exit_code)
168
+ VALUES (?, ?, ?, ?, ?, ?)
169
+ `);
170
+ const tx = idx.transaction(() => {
171
+ for (const row of rows) {
172
+ // Combine task name, description, output, error, and prompt for searchability
173
+ const parts = [
174
+ row.task_name || "",
175
+ row.description || "",
176
+ row.output || "",
177
+ row.error || "",
178
+ row.prompt || "",
179
+ ].filter(Boolean);
180
+ const content = parts.join(" ");
181
+ insert.run(content, row.task_id, row.id, row.task_name || "", row.start_time, row.exit_code);
182
+ }
183
+ });
184
+ tx();
185
+ const maxId = rows[rows.length - 1].id;
186
+ idx
187
+ .prepare(`INSERT INTO index_state (source, last_indexed_id, updated_at)
188
+ VALUES ('cron', ?, datetime('now'))
189
+ ON CONFLICT(source) DO UPDATE SET last_indexed_id = ?, updated_at = datetime('now')`)
190
+ .run(maxId, maxId);
191
+ }
192
+ }
193
+ finally {
194
+ cronDb.close();
195
+ }
196
+ }
197
+ }
198
+ // ── Search ─────────────────────────────────────────────────────────────────
199
+ export function searchEpisodes(query, options) {
200
+ ensureIndex();
201
+ const idx = getIndexDb();
202
+ const source = options?.source ?? "all";
203
+ const limit = options?.limit ?? 20;
204
+ const ftsQuery = sanitizeQuery(query);
205
+ const results = [];
206
+ if (source === "all" || source === "conversations") {
207
+ let sql = `
208
+ SELECT snippet(messages_fts, 0, '>>>', '<<<', '...', 40) AS snippet,
209
+ conversation_id, message_id, role, conversation_title, created_at
210
+ FROM messages_fts
211
+ WHERE messages_fts MATCH ?
212
+ `;
213
+ const params = [ftsQuery];
214
+ if (options?.time_range?.after) {
215
+ sql += " AND created_at > ?";
216
+ params.push(options.time_range.after);
217
+ }
218
+ if (options?.time_range?.before) {
219
+ sql += " AND created_at < ?";
220
+ params.push(options.time_range.before);
221
+ }
222
+ sql += " ORDER BY rank LIMIT ?";
223
+ params.push(limit);
224
+ const rows = idx.prepare(sql).all(...params);
225
+ for (const row of rows) {
226
+ results.push({
227
+ type: "conversation_message",
228
+ conversation_id: row.conversation_id,
229
+ conversation_title: row.conversation_title,
230
+ message_id: row.message_id,
231
+ role: row.role,
232
+ snippet: row.snippet,
233
+ created_at: row.created_at,
234
+ });
235
+ }
236
+ }
237
+ if (source === "all" || source === "tasks") {
238
+ let sql = `
239
+ SELECT snippet(results_fts, 0, '>>>', '<<<', '...', 40) AS snippet,
240
+ task_id, result_id, task_name, start_time, exit_code
241
+ FROM results_fts
242
+ WHERE results_fts MATCH ?
243
+ `;
244
+ const params = [ftsQuery];
245
+ if (options?.time_range?.after) {
246
+ sql += " AND start_time > ?";
247
+ params.push(options.time_range.after);
248
+ }
249
+ if (options?.time_range?.before) {
250
+ sql += " AND start_time < ?";
251
+ params.push(options.time_range.before);
252
+ }
253
+ sql += " ORDER BY rank LIMIT ?";
254
+ params.push(limit);
255
+ const rows = idx.prepare(sql).all(...params);
256
+ for (const row of rows) {
257
+ results.push({
258
+ type: "task_result",
259
+ task_id: row.task_id,
260
+ task_name: row.task_name,
261
+ result_id: row.result_id,
262
+ snippet: row.snippet,
263
+ start_time: row.start_time,
264
+ exit_code: row.exit_code,
265
+ });
266
+ }
267
+ }
268
+ // When source="all", each branch fetches up to `limit` rows ranked by relevance,
269
+ // so we may have up to 2*limit before slicing. This is intentional — splitting
270
+ // the limit per source would give worse results when matches are unevenly distributed.
271
+ return results.slice(0, limit);
272
+ }
273
+ // ── Conversation context ───────────────────────────────────────────────────
274
+ export function getConversationContext(conversationId, options) {
275
+ const limit = options?.limit ?? 50;
276
+ const sessionsDb = openReadOnly(sessionsDbPath);
277
+ if (!sessionsDb) {
278
+ return { conversation_id: conversationId, title: null, provider: null, created_at: null, messages: [] };
279
+ }
280
+ try {
281
+ const conv = sessionsDb
282
+ .prepare("SELECT title, provider, created_at FROM conversations WHERE id = ?")
283
+ .get(conversationId);
284
+ let messages;
285
+ if (options?.around_message_id) {
286
+ // Get a window around the specified message using position-based offset.
287
+ // ID arithmetic doesn't work because message IDs are shared across all
288
+ // conversations, so gaps between IDs within a single conversation are the norm.
289
+ const half = Math.floor(limit / 2);
290
+ const pos = sessionsDb
291
+ .prepare("SELECT COUNT(*) AS pos FROM messages WHERE conversation_id = ? AND id <= ?")
292
+ .get(conversationId, options.around_message_id);
293
+ const offset = Math.max(0, (pos?.pos ?? 0) - 1 - half);
294
+ messages = sessionsDb
295
+ .prepare(`SELECT id, role, content, created_at FROM messages
296
+ WHERE conversation_id = ?
297
+ ORDER BY id ASC
298
+ LIMIT ? OFFSET ?`)
299
+ .all(conversationId, limit, offset);
300
+ }
301
+ else {
302
+ // Get the most recent N messages
303
+ messages = sessionsDb
304
+ .prepare(`SELECT id, role, content, created_at FROM (
305
+ SELECT id, role, content, created_at FROM messages
306
+ WHERE conversation_id = ?
307
+ ORDER BY id DESC
308
+ LIMIT ?
309
+ ) sub ORDER BY id ASC`)
310
+ .all(conversationId, limit);
311
+ }
312
+ // Parse JSON content to extract text
313
+ for (const msg of messages) {
314
+ msg.content = parseMessageContent(msg.content);
315
+ }
316
+ return {
317
+ conversation_id: conversationId,
318
+ title: conv?.title ?? null,
319
+ provider: conv?.provider ?? null,
320
+ created_at: conv?.created_at ?? null,
321
+ messages,
322
+ };
323
+ }
324
+ finally {
325
+ sessionsDb.close();
326
+ }
327
+ }
328
+ // ── Task history ───────────────────────────────────────────────────────────
329
+ export function getTaskHistory(taskId, options) {
330
+ const limit = options?.limit ?? 10;
331
+ const cronDb = openReadOnly(cronDbPath);
332
+ if (!cronDb) {
333
+ return { task_id: taskId, task_name: null, description: null, schedule: null, results: [] };
334
+ }
335
+ try {
336
+ // Check if tasks table exists
337
+ const tasksExist = cronDb
338
+ .prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='tasks'")
339
+ .get();
340
+ let taskMeta;
341
+ if (tasksExist) {
342
+ taskMeta = cronDb
343
+ .prepare("SELECT name, description, schedule FROM tasks WHERE id = ?")
344
+ .get(taskId);
345
+ }
346
+ const results = cronDb
347
+ .prepare(`SELECT id, output, error, exit_code, start_time, end_time, duration
348
+ FROM results
349
+ WHERE task_id = ?
350
+ ORDER BY start_time DESC
351
+ LIMIT ?`)
352
+ .all(taskId, limit);
353
+ return {
354
+ task_id: taskId,
355
+ task_name: taskMeta?.name ?? null,
356
+ description: taskMeta?.description ?? null,
357
+ schedule: taskMeta?.schedule ?? null,
358
+ results,
359
+ };
360
+ }
361
+ finally {
362
+ cronDb.close();
363
+ }
364
+ }
365
+ // ── Recent episodes ────────────────────────────────────────────────────────
366
+ export function listRecentEpisodes(options) {
367
+ const source = options?.source ?? "all";
368
+ const limit = options?.limit ?? 20;
369
+ const episodes = [];
370
+ if (source === "all" || source === "conversations") {
371
+ const sessionsDb = openReadOnly(sessionsDbPath);
372
+ if (sessionsDb) {
373
+ try {
374
+ let sql = `
375
+ SELECT c.id, c.title, c.updated_at AS timestamp,
376
+ (SELECT content FROM messages WHERE conversation_id = c.id ORDER BY id DESC LIMIT 1) AS last_message
377
+ FROM conversations c
378
+ WHERE c.mode = 0
379
+ `;
380
+ const params = [];
381
+ if (options?.before) {
382
+ sql += " AND c.updated_at < ?";
383
+ params.push(options.before);
384
+ }
385
+ sql += " ORDER BY c.updated_at DESC LIMIT ?";
386
+ params.push(limit);
387
+ const rows = sessionsDb.prepare(sql).all(...params);
388
+ for (const row of rows) {
389
+ const preview = row.last_message ? parseMessageContent(row.last_message) : "";
390
+ episodes.push({
391
+ type: "conversation",
392
+ id: row.id,
393
+ title: row.title,
394
+ timestamp: row.timestamp,
395
+ preview: preview.length > 200 ? preview.slice(0, 200) + "..." : preview,
396
+ });
397
+ }
398
+ }
399
+ finally {
400
+ sessionsDb.close();
401
+ }
402
+ }
403
+ }
404
+ if (source === "all" || source === "tasks") {
405
+ const cronDb = openReadOnly(cronDbPath);
406
+ if (cronDb) {
407
+ try {
408
+ // Check if tasks table exists
409
+ const tasksExist = cronDb
410
+ .prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='tasks'")
411
+ .get();
412
+ let sql = `
413
+ SELECT r.id, r.task_id, r.output, r.error, r.start_time, r.exit_code${tasksExist ? ", t.name AS task_name" : ""}
414
+ FROM results r
415
+ ${tasksExist ? "LEFT JOIN tasks t ON r.task_id = t.id" : ""}
416
+ WHERE 1=1
417
+ `;
418
+ const params = [];
419
+ if (options?.before) {
420
+ sql += " AND r.start_time < ?";
421
+ params.push(options.before);
422
+ }
423
+ sql += " ORDER BY r.start_time DESC LIMIT ?";
424
+ params.push(limit);
425
+ const rows = cronDb.prepare(sql).all(...params);
426
+ for (const row of rows) {
427
+ const preview = row.error || row.output || "";
428
+ episodes.push({
429
+ type: "task_result",
430
+ id: row.task_id,
431
+ title: row.task_name || null,
432
+ timestamp: row.start_time,
433
+ preview: preview.length > 200 ? preview.slice(0, 200) + "..." : preview,
434
+ });
435
+ }
436
+ }
437
+ finally {
438
+ cronDb.close();
439
+ }
440
+ }
441
+ }
442
+ // Sort by timestamp descending and limit
443
+ episodes.sort((a, b) => (b.timestamp > a.timestamp ? 1 : -1));
444
+ return episodes.slice(0, limit);
445
+ }
446
+ //# sourceMappingURL=episodic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"episodic.js","sourceRoot":"","sources":["../src/episodic.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { createApp, createServer } from "./server.js";
2
- import { isConfigured, loadConfig, syncMessagingMcpServer } from "./config.js";
2
+ import { isConfigured, loadConfig, syncMessagingMcpServer, syncEpisodicMcpServer } from "./config.js";
3
3
  import { runMigrations } from "./migrations.js";
4
4
  import { startCronServer, stopCronServer, stopCronSync } from "./cron.js";
5
5
  import { startWhatsApp, stopWhatsApp } from "./whatsapp.js";
@@ -16,6 +16,7 @@ server.listen(port, () => {
16
16
  const config = loadConfig();
17
17
  // Channel registration happens inside whatsapp.ts on connection open
18
18
  syncMessagingMcpServer(config);
19
+ syncEpisodicMcpServer();
19
20
  startCronServer().catch((err) => console.error("Failed to start mcp-cron:", err));
20
21
  if (config.whatsapp?.enabled) {
21
22
  startWhatsApp().catch((err) => console.error("Failed to start WhatsApp:", err));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE5D,aAAa,EAAE,CAAC;AAEhB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;AACxB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AAEjC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAE9D,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACvB,OAAO,CAAC,GAAG,CAAC,8CAA8C,IAAI,EAAE,CAAC,CAAC;IAClE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,qEAAqE;QACrE,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC/B,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAC9B,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAChD,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;YAC7B,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAC5B,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAChD,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QACxD,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC/B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACtG,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE5D,aAAa,EAAE,CAAC;AAEhB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;AACxB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AAEjC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAE9D,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACvB,OAAO,CAAC,GAAG,CAAC,8CAA8C,IAAI,EAAE,CAAC,CAAC;IAClE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,qEAAqE;QACrE,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC/B,qBAAqB,EAAE,CAAC;QACxB,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAC9B,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAChD,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;YAC7B,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAC5B,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAChD,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QACxD,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC/B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * MCP stdio server for episodic memory.
3
+ * Provides search and retrieval of past conversations and task execution results.
4
+ */
5
+ export {};
@@ -0,0 +1,198 @@
1
+ /**
2
+ * MCP stdio server for episodic memory.
3
+ * Provides search and retrieval of past conversations and task execution results.
4
+ */
5
+ import readline from "node:readline";
6
+ import { MCP_PROTOCOL_VERSION } from "./config.js";
7
+ import { searchEpisodes, getConversationContext, getTaskHistory, listRecentEpisodes, } from "./episodic.js";
8
+ function respond(msg) {
9
+ process.stdout.write(JSON.stringify(msg) + "\n");
10
+ }
11
+ function makeResult(id, content, isError = false) {
12
+ return { jsonrpc: "2.0", id, result: { content, ...(isError && { isError: true }) } };
13
+ }
14
+ function makeError(id, code, message) {
15
+ return { jsonrpc: "2.0", id, error: { code, message } };
16
+ }
17
+ const TOOLS = [
18
+ {
19
+ name: "search_episodes",
20
+ description: "Search past conversations and task execution results using full-text search. Returns matching snippets with context.",
21
+ inputSchema: {
22
+ type: "object",
23
+ properties: {
24
+ query: { type: "string", description: "Search query (natural language)" },
25
+ source: {
26
+ type: "string",
27
+ enum: ["all", "conversations", "tasks"],
28
+ description: "Filter by source type (default: all)",
29
+ },
30
+ time_range: {
31
+ type: "object",
32
+ properties: {
33
+ after: { type: "string", description: "ISO 8601 timestamp — only results after this time" },
34
+ before: { type: "string", description: "ISO 8601 timestamp — only results before this time" },
35
+ },
36
+ description: "Optional time range filter",
37
+ },
38
+ limit: { type: "number", description: "Maximum results to return (default: 20)" },
39
+ },
40
+ required: ["query"],
41
+ },
42
+ },
43
+ {
44
+ name: "get_conversation_context",
45
+ description: "Retrieve messages from a specific conversation. Use after search_episodes to get full context around a match.",
46
+ inputSchema: {
47
+ type: "object",
48
+ properties: {
49
+ conversation_id: { type: "string", description: "Conversation ID from search results" },
50
+ limit: { type: "number", description: "Maximum messages to return (default: 50)" },
51
+ around_message_id: { type: "number", description: "Center the message window around this message ID" },
52
+ },
53
+ required: ["conversation_id"],
54
+ },
55
+ },
56
+ {
57
+ name: "get_task_history",
58
+ description: "Retrieve execution history for a scheduled task. Shows recent runs with output, errors, and exit codes.",
59
+ inputSchema: {
60
+ type: "object",
61
+ properties: {
62
+ task_id: { type: "string", description: "Task ID from search results" },
63
+ limit: { type: "number", description: "Maximum results to return (default: 10)" },
64
+ },
65
+ required: ["task_id"],
66
+ },
67
+ },
68
+ {
69
+ name: "list_recent_episodes",
70
+ description: "Browse recent conversations and task results chronologically. Use for discovering recent activity without a specific search query.",
71
+ inputSchema: {
72
+ type: "object",
73
+ properties: {
74
+ source: {
75
+ type: "string",
76
+ enum: ["all", "conversations", "tasks"],
77
+ description: "Filter by source type (default: all)",
78
+ },
79
+ limit: { type: "number", description: "Maximum results to return (default: 20)" },
80
+ before: { type: "string", description: "ISO 8601 timestamp for pagination — return results before this time" },
81
+ },
82
+ },
83
+ },
84
+ ];
85
+ function handleToolCall(id, name, args) {
86
+ try {
87
+ if (name === "search_episodes") {
88
+ const query = args.query;
89
+ if (!query || typeof query !== "string") {
90
+ respond(makeResult(id, [{ type: "text", text: "Error: query is required and must be a string" }], true));
91
+ return;
92
+ }
93
+ const results = searchEpisodes(query, {
94
+ source: args.source ?? undefined,
95
+ time_range: args.time_range,
96
+ limit: typeof args.limit === "number" ? args.limit : undefined,
97
+ });
98
+ respond(makeResult(id, [{ type: "text", text: JSON.stringify(results) }]));
99
+ return;
100
+ }
101
+ if (name === "get_conversation_context") {
102
+ const conversationId = args.conversation_id;
103
+ if (!conversationId || typeof conversationId !== "string") {
104
+ respond(makeResult(id, [{ type: "text", text: "Error: conversation_id is required and must be a string" }], true));
105
+ return;
106
+ }
107
+ const context = getConversationContext(conversationId, {
108
+ limit: typeof args.limit === "number" ? args.limit : undefined,
109
+ around_message_id: typeof args.around_message_id === "number" ? args.around_message_id : undefined,
110
+ });
111
+ respond(makeResult(id, [{ type: "text", text: JSON.stringify(context) }]));
112
+ return;
113
+ }
114
+ if (name === "get_task_history") {
115
+ const taskId = args.task_id;
116
+ if (!taskId || typeof taskId !== "string") {
117
+ respond(makeResult(id, [{ type: "text", text: "Error: task_id is required and must be a string" }], true));
118
+ return;
119
+ }
120
+ const history = getTaskHistory(taskId, {
121
+ limit: typeof args.limit === "number" ? args.limit : undefined,
122
+ });
123
+ respond(makeResult(id, [{ type: "text", text: JSON.stringify(history) }]));
124
+ return;
125
+ }
126
+ if (name === "list_recent_episodes") {
127
+ const episodes = listRecentEpisodes({
128
+ source: args.source ?? undefined,
129
+ limit: typeof args.limit === "number" ? args.limit : undefined,
130
+ before: typeof args.before === "string" ? args.before : undefined,
131
+ });
132
+ respond(makeResult(id, [{ type: "text", text: JSON.stringify(episodes) }]));
133
+ return;
134
+ }
135
+ respond(makeError(id, -32601, `Unknown tool: ${name}`));
136
+ }
137
+ catch (err) {
138
+ respond(makeResult(id, [{ type: "text", text: `Internal error: ${err.message}` }], true));
139
+ }
140
+ }
141
+ function handleMessage(line) {
142
+ let msg;
143
+ try {
144
+ msg = JSON.parse(line);
145
+ }
146
+ catch {
147
+ console.error(`[mcp-episodic] Malformed JSON-RPC input: ${line.slice(0, 200)}`);
148
+ return;
149
+ }
150
+ const id = msg.id;
151
+ const method = msg.method;
152
+ const params = msg.params;
153
+ if (typeof method !== "string") {
154
+ if (id !== undefined) {
155
+ respond(makeError(id, -32600, "Invalid request: missing method"));
156
+ }
157
+ return;
158
+ }
159
+ if (method === "initialize") {
160
+ respond({
161
+ jsonrpc: "2.0",
162
+ id,
163
+ result: {
164
+ protocolVersion: MCP_PROTOCOL_VERSION,
165
+ capabilities: { tools: {} },
166
+ serverInfo: { name: "goto-assistant-episodic", version: "1.0.0" },
167
+ },
168
+ });
169
+ return;
170
+ }
171
+ if (method === "notifications/initialized") {
172
+ return; // no response needed
173
+ }
174
+ if (method === "tools/list") {
175
+ respond({ jsonrpc: "2.0", id, result: { tools: TOOLS } });
176
+ return;
177
+ }
178
+ if (method === "tools/call") {
179
+ if (id === undefined)
180
+ return;
181
+ const toolName = params?.name;
182
+ if (!toolName) {
183
+ respond(makeError(id, -32602, "Invalid params: missing tool name"));
184
+ return;
185
+ }
186
+ const toolArgs = (params?.arguments ?? {});
187
+ handleToolCall(id, toolName, toolArgs);
188
+ return;
189
+ }
190
+ // Unknown method
191
+ if (id !== undefined) {
192
+ respond(makeError(id, -32601, `Method not found: ${method}`));
193
+ }
194
+ }
195
+ const rl = readline.createInterface({ input: process.stdin, terminal: false });
196
+ rl.on("line", handleMessage);
197
+ rl.on("close", () => process.exit(0));
198
+ //# sourceMappingURL=mcp-episodic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-episodic.js","sourceRoot":"","sources":["../src/mcp-episodic.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const CURRENT_CONFIG_VERSION = 2;
1
+ export declare const CURRENT_CONFIG_VERSION = 3;
2
2
  export declare function runMigrations(): void;
@@ -1,5 +1,5 @@
1
- import { isConfigured, loadConfig, saveConfig, loadMcpServers, saveMcpServers, MCP_CONFIG_PATH } from "./config.js";
2
- export const CURRENT_CONFIG_VERSION = 2;
1
+ import { isConfigured, loadConfig, saveConfig, loadMcpServers, saveMcpServers, syncEpisodicMcpServer, MCP_CONFIG_PATH } from "./config.js";
2
+ export const CURRENT_CONFIG_VERSION = 3;
3
3
  const migrations = {
4
4
  1: (servers) => {
5
5
  if (!("time" in servers)) {
@@ -15,6 +15,9 @@ const migrations = {
15
15
  cron.args[idx] = MCP_CONFIG_PATH;
16
16
  }
17
17
  },
18
+ 3: () => {
19
+ syncEpisodicMcpServer();
20
+ },
18
21
  };
19
22
  export function runMigrations() {
20
23
  if (!isConfigured())
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAwB,MAAM,aAAa,CAAC;AAE1I,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAIxC,MAAM,UAAU,GAA8B;IAC5C,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE;QACb,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACjD,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;QACnC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,YAAY,EAAE;QAAE,OAAO;IAE5B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,cAAc,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC;IAEjD,IAAI,cAAc,IAAI,sBAAsB;QAAE,OAAO;IAErD,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IAEjC,KAAK,IAAI,CAAC,GAAG,cAAc,GAAG,CAAC,EAAE,CAAC,IAAI,sBAAsB,EAAE,CAAC,EAAE,EAAE,CAAC;QAClE,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,OAAO;YAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,cAAc,CAAC,OAAO,CAAC,CAAC;IACxB,MAAM,CAAC,aAAa,GAAG,sBAAsB,CAAC;IAC9C,UAAU,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,qBAAqB,EAAE,eAAe,EAAwB,MAAM,aAAa,CAAC;AAEjK,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAIxC,MAAM,UAAU,GAA8B;IAC5C,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE;QACb,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACjD,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;QACnC,CAAC;IACH,CAAC;IACD,CAAC,EAAE,GAAG,EAAE;QACN,qBAAqB,EAAE,CAAC;IAC1B,CAAC;CACF,CAAC;AAEF,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,YAAY,EAAE;QAAE,OAAO;IAE5B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,cAAc,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC;IAEjD,IAAI,cAAc,IAAI,sBAAsB;QAAE,OAAO;IAErD,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IAEjC,KAAK,IAAI,CAAC,GAAG,cAAc,GAAG,CAAC,EAAE,CAAC,IAAI,sBAAsB,EAAE,CAAC,EAAE,EAAE,CAAC;QAClE,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,OAAO;YAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,cAAc,CAAC,OAAO,CAAC,CAAC;IACxB,MAAM,CAAC,aAAa,GAAG,sBAAsB,CAAC;IAC9C,UAAU,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC"}
package/dist/server.js CHANGED
@@ -3,7 +3,7 @@ import { WebSocketServer, WebSocket } from "ws";
3
3
  import http from "node:http";
4
4
  import path from "node:path";
5
5
  import multer from "multer";
6
- import { isConfigured, loadConfig, saveConfig, getMaskedConfig, loadMcpServers, saveMcpServers, getMaskedMcpServers, unmaskMcpServers, syncMessagingMcpServer, MCP_CONFIG_PATH } from "./config.js";
6
+ import { isConfigured, loadConfig, saveConfig, getMaskedConfig, loadMcpServers, saveMcpServers, getMaskedMcpServers, unmaskMcpServers, syncMessagingMcpServer, syncEpisodicMcpServer, MCP_CONFIG_PATH } from "./config.js";
7
7
  import { startWhatsApp, stopWhatsApp, getWhatsAppStatus, getWhatsAppQrDataUri } from "./whatsapp.js";
8
8
  import { listChannels, sendMessage, UnknownChannelError, ChannelUnavailableError } from "./messaging.js";
9
9
  import { restartCronServer, callCronTool, isCronRunning } from "./cron.js";
@@ -18,6 +18,7 @@ function reloadServices(config) {
18
18
  // Sync messaging MCP server entry in mcp.json (before cron restart so cron picks it up)
19
19
  // Note: WhatsApp channel registration happens inside whatsapp.ts on connection open/close
20
20
  syncMessagingMcpServer(cfg);
21
+ syncEpisodicMcpServer();
21
22
  restartCronServer().catch((err) => console.error("Failed to restart mcp-cron:", err));
22
23
  if (cfg?.whatsapp?.enabled) {
23
24
  startWhatsApp().catch((err) => console.error("Failed to start WhatsApp:", err));
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "goto-assistant",
3
- "version": "0.6.2",
3
+ "version": "0.7.0",
4
4
  "description": "Lightweight, self-hosted personal AI assistant",
5
5
  "license": "MIT",
6
6
  "packageManager": "pnpm@10.29.3",
7
7
  "type": "module",
8
8
  "bin": {
9
9
  "goto-assistant": "./bin/goto-assistant.js",
10
- "goto-assistant-messaging": "./bin/goto-assistant-messaging.js"
10
+ "goto-assistant-messaging": "./bin/goto-assistant-messaging.js",
11
+ "goto-assistant-episodic": "./bin/goto-assistant-episodic.js"
11
12
  },
12
13
  "files": [
13
14
  "dist/",