c64bridge 1.0.7 → 1.1.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.
Files changed (132) hide show
  1. package/.github/skills/assembly-program/SKILL.md +37 -0
  2. package/.github/skills/basic-program/SKILL.md +40 -0
  3. package/.github/skills/cross-platform-demo/SKILL.md +32 -0
  4. package/.github/skills/drive-manager/SKILL.md +33 -0
  5. package/.github/skills/graphics-demo/SKILL.md +30 -0
  6. package/.github/skills/hello-world/SKILL.md +36 -0
  7. package/.github/skills/memory-debug/SKILL.md +32 -0
  8. package/.github/skills/pr-converge/SKILL.md +33 -0
  9. package/.github/skills/printer-job/SKILL.md +30 -0
  10. package/.github/skills/sid-music/SKILL.md +35 -0
  11. package/.github/skills/software-launch/SKILL.md +31 -0
  12. package/.github/skills/stream-control/SKILL.md +29 -0
  13. package/.github/skills/system-control/SKILL.md +32 -0
  14. package/AGENTS.md +28 -7
  15. package/README.md +69 -14
  16. package/data/assembly/assembly-spec.md +2 -0
  17. package/dist/c64Client.js +238 -60
  18. package/dist/config.js +48 -26
  19. package/dist/device.js +92 -37
  20. package/dist/diagnostics.js +62 -2
  21. package/dist/hostPaths.js +128 -0
  22. package/dist/loggingHttpClient.js +59 -1
  23. package/dist/mcp-server.js +409 -286
  24. package/dist/numericArg.js +55 -0
  25. package/dist/petscii.js +13 -1
  26. package/dist/platform.js +12 -3
  27. package/dist/prompts/registry.js +6 -1
  28. package/dist/tools/access.js +66 -0
  29. package/dist/tools/debug.js +6 -0
  30. package/dist/tools/developer.js +67 -34
  31. package/dist/tools/errors.js +54 -3
  32. package/dist/tools/input.js +23 -6
  33. package/dist/tools/machineControl.js +112 -20
  34. package/dist/tools/memory.js +135 -30
  35. package/dist/tools/meta/artifacts.js +5 -5
  36. package/dist/tools/meta/background.js +216 -54
  37. package/dist/tools/meta/compilation.js +6 -5
  38. package/dist/tools/meta/config.js +15 -6
  39. package/dist/tools/meta/filesystem.js +16 -14
  40. package/dist/tools/meta/graphics.js +48 -20
  41. package/dist/tools/meta/memory.js +45 -19
  42. package/dist/tools/meta/program.js +10 -7
  43. package/dist/tools/meta/screen.js +116 -25
  44. package/dist/tools/pauseGuard.js +23 -0
  45. package/dist/tools/pollValidator.js +53 -8
  46. package/dist/tools/programRunners.js +62 -18
  47. package/dist/tools/registry/batch.js +16 -4
  48. package/dist/tools/registry/config.js +9 -2
  49. package/dist/tools/registry/disk.js +12 -2
  50. package/dist/tools/registry/drive.js +3 -0
  51. package/dist/tools/registry/extract.js +3 -0
  52. package/dist/tools/registry/graphics.js +59 -6
  53. package/dist/tools/registry/index.js +17 -1
  54. package/dist/tools/registry/memory.js +11 -1
  55. package/dist/tools/registry/platform.js +4 -1
  56. package/dist/tools/registry/printer.js +2 -1
  57. package/dist/tools/registry/program.js +5 -1
  58. package/dist/tools/registry/rag.js +1 -0
  59. package/dist/tools/registry/sound.js +12 -1
  60. package/dist/tools/registry/stream.js +2 -1
  61. package/dist/tools/registry/system.js +8 -1
  62. package/dist/tools/schema.js +7 -7
  63. package/dist/tools/streaming.js +34 -4
  64. package/dist/tools/translation/assembler.js +247 -24
  65. package/dist/tools/translation/basicDetokenizer.js +80 -0
  66. package/dist/tools/translation/basicTokenizer.js +8 -3
  67. package/dist/tools/translation/disassembler.js +14 -0
  68. package/dist/tools/types.js +258 -7
  69. package/dist/tools/vice.js +5 -16
  70. package/dist/vicBitmap.js +1 -1
  71. package/dist/vice/mockServer.js +3 -0
  72. package/dist/vice/process.js +19 -0
  73. package/dist/vice/resourcePolicy.js +36 -0
  74. package/dist/vice/viceClient.js +22 -5
  75. package/doc/vice/support-matrix.md +17 -11
  76. package/mcp/schemas/c64_batch.schema.json +2 -1
  77. package/mcp/schemas/c64_config.schema.json +25 -475
  78. package/mcp/schemas/c64_debug.schema.json +3 -602
  79. package/mcp/schemas/c64_disk.schema.json +17 -344
  80. package/mcp/schemas/c64_drive.schema.json +2 -157
  81. package/mcp/schemas/c64_extract.schema.json +10 -364
  82. package/mcp/schemas/c64_graphics.schema.json +19 -426
  83. package/mcp/schemas/c64_input.schema.json +5 -318
  84. package/mcp/schemas/c64_memory.schema.json +23 -491
  85. package/mcp/schemas/c64_printer.schema.json +3 -258
  86. package/mcp/schemas/c64_program.schema.json +16 -491
  87. package/mcp/schemas/c64_rag.schema.json +1 -81
  88. package/mcp/schemas/c64_select_backend.schema.json +2 -36
  89. package/mcp/schemas/c64_sound.schema.json +20 -822
  90. package/mcp/schemas/c64_stream.schema.json +4 -75
  91. package/mcp/schemas/c64_system.schema.json +28 -348
  92. package/mcp/schemas/c64_vice.schema.json +2 -71
  93. package/mcp/server.json +1 -1
  94. package/mcp/tools.json +1983 -6910
  95. package/mcp.json +21 -1
  96. package/package.json +16 -8
  97. package/scripts/mockC64Server.mjs +44 -0
  98. package/scripts/run-coverage.mjs +27 -1
  99. package/scripts/smoke-run.sh +3 -2
  100. package/scripts/start.mjs +23 -1
  101. package/server.json +35 -2
  102. package/dist/.tsbuildinfo +0 -1
  103. package/doc/agent-state-spec.md +0 -243
  104. package/doc/audit/secret-handling.md +0 -61
  105. package/doc/plans/bun/baseline-metrics.md +0 -16
  106. package/doc/plans/bun/migration-checklist.md +0 -55
  107. package/doc/plans/bun/migration.md +0 -83
  108. package/doc/plans/improve-knowledge/notes.md +0 -43
  109. package/doc/plans/improve-knowledge/plan.md +0 -121
  110. package/doc/plans/improve-knowledge/rollout.md +0 -110
  111. package/doc/plans/meta-tools/README.md +0 -110
  112. package/doc/plans/meta-tools/analysis.md +0 -272
  113. package/doc/plans/meta-tools/catalog.md +0 -435
  114. package/doc/plans/meta-tools/notes.md +0 -192
  115. package/doc/plans/meta-tools/rollout.md +0 -368
  116. package/doc/plans/prompts/README.md +0 -96
  117. package/doc/plans/prompts/user-prompt-ideas.md +0 -147
  118. package/doc/plans/tool-consolidation/notes.md +0 -28
  119. package/doc/plans/tool-consolidation/plan.md +0 -169
  120. package/doc/plans/tool-consolidation/rollout.md +0 -104
  121. package/doc/plans/vice-backend-switch/plan.md +0 -486
  122. package/doc/plans/vice-backend-switch-2/plan.md +0 -48
  123. package/doc/plans/vice-support/notes.md +0 -63
  124. package/doc/plans/vice-support/plan.md +0 -88
  125. package/doc/plans/vice-support/rollout.md +0 -99
  126. package/doc/reviews/audit.md +0 -143
  127. package/doc/reviews/hardening/01-fable/prompt-handover.md +0 -125
  128. package/doc/reviews/hardening/01-fable/prompt.md +0 -98
  129. package/doc/reviews/hardening/01-fable/review-prompt.md +0 -468
  130. package/doc/reviews/hardening/01-fable/review.md +0 -1234
  131. package/doc/reviews/vice-support-review.md +0 -185
  132. package/scripts/compare-rest/rest-compare-2025-11-01T00-25-21-830Z.json +0 -2513
@@ -20,84 +20,13 @@
20
20
  },
21
21
  "target": {
22
22
  "type": "string",
23
- "description": "Destination host:port or UDP target understood by the firmware.",
24
- "minLength": 3
23
+ "description": "Destination of the UDP stream: IPv4 address or hostname with an optional :port (1-65535), e.g. 192.168.1.10, 192.168.1.10:11000 or pc.local:11000. The device sends the stream unencrypted over UDP to this address.",
24
+ "minLength": 1
25
25
  }
26
26
  },
27
27
  "required": [
28
28
  "op"
29
29
  ],
30
- "description": "Streaming operations available via the c64_stream tool.\n\nOperations:\n- start: Start an Ultimate streaming session toward a host:port target. Required inputs: stream, target.\n- stop: Stop an active Ultimate streaming session. Required inputs: stream.",
31
- "additionalProperties": false,
32
- "x-c64bridge-operations": [
33
- {
34
- "op": "start",
35
- "description": "Start an Ultimate streaming session toward a host:port target.",
36
- "required": [
37
- "stream",
38
- "target"
39
- ],
40
- "optional": [],
41
- "inputSchema": {
42
- "type": "object",
43
- "description": "Start an Ultimate streaming session toward a host:port target.",
44
- "properties": {
45
- "stream": {
46
- "type": "string",
47
- "description": "Stream type to control (video/audio/debug).",
48
- "enum": [
49
- "video",
50
- "audio",
51
- "debug"
52
- ]
53
- },
54
- "target": {
55
- "type": "string",
56
- "description": "Destination host:port or UDP target understood by the firmware.",
57
- "minLength": 3
58
- },
59
- "op": {
60
- "const": "start"
61
- }
62
- },
63
- "required": [
64
- "stream",
65
- "target",
66
- "op"
67
- ],
68
- "additionalProperties": false
69
- }
70
- },
71
- {
72
- "op": "stop",
73
- "description": "Stop an active Ultimate streaming session.",
74
- "required": [
75
- "stream"
76
- ],
77
- "optional": [],
78
- "inputSchema": {
79
- "type": "object",
80
- "description": "Stop an active Ultimate streaming session.",
81
- "properties": {
82
- "stream": {
83
- "type": "string",
84
- "description": "Stream type to control (video/audio/debug).",
85
- "enum": [
86
- "video",
87
- "audio",
88
- "debug"
89
- ]
90
- },
91
- "op": {
92
- "const": "stop"
93
- }
94
- },
95
- "required": [
96
- "stream",
97
- "op"
98
- ],
99
- "additionalProperties": false
100
- }
101
- }
102
- ]
30
+ "description": "Streaming operations available via the c64_stream tool.\n\nOperations:\n- start [write]: Start an Ultimate streaming session. The device sends an unencrypted UDP stream to the target (IPv4 address or hostname, optional :port). Required inputs: stream, target.\n- stop [write]: Stop an active Ultimate streaming session. Required inputs: stream.",
31
+ "additionalProperties": false
103
32
  }
@@ -20,15 +20,32 @@
20
20
  ],
21
21
  "description": "Selects the operation."
22
22
  },
23
+ "waitForReady": {
24
+ "type": [
25
+ "boolean",
26
+ "null"
27
+ ],
28
+ "description": "Wait until the BASIC READY. prompt is visible before returning. A timeout is reported as ready=false, not as an error.",
29
+ "default": false
30
+ },
31
+ "readyTimeoutMs": {
32
+ "type": [
33
+ "integer",
34
+ "null"
35
+ ],
36
+ "description": "Maximum time to wait for READY. when waitForReady is true (1-120000 ms).",
37
+ "minimum": 1,
38
+ "maximum": 120000,
39
+ "default": 15000
40
+ },
23
41
  "name": {
24
42
  "type": "string",
25
- "description": "Unique task name (letters, digits, spaces, '_', '-', '.'; must not start with '.' or a space).",
26
- "minLength": 1,
27
- "pattern": "^[A-Za-z0-9_][A-Za-z0-9_. -]*$"
43
+ "description": "Unique task name (letters, digits, spaces, '_', '-', '.'; must not start with '.' or a space). Limits depend on op.",
44
+ "minLength": 1
28
45
  },
29
46
  "operation": {
30
47
  "type": "string",
31
- "description": "Operation name (e.g., read, read_screen)",
48
+ "description": "Operation name: read, write, read_screen or menu_button (read_memory and write_memory are aliases). write requires arguments.address and arguments.bytes.",
32
49
  "minLength": 1
33
50
  },
34
51
  "arguments": {
@@ -46,8 +63,8 @@
46
63
  "integer",
47
64
  "null"
48
65
  ],
49
- "description": "Interval milliseconds",
50
- "minimum": 1,
66
+ "description": "Interval milliseconds (minimum 100)",
67
+ "minimum": 100,
51
68
  "default": 1000
52
69
  },
53
70
  "maxIterations": {
@@ -55,8 +72,9 @@
55
72
  "integer",
56
73
  "null"
57
74
  ],
58
- "description": "Maximum number of iterations (omit for indefinite)",
59
- "minimum": 1
75
+ "description": "Maximum number of iterations (1 to 100000; omit for indefinite)",
76
+ "minimum": 1,
77
+ "maximum": 100000
60
78
  },
61
79
  "scope": {
62
80
  "type": [
@@ -92,344 +110,6 @@
92
110
  "required": [
93
111
  "op"
94
112
  ],
95
- "description": "System operations available via the c64_system tool.\n\nOperations:\n- pause: Pause the machine until resumed. Required inputs: none.\n- resume: Resume CPU execution after a pause. Required inputs: none.\n- reset: Issue a soft reset without cutting power. Required inputs: none.\n- reboot: Trigger a firmware reboot to recover from faults. Required inputs: none.\n- poweroff: Shut down C64U/U64 or quit VICE. U2-family hardware cannot power off. Required inputs: none.\n- power_cycle: Return the active backend to a fresh state. C64U/U64 Tool Menu verification requires machine:menu_screen (a C64U firmware version that provides it, or U64 3.15+); U2-family reboots through REST. Required inputs: none.\n- menu: Toggle the Ultimate menu button for navigation. Required inputs: none.\n- read_menu_screen: Read the active Ultimate menu's raw character and colour matrix through machine:menu_screen (a C64U firmware version that provides it, or U64/U2 3.15+). Required inputs: none.\n- start_task: Start a named background task that runs on an interval. Required inputs: name, operation. Optional inputs: arguments, intervalMs, maxIterations.\n- stop_task: Stop a specific background task and clear its timer. Required inputs: name.\n- stop_all_tasks: Stop every running background task and persist state. Required inputs: none.\n- list_tasks: List known background tasks with status metadata. Required inputs: none.\n- performance_report: Summarize diagnostics spans and tool latencies from the current or latest MCP session. Required inputs: none. Optional inputs: scope, includeTimeline, maxEntries.",
96
- "additionalProperties": false,
97
- "x-c64bridge-operations": [
98
- {
99
- "op": "pause",
100
- "description": "Pause the machine until resumed.",
101
- "required": [],
102
- "optional": [],
103
- "inputSchema": {
104
- "type": "object",
105
- "description": "Pause the machine until resumed.",
106
- "properties": {
107
- "op": {
108
- "const": "pause"
109
- }
110
- },
111
- "additionalProperties": false,
112
- "required": [
113
- "op"
114
- ]
115
- }
116
- },
117
- {
118
- "op": "resume",
119
- "description": "Resume CPU execution after a pause.",
120
- "required": [],
121
- "optional": [],
122
- "inputSchema": {
123
- "type": "object",
124
- "description": "Resume CPU execution after a pause.",
125
- "properties": {
126
- "op": {
127
- "const": "resume"
128
- }
129
- },
130
- "additionalProperties": false,
131
- "required": [
132
- "op"
133
- ]
134
- }
135
- },
136
- {
137
- "op": "reset",
138
- "description": "Issue a soft reset without cutting power.",
139
- "required": [],
140
- "optional": [],
141
- "inputSchema": {
142
- "type": "object",
143
- "description": "Issue a soft reset without cutting power.",
144
- "properties": {
145
- "op": {
146
- "const": "reset"
147
- }
148
- },
149
- "additionalProperties": false,
150
- "required": [
151
- "op"
152
- ]
153
- }
154
- },
155
- {
156
- "op": "reboot",
157
- "description": "Trigger a firmware reboot to recover from faults.",
158
- "required": [],
159
- "optional": [],
160
- "inputSchema": {
161
- "type": "object",
162
- "description": "Trigger a firmware reboot to recover from faults.",
163
- "properties": {
164
- "op": {
165
- "const": "reboot"
166
- }
167
- },
168
- "additionalProperties": false,
169
- "required": [
170
- "op"
171
- ]
172
- }
173
- },
174
- {
175
- "op": "poweroff",
176
- "description": "Shut down C64U/U64 or quit VICE. U2-family hardware cannot power off.",
177
- "required": [],
178
- "optional": [],
179
- "inputSchema": {
180
- "type": "object",
181
- "description": "Shut down C64U/U64 or quit VICE. U2-family hardware cannot power off.",
182
- "properties": {
183
- "op": {
184
- "const": "poweroff"
185
- }
186
- },
187
- "additionalProperties": false,
188
- "required": [
189
- "op"
190
- ]
191
- }
192
- },
193
- {
194
- "op": "power_cycle",
195
- "description": "Return the active backend to a fresh state. C64U/U64 Tool Menu verification requires machine:menu_screen (a C64U firmware version that provides it, or U64 3.15+); U2-family reboots through REST.",
196
- "required": [],
197
- "optional": [],
198
- "inputSchema": {
199
- "type": "object",
200
- "description": "Return the active backend to a fresh state. C64U/U64 Tool Menu verification requires machine:menu_screen (a C64U firmware version that provides it, or U64 3.15+); U2-family reboots through REST.",
201
- "properties": {
202
- "op": {
203
- "const": "power_cycle"
204
- }
205
- },
206
- "additionalProperties": false,
207
- "required": [
208
- "op"
209
- ]
210
- }
211
- },
212
- {
213
- "op": "menu",
214
- "description": "Toggle the Ultimate menu button for navigation.",
215
- "required": [],
216
- "optional": [],
217
- "inputSchema": {
218
- "type": "object",
219
- "description": "Toggle the Ultimate menu button for navigation.",
220
- "properties": {
221
- "op": {
222
- "const": "menu"
223
- }
224
- },
225
- "additionalProperties": false,
226
- "required": [
227
- "op"
228
- ]
229
- }
230
- },
231
- {
232
- "op": "read_menu_screen",
233
- "description": "Read the active Ultimate menu's raw character and colour matrix through machine:menu_screen (a C64U firmware version that provides it, or U64/U2 3.15+).",
234
- "required": [],
235
- "optional": [],
236
- "inputSchema": {
237
- "type": "object",
238
- "description": "Read the active Ultimate menu's raw character and colour matrix through machine:menu_screen (a C64U firmware version that provides it, or U64/U2 3.15+).",
239
- "properties": {
240
- "op": {
241
- "const": "read_menu_screen"
242
- }
243
- },
244
- "additionalProperties": false,
245
- "required": [
246
- "op"
247
- ]
248
- }
249
- },
250
- {
251
- "op": "start_task",
252
- "description": "Start a named background task that runs on an interval.",
253
- "required": [
254
- "name",
255
- "operation"
256
- ],
257
- "optional": [
258
- "arguments",
259
- "intervalMs",
260
- "maxIterations"
261
- ],
262
- "inputSchema": {
263
- "type": "object",
264
- "description": "Start a named background task that runs on an interval.",
265
- "properties": {
266
- "name": {
267
- "type": "string",
268
- "description": "Unique task name (letters, digits, spaces, '_', '-', '.'; must not start with '.' or a space).",
269
- "minLength": 1,
270
- "pattern": "^[A-Za-z0-9_][A-Za-z0-9_. -]*$"
271
- },
272
- "operation": {
273
- "type": "string",
274
- "description": "Operation name (e.g., read, read_screen)",
275
- "minLength": 1
276
- },
277
- "arguments": {
278
- "type": [
279
- "object",
280
- "null"
281
- ],
282
- "description": "Operation-specific arguments",
283
- "properties": {},
284
- "additionalProperties": true,
285
- "default": {}
286
- },
287
- "intervalMs": {
288
- "type": [
289
- "integer",
290
- "null"
291
- ],
292
- "description": "Interval milliseconds",
293
- "minimum": 1,
294
- "default": 1000
295
- },
296
- "maxIterations": {
297
- "type": [
298
- "integer",
299
- "null"
300
- ],
301
- "description": "Maximum number of iterations (omit for indefinite)",
302
- "minimum": 1
303
- },
304
- "op": {
305
- "const": "start_task"
306
- }
307
- },
308
- "required": [
309
- "name",
310
- "operation",
311
- "op"
312
- ],
313
- "additionalProperties": false
314
- }
315
- },
316
- {
317
- "op": "stop_task",
318
- "description": "Stop a specific background task and clear its timer.",
319
- "required": [
320
- "name"
321
- ],
322
- "optional": [],
323
- "inputSchema": {
324
- "type": "object",
325
- "description": "Stop a specific background task and clear its timer.",
326
- "properties": {
327
- "name": {
328
- "type": "string",
329
- "description": "Task name",
330
- "minLength": 1
331
- },
332
- "op": {
333
- "const": "stop_task"
334
- }
335
- },
336
- "required": [
337
- "name",
338
- "op"
339
- ],
340
- "additionalProperties": false
341
- }
342
- },
343
- {
344
- "op": "stop_all_tasks",
345
- "description": "Stop every running background task and persist state.",
346
- "required": [],
347
- "optional": [],
348
- "inputSchema": {
349
- "type": "object",
350
- "description": "Stop every running background task and persist state.",
351
- "properties": {
352
- "op": {
353
- "const": "stop_all_tasks"
354
- }
355
- },
356
- "additionalProperties": false,
357
- "required": [
358
- "op"
359
- ]
360
- }
361
- },
362
- {
363
- "op": "list_tasks",
364
- "description": "List known background tasks with status metadata.",
365
- "required": [],
366
- "optional": [],
367
- "inputSchema": {
368
- "type": "object",
369
- "description": "List known background tasks with status metadata.",
370
- "properties": {
371
- "op": {
372
- "const": "list_tasks"
373
- }
374
- },
375
- "additionalProperties": false,
376
- "required": [
377
- "op"
378
- ]
379
- }
380
- },
381
- {
382
- "op": "performance_report",
383
- "description": "Summarize diagnostics spans and tool latencies from the current or latest MCP session.",
384
- "required": [],
385
- "optional": [
386
- "scope",
387
- "includeTimeline",
388
- "maxEntries"
389
- ],
390
- "inputSchema": {
391
- "type": "object",
392
- "description": "Summarize diagnostics spans and tool latencies from the current or latest MCP session.",
393
- "properties": {
394
- "scope": {
395
- "type": [
396
- "string",
397
- "null"
398
- ],
399
- "description": "Which diagnostics session to summarize.",
400
- "enum": [
401
- "current",
402
- "latest"
403
- ],
404
- "default": "current"
405
- },
406
- "includeTimeline": {
407
- "type": [
408
- "boolean",
409
- "null"
410
- ],
411
- "description": "Include the tail of the event timeline.",
412
- "default": true
413
- },
414
- "maxEntries": {
415
- "type": [
416
- "integer",
417
- "null"
418
- ],
419
- "description": "Maximum number of span and timeline entries to return.",
420
- "minimum": 1,
421
- "maximum": 200,
422
- "default": 25
423
- },
424
- "op": {
425
- "const": "performance_report"
426
- }
427
- },
428
- "additionalProperties": false,
429
- "required": [
430
- "op"
431
- ]
432
- }
433
- }
434
- ]
113
+ "description": "System operations available via the c64_system tool.\n\nOperations:\n- pause [c64u, u2] [write]: Pause the machine until resumed. Required inputs: none.\n- resume [c64u, u2] [write]: Resume CPU execution after a pause. Required inputs: none.\n- reset [write]: Issue a soft reset without cutting power. Required inputs: none. Optional inputs: waitForReady, readyTimeoutMs.\n- reboot [destructive]: Trigger a firmware reboot to recover from faults. Required inputs: none. Optional inputs: waitForReady, readyTimeoutMs.\n- poweroff [c64u, vice] [destructive]: Shut down C64U/U64 or quit VICE. U2-family hardware cannot power off. On C64U/U64 the machine cannot be restarted by software afterwards: power must be restored at the outlet, and it starts by itself only if automatic startup on power restoration is enabled. Required inputs: none.\n- power_cycle [destructive]: Return the active backend to a fresh state. C64U/U64 Tool Menu verification requires machine:menu_screen (a C64U firmware version that provides it, or U64 3.15+); U2-family reboots through REST. Required inputs: none. Optional inputs: waitForReady, readyTimeoutMs.\n- menu [c64u, u2] [write]: Toggle the Ultimate menu button for navigation. Required inputs: none.\n- read_menu_screen [c64u, u2]: Read the active Ultimate menu's raw character and colour matrix through machine:menu_screen (a C64U firmware version that provides it, or U64/U2 3.15+). Required inputs: none.\n- start_task [write]: Start a named background task that runs on an interval. Required inputs: name, operation. Optional inputs: arguments, intervalMs, maxIterations.\n- stop_task [write]: Stop a specific background task and clear its timer. Required inputs: name.\n- stop_all_tasks [write]: Stop every running background task and persist state. Required inputs: none.\n- list_tasks: List known background tasks with status metadata. Required inputs: none.\n- performance_report: Summarize diagnostics spans and tool latencies from the current or latest MCP session. Required inputs: none. Optional inputs: scope, includeTimeline, maxEntries.",
114
+ "additionalProperties": false
435
115
  }
@@ -27,75 +27,6 @@
27
27
  "required": [
28
28
  "op"
29
29
  ],
30
- "description": "VICE emulator operations available via the c64_vice tool.\n\nOperations:\n- resource_get: Read a VICE configuration resource (safe prefixes only). Required inputs: name.\n- resource_set: Write a VICE configuration resource (safe prefixes only). Required inputs: name, value.",
31
- "additionalProperties": false,
32
- "x-c64bridge-operations": [
33
- {
34
- "op": "resource_get",
35
- "description": "Read a VICE configuration resource (safe prefixes only).",
36
- "required": [
37
- "name"
38
- ],
39
- "optional": [],
40
- "inputSchema": {
41
- "type": "object",
42
- "description": "Read a VICE configuration resource (safe prefixes only).",
43
- "properties": {
44
- "op": {
45
- "const": "resource_get"
46
- },
47
- "name": {
48
- "type": "string",
49
- "description": "VICE resource name (example: SidEngine, SidModel).",
50
- "minLength": 1,
51
- "maxLength": 64,
52
- "pattern": "^[A-Z][A-Za-z0-9_.-]{0,63}$"
53
- }
54
- },
55
- "required": [
56
- "op",
57
- "name"
58
- ],
59
- "additionalProperties": false
60
- }
61
- },
62
- {
63
- "op": "resource_set",
64
- "description": "Write a VICE configuration resource (safe prefixes only).",
65
- "required": [
66
- "name",
67
- "value"
68
- ],
69
- "optional": [],
70
- "inputSchema": {
71
- "type": "object",
72
- "description": "Write a VICE configuration resource (safe prefixes only).",
73
- "properties": {
74
- "op": {
75
- "const": "resource_set"
76
- },
77
- "name": {
78
- "type": "string",
79
- "description": "VICE resource name (example: SidEngine, SidModel).",
80
- "minLength": 1,
81
- "maxLength": 64,
82
- "pattern": "^[A-Z][A-Za-z0-9_.-]{0,63}$"
83
- },
84
- "value": {
85
- "type": [
86
- "string",
87
- "integer"
88
- ],
89
- "description": "VICE resource value (string or integer)."
90
- }
91
- },
92
- "required": [
93
- "op",
94
- "name",
95
- "value"
96
- ],
97
- "additionalProperties": false
98
- }
99
- }
100
- ]
30
+ "description": "VICE emulator operations available via the c64_vice tool.\n\nOperations:\n- resource_get: Read a VICE configuration resource (safe prefixes only). Required inputs: name.\n- resource_set [write]: Write a VICE configuration resource (safe prefixes only). Required inputs: name, value.",
31
+ "additionalProperties": false
101
32
  }
package/mcp/server.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "c64bridge",
3
- "version": "1.0.7",
3
+ "version": "1.1.0",
4
4
  "description": "Stdio-based Model Context Protocol (MCP) server that bridges Commodore 64 Ultimate hardware with AI agents.",
5
5
  "transports": [
6
6
  "stdio"