c64bridge 0.8.0 → 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 (79) 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/developer.md +10 -2
  50. package/doc/plans/prompts/README.md +7 -7
  51. package/mcp/prompts.json +42 -59
  52. package/mcp/protocol-examples.json +2 -2
  53. package/mcp/resources.json +179 -166
  54. package/mcp/schemas/c64_config.schema.json +109 -326
  55. package/mcp/schemas/c64_debug.schema.json +158 -337
  56. package/mcp/schemas/c64_disk.schema.json +180 -262
  57. package/mcp/schemas/c64_drive.schema.json +31 -111
  58. package/mcp/schemas/c64_extract.schema.json +193 -291
  59. package/mcp/schemas/c64_graphics.schema.json +208 -308
  60. package/mcp/schemas/c64_memory.schema.json +94 -144
  61. package/mcp/schemas/c64_printer.schema.json +151 -205
  62. package/mcp/schemas/c64_program.schema.json +229 -367
  63. package/mcp/schemas/c64_rag.schema.json +25 -59
  64. package/mcp/schemas/c64_select_backend.schema.json +19 -26
  65. package/mcp/schemas/c64_sound.schema.json +346 -622
  66. package/mcp/schemas/c64_stream.schema.json +25 -54
  67. package/mcp/schemas/c64_system.schema.json +79 -212
  68. package/mcp/schemas/c64_vice.schema.json +24 -55
  69. package/mcp/server.json +1 -1
  70. package/mcp/tools.json +1935 -3443
  71. package/mcp.json +10 -9
  72. package/package.json +20 -15
  73. package/scripts/fetch-external-sources.mjs +1 -2
  74. package/scripts/prepare-release.mjs +59 -2
  75. package/scripts/run-coverage.mjs +26 -1
  76. package/scripts/run-tests.mjs +2 -2
  77. package/scripts/run-tests.ts +273 -52
  78. package/scripts/update-readme.ts +54 -2
  79. package/server.json +94 -0
@@ -1,380 +1,201 @@
1
1
  {
2
2
  "type": "object",
3
- "description": "Available debugger operations.",
4
- "oneOf": [
5
- {
6
- "type": "object",
7
- "description": "List all active VICE checkpoints (breakpoints).",
8
- "properties": {
9
- "op": {
10
- "const": "list_checkpoints"
11
- }
12
- },
13
- "required": [
14
- "op"
3
+ "properties": {
4
+ "op": {
5
+ "type": "string",
6
+ "enum": [
7
+ "list_checkpoints",
8
+ "get_checkpoint",
9
+ "create_checkpoint",
10
+ "delete_checkpoint",
11
+ "toggle_checkpoint",
12
+ "set_condition",
13
+ "list_registers",
14
+ "get_registers",
15
+ "set_registers",
16
+ "step",
17
+ "step_return"
15
18
  ],
16
- "additionalProperties": false
19
+ "description": "Selects the operation."
17
20
  },
18
- {
19
- "type": "object",
20
- "description": "Fetch a single checkpoint by id.",
21
- "properties": {
22
- "op": {
23
- "const": "get_checkpoint"
24
- },
25
- "id": {
26
- "type": "integer",
27
- "description": "Debugger checkpoint identifier.",
28
- "minimum": 1
29
- }
30
- },
31
- "required": [
32
- "op",
33
- "id"
21
+ "id": {
22
+ "type": "integer",
23
+ "description": "Debugger checkpoint identifier.",
24
+ "minimum": 1
25
+ },
26
+ "address": {
27
+ "type": "string",
28
+ "description": "Start address (e.g. $0801).",
29
+ "minLength": 1
30
+ },
31
+ "endAddress": {
32
+ "type": [
33
+ "string",
34
+ "null"
34
35
  ],
35
- "additionalProperties": false
36
+ "description": "Optional end address for range.",
37
+ "minLength": 1
38
+ },
39
+ "stopOnHit": {
40
+ "type": [
41
+ "boolean",
42
+ "null"
43
+ ],
44
+ "description": "Pause execution when hit (default true).",
45
+ "default": true
46
+ },
47
+ "enabled": {
48
+ "type": [
49
+ "boolean",
50
+ "null"
51
+ ],
52
+ "description": "Whether the checkpoint is enabled (default true).",
53
+ "default": true
54
+ },
55
+ "temporary": {
56
+ "type": [
57
+ "boolean",
58
+ "null"
59
+ ],
60
+ "description": "Automatically remove after first hit.",
61
+ "default": false
36
62
  },
37
- {
38
- "type": "object",
39
- "description": "Create a new checkpoint (breakpoint) in VICE.",
63
+ "operations": {
64
+ "type": [
65
+ "object",
66
+ "null"
67
+ ],
68
+ "description": "Checkpoint operation filters.",
40
69
  "properties": {
41
- "op": {
42
- "const": "create_checkpoint"
43
- },
44
- "address": {
45
- "type": "string",
46
- "description": "Start address (e.g. $0801).",
47
- "minLength": 1
48
- },
49
- "endAddress": {
50
- "type": [
51
- "string",
52
- "null"
53
- ],
54
- "description": "Optional end address for range.",
55
- "minLength": 1
56
- },
57
- "stopOnHit": {
70
+ "execute": {
58
71
  "type": [
59
72
  "boolean",
60
73
  "null"
61
74
  ],
62
- "description": "Pause execution when hit (default true).",
75
+ "description": "Trigger on execute (default true).",
63
76
  "default": true
64
77
  },
65
- "enabled": {
78
+ "load": {
66
79
  "type": [
67
80
  "boolean",
68
81
  "null"
69
82
  ],
70
- "description": "Whether the checkpoint is enabled (default true).",
71
- "default": true
83
+ "description": "Trigger on memory load.",
84
+ "default": false
72
85
  },
73
- "temporary": {
86
+ "store": {
74
87
  "type": [
75
88
  "boolean",
76
89
  "null"
77
90
  ],
78
- "description": "Automatically remove after first hit.",
91
+ "description": "Trigger on memory store.",
79
92
  "default": false
80
- },
81
- "operations": {
82
- "type": [
83
- "object",
84
- "null"
85
- ],
86
- "description": "Checkpoint operation filters.",
87
- "properties": {
88
- "execute": {
89
- "type": [
90
- "boolean",
91
- "null"
92
- ],
93
- "description": "Trigger on execute (default true).",
94
- "default": true
95
- },
96
- "load": {
97
- "type": [
98
- "boolean",
99
- "null"
100
- ],
101
- "description": "Trigger on memory load.",
102
- "default": false
103
- },
104
- "store": {
105
- "type": [
106
- "boolean",
107
- "null"
108
- ],
109
- "description": "Trigger on memory store.",
110
- "default": false
111
- }
112
- },
113
- "additionalProperties": false
114
- },
115
- "memspace": {
116
- "type": [
117
- "integer",
118
- "null"
119
- ],
120
- "description": "VICE memory space (0=CPU, 1=Drive8, etc.).",
121
- "minimum": 0,
122
- "maximum": 4
123
93
  }
124
94
  },
125
- "required": [
126
- "op",
127
- "address"
128
- ],
129
95
  "additionalProperties": false
130
96
  },
131
- {
132
- "type": "object",
133
- "description": "Remove a checkpoint by id.",
134
- "properties": {
135
- "op": {
136
- "const": "delete_checkpoint"
137
- },
138
- "id": {
139
- "type": "integer",
140
- "description": "Debugger checkpoint identifier.",
141
- "minimum": 1
142
- }
143
- },
144
- "required": [
145
- "op",
146
- "id"
97
+ "memspace": {
98
+ "type": [
99
+ "integer",
100
+ "null"
147
101
  ],
148
- "additionalProperties": false
102
+ "description": "VICE memory space (0=CPU, 1=Drive8, etc.).",
103
+ "minimum": 0,
104
+ "maximum": 4
149
105
  },
150
- {
151
- "type": "object",
152
- "description": "Enable or disable a checkpoint by id.",
153
- "properties": {
154
- "op": {
155
- "const": "toggle_checkpoint"
156
- },
157
- "id": {
158
- "type": "integer",
159
- "description": "Debugger checkpoint identifier.",
160
- "minimum": 1
161
- },
162
- "enabled": {
163
- "type": "boolean",
164
- "description": "Set to true to enable, false to disable."
165
- }
166
- },
167
- "required": [
168
- "op",
169
- "id",
170
- "enabled"
171
- ],
172
- "additionalProperties": false
106
+ "expression": {
107
+ "type": "string",
108
+ "description": "VICE monitor conditional expression.",
109
+ "minLength": 1
173
110
  },
174
- {
175
- "type": "object",
176
- "description": "Attach a conditional expression to a checkpoint.",
177
- "properties": {
178
- "op": {
179
- "const": "set_condition"
180
- },
181
- "id": {
182
- "type": "integer",
183
- "description": "Debugger checkpoint identifier.",
184
- "minimum": 1
185
- },
186
- "expression": {
187
- "type": "string",
188
- "description": "VICE monitor conditional expression.",
189
- "minLength": 1
190
- }
191
- },
192
- "required": [
193
- "op",
194
- "id",
195
- "expression"
111
+ "registers": {
112
+ "type": [
113
+ "array",
114
+ "null"
196
115
  ],
197
- "additionalProperties": false
198
- },
199
- {
200
- "type": "object",
201
- "description": "List available registers (metadata).",
202
- "properties": {
203
- "op": {
204
- "const": "list_registers"
205
- },
206
- "memspace": {
207
- "type": [
208
- "integer",
209
- "null"
210
- ],
211
- "description": "VICE memory space (0=CPU, 1=Drive8, etc.).",
212
- "minimum": 0,
213
- "maximum": 4
214
- }
215
- },
216
- "required": [
217
- "op"
218
- ],
219
- "additionalProperties": false
220
- },
221
- {
222
- "type": "object",
223
- "description": "Read register values, optionally filtered by name or id.",
224
- "properties": {
225
- "op": {
226
- "const": "get_registers"
227
- },
228
- "memspace": {
229
- "type": [
230
- "integer",
231
- "null"
232
- ],
233
- "description": "VICE memory space (0=CPU, 1=Drive8, etc.).",
234
- "minimum": 0,
235
- "maximum": 4
236
- },
237
- "registers": {
238
- "type": [
239
- "array",
240
- "null"
241
- ],
242
- "description": "Registers to include.",
243
- "items": {
244
- "type": "object",
245
- "description": "Selects a register by id or name.",
246
- "properties": {
247
- "name": {
248
- "type": [
249
- "string",
250
- "null"
251
- ],
252
- "description": "Register name (case-insensitive)."
253
- },
254
- "id": {
255
- "type": [
256
- "integer",
257
- "null"
258
- ],
259
- "description": "Register id.",
260
- "minimum": 0
261
- }
262
- },
263
- "additionalProperties": false
116
+ "description": "Registers to include.",
117
+ "items": {
118
+ "type": "object",
119
+ "description": "Selects a register by id or name.",
120
+ "properties": {
121
+ "name": {
122
+ "type": [
123
+ "string",
124
+ "null"
125
+ ],
126
+ "description": "Register name (case-insensitive)."
127
+ },
128
+ "id": {
129
+ "type": [
130
+ "integer",
131
+ "null"
132
+ ],
133
+ "description": "Register id.",
134
+ "minimum": 0
264
135
  }
265
- }
266
- },
267
- "required": [
268
- "op"
269
- ],
270
- "additionalProperties": false
271
- },
272
- {
273
- "type": "object",
274
- "description": "Write register values.",
275
- "properties": {
276
- "op": {
277
- "const": "set_registers"
278
136
  },
279
- "memspace": {
280
- "type": [
281
- "integer",
282
- "null"
283
- ],
284
- "description": "VICE memory space (0=CPU, 1=Drive8, etc.).",
285
- "minimum": 0,
286
- "maximum": 4
287
- },
288
- "writes": {
289
- "type": "array",
290
- "description": "Register writes to apply.",
291
- "items": {
292
- "type": "object",
293
- "description": "Register write descriptor.",
294
- "properties": {
295
- "name": {
296
- "type": [
297
- "string",
298
- "null"
299
- ],
300
- "description": "Register name (case-insensitive)."
301
- },
302
- "id": {
303
- "type": [
304
- "integer",
305
- "null"
306
- ],
307
- "description": "Register id.",
308
- "minimum": 0
309
- },
310
- "value": {
311
- "type": "integer",
312
- "description": "Value to write.",
313
- "minimum": 0
314
- }
315
- },
316
- "required": [
317
- "value"
137
+ "additionalProperties": false
138
+ }
139
+ },
140
+ "writes": {
141
+ "type": "array",
142
+ "description": "Register writes to apply.",
143
+ "items": {
144
+ "type": "object",
145
+ "description": "Register write descriptor.",
146
+ "properties": {
147
+ "name": {
148
+ "type": [
149
+ "string",
150
+ "null"
318
151
  ],
319
- "additionalProperties": false
152
+ "description": "Register name (case-insensitive)."
320
153
  },
321
- "minItems": 1
322
- }
323
- },
324
- "required": [
325
- "op",
326
- "writes"
327
- ],
328
- "additionalProperties": false
329
- },
330
- {
331
- "type": "object",
332
- "description": "Single-step CPU execution.",
333
- "properties": {
334
- "op": {
335
- "const": "step"
336
- },
337
- "count": {
338
- "type": [
339
- "integer",
340
- "null"
341
- ],
342
- "description": "Number of instructions to step.",
343
- "minimum": 1,
344
- "default": 1
154
+ "id": {
155
+ "type": [
156
+ "integer",
157
+ "null"
158
+ ],
159
+ "description": "Register id.",
160
+ "minimum": 0
161
+ },
162
+ "value": {
163
+ "type": "integer",
164
+ "description": "Value to write.",
165
+ "minimum": 0
166
+ }
345
167
  },
346
- "mode": {
347
- "type": [
348
- "string",
349
- "null"
350
- ],
351
- "description": "Step mode (into or over).",
352
- "enum": [
353
- "into",
354
- "over"
355
- ]
356
- }
168
+ "required": [
169
+ "value"
170
+ ],
171
+ "additionalProperties": false
357
172
  },
358
- "required": [
359
- "op"
173
+ "minItems": 1
174
+ },
175
+ "count": {
176
+ "type": [
177
+ "integer",
178
+ "null"
360
179
  ],
361
- "additionalProperties": false
180
+ "description": "Number of instructions to step.",
181
+ "minimum": 1,
182
+ "default": 1
362
183
  },
363
- {
364
- "type": "object",
365
- "description": "Continue execution until the current routine returns.",
366
- "properties": {
367
- "op": {
368
- "const": "step_return"
369
- }
370
- },
371
- "required": [
372
- "op"
184
+ "mode": {
185
+ "type": [
186
+ "string",
187
+ "null"
373
188
  ],
374
- "additionalProperties": false
189
+ "description": "Step mode (into or over).",
190
+ "enum": [
191
+ "into",
192
+ "over"
193
+ ]
375
194
  }
195
+ },
196
+ "required": [
197
+ "op"
376
198
  ],
377
- "discriminator": {
378
- "propertyName": "op"
379
- }
199
+ "description": "Available debugger operations.\n\nOperations:\n- list_checkpoints: List all active VICE checkpoints (breakpoints).\n- get_checkpoint: Fetch a single checkpoint by id.\n- create_checkpoint: Create a new checkpoint (breakpoint) in VICE.\n- delete_checkpoint: Remove a checkpoint by id.\n- toggle_checkpoint: Enable or disable a checkpoint by id.\n- set_condition: Attach a conditional expression to a checkpoint.\n- list_registers: List available registers (metadata).\n- get_registers: Read register values, optionally filtered by name or id.\n- set_registers: Write register values.\n- step: Single-step CPU execution.\n- step_return: Continue execution until the current routine returns.",
200
+ "additionalProperties": false
380
201
  }