goto-assistant 0.5.3 → 0.6.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.
- package/README.md +5 -56
- package/bin/goto-assistant-messaging.js +2 -0
- package/dist/agents/claude.js +11 -9
- package/dist/agents/claude.js.map +1 -1
- package/dist/agents/openai.d.ts +8 -0
- package/dist/agents/openai.js +88 -14
- package/dist/agents/openai.js.map +1 -1
- package/dist/config.d.ts +14 -0
- package/dist/config.js +42 -0
- package/dist/config.js.map +1 -1
- package/dist/cron.d.ts +2 -0
- package/dist/cron.js +15 -0
- package/dist/cron.js.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp-messaging.d.ts +5 -0
- package/dist/mcp-messaging.js +164 -0
- package/dist/mcp-messaging.js.map +1 -0
- package/dist/messaging.d.ts +18 -0
- package/dist/messaging.js +35 -0
- package/dist/messaging.js.map +1 -0
- package/dist/server.js +75 -4
- package/dist/server.js.map +1 -1
- package/dist/uploads.d.ts +9 -0
- package/dist/uploads.js +41 -13
- package/dist/uploads.js.map +1 -1
- package/dist/whatsapp.d.ts +14 -0
- package/dist/whatsapp.js +176 -16
- package/dist/whatsapp.js.map +1 -1
- package/package.json +6 -2
package/README.md
CHANGED
|
@@ -173,51 +173,9 @@ Messages go through the same AI pipeline as the web chat. The agent only respond
|
|
|
173
173
|
|
|
174
174
|
## Architecture
|
|
175
175
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
│ ┌───────────────────────┐ ┌────────────┐ │ │ │
|
|
180
|
-
│ │ index.html │ │ setup.html │ │ │ Self-chat sends │
|
|
181
|
-
│ │ ┌───────┐ ┌─────────┐ │ │ (Config + │ │ │ messages to agent │
|
|
182
|
-
│ │ │ Chat │ │ Tasks │ │ │ Wizard) │ │ │ │
|
|
183
|
-
│ │ │ │ │Dashboard│ │ │ │ │ └──────────┬──────────┘
|
|
184
|
-
│ │ └───────┘ └─────────┘ │ └─────┬──────┘ │ │
|
|
185
|
-
│ └───────────┬────────────┘ │ │ WhatsApp servers
|
|
186
|
-
│ │ WebSocket │ HTTP │ │ WebSocket
|
|
187
|
-
└──────────────┼─────────────────────┼────────┘ │
|
|
188
|
-
│ │ │
|
|
189
|
-
┌──────────────┼─────────────────────┼──────────────────────┼───────┐
|
|
190
|
-
│ server.ts │ │ │ │
|
|
191
|
-
│ ┌───────────┴───┐ ┌─────────────┴─┐ ┌─────────────────┴──┐ │
|
|
192
|
-
│ │ WebSocket │ │ REST API │ │ whatsapp.ts │ │
|
|
193
|
-
│ │ Handler │ │ /api/* │ │ │ │
|
|
194
|
-
│ └───────┬───────┘ └───────────────┘ └──────────┬─────────┘ │
|
|
195
|
-
│ │ │ │
|
|
196
|
-
│ ┌───────┴─────────────────────────────────────────┴──┐ │
|
|
197
|
-
│ │ router.ts ──── routes by provider │ │
|
|
198
|
-
│ └──┬─────────┬───────────────────────────────────────┘ │
|
|
199
|
-
│ │ │ │
|
|
200
|
-
│ ┌──┴───┐ ┌──┴───┐ ┌────────────────────────────────── ┐ │
|
|
201
|
-
│ │Claude│ │OpenAI│───▶│ MCP Servers │ │
|
|
202
|
-
│ │Agent │ │Agent │ │ │ │
|
|
203
|
-
│ │ SDK │ │ SDK │ │ ┌────────┐ ┌────────────┐ ··· │ │
|
|
204
|
-
│ └──┬───┘ └──┬───┘ │ │ memory │ │ filesystem │ │ │
|
|
205
|
-
│ │ │ │ └────────┘ └────────────┘ │ │
|
|
206
|
-
│ │ │ │ ▲ ▲ │ │
|
|
207
|
-
│ │ │ │ │ │ │ │
|
|
208
|
-
│ │ │ │ ┌────┴────────────┴───────────┐ │ │
|
|
209
|
-
│ │ │ │ │ mcp-cron │ │ │
|
|
210
|
-
│ │ │ │ │ AI tasks (w/ MCP access) │ │ │
|
|
211
|
-
│ │ │ │ │ + shell commands │ │ │
|
|
212
|
-
│ │ │ │ └─────────────────────────────┘ │ │
|
|
213
|
-
│ │ │ └────────────────────────────────────┘ │
|
|
214
|
-
│ │ │ │
|
|
215
|
-
│ ┌──┴─────────┴──┐ ┌────────────┐ │
|
|
216
|
-
│ │ sessions.ts │───▶│ SQLite DB │ │
|
|
217
|
-
│ │ (persistence) │ │ data/ │ │
|
|
218
|
-
│ └───────────────┘ └────────────┘ │
|
|
219
|
-
└───────────────────────────────────────────────────────────────────┘
|
|
220
|
-
```
|
|
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
|
+
|
|
178
|
+
See [docs/architecture.md](docs/architecture.md) for the full architecture diagram.
|
|
221
179
|
|
|
222
180
|
## Development Setup
|
|
223
181
|
|
|
@@ -256,15 +214,6 @@ The assistant comes pre-configured with these MCP servers:
|
|
|
256
214
|
| **filesystem** | [`@modelcontextprotocol/server-filesystem`](https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem) | Read, write, and manage local files |
|
|
257
215
|
| **time** | [`mcp-server-time`](https://github.com/modelcontextprotocol/servers/tree/main/src/time) | Current time and timezone conversions |
|
|
258
216
|
| **cron** | [`mcp-cron`](https://github.com/jolks/mcp-cron) | Schedule or run on-demand shell commands and AI prompts with access to MCP servers |
|
|
217
|
+
| **messaging** | built-in | Send messages via connected platforms (WhatsApp, more coming) |
|
|
259
218
|
|
|
260
|
-
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.
|
|
261
|
-
|
|
262
|
-
### Claude Code MCP servers
|
|
263
|
-
|
|
264
|
-
If you use [Claude Code](https://claude.ai/code), copy the example config to get MCP servers for development:
|
|
265
|
-
|
|
266
|
-
```bash
|
|
267
|
-
cp .mcp.json.example .mcp.json
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
Edit `.mcp.json` to set your preferred AI provider/model for the cron server. This file is gitignored since it contains personal preferences.
|
|
219
|
+
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.
|
package/dist/agents/claude.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { query } from "@anthropic-ai/claude-agent-sdk";
|
|
2
2
|
import { MAX_AGENT_TURNS, MEMORY_FILE_PATH, MEMORY_SERVER_NAME } from "../config.js";
|
|
3
|
+
import { extractFileId, formatUploadRef } from "../uploads.js";
|
|
3
4
|
export async function runClaude(prompt, config, mcpServersConfig, onChunk, options) {
|
|
4
5
|
const { resumeSessionId, attachments, systemPromptOverride } = options ?? {};
|
|
5
6
|
const env = {
|
|
@@ -28,23 +29,24 @@ export async function runClaude(prompt, config, mcpServersConfig, onChunk, optio
|
|
|
28
29
|
permissionMode: "bypassPermissions",
|
|
29
30
|
allowDangerouslySkipPermissions: true,
|
|
30
31
|
allowedTools: Object.keys(mcpServersConfig).map((name) => `mcp__${name}__*`),
|
|
31
|
-
systemPrompt: systemPromptOverride || "You are a helpful personal AI assistant. You have access to MCP tools for memory, filesystem, browser automation, and scheduled tasks. Use them when appropriate. IMPORTANT: At the start of each conversation, you MUST call the memory read_graph tool to retrieve all known context about the user before responding to their first message.",
|
|
32
|
+
systemPrompt: systemPromptOverride || "You are a helpful personal AI assistant. You have access to MCP tools for memory, filesystem, browser automation, and scheduled tasks. Use them when appropriate. You can also send messages to the user via connected messaging channels (e.g. WhatsApp) using the messaging tools — send to self or to any phone number. IMPORTANT: At the start of each conversation, you MUST call the memory read_graph tool to retrieve all known context about the user before responding to their first message.",
|
|
32
33
|
env,
|
|
33
34
|
maxTurns: MAX_AGENT_TURNS,
|
|
34
35
|
};
|
|
35
36
|
if (resumeSessionId) {
|
|
36
37
|
queryOptions.resume = resumeSessionId;
|
|
37
38
|
}
|
|
38
|
-
//
|
|
39
|
-
//
|
|
40
|
-
//
|
|
39
|
+
// Pass image file paths in the prompt so Claude reads them with its built-in
|
|
40
|
+
// Read tool (which returns proper ImageFileOutput for image files).
|
|
41
|
+
// Note: the Agent SDK's query() AsyncIterable<SDKUserMessage> path does NOT
|
|
42
|
+
// support image content blocks — it serializes them as text over IPC.
|
|
41
43
|
let queryPrompt = prompt;
|
|
42
44
|
if (attachments && attachments.length > 0) {
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
.map((att) => att.filePath);
|
|
46
|
-
|
|
47
|
-
queryPrompt = `${prompt}\n\n[The user attached ${paths.length} image(s).
|
|
45
|
+
const withPaths = attachments.filter((att) => att.filePath);
|
|
46
|
+
if (withPaths.length > 0) {
|
|
47
|
+
const paths = withPaths.map((att) => att.filePath);
|
|
48
|
+
const refs = withPaths.map(a => formatUploadRef(extractFileId(a.filePath), a.filename, a.mimeType));
|
|
49
|
+
queryPrompt = `${refs.join("\n")}\n${prompt}\n\n[The user attached ${paths.length} image(s). You MUST use the Read tool to view each image before responding. Do NOT describe images without reading them first. Image paths:\n${paths.join("\n")}]`;
|
|
48
50
|
}
|
|
49
51
|
}
|
|
50
52
|
let sessionId = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/agents/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/agents/claude.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/openai.d.ts
CHANGED
|
@@ -5,4 +5,12 @@ export interface OpenAIOptions {
|
|
|
5
5
|
history?: HistoryMessage[];
|
|
6
6
|
systemPromptOverride?: string;
|
|
7
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* Trim conversation history to avoid 413 errors from size-constrained gateways.
|
|
10
|
+
* 1. Cap message count to `maxMessages` (keeps most recent history + current message).
|
|
11
|
+
* 2. Strip `input_image` blocks from messages outside the `recentImageWindow`,
|
|
12
|
+
* replacing them with a text placeholder.
|
|
13
|
+
* Returns a new array — does not mutate the original.
|
|
14
|
+
*/
|
|
15
|
+
export declare function trimHistory(inputMessages: Array<Record<string, unknown>>, maxMessages?: number, recentImageWindow?: number): Array<Record<string, unknown>>;
|
|
8
16
|
export declare function runOpenAI(prompt: string, config: Config, mcpServersConfig: Record<string, McpServerConfig>, onChunk: (text: string) => void, options?: OpenAIOptions): Promise<void>;
|
package/dist/agents/openai.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Agent,
|
|
1
|
+
import { Agent, Runner, MCPServerStdio, shellTool, MaxTurnsExceededError, setOpenAIAPI, OpenAIProvider } from "@openai/agents";
|
|
2
2
|
import { exec } from "node:child_process";
|
|
3
3
|
import { promisify } from "node:util";
|
|
4
|
-
import { MAX_AGENT_TURNS, MEMORY_FILE_PATH, MEMORY_SERVER_NAME } from "../config.js";
|
|
4
|
+
import { MAX_AGENT_TURNS, MAX_HISTORY_MESSAGES, RECENT_IMAGE_WINDOW, MEMORY_FILE_PATH, MEMORY_SERVER_NAME, isChatCompletionsGateway } from "../config.js";
|
|
5
5
|
import { parseMessageContent } from "../sessions.js";
|
|
6
|
-
import { getUpload } from "../uploads.js";
|
|
6
|
+
import { getUpload, ALLOWED_IMAGE_TYPES, extractFileId, formatUploadRef } from "../uploads.js";
|
|
7
7
|
const execAsync = promisify(exec);
|
|
8
8
|
class LocalShell {
|
|
9
9
|
async run(action) {
|
|
@@ -35,8 +35,60 @@ class LocalShell {
|
|
|
35
35
|
return { output };
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Trim conversation history to avoid 413 errors from size-constrained gateways.
|
|
40
|
+
* 1. Cap message count to `maxMessages` (keeps most recent history + current message).
|
|
41
|
+
* 2. Strip `input_image` blocks from messages outside the `recentImageWindow`,
|
|
42
|
+
* replacing them with a text placeholder.
|
|
43
|
+
* Returns a new array — does not mutate the original.
|
|
44
|
+
*/
|
|
45
|
+
export function trimHistory(inputMessages, maxMessages = MAX_HISTORY_MESSAGES, recentImageWindow = RECENT_IMAGE_WINDOW) {
|
|
46
|
+
if (inputMessages.length === 0)
|
|
47
|
+
return [];
|
|
48
|
+
// Separate current message (last) from history
|
|
49
|
+
const current = inputMessages[inputMessages.length - 1];
|
|
50
|
+
const history = inputMessages.slice(0, -1);
|
|
51
|
+
// Cap history to maxMessages
|
|
52
|
+
const trimmed = history.length > maxMessages
|
|
53
|
+
? history.slice(history.length - maxMessages)
|
|
54
|
+
: history.slice();
|
|
55
|
+
// Strip images from messages outside the recent window
|
|
56
|
+
const imageKeepStart = trimmed.length - recentImageWindow;
|
|
57
|
+
const result = trimmed.map((msg, i) => {
|
|
58
|
+
if (i >= imageKeepStart)
|
|
59
|
+
return msg;
|
|
60
|
+
if (!Array.isArray(msg.content))
|
|
61
|
+
return msg;
|
|
62
|
+
const content = msg.content;
|
|
63
|
+
const hasImages = content.some(block => block.type === "input_image");
|
|
64
|
+
if (!hasImages)
|
|
65
|
+
return msg;
|
|
66
|
+
const imageCount = content.filter(block => block.type === "input_image").length;
|
|
67
|
+
const placeholder = imageCount === 1
|
|
68
|
+
? "[Image previously shared]"
|
|
69
|
+
: `[${imageCount} images previously shared]`;
|
|
70
|
+
const newContent = [
|
|
71
|
+
{ type: "input_text", text: placeholder },
|
|
72
|
+
...content.filter(block => block.type !== "input_image"),
|
|
73
|
+
];
|
|
74
|
+
return { ...msg, content: newContent };
|
|
75
|
+
});
|
|
76
|
+
result.push(current);
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
38
79
|
export async function runOpenAI(prompt, config, mcpServersConfig, onChunk, options) {
|
|
39
80
|
const { attachments, history, systemPromptOverride } = options || {};
|
|
81
|
+
// Use Chat Completions API for gateways that don't support the Responses API
|
|
82
|
+
const useChatCompletions = isChatCompletionsGateway(config.openai.baseUrl);
|
|
83
|
+
setOpenAIAPI(useChatCompletions ? "chat_completions" : "responses");
|
|
84
|
+
// Create a fresh provider + runner each call so config changes (API key, base
|
|
85
|
+
// URL) take effect immediately. Both the default OpenAIProvider and default
|
|
86
|
+
// Runner are cached singletons that never refresh, so we bypass them entirely.
|
|
87
|
+
const provider = new OpenAIProvider({
|
|
88
|
+
apiKey: config.openai.apiKey,
|
|
89
|
+
baseURL: config.openai.baseUrl || undefined,
|
|
90
|
+
});
|
|
91
|
+
const runner = new Runner({ modelProvider: provider });
|
|
40
92
|
const env = {
|
|
41
93
|
...process.env,
|
|
42
94
|
OPENAI_API_KEY: config.openai.apiKey,
|
|
@@ -64,10 +116,11 @@ export async function runOpenAI(prompt, config, mcpServersConfig, onChunk, optio
|
|
|
64
116
|
}
|
|
65
117
|
const agent = new Agent({
|
|
66
118
|
name: "goto-assistant",
|
|
67
|
-
instructions: systemPromptOverride || "You are a helpful personal AI assistant. You have access to MCP tools for memory, filesystem, browser automation, and scheduled tasks. You also have a shell tool to execute commands on the host machine. Use them when appropriate. IMPORTANT: At the start of each conversation, you MUST call the memory read_graph tool to retrieve all known context about the user before responding to their first message.",
|
|
119
|
+
instructions: systemPromptOverride || "You are a helpful personal AI assistant. You have access to MCP tools for memory, filesystem, browser automation, and scheduled tasks. You also have a shell tool to execute commands on the host machine. You can also send messages to the user via connected messaging channels (e.g. WhatsApp) using the messaging tools — send to self or to any phone number. Use them when appropriate. IMPORTANT: At the start of each conversation, you MUST call the memory read_graph tool to retrieve all known context about the user before responding to their first message.",
|
|
68
120
|
model: config.openai.model,
|
|
69
121
|
mcpServers,
|
|
70
|
-
|
|
122
|
+
// shellTool is a hosted tool — only available with the Responses API
|
|
123
|
+
tools: useChatCompletions ? [] : [
|
|
71
124
|
shellTool({ shell: new LocalShell() }),
|
|
72
125
|
],
|
|
73
126
|
});
|
|
@@ -87,16 +140,27 @@ export async function runOpenAI(prompt, config, mcpServersConfig, onChunk, optio
|
|
|
87
140
|
else if (parsed.attachments && parsed.attachments.length > 0) {
|
|
88
141
|
// Re-read image data for user messages that had attachments
|
|
89
142
|
const content = [];
|
|
143
|
+
const refs = [];
|
|
90
144
|
for (const att of parsed.attachments) {
|
|
145
|
+
// Use stored mimeType (accurate at save time); skip non-image attachments
|
|
146
|
+
const mimeType = att.mimeType;
|
|
147
|
+
const ref = formatUploadRef(att.fileId, att.filename, mimeType);
|
|
148
|
+
if (!ALLOWED_IMAGE_TYPES.includes(mimeType)) {
|
|
149
|
+
refs.push(ref);
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
91
152
|
const upload = getUpload(att.fileId);
|
|
92
153
|
if (upload) {
|
|
93
154
|
content.push({
|
|
94
155
|
type: "input_image",
|
|
95
|
-
image: `data:${
|
|
156
|
+
image: `data:${mimeType};base64,${upload.data.toString("base64")}`,
|
|
96
157
|
});
|
|
158
|
+
refs.push(ref);
|
|
97
159
|
}
|
|
98
160
|
}
|
|
99
|
-
|
|
161
|
+
// Include upload references so the model can use send_message media with upload:{fileId}
|
|
162
|
+
const text = refs.length > 0 ? `${refs.join("\n")}\n${parsed.text}` : parsed.text;
|
|
163
|
+
content.push({ type: "input_text", text });
|
|
100
164
|
inputMessages.push({ role: "user", content });
|
|
101
165
|
}
|
|
102
166
|
else {
|
|
@@ -107,21 +171,31 @@ export async function runOpenAI(prompt, config, mcpServersConfig, onChunk, optio
|
|
|
107
171
|
// Add current message
|
|
108
172
|
if (attachments && attachments.length > 0) {
|
|
109
173
|
const content = [];
|
|
174
|
+
const refs = [];
|
|
110
175
|
for (const att of attachments) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}
|
|
176
|
+
// Build upload reference for the model to use with send_message media
|
|
177
|
+
if (att.filePath) {
|
|
178
|
+
refs.push(formatUploadRef(extractFileId(att.filePath), att.filename, att.mimeType));
|
|
179
|
+
}
|
|
180
|
+
// Only include image types as input_image blocks; skip non-image attachments
|
|
181
|
+
if (ALLOWED_IMAGE_TYPES.includes(att.mimeType)) {
|
|
182
|
+
content.push({
|
|
183
|
+
type: "input_image",
|
|
184
|
+
image: `data:${att.mimeType};base64,${att.data.toString("base64")}`,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
115
187
|
}
|
|
116
|
-
|
|
188
|
+
const text = refs.length > 0 ? `${refs.join("\n")}\n${prompt}` : prompt;
|
|
189
|
+
content.push({ type: "input_text", text });
|
|
117
190
|
inputMessages.push({ role: "user", content });
|
|
118
191
|
}
|
|
119
192
|
else {
|
|
120
193
|
inputMessages.push({ role: "user", content: prompt });
|
|
121
194
|
}
|
|
122
|
-
const
|
|
195
|
+
const trimmedMessages = trimHistory(inputMessages);
|
|
196
|
+
const input = trimmedMessages.length === 1 && !history?.length && !attachments?.length ? prompt : trimmedMessages;
|
|
123
197
|
try {
|
|
124
|
-
const result = await run(agent, input, { stream: true, maxTurns: MAX_AGENT_TURNS });
|
|
198
|
+
const result = await runner.run(agent, input, { stream: true, maxTurns: MAX_AGENT_TURNS });
|
|
125
199
|
for await (const event of result) {
|
|
126
200
|
if (event.type === "raw_model_stream_event" &&
|
|
127
201
|
event.data?.type === "output_text_delta") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/agents/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/agents/openai.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -30,6 +30,9 @@ export declare const MCP_CONFIG_PATH: string;
|
|
|
30
30
|
export declare const MEMORY_FILE_PATH: string;
|
|
31
31
|
export declare const MEMORY_SERVER_NAME = "memory";
|
|
32
32
|
export declare const MAX_AGENT_TURNS = 30;
|
|
33
|
+
export declare const MAX_HISTORY_MESSAGES = 100;
|
|
34
|
+
export declare const RECENT_IMAGE_WINDOW = 10;
|
|
35
|
+
export declare const MCP_PROTOCOL_VERSION = "2024-11-05";
|
|
33
36
|
export declare function isConfigured(): boolean;
|
|
34
37
|
export declare function loadConfig(): Config;
|
|
35
38
|
export declare function saveConfig(config: Config): void;
|
|
@@ -47,4 +50,15 @@ export declare function isMaskedValue(value: string): boolean;
|
|
|
47
50
|
export declare function unmaskMcpServers(incoming: Record<string, McpServerConfig>, existing: Record<string, McpServerConfig>, config?: Config): Record<string, McpServerConfig>;
|
|
48
51
|
export declare function maskApiKey(key: string): string;
|
|
49
52
|
export declare function getMaskedConfig(config: Config): Config;
|
|
53
|
+
export declare const MESSAGING_SERVER_NAME = "messaging";
|
|
54
|
+
/**
|
|
55
|
+
* Auto-manage the messaging MCP server entry in mcp.json.
|
|
56
|
+
* Adds when any messaging channel is enabled; removes when none are.
|
|
57
|
+
* Updates GOTO_ASSISTANT_URL when the port changes.
|
|
58
|
+
*/
|
|
59
|
+
export declare function syncMessagingMcpServer(config?: Config): void;
|
|
60
|
+
/** Known gateways that only support Chat Completions (not the Responses API). */
|
|
61
|
+
export declare const CHAT_COMPLETIONS_ONLY_GATEWAYS: readonly ["api.kilo.ai"];
|
|
62
|
+
/** Check if a base URL points to a known Chat Completions-only gateway. */
|
|
63
|
+
export declare function isChatCompletionsGateway(baseUrl: string | undefined): boolean;
|
|
50
64
|
export declare function getMaskedMcpServers(servers: Record<string, McpServerConfig>): Record<string, McpServerConfig>;
|
package/dist/config.js
CHANGED
|
@@ -6,6 +6,9 @@ export const MCP_CONFIG_PATH = path.join(DATA_DIR, "mcp.json");
|
|
|
6
6
|
export const MEMORY_FILE_PATH = path.join(DATA_DIR, "memory.json");
|
|
7
7
|
export const MEMORY_SERVER_NAME = "memory";
|
|
8
8
|
export const MAX_AGENT_TURNS = 30;
|
|
9
|
+
export const MAX_HISTORY_MESSAGES = 100;
|
|
10
|
+
export const RECENT_IMAGE_WINDOW = 10;
|
|
11
|
+
export const MCP_PROTOCOL_VERSION = "2024-11-05";
|
|
9
12
|
export function isConfigured() {
|
|
10
13
|
return fs.existsSync(CONFIG_PATH);
|
|
11
14
|
}
|
|
@@ -103,6 +106,45 @@ export function getMaskedConfig(config) {
|
|
|
103
106
|
openai: { ...config.openai, apiKey: maskApiKey(config.openai.apiKey) },
|
|
104
107
|
};
|
|
105
108
|
}
|
|
109
|
+
export const MESSAGING_SERVER_NAME = "messaging";
|
|
110
|
+
/**
|
|
111
|
+
* Auto-manage the messaging MCP server entry in mcp.json.
|
|
112
|
+
* Adds when any messaging channel is enabled; removes when none are.
|
|
113
|
+
* Updates GOTO_ASSISTANT_URL when the port changes.
|
|
114
|
+
*/
|
|
115
|
+
export function syncMessagingMcpServer(config) {
|
|
116
|
+
const cfg = config ?? (isConfigured() ? loadConfig() : undefined);
|
|
117
|
+
if (!cfg)
|
|
118
|
+
return;
|
|
119
|
+
const servers = loadMcpServers();
|
|
120
|
+
const hasMessagingChannel = cfg.whatsapp?.enabled === true;
|
|
121
|
+
const port = cfg.server.port;
|
|
122
|
+
const url = `http://localhost:${port}`;
|
|
123
|
+
if (hasMessagingChannel) {
|
|
124
|
+
// Always resolve to dist/ — works in both dev (src/../dist/) and prod (dist/../dist/)
|
|
125
|
+
const entryPoint = path.resolve(import.meta.dirname, "..", "dist", "mcp-messaging.js");
|
|
126
|
+
const desired = { command: "node", args: [entryPoint], env: { GOTO_ASSISTANT_URL: url } };
|
|
127
|
+
// Key order is deterministic (both objects built programmatically).
|
|
128
|
+
// Hand-edited mcp.json with different key order causes a harmless re-write.
|
|
129
|
+
if (JSON.stringify(servers[MESSAGING_SERVER_NAME]) === JSON.stringify(desired))
|
|
130
|
+
return;
|
|
131
|
+
servers[MESSAGING_SERVER_NAME] = desired;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
if (!(MESSAGING_SERVER_NAME in servers))
|
|
135
|
+
return;
|
|
136
|
+
delete servers[MESSAGING_SERVER_NAME];
|
|
137
|
+
}
|
|
138
|
+
saveMcpServers(servers);
|
|
139
|
+
}
|
|
140
|
+
/** Known gateways that only support Chat Completions (not the Responses API). */
|
|
141
|
+
export const CHAT_COMPLETIONS_ONLY_GATEWAYS = ["api.kilo.ai"];
|
|
142
|
+
/** Check if a base URL points to a known Chat Completions-only gateway. */
|
|
143
|
+
export function isChatCompletionsGateway(baseUrl) {
|
|
144
|
+
if (!baseUrl)
|
|
145
|
+
return false;
|
|
146
|
+
return CHAT_COMPLETIONS_ONLY_GATEWAYS.some((gw) => baseUrl.includes(gw));
|
|
147
|
+
}
|
|
106
148
|
export function getMaskedMcpServers(servers) {
|
|
107
149
|
return Object.fromEntries(Object.entries(servers).map(([name, server]) => [
|
|
108
150
|
name,
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAqB7B,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC9D,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAC3C,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/cron.d.ts
CHANGED
|
@@ -12,3 +12,5 @@ export declare function callCronTool(toolName: string, args?: Record<string, unk
|
|
|
12
12
|
export declare function startCronServer(): Promise<void>;
|
|
13
13
|
export declare function restartCronServer(): Promise<void>;
|
|
14
14
|
export declare function stopCronServer(): Promise<void>;
|
|
15
|
+
/** Synchronous stop for use in process.on("exit") handler. */
|
|
16
|
+
export declare function stopCronSync(): void;
|
package/dist/cron.js
CHANGED
|
@@ -154,6 +154,21 @@ export async function stopCronServer() {
|
|
|
154
154
|
const proc = cronProc;
|
|
155
155
|
cronProc = null;
|
|
156
156
|
lastCronFingerprint = null;
|
|
157
|
+
// Wait for process to actually exit after sending SIGTERM.
|
|
158
|
+
// The broken stdin pipe causes mcp-cron to exit on EOF.
|
|
159
|
+
const exited = new Promise((resolve) => {
|
|
160
|
+
proc.on("exit", () => resolve());
|
|
161
|
+
setTimeout(resolve, 5000); // fallback: don't block shutdown forever
|
|
162
|
+
});
|
|
163
|
+
killProc(proc);
|
|
164
|
+
await exited;
|
|
165
|
+
}
|
|
166
|
+
/** Synchronous stop for use in process.on("exit") handler. */
|
|
167
|
+
export function stopCronSync() {
|
|
168
|
+
if (!cronProc)
|
|
169
|
+
return;
|
|
170
|
+
const proc = cronProc;
|
|
171
|
+
cronProc = null;
|
|
157
172
|
killProc(proc);
|
|
158
173
|
}
|
|
159
174
|
//# sourceMappingURL=cron.js.map
|
package/dist/cron.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../src/cron.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../src/cron.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createApp, createServer } from "./server.js";
|
|
2
|
-
import { isConfigured, loadConfig } from "./config.js";
|
|
2
|
+
import { isConfigured, loadConfig, syncMessagingMcpServer } from "./config.js";
|
|
3
3
|
import { runMigrations } from "./migrations.js";
|
|
4
|
-
import { startCronServer, stopCronServer } from "./cron.js";
|
|
4
|
+
import { startCronServer, stopCronServer, stopCronSync } from "./cron.js";
|
|
5
5
|
import { startWhatsApp, stopWhatsApp } from "./whatsapp.js";
|
|
6
6
|
runMigrations();
|
|
7
7
|
const app = createApp();
|
|
@@ -13,8 +13,10 @@ server.listen(port, () => {
|
|
|
13
13
|
console.log("First run detected — visit the URL above to configure.");
|
|
14
14
|
}
|
|
15
15
|
else {
|
|
16
|
-
startCronServer().catch((err) => console.error("Failed to start mcp-cron:", err));
|
|
17
16
|
const config = loadConfig();
|
|
17
|
+
// Channel registration happens inside whatsapp.ts on connection open
|
|
18
|
+
syncMessagingMcpServer(config);
|
|
19
|
+
startCronServer().catch((err) => console.error("Failed to start mcp-cron:", err));
|
|
18
20
|
if (config.whatsapp?.enabled) {
|
|
19
21
|
startWhatsApp().catch((err) => console.error("Failed to start WhatsApp:", err));
|
|
20
22
|
}
|
|
@@ -28,4 +30,5 @@ function shutdown() {
|
|
|
28
30
|
}
|
|
29
31
|
process.on("SIGTERM", shutdown);
|
|
30
32
|
process.on("SIGINT", shutdown);
|
|
33
|
+
process.on("exit", () => { stopCronSync(); });
|
|
31
34
|
//# sourceMappingURL=index.js.map
|
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,MAAM,aAAa,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,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"}
|