c64bridge 0.8.1 → 0.9.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 (77) hide show
  1. package/.github/prompts/steer.prompt.md +55 -0
  2. package/AGENTS.md +9 -7
  3. package/README.md +139 -95
  4. package/data/embeddings_asm.json +1 -1
  5. package/data/embeddings_basic.json +1 -1
  6. package/data/embeddings_hardware.json +1 -1
  7. package/data/embeddings_mixed.json +1 -1
  8. package/data/embeddings_other.json +1 -1
  9. package/data/graphics/petscii-style-guide.md +4 -4
  10. package/data/graphics/sprite-charset-best-practices.md +9 -9
  11. package/data/vice/vice-binary-monitor-spec.md +921 -0
  12. package/dist/.tsbuildinfo +1 -1
  13. package/dist/device.js +86 -10
  14. package/dist/mcp-server.js +1 -1
  15. package/dist/prompts/registry.js +27 -25
  16. package/dist/rag/knowledgeIndex.js +112 -79
  17. package/dist/rag/resourceUris.js +93 -0
  18. package/dist/tools/audio.js +11 -11
  19. package/dist/tools/debug.js +1 -1
  20. package/dist/tools/developer.js +13 -13
  21. package/dist/tools/graphics.js +10 -10
  22. package/dist/tools/machineControl.js +5 -5
  23. package/dist/tools/memory.js +19 -11
  24. package/dist/tools/meta/index.js +1 -1
  25. package/dist/tools/printer.js +11 -12
  26. package/dist/tools/programRunners.js +16 -16
  27. package/dist/tools/rag.js +9 -9
  28. package/dist/tools/registry/config.js +1 -1
  29. package/dist/tools/registry/disk.js +1 -1
  30. package/dist/tools/registry/drive.js +1 -1
  31. package/dist/tools/registry/extract.js +1 -1
  32. package/dist/tools/registry/graphics.js +1 -1
  33. package/dist/tools/registry/memory.js +1 -1
  34. package/dist/tools/registry/platform.js +1 -1
  35. package/dist/tools/registry/printer.js +1 -1
  36. package/dist/tools/registry/program.js +1 -1
  37. package/dist/tools/registry/rag.js +1 -1
  38. package/dist/tools/registry/sound.js +1 -1
  39. package/dist/tools/registry/stream.js +1 -1
  40. package/dist/tools/registry/system.js +1 -1
  41. package/dist/tools/storage.js +15 -15
  42. package/dist/tools/streaming.js +3 -3
  43. package/dist/tools/types.js +41 -4
  44. package/dist/tools/vice.js +2 -5
  45. package/dist/vice/process.js +79 -2
  46. package/dist/vice/readiness.js +35 -0
  47. package/dist/vice/smokeOptions.js +44 -0
  48. package/dist/viceRunner.js +2 -0
  49. package/doc/plans/prompts/README.md +7 -7
  50. package/mcp/prompts.json +42 -59
  51. package/mcp/protocol-examples.json +2 -2
  52. package/mcp/resources.json +179 -166
  53. package/mcp/schemas/c64_config.schema.json +109 -326
  54. package/mcp/schemas/c64_debug.schema.json +158 -337
  55. package/mcp/schemas/c64_disk.schema.json +180 -262
  56. package/mcp/schemas/c64_drive.schema.json +31 -111
  57. package/mcp/schemas/c64_extract.schema.json +193 -291
  58. package/mcp/schemas/c64_graphics.schema.json +208 -308
  59. package/mcp/schemas/c64_memory.schema.json +94 -144
  60. package/mcp/schemas/c64_printer.schema.json +151 -205
  61. package/mcp/schemas/c64_program.schema.json +229 -367
  62. package/mcp/schemas/c64_rag.schema.json +25 -59
  63. package/mcp/schemas/c64_select_backend.schema.json +19 -26
  64. package/mcp/schemas/c64_sound.schema.json +346 -622
  65. package/mcp/schemas/c64_stream.schema.json +25 -54
  66. package/mcp/schemas/c64_system.schema.json +79 -212
  67. package/mcp/schemas/c64_vice.schema.json +24 -55
  68. package/mcp/server.json +1 -1
  69. package/mcp/tools.json +1935 -3443
  70. package/mcp.json +3 -3
  71. package/package.json +17 -14
  72. package/scripts/fetch-external-sources.mjs +1 -2
  73. package/scripts/run-coverage.mjs +26 -1
  74. package/scripts/run-tests.mjs +2 -2
  75. package/scripts/run-tests.ts +273 -52
  76. package/scripts/update-readme.ts +54 -2
  77. package/server.json +2 -2
@@ -1,350 +1,133 @@
1
1
  {
2
2
  "type": "object",
3
- "description": "Configuration operations available via the c64_config tool.",
4
- "oneOf": [
5
- {
6
- "type": "object",
7
- "description": "List configuration categories reported by the firmware.",
8
- "properties": {
9
- "op": {
10
- "const": "list"
11
- }
12
- },
13
- "additionalProperties": false,
14
- "required": [
15
- "op"
16
- ]
17
- },
18
- {
19
- "type": "object",
20
- "description": "Read a configuration category or specific item.",
21
- "properties": {
22
- "category": {
23
- "type": "string",
24
- "description": "Configuration category reported by the Ultimate firmware (e.g. 'Audio').",
25
- "minLength": 1
26
- },
27
- "item": {
28
- "type": [
29
- "string",
30
- "null"
31
- ],
32
- "description": "Specific configuration item inside the selected category (e.g. 'Volume').",
33
- "minLength": 1
34
- },
35
- "op": {
36
- "const": "get"
37
- }
38
- },
39
- "required": [
40
- "category",
41
- "op"
3
+ "properties": {
4
+ "op": {
5
+ "type": "string",
6
+ "enum": [
7
+ "list",
8
+ "get",
9
+ "set",
10
+ "batch_update",
11
+ "load_flash",
12
+ "save_flash",
13
+ "reset_defaults",
14
+ "read_debugreg",
15
+ "write_debugreg",
16
+ "info",
17
+ "version",
18
+ "snapshot",
19
+ "restore",
20
+ "diff",
21
+ "shuffle"
42
22
  ],
43
- "additionalProperties": false
23
+ "description": "Selects the operation."
44
24
  },
45
- {
46
- "type": "object",
47
- "description": "Write a configuration value in the selected category.",
48
- "properties": {
49
- "category": {
50
- "type": "string",
51
- "description": "Configuration category reported by the Ultimate firmware (e.g. 'Audio').",
52
- "minLength": 1
53
- },
54
- "item": {
55
- "type": "string",
56
- "description": "Configuration item name inside the category.",
57
- "minLength": 1
58
- },
59
- "value": {
60
- "description": "Primitive configuration value (string, number, or boolean).",
61
- "type": [
62
- "string",
63
- "number",
64
- "boolean"
65
- ]
66
- },
67
- "op": {
68
- "const": "set"
69
- }
70
- },
71
- "required": [
72
- "category",
73
- "item",
74
- "value",
75
- "op"
76
- ],
77
- "additionalProperties": false
78
- },
79
- {
80
- "description": "Apply multiple configuration updates in a single request.",
81
- "type": "object",
82
- "additionalProperties": {
83
- "type": "object",
84
- "additionalProperties": {
85
- "type": [
86
- "string",
87
- "number",
88
- "boolean"
89
- ]
90
- }
91
- },
92
- "properties": {
93
- "op": {
94
- "const": "batch_update"
95
- }
96
- },
97
- "required": [
98
- "op"
99
- ]
25
+ "category": {
26
+ "type": "string",
27
+ "description": "Configuration category reported by the Ultimate firmware (e.g. 'Audio').",
28
+ "minLength": 1
100
29
  },
101
- {
102
- "type": "object",
103
- "description": "Load configuration from flash storage.",
104
- "properties": {
105
- "op": {
106
- "const": "load_flash"
107
- }
108
- },
109
- "additionalProperties": false,
110
- "required": [
111
- "op"
112
- ]
30
+ "item": {
31
+ "type": [
32
+ "string",
33
+ "null"
34
+ ],
35
+ "description": "Specific configuration item inside the selected category (e.g. 'Volume').",
36
+ "minLength": 1
113
37
  },
114
- {
115
- "type": "object",
116
- "description": "Persist the current configuration to flash storage.",
117
- "properties": {
118
- "op": {
119
- "const": "save_flash"
120
- }
121
- },
122
- "additionalProperties": false,
123
- "required": [
124
- "op"
38
+ "value": {
39
+ "description": "Primitive configuration value (string, number, or boolean).",
40
+ "type": [
41
+ "string",
42
+ "number",
43
+ "boolean"
125
44
  ]
126
45
  },
127
- {
128
- "type": "object",
129
- "description": "Reset firmware configuration to factory defaults.",
130
- "properties": {
131
- "op": {
132
- "const": "reset_defaults"
133
- }
134
- },
135
- "additionalProperties": false,
136
- "required": [
137
- "op"
138
- ]
46
+ "path": {
47
+ "type": "string",
48
+ "description": "Absolute or workspace-relative path where the snapshot file will be written.",
49
+ "minLength": 1
139
50
  },
140
- {
141
- "type": "object",
142
- "description": "Read the Ultimate debug register ($D7FF).",
143
- "properties": {
144
- "op": {
145
- "const": "read_debugreg"
146
- }
147
- },
148
- "additionalProperties": false,
149
- "required": [
150
- "op"
151
- ]
51
+ "applyToFlash": {
52
+ "type": [
53
+ "boolean",
54
+ "null"
55
+ ],
56
+ "description": "When true, save the restored configuration to flash immediately.",
57
+ "default": false
152
58
  },
153
- {
154
- "type": "object",
155
- "description": "Write a hex value to the Ultimate debug register ($D7FF).",
156
- "properties": {
157
- "value": {
158
- "type": "string",
159
- "description": "Hex value (00-FF) to write to the debug register.",
160
- "minLength": 1,
161
- "maxLength": 2,
162
- "pattern": "^[0-9A-Fa-f]{1,2}$"
163
- },
164
- "op": {
165
- "const": "write_debugreg"
166
- }
167
- },
168
- "required": [
169
- "value",
170
- "op"
59
+ "root": {
60
+ "type": [
61
+ "string",
62
+ "null"
171
63
  ],
172
- "additionalProperties": false
64
+ "description": "Root path to search for programs",
65
+ "minLength": 1,
66
+ "default": "/"
173
67
  },
174
- {
175
- "type": "object",
176
- "description": "Retrieve Ultimate hardware information and status.",
177
- "properties": {
178
- "op": {
179
- "const": "info"
180
- }
181
- },
182
- "additionalProperties": false,
183
- "required": [
184
- "op"
68
+ "extensions": {
69
+ "type": [
70
+ "array",
71
+ "null"
72
+ ],
73
+ "items": {
74
+ "type": "string",
75
+ "description": "File extensions to include (without dot)",
76
+ "minLength": 1
77
+ },
78
+ "default": [
79
+ "prg",
80
+ "crt"
185
81
  ]
186
82
  },
187
- {
188
- "type": "object",
189
- "description": "Fetch firmware version details.",
190
- "properties": {
191
- "op": {
192
- "const": "version"
193
- }
194
- },
195
- "additionalProperties": false,
196
- "required": [
197
- "op"
198
- ]
83
+ "durationMs": {
84
+ "type": [
85
+ "integer",
86
+ "null"
87
+ ],
88
+ "description": "Duration to run each program in milliseconds",
89
+ "minimum": 1,
90
+ "default": 5000
199
91
  },
200
- {
201
- "type": "object",
202
- "description": "Snapshot configuration to disk for later restore or diff.",
203
- "properties": {
204
- "path": {
205
- "type": "string",
206
- "description": "Absolute or workspace-relative path where the snapshot file will be written.",
207
- "minLength": 1
208
- },
209
- "op": {
210
- "const": "snapshot"
211
- }
212
- },
213
- "required": [
214
- "path",
215
- "op"
92
+ "captureScreen": {
93
+ "type": [
94
+ "boolean",
95
+ "null"
216
96
  ],
217
- "additionalProperties": false
97
+ "description": "Capture screen after each run",
98
+ "default": true
218
99
  },
219
- {
220
- "type": "object",
221
- "description": "Restore configuration from a snapshot file.",
222
- "properties": {
223
- "path": {
224
- "type": "string",
225
- "description": "Snapshot file to read (must contain categories payload).",
226
- "minLength": 1
227
- },
228
- "applyToFlash": {
229
- "type": [
230
- "boolean",
231
- "null"
232
- ],
233
- "description": "When true, save the restored configuration to flash immediately.",
234
- "default": false
235
- },
236
- "op": {
237
- "const": "restore"
238
- }
239
- },
240
- "required": [
241
- "path",
242
- "op"
100
+ "maxPrograms": {
101
+ "type": [
102
+ "integer",
103
+ "null"
243
104
  ],
244
- "additionalProperties": false
105
+ "description": "Maximum number of programs to run",
106
+ "minimum": 1,
107
+ "default": 10
245
108
  },
246
- {
247
- "type": "object",
248
- "description": "Compare the current configuration with a snapshot.",
249
- "properties": {
250
- "path": {
251
- "type": "string",
252
- "description": "Snapshot file to compare with.",
253
- "minLength": 1
254
- },
255
- "op": {
256
- "const": "diff"
257
- }
258
- },
259
- "required": [
260
- "path",
261
- "op"
109
+ "outputPath": {
110
+ "type": [
111
+ "string",
112
+ "null"
262
113
  ],
263
- "additionalProperties": false
114
+ "description": "Output directory for run logs and captures",
115
+ "minLength": 1
264
116
  },
265
- {
266
- "type": "object",
267
- "description": "Discover PRG/CRT files and run each with optional screen capture.",
268
- "properties": {
269
- "root": {
270
- "type": [
271
- "string",
272
- "null"
273
- ],
274
- "description": "Root path to search for programs",
275
- "minLength": 1,
276
- "default": "/"
277
- },
278
- "extensions": {
279
- "type": [
280
- "array",
281
- "null"
282
- ],
283
- "items": {
284
- "type": "string",
285
- "description": "File extensions to include (without dot)",
286
- "minLength": 1
287
- },
288
- "default": [
289
- "prg",
290
- "crt"
291
- ]
292
- },
293
- "durationMs": {
294
- "type": [
295
- "integer",
296
- "null"
297
- ],
298
- "description": "Duration to run each program in milliseconds",
299
- "minimum": 1,
300
- "default": 5000
301
- },
302
- "captureScreen": {
303
- "type": [
304
- "boolean",
305
- "null"
306
- ],
307
- "description": "Capture screen after each run",
308
- "default": true
309
- },
310
- "maxPrograms": {
311
- "type": [
312
- "integer",
313
- "null"
314
- ],
315
- "description": "Maximum number of programs to run",
316
- "minimum": 1,
317
- "default": 10
318
- },
319
- "outputPath": {
320
- "type": [
321
- "string",
322
- "null"
323
- ],
324
- "description": "Output directory for run logs and captures",
325
- "minLength": 1
326
- },
327
- "resetDelayMs": {
328
- "type": [
329
- "integer",
330
- "null"
331
- ],
332
- "description": "Delay after reset operations to allow the platform to settle.",
333
- "minimum": 0,
334
- "maximum": 1000,
335
- "default": 100
336
- },
337
- "op": {
338
- "const": "shuffle"
339
- }
340
- },
341
- "additionalProperties": false,
342
- "required": [
343
- "op"
344
- ]
117
+ "resetDelayMs": {
118
+ "type": [
119
+ "integer",
120
+ "null"
121
+ ],
122
+ "description": "Delay after reset operations to allow the platform to settle.",
123
+ "minimum": 0,
124
+ "maximum": 1000,
125
+ "default": 100
345
126
  }
127
+ },
128
+ "required": [
129
+ "op"
346
130
  ],
347
- "discriminator": {
348
- "propertyName": "op"
349
- }
131
+ "description": "Configuration operations available via the c64_config tool.\n\nOperations:\n- list: List configuration categories reported by the firmware.\n- get: Read a configuration category or specific item.\n- set: Write a configuration value in the selected category.\n- batch_update: Apply multiple configuration updates in a single request.\n- load_flash: Load configuration from flash storage.\n- save_flash: Persist the current configuration to flash storage.\n- reset_defaults: Reset firmware configuration to factory defaults.\n- read_debugreg: Read the Ultimate debug register ($D7FF).\n- write_debugreg: Write a hex value to the Ultimate debug register ($D7FF).\n- info: Retrieve Ultimate hardware information and status.\n- version: Fetch firmware version details.\n- snapshot: Snapshot configuration to disk for later restore or diff.\n- restore: Restore configuration from a snapshot file.\n- diff: Compare the current configuration with a snapshot.\n- shuffle: Discover PRG/CRT files and run each with optional screen capture.",
132
+ "additionalProperties": false
350
133
  }