c64bridge 1.0.6 → 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 (136) 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 +70 -15
  16. package/data/assembly/assembly-spec.md +2 -0
  17. package/dist/c64Client.js +238 -60
  18. package/dist/chargen.js +0 -4
  19. package/dist/config.js +53 -28
  20. package/dist/device.js +92 -37
  21. package/dist/diagnostics.js +66 -5
  22. package/dist/hostPaths.js +128 -0
  23. package/dist/logger.js +3 -2
  24. package/dist/loggingHttpClient.js +71 -2
  25. package/dist/mcp-server.js +416 -291
  26. package/dist/numericArg.js +55 -0
  27. package/dist/petscii.js +13 -6
  28. package/dist/platform.js +12 -3
  29. package/dist/prompts/registry.js +6 -1
  30. package/dist/redact.js +166 -0
  31. package/dist/tools/access.js +66 -0
  32. package/dist/tools/debug.js +6 -0
  33. package/dist/tools/developer.js +77 -36
  34. package/dist/tools/errors.js +54 -3
  35. package/dist/tools/input.js +25 -8
  36. package/dist/tools/machineControl.js +113 -21
  37. package/dist/tools/memory.js +135 -30
  38. package/dist/tools/meta/artifacts.js +5 -5
  39. package/dist/tools/meta/background.js +216 -54
  40. package/dist/tools/meta/compilation.js +6 -5
  41. package/dist/tools/meta/config.js +20 -10
  42. package/dist/tools/meta/configInventory.js +25 -2
  43. package/dist/tools/meta/diagnostics.js +2 -1
  44. package/dist/tools/meta/filesystem.js +16 -14
  45. package/dist/tools/meta/graphics.js +48 -20
  46. package/dist/tools/meta/memory.js +45 -19
  47. package/dist/tools/meta/program.js +10 -7
  48. package/dist/tools/meta/screen.js +116 -25
  49. package/dist/tools/pauseGuard.js +23 -0
  50. package/dist/tools/pollValidator.js +53 -8
  51. package/dist/tools/programRunners.js +62 -18
  52. package/dist/tools/registry/batch.js +17 -11
  53. package/dist/tools/registry/config.js +9 -2
  54. package/dist/tools/registry/disk.js +12 -2
  55. package/dist/tools/registry/drive.js +3 -0
  56. package/dist/tools/registry/extract.js +3 -0
  57. package/dist/tools/registry/graphics.js +59 -6
  58. package/dist/tools/registry/index.js +17 -1
  59. package/dist/tools/registry/memory.js +11 -1
  60. package/dist/tools/registry/platform.js +4 -1
  61. package/dist/tools/registry/printer.js +2 -1
  62. package/dist/tools/registry/program.js +5 -1
  63. package/dist/tools/registry/rag.js +1 -0
  64. package/dist/tools/registry/sound.js +12 -1
  65. package/dist/tools/registry/stream.js +2 -1
  66. package/dist/tools/registry/system.js +8 -1
  67. package/dist/tools/schema.js +7 -7
  68. package/dist/tools/streaming.js +34 -4
  69. package/dist/tools/translation/assembler.js +247 -24
  70. package/dist/tools/translation/basicDetokenizer.js +80 -0
  71. package/dist/tools/translation/basicTokenizer.js +8 -3
  72. package/dist/tools/translation/disassembler.js +14 -0
  73. package/dist/tools/types.js +258 -7
  74. package/dist/tools/vice.js +5 -16
  75. package/dist/vicBitmap.js +1 -1
  76. package/dist/vice/mockServer.js +3 -0
  77. package/dist/vice/process.js +19 -0
  78. package/dist/vice/resourcePolicy.js +36 -0
  79. package/dist/vice/viceClient.js +22 -5
  80. package/doc/vice/support-matrix.md +17 -11
  81. package/mcp/schemas/c64_batch.schema.json +2 -1
  82. package/mcp/schemas/c64_config.schema.json +33 -466
  83. package/mcp/schemas/c64_debug.schema.json +3 -602
  84. package/mcp/schemas/c64_disk.schema.json +17 -344
  85. package/mcp/schemas/c64_drive.schema.json +2 -157
  86. package/mcp/schemas/c64_extract.schema.json +10 -364
  87. package/mcp/schemas/c64_graphics.schema.json +19 -426
  88. package/mcp/schemas/c64_input.schema.json +5 -318
  89. package/mcp/schemas/c64_memory.schema.json +23 -491
  90. package/mcp/schemas/c64_printer.schema.json +3 -258
  91. package/mcp/schemas/c64_program.schema.json +16 -491
  92. package/mcp/schemas/c64_rag.schema.json +1 -81
  93. package/mcp/schemas/c64_select_backend.schema.json +2 -36
  94. package/mcp/schemas/c64_sound.schema.json +20 -822
  95. package/mcp/schemas/c64_stream.schema.json +4 -75
  96. package/mcp/schemas/c64_system.schema.json +28 -348
  97. package/mcp/schemas/c64_vice.schema.json +2 -71
  98. package/mcp/server.json +1 -1
  99. package/mcp/tools.json +1990 -6900
  100. package/mcp.json +21 -1
  101. package/package.json +19 -8
  102. package/scripts/mockC64Server.mjs +44 -0
  103. package/scripts/run-coverage.mjs +27 -1
  104. package/scripts/smoke-run.sh +3 -2
  105. package/scripts/start.mjs +23 -1
  106. package/server.json +53 -3
  107. package/dist/.tsbuildinfo +0 -1
  108. package/doc/agent-state-spec.md +0 -243
  109. package/doc/plans/bun/baseline-metrics.md +0 -16
  110. package/doc/plans/bun/migration-checklist.md +0 -55
  111. package/doc/plans/bun/migration.md +0 -83
  112. package/doc/plans/improve-knowledge/notes.md +0 -43
  113. package/doc/plans/improve-knowledge/plan.md +0 -121
  114. package/doc/plans/improve-knowledge/rollout.md +0 -110
  115. package/doc/plans/meta-tools/README.md +0 -110
  116. package/doc/plans/meta-tools/analysis.md +0 -272
  117. package/doc/plans/meta-tools/catalog.md +0 -435
  118. package/doc/plans/meta-tools/notes.md +0 -192
  119. package/doc/plans/meta-tools/rollout.md +0 -368
  120. package/doc/plans/prompts/README.md +0 -96
  121. package/doc/plans/prompts/user-prompt-ideas.md +0 -147
  122. package/doc/plans/tool-consolidation/notes.md +0 -28
  123. package/doc/plans/tool-consolidation/plan.md +0 -169
  124. package/doc/plans/tool-consolidation/rollout.md +0 -104
  125. package/doc/plans/vice-backend-switch/plan.md +0 -486
  126. package/doc/plans/vice-backend-switch-2/plan.md +0 -48
  127. package/doc/plans/vice-support/notes.md +0 -63
  128. package/doc/plans/vice-support/plan.md +0 -88
  129. package/doc/plans/vice-support/rollout.md +0 -99
  130. package/doc/reviews/audit.md +0 -143
  131. package/doc/reviews/hardening/01-fable/prompt-handover.md +0 -125
  132. package/doc/reviews/hardening/01-fable/prompt.md +0 -98
  133. package/doc/reviews/hardening/01-fable/review-prompt.md +0 -468
  134. package/doc/reviews/hardening/01-fable/review.md +0 -1234
  135. package/doc/reviews/vice-support-review.md +0 -185
  136. 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.6",
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"