loom-agent 1.3.3 → 1.5.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/CHANGELOG.md +189 -0
- package/README.md +9 -7
- package/package.json +2 -2
- package/src/core/agents.js +14 -1
- package/src/core/cli.js +30 -2
- package/src/core/hooks.js +28 -14
- package/src/core/memory.js +54 -6
- package/src/core/permissions.js +17 -4
- package/src/core/plugin-cmd.js +88 -1
- package/src/core/sandbox.js +61 -1
- package/src/core/session.js +262 -36
- package/src/core/transcript-undo.js +74 -0
- package/src/core/update.js +116 -6
- package/src/mcp/connector-presets.js +105 -0
- package/src/providers/anthropic.js +122 -25
- package/src/providers/google.js +19 -11
- package/src/providers/nvidia.js +45 -33
- package/src/providers/openai-compat.js +59 -27
- package/src/providers/openai.js +42 -18
- package/src/providers/openrouter.js +56 -26
- package/src/tools/index.js +193 -30
- package/src/tui/App.tsx +249 -35
- package/src/tui/components/Modals.tsx +64 -19
- package/src/tui/mcp-presets.ts +4 -65
- package/src/tui/store.ts +6 -1
package/src/tui/mcp-presets.ts
CHANGED
|
@@ -114,71 +114,10 @@ export const MCP_PRESETS = [
|
|
|
114
114
|
];
|
|
115
115
|
|
|
116
116
|
// Hosting / cloud-service connectors — platforms you "connect" your project to
|
|
117
|
-
// rather than dev-tool servers. Surfaced under /connectors, not /mcp.
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
label: "Supabase",
|
|
122
|
-
package: "@supabase/mcp-server-supabase",
|
|
123
|
-
description: "Query schema, run SQL, manage Supabase projects",
|
|
124
|
-
args: ["--access-token", "$SUPABASE_ACCESS_TOKEN"],
|
|
125
|
-
env: { SUPABASE_ACCESS_TOKEN: "" },
|
|
126
|
-
prompts: [
|
|
127
|
-
{ key: "SUPABASE_ACCESS_TOKEN", label: "Personal access token (supabase.com/dashboard/account/tokens)", mask: true },
|
|
128
|
-
],
|
|
129
|
-
optionalArgsPrompt: { flag: "--project-ref", label: "Project ref (optional, e.g. abcdefghijklmnop) — Enter to skip" },
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
id: "nextjs",
|
|
133
|
-
label: "Next.js",
|
|
134
|
-
package: "nextjs-mcp-server",
|
|
135
|
-
description: "Next.js project introspection (routes, pages, config)",
|
|
136
|
-
args: [],
|
|
137
|
-
env: {},
|
|
138
|
-
prompts: [],
|
|
139
|
-
},
|
|
140
|
-
{
|
|
141
|
-
id: "railway",
|
|
142
|
-
label: "Railway",
|
|
143
|
-
package: "@railway/mcp-server",
|
|
144
|
-
description: "Railway deploys, services, variables",
|
|
145
|
-
args: [],
|
|
146
|
-
env: { RAILWAY_API_TOKEN: "" },
|
|
147
|
-
prompts: [
|
|
148
|
-
{ key: "RAILWAY_API_TOKEN", label: "API token (railway.app/account/tokens)", mask: true },
|
|
149
|
-
],
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
id: "vercel",
|
|
153
|
-
label: "Vercel",
|
|
154
|
-
command: "npx",
|
|
155
|
-
args: ["-y", "mcp-remote", "https://mcp.vercel.com"],
|
|
156
|
-
description: "Vercel deployments and projects (remote MCP endpoint, OAuth)",
|
|
157
|
-
env: {},
|
|
158
|
-
prompts: [],
|
|
159
|
-
},
|
|
160
|
-
{
|
|
161
|
-
id: "netlify",
|
|
162
|
-
label: "Netlify",
|
|
163
|
-
command: "npx",
|
|
164
|
-
args: ["-y", "mcp-remote", "https://api.netlify.com/mcp"],
|
|
165
|
-
description: "Netlify sites, deploys, and environment vars (remote MCP endpoint, OAuth)",
|
|
166
|
-
env: {},
|
|
167
|
-
prompts: [],
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
id: "cloudflare",
|
|
171
|
-
label: "Cloudflare",
|
|
172
|
-
package: "@cloudflare/mcp-server-cloudflare",
|
|
173
|
-
description: "Workers, DNS, and account management",
|
|
174
|
-
args: [],
|
|
175
|
-
env: { CLOUDFLARE_API_TOKEN: "", CLOUDFLARE_ACCOUNT_ID: "" },
|
|
176
|
-
prompts: [
|
|
177
|
-
{ key: "CLOUDFLARE_API_TOKEN", label: "API token (dash.cloudflare.com/profile/api-tokens)", mask: true },
|
|
178
|
-
{ key: "CLOUDFLARE_ACCOUNT_ID", label: "Account ID (dash.cloudflare.com — right sidebar)", mask: false },
|
|
179
|
-
],
|
|
180
|
-
},
|
|
181
|
-
];
|
|
117
|
+
// rather than dev-tool servers. Surfaced under /connectors, not /mcp. The
|
|
118
|
+
// catalog lives in the core layer (src/mcp/connector-presets.js) so the CLI
|
|
119
|
+
// (`loom add connector <preset> -e KEY=V`) and this picker share one source.
|
|
120
|
+
export const CONNECTOR_PRESETS: any[] = require("../mcp/connector-presets.js").CONNECTOR_PRESETS;
|
|
182
121
|
|
|
183
122
|
export function presetSpawn(preset, resolvedEnv) {
|
|
184
123
|
if (preset.command) {
|
package/src/tui/store.ts
CHANGED
|
@@ -523,7 +523,7 @@ export const SLASH_LIST: SlashCmd[] = [
|
|
|
523
523
|
{ cmd: "graph", desc: "Memory graph" },
|
|
524
524
|
{ cmd: "skills", desc: "Manage skills", args: "install <dir|git> | remove <name>" },
|
|
525
525
|
{ cmd: "mcp", desc: "Manage MCP servers", args: "add <name> <cmd> | remove | toggle" },
|
|
526
|
-
{ cmd: "connectors", desc: "Manage connectors", args: "add <
|
|
526
|
+
{ cmd: "connectors", desc: "Manage connectors", args: "add <preset|spec> | remove | toggle" },
|
|
527
527
|
{ cmd: "permissions", desc: "Permission rules", args: "reset | auto" },
|
|
528
528
|
{ cmd: "exit", desc: "Quit Loom Code" },
|
|
529
529
|
// Newer commands sit at the END so early rows (help/connect/…) keep their
|
|
@@ -539,6 +539,11 @@ export const SLASH_LIST: SlashCmd[] = [
|
|
|
539
539
|
{ cmd: "style", desc: "Output style preset" },
|
|
540
540
|
{ cmd: "vim", desc: "Toggle vim editing" },
|
|
541
541
|
{ cmd: "remember", desc: "Save a fact to LOOM.md", args: "<fact>" },
|
|
542
|
+
{ cmd: "compact", desc: "Summarize older messages to free context" },
|
|
543
|
+
{ cmd: "undo", desc: "Undo the last exchange" },
|
|
544
|
+
{ cmd: "redo", desc: "Redo the last undone exchange" },
|
|
545
|
+
{ cmd: "undo-files", desc: "Rewind working tree to last undo point" },
|
|
546
|
+
{ cmd: "export", desc: "Export chat as markdown" },
|
|
542
547
|
];
|
|
543
548
|
|
|
544
549
|
// ─── TUI prefs ───
|