@mekareteriker/opencode-mcp 1.10.2-mekareteriker.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 +204 -0
- package/LICENSE +22 -0
- package/README.md +174 -0
- package/dist/client.d.ts +60 -0
- package/dist/client.js +282 -0
- package/dist/client.js.map +1 -0
- package/dist/helpers.d.ts +150 -0
- package/dist/helpers.js +575 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.js +198 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts.d.ts +9 -0
- package/dist/prompts.js +210 -0
- package/dist/prompts.js.map +1 -0
- package/dist/resources.d.ts +10 -0
- package/dist/resources.js +197 -0
- package/dist/resources.js.map +1 -0
- package/dist/server-manager.d.ts +72 -0
- package/dist/server-manager.js +264 -0
- package/dist/server-manager.js.map +1 -0
- package/dist/tools/config.d.ts +3 -0
- package/dist/tools/config.js +105 -0
- package/dist/tools/config.js.map +1 -0
- package/dist/tools/events.d.ts +6 -0
- package/dist/tools/events.js +63 -0
- package/dist/tools/events.js.map +1 -0
- package/dist/tools/file.d.ts +3 -0
- package/dist/tools/file.js +153 -0
- package/dist/tools/file.js.map +1 -0
- package/dist/tools/global.d.ts +3 -0
- package/dist/tools/global.js +17 -0
- package/dist/tools/global.js.map +1 -0
- package/dist/tools/message.d.ts +3 -0
- package/dist/tools/message.js +169 -0
- package/dist/tools/message.js.map +1 -0
- package/dist/tools/misc.d.ts +3 -0
- package/dist/tools/misc.js +298 -0
- package/dist/tools/misc.js.map +1 -0
- package/dist/tools/project.d.ts +3 -0
- package/dist/tools/project.js +62 -0
- package/dist/tools/project.js.map +1 -0
- package/dist/tools/provider.d.ts +3 -0
- package/dist/tools/provider.js +175 -0
- package/dist/tools/provider.js.map +1 -0
- package/dist/tools/session.d.ts +3 -0
- package/dist/tools/session.js +392 -0
- package/dist/tools/session.js.map +1 -0
- package/dist/tools/tui.d.ts +7 -0
- package/dist/tools/tui.js +121 -0
- package/dist/tools/tui.js.map +1 -0
- package/dist/tools/workflow.d.ts +7 -0
- package/dist/tools/workflow.js +775 -0
- package/dist/tools/workflow.js.map +1 -0
- package/package.json +68 -0
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { toolError, formatSessionList, formatDiffResponse, resolveSessionStatus, toolResult, directoryParam, destructive, readOnly } from "../helpers.js";
|
|
3
|
+
/** Format a single session object into a compact human-readable summary. */
|
|
4
|
+
function formatSession(raw) {
|
|
5
|
+
const s = raw;
|
|
6
|
+
if (!s || typeof s !== "object")
|
|
7
|
+
return JSON.stringify(raw);
|
|
8
|
+
const lines = [];
|
|
9
|
+
if (s.id)
|
|
10
|
+
lines.push(`ID: ${s.id}`);
|
|
11
|
+
if (s.title)
|
|
12
|
+
lines.push(`Title: ${s.title}`);
|
|
13
|
+
if (s.slug)
|
|
14
|
+
lines.push(`Slug: ${s.slug}`);
|
|
15
|
+
if (s.parentID)
|
|
16
|
+
lines.push(`Parent: ${s.parentID}`);
|
|
17
|
+
// Time field may be {created, updated} timestamps (ms since epoch)
|
|
18
|
+
const time = s.time;
|
|
19
|
+
if (time?.created) {
|
|
20
|
+
lines.push(`Created: ${new Date(time.created).toISOString()}`);
|
|
21
|
+
}
|
|
22
|
+
else if (s.createdAt) {
|
|
23
|
+
lines.push(`Created: ${s.createdAt}`);
|
|
24
|
+
}
|
|
25
|
+
if (time?.updated) {
|
|
26
|
+
lines.push(`Updated: ${new Date(time.updated).toISOString()}`);
|
|
27
|
+
}
|
|
28
|
+
else if (s.updatedAt) {
|
|
29
|
+
lines.push(`Updated: ${s.updatedAt}`);
|
|
30
|
+
}
|
|
31
|
+
if (s.status)
|
|
32
|
+
lines.push(`Status: ${s.status}`);
|
|
33
|
+
if (s.version)
|
|
34
|
+
lines.push(`Version: ${s.version}`);
|
|
35
|
+
if (s.directory)
|
|
36
|
+
lines.push(`Directory: ${s.directory}`);
|
|
37
|
+
if (s.shareUrl)
|
|
38
|
+
lines.push(`Share URL: ${s.shareUrl}`);
|
|
39
|
+
// Show summary if present
|
|
40
|
+
const summary = s.summary;
|
|
41
|
+
if (summary) {
|
|
42
|
+
const text = typeof summary === "string" ? summary : summary?.text;
|
|
43
|
+
if (text)
|
|
44
|
+
lines.push(`Summary: ${String(text).slice(0, 200)}`);
|
|
45
|
+
}
|
|
46
|
+
return lines.length > 0 ? lines.join("\n") : JSON.stringify(raw);
|
|
47
|
+
}
|
|
48
|
+
export function registerSessionTools(server, client) {
|
|
49
|
+
server.tool("opencode_session_list", "List all sessions", {
|
|
50
|
+
directory: directoryParam,
|
|
51
|
+
}, readOnly, async ({ directory }) => {
|
|
52
|
+
try {
|
|
53
|
+
const sessions = (await client.get("/session", undefined, directory));
|
|
54
|
+
return toolResult(formatSessionList(sessions));
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
return toolError(e);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
server.tool("opencode_session_create", "Create a new session. Optionally provide a parentID to create a child session, and a title.", {
|
|
61
|
+
parentID: z.string().optional().describe("Parent session ID"),
|
|
62
|
+
title: z.string().optional().describe("Session title"),
|
|
63
|
+
directory: directoryParam,
|
|
64
|
+
}, async ({ parentID, title, directory }) => {
|
|
65
|
+
try {
|
|
66
|
+
const body = {};
|
|
67
|
+
if (parentID)
|
|
68
|
+
body.parentID = parentID;
|
|
69
|
+
if (title)
|
|
70
|
+
body.title = title;
|
|
71
|
+
const session = await client.post("/session", body, { directory });
|
|
72
|
+
return toolResult(`Session created.\n\n${formatSession(session)}`);
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
return toolError(e);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
server.tool("opencode_session_get", "Get details of a specific session by ID", {
|
|
79
|
+
id: z.string().describe("Session ID"),
|
|
80
|
+
directory: directoryParam,
|
|
81
|
+
}, readOnly, async ({ id, directory }) => {
|
|
82
|
+
try {
|
|
83
|
+
const session = await client.get(`/session/${id}`, undefined, directory);
|
|
84
|
+
return toolResult(formatSession(session));
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
return toolError(e);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
server.tool("opencode_session_delete", "Delete a session and all its data", {
|
|
91
|
+
id: z.string().describe("Session ID to delete"),
|
|
92
|
+
directory: directoryParam,
|
|
93
|
+
}, destructive, async ({ id, directory }) => {
|
|
94
|
+
try {
|
|
95
|
+
await client.delete(`/session/${id}`, undefined, directory);
|
|
96
|
+
return toolResult(`Session ${id} deleted.`);
|
|
97
|
+
}
|
|
98
|
+
catch (e) {
|
|
99
|
+
return toolError(e);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
server.tool("opencode_session_update", "Update session properties (e.g. title)", {
|
|
103
|
+
id: z.string().describe("Session ID"),
|
|
104
|
+
title: z.string().optional().describe("New title for the session"),
|
|
105
|
+
directory: directoryParam,
|
|
106
|
+
}, async ({ id, title, directory }) => {
|
|
107
|
+
try {
|
|
108
|
+
const body = {};
|
|
109
|
+
if (title !== undefined)
|
|
110
|
+
body.title = title;
|
|
111
|
+
const updated = await client.patch(`/session/${id}`, body, directory);
|
|
112
|
+
return toolResult(formatSession(updated));
|
|
113
|
+
}
|
|
114
|
+
catch (e) {
|
|
115
|
+
return toolError(e);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
server.tool("opencode_session_children", "Get child sessions of a session", {
|
|
119
|
+
id: z.string().describe("Parent session ID"),
|
|
120
|
+
directory: directoryParam,
|
|
121
|
+
}, readOnly, async ({ id, directory }) => {
|
|
122
|
+
try {
|
|
123
|
+
const children = (await client.get(`/session/${id}/children`, undefined, directory));
|
|
124
|
+
if (!children || !Array.isArray(children) || children.length === 0) {
|
|
125
|
+
return toolResult("No child sessions found.");
|
|
126
|
+
}
|
|
127
|
+
return toolResult(formatSessionList(children));
|
|
128
|
+
}
|
|
129
|
+
catch (e) {
|
|
130
|
+
return toolError(e);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
server.tool("opencode_session_status", "Get status for all sessions (running, idle, etc.)", {
|
|
134
|
+
directory: directoryParam,
|
|
135
|
+
}, readOnly, async ({ directory }) => {
|
|
136
|
+
try {
|
|
137
|
+
const raw = await client.get("/session/status", undefined, directory);
|
|
138
|
+
const statuses = raw && typeof raw === "object" && !Array.isArray(raw)
|
|
139
|
+
? raw
|
|
140
|
+
: {};
|
|
141
|
+
const entries = Object.entries(statuses);
|
|
142
|
+
if (entries.length === 0) {
|
|
143
|
+
return toolResult("All sessions idle.");
|
|
144
|
+
}
|
|
145
|
+
const lines = entries.map(([id, status]) => `- ${id}: ${resolveSessionStatus(status)}`);
|
|
146
|
+
return toolResult(`## Session Status (${entries.length})\n${lines.join("\n")}`);
|
|
147
|
+
}
|
|
148
|
+
catch (e) {
|
|
149
|
+
return toolError(e);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
server.tool("opencode_session_todo", "Get the todo list for a session", {
|
|
153
|
+
id: z.string().describe("Session ID"),
|
|
154
|
+
directory: directoryParam,
|
|
155
|
+
}, readOnly, async ({ id, directory }) => {
|
|
156
|
+
try {
|
|
157
|
+
const raw = await client.get(`/session/${id}/todo`, undefined, directory);
|
|
158
|
+
const todos = Array.isArray(raw) ? raw : [];
|
|
159
|
+
if (todos.length === 0) {
|
|
160
|
+
return toolResult("No todos for this session.");
|
|
161
|
+
}
|
|
162
|
+
const lines = todos.map((t) => {
|
|
163
|
+
const done = t.status === "completed" || t.done === true || t.completed === true;
|
|
164
|
+
const check = done ? "[x]" : "[ ]";
|
|
165
|
+
const content = t.content ?? t.title ?? t.text ?? t.description ?? "?";
|
|
166
|
+
const priority = t.priority ? ` (${t.priority})` : "";
|
|
167
|
+
return `- ${check} ${content}${priority}`;
|
|
168
|
+
});
|
|
169
|
+
const completed = todos.filter((t) => t.status === "completed" || t.done === true || t.completed === true).length;
|
|
170
|
+
return toolResult(`## Todos (${completed}/${todos.length} done)\n${lines.join("\n")}`);
|
|
171
|
+
}
|
|
172
|
+
catch (e) {
|
|
173
|
+
return toolError(e);
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
server.tool("opencode_session_init", "Analyze the app and create AGENTS.md for a session. NOTE: This is a long-running operation that may take 30-60+ seconds depending on project size.", {
|
|
177
|
+
id: z.string().describe("Session ID"),
|
|
178
|
+
messageID: z.string().describe("Message ID"),
|
|
179
|
+
providerID: z.string().describe("Provider ID (e.g. 'anthropic')"),
|
|
180
|
+
modelID: z.string().describe("Model ID (e.g. 'claude-3-5-sonnet-20241022')"),
|
|
181
|
+
variant: z.string().optional().describe("Model variant (e.g. 'fast', 'smart')"),
|
|
182
|
+
directory: directoryParam,
|
|
183
|
+
}, async ({ id, messageID, providerID, modelID, variant, directory }) => {
|
|
184
|
+
try {
|
|
185
|
+
await client.post(`/session/${id}/init`, { messageID, providerID, modelID, variant }, { directory });
|
|
186
|
+
return toolResult("AGENTS.md initialization started.");
|
|
187
|
+
}
|
|
188
|
+
catch (e) {
|
|
189
|
+
return toolError(e);
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
server.tool("opencode_session_abort", "Abort a running session", {
|
|
193
|
+
id: z.string().describe("Session ID to abort"),
|
|
194
|
+
directory: directoryParam,
|
|
195
|
+
}, async ({ id, directory }) => {
|
|
196
|
+
try {
|
|
197
|
+
await client.post(`/session/${id}/abort`, undefined, { directory });
|
|
198
|
+
return toolResult(`Session ${id} aborted.`);
|
|
199
|
+
}
|
|
200
|
+
catch (e) {
|
|
201
|
+
return toolError(e);
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
server.tool("opencode_session_fork", "Fork an existing session, optionally at a specific message", {
|
|
205
|
+
id: z.string().describe("Session ID to fork"),
|
|
206
|
+
messageID: z.string().optional().describe("Message ID to fork at (optional)"),
|
|
207
|
+
directory: directoryParam,
|
|
208
|
+
}, async ({ id, messageID, directory }) => {
|
|
209
|
+
try {
|
|
210
|
+
const body = {};
|
|
211
|
+
if (messageID)
|
|
212
|
+
body.messageID = messageID;
|
|
213
|
+
const forked = await client.post(`/session/${id}/fork`, body, { directory });
|
|
214
|
+
return toolResult(`Session forked.\n\n${formatSession(forked)}`);
|
|
215
|
+
}
|
|
216
|
+
catch (e) {
|
|
217
|
+
return toolError(e);
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
server.tool("opencode_session_share", "Share a session publicly", {
|
|
221
|
+
id: z.string().describe("Session ID to share"),
|
|
222
|
+
directory: directoryParam,
|
|
223
|
+
}, async ({ id, directory }) => {
|
|
224
|
+
try {
|
|
225
|
+
const result = await client.post(`/session/${id}/share`, undefined, { directory });
|
|
226
|
+
const r = result;
|
|
227
|
+
// API may return share URL in different locations
|
|
228
|
+
const shareUrl = r.shareUrl ?? r.share?.url ?? null;
|
|
229
|
+
const header = shareUrl ? `Session shared.\nURL: ${shareUrl}` : "Session shared.";
|
|
230
|
+
return toolResult(`${header}\n\n${formatSession(result)}`);
|
|
231
|
+
}
|
|
232
|
+
catch (e) {
|
|
233
|
+
return toolError(e);
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
server.tool("opencode_session_unshare", "Unshare a previously shared session", {
|
|
237
|
+
id: z.string().describe("Session ID to unshare"),
|
|
238
|
+
directory: directoryParam,
|
|
239
|
+
}, async ({ id, directory }) => {
|
|
240
|
+
try {
|
|
241
|
+
await client.delete(`/session/${id}/share`, undefined, directory);
|
|
242
|
+
return toolResult(`Session ${id} unshared.`);
|
|
243
|
+
}
|
|
244
|
+
catch (e) {
|
|
245
|
+
return toolError(e);
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
server.tool("opencode_session_diff", "Get the diff for a session, optionally for a specific message", {
|
|
249
|
+
id: z.string().describe("Session ID"),
|
|
250
|
+
messageID: z.string().optional().describe("Message ID (optional)"),
|
|
251
|
+
directory: directoryParam,
|
|
252
|
+
}, async ({ id, messageID, directory }) => {
|
|
253
|
+
try {
|
|
254
|
+
const query = {};
|
|
255
|
+
if (messageID)
|
|
256
|
+
query.messageID = messageID;
|
|
257
|
+
const diffs = await client.get(`/session/${id}/diff`, query, directory);
|
|
258
|
+
return toolResult(formatDiffResponse(diffs));
|
|
259
|
+
}
|
|
260
|
+
catch (e) {
|
|
261
|
+
return toolError(e);
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
server.tool("opencode_session_summarize", "Summarize a session using a specified model. NOTE: This is a long-running operation that may take 30-60+ seconds.", {
|
|
265
|
+
id: z.string().describe("Session ID"),
|
|
266
|
+
providerID: z.string().describe("Provider ID (e.g. 'anthropic')"),
|
|
267
|
+
modelID: z.string().describe("Model ID (e.g. 'claude-3-5-sonnet-20241022')"),
|
|
268
|
+
variant: z.string().optional().describe("Model variant (e.g. 'fast', 'smart')"),
|
|
269
|
+
directory: directoryParam,
|
|
270
|
+
}, async ({ id, providerID, modelID, variant, directory }) => {
|
|
271
|
+
try {
|
|
272
|
+
await client.post(`/session/${id}/summarize`, { providerID, modelID, variant }, { directory });
|
|
273
|
+
return toolResult("Session summarization started.");
|
|
274
|
+
}
|
|
275
|
+
catch (e) {
|
|
276
|
+
return toolError(e);
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
server.tool("opencode_session_revert", "Revert a message in a session", {
|
|
280
|
+
id: z.string().describe("Session ID"),
|
|
281
|
+
messageID: z.string().describe("Message ID to revert"),
|
|
282
|
+
partID: z.string().optional().describe("Part ID to revert (optional)"),
|
|
283
|
+
directory: directoryParam,
|
|
284
|
+
}, async ({ id, messageID, partID, directory }) => {
|
|
285
|
+
try {
|
|
286
|
+
const body = { messageID };
|
|
287
|
+
if (partID)
|
|
288
|
+
body.partID = partID;
|
|
289
|
+
await client.post(`/session/${id}/revert`, body, { directory });
|
|
290
|
+
return toolResult(`Message ${messageID} reverted.`);
|
|
291
|
+
}
|
|
292
|
+
catch (e) {
|
|
293
|
+
return toolError(e);
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
server.tool("opencode_session_unrevert", "Restore all reverted messages in a session", {
|
|
297
|
+
id: z.string().describe("Session ID"),
|
|
298
|
+
directory: directoryParam,
|
|
299
|
+
}, async ({ id, directory }) => {
|
|
300
|
+
try {
|
|
301
|
+
await client.post(`/session/${id}/unrevert`, undefined, { directory });
|
|
302
|
+
return toolResult("All reverted messages restored.");
|
|
303
|
+
}
|
|
304
|
+
catch (e) {
|
|
305
|
+
return toolError(e);
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
// ─── Permission: list pending ─────────────────────────────────────────
|
|
309
|
+
server.tool("opencode_permission_list", "List all pending permission requests across all sessions. When a session is blocked waiting for approval (e.g. to run a shell command or access a file outside the project), it appears here. Respond with `opencode_session_permission`.", {
|
|
310
|
+
directory: directoryParam,
|
|
311
|
+
}, readOnly, async ({ directory }) => {
|
|
312
|
+
try {
|
|
313
|
+
const requests = (await client.get("/permission", undefined, directory));
|
|
314
|
+
if (!requests || !Array.isArray(requests) || requests.length === 0) {
|
|
315
|
+
return toolResult("No pending permission requests.");
|
|
316
|
+
}
|
|
317
|
+
const lines = requests.map((r) => {
|
|
318
|
+
const id = r.id ?? "?";
|
|
319
|
+
const session = r.sessionID ?? "?";
|
|
320
|
+
const perm = r.permission ?? "?";
|
|
321
|
+
const patterns = Array.isArray(r.patterns) ? r.patterns.join(", ") : "";
|
|
322
|
+
const tool = r.tool;
|
|
323
|
+
const toolName = tool?.name ?? tool?.tool ?? "";
|
|
324
|
+
let line = `- **${perm}** [${id}] (session: ${session})`;
|
|
325
|
+
if (toolName)
|
|
326
|
+
line += `\n Tool: ${toolName}`;
|
|
327
|
+
if (patterns)
|
|
328
|
+
line += `\n Patterns: ${patterns}`;
|
|
329
|
+
// Show what "always" would approve
|
|
330
|
+
const always = Array.isArray(r.always) ? r.always.join(", ") : "";
|
|
331
|
+
if (always)
|
|
332
|
+
line += `\n Always would approve: ${always}`;
|
|
333
|
+
return line;
|
|
334
|
+
});
|
|
335
|
+
return toolResult(`## Pending Permission Requests (${requests.length})\n\n` +
|
|
336
|
+
lines.join("\n\n") +
|
|
337
|
+
`\n\nRespond with: \`opencode_session_permission({id: "SESSION_ID", permissionID: "PERM_ID", reply: "once"|"always"|"reject"})\``);
|
|
338
|
+
}
|
|
339
|
+
catch (e) {
|
|
340
|
+
return toolError(e);
|
|
341
|
+
}
|
|
342
|
+
});
|
|
343
|
+
// ─── Permission: respond ──────────────────────────────────────────────
|
|
344
|
+
server.tool("opencode_session_permission", "Respond to a permission request in a session. Use `opencode_permission_list` to see pending requests. Reply values: 'once' (approve this request only), 'always' (approve this + future matching requests for this session), 'reject' (deny the request).", {
|
|
345
|
+
id: z.string().describe("Session ID"),
|
|
346
|
+
permissionID: z.string().describe("Permission request ID"),
|
|
347
|
+
reply: z.enum(["once", "always", "reject"]).describe("Response to the permission request: 'once' to approve once, 'always' to auto-approve matching future requests, 'reject' to deny"),
|
|
348
|
+
directory: directoryParam,
|
|
349
|
+
}, async ({ id, permissionID, reply, directory }) => {
|
|
350
|
+
try {
|
|
351
|
+
// Try the new API first (POST /permission/{requestID}/reply)
|
|
352
|
+
try {
|
|
353
|
+
await client.post(`/permission/${permissionID}/reply`, { reply }, { directory });
|
|
354
|
+
return toolResult(`Permission ${reply === "reject" ? "rejected" : "approved"} (${reply}).`);
|
|
355
|
+
}
|
|
356
|
+
catch {
|
|
357
|
+
// Fall back to the deprecated session-scoped endpoint
|
|
358
|
+
await client.post(`/session/${id}/permissions/${permissionID}`, { response: reply }, { directory });
|
|
359
|
+
return toolResult(`Permission ${reply === "reject" ? "rejected" : "approved"} (${reply}).`);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
catch (e) {
|
|
363
|
+
return toolError(e);
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
// ─── Session search ─────────────────────────────────────────────────
|
|
367
|
+
server.tool("opencode_session_search", "Search sessions by keyword in title. Useful for finding a specific session among many.", {
|
|
368
|
+
query: z.string().describe("Search keyword (case-insensitive match on session title)"),
|
|
369
|
+
directory: directoryParam,
|
|
370
|
+
}, readOnly, async ({ query, directory }) => {
|
|
371
|
+
try {
|
|
372
|
+
const sessions = (await client.get("/session", undefined, directory));
|
|
373
|
+
if (!sessions || sessions.length === 0) {
|
|
374
|
+
return toolResult("No sessions found.");
|
|
375
|
+
}
|
|
376
|
+
const q = query.toLowerCase();
|
|
377
|
+
const matches = sessions.filter((s) => {
|
|
378
|
+
const title = (s.title ?? "").toLowerCase();
|
|
379
|
+
const id = (s.id ?? "").toLowerCase();
|
|
380
|
+
return title.includes(q) || id.includes(q);
|
|
381
|
+
});
|
|
382
|
+
if (matches.length === 0) {
|
|
383
|
+
return toolResult(`No sessions matching: "${query}"\n\nTotal sessions: ${sessions.length}. Use \`opencode_session_list\` to see all.`);
|
|
384
|
+
}
|
|
385
|
+
return toolResult(`## Sessions matching "${query}" (${matches.length}/${sessions.length})\n${formatSessionList(matches)}`);
|
|
386
|
+
}
|
|
387
|
+
catch (e) {
|
|
388
|
+
return toolError(e);
|
|
389
|
+
}
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/tools/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE1J,4EAA4E;AAC5E,SAAS,aAAa,CAAC,GAAY;IACjC,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,CAAC,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpD,mEAAmE;IACnE,MAAM,IAAI,GAAG,CAAC,CAAC,IAA2C,CAAC;IAC3D,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,OAAiB,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC;SAAM,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,OAAiB,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC;SAAM,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,CAAC,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvD,0BAA0B;IAC1B,MAAM,OAAO,GAAG,CAAC,CAAC,OAAuD,CAAC;IAC1E,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,OAAmC,EAAE,IAAI,CAAC;QAChG,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAiB,EACjB,MAAsB;IAEtB,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,mBAAmB,EACnB;QACE,SAAS,EAAE,cAAc;KAC1B,EACD,QAAQ,EACR,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAmC,CAAC;YACxG,OAAO,UAAU,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,6FAA6F,EAC7F;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC7D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QACtD,SAAS,EAAE,cAAc;KAC1B,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,IAAI,GAA2B,EAAE,CAAC;YACxC,IAAI,QAAQ;gBAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACvC,IAAI,KAAK;gBAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACnE,OAAO,UAAU,CAAC,uBAAuB,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,yCAAyC,EACzC;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrC,SAAS,EAAE,cAAc;KAC1B,EACD,QAAQ,EACR,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACzE,OAAO,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,mCAAmC,EACnC;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QAC/C,SAAS,EAAE,cAAc;KAC1B,EACD,WAAW,EACX,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAC5D,OAAO,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,wCAAwC,EACxC;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAClE,SAAS,EAAE,cAAc;KAC1B,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,MAAM,IAAI,GAA2B,EAAE,CAAC;YACxC,IAAI,KAAK,KAAK,SAAS;gBAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YAC5C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YACtE,OAAO,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,iCAAiC,EACjC;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC5C,SAAS,EAAE,cAAc;KAC1B,EACD,QAAQ,EACR,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAc,CAAC;YAClG,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnE,OAAO,UAAU,CAAC,0BAA0B,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,UAAU,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,mDAAmD,EACnD;QACE,SAAS,EAAE,cAAc;KAC1B,EACD,QAAQ,EACR,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACtE,MAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;gBACpE,CAAC,CAAC,GAA8B;gBAChC,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,UAAU,CAAC,oBAAoB,CAAC,CAAC;YAC1C,CAAC;YACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxF,OAAO,UAAU,CAAC,sBAAsB,OAAO,CAAC,MAAM,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,iCAAiC,EACjC;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrC,SAAS,EAAE,cAAc;KAC1B,EACD,QAAQ,EACR,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAC1E,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAqC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,UAAU,CAAC,4BAA4B,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC;gBACjF,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;gBACnC,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,GAAG,CAAC;gBACvE,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,OAAO,KAAK,KAAK,IAAI,OAAO,GAAG,QAAQ,EAAE,CAAC;YAC5C,CAAC,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;YAClH,OAAO,UAAU,CAAC,aAAa,SAAS,IAAI,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,oJAAoJ,EACpJ;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACjE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;QAC5E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QAC/E,SAAS,EAAE,cAAc;KAC1B,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;QACnE,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACrG,OAAO,UAAU,CAAC,mCAAmC,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,yBAAyB,EACzB;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC9C,SAAS,EAAE,cAAc;KAC1B,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACpE,OAAO,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,4DAA4D,EAC5D;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAC7C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAC7E,SAAS,EAAE,cAAc;KAC1B,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,IAAI,GAA2B,EAAE,CAAC;YACxC,IAAI,SAAS;gBAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAC7E,OAAO,UAAU,CAAC,sBAAsB,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,0BAA0B,EAC1B;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC9C,SAAS,EAAE,cAAc;KAC1B,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACnF,MAAM,CAAC,GAAG,MAAiC,CAAC;YAC5C,kDAAkD;YAClD,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAK,CAAC,CAAC,KAA6C,EAAE,GAAG,IAAI,IAAI,CAAC;YAC7F,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC;YAClF,OAAO,UAAU,CAAC,GAAG,MAAM,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,qCAAqC,EACrC;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAChD,SAAS,EAAE,cAAc;KAC1B,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAClE,OAAO,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,+DAA+D,EAC/D;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAClE,SAAS,EAAE,cAAc;KAC1B,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,KAAK,GAA2B,EAAE,CAAC;YACzC,IAAI,SAAS;gBAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YACxE,OAAO,UAAU,CAAC,kBAAkB,CAAC,KAAkB,CAAC,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,mHAAmH,EACnH;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACjE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;QAC5E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QAC/E,SAAS,EAAE,cAAc;KAC1B,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;QACxD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAC/F,OAAO,UAAU,CAAC,gCAAgC,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,+BAA+B,EAC/B;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACtD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACtE,SAAS,EAAE,cAAc;KAC1B,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,IAAI,GAA2B,EAAE,SAAS,EAAE,CAAC;YACnD,IAAI,MAAM;gBAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACjC,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAChE,OAAO,UAAU,CAAC,WAAW,SAAS,YAAY,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,4CAA4C,EAC5C;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrC,SAAS,EAAE,cAAc;KAC1B,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACvE,OAAO,UAAU,CAAC,iCAAiC,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,yEAAyE;IACzE,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,2OAA2O,EAC3O;QACE,SAAS,EAAE,cAAc;KAC1B,EACD,QAAQ,EACR,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,CAAC,CAAmC,CAAC;YAC3G,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnE,OAAO,UAAU,CAAC,iCAAiC,CAAC,CAAC;YACvD,CAAC;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC/B,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC;gBACvB,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC;gBACnC,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC;gBACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,QAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtF,MAAM,IAAI,GAAG,CAAC,CAAC,IAA2C,CAAC;gBAC3D,MAAM,QAAQ,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;gBAChD,IAAI,IAAI,GAAG,OAAO,IAAI,OAAO,EAAE,eAAe,OAAO,GAAG,CAAC;gBACzD,IAAI,QAAQ;oBAAE,IAAI,IAAI,aAAa,QAAQ,EAAE,CAAC;gBAC9C,IAAI,QAAQ;oBAAE,IAAI,IAAI,iBAAiB,QAAQ,EAAE,CAAC;gBAClD,mCAAmC;gBACnC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,MAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChF,IAAI,MAAM;oBAAE,IAAI,IAAI,6BAA6B,MAAM,EAAE,CAAC;gBAC1D,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,OAAO,UAAU,CACf,mCAAmC,QAAQ,CAAC,MAAM,OAAO;gBACzD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;gBAClB,iIAAiI,CAClI,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,yEAAyE;IACzE,MAAM,CAAC,IAAI,CACT,6BAA6B,EAC7B,2PAA2P,EAC3P;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC1D,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,iIAAiI,CAAC;QACvL,SAAS,EAAE,cAAc;KAC1B,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,6DAA6D;YAC7D,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,YAAY,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;gBACjF,OAAO,UAAU,CAAC,cAAc,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,IAAI,CAAC,CAAC;YAC9F,CAAC;YAAC,MAAM,CAAC;gBACP,sDAAsD;gBACtD,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;gBACpG,OAAO,UAAU,CAAC,cAAc,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,IAAI,CAAC,CAAC;YAC9F,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,uEAAuE;IACvE,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,wFAAwF,EACxF;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;QACtF,SAAS,EAAE,cAAc;KAC1B,EACD,QAAQ,EACR,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAmC,CAAC;YACxG,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvC,OAAO,UAAU,CAAC,oBAAoB,CAAC,CAAC;YAC1C,CAAC;YAED,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBACpC,MAAM,KAAK,GAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAY,CAAC,WAAW,EAAE,CAAC;gBACxD,MAAM,EAAE,GAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAY,CAAC,WAAW,EAAE,CAAC;gBAClD,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,UAAU,CAAC,0BAA0B,KAAK,wBAAwB,QAAQ,CAAC,MAAM,6CAA6C,CAAC,CAAC;YACzI,CAAC;YAED,OAAO,UAAU,CACf,yBAAyB,KAAK,MAAM,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,MAAM,iBAAiB,CAAC,OAAO,CAAC,EAAE,CACxG,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI control tools — drive the OpenCode TUI remotely.
|
|
3
|
+
* Useful for IDE integrations and automation.
|
|
4
|
+
*/
|
|
5
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
6
|
+
import { OpenCodeClient } from "../client.js";
|
|
7
|
+
export declare function registerTuiTools(server: McpServer, client: OpenCodeClient): void;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI control tools — drive the OpenCode TUI remotely.
|
|
3
|
+
* Useful for IDE integrations and automation.
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { toolResult, toolError, directoryParam } from "../helpers.js";
|
|
7
|
+
export function registerTuiTools(server, client) {
|
|
8
|
+
server.tool("opencode_tui_append_prompt", "Append text to the TUI's prompt input field", {
|
|
9
|
+
text: z.string().describe("Text to append to the prompt"),
|
|
10
|
+
directory: directoryParam,
|
|
11
|
+
}, async ({ text, directory }) => {
|
|
12
|
+
try {
|
|
13
|
+
await client.post("/tui/append-prompt", { text }, { directory });
|
|
14
|
+
return toolResult("Text appended to prompt.");
|
|
15
|
+
}
|
|
16
|
+
catch (e) {
|
|
17
|
+
return toolError(e);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
server.tool("opencode_tui_submit_prompt", "Submit the current prompt in the TUI (equivalent to pressing Enter)", {
|
|
21
|
+
directory: directoryParam,
|
|
22
|
+
}, async ({ directory }) => {
|
|
23
|
+
try {
|
|
24
|
+
await client.post("/tui/submit-prompt", undefined, { directory });
|
|
25
|
+
return toolResult("Prompt submitted.");
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
return toolError(e);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
server.tool("opencode_tui_clear_prompt", "Clear the current prompt text in the TUI", {
|
|
32
|
+
directory: directoryParam,
|
|
33
|
+
}, async ({ directory }) => {
|
|
34
|
+
try {
|
|
35
|
+
await client.post("/tui/clear-prompt", undefined, { directory });
|
|
36
|
+
return toolResult("Prompt cleared.");
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
return toolError(e);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
server.tool("opencode_tui_execute_command", "Execute a slash command through the TUI (e.g. '/init', '/undo')", {
|
|
43
|
+
command: z.string().describe("Command to execute (e.g. '/init')"),
|
|
44
|
+
directory: directoryParam,
|
|
45
|
+
}, async ({ command, directory }) => {
|
|
46
|
+
try {
|
|
47
|
+
await client.post("/tui/execute-command", { command }, { directory });
|
|
48
|
+
return toolResult(`Command '${command}' executed.`);
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
return toolError(e);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
server.tool("opencode_tui_show_toast", "Show a toast notification in the TUI", {
|
|
55
|
+
message: z.string().describe("Toast message text"),
|
|
56
|
+
title: z.string().optional().describe("Optional toast title"),
|
|
57
|
+
variant: z
|
|
58
|
+
.enum(["info", "success", "warning", "error"])
|
|
59
|
+
.optional()
|
|
60
|
+
.describe("Toast variant (default: info)"),
|
|
61
|
+
directory: directoryParam,
|
|
62
|
+
}, async ({ message, title, variant, directory }) => {
|
|
63
|
+
try {
|
|
64
|
+
const body = { message };
|
|
65
|
+
if (title)
|
|
66
|
+
body.title = title;
|
|
67
|
+
if (variant)
|
|
68
|
+
body.variant = variant;
|
|
69
|
+
await client.post("/tui/show-toast", body, { directory });
|
|
70
|
+
return toolResult("Toast shown.");
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
return toolError(e);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
server.tool("opencode_tui_open_help", "Open the help dialog in the TUI", {
|
|
77
|
+
directory: directoryParam,
|
|
78
|
+
}, async ({ directory }) => {
|
|
79
|
+
try {
|
|
80
|
+
await client.post("/tui/open-help", undefined, { directory });
|
|
81
|
+
return toolResult("Help dialog opened.");
|
|
82
|
+
}
|
|
83
|
+
catch (e) {
|
|
84
|
+
return toolError(e);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
server.tool("opencode_tui_open_sessions", "Open the session selector in the TUI", {
|
|
88
|
+
directory: directoryParam,
|
|
89
|
+
}, async ({ directory }) => {
|
|
90
|
+
try {
|
|
91
|
+
await client.post("/tui/open-sessions", undefined, { directory });
|
|
92
|
+
return toolResult("Session selector opened.");
|
|
93
|
+
}
|
|
94
|
+
catch (e) {
|
|
95
|
+
return toolError(e);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
server.tool("opencode_tui_open_models", "Open the model selector in the TUI", {
|
|
99
|
+
directory: directoryParam,
|
|
100
|
+
}, async ({ directory }) => {
|
|
101
|
+
try {
|
|
102
|
+
await client.post("/tui/open-models", undefined, { directory });
|
|
103
|
+
return toolResult("Model selector opened.");
|
|
104
|
+
}
|
|
105
|
+
catch (e) {
|
|
106
|
+
return toolError(e);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
server.tool("opencode_tui_open_themes", "Open the theme selector in the TUI", {
|
|
110
|
+
directory: directoryParam,
|
|
111
|
+
}, async ({ directory }) => {
|
|
112
|
+
try {
|
|
113
|
+
await client.post("/tui/open-themes", undefined, { directory });
|
|
114
|
+
return toolResult("Theme selector opened.");
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
return toolError(e);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=tui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/tools/tui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* High-level workflow tools — composite operations that make it easy
|
|
3
|
+
* for an LLM to accomplish common tasks in a single call.
|
|
4
|
+
*/
|
|
5
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
6
|
+
import { OpenCodeClient } from "../client.js";
|
|
7
|
+
export declare function registerWorkflowTools(server: McpServer, client: OpenCodeClient): void;
|