goto-assistant 0.1.9 → 0.2.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
@@ -64,9 +64,10 @@ That one `npx` command gives you an AI assistant that can remember across conver
64
64
  │ Browser │
65
65
  │ ┌──────────────┐ ┌──────────────┐ │
66
66
  │ │ index.html │ │ setup.html │ │
67
- │ │ (Chat UI) │ │ (Config) │ │
67
+ │ │ (Chat UI) │ │ (Config + │ │
68
+ │ │ │ │ Wizard) │ │
68
69
  │ └──────┬───────┘ └──────┬───────┘ │
69
- │ │ WebSocket │ HTTP POST
70
+ │ │ WebSocket │ HTTP POST / WebSocket
70
71
  └─────────┼──────────────────┼──────────────────────────────────────┘
71
72
  │ │
72
73
  ┌─────────┼──────────────────┼──────────────────────────────────────┐
@@ -140,7 +141,7 @@ The assistant comes pre-configured with these MCP servers:
140
141
  | **time** | [`mcp-server-time`](https://github.com/modelcontextprotocol/servers/tree/main/src/time) | Current time and timezone conversions |
141
142
  | **cron** | [`mcp-cron`](https://github.com/jolks/mcp-cron) | Schedule or run on-demand shell commands and AI prompts with access to MCP servers |
142
143
 
143
- Add your own through the setup page 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.
144
+ 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.
144
145
 
145
146
  ### Claude Code MCP servers
146
147
 
@@ -1,7 +1,12 @@
1
1
  import type { Config, McpServerConfig } from "../config.js";
2
2
  import type { Attachment } from "./router.js";
3
+ export interface ClaudeOptions {
4
+ resumeSessionId?: string;
5
+ attachments?: Attachment[];
6
+ systemPromptOverride?: string;
7
+ }
3
8
  export interface AgentResponse {
4
9
  sessionId: string | null;
5
10
  conversationId: string;
6
11
  }
7
- export declare function runClaude(prompt: string, config: Config, mcpServersConfig: Record<string, McpServerConfig>, onChunk: (text: string) => void, resumeSessionId?: string, attachments?: Attachment[]): Promise<AgentResponse>;
12
+ export declare function runClaude(prompt: string, config: Config, mcpServersConfig: Record<string, McpServerConfig>, onChunk: (text: string) => void, options?: ClaudeOptions): Promise<AgentResponse>;
@@ -1,6 +1,7 @@
1
1
  import { query } from "@anthropic-ai/claude-agent-sdk";
2
2
  import { MEMORY_FILE_PATH, MEMORY_SERVER_NAME } from "../config.js";
3
- export async function runClaude(prompt, config, mcpServersConfig, onChunk, resumeSessionId, attachments) {
3
+ export async function runClaude(prompt, config, mcpServersConfig, onChunk, options) {
4
+ const { resumeSessionId, attachments, systemPromptOverride } = options ?? {};
4
5
  const env = {
5
6
  ...process.env,
6
7
  ANTHROPIC_API_KEY: config.claude.apiKey,
@@ -21,18 +22,18 @@ export async function runClaude(prompt, config, mcpServersConfig, onChunk, resum
21
22
  env: serverEnv,
22
23
  };
23
24
  }
24
- const options = {
25
+ const queryOptions = {
25
26
  model: config.claude.model,
26
27
  mcpServers,
27
28
  permissionMode: "bypassPermissions",
28
29
  allowDangerouslySkipPermissions: true,
29
30
  allowedTools: Object.keys(mcpServersConfig).map((name) => `mcp__${name}__*`),
30
- systemPrompt: "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.",
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.",
31
32
  env,
32
33
  maxTurns: 30,
33
34
  };
34
35
  if (resumeSessionId) {
35
- options.resume = resumeSessionId;
36
+ queryOptions.resume = resumeSessionId;
36
37
  }
37
38
  // When attachments are present, reference file paths in the prompt so Claude
38
39
  // can read them via the filesystem MCP server's read_media_file tool.
@@ -47,7 +48,7 @@ export async function runClaude(prompt, config, mcpServersConfig, onChunk, resum
47
48
  }
48
49
  }
49
50
  let sessionId = null;
50
- const result = query({ prompt: queryPrompt, options });
51
+ const result = query({ prompt: queryPrompt, options: queryOptions });
51
52
  for await (const message of result) {
52
53
  if (message.type === "system" && message.subtype === "init") {
53
54
  sessionId = message.session_id ?? null;
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/agents/claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/agents/claude.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,8 @@
1
1
  import type { Config, McpServerConfig } from "../config.js";
2
2
  import type { Attachment, HistoryMessage } from "./router.js";
3
- export declare function runOpenAI(prompt: string, config: Config, mcpServersConfig: Record<string, McpServerConfig>, onChunk: (text: string) => void, attachments?: Attachment[], history?: HistoryMessage[]): Promise<void>;
3
+ export interface OpenAIOptions {
4
+ attachments?: Attachment[];
5
+ history?: HistoryMessage[];
6
+ systemPromptOverride?: string;
7
+ }
8
+ export declare function runOpenAI(prompt: string, config: Config, mcpServersConfig: Record<string, McpServerConfig>, onChunk: (text: string) => void, options?: OpenAIOptions): Promise<void>;
@@ -35,7 +35,8 @@ class LocalShell {
35
35
  return { output };
36
36
  }
37
37
  }
38
- export async function runOpenAI(prompt, config, mcpServersConfig, onChunk, attachments, history) {
38
+ export async function runOpenAI(prompt, config, mcpServersConfig, onChunk, options) {
39
+ const { attachments, history, systemPromptOverride } = options || {};
39
40
  const env = {
40
41
  ...process.env,
41
42
  OPENAI_API_KEY: config.openai.apiKey,
@@ -63,7 +64,7 @@ export async function runOpenAI(prompt, config, mcpServersConfig, onChunk, attac
63
64
  }
64
65
  const agent = new Agent({
65
66
  name: "goto-assistant",
66
- instructions: "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.",
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.",
67
68
  model: config.openai.model,
68
69
  mcpServers,
69
70
  tools: [
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/agents/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/agents/openai.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,13 @@ export interface HistoryMessage {
9
9
  role: string;
10
10
  content: string;
11
11
  }
12
+ export interface RouteOptions {
13
+ resumeSessionId?: string;
14
+ attachments?: Attachment[];
15
+ history?: HistoryMessage[];
16
+ systemPromptOverride?: string;
17
+ }
12
18
  export interface RouteResult {
13
19
  sessionId: string | null;
14
20
  }
15
- export declare function routeMessage(prompt: string, config: Config, mcpServers: Record<string, McpServerConfig>, onChunk: (text: string) => void, resumeSessionId?: string, attachments?: Attachment[], history?: HistoryMessage[]): Promise<RouteResult>;
21
+ export declare function routeMessage(prompt: string, config: Config, mcpServers: Record<string, McpServerConfig>, onChunk: (text: string) => void, options?: RouteOptions): Promise<RouteResult>;
@@ -1,13 +1,14 @@
1
1
  import { runClaude } from "./claude.js";
2
2
  import { runOpenAI } from "./openai.js";
3
- export async function routeMessage(prompt, config, mcpServers, onChunk, resumeSessionId, attachments, history) {
3
+ export async function routeMessage(prompt, config, mcpServers, onChunk, options) {
4
+ const { resumeSessionId, attachments, history, systemPromptOverride } = options || {};
4
5
  switch (config.provider) {
5
6
  case "claude": {
6
- const result = await runClaude(prompt, config, mcpServers, onChunk, resumeSessionId, attachments);
7
+ const result = await runClaude(prompt, config, mcpServers, onChunk, { resumeSessionId, attachments, systemPromptOverride });
7
8
  return { sessionId: result.sessionId };
8
9
  }
9
10
  case "openai": {
10
- await runOpenAI(prompt, config, mcpServers, onChunk, attachments, history);
11
+ await runOpenAI(prompt, config, mcpServers, onChunk, { attachments, history, systemPromptOverride });
11
12
  return { sessionId: null };
12
13
  }
13
14
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/agents/router.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAkBxC,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,MAAc,EACd,UAA2C,EAC3C,OAA+B,EAC/B,eAAwB,EACxB,WAA0B,EAC1B,OAA0B;IAE1B,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;YAClG,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QACzC,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAC3E,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC7B,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/agents/router.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAyBxC,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,MAAc,EACd,UAA2C,EAC3C,OAA+B,EAC/B,OAAsB;IAEtB,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACtF,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC,CAAC;YAC5H,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QACzC,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;YACrG,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC7B,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
package/dist/server.js CHANGED
@@ -157,6 +157,45 @@ export function createApp() {
157
157
  });
158
158
  return app;
159
159
  }
160
+ const SETUP_SYSTEM_PROMPT = `You are helping the user configure their goto-assistant.
161
+
162
+ There are two config files you can read and modify using your filesystem tools:
163
+
164
+ **./data/config.json** — Main app config:
165
+ - provider: "claude" or "openai"
166
+ - claude: { apiKey, model, baseUrl }
167
+ - openai: { apiKey, model, baseUrl }
168
+ - server: { port }
169
+
170
+ **./data/mcp.json** — MCP server config:
171
+ - mcpServers: { name: { command, args (string array), env (optional object) } }
172
+
173
+ Default MCP servers have been configured:
174
+ - **cron** (mcp-cron): Scheduled task execution
175
+ - **memory** (@modelcontextprotocol/server-memory): Persistent knowledge graph
176
+ - **filesystem** (@modelcontextprotocol/server-filesystem): File system access
177
+ - **time** (mcp-server-time): Current time information
178
+
179
+ **IMPORTANT — cron server must stay in sync with config.json:**
180
+ The cron server in mcp.json has args that mirror the provider settings in config.json. When the provider, model, API key, or base URL changes, you MUST update both files:
181
+ - \`--ai-provider\`: "anthropic" for claude, "openai" for openai. If baseUrl is set (LiteLLM proxy), always use "openai".
182
+ - \`--ai-model\`: must match the model in config.json for the active provider.
183
+ - \`--ai-base-url\`: add this flag when baseUrl is set, remove it when empty.
184
+ - \`env\` object: the key must be ANTHROPIC_API_KEY for claude, OPENAI_API_KEY for openai, or MCP_CRON_AI_API_KEY when using a base URL proxy. The value must be the API key for the active provider.
185
+
186
+ When switching providers, ask the user for the new API key if one isn't already saved in config.json for that provider.
187
+
188
+ **SECURITY — Adding or updating MCP servers:**
189
+ When a user asks to add or update an MCP server, ALWAYS warn them about the risks before proceeding:
190
+ 1. MCP servers run locally with the same permissions as this app. A malicious or poorly written server can read/write files, execute commands, and access the network.
191
+ 2. Only install servers from trusted, well-known sources. Prefer official @modelcontextprotocol packages or servers listed on the official MCP servers directory.
192
+ 3. Before adding a server, you MUST verify it: check that the npm package or GitHub repo exists, read its README and source code, and confirm the code does what it claims. Be skeptical — GitHub stars, download counts, and commit activity can all be artificially inflated, so do not rely on these metrics as proof of trustworthiness.
193
+ 4. If you cannot verify the source, or the package looks suspicious (anonymous author, no documentation, no clear purpose, requests unnecessary permissions), warn the user strongly and recommend against installing it.
194
+ 5. Never add a server that asks for overly broad permissions or wants credentials beyond what its stated purpose requires.
195
+ If the user insists on adding an unverified server after your warning, proceed but reiterate the risk.
196
+
197
+ Help the user modify their configuration. When done, tell them they can close this chat panel.
198
+ Note: Changes to config.json and mcp.json take effect on the next conversation. Only server port changes require a restart.`;
160
199
  export function createServer(app) {
161
200
  const server = http.createServer(app);
162
201
  const wss = new WebSocketServer({ server });
@@ -191,7 +230,7 @@ export function createServer(app) {
191
230
  }
192
231
  }
193
232
  if (!conversationId) {
194
- const conv = createConversation(config.provider);
233
+ const conv = createConversation(config.provider, !!msg.setupMode);
195
234
  conversationId = conv.id;
196
235
  isNewConversation = true;
197
236
  }
@@ -231,13 +270,14 @@ export function createServer(app) {
231
270
  // Load conversation history (excluding current message) for providers that need it
232
271
  const allMessages = getMessages(conversationId);
233
272
  const history = allMessages.slice(0, -1); // exclude the message we just saved
273
+ const systemPromptOverride = msg.setupMode ? SETUP_SYSTEM_PROMPT : undefined;
234
274
  let responseText = "";
235
275
  const result = await routeMessage(msg.text, config, mcpServers, (chunk) => {
236
276
  responseText += chunk;
237
277
  if (ws.readyState === WebSocket.OPEN) {
238
278
  ws.send(JSON.stringify({ type: "chunk", text: chunk }));
239
279
  }
240
- }, resumeSessionId, attachments, history);
280
+ }, { resumeSessionId, attachments, history, systemPromptOverride });
241
281
  // Save assistant message
242
282
  if (responseText) {
243
283
  saveMessage(conversationId, "assistant", responseText);
@@ -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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"}
@@ -15,7 +15,7 @@ export interface Message {
15
15
  created_at: string;
16
16
  }
17
17
  export declare function getDb(): Database.Database;
18
- export declare function createConversation(provider: string): Conversation;
18
+ export declare function createConversation(provider: string, setup?: boolean): Conversation;
19
19
  export declare function getConversation(id: string): Conversation | undefined;
20
20
  export declare function updateSessionId(conversationId: string, sdkSessionId: string): void;
21
21
  export declare function updateTitle(conversationId: string, title: string): void;
package/dist/sessions.js CHANGED
@@ -16,13 +16,19 @@ export function getDb() {
16
16
  db.exec(`
17
17
  CREATE TABLE IF NOT EXISTS conversations (
18
18
  id TEXT PRIMARY KEY,
19
- provider TEXT NOT NULL,
19
+ provider TEXT NOT NULL, -- provider at creation time; may differ from later messages if user switches provider mid-conversation
20
20
  sdk_session_id TEXT,
21
21
  title TEXT,
22
+ setup INTEGER NOT NULL DEFAULT 0,
22
23
  created_at TEXT NOT NULL DEFAULT (datetime('now')),
23
24
  updated_at TEXT NOT NULL DEFAULT (datetime('now'))
24
25
  )
25
26
  `);
27
+ // Migration: add setup column to existing tables
28
+ const cols = db.pragma("table_info(conversations)");
29
+ if (!cols.some((c) => c.name === "setup")) {
30
+ db.exec("ALTER TABLE conversations ADD COLUMN setup INTEGER NOT NULL DEFAULT 0");
31
+ }
26
32
  db.exec(`
27
33
  CREATE TABLE IF NOT EXISTS messages (
28
34
  id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -35,12 +41,12 @@ export function getDb() {
35
41
  `);
36
42
  return db;
37
43
  }
38
- export function createConversation(provider) {
44
+ export function createConversation(provider, setup) {
39
45
  const id = crypto.randomUUID();
40
46
  const now = new Date().toISOString();
41
47
  getDb()
42
- .prepare("INSERT INTO conversations (id, provider, created_at, updated_at) VALUES (?, ?, ?, ?)")
43
- .run(id, provider, now, now);
48
+ .prepare("INSERT INTO conversations (id, provider, setup, created_at, updated_at) VALUES (?, ?, ?, ?, ?)")
49
+ .run(id, provider, setup ? 1 : 0, now, now);
44
50
  return { id, provider, sdk_session_id: null, title: null, created_at: now, updated_at: now };
45
51
  }
46
52
  export function getConversation(id) {
@@ -60,7 +66,7 @@ export function updateTitle(conversationId, title) {
60
66
  }
61
67
  export function listConversations() {
62
68
  return getDb()
63
- .prepare("SELECT * FROM conversations ORDER BY updated_at DESC")
69
+ .prepare("SELECT * FROM conversations WHERE setup = 0 ORDER BY updated_at DESC")
64
70
  .all();
65
71
  }
66
72
  export function saveMessage(conversationId, role, content) {
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "goto-assistant",
3
- "version": "0.1.9",
3
+ "version": "0.2.0",
4
4
  "description": "Lightweight, self-hosted personal AI assistant",
5
5
  "license": "MIT",
6
6
  "packageManager": "pnpm@10.29.3",
@@ -1,10 +1,17 @@
1
+ // Default cron args shared between setup.js and setup-chat.js.
2
+ var DEFAULT_CRON_ARGS = '-y mcp-cron --transport stdio --prevent-sleep --mcp-config-path ./data/mcp.json --ai-provider anthropic --ai-model claude-sonnet-4-5-20250929';
3
+
4
+ // Escape HTML special characters for safe insertion into HTML templates.
5
+ function escapeHtml(str) {
6
+ return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
7
+ }
8
+
1
9
  // buildCronConfig — derive mcp-cron args and env from the user's AI settings.
2
10
  //
3
11
  // Core rule: if baseUrl is set (LiteLLM proxy), cron always uses
4
12
  // --ai-provider openai + MCP_CRON_AI_API_KEY, because mcp-cron's Anthropic
5
13
  // provider does not support --ai-base-url.
6
14
 
7
- // eslint-disable-next-line no-unused-vars
8
15
  function buildCronConfig({ provider, apiKey, model, baseUrl, currentArgs }) {
9
16
  const useProxy = Boolean(baseUrl);
10
17
  const aiProvider = useProxy ? 'openai' : (provider === 'claude' ? 'anthropic' : 'openai');
@@ -46,5 +53,5 @@ function buildCronConfig({ provider, apiKey, model, baseUrl, currentArgs }) {
46
53
  }
47
54
 
48
55
  if (typeof module !== 'undefined' && module.exports) {
49
- module.exports = { buildCronConfig };
56
+ module.exports = { buildCronConfig, escapeHtml, DEFAULT_CRON_ARGS };
50
57
  }
package/public/index.html CHANGED
@@ -3,9 +3,12 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
6
+ <meta name="color-scheme" content="light dark">
6
7
  <title>goto-assistant</title>
8
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css">
7
9
  <link rel="stylesheet" href="/style.css">
8
10
  <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
11
+ <script src="https://cdn.jsdelivr.net/npm/dompurify/dist/purify.min.js"></script>
9
12
  </head>
10
13
  <body>
11
14
  <div class="chat-layout">
@@ -21,12 +24,15 @@
21
24
  <div class="chat-main">
22
25
  <div class="chat-header">
23
26
  <button class="hamburger-btn" id="hamburgerBtn">&#9776;</button>
24
- <img src="/logo.svg" alt="goto" class="header-logo">
25
27
  <h2 id="chatTitle">New Conversation</h2>
26
28
  <button class="settings-btn" id="settingsBtn" title="Settings">&#9881;</button>
27
29
  </div>
28
30
 
29
- <div class="messages" id="messages"></div>
31
+ <div class="messages" id="messages">
32
+ <div class="empty-state" id="emptyState">
33
+ <img src="/logo.svg" alt="goto-assistant" class="empty-state-logo">
34
+ </div>
35
+ </div>
30
36
 
31
37
  <div class="input-area">
32
38
  <div class="file-preview" id="filePreview"></div>
@@ -59,7 +65,7 @@
59
65
  currentAssistantEl._raw += msg.text;
60
66
  // Update only the text div (last child)
61
67
  const textDiv = currentAssistantEl.lastElementChild;
62
- if (textDiv) textDiv.innerHTML = marked.parse(currentAssistantEl._raw);
68
+ if (textDiv) textDiv.innerHTML = DOMPurify.sanitize(marked.parse(currentAssistantEl._raw));
63
69
  } else if (msg.type === 'done') {
64
70
  currentConversationId = msg.conversationId;
65
71
  currentAssistantEl = null;
@@ -82,7 +88,17 @@
82
88
  return { text: content };
83
89
  }
84
90
 
91
+ function hideEmptyState() {
92
+ const es = document.getElementById('emptyState');
93
+ if (es) es.style.display = 'none';
94
+ }
95
+ function clearMessages() {
96
+ const m = document.getElementById('messages');
97
+ m.innerHTML = '<div class="empty-state" id="emptyState"><img src="/logo.svg" alt="goto-assistant" class="empty-state-logo"></div>';
98
+ }
99
+
85
100
  function addMessage(role, content, extraAttachments) {
101
+ hideEmptyState();
86
102
  const el = document.createElement('div');
87
103
  el.className = 'message ' + role;
88
104
  const parsed = parseContent(content);
@@ -106,7 +122,7 @@
106
122
  const textContent = parsed.text;
107
123
  const textEl = document.createElement('div');
108
124
  if (role === 'assistant' && textContent) {
109
- textEl.innerHTML = marked.parse(textContent);
125
+ textEl.innerHTML = DOMPurify.sanitize(marked.parse(textContent));
110
126
  } else if (textContent) {
111
127
  textEl.textContent = textContent;
112
128
  }
@@ -221,7 +237,7 @@
221
237
  document.getElementById('newChatBtn').addEventListener('click', () => {
222
238
  currentConversationId = null;
223
239
  currentAssistantEl = null;
224
- document.getElementById('messages').innerHTML = '';
240
+ clearMessages();
225
241
  document.getElementById('chatTitle').textContent = 'New Conversation';
226
242
  document.querySelectorAll('.conversation-item').forEach(el => el.classList.remove('active'));
227
243
  closeSidebar();
@@ -262,7 +278,7 @@
262
278
  if (currentConversationId === c.id) {
263
279
  currentConversationId = null;
264
280
  currentAssistantEl = null;
265
- document.getElementById('messages').innerHTML = '';
281
+ clearMessages();
266
282
  document.getElementById('chatTitle').textContent = 'New Conversation';
267
283
  }
268
284
  loadConversations();
@@ -272,6 +288,7 @@
272
288
  titleSpan.addEventListener('click', async () => {
273
289
  currentConversationId = c.id;
274
290
  document.getElementById('messages').innerHTML = '';
291
+ hideEmptyState();
275
292
  document.getElementById('chatTitle').textContent = displayTitle;
276
293
  closeSidebar();
277
294
  document.querySelectorAll('.conversation-item').forEach(e => e.classList.remove('active'));