nomoreide 0.1.22 → 0.1.23
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/dist/mcp/server.d.ts +2 -2
- package/dist/mcp/server.js +2 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/agent.d.ts +4 -0
- package/dist/mcp/tools/agent.js +19 -0
- package/dist/mcp/tools/agent.js.map +1 -0
- package/dist/mcp/tools/context.d.ts +26 -0
- package/dist/mcp/tools/context.js +57 -0
- package/dist/mcp/tools/context.js.map +1 -0
- package/dist/mcp/tools/git.d.ts +4 -0
- package/dist/mcp/tools/git.js +120 -0
- package/dist/mcp/tools/git.js.map +1 -0
- package/dist/mcp/{tools.d.ts → tools/index.d.ts} +12 -13
- package/dist/mcp/tools/index.js +27 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/mcp/tools/services.d.ts +4 -0
- package/dist/mcp/tools/services.js +177 -0
- package/dist/mcp/tools/services.js.map +1 -0
- package/dist/web/client/assets/index-BPx-pteY.js +23 -0
- package/dist/web/client/index.html +1 -1
- package/package.json +1 -1
- package/dist/mcp/tools.js +0 -354
- package/dist/mcp/tools.js.map +0 -1
- package/dist/web/client/assets/index-DxODKxSd.js +0 -23
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/assets/nomoreide-favicon-Ds7Tgj9p.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>NoMoreIDE</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-BPx-pteY.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="/assets/index-BmUyXrPp.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
package/package.json
CHANGED
package/dist/mcp/tools.js
DELETED
|
@@ -1,354 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { buildServiceAgentContext } from "../core/agent-context.js";
|
|
3
|
-
import { GitManager } from "../core/git-manager.js";
|
|
4
|
-
import { computeServiceHealth } from "../core/service-health.js";
|
|
5
|
-
import { previewArgs } from "../core/tool-call-store.js";
|
|
6
|
-
export const NOMOREIDE_TOOL_NAMES = [
|
|
7
|
-
"nomoreide_list_services",
|
|
8
|
-
"nomoreide_register_service",
|
|
9
|
-
"nomoreide_start_service",
|
|
10
|
-
"nomoreide_stop_service",
|
|
11
|
-
"nomoreide_restart_service",
|
|
12
|
-
"nomoreide_read_logs",
|
|
13
|
-
"nomoreide_register_bundle",
|
|
14
|
-
"nomoreide_start_bundle",
|
|
15
|
-
"nomoreide_stop_bundle",
|
|
16
|
-
"nomoreide_status",
|
|
17
|
-
"nomoreide_service_context",
|
|
18
|
-
"nomoreide_service_health",
|
|
19
|
-
"nomoreide_timeline",
|
|
20
|
-
"nomoreide_git_status",
|
|
21
|
-
"nomoreide_git_branches",
|
|
22
|
-
"nomoreide_git_switch_branch",
|
|
23
|
-
"nomoreide_git_create_branch",
|
|
24
|
-
"nomoreide_git_fetch",
|
|
25
|
-
"nomoreide_git_diff",
|
|
26
|
-
"nomoreide_git_staged_diff",
|
|
27
|
-
"nomoreide_git_log",
|
|
28
|
-
"nomoreide_git_stage",
|
|
29
|
-
"nomoreide_git_unstage",
|
|
30
|
-
"nomoreide_git_commit",
|
|
31
|
-
"nomoreide_git_register_repository",
|
|
32
|
-
"nomoreide_git_select_repository",
|
|
33
|
-
"nomoreide_open_ui",
|
|
34
|
-
"nomoreide_close_ui",
|
|
35
|
-
];
|
|
36
|
-
const serviceNameSchema = z.object({
|
|
37
|
-
name: z.string().min(1).describe("Registered service name."),
|
|
38
|
-
});
|
|
39
|
-
const bundleNameSchema = z.object({
|
|
40
|
-
name: z.string().min(1).describe("Registered bundle name."),
|
|
41
|
-
});
|
|
42
|
-
const gitCwdSchema = z.object({
|
|
43
|
-
cwd: z.string().min(1).optional().describe("Git repository directory."),
|
|
44
|
-
});
|
|
45
|
-
const gitPathSchema = gitCwdSchema.extend({
|
|
46
|
-
path: z.string().min(1).optional().describe("Optional file path."),
|
|
47
|
-
});
|
|
48
|
-
const gitBranchSchema = gitCwdSchema.extend({
|
|
49
|
-
name: z.string().min(1).describe("Branch name."),
|
|
50
|
-
});
|
|
51
|
-
const gitPathsSchema = gitCwdSchema.extend({
|
|
52
|
-
paths: z.array(z.string().min(1)).min(1),
|
|
53
|
-
});
|
|
54
|
-
export function registerNoMoreIdeTools(options) {
|
|
55
|
-
const { server: rawServer, configStore, logStore, manager, timelineStore, uiLifecycle, toolCallStore, } = options;
|
|
56
|
-
const server = toolCallStore
|
|
57
|
-
? wrapServerForRecording(rawServer, toolCallStore)
|
|
58
|
-
: rawServer;
|
|
59
|
-
server.addTool({
|
|
60
|
-
name: "nomoreide_list_services",
|
|
61
|
-
description: "List registered NoMoreIDE services and bundles.",
|
|
62
|
-
execute: async () => stringify(await configStore.load()),
|
|
63
|
-
});
|
|
64
|
-
server.addTool({
|
|
65
|
-
name: "nomoreide_register_service",
|
|
66
|
-
description: "Register or replace a development service (local, docker-compose, or ssh). For ssh, NoMoreIDE relies on the user's ~/.ssh/config and ssh-agent and never stores key material; pass a Host alias as `host`.",
|
|
67
|
-
parameters: z.object({
|
|
68
|
-
name: z.string().min(1),
|
|
69
|
-
kind: z.enum(["local", "docker-compose", "ssh"]).optional(),
|
|
70
|
-
command: z.string().min(1).optional(),
|
|
71
|
-
cwd: z.string().min(1).optional(),
|
|
72
|
-
port: z.number().int().positive().max(65535).optional(),
|
|
73
|
-
env: z.record(z.string()).optional(),
|
|
74
|
-
description: z.string().optional(),
|
|
75
|
-
composeFile: z.string().min(1).optional(),
|
|
76
|
-
composeService: z.string().min(1).optional(),
|
|
77
|
-
host: z.string().min(1).optional(),
|
|
78
|
-
}),
|
|
79
|
-
execute: async (args) => stringify(await configStore.registerService(args)),
|
|
80
|
-
});
|
|
81
|
-
server.addTool({
|
|
82
|
-
name: "nomoreide_start_service",
|
|
83
|
-
description: "Start a registered service.",
|
|
84
|
-
parameters: serviceNameSchema,
|
|
85
|
-
execute: async ({ name }) => stringify(await manager.startService(name)),
|
|
86
|
-
});
|
|
87
|
-
server.addTool({
|
|
88
|
-
name: "nomoreide_stop_service",
|
|
89
|
-
description: "Stop a running NoMoreIDE service.",
|
|
90
|
-
parameters: serviceNameSchema,
|
|
91
|
-
execute: async ({ name }) => stringify(await manager.stopService(name)),
|
|
92
|
-
});
|
|
93
|
-
server.addTool({
|
|
94
|
-
name: "nomoreide_restart_service",
|
|
95
|
-
description: "Restart a registered service.",
|
|
96
|
-
parameters: serviceNameSchema,
|
|
97
|
-
execute: async ({ name }) => stringify(await manager.restartService(name)),
|
|
98
|
-
});
|
|
99
|
-
server.addTool({
|
|
100
|
-
name: "nomoreide_read_logs",
|
|
101
|
-
description: "Read recent in-memory logs for a registered service.",
|
|
102
|
-
parameters: z.object({
|
|
103
|
-
name: z.string().min(1),
|
|
104
|
-
limit: z.number().int().positive().max(1000).optional(),
|
|
105
|
-
}),
|
|
106
|
-
execute: async ({ name, limit }) => stringify(logStore.read(name, limit)),
|
|
107
|
-
});
|
|
108
|
-
server.addTool({
|
|
109
|
-
name: "nomoreide_register_bundle",
|
|
110
|
-
description: "Register or replace a bundle of services.",
|
|
111
|
-
parameters: z.object({
|
|
112
|
-
name: z.string().min(1),
|
|
113
|
-
services: z.array(z.string().min(1)).min(1),
|
|
114
|
-
}),
|
|
115
|
-
execute: async (args) => stringify(await configStore.registerBundle(args)),
|
|
116
|
-
});
|
|
117
|
-
server.addTool({
|
|
118
|
-
name: "nomoreide_start_bundle",
|
|
119
|
-
description: "Start every service in a registered bundle.",
|
|
120
|
-
parameters: bundleNameSchema,
|
|
121
|
-
execute: async ({ name }) => stringify(await manager.startBundle(name)),
|
|
122
|
-
});
|
|
123
|
-
server.addTool({
|
|
124
|
-
name: "nomoreide_stop_bundle",
|
|
125
|
-
description: "Stop every service in a registered bundle.",
|
|
126
|
-
parameters: bundleNameSchema,
|
|
127
|
-
execute: async ({ name }) => stringify(await manager.stopBundle(name)),
|
|
128
|
-
});
|
|
129
|
-
server.addTool({
|
|
130
|
-
name: "nomoreide_status",
|
|
131
|
-
description: "Show current NoMoreIDE runtime status.",
|
|
132
|
-
execute: async () => stringify(manager.status()),
|
|
133
|
-
});
|
|
134
|
-
server.addTool({
|
|
135
|
-
name: "nomoreide_service_context",
|
|
136
|
-
description: "Build a copy-paste agent context packet (service definition, runtime status, health summary, recent logs and timeline) for a registered service.",
|
|
137
|
-
parameters: serviceNameSchema,
|
|
138
|
-
execute: async ({ name }) => {
|
|
139
|
-
const config = await configStore.load();
|
|
140
|
-
const definition = config.services.find((service) => service.name === name);
|
|
141
|
-
if (!definition) {
|
|
142
|
-
throw new Error(`Service "${name}" is not registered.`);
|
|
143
|
-
}
|
|
144
|
-
const runtime = await manager.statusWithResources();
|
|
145
|
-
const status = runtime.services[name];
|
|
146
|
-
const logs = logStore.read(name, 80);
|
|
147
|
-
const timeline = timelineStore
|
|
148
|
-
.read(200)
|
|
149
|
-
.filter((event) => event.service === name);
|
|
150
|
-
const health = computeServiceHealth({
|
|
151
|
-
service: definition,
|
|
152
|
-
status,
|
|
153
|
-
logs,
|
|
154
|
-
ports: [],
|
|
155
|
-
timeline,
|
|
156
|
-
});
|
|
157
|
-
return buildServiceAgentContext({
|
|
158
|
-
service: definition,
|
|
159
|
-
status,
|
|
160
|
-
healthSummary: health.summary,
|
|
161
|
-
recentLogs: logs,
|
|
162
|
-
timeline,
|
|
163
|
-
});
|
|
164
|
-
},
|
|
165
|
-
});
|
|
166
|
-
server.addTool({
|
|
167
|
-
name: "nomoreide_service_health",
|
|
168
|
-
description: "Return computed health summaries for one service or all registered services.",
|
|
169
|
-
parameters: z.object({
|
|
170
|
-
service: z.string().min(1).optional(),
|
|
171
|
-
}),
|
|
172
|
-
execute: async ({ service }) => {
|
|
173
|
-
const config = await configStore.load();
|
|
174
|
-
const runtime = await manager.statusWithResources();
|
|
175
|
-
const timeline = timelineStore.read(200);
|
|
176
|
-
const definitions = service
|
|
177
|
-
? config.services.filter((item) => item.name === service)
|
|
178
|
-
: config.services;
|
|
179
|
-
if (service && definitions.length === 0) {
|
|
180
|
-
throw new Error(`Service "${service}" is not registered.`);
|
|
181
|
-
}
|
|
182
|
-
const health = definitions.map((definition) => computeServiceHealth({
|
|
183
|
-
service: definition,
|
|
184
|
-
status: runtime.services[definition.name],
|
|
185
|
-
logs: logStore.read(definition.name, 80),
|
|
186
|
-
ports: [],
|
|
187
|
-
timeline: timeline.filter((event) => event.service === definition.name),
|
|
188
|
-
}));
|
|
189
|
-
return stringify(service ? health[0] : health);
|
|
190
|
-
},
|
|
191
|
-
});
|
|
192
|
-
server.addTool({
|
|
193
|
-
name: "nomoreide_timeline",
|
|
194
|
-
description: "Return recent NoMoreIDE debug timeline events, optionally filtered by service.",
|
|
195
|
-
parameters: z.object({
|
|
196
|
-
service: z.string().min(1).optional(),
|
|
197
|
-
limit: z.number().int().positive().max(200).default(80),
|
|
198
|
-
}),
|
|
199
|
-
execute: async ({ service, limit }) => {
|
|
200
|
-
const events = timelineStore.read(200);
|
|
201
|
-
const filtered = service
|
|
202
|
-
? events.filter((event) => event.service === service)
|
|
203
|
-
: events;
|
|
204
|
-
return stringify(filtered.slice(-limit));
|
|
205
|
-
},
|
|
206
|
-
});
|
|
207
|
-
server.addTool({
|
|
208
|
-
name: "nomoreide_git_status",
|
|
209
|
-
description: "Show safe Git branch and porcelain status for a repository.",
|
|
210
|
-
parameters: gitCwdSchema,
|
|
211
|
-
execute: async ({ cwd }) => stringify(await git(cwd).status()),
|
|
212
|
-
});
|
|
213
|
-
server.addTool({
|
|
214
|
-
name: "nomoreide_git_diff",
|
|
215
|
-
description: "Show unstaged Git diff for a repository or file.",
|
|
216
|
-
parameters: gitPathSchema,
|
|
217
|
-
execute: async ({ cwd, path }) => await git(cwd).diff(path),
|
|
218
|
-
});
|
|
219
|
-
server.addTool({
|
|
220
|
-
name: "nomoreide_git_branches",
|
|
221
|
-
description: "List local and remote Git branches for a repository.",
|
|
222
|
-
parameters: gitCwdSchema,
|
|
223
|
-
execute: async ({ cwd }) => stringify(await git(cwd).branches()),
|
|
224
|
-
});
|
|
225
|
-
server.addTool({
|
|
226
|
-
name: "nomoreide_git_switch_branch",
|
|
227
|
-
description: "Switch to a local branch, or track a remote branch.",
|
|
228
|
-
parameters: gitBranchSchema,
|
|
229
|
-
execute: async ({ cwd, name }) => await git(cwd).switchBranch(name),
|
|
230
|
-
});
|
|
231
|
-
server.addTool({
|
|
232
|
-
name: "nomoreide_git_create_branch",
|
|
233
|
-
description: "Create and switch to a new Git branch.",
|
|
234
|
-
parameters: gitBranchSchema,
|
|
235
|
-
execute: async ({ cwd, name }) => await git(cwd).createBranch(name),
|
|
236
|
-
});
|
|
237
|
-
server.addTool({
|
|
238
|
-
name: "nomoreide_git_fetch",
|
|
239
|
-
description: "Fetch and prune remote Git refs for a repository.",
|
|
240
|
-
parameters: gitCwdSchema,
|
|
241
|
-
execute: async ({ cwd }) => await git(cwd).fetch(),
|
|
242
|
-
});
|
|
243
|
-
server.addTool({
|
|
244
|
-
name: "nomoreide_git_staged_diff",
|
|
245
|
-
description: "Show staged Git diff for a repository or file.",
|
|
246
|
-
parameters: gitPathSchema,
|
|
247
|
-
execute: async ({ cwd, path }) => await git(cwd).stagedDiff(path),
|
|
248
|
-
});
|
|
249
|
-
server.addTool({
|
|
250
|
-
name: "nomoreide_git_log",
|
|
251
|
-
description: "Show recent Git commits.",
|
|
252
|
-
parameters: gitCwdSchema.extend({
|
|
253
|
-
limit: z.number().int().positive().max(50).optional(),
|
|
254
|
-
}),
|
|
255
|
-
execute: async ({ cwd, limit }) => stringify(await git(cwd).log(limit)),
|
|
256
|
-
});
|
|
257
|
-
server.addTool({
|
|
258
|
-
name: "nomoreide_git_stage",
|
|
259
|
-
description: "Stage explicit file paths.",
|
|
260
|
-
parameters: gitPathsSchema,
|
|
261
|
-
execute: async ({ cwd, paths }) => stringify(await git(cwd).stage(paths)),
|
|
262
|
-
});
|
|
263
|
-
server.addTool({
|
|
264
|
-
name: "nomoreide_git_unstage",
|
|
265
|
-
description: "Unstage explicit file paths.",
|
|
266
|
-
parameters: gitPathsSchema,
|
|
267
|
-
execute: async ({ cwd, paths }) => stringify(await git(cwd).unstage(paths)),
|
|
268
|
-
});
|
|
269
|
-
server.addTool({
|
|
270
|
-
name: "nomoreide_git_commit",
|
|
271
|
-
description: "Create a Git commit from currently staged changes.",
|
|
272
|
-
parameters: gitCwdSchema.extend({
|
|
273
|
-
message: z.string().min(1),
|
|
274
|
-
}),
|
|
275
|
-
execute: async ({ cwd, message }) => await git(cwd).commit(message),
|
|
276
|
-
});
|
|
277
|
-
server.addTool({
|
|
278
|
-
name: "nomoreide_git_register_repository",
|
|
279
|
-
description: "Register a named Git repository folder for NoMoreIDE.",
|
|
280
|
-
parameters: z.object({
|
|
281
|
-
name: z.string().min(1),
|
|
282
|
-
path: z.string().min(1),
|
|
283
|
-
}),
|
|
284
|
-
execute: async (args) => stringify(await configStore.registerGitRepository(args)),
|
|
285
|
-
});
|
|
286
|
-
server.addTool({
|
|
287
|
-
name: "nomoreide_git_select_repository",
|
|
288
|
-
description: "Select the registered Git repository shown by NoMoreIDE.",
|
|
289
|
-
parameters: z.object({
|
|
290
|
-
name: z.string().min(1),
|
|
291
|
-
}),
|
|
292
|
-
execute: async ({ name }) => stringify(await configStore.selectGitRepository(name)),
|
|
293
|
-
});
|
|
294
|
-
server.addTool({
|
|
295
|
-
name: "nomoreide_open_ui",
|
|
296
|
-
description: "Open or reuse the singleton NoMoreIDE web UI.",
|
|
297
|
-
execute: async () => stringify(await uiLifecycle.ensureStarted()),
|
|
298
|
-
});
|
|
299
|
-
server.addTool({
|
|
300
|
-
name: "nomoreide_close_ui",
|
|
301
|
-
description: "Close the NoMoreIDE web UI owned by this MCP process.",
|
|
302
|
-
execute: async () => stringify(await uiLifecycle.close()),
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
function git(cwd) {
|
|
306
|
-
return new GitManager(cwd ?? process.cwd());
|
|
307
|
-
}
|
|
308
|
-
function wrapServerForRecording(server, store) {
|
|
309
|
-
const originalAdd = server.addTool.bind(server);
|
|
310
|
-
const wrapped = (definition) => {
|
|
311
|
-
const originalExecute = definition.execute;
|
|
312
|
-
const recordingDefinition = {
|
|
313
|
-
...definition,
|
|
314
|
-
execute: async (args, context) => {
|
|
315
|
-
const start = Date.now();
|
|
316
|
-
const startedAt = new Date(start).toISOString();
|
|
317
|
-
try {
|
|
318
|
-
const result = await originalExecute(args, context);
|
|
319
|
-
store.record({
|
|
320
|
-
tool: definition.name,
|
|
321
|
-
startedAt,
|
|
322
|
-
durationMs: Date.now() - start,
|
|
323
|
-
status: "ok",
|
|
324
|
-
args: previewArgs(args),
|
|
325
|
-
});
|
|
326
|
-
return result;
|
|
327
|
-
}
|
|
328
|
-
catch (error) {
|
|
329
|
-
store.record({
|
|
330
|
-
tool: definition.name,
|
|
331
|
-
startedAt,
|
|
332
|
-
durationMs: Date.now() - start,
|
|
333
|
-
status: "error",
|
|
334
|
-
args: previewArgs(args),
|
|
335
|
-
error: error instanceof Error ? error.message : String(error),
|
|
336
|
-
});
|
|
337
|
-
throw error;
|
|
338
|
-
}
|
|
339
|
-
},
|
|
340
|
-
};
|
|
341
|
-
return originalAdd(recordingDefinition);
|
|
342
|
-
};
|
|
343
|
-
return new Proxy(server, {
|
|
344
|
-
get(target, prop, receiver) {
|
|
345
|
-
if (prop === "addTool")
|
|
346
|
-
return wrapped;
|
|
347
|
-
return Reflect.get(target, prop, receiver);
|
|
348
|
-
},
|
|
349
|
-
});
|
|
350
|
-
}
|
|
351
|
-
function stringify(value) {
|
|
352
|
-
return JSON.stringify(value, null, 2);
|
|
353
|
-
}
|
|
354
|
-
//# sourceMappingURL=tools.js.map
|
package/dist/mcp/tools.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
|