opencode-mcp 1.0.2 → 1.2.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 +26 -0
- package/README.md +39 -3
- package/dist/client.d.ts +5 -4
- package/dist/client.js +18 -11
- package/dist/client.js.map +1 -1
- package/dist/helpers.d.ts +7 -0
- package/dist/helpers.js +12 -0
- package/dist/helpers.js.map +1 -1
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/tools/config.js +12 -7
- package/dist/tools/config.js.map +1 -1
- package/dist/tools/events.js +6 -2
- package/dist/tools/events.js.map +1 -1
- package/dist/tools/file.js +23 -18
- package/dist/tools/file.js.map +1 -1
- package/dist/tools/global.js +5 -3
- package/dist/tools/global.js.map +1 -1
- package/dist/tools/message.js +19 -13
- package/dist/tools/message.js.map +1 -1
- package/dist/tools/misc.js +46 -25
- package/dist/tools/misc.js.map +1 -1
- package/dist/tools/project.js +9 -5
- package/dist/tools/project.js.map +1 -1
- package/dist/tools/provider.js +12 -6
- package/dist/tools/provider.js.map +1 -1
- package/dist/tools/session.js +57 -37
- package/dist/tools/session.js.map +1 -1
- package/dist/tools/tui.js +34 -19
- package/dist/tools/tui.js.map +1 -1
- package/dist/tools/workflow.js +102 -22
- package/dist/tools/workflow.js.map +1 -1
- package/package.json +7 -3
package/dist/tools/session.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { toolJson, toolError, formatSessionList, toolResult } from "../helpers.js";
|
|
2
|
+
import { toolJson, toolError, formatSessionList, toolResult, directoryParam } from "../helpers.js";
|
|
3
3
|
export function registerSessionTools(server, client) {
|
|
4
|
-
server.tool("opencode_session_list", "List all sessions", {
|
|
4
|
+
server.tool("opencode_session_list", "List all sessions", {
|
|
5
|
+
directory: directoryParam,
|
|
6
|
+
}, async ({ directory }) => {
|
|
5
7
|
try {
|
|
6
|
-
const sessions = (await client.get("/session"));
|
|
8
|
+
const sessions = (await client.get("/session", undefined, directory));
|
|
7
9
|
return toolResult(formatSessionList(sessions));
|
|
8
10
|
}
|
|
9
11
|
catch (e) {
|
|
@@ -13,14 +15,15 @@ export function registerSessionTools(server, client) {
|
|
|
13
15
|
server.tool("opencode_session_create", "Create a new session. Optionally provide a parentID to create a child session, and a title.", {
|
|
14
16
|
parentID: z.string().optional().describe("Parent session ID"),
|
|
15
17
|
title: z.string().optional().describe("Session title"),
|
|
16
|
-
|
|
18
|
+
directory: directoryParam,
|
|
19
|
+
}, async ({ parentID, title, directory }) => {
|
|
17
20
|
try {
|
|
18
21
|
const body = {};
|
|
19
22
|
if (parentID)
|
|
20
23
|
body.parentID = parentID;
|
|
21
24
|
if (title)
|
|
22
25
|
body.title = title;
|
|
23
|
-
return toolJson(await client.post("/session", body));
|
|
26
|
+
return toolJson(await client.post("/session", body, { directory }));
|
|
24
27
|
}
|
|
25
28
|
catch (e) {
|
|
26
29
|
return toolError(e);
|
|
@@ -28,9 +31,10 @@ export function registerSessionTools(server, client) {
|
|
|
28
31
|
});
|
|
29
32
|
server.tool("opencode_session_get", "Get details of a specific session by ID", {
|
|
30
33
|
id: z.string().describe("Session ID"),
|
|
31
|
-
|
|
34
|
+
directory: directoryParam,
|
|
35
|
+
}, async ({ id, directory }) => {
|
|
32
36
|
try {
|
|
33
|
-
return toolJson(await client.get(`/session/${id}
|
|
37
|
+
return toolJson(await client.get(`/session/${id}`, undefined, directory));
|
|
34
38
|
}
|
|
35
39
|
catch (e) {
|
|
36
40
|
return toolError(e);
|
|
@@ -38,9 +42,10 @@ export function registerSessionTools(server, client) {
|
|
|
38
42
|
});
|
|
39
43
|
server.tool("opencode_session_delete", "Delete a session and all its data", {
|
|
40
44
|
id: z.string().describe("Session ID to delete"),
|
|
41
|
-
|
|
45
|
+
directory: directoryParam,
|
|
46
|
+
}, async ({ id, directory }) => {
|
|
42
47
|
try {
|
|
43
|
-
await client.delete(`/session/${id}
|
|
48
|
+
await client.delete(`/session/${id}`, undefined, directory);
|
|
44
49
|
return toolResult(`Session ${id} deleted.`);
|
|
45
50
|
}
|
|
46
51
|
catch (e) {
|
|
@@ -50,12 +55,13 @@ export function registerSessionTools(server, client) {
|
|
|
50
55
|
server.tool("opencode_session_update", "Update session properties (e.g. title)", {
|
|
51
56
|
id: z.string().describe("Session ID"),
|
|
52
57
|
title: z.string().optional().describe("New title for the session"),
|
|
53
|
-
|
|
58
|
+
directory: directoryParam,
|
|
59
|
+
}, async ({ id, title, directory }) => {
|
|
54
60
|
try {
|
|
55
61
|
const body = {};
|
|
56
62
|
if (title !== undefined)
|
|
57
63
|
body.title = title;
|
|
58
|
-
return toolJson(await client.patch(`/session/${id}`, body));
|
|
64
|
+
return toolJson(await client.patch(`/session/${id}`, body, directory));
|
|
59
65
|
}
|
|
60
66
|
catch (e) {
|
|
61
67
|
return toolError(e);
|
|
@@ -63,17 +69,20 @@ export function registerSessionTools(server, client) {
|
|
|
63
69
|
});
|
|
64
70
|
server.tool("opencode_session_children", "Get child sessions of a session", {
|
|
65
71
|
id: z.string().describe("Parent session ID"),
|
|
66
|
-
|
|
72
|
+
directory: directoryParam,
|
|
73
|
+
}, async ({ id, directory }) => {
|
|
67
74
|
try {
|
|
68
|
-
return toolJson(await client.get(`/session/${id}/children
|
|
75
|
+
return toolJson(await client.get(`/session/${id}/children`, undefined, directory));
|
|
69
76
|
}
|
|
70
77
|
catch (e) {
|
|
71
78
|
return toolError(e);
|
|
72
79
|
}
|
|
73
80
|
});
|
|
74
|
-
server.tool("opencode_session_status", "Get status for all sessions (running, idle, etc.)", {
|
|
81
|
+
server.tool("opencode_session_status", "Get status for all sessions (running, idle, etc.)", {
|
|
82
|
+
directory: directoryParam,
|
|
83
|
+
}, async ({ directory }) => {
|
|
75
84
|
try {
|
|
76
|
-
return toolJson(await client.get("/session/status"));
|
|
85
|
+
return toolJson(await client.get("/session/status", undefined, directory));
|
|
77
86
|
}
|
|
78
87
|
catch (e) {
|
|
79
88
|
return toolError(e);
|
|
@@ -81,9 +90,10 @@ export function registerSessionTools(server, client) {
|
|
|
81
90
|
});
|
|
82
91
|
server.tool("opencode_session_todo", "Get the todo list for a session", {
|
|
83
92
|
id: z.string().describe("Session ID"),
|
|
84
|
-
|
|
93
|
+
directory: directoryParam,
|
|
94
|
+
}, async ({ id, directory }) => {
|
|
85
95
|
try {
|
|
86
|
-
return toolJson(await client.get(`/session/${id}/todo
|
|
96
|
+
return toolJson(await client.get(`/session/${id}/todo`, undefined, directory));
|
|
87
97
|
}
|
|
88
98
|
catch (e) {
|
|
89
99
|
return toolError(e);
|
|
@@ -94,9 +104,10 @@ export function registerSessionTools(server, client) {
|
|
|
94
104
|
messageID: z.string().describe("Message ID"),
|
|
95
105
|
providerID: z.string().describe("Provider ID (e.g. 'anthropic')"),
|
|
96
106
|
modelID: z.string().describe("Model ID (e.g. 'claude-3-5-sonnet-20241022')"),
|
|
97
|
-
|
|
107
|
+
directory: directoryParam,
|
|
108
|
+
}, async ({ id, messageID, providerID, modelID, directory }) => {
|
|
98
109
|
try {
|
|
99
|
-
await client.post(`/session/${id}/init`, { messageID, providerID, modelID });
|
|
110
|
+
await client.post(`/session/${id}/init`, { messageID, providerID, modelID }, { directory });
|
|
100
111
|
return toolResult("AGENTS.md initialization started.");
|
|
101
112
|
}
|
|
102
113
|
catch (e) {
|
|
@@ -105,9 +116,10 @@ export function registerSessionTools(server, client) {
|
|
|
105
116
|
});
|
|
106
117
|
server.tool("opencode_session_abort", "Abort a running session", {
|
|
107
118
|
id: z.string().describe("Session ID to abort"),
|
|
108
|
-
|
|
119
|
+
directory: directoryParam,
|
|
120
|
+
}, async ({ id, directory }) => {
|
|
109
121
|
try {
|
|
110
|
-
await client.post(`/session/${id}/abort
|
|
122
|
+
await client.post(`/session/${id}/abort`, undefined, { directory });
|
|
111
123
|
return toolResult(`Session ${id} aborted.`);
|
|
112
124
|
}
|
|
113
125
|
catch (e) {
|
|
@@ -117,12 +129,13 @@ export function registerSessionTools(server, client) {
|
|
|
117
129
|
server.tool("opencode_session_fork", "Fork an existing session, optionally at a specific message", {
|
|
118
130
|
id: z.string().describe("Session ID to fork"),
|
|
119
131
|
messageID: z.string().optional().describe("Message ID to fork at (optional)"),
|
|
120
|
-
|
|
132
|
+
directory: directoryParam,
|
|
133
|
+
}, async ({ id, messageID, directory }) => {
|
|
121
134
|
try {
|
|
122
135
|
const body = {};
|
|
123
136
|
if (messageID)
|
|
124
137
|
body.messageID = messageID;
|
|
125
|
-
return toolJson(await client.post(`/session/${id}/fork`, body));
|
|
138
|
+
return toolJson(await client.post(`/session/${id}/fork`, body, { directory }));
|
|
126
139
|
}
|
|
127
140
|
catch (e) {
|
|
128
141
|
return toolError(e);
|
|
@@ -130,9 +143,10 @@ export function registerSessionTools(server, client) {
|
|
|
130
143
|
});
|
|
131
144
|
server.tool("opencode_session_share", "Share a session publicly", {
|
|
132
145
|
id: z.string().describe("Session ID to share"),
|
|
133
|
-
|
|
146
|
+
directory: directoryParam,
|
|
147
|
+
}, async ({ id, directory }) => {
|
|
134
148
|
try {
|
|
135
|
-
return toolJson(await client.post(`/session/${id}/share
|
|
149
|
+
return toolJson(await client.post(`/session/${id}/share`, undefined, { directory }));
|
|
136
150
|
}
|
|
137
151
|
catch (e) {
|
|
138
152
|
return toolError(e);
|
|
@@ -140,9 +154,10 @@ export function registerSessionTools(server, client) {
|
|
|
140
154
|
});
|
|
141
155
|
server.tool("opencode_session_unshare", "Unshare a previously shared session", {
|
|
142
156
|
id: z.string().describe("Session ID to unshare"),
|
|
143
|
-
|
|
157
|
+
directory: directoryParam,
|
|
158
|
+
}, async ({ id, directory }) => {
|
|
144
159
|
try {
|
|
145
|
-
return toolJson(await client.delete(`/session/${id}/share
|
|
160
|
+
return toolJson(await client.delete(`/session/${id}/share`, undefined, directory));
|
|
146
161
|
}
|
|
147
162
|
catch (e) {
|
|
148
163
|
return toolError(e);
|
|
@@ -151,12 +166,13 @@ export function registerSessionTools(server, client) {
|
|
|
151
166
|
server.tool("opencode_session_diff", "Get the diff for a session, optionally for a specific message", {
|
|
152
167
|
id: z.string().describe("Session ID"),
|
|
153
168
|
messageID: z.string().optional().describe("Message ID (optional)"),
|
|
154
|
-
|
|
169
|
+
directory: directoryParam,
|
|
170
|
+
}, async ({ id, messageID, directory }) => {
|
|
155
171
|
try {
|
|
156
172
|
const query = {};
|
|
157
173
|
if (messageID)
|
|
158
174
|
query.messageID = messageID;
|
|
159
|
-
return toolJson(await client.get(`/session/${id}/diff`, query));
|
|
175
|
+
return toolJson(await client.get(`/session/${id}/diff`, query, directory));
|
|
160
176
|
}
|
|
161
177
|
catch (e) {
|
|
162
178
|
return toolError(e);
|
|
@@ -166,9 +182,10 @@ export function registerSessionTools(server, client) {
|
|
|
166
182
|
id: z.string().describe("Session ID"),
|
|
167
183
|
providerID: z.string().describe("Provider ID (e.g. 'anthropic')"),
|
|
168
184
|
modelID: z.string().describe("Model ID (e.g. 'claude-3-5-sonnet-20241022')"),
|
|
169
|
-
|
|
185
|
+
directory: directoryParam,
|
|
186
|
+
}, async ({ id, providerID, modelID, directory }) => {
|
|
170
187
|
try {
|
|
171
|
-
await client.post(`/session/${id}/summarize`, { providerID, modelID });
|
|
188
|
+
await client.post(`/session/${id}/summarize`, { providerID, modelID }, { directory });
|
|
172
189
|
return toolResult("Session summarization started.");
|
|
173
190
|
}
|
|
174
191
|
catch (e) {
|
|
@@ -179,12 +196,13 @@ export function registerSessionTools(server, client) {
|
|
|
179
196
|
id: z.string().describe("Session ID"),
|
|
180
197
|
messageID: z.string().describe("Message ID to revert"),
|
|
181
198
|
partID: z.string().optional().describe("Part ID to revert (optional)"),
|
|
182
|
-
|
|
199
|
+
directory: directoryParam,
|
|
200
|
+
}, async ({ id, messageID, partID, directory }) => {
|
|
183
201
|
try {
|
|
184
202
|
const body = { messageID };
|
|
185
203
|
if (partID)
|
|
186
204
|
body.partID = partID;
|
|
187
|
-
await client.post(`/session/${id}/revert`, body);
|
|
205
|
+
await client.post(`/session/${id}/revert`, body, { directory });
|
|
188
206
|
return toolResult(`Message ${messageID} reverted.`);
|
|
189
207
|
}
|
|
190
208
|
catch (e) {
|
|
@@ -193,9 +211,10 @@ export function registerSessionTools(server, client) {
|
|
|
193
211
|
});
|
|
194
212
|
server.tool("opencode_session_unrevert", "Restore all reverted messages in a session", {
|
|
195
213
|
id: z.string().describe("Session ID"),
|
|
196
|
-
|
|
214
|
+
directory: directoryParam,
|
|
215
|
+
}, async ({ id, directory }) => {
|
|
197
216
|
try {
|
|
198
|
-
await client.post(`/session/${id}/unrevert
|
|
217
|
+
await client.post(`/session/${id}/unrevert`, undefined, { directory });
|
|
199
218
|
return toolResult("All reverted messages restored.");
|
|
200
219
|
}
|
|
201
220
|
catch (e) {
|
|
@@ -207,12 +226,13 @@ export function registerSessionTools(server, client) {
|
|
|
207
226
|
permissionID: z.string().describe("Permission request ID"),
|
|
208
227
|
response: z.string().describe("Response to the permission request"),
|
|
209
228
|
remember: z.boolean().optional().describe("Whether to remember this decision"),
|
|
210
|
-
|
|
229
|
+
directory: directoryParam,
|
|
230
|
+
}, async ({ id, permissionID, response, remember, directory }) => {
|
|
211
231
|
try {
|
|
212
232
|
const body = { response };
|
|
213
233
|
if (remember !== undefined)
|
|
214
234
|
body.remember = remember;
|
|
215
|
-
await client.post(`/session/${id}/permissions/${permissionID}`, body);
|
|
235
|
+
await client.post(`/session/${id}/permissions/${permissionID}`, body, { directory });
|
|
216
236
|
return toolResult("Permission response sent.");
|
|
217
237
|
}
|
|
218
238
|
catch (e) {
|
|
@@ -1 +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,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/tools/session.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/tui.js
CHANGED
|
@@ -3,31 +3,36 @@
|
|
|
3
3
|
* Useful for IDE integrations and automation.
|
|
4
4
|
*/
|
|
5
5
|
import { z } from "zod";
|
|
6
|
-
import { toolResult, toolError } from "../helpers.js";
|
|
6
|
+
import { toolResult, toolError, directoryParam } from "../helpers.js";
|
|
7
7
|
export function registerTuiTools(server, client) {
|
|
8
8
|
server.tool("opencode_tui_append_prompt", "Append text to the TUI's prompt input field", {
|
|
9
9
|
text: z.string().describe("Text to append to the prompt"),
|
|
10
|
-
|
|
10
|
+
directory: directoryParam,
|
|
11
|
+
}, async ({ text, directory }) => {
|
|
11
12
|
try {
|
|
12
|
-
await client.post("/tui/append-prompt", { text });
|
|
13
|
+
await client.post("/tui/append-prompt", { text }, { directory });
|
|
13
14
|
return toolResult("Text appended to prompt.");
|
|
14
15
|
}
|
|
15
16
|
catch (e) {
|
|
16
17
|
return toolError(e);
|
|
17
18
|
}
|
|
18
19
|
});
|
|
19
|
-
server.tool("opencode_tui_submit_prompt", "Submit the current prompt in the TUI (equivalent to pressing Enter)", {
|
|
20
|
+
server.tool("opencode_tui_submit_prompt", "Submit the current prompt in the TUI (equivalent to pressing Enter)", {
|
|
21
|
+
directory: directoryParam,
|
|
22
|
+
}, async ({ directory }) => {
|
|
20
23
|
try {
|
|
21
|
-
await client.post("/tui/submit-prompt");
|
|
24
|
+
await client.post("/tui/submit-prompt", undefined, { directory });
|
|
22
25
|
return toolResult("Prompt submitted.");
|
|
23
26
|
}
|
|
24
27
|
catch (e) {
|
|
25
28
|
return toolError(e);
|
|
26
29
|
}
|
|
27
30
|
});
|
|
28
|
-
server.tool("opencode_tui_clear_prompt", "Clear the current prompt text in the TUI", {
|
|
31
|
+
server.tool("opencode_tui_clear_prompt", "Clear the current prompt text in the TUI", {
|
|
32
|
+
directory: directoryParam,
|
|
33
|
+
}, async ({ directory }) => {
|
|
29
34
|
try {
|
|
30
|
-
await client.post("/tui/clear-prompt");
|
|
35
|
+
await client.post("/tui/clear-prompt", undefined, { directory });
|
|
31
36
|
return toolResult("Prompt cleared.");
|
|
32
37
|
}
|
|
33
38
|
catch (e) {
|
|
@@ -36,9 +41,10 @@ export function registerTuiTools(server, client) {
|
|
|
36
41
|
});
|
|
37
42
|
server.tool("opencode_tui_execute_command", "Execute a slash command through the TUI (e.g. '/init', '/undo')", {
|
|
38
43
|
command: z.string().describe("Command to execute (e.g. '/init')"),
|
|
39
|
-
|
|
44
|
+
directory: directoryParam,
|
|
45
|
+
}, async ({ command, directory }) => {
|
|
40
46
|
try {
|
|
41
|
-
await client.post("/tui/execute-command", { command });
|
|
47
|
+
await client.post("/tui/execute-command", { command }, { directory });
|
|
42
48
|
return toolResult(`Command '${command}' executed.`);
|
|
43
49
|
}
|
|
44
50
|
catch (e) {
|
|
@@ -52,50 +58,59 @@ export function registerTuiTools(server, client) {
|
|
|
52
58
|
.enum(["info", "success", "warning", "error"])
|
|
53
59
|
.optional()
|
|
54
60
|
.describe("Toast variant (default: info)"),
|
|
55
|
-
|
|
61
|
+
directory: directoryParam,
|
|
62
|
+
}, async ({ message, title, variant, directory }) => {
|
|
56
63
|
try {
|
|
57
64
|
const body = { message };
|
|
58
65
|
if (title)
|
|
59
66
|
body.title = title;
|
|
60
67
|
if (variant)
|
|
61
68
|
body.variant = variant;
|
|
62
|
-
await client.post("/tui/show-toast", body);
|
|
69
|
+
await client.post("/tui/show-toast", body, { directory });
|
|
63
70
|
return toolResult("Toast shown.");
|
|
64
71
|
}
|
|
65
72
|
catch (e) {
|
|
66
73
|
return toolError(e);
|
|
67
74
|
}
|
|
68
75
|
});
|
|
69
|
-
server.tool("opencode_tui_open_help", "Open the help dialog in the TUI", {
|
|
76
|
+
server.tool("opencode_tui_open_help", "Open the help dialog in the TUI", {
|
|
77
|
+
directory: directoryParam,
|
|
78
|
+
}, async ({ directory }) => {
|
|
70
79
|
try {
|
|
71
|
-
await client.post("/tui/open-help");
|
|
80
|
+
await client.post("/tui/open-help", undefined, { directory });
|
|
72
81
|
return toolResult("Help dialog opened.");
|
|
73
82
|
}
|
|
74
83
|
catch (e) {
|
|
75
84
|
return toolError(e);
|
|
76
85
|
}
|
|
77
86
|
});
|
|
78
|
-
server.tool("opencode_tui_open_sessions", "Open the session selector in the TUI", {
|
|
87
|
+
server.tool("opencode_tui_open_sessions", "Open the session selector in the TUI", {
|
|
88
|
+
directory: directoryParam,
|
|
89
|
+
}, async ({ directory }) => {
|
|
79
90
|
try {
|
|
80
|
-
await client.post("/tui/open-sessions");
|
|
91
|
+
await client.post("/tui/open-sessions", undefined, { directory });
|
|
81
92
|
return toolResult("Session selector opened.");
|
|
82
93
|
}
|
|
83
94
|
catch (e) {
|
|
84
95
|
return toolError(e);
|
|
85
96
|
}
|
|
86
97
|
});
|
|
87
|
-
server.tool("opencode_tui_open_models", "Open the model selector in the TUI", {
|
|
98
|
+
server.tool("opencode_tui_open_models", "Open the model selector in the TUI", {
|
|
99
|
+
directory: directoryParam,
|
|
100
|
+
}, async ({ directory }) => {
|
|
88
101
|
try {
|
|
89
|
-
await client.post("/tui/open-models");
|
|
102
|
+
await client.post("/tui/open-models", undefined, { directory });
|
|
90
103
|
return toolResult("Model selector opened.");
|
|
91
104
|
}
|
|
92
105
|
catch (e) {
|
|
93
106
|
return toolError(e);
|
|
94
107
|
}
|
|
95
108
|
});
|
|
96
|
-
server.tool("opencode_tui_open_themes", "Open the theme selector in the TUI", {
|
|
109
|
+
server.tool("opencode_tui_open_themes", "Open the theme selector in the TUI", {
|
|
110
|
+
directory: directoryParam,
|
|
111
|
+
}, async ({ directory }) => {
|
|
97
112
|
try {
|
|
98
|
-
await client.post("/tui/open-themes");
|
|
113
|
+
await client.post("/tui/open-themes", undefined, { directory });
|
|
99
114
|
return toolResult("Theme selector opened.");
|
|
100
115
|
}
|
|
101
116
|
catch (e) {
|
package/dist/tools/tui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/tools/tui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/tools/tui.ts"],"names":[],"mappings":"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"}
|