nomoreide 0.1.3 → 0.1.4

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.
@@ -0,0 +1,225 @@
1
+ import { z } from "zod";
2
+ import { GitManager } from "../core/git-manager.js";
3
+ export const NOMOREIDE_TOOL_NAMES = [
4
+ "nomoreide_list_services",
5
+ "nomoreide_register_service",
6
+ "nomoreide_start_service",
7
+ "nomoreide_stop_service",
8
+ "nomoreide_restart_service",
9
+ "nomoreide_read_logs",
10
+ "nomoreide_register_bundle",
11
+ "nomoreide_start_bundle",
12
+ "nomoreide_stop_bundle",
13
+ "nomoreide_status",
14
+ "nomoreide_git_status",
15
+ "nomoreide_git_branches",
16
+ "nomoreide_git_switch_branch",
17
+ "nomoreide_git_create_branch",
18
+ "nomoreide_git_fetch",
19
+ "nomoreide_git_diff",
20
+ "nomoreide_git_staged_diff",
21
+ "nomoreide_git_log",
22
+ "nomoreide_git_stage",
23
+ "nomoreide_git_unstage",
24
+ "nomoreide_git_commit",
25
+ "nomoreide_git_register_repository",
26
+ "nomoreide_git_select_repository",
27
+ "nomoreide_open_ui",
28
+ "nomoreide_close_ui",
29
+ ];
30
+ const serviceNameSchema = z.object({
31
+ name: z.string().min(1).describe("Registered service name."),
32
+ });
33
+ const bundleNameSchema = z.object({
34
+ name: z.string().min(1).describe("Registered bundle name."),
35
+ });
36
+ const gitCwdSchema = z.object({
37
+ cwd: z.string().min(1).optional().describe("Git repository directory."),
38
+ });
39
+ const gitPathSchema = gitCwdSchema.extend({
40
+ path: z.string().min(1).optional().describe("Optional file path."),
41
+ });
42
+ const gitBranchSchema = gitCwdSchema.extend({
43
+ name: z.string().min(1).describe("Branch name."),
44
+ });
45
+ const gitPathsSchema = gitCwdSchema.extend({
46
+ paths: z.array(z.string().min(1)).min(1),
47
+ });
48
+ export function registerNoMoreIdeTools(options) {
49
+ const { server, configStore, logStore, manager, uiLifecycle } = options;
50
+ server.addTool({
51
+ name: "nomoreide_list_services",
52
+ description: "List registered NoMoreIDE services and bundles.",
53
+ execute: async () => stringify(await configStore.load()),
54
+ });
55
+ server.addTool({
56
+ name: "nomoreide_register_service",
57
+ description: "Register or replace a local development service.",
58
+ parameters: z.object({
59
+ name: z.string().min(1),
60
+ command: z.string().min(1),
61
+ cwd: z.string().min(1),
62
+ port: z.number().int().positive().max(65535).optional(),
63
+ env: z.record(z.string()).optional(),
64
+ description: z.string().optional(),
65
+ }),
66
+ execute: async (args) => stringify(await configStore.registerService(args)),
67
+ });
68
+ server.addTool({
69
+ name: "nomoreide_start_service",
70
+ description: "Start a registered service.",
71
+ parameters: serviceNameSchema,
72
+ execute: async ({ name }) => stringify(await manager.startService(name)),
73
+ });
74
+ server.addTool({
75
+ name: "nomoreide_stop_service",
76
+ description: "Stop a running NoMoreIDE service.",
77
+ parameters: serviceNameSchema,
78
+ execute: async ({ name }) => stringify(await manager.stopService(name)),
79
+ });
80
+ server.addTool({
81
+ name: "nomoreide_restart_service",
82
+ description: "Restart a registered service.",
83
+ parameters: serviceNameSchema,
84
+ execute: async ({ name }) => stringify(await manager.restartService(name)),
85
+ });
86
+ server.addTool({
87
+ name: "nomoreide_read_logs",
88
+ description: "Read recent in-memory logs for a registered service.",
89
+ parameters: z.object({
90
+ name: z.string().min(1),
91
+ limit: z.number().int().positive().max(1000).optional(),
92
+ }),
93
+ execute: async ({ name, limit }) => stringify(logStore.read(name, limit)),
94
+ });
95
+ server.addTool({
96
+ name: "nomoreide_register_bundle",
97
+ description: "Register or replace a bundle of services.",
98
+ parameters: z.object({
99
+ name: z.string().min(1),
100
+ services: z.array(z.string().min(1)).min(1),
101
+ }),
102
+ execute: async (args) => stringify(await configStore.registerBundle(args)),
103
+ });
104
+ server.addTool({
105
+ name: "nomoreide_start_bundle",
106
+ description: "Start every service in a registered bundle.",
107
+ parameters: bundleNameSchema,
108
+ execute: async ({ name }) => stringify(await manager.startBundle(name)),
109
+ });
110
+ server.addTool({
111
+ name: "nomoreide_stop_bundle",
112
+ description: "Stop every service in a registered bundle.",
113
+ parameters: bundleNameSchema,
114
+ execute: async ({ name }) => stringify(await manager.stopBundle(name)),
115
+ });
116
+ server.addTool({
117
+ name: "nomoreide_status",
118
+ description: "Show current NoMoreIDE runtime status.",
119
+ execute: async () => stringify(manager.status()),
120
+ });
121
+ server.addTool({
122
+ name: "nomoreide_git_status",
123
+ description: "Show safe Git branch and porcelain status for a repository.",
124
+ parameters: gitCwdSchema,
125
+ execute: async ({ cwd }) => stringify(await git(cwd).status()),
126
+ });
127
+ server.addTool({
128
+ name: "nomoreide_git_diff",
129
+ description: "Show unstaged Git diff for a repository or file.",
130
+ parameters: gitPathSchema,
131
+ execute: async ({ cwd, path }) => await git(cwd).diff(path),
132
+ });
133
+ server.addTool({
134
+ name: "nomoreide_git_branches",
135
+ description: "List local and remote Git branches for a repository.",
136
+ parameters: gitCwdSchema,
137
+ execute: async ({ cwd }) => stringify(await git(cwd).branches()),
138
+ });
139
+ server.addTool({
140
+ name: "nomoreide_git_switch_branch",
141
+ description: "Switch to a local branch, or track a remote branch.",
142
+ parameters: gitBranchSchema,
143
+ execute: async ({ cwd, name }) => await git(cwd).switchBranch(name),
144
+ });
145
+ server.addTool({
146
+ name: "nomoreide_git_create_branch",
147
+ description: "Create and switch to a new Git branch.",
148
+ parameters: gitBranchSchema,
149
+ execute: async ({ cwd, name }) => await git(cwd).createBranch(name),
150
+ });
151
+ server.addTool({
152
+ name: "nomoreide_git_fetch",
153
+ description: "Fetch and prune remote Git refs for a repository.",
154
+ parameters: gitCwdSchema,
155
+ execute: async ({ cwd }) => await git(cwd).fetch(),
156
+ });
157
+ server.addTool({
158
+ name: "nomoreide_git_staged_diff",
159
+ description: "Show staged Git diff for a repository or file.",
160
+ parameters: gitPathSchema,
161
+ execute: async ({ cwd, path }) => await git(cwd).stagedDiff(path),
162
+ });
163
+ server.addTool({
164
+ name: "nomoreide_git_log",
165
+ description: "Show recent Git commits.",
166
+ parameters: gitCwdSchema.extend({
167
+ limit: z.number().int().positive().max(50).optional(),
168
+ }),
169
+ execute: async ({ cwd, limit }) => stringify(await git(cwd).log(limit)),
170
+ });
171
+ server.addTool({
172
+ name: "nomoreide_git_stage",
173
+ description: "Stage explicit file paths.",
174
+ parameters: gitPathsSchema,
175
+ execute: async ({ cwd, paths }) => stringify(await git(cwd).stage(paths)),
176
+ });
177
+ server.addTool({
178
+ name: "nomoreide_git_unstage",
179
+ description: "Unstage explicit file paths.",
180
+ parameters: gitPathsSchema,
181
+ execute: async ({ cwd, paths }) => stringify(await git(cwd).unstage(paths)),
182
+ });
183
+ server.addTool({
184
+ name: "nomoreide_git_commit",
185
+ description: "Create a Git commit from currently staged changes.",
186
+ parameters: gitCwdSchema.extend({
187
+ message: z.string().min(1),
188
+ }),
189
+ execute: async ({ cwd, message }) => await git(cwd).commit(message),
190
+ });
191
+ server.addTool({
192
+ name: "nomoreide_git_register_repository",
193
+ description: "Register a named Git repository folder for NoMoreIDE.",
194
+ parameters: z.object({
195
+ name: z.string().min(1),
196
+ path: z.string().min(1),
197
+ }),
198
+ execute: async (args) => stringify(await configStore.registerGitRepository(args)),
199
+ });
200
+ server.addTool({
201
+ name: "nomoreide_git_select_repository",
202
+ description: "Select the registered Git repository shown by NoMoreIDE.",
203
+ parameters: z.object({
204
+ name: z.string().min(1),
205
+ }),
206
+ execute: async ({ name }) => stringify(await configStore.selectGitRepository(name)),
207
+ });
208
+ server.addTool({
209
+ name: "nomoreide_open_ui",
210
+ description: "Open or reuse the singleton NoMoreIDE web UI.",
211
+ execute: async () => stringify(await uiLifecycle.ensureStarted()),
212
+ });
213
+ server.addTool({
214
+ name: "nomoreide_close_ui",
215
+ description: "Close the NoMoreIDE web UI owned by this MCP process.",
216
+ execute: async () => stringify(await uiLifecycle.close()),
217
+ });
218
+ }
219
+ function git(cwd) {
220
+ return new GitManager(cwd ?? process.cwd());
221
+ }
222
+ function stringify(value) {
223
+ return JSON.stringify(value, null, 2);
224
+ }
225
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}