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.
- package/.github/prompts/steer.prompt.md +55 -0
- package/AGENTS.md +9 -7
- package/README.md +139 -95
- package/data/embeddings_asm.json +1 -1
- package/data/embeddings_basic.json +1 -1
- package/data/embeddings_hardware.json +1 -1
- package/data/embeddings_mixed.json +1 -1
- package/data/embeddings_other.json +1 -1
- package/data/graphics/petscii-style-guide.md +4 -4
- package/data/graphics/sprite-charset-best-practices.md +9 -9
- package/data/vice/vice-binary-monitor-spec.md +921 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/device.js +86 -10
- package/dist/mcp-server.js +1 -1
- package/dist/prompts/registry.js +27 -25
- package/dist/rag/knowledgeIndex.js +112 -79
- package/dist/rag/resourceUris.js +93 -0
- package/dist/tools/audio.js +11 -11
- package/dist/tools/debug.js +1 -1
- package/dist/tools/developer.js +13 -13
- package/dist/tools/graphics.js +10 -10
- package/dist/tools/machineControl.js +5 -5
- package/dist/tools/memory.js +19 -11
- package/dist/tools/meta/index.js +1 -1
- package/dist/tools/printer.js +11 -12
- package/dist/tools/programRunners.js +16 -16
- package/dist/tools/rag.js +9 -9
- package/dist/tools/registry/config.js +1 -1
- package/dist/tools/registry/disk.js +1 -1
- package/dist/tools/registry/drive.js +1 -1
- package/dist/tools/registry/extract.js +1 -1
- package/dist/tools/registry/graphics.js +1 -1
- package/dist/tools/registry/memory.js +1 -1
- package/dist/tools/registry/platform.js +1 -1
- package/dist/tools/registry/printer.js +1 -1
- package/dist/tools/registry/program.js +1 -1
- package/dist/tools/registry/rag.js +1 -1
- package/dist/tools/registry/sound.js +1 -1
- package/dist/tools/registry/stream.js +1 -1
- package/dist/tools/registry/system.js +1 -1
- package/dist/tools/storage.js +15 -15
- package/dist/tools/streaming.js +3 -3
- package/dist/tools/types.js +41 -4
- package/dist/tools/vice.js +2 -5
- package/dist/vice/process.js +79 -2
- package/dist/vice/readiness.js +35 -0
- package/dist/vice/smokeOptions.js +44 -0
- package/dist/viceRunner.js +2 -0
- package/doc/plans/prompts/README.md +7 -7
- package/mcp/prompts.json +42 -59
- package/mcp/protocol-examples.json +2 -2
- package/mcp/resources.json +179 -166
- package/mcp/schemas/c64_config.schema.json +109 -326
- package/mcp/schemas/c64_debug.schema.json +158 -337
- package/mcp/schemas/c64_disk.schema.json +180 -262
- package/mcp/schemas/c64_drive.schema.json +31 -111
- package/mcp/schemas/c64_extract.schema.json +193 -291
- package/mcp/schemas/c64_graphics.schema.json +208 -308
- package/mcp/schemas/c64_memory.schema.json +94 -144
- package/mcp/schemas/c64_printer.schema.json +151 -205
- package/mcp/schemas/c64_program.schema.json +229 -367
- package/mcp/schemas/c64_rag.schema.json +25 -59
- package/mcp/schemas/c64_select_backend.schema.json +19 -26
- package/mcp/schemas/c64_sound.schema.json +346 -622
- package/mcp/schemas/c64_stream.schema.json +25 -54
- package/mcp/schemas/c64_system.schema.json +79 -212
- package/mcp/schemas/c64_vice.schema.json +24 -55
- package/mcp/server.json +1 -1
- package/mcp/tools.json +1935 -3443
- package/mcp.json +3 -3
- package/package.json +17 -14
- package/scripts/fetch-external-sources.mjs +1 -2
- package/scripts/run-coverage.mjs +26 -1
- package/scripts/run-tests.mjs +2 -2
- package/scripts/run-tests.ts +273 -52
- package/scripts/update-readme.ts +54 -2
- package/server.json +2 -2
|
@@ -1,302 +1,204 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "object",
|
|
3
|
-
"
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"minLength": 1
|
|
13
|
-
},
|
|
14
|
-
"length": {
|
|
15
|
-
"type": "integer",
|
|
16
|
-
"description": "Number of bytes to scan",
|
|
17
|
-
"minimum": 63,
|
|
18
|
-
"maximum": 65536
|
|
19
|
-
},
|
|
20
|
-
"stride": {
|
|
21
|
-
"type": [
|
|
22
|
-
"integer",
|
|
23
|
-
"null"
|
|
24
|
-
],
|
|
25
|
-
"description": "Stride between sprite candidates in bytes",
|
|
26
|
-
"minimum": 1,
|
|
27
|
-
"default": 64
|
|
28
|
-
},
|
|
29
|
-
"maxSprites": {
|
|
30
|
-
"type": [
|
|
31
|
-
"integer",
|
|
32
|
-
"null"
|
|
33
|
-
],
|
|
34
|
-
"description": "Maximum sprites to return",
|
|
35
|
-
"minimum": 1,
|
|
36
|
-
"maximum": 256,
|
|
37
|
-
"default": 16
|
|
38
|
-
},
|
|
39
|
-
"minNonZeroRows": {
|
|
40
|
-
"type": [
|
|
41
|
-
"integer",
|
|
42
|
-
"null"
|
|
43
|
-
],
|
|
44
|
-
"description": "Minimum non-empty rows required",
|
|
45
|
-
"minimum": 1,
|
|
46
|
-
"maximum": 21,
|
|
47
|
-
"default": 4
|
|
48
|
-
},
|
|
49
|
-
"minSetBits": {
|
|
50
|
-
"type": [
|
|
51
|
-
"integer",
|
|
52
|
-
"null"
|
|
53
|
-
],
|
|
54
|
-
"description": "Minimum number of set bits required",
|
|
55
|
-
"minimum": 1,
|
|
56
|
-
"maximum": 504,
|
|
57
|
-
"default": 12
|
|
58
|
-
},
|
|
59
|
-
"includeBase64": {
|
|
60
|
-
"type": [
|
|
61
|
-
"boolean",
|
|
62
|
-
"null"
|
|
63
|
-
],
|
|
64
|
-
"description": "Include base64 data in response",
|
|
65
|
-
"default": true
|
|
66
|
-
},
|
|
67
|
-
"outputDir": {
|
|
68
|
-
"type": [
|
|
69
|
-
"string",
|
|
70
|
-
"null"
|
|
71
|
-
],
|
|
72
|
-
"description": "Directory to write .spr files",
|
|
73
|
-
"minLength": 1
|
|
74
|
-
},
|
|
75
|
-
"pauseDuringRead": {
|
|
76
|
-
"type": [
|
|
77
|
-
"boolean",
|
|
78
|
-
"null"
|
|
79
|
-
],
|
|
80
|
-
"description": "Pause the machine during memory read",
|
|
81
|
-
"default": true
|
|
82
|
-
},
|
|
83
|
-
"op": {
|
|
84
|
-
"const": "sprites"
|
|
85
|
-
}
|
|
86
|
-
},
|
|
87
|
-
"required": [
|
|
88
|
-
"address",
|
|
89
|
-
"length",
|
|
90
|
-
"op"
|
|
3
|
+
"properties": {
|
|
4
|
+
"op": {
|
|
5
|
+
"type": "string",
|
|
6
|
+
"enum": [
|
|
7
|
+
"sprites",
|
|
8
|
+
"charset",
|
|
9
|
+
"memory_dump",
|
|
10
|
+
"fs_stats",
|
|
11
|
+
"firmware_health"
|
|
91
12
|
],
|
|
92
|
-
"
|
|
13
|
+
"description": "Selects the operation."
|
|
93
14
|
},
|
|
94
|
-
{
|
|
95
|
-
"type": "
|
|
96
|
-
"description": "
|
|
97
|
-
"
|
|
98
|
-
"address": {
|
|
99
|
-
"type": [
|
|
100
|
-
"string",
|
|
101
|
-
"null"
|
|
102
|
-
],
|
|
103
|
-
"description": "Start address to scan ($HHHH or decimal). If not provided, scans common locations.",
|
|
104
|
-
"minLength": 1
|
|
105
|
-
},
|
|
106
|
-
"scanRange": {
|
|
107
|
-
"type": [
|
|
108
|
-
"string",
|
|
109
|
-
"null"
|
|
110
|
-
],
|
|
111
|
-
"description": "Range to scan if address not provided: 'common' or 'full'",
|
|
112
|
-
"enum": [
|
|
113
|
-
"common",
|
|
114
|
-
"full"
|
|
115
|
-
],
|
|
116
|
-
"default": "common"
|
|
117
|
-
},
|
|
118
|
-
"outputPath": {
|
|
119
|
-
"type": [
|
|
120
|
-
"string",
|
|
121
|
-
"null"
|
|
122
|
-
],
|
|
123
|
-
"description": "File path to write charset binary",
|
|
124
|
-
"minLength": 1
|
|
125
|
-
},
|
|
126
|
-
"pauseDuringRead": {
|
|
127
|
-
"type": [
|
|
128
|
-
"boolean",
|
|
129
|
-
"null"
|
|
130
|
-
],
|
|
131
|
-
"description": "Pause the machine during memory read",
|
|
132
|
-
"default": true
|
|
133
|
-
},
|
|
134
|
-
"minNonEmptyChars": {
|
|
135
|
-
"type": [
|
|
136
|
-
"integer",
|
|
137
|
-
"null"
|
|
138
|
-
],
|
|
139
|
-
"description": "Minimum non-empty characters required",
|
|
140
|
-
"minimum": 1,
|
|
141
|
-
"maximum": 256,
|
|
142
|
-
"default": 32
|
|
143
|
-
},
|
|
144
|
-
"minEntropy": {
|
|
145
|
-
"type": [
|
|
146
|
-
"number",
|
|
147
|
-
"null"
|
|
148
|
-
],
|
|
149
|
-
"description": "Minimum average entropy threshold",
|
|
150
|
-
"minimum": 0,
|
|
151
|
-
"maximum": 1,
|
|
152
|
-
"default": 0.3
|
|
153
|
-
},
|
|
154
|
-
"op": {
|
|
155
|
-
"const": "charset"
|
|
156
|
-
}
|
|
157
|
-
},
|
|
158
|
-
"additionalProperties": false,
|
|
159
|
-
"required": [
|
|
160
|
-
"op"
|
|
161
|
-
]
|
|
15
|
+
"address": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"description": "Start address ($HHHH or decimal)",
|
|
18
|
+
"minLength": 1
|
|
162
19
|
},
|
|
163
|
-
{
|
|
164
|
-
"type": "
|
|
165
|
-
"description": "
|
|
166
|
-
"
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
"
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
},
|
|
213
|
-
"retries": {
|
|
214
|
-
"type": [
|
|
215
|
-
"integer",
|
|
216
|
-
"null"
|
|
217
|
-
],
|
|
218
|
-
"description": "Retries per chunk on failure",
|
|
219
|
-
"minimum": 0,
|
|
220
|
-
"default": 1
|
|
221
|
-
},
|
|
222
|
-
"op": {
|
|
223
|
-
"const": "memory_dump"
|
|
224
|
-
}
|
|
225
|
-
},
|
|
226
|
-
"required": [
|
|
227
|
-
"address",
|
|
228
|
-
"length",
|
|
229
|
-
"outputPath",
|
|
230
|
-
"op"
|
|
20
|
+
"length": {
|
|
21
|
+
"type": "integer",
|
|
22
|
+
"description": "Number of bytes to scan",
|
|
23
|
+
"minimum": 63,
|
|
24
|
+
"maximum": 65536
|
|
25
|
+
},
|
|
26
|
+
"stride": {
|
|
27
|
+
"type": [
|
|
28
|
+
"integer",
|
|
29
|
+
"null"
|
|
30
|
+
],
|
|
31
|
+
"description": "Stride between sprite candidates in bytes",
|
|
32
|
+
"minimum": 1,
|
|
33
|
+
"default": 64
|
|
34
|
+
},
|
|
35
|
+
"maxSprites": {
|
|
36
|
+
"type": [
|
|
37
|
+
"integer",
|
|
38
|
+
"null"
|
|
39
|
+
],
|
|
40
|
+
"description": "Maximum sprites to return",
|
|
41
|
+
"minimum": 1,
|
|
42
|
+
"maximum": 256,
|
|
43
|
+
"default": 16
|
|
44
|
+
},
|
|
45
|
+
"minNonZeroRows": {
|
|
46
|
+
"type": [
|
|
47
|
+
"integer",
|
|
48
|
+
"null"
|
|
49
|
+
],
|
|
50
|
+
"description": "Minimum non-empty rows required",
|
|
51
|
+
"minimum": 1,
|
|
52
|
+
"maximum": 21,
|
|
53
|
+
"default": 4
|
|
54
|
+
},
|
|
55
|
+
"minSetBits": {
|
|
56
|
+
"type": [
|
|
57
|
+
"integer",
|
|
58
|
+
"null"
|
|
59
|
+
],
|
|
60
|
+
"description": "Minimum number of set bits required",
|
|
61
|
+
"minimum": 1,
|
|
62
|
+
"maximum": 504,
|
|
63
|
+
"default": 12
|
|
64
|
+
},
|
|
65
|
+
"includeBase64": {
|
|
66
|
+
"type": [
|
|
67
|
+
"boolean",
|
|
68
|
+
"null"
|
|
231
69
|
],
|
|
232
|
-
"
|
|
70
|
+
"description": "Include base64 data in response",
|
|
71
|
+
"default": true
|
|
233
72
|
},
|
|
234
|
-
{
|
|
235
|
-
"type":
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
"array",
|
|
250
|
-
"null"
|
|
251
|
-
],
|
|
252
|
-
"items": {
|
|
253
|
-
"type": "string",
|
|
254
|
-
"description": "Limit to these extensions (without dot)",
|
|
255
|
-
"minLength": 1
|
|
256
|
-
}
|
|
257
|
-
},
|
|
258
|
-
"includeContainers": {
|
|
259
|
-
"type": [
|
|
260
|
-
"boolean",
|
|
261
|
-
"null"
|
|
262
|
-
],
|
|
263
|
-
"description": "Include container images (d64/d81/etc.) in extension stats",
|
|
264
|
-
"default": true
|
|
265
|
-
},
|
|
266
|
-
"maxSamplesPerExtension": {
|
|
267
|
-
"type": [
|
|
268
|
-
"integer",
|
|
269
|
-
"null"
|
|
270
|
-
],
|
|
271
|
-
"description": "Number of sample paths to keep per extension",
|
|
272
|
-
"minimum": 1,
|
|
273
|
-
"maximum": 10,
|
|
274
|
-
"default": 3
|
|
275
|
-
},
|
|
276
|
-
"op": {
|
|
277
|
-
"const": "fs_stats"
|
|
278
|
-
}
|
|
279
|
-
},
|
|
280
|
-
"additionalProperties": false,
|
|
281
|
-
"required": [
|
|
282
|
-
"op"
|
|
283
|
-
]
|
|
73
|
+
"outputDir": {
|
|
74
|
+
"type": [
|
|
75
|
+
"string",
|
|
76
|
+
"null"
|
|
77
|
+
],
|
|
78
|
+
"description": "Directory to write .spr files",
|
|
79
|
+
"minLength": 1
|
|
80
|
+
},
|
|
81
|
+
"pauseDuringRead": {
|
|
82
|
+
"type": [
|
|
83
|
+
"boolean",
|
|
84
|
+
"null"
|
|
85
|
+
],
|
|
86
|
+
"description": "Pause the machine during memory read",
|
|
87
|
+
"default": true
|
|
284
88
|
},
|
|
285
|
-
{
|
|
286
|
-
"type":
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
89
|
+
"scanRange": {
|
|
90
|
+
"type": [
|
|
91
|
+
"string",
|
|
92
|
+
"null"
|
|
93
|
+
],
|
|
94
|
+
"description": "Range to scan if address not provided: 'common' or 'full'",
|
|
95
|
+
"enum": [
|
|
96
|
+
"common",
|
|
97
|
+
"full"
|
|
98
|
+
],
|
|
99
|
+
"default": "common"
|
|
100
|
+
},
|
|
101
|
+
"outputPath": {
|
|
102
|
+
"type": [
|
|
103
|
+
"string",
|
|
104
|
+
"null"
|
|
105
|
+
],
|
|
106
|
+
"description": "File path to write charset binary",
|
|
107
|
+
"minLength": 1
|
|
108
|
+
},
|
|
109
|
+
"minNonEmptyChars": {
|
|
110
|
+
"type": [
|
|
111
|
+
"integer",
|
|
112
|
+
"null"
|
|
113
|
+
],
|
|
114
|
+
"description": "Minimum non-empty characters required",
|
|
115
|
+
"minimum": 1,
|
|
116
|
+
"maximum": 256,
|
|
117
|
+
"default": 32
|
|
118
|
+
},
|
|
119
|
+
"minEntropy": {
|
|
120
|
+
"type": [
|
|
121
|
+
"number",
|
|
122
|
+
"null"
|
|
123
|
+
],
|
|
124
|
+
"description": "Minimum average entropy threshold",
|
|
125
|
+
"minimum": 0,
|
|
126
|
+
"maximum": 1,
|
|
127
|
+
"default": 0.3
|
|
128
|
+
},
|
|
129
|
+
"format": {
|
|
130
|
+
"type": [
|
|
131
|
+
"string",
|
|
132
|
+
"null"
|
|
133
|
+
],
|
|
134
|
+
"description": "Output format: hex|binary",
|
|
135
|
+
"enum": [
|
|
136
|
+
"hex",
|
|
137
|
+
"binary"
|
|
138
|
+
],
|
|
139
|
+
"default": "hex"
|
|
140
|
+
},
|
|
141
|
+
"chunkSize": {
|
|
142
|
+
"type": [
|
|
143
|
+
"integer",
|
|
144
|
+
"null"
|
|
145
|
+
],
|
|
146
|
+
"description": "Chunk size for reads",
|
|
147
|
+
"minimum": 1,
|
|
148
|
+
"maximum": 4096,
|
|
149
|
+
"default": 512
|
|
150
|
+
},
|
|
151
|
+
"retries": {
|
|
152
|
+
"type": [
|
|
153
|
+
"integer",
|
|
154
|
+
"null"
|
|
155
|
+
],
|
|
156
|
+
"description": "Retries per chunk on failure",
|
|
157
|
+
"minimum": 0,
|
|
158
|
+
"default": 1
|
|
159
|
+
},
|
|
160
|
+
"root": {
|
|
161
|
+
"type": [
|
|
162
|
+
"string",
|
|
163
|
+
"null"
|
|
164
|
+
],
|
|
165
|
+
"description": "Root path to scan",
|
|
166
|
+
"minLength": 1,
|
|
167
|
+
"default": "/"
|
|
168
|
+
},
|
|
169
|
+
"extensions": {
|
|
170
|
+
"type": [
|
|
171
|
+
"array",
|
|
172
|
+
"null"
|
|
173
|
+
],
|
|
174
|
+
"items": {
|
|
175
|
+
"type": "string",
|
|
176
|
+
"description": "Limit to these extensions (without dot)",
|
|
177
|
+
"minLength": 1
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"includeContainers": {
|
|
181
|
+
"type": [
|
|
182
|
+
"boolean",
|
|
183
|
+
"null"
|
|
184
|
+
],
|
|
185
|
+
"description": "Include container images (d64/d81/etc.) in extension stats",
|
|
186
|
+
"default": true
|
|
187
|
+
},
|
|
188
|
+
"maxSamplesPerExtension": {
|
|
189
|
+
"type": [
|
|
190
|
+
"integer",
|
|
191
|
+
"null"
|
|
192
|
+
],
|
|
193
|
+
"description": "Number of sample paths to keep per extension",
|
|
194
|
+
"minimum": 1,
|
|
195
|
+
"maximum": 10,
|
|
196
|
+
"default": 3
|
|
297
197
|
}
|
|
198
|
+
},
|
|
199
|
+
"required": [
|
|
200
|
+
"op"
|
|
298
201
|
],
|
|
299
|
-
"
|
|
300
|
-
|
|
301
|
-
}
|
|
202
|
+
"description": "Extraction operations available via the c64_extract tool.\n\nOperations:\n- sprites: Scan RAM for sprites and optionally export .spr files.\n- charset: Locate and extract 2KB character sets from RAM.\n- memory_dump: Dump a RAM range to hex or binary files with manifest metadata.\n- fs_stats: Walk the filesystem and aggregate counts/bytes by extension.\n- firmware_health: Run firmware readiness checks and report status metrics.",
|
|
203
|
+
"additionalProperties": false
|
|
302
204
|
}
|