goto-assistant 0.1.4 → 0.1.6
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 +30 -1
- package/package.json +1 -1
- package/public/setup.html +1 -1
- package/public/setup.js +8 -3
package/README.md
CHANGED
|
@@ -23,6 +23,35 @@ Custom location: `GOTO_DATA_DIR=/path/to/data npx goto-assistant`
|
|
|
23
23
|
PORT=3001 npx goto-assistant
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
+
## Why goto-assistant?
|
|
27
|
+
|
|
28
|
+
One command, no Docker, no framework — just MCP.
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
You
|
|
32
|
+
│
|
|
33
|
+
chat / ask
|
|
34
|
+
│
|
|
35
|
+
▼
|
|
36
|
+
┌───────────┐
|
|
37
|
+
│ AI │
|
|
38
|
+
│ Assistant │
|
|
39
|
+
└──┬──┬──┬──┘
|
|
40
|
+
│ │ │ │
|
|
41
|
+
│ │ │ └── create / update / run / ──▶ ┌───────┐
|
|
42
|
+
│ │ │ schedule / get results │ Cron │─ ─ ┐
|
|
43
|
+
│ │ └───── read / write ────────────▶ ┌─┴───────┴┐ │
|
|
44
|
+
│ │ │ Files │ │ AI tasks
|
|
45
|
+
│ └──────── remember / recall ───────▶ ┌┴──────────┴┐ │ w/ MCP
|
|
46
|
+
│ │ Memory │◀─┘ access
|
|
47
|
+
│ ├────────────┤
|
|
48
|
+
└────────── do anything ──────────────▶ │ + your │
|
|
49
|
+
│ MCP servers│
|
|
50
|
+
└────────────┘
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
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.
|
|
54
|
+
|
|
26
55
|
## Architecture
|
|
27
56
|
|
|
28
57
|
```
|
|
@@ -103,7 +132,7 @@ The assistant comes pre-configured with these MCP servers:
|
|
|
103
132
|
|--------|---------|-------------|
|
|
104
133
|
| **memory** | [`@modelcontextprotocol/server-memory`](https://github.com/modelcontextprotocol/servers/tree/main/src/memory) | Persistent knowledge graph across conversations |
|
|
105
134
|
| **filesystem** | [`@modelcontextprotocol/server-filesystem`](https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem) | Read, write, and manage local files |
|
|
106
|
-
| **cron** | [`mcp-cron`](https://github.com/jolks/mcp-cron) | Schedule shell commands and AI prompts with access to MCP servers |
|
|
135
|
+
| **cron** | [`mcp-cron`](https://github.com/jolks/mcp-cron) | Schedule or run on-demand shell commands and AI prompts with access to MCP servers |
|
|
107
136
|
|
|
108
137
|
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.
|
|
109
138
|
|
package/package.json
CHANGED
package/public/setup.html
CHANGED
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
// Thin wrapper that passes mutable state to the extracted syncCronConfig
|
|
82
82
|
function doSyncCronConfig() {
|
|
83
83
|
servers = readServers();
|
|
84
|
-
servers = syncCronConfig(servers, isEditing, buildCronConfig);
|
|
84
|
+
servers = syncCronConfig(servers, isEditing, buildCronConfig, window._savedConfig);
|
|
85
85
|
renderServers(servers);
|
|
86
86
|
}
|
|
87
87
|
|
package/public/setup.js
CHANGED
|
@@ -72,7 +72,7 @@ function readServers() {
|
|
|
72
72
|
// Sync cron server config. Takes servers array, isEditing flag, and buildCronConfigFn.
|
|
73
73
|
// Returns updated servers array (mutates in place for convenience, also returns).
|
|
74
74
|
// eslint-disable-next-line no-unused-vars
|
|
75
|
-
function syncCronConfig(servers, isEditing, buildCronConfigFn) {
|
|
75
|
+
function syncCronConfig(servers, isEditing, buildCronConfigFn, savedConfig) {
|
|
76
76
|
var cron = servers.find(function (s) { return s.name === 'cron'; });
|
|
77
77
|
if (!cron) return servers;
|
|
78
78
|
|
|
@@ -98,9 +98,14 @@ function syncCronConfig(servers, isEditing, buildCronConfigFn) {
|
|
|
98
98
|
oldKeys.forEach(function (k) { delete cron.env[k]; });
|
|
99
99
|
cron.env[result.envKey] = result.envValue;
|
|
100
100
|
} else if (oldKeys.length > 0 && oldKeys[0] !== result.envKey) {
|
|
101
|
-
|
|
101
|
+
// Use the target provider's masked key from savedConfig when available
|
|
102
|
+
var targetValue = cron.env[oldKeys[0]];
|
|
103
|
+
if (savedConfig) {
|
|
104
|
+
var pc = savedConfig[provider] || {};
|
|
105
|
+
if (pc.apiKey) targetValue = pc.apiKey;
|
|
106
|
+
}
|
|
102
107
|
oldKeys.forEach(function (k) { delete cron.env[k]; });
|
|
103
|
-
cron.env[result.envKey] =
|
|
108
|
+
cron.env[result.envKey] = targetValue;
|
|
104
109
|
}
|
|
105
110
|
|
|
106
111
|
return servers;
|