c64bridge 0.7.4 → 0.8.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/.github/prompts/README.md +14 -4
- package/.github/prompts/assembly-routine-session.prompt.md +9 -9
- package/.github/prompts/basic-program-session.prompt.md +11 -9
- package/.github/prompts/drive-management-session.prompt.md +9 -9
- package/.github/prompts/hello-world-session.prompt.md +17 -0
- package/.github/prompts/petscii-art-session.prompt.md +9 -9
- package/.github/prompts/play-classic-game.prompt.md +9 -9
- package/.github/prompts/pr-converge.prompt.md +13 -0
- package/.github/prompts/sid-music-session.prompt.md +9 -9
- package/AGENTS.md +59 -60
- package/README.md +550 -191
- package/data/assembly/assembly-spec.md +290 -1
- package/data/context/bootstrap.md +26 -2
- package/data/context/fast-paths.md +44 -0
- package/data/graphics/petscii-style-guide.md +6 -2
- package/data/graphics/sprite-charset-best-practices.md +5 -5
- package/dist/.tsbuildinfo +1 -1
- package/dist/c64Client.js +990 -26
- package/dist/config.js +5 -1
- package/dist/device.js +680 -57
- package/dist/diagnostics.js +371 -0
- package/dist/mcp/metadata.js +39 -0
- package/dist/mcp-server.js +170 -20
- package/dist/platform.js +10 -2
- package/dist/prompts/registry.js +166 -309
- package/dist/rag/init.js +37 -1
- package/dist/rag/knowledgeIndex.js +18 -6
- package/dist/rag/rateLimiter.js +2 -2
- package/dist/streamCapture.js +135 -0
- package/dist/tools/audio.js +3 -1
- package/dist/tools/debug.js +470 -0
- package/dist/tools/developer.js +10 -4
- package/dist/tools/graphics.js +183 -17
- package/dist/tools/machineControl.js +11 -5
- package/dist/tools/memory.js +19 -10
- package/dist/tools/meta/audio.js +240 -1
- package/dist/tools/meta/config.js +20 -28
- package/dist/tools/meta/configInventory.js +104 -0
- package/dist/tools/meta/diagnostics.js +45 -2
- package/dist/tools/meta/graphics.js +14 -6
- package/dist/tools/meta/index.js +1 -0
- package/dist/tools/meta/memory.js +20 -6
- package/dist/tools/meta/program.js +473 -0
- package/dist/tools/pollValidator.js +4 -2
- package/dist/tools/programRunners.js +8 -4
- package/dist/tools/registry/config.js +17 -0
- package/dist/tools/registry/disk.js +7 -0
- package/dist/tools/registry/drive.js +3 -0
- package/dist/tools/registry/graphics.js +111 -27
- package/dist/tools/registry/index.js +6 -0
- package/dist/tools/registry/memory.js +1 -0
- package/dist/tools/registry/platform.js +121 -0
- package/dist/tools/registry/program.js +26 -8
- package/dist/tools/registry/sound.js +96 -0
- package/dist/tools/registry/system.js +15 -2
- package/dist/tools/storage.js +1 -0
- package/dist/tools/streaming.js +1 -0
- package/dist/tools/types.js +38 -4
- package/dist/tools/vice.js +160 -0
- package/dist/vicBitmap.js +317 -0
- package/dist/vice/mockServer.js +439 -0
- package/dist/vice/process.js +310 -0
- package/dist/vice/readiness.js +18 -2
- package/dist/vice/viceClient.js +382 -22
- package/doc/developer.md +62 -24
- package/doc/img/backend-switch/hello-c64u.png +0 -0
- package/doc/img/backend-switch/hello-vice-and-c64u.png +0 -0
- package/doc/img/backend-switch/hello-vice.png +0 -0
- package/doc/img/backend-switch/metadata.json +50 -0
- package/doc/plans/vice-backend-switch/plan.md +486 -0
- package/doc/plans/vice-backend-switch-2/plan.md +48 -0
- package/doc/plans/vice-support/notes.md +1 -0
- package/doc/plans/vice-support/plan.md +5 -0
- package/doc/plans/vice-support/rollout.md +23 -17
- package/doc/reviews/vice-support-review.md +185 -0
- package/doc/troubleshooting-mcp.md +35 -6
- package/doc/vice/support-matrix.md +54 -0
- package/mcp/prompts.json +292 -0
- package/mcp/protocol-examples.json +46 -0
- package/mcp/resources.json +940 -0
- package/mcp/schemas/c64_config.schema.json +350 -0
- package/mcp/schemas/c64_debug.schema.json +380 -0
- package/mcp/schemas/c64_disk.schema.json +278 -0
- package/mcp/schemas/c64_drive.schema.json +120 -0
- package/mcp/schemas/c64_extract.schema.json +302 -0
- package/mcp/schemas/c64_graphics.schema.json +333 -0
- package/mcp/schemas/c64_memory.schema.json +155 -0
- package/mcp/schemas/c64_printer.schema.json +218 -0
- package/mcp/schemas/c64_program.schema.json +391 -0
- package/mcp/schemas/c64_rag.schema.json +67 -0
- package/mcp/schemas/c64_select_backend.schema.json +32 -0
- package/mcp/schemas/c64_sound.schema.json +644 -0
- package/mcp/schemas/c64_stream.schema.json +61 -0
- package/mcp/schemas/c64_system.schema.json +227 -0
- package/mcp/schemas/c64_vice.schema.json +63 -0
- package/mcp/server.json +15 -0
- package/mcp/tools.json +4517 -0
- package/mcp.json +83 -9
- package/package.json +8 -3
- package/scripts/capture-backend-switch-screenshots.mjs +276 -0
- package/scripts/generate-mcp-interface.ts +289 -0
- package/scripts/invoke-bun.mjs +67 -21
- package/scripts/mockC64Server.mjs +162 -6
- package/scripts/run-coverage.mjs +284 -0
- package/scripts/run-tests.mjs +95 -39
- package/scripts/run-tests.ts +378 -73
- package/scripts/update-readme.ts +147 -13
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"description": "Program operations available via the c64_program tool.",
|
|
4
|
+
"oneOf": [
|
|
5
|
+
{
|
|
6
|
+
"type": "object",
|
|
7
|
+
"description": "Load a PRG from Ultimate storage without executing it.",
|
|
8
|
+
"properties": {
|
|
9
|
+
"path": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "Path to the PRG image. Use an Ultimate-visible filesystem path on c64u, or a host-local filesystem path on VICE.",
|
|
12
|
+
"minLength": 1
|
|
13
|
+
},
|
|
14
|
+
"op": {
|
|
15
|
+
"const": "load_prg"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"required": [
|
|
19
|
+
"path",
|
|
20
|
+
"op"
|
|
21
|
+
],
|
|
22
|
+
"additionalProperties": false
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "object",
|
|
26
|
+
"description": "Load and execute a PRG from Ultimate-visible storage on c64u or a host-local path on VICE.",
|
|
27
|
+
"properties": {
|
|
28
|
+
"path": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"description": "Path to the PRG image. Use an Ultimate-visible filesystem path on c64u, or a host-local filesystem path on VICE.",
|
|
31
|
+
"minLength": 1
|
|
32
|
+
},
|
|
33
|
+
"op": {
|
|
34
|
+
"const": "run_prg"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"required": [
|
|
38
|
+
"path",
|
|
39
|
+
"op"
|
|
40
|
+
],
|
|
41
|
+
"additionalProperties": false
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"type": "object",
|
|
45
|
+
"description": "Mount and run a CRT cartridge image.",
|
|
46
|
+
"properties": {
|
|
47
|
+
"path": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"description": "Path to the CRT image on Ultimate-visible storage. CRT mounting is only supported on c64u.",
|
|
50
|
+
"minLength": 1
|
|
51
|
+
},
|
|
52
|
+
"op": {
|
|
53
|
+
"const": "run_crt"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"required": [
|
|
57
|
+
"path",
|
|
58
|
+
"op"
|
|
59
|
+
],
|
|
60
|
+
"additionalProperties": false
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"type": "object",
|
|
64
|
+
"description": "Upload Commodore BASIC v2 source and execute it immediately.",
|
|
65
|
+
"properties": {
|
|
66
|
+
"program": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"description": "Commodore BASIC v2 program source to upload and run.",
|
|
69
|
+
"minLength": 1
|
|
70
|
+
},
|
|
71
|
+
"verify": {
|
|
72
|
+
"type": "boolean",
|
|
73
|
+
"description": "Run post-execution polling to ensure the BASIC program executed without errors.",
|
|
74
|
+
"default": false
|
|
75
|
+
},
|
|
76
|
+
"op": {
|
|
77
|
+
"const": "upload_run_basic"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"required": [
|
|
81
|
+
"program",
|
|
82
|
+
"op"
|
|
83
|
+
],
|
|
84
|
+
"additionalProperties": false
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"type": "object",
|
|
88
|
+
"description": "Assemble 6502/6510 source, upload the PRG, and execute it.",
|
|
89
|
+
"properties": {
|
|
90
|
+
"program": {
|
|
91
|
+
"type": "string",
|
|
92
|
+
"description": "Assembly source that will be assembled to a PRG and executed.",
|
|
93
|
+
"minLength": 1
|
|
94
|
+
},
|
|
95
|
+
"verify": {
|
|
96
|
+
"type": "boolean",
|
|
97
|
+
"description": "Run post-execution polling to confirm the assembly program remained stable.",
|
|
98
|
+
"default": false
|
|
99
|
+
},
|
|
100
|
+
"op": {
|
|
101
|
+
"const": "upload_run_asm"
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"required": [
|
|
105
|
+
"program",
|
|
106
|
+
"op"
|
|
107
|
+
],
|
|
108
|
+
"additionalProperties": false
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"type": "object",
|
|
112
|
+
"description": "Run multiple PRG/CRT programs with post-run assertions.",
|
|
113
|
+
"properties": {
|
|
114
|
+
"programs": {
|
|
115
|
+
"type": "array",
|
|
116
|
+
"items": {
|
|
117
|
+
"type": "object",
|
|
118
|
+
"description": "Program to run with assertions",
|
|
119
|
+
"properties": {
|
|
120
|
+
"path": {
|
|
121
|
+
"type": "string",
|
|
122
|
+
"description": "Program path (PRG or CRT)",
|
|
123
|
+
"minLength": 1
|
|
124
|
+
},
|
|
125
|
+
"assertions": {
|
|
126
|
+
"type": [
|
|
127
|
+
"array",
|
|
128
|
+
"null"
|
|
129
|
+
],
|
|
130
|
+
"items": {
|
|
131
|
+
"type": "object",
|
|
132
|
+
"description": "Assertion to check after run",
|
|
133
|
+
"properties": {
|
|
134
|
+
"type": {
|
|
135
|
+
"type": "string",
|
|
136
|
+
"description": "Assertion type",
|
|
137
|
+
"enum": [
|
|
138
|
+
"screen_contains",
|
|
139
|
+
"memory_equals",
|
|
140
|
+
"sid_silent"
|
|
141
|
+
]
|
|
142
|
+
},
|
|
143
|
+
"pattern": {
|
|
144
|
+
"type": [
|
|
145
|
+
"string",
|
|
146
|
+
"null"
|
|
147
|
+
],
|
|
148
|
+
"description": "Pattern for screen_contains",
|
|
149
|
+
"minLength": 1
|
|
150
|
+
},
|
|
151
|
+
"address": {
|
|
152
|
+
"type": [
|
|
153
|
+
"string",
|
|
154
|
+
"null"
|
|
155
|
+
],
|
|
156
|
+
"description": "Address for memory_equals",
|
|
157
|
+
"minLength": 1
|
|
158
|
+
},
|
|
159
|
+
"expected": {
|
|
160
|
+
"type": [
|
|
161
|
+
"string",
|
|
162
|
+
"null"
|
|
163
|
+
],
|
|
164
|
+
"description": "Expected value (hex)",
|
|
165
|
+
"minLength": 1
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"required": [
|
|
169
|
+
"type"
|
|
170
|
+
],
|
|
171
|
+
"additionalProperties": false
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
"required": [
|
|
176
|
+
"path"
|
|
177
|
+
],
|
|
178
|
+
"additionalProperties": false
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
"continueOnError": {
|
|
182
|
+
"type": [
|
|
183
|
+
"boolean",
|
|
184
|
+
"null"
|
|
185
|
+
],
|
|
186
|
+
"description": "Continue running programs after assertion failure",
|
|
187
|
+
"default": false
|
|
188
|
+
},
|
|
189
|
+
"durationMs": {
|
|
190
|
+
"type": [
|
|
191
|
+
"integer",
|
|
192
|
+
"null"
|
|
193
|
+
],
|
|
194
|
+
"description": "Duration to run each program before assertions",
|
|
195
|
+
"minimum": 1,
|
|
196
|
+
"default": 2000
|
|
197
|
+
},
|
|
198
|
+
"outputPath": {
|
|
199
|
+
"type": [
|
|
200
|
+
"string",
|
|
201
|
+
"null"
|
|
202
|
+
],
|
|
203
|
+
"description": "Output directory for test results",
|
|
204
|
+
"minLength": 1
|
|
205
|
+
},
|
|
206
|
+
"resetDelayMs": {
|
|
207
|
+
"type": [
|
|
208
|
+
"integer",
|
|
209
|
+
"null"
|
|
210
|
+
],
|
|
211
|
+
"description": "Delay after reset operations to allow the platform to settle.",
|
|
212
|
+
"minimum": 0,
|
|
213
|
+
"maximum": 1000,
|
|
214
|
+
"default": 100
|
|
215
|
+
},
|
|
216
|
+
"op": {
|
|
217
|
+
"const": "batch_run"
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
"required": [
|
|
221
|
+
"programs",
|
|
222
|
+
"op"
|
|
223
|
+
],
|
|
224
|
+
"additionalProperties": false
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"type": "object",
|
|
228
|
+
"description": "Capture screen, memory, and debug registers into an artifact bundle.",
|
|
229
|
+
"properties": {
|
|
230
|
+
"runId": {
|
|
231
|
+
"type": "string",
|
|
232
|
+
"description": "Unique identifier for this run",
|
|
233
|
+
"minLength": 1
|
|
234
|
+
},
|
|
235
|
+
"outputPath": {
|
|
236
|
+
"type": "string",
|
|
237
|
+
"description": "Output directory for artifacts bundle",
|
|
238
|
+
"minLength": 1
|
|
239
|
+
},
|
|
240
|
+
"captureScreen": {
|
|
241
|
+
"type": [
|
|
242
|
+
"boolean",
|
|
243
|
+
"null"
|
|
244
|
+
],
|
|
245
|
+
"description": "Capture screen content",
|
|
246
|
+
"default": true
|
|
247
|
+
},
|
|
248
|
+
"memoryRanges": {
|
|
249
|
+
"type": [
|
|
250
|
+
"array",
|
|
251
|
+
"null"
|
|
252
|
+
],
|
|
253
|
+
"items": {
|
|
254
|
+
"type": "object",
|
|
255
|
+
"description": "Memory range to snapshot",
|
|
256
|
+
"properties": {
|
|
257
|
+
"address": {
|
|
258
|
+
"type": "string",
|
|
259
|
+
"description": "Start address",
|
|
260
|
+
"minLength": 1
|
|
261
|
+
},
|
|
262
|
+
"length": {
|
|
263
|
+
"type": "integer",
|
|
264
|
+
"description": "Length in bytes",
|
|
265
|
+
"minimum": 1
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
"required": [
|
|
269
|
+
"address",
|
|
270
|
+
"length"
|
|
271
|
+
],
|
|
272
|
+
"additionalProperties": false
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
"captureDebugReg": {
|
|
276
|
+
"type": [
|
|
277
|
+
"boolean",
|
|
278
|
+
"null"
|
|
279
|
+
],
|
|
280
|
+
"description": "Capture debugreg state",
|
|
281
|
+
"default": true
|
|
282
|
+
},
|
|
283
|
+
"op": {
|
|
284
|
+
"const": "bundle_run"
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
"required": [
|
|
288
|
+
"runId",
|
|
289
|
+
"outputPath",
|
|
290
|
+
"op"
|
|
291
|
+
],
|
|
292
|
+
"additionalProperties": false
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
"type": "object",
|
|
296
|
+
"description": "Show a platform-customized greeting on one or more configured backends, capture screenshots, and verify the results.",
|
|
297
|
+
"properties": {
|
|
298
|
+
"platforms": {
|
|
299
|
+
"type": [
|
|
300
|
+
"array",
|
|
301
|
+
"null"
|
|
302
|
+
],
|
|
303
|
+
"items": {
|
|
304
|
+
"type": "string",
|
|
305
|
+
"description": "Backends to target in sequence.",
|
|
306
|
+
"minLength": 1,
|
|
307
|
+
"enum": [
|
|
308
|
+
"vice",
|
|
309
|
+
"c64u"
|
|
310
|
+
]
|
|
311
|
+
},
|
|
312
|
+
"default": [
|
|
313
|
+
"vice",
|
|
314
|
+
"c64u"
|
|
315
|
+
]
|
|
316
|
+
},
|
|
317
|
+
"messageTemplate": {
|
|
318
|
+
"type": [
|
|
319
|
+
"string",
|
|
320
|
+
"null"
|
|
321
|
+
],
|
|
322
|
+
"description": "Greeting template. Use {PLATFORM}/{BACKEND} for uppercase or {platform}/{backend} for lowercase substitution.",
|
|
323
|
+
"minLength": 1,
|
|
324
|
+
"default": "HAVE A GREAT DAY, {PLATFORM}!"
|
|
325
|
+
},
|
|
326
|
+
"verify": {
|
|
327
|
+
"type": [
|
|
328
|
+
"boolean",
|
|
329
|
+
"null"
|
|
330
|
+
],
|
|
331
|
+
"description": "Poll the text screen and require the rendered greeting to appear.",
|
|
332
|
+
"default": true
|
|
333
|
+
},
|
|
334
|
+
"captureScreenshot": {
|
|
335
|
+
"type": [
|
|
336
|
+
"boolean",
|
|
337
|
+
"null"
|
|
338
|
+
],
|
|
339
|
+
"description": "Capture a framebuffer screenshot and save it as a PNG per backend.",
|
|
340
|
+
"default": true
|
|
341
|
+
},
|
|
342
|
+
"outputPath": {
|
|
343
|
+
"type": [
|
|
344
|
+
"string",
|
|
345
|
+
"null"
|
|
346
|
+
],
|
|
347
|
+
"description": "Directory for screenshots and the workflow summary JSON.",
|
|
348
|
+
"minLength": 1
|
|
349
|
+
},
|
|
350
|
+
"restoreActiveBackend": {
|
|
351
|
+
"type": [
|
|
352
|
+
"boolean",
|
|
353
|
+
"null"
|
|
354
|
+
],
|
|
355
|
+
"description": "Restore the backend that was active before the workflow started.",
|
|
356
|
+
"default": true
|
|
357
|
+
},
|
|
358
|
+
"timeoutMs": {
|
|
359
|
+
"type": [
|
|
360
|
+
"integer",
|
|
361
|
+
"null"
|
|
362
|
+
],
|
|
363
|
+
"description": "Maximum time to wait for each greeting to appear on screen.",
|
|
364
|
+
"minimum": 100,
|
|
365
|
+
"maximum": 5000,
|
|
366
|
+
"default": 1500
|
|
367
|
+
},
|
|
368
|
+
"pollIntervalMs": {
|
|
369
|
+
"type": [
|
|
370
|
+
"integer",
|
|
371
|
+
"null"
|
|
372
|
+
],
|
|
373
|
+
"description": "Delay between screen polls while verifying the greeting.",
|
|
374
|
+
"minimum": 50,
|
|
375
|
+
"maximum": 1000,
|
|
376
|
+
"default": 100
|
|
377
|
+
},
|
|
378
|
+
"op": {
|
|
379
|
+
"const": "cross_platform_greeting"
|
|
380
|
+
}
|
|
381
|
+
},
|
|
382
|
+
"additionalProperties": false,
|
|
383
|
+
"required": [
|
|
384
|
+
"op"
|
|
385
|
+
]
|
|
386
|
+
}
|
|
387
|
+
],
|
|
388
|
+
"discriminator": {
|
|
389
|
+
"propertyName": "op"
|
|
390
|
+
}
|
|
391
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"description": "RAG operations available via the c64_rag tool.",
|
|
4
|
+
"oneOf": [
|
|
5
|
+
{
|
|
6
|
+
"type": "object",
|
|
7
|
+
"description": "Retrieve BASIC references and snippets from the local knowledge base.",
|
|
8
|
+
"properties": {
|
|
9
|
+
"q": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "Natural-language query describing the desired BASIC or assembly guidance.",
|
|
12
|
+
"minLength": 3
|
|
13
|
+
},
|
|
14
|
+
"k": {
|
|
15
|
+
"type": [
|
|
16
|
+
"integer",
|
|
17
|
+
"null"
|
|
18
|
+
],
|
|
19
|
+
"description": "Maximum number of references to return (1-12).",
|
|
20
|
+
"minimum": 1,
|
|
21
|
+
"maximum": 12,
|
|
22
|
+
"default": 3
|
|
23
|
+
},
|
|
24
|
+
"op": {
|
|
25
|
+
"const": "basic"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"required": [
|
|
29
|
+
"q",
|
|
30
|
+
"op"
|
|
31
|
+
],
|
|
32
|
+
"additionalProperties": false
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"type": "object",
|
|
36
|
+
"description": "Retrieve 6502/6510 assembly references from the local knowledge base.",
|
|
37
|
+
"properties": {
|
|
38
|
+
"q": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"description": "Natural-language query describing the desired BASIC or assembly guidance.",
|
|
41
|
+
"minLength": 3
|
|
42
|
+
},
|
|
43
|
+
"k": {
|
|
44
|
+
"type": [
|
|
45
|
+
"integer",
|
|
46
|
+
"null"
|
|
47
|
+
],
|
|
48
|
+
"description": "Maximum number of references to return (1-12).",
|
|
49
|
+
"minimum": 1,
|
|
50
|
+
"maximum": 12,
|
|
51
|
+
"default": 3
|
|
52
|
+
},
|
|
53
|
+
"op": {
|
|
54
|
+
"const": "asm"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"required": [
|
|
58
|
+
"q",
|
|
59
|
+
"op"
|
|
60
|
+
],
|
|
61
|
+
"additionalProperties": false
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"discriminator": {
|
|
65
|
+
"propertyName": "op"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"description": "Runtime backend selection operations.",
|
|
4
|
+
"oneOf": [
|
|
5
|
+
{
|
|
6
|
+
"type": "object",
|
|
7
|
+
"description": "Switch the active runtime backend without restarting the MCP server.",
|
|
8
|
+
"properties": {
|
|
9
|
+
"op": {
|
|
10
|
+
"const": "select",
|
|
11
|
+
"description": "Selects the select operation."
|
|
12
|
+
},
|
|
13
|
+
"backend": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"enum": [
|
|
16
|
+
"c64u",
|
|
17
|
+
"vice"
|
|
18
|
+
],
|
|
19
|
+
"description": "Backend to activate for subsequent tool calls."
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"required": [
|
|
23
|
+
"op",
|
|
24
|
+
"backend"
|
|
25
|
+
],
|
|
26
|
+
"additionalProperties": false
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"discriminator": {
|
|
30
|
+
"propertyName": "op"
|
|
31
|
+
}
|
|
32
|
+
}
|