c64bridge 0.8.1 → 0.9.1
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 +192 -154
- 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 +938 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/c64Client.js +76 -2
- package/dist/device.js +129 -13
- package/dist/mcp-server.js +1 -1
- package/dist/prompts/registry.js +27 -25
- package/dist/rag/indexer.js +18 -8
- package/dist/rag/knowledgeIndex.js +112 -79
- package/dist/rag/resourceUris.js +93 -0
- package/dist/sidwaveCompiler.js +1 -1
- package/dist/{assemblyConverter.js → tools/assember.js} +10 -1
- package/dist/tools/audio.js +11 -11
- package/dist/{basicConverter.js → tools/basicTokenizer.js} +1 -1
- package/dist/tools/debug.js +159 -6
- package/dist/tools/developer.js +13 -13
- package/dist/tools/disassembler.js +478 -0
- package/dist/tools/graphics.js +10 -10
- package/dist/tools/input.js +338 -0
- package/dist/tools/machineControl.js +5 -5
- package/dist/tools/memory.js +336 -12
- package/dist/tools/meta/index.js +1 -1
- package/dist/tools/printer.js +11 -12
- package/dist/tools/programRunners.js +61 -22
- package/dist/tools/rag.js +9 -9
- package/dist/tools/registry/batch.js +167 -0
- 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 +102 -2
- package/dist/tools/registry/index.js +4 -0
- package/dist/tools/registry/input.js +2 -0
- package/dist/tools/registry/memory.js +62 -2
- 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/schema.js +4 -5
- package/dist/tools/storage.js +15 -15
- package/dist/tools/streaming.js +3 -3
- package/dist/tools/symbolRegistry.js +49 -0
- package/dist/tools/types.js +56 -4
- package/dist/tools/vice.js +2 -5
- package/dist/vice/process.js +120 -2
- package/dist/vice/readiness.js +35 -0
- package/dist/vice/smokeOptions.js +44 -0
- package/dist/vice/viceClient.js +5 -1
- 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_batch.schema.json +53 -0
- package/mcp/schemas/c64_config.schema.json +525 -283
- package/mcp/schemas/c64_debug.schema.json +763 -304
- package/mcp/schemas/c64_disk.schema.json +499 -243
- package/mcp/schemas/c64_drive.schema.json +165 -90
- package/mcp/schemas/c64_extract.schema.json +533 -274
- package/mcp/schemas/c64_graphics.schema.json +607 -295
- package/mcp/schemas/c64_input.schema.json +136 -0
- package/mcp/schemas/c64_memory.schema.json +637 -128
- package/mcp/schemas/c64_printer.schema.json +393 -196
- package/mcp/schemas/c64_program.schema.json +699 -340
- package/mcp/schemas/c64_rag.schema.json +100 -54
- package/mcp/schemas/c64_select_backend.schema.json +49 -23
- package/mcp/schemas/c64_sound.schema.json +1092 -577
- package/mcp/schemas/c64_stream.schema.json +89 -47
- package/mcp/schemas/c64_system.schema.json +351 -185
- package/mcp/schemas/c64_vice.schema.json +85 -47
- package/mcp/server.json +1 -1
- package/mcp/tools.json +7299 -3346
- package/mcp.json +3 -3
- package/package.json +17 -14
- package/scripts/fetch-external-sources.mjs +1 -2
- package/scripts/run-coverage.mjs +33 -1
- package/scripts/run-tests.mjs +2 -2
- package/scripts/run-tests.ts +275 -52
- package/scripts/update-readme.ts +132 -3
- package/server.json +2 -2
|
@@ -1,302 +1,561 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "object",
|
|
3
|
-
"
|
|
4
|
-
|
|
3
|
+
"properties": {
|
|
4
|
+
"op": {
|
|
5
|
+
"type": "string",
|
|
6
|
+
"enum": [
|
|
7
|
+
"sprites",
|
|
8
|
+
"charset",
|
|
9
|
+
"memory_dump",
|
|
10
|
+
"fs_stats",
|
|
11
|
+
"firmware_health"
|
|
12
|
+
],
|
|
13
|
+
"description": "Selects the operation."
|
|
14
|
+
},
|
|
15
|
+
"address": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"description": "Start address ($HHHH or decimal)",
|
|
18
|
+
"minLength": 1
|
|
19
|
+
},
|
|
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"
|
|
69
|
+
],
|
|
70
|
+
"description": "Include base64 data in response",
|
|
71
|
+
"default": true
|
|
72
|
+
},
|
|
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
|
|
88
|
+
},
|
|
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
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
"required": [
|
|
200
|
+
"op"
|
|
201
|
+
],
|
|
202
|
+
"description": "Extraction operations available via the c64_extract tool.\n\nOperations:\n- sprites: Scan RAM for sprites and optionally export .spr files. Required inputs: address, length. Optional inputs: stride, maxSprites, minNonZeroRows, minSetBits, includeBase64, outputDir, pauseDuringRead.\n- charset: Locate and extract 2KB character sets from RAM. Required inputs: none. Optional inputs: address, scanRange, outputPath, pauseDuringRead, minNonEmptyChars, minEntropy.\n- memory_dump: Dump a RAM range to hex or binary files with manifest metadata. Required inputs: address, length, outputPath. Optional inputs: format, chunkSize, pauseDuringRead, retries.\n- fs_stats: Walk the filesystem and aggregate counts/bytes by extension. Required inputs: none. Optional inputs: root, extensions, includeContainers, maxSamplesPerExtension.\n- firmware_health: Run firmware readiness checks and report status metrics. Required inputs: none.",
|
|
203
|
+
"additionalProperties": false,
|
|
204
|
+
"x-c64bridge-operations": [
|
|
5
205
|
{
|
|
6
|
-
"
|
|
206
|
+
"op": "sprites",
|
|
7
207
|
"description": "Scan RAM for sprites and optionally export .spr files.",
|
|
8
|
-
"properties": {
|
|
9
|
-
"address": {
|
|
10
|
-
"type": "string",
|
|
11
|
-
"description": "Start address ($HHHH or decimal)",
|
|
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
208
|
"required": [
|
|
88
209
|
"address",
|
|
89
|
-
"length"
|
|
90
|
-
|
|
210
|
+
"length"
|
|
211
|
+
],
|
|
212
|
+
"optional": [
|
|
213
|
+
"stride",
|
|
214
|
+
"maxSprites",
|
|
215
|
+
"minNonZeroRows",
|
|
216
|
+
"minSetBits",
|
|
217
|
+
"includeBase64",
|
|
218
|
+
"outputDir",
|
|
219
|
+
"pauseDuringRead"
|
|
91
220
|
],
|
|
92
|
-
"
|
|
221
|
+
"inputSchema": {
|
|
222
|
+
"type": "object",
|
|
223
|
+
"description": "Scan RAM for sprites and optionally export .spr files.",
|
|
224
|
+
"properties": {
|
|
225
|
+
"address": {
|
|
226
|
+
"type": "string",
|
|
227
|
+
"description": "Start address ($HHHH or decimal)",
|
|
228
|
+
"minLength": 1
|
|
229
|
+
},
|
|
230
|
+
"length": {
|
|
231
|
+
"type": "integer",
|
|
232
|
+
"description": "Number of bytes to scan",
|
|
233
|
+
"minimum": 63,
|
|
234
|
+
"maximum": 65536
|
|
235
|
+
},
|
|
236
|
+
"stride": {
|
|
237
|
+
"type": [
|
|
238
|
+
"integer",
|
|
239
|
+
"null"
|
|
240
|
+
],
|
|
241
|
+
"description": "Stride between sprite candidates in bytes",
|
|
242
|
+
"minimum": 1,
|
|
243
|
+
"default": 64
|
|
244
|
+
},
|
|
245
|
+
"maxSprites": {
|
|
246
|
+
"type": [
|
|
247
|
+
"integer",
|
|
248
|
+
"null"
|
|
249
|
+
],
|
|
250
|
+
"description": "Maximum sprites to return",
|
|
251
|
+
"minimum": 1,
|
|
252
|
+
"maximum": 256,
|
|
253
|
+
"default": 16
|
|
254
|
+
},
|
|
255
|
+
"minNonZeroRows": {
|
|
256
|
+
"type": [
|
|
257
|
+
"integer",
|
|
258
|
+
"null"
|
|
259
|
+
],
|
|
260
|
+
"description": "Minimum non-empty rows required",
|
|
261
|
+
"minimum": 1,
|
|
262
|
+
"maximum": 21,
|
|
263
|
+
"default": 4
|
|
264
|
+
},
|
|
265
|
+
"minSetBits": {
|
|
266
|
+
"type": [
|
|
267
|
+
"integer",
|
|
268
|
+
"null"
|
|
269
|
+
],
|
|
270
|
+
"description": "Minimum number of set bits required",
|
|
271
|
+
"minimum": 1,
|
|
272
|
+
"maximum": 504,
|
|
273
|
+
"default": 12
|
|
274
|
+
},
|
|
275
|
+
"includeBase64": {
|
|
276
|
+
"type": [
|
|
277
|
+
"boolean",
|
|
278
|
+
"null"
|
|
279
|
+
],
|
|
280
|
+
"description": "Include base64 data in response",
|
|
281
|
+
"default": true
|
|
282
|
+
},
|
|
283
|
+
"outputDir": {
|
|
284
|
+
"type": [
|
|
285
|
+
"string",
|
|
286
|
+
"null"
|
|
287
|
+
],
|
|
288
|
+
"description": "Directory to write .spr files",
|
|
289
|
+
"minLength": 1
|
|
290
|
+
},
|
|
291
|
+
"pauseDuringRead": {
|
|
292
|
+
"type": [
|
|
293
|
+
"boolean",
|
|
294
|
+
"null"
|
|
295
|
+
],
|
|
296
|
+
"description": "Pause the machine during memory read",
|
|
297
|
+
"default": true
|
|
298
|
+
},
|
|
299
|
+
"op": {
|
|
300
|
+
"const": "sprites"
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
"required": [
|
|
304
|
+
"address",
|
|
305
|
+
"length",
|
|
306
|
+
"op"
|
|
307
|
+
],
|
|
308
|
+
"additionalProperties": false
|
|
309
|
+
}
|
|
93
310
|
},
|
|
94
311
|
{
|
|
95
|
-
"
|
|
312
|
+
"op": "charset",
|
|
96
313
|
"description": "Locate and extract 2KB character sets from RAM.",
|
|
97
|
-
"
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
"
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
"
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
"
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
314
|
+
"required": [],
|
|
315
|
+
"optional": [
|
|
316
|
+
"address",
|
|
317
|
+
"scanRange",
|
|
318
|
+
"outputPath",
|
|
319
|
+
"pauseDuringRead",
|
|
320
|
+
"minNonEmptyChars",
|
|
321
|
+
"minEntropy"
|
|
322
|
+
],
|
|
323
|
+
"inputSchema": {
|
|
324
|
+
"type": "object",
|
|
325
|
+
"description": "Locate and extract 2KB character sets from RAM.",
|
|
326
|
+
"properties": {
|
|
327
|
+
"address": {
|
|
328
|
+
"type": [
|
|
329
|
+
"string",
|
|
330
|
+
"null"
|
|
331
|
+
],
|
|
332
|
+
"description": "Start address to scan ($HHHH or decimal). If not provided, scans common locations.",
|
|
333
|
+
"minLength": 1
|
|
334
|
+
},
|
|
335
|
+
"scanRange": {
|
|
336
|
+
"type": [
|
|
337
|
+
"string",
|
|
338
|
+
"null"
|
|
339
|
+
],
|
|
340
|
+
"description": "Range to scan if address not provided: 'common' or 'full'",
|
|
341
|
+
"enum": [
|
|
342
|
+
"common",
|
|
343
|
+
"full"
|
|
344
|
+
],
|
|
345
|
+
"default": "common"
|
|
346
|
+
},
|
|
347
|
+
"outputPath": {
|
|
348
|
+
"type": [
|
|
349
|
+
"string",
|
|
350
|
+
"null"
|
|
351
|
+
],
|
|
352
|
+
"description": "File path to write charset binary",
|
|
353
|
+
"minLength": 1
|
|
354
|
+
},
|
|
355
|
+
"pauseDuringRead": {
|
|
356
|
+
"type": [
|
|
357
|
+
"boolean",
|
|
358
|
+
"null"
|
|
359
|
+
],
|
|
360
|
+
"description": "Pause the machine during memory read",
|
|
361
|
+
"default": true
|
|
362
|
+
},
|
|
363
|
+
"minNonEmptyChars": {
|
|
364
|
+
"type": [
|
|
365
|
+
"integer",
|
|
366
|
+
"null"
|
|
367
|
+
],
|
|
368
|
+
"description": "Minimum non-empty characters required",
|
|
369
|
+
"minimum": 1,
|
|
370
|
+
"maximum": 256,
|
|
371
|
+
"default": 32
|
|
372
|
+
},
|
|
373
|
+
"minEntropy": {
|
|
374
|
+
"type": [
|
|
375
|
+
"number",
|
|
376
|
+
"null"
|
|
377
|
+
],
|
|
378
|
+
"description": "Minimum average entropy threshold",
|
|
379
|
+
"minimum": 0,
|
|
380
|
+
"maximum": 1,
|
|
381
|
+
"default": 0.3
|
|
382
|
+
},
|
|
383
|
+
"op": {
|
|
384
|
+
"const": "charset"
|
|
385
|
+
}
|
|
153
386
|
},
|
|
154
|
-
"
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
"required": [
|
|
160
|
-
"op"
|
|
161
|
-
]
|
|
387
|
+
"additionalProperties": false,
|
|
388
|
+
"required": [
|
|
389
|
+
"op"
|
|
390
|
+
]
|
|
391
|
+
}
|
|
162
392
|
},
|
|
163
393
|
{
|
|
164
|
-
"
|
|
394
|
+
"op": "memory_dump",
|
|
165
395
|
"description": "Dump a RAM range to hex or binary files with manifest metadata.",
|
|
166
|
-
"properties": {
|
|
167
|
-
"address": {
|
|
168
|
-
"type": "string",
|
|
169
|
-
"description": "Start address ($HHHH or decimal)",
|
|
170
|
-
"minLength": 1
|
|
171
|
-
},
|
|
172
|
-
"length": {
|
|
173
|
-
"type": "integer",
|
|
174
|
-
"description": "Number of bytes to dump",
|
|
175
|
-
"minimum": 1,
|
|
176
|
-
"maximum": 65536
|
|
177
|
-
},
|
|
178
|
-
"outputPath": {
|
|
179
|
-
"type": "string",
|
|
180
|
-
"description": "Destination file path",
|
|
181
|
-
"minLength": 1
|
|
182
|
-
},
|
|
183
|
-
"format": {
|
|
184
|
-
"type": [
|
|
185
|
-
"string",
|
|
186
|
-
"null"
|
|
187
|
-
],
|
|
188
|
-
"description": "Output format: hex|binary",
|
|
189
|
-
"enum": [
|
|
190
|
-
"hex",
|
|
191
|
-
"binary"
|
|
192
|
-
],
|
|
193
|
-
"default": "hex"
|
|
194
|
-
},
|
|
195
|
-
"chunkSize": {
|
|
196
|
-
"type": [
|
|
197
|
-
"integer",
|
|
198
|
-
"null"
|
|
199
|
-
],
|
|
200
|
-
"description": "Chunk size for reads",
|
|
201
|
-
"minimum": 1,
|
|
202
|
-
"maximum": 4096,
|
|
203
|
-
"default": 512
|
|
204
|
-
},
|
|
205
|
-
"pauseDuringRead": {
|
|
206
|
-
"type": [
|
|
207
|
-
"boolean",
|
|
208
|
-
"null"
|
|
209
|
-
],
|
|
210
|
-
"description": "Pause/resume around dump",
|
|
211
|
-
"default": true
|
|
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
396
|
"required": [
|
|
227
397
|
"address",
|
|
228
398
|
"length",
|
|
229
|
-
"outputPath"
|
|
230
|
-
"op"
|
|
399
|
+
"outputPath"
|
|
231
400
|
],
|
|
232
|
-
"
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
"
|
|
250
|
-
"
|
|
251
|
-
|
|
252
|
-
|
|
401
|
+
"optional": [
|
|
402
|
+
"format",
|
|
403
|
+
"chunkSize",
|
|
404
|
+
"pauseDuringRead",
|
|
405
|
+
"retries"
|
|
406
|
+
],
|
|
407
|
+
"inputSchema": {
|
|
408
|
+
"type": "object",
|
|
409
|
+
"description": "Dump a RAM range to hex or binary files with manifest metadata.",
|
|
410
|
+
"properties": {
|
|
411
|
+
"address": {
|
|
412
|
+
"type": "string",
|
|
413
|
+
"description": "Start address ($HHHH or decimal)",
|
|
414
|
+
"minLength": 1
|
|
415
|
+
},
|
|
416
|
+
"length": {
|
|
417
|
+
"type": "integer",
|
|
418
|
+
"description": "Number of bytes to dump",
|
|
419
|
+
"minimum": 1,
|
|
420
|
+
"maximum": 65536
|
|
421
|
+
},
|
|
422
|
+
"outputPath": {
|
|
253
423
|
"type": "string",
|
|
254
|
-
"description": "
|
|
424
|
+
"description": "Destination file path",
|
|
255
425
|
"minLength": 1
|
|
426
|
+
},
|
|
427
|
+
"format": {
|
|
428
|
+
"type": [
|
|
429
|
+
"string",
|
|
430
|
+
"null"
|
|
431
|
+
],
|
|
432
|
+
"description": "Output format: hex|binary",
|
|
433
|
+
"enum": [
|
|
434
|
+
"hex",
|
|
435
|
+
"binary"
|
|
436
|
+
],
|
|
437
|
+
"default": "hex"
|
|
438
|
+
},
|
|
439
|
+
"chunkSize": {
|
|
440
|
+
"type": [
|
|
441
|
+
"integer",
|
|
442
|
+
"null"
|
|
443
|
+
],
|
|
444
|
+
"description": "Chunk size for reads",
|
|
445
|
+
"minimum": 1,
|
|
446
|
+
"maximum": 4096,
|
|
447
|
+
"default": 512
|
|
448
|
+
},
|
|
449
|
+
"pauseDuringRead": {
|
|
450
|
+
"type": [
|
|
451
|
+
"boolean",
|
|
452
|
+
"null"
|
|
453
|
+
],
|
|
454
|
+
"description": "Pause/resume around dump",
|
|
455
|
+
"default": true
|
|
456
|
+
},
|
|
457
|
+
"retries": {
|
|
458
|
+
"type": [
|
|
459
|
+
"integer",
|
|
460
|
+
"null"
|
|
461
|
+
],
|
|
462
|
+
"description": "Retries per chunk on failure",
|
|
463
|
+
"minimum": 0,
|
|
464
|
+
"default": 1
|
|
465
|
+
},
|
|
466
|
+
"op": {
|
|
467
|
+
"const": "memory_dump"
|
|
256
468
|
}
|
|
257
469
|
},
|
|
258
|
-
"
|
|
259
|
-
"
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
470
|
+
"required": [
|
|
471
|
+
"address",
|
|
472
|
+
"length",
|
|
473
|
+
"outputPath",
|
|
474
|
+
"op"
|
|
475
|
+
],
|
|
476
|
+
"additionalProperties": false
|
|
477
|
+
}
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
"op": "fs_stats",
|
|
481
|
+
"description": "Walk the filesystem and aggregate counts/bytes by extension.",
|
|
482
|
+
"required": [],
|
|
483
|
+
"optional": [
|
|
484
|
+
"root",
|
|
485
|
+
"extensions",
|
|
486
|
+
"includeContainers",
|
|
487
|
+
"maxSamplesPerExtension"
|
|
488
|
+
],
|
|
489
|
+
"inputSchema": {
|
|
490
|
+
"type": "object",
|
|
491
|
+
"description": "Walk the filesystem and aggregate counts/bytes by extension.",
|
|
492
|
+
"properties": {
|
|
493
|
+
"root": {
|
|
494
|
+
"type": [
|
|
495
|
+
"string",
|
|
496
|
+
"null"
|
|
497
|
+
],
|
|
498
|
+
"description": "Root path to scan",
|
|
499
|
+
"minLength": 1,
|
|
500
|
+
"default": "/"
|
|
501
|
+
},
|
|
502
|
+
"extensions": {
|
|
503
|
+
"type": [
|
|
504
|
+
"array",
|
|
505
|
+
"null"
|
|
506
|
+
],
|
|
507
|
+
"items": {
|
|
508
|
+
"type": "string",
|
|
509
|
+
"description": "Limit to these extensions (without dot)",
|
|
510
|
+
"minLength": 1
|
|
511
|
+
}
|
|
512
|
+
},
|
|
513
|
+
"includeContainers": {
|
|
514
|
+
"type": [
|
|
515
|
+
"boolean",
|
|
516
|
+
"null"
|
|
517
|
+
],
|
|
518
|
+
"description": "Include container images (d64/d81/etc.) in extension stats",
|
|
519
|
+
"default": true
|
|
520
|
+
},
|
|
521
|
+
"maxSamplesPerExtension": {
|
|
522
|
+
"type": [
|
|
523
|
+
"integer",
|
|
524
|
+
"null"
|
|
525
|
+
],
|
|
526
|
+
"description": "Number of sample paths to keep per extension",
|
|
527
|
+
"minimum": 1,
|
|
528
|
+
"maximum": 10,
|
|
529
|
+
"default": 3
|
|
530
|
+
},
|
|
531
|
+
"op": {
|
|
532
|
+
"const": "fs_stats"
|
|
533
|
+
}
|
|
275
534
|
},
|
|
276
|
-
"
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
"required": [
|
|
282
|
-
"op"
|
|
283
|
-
]
|
|
535
|
+
"additionalProperties": false,
|
|
536
|
+
"required": [
|
|
537
|
+
"op"
|
|
538
|
+
]
|
|
539
|
+
}
|
|
284
540
|
},
|
|
285
541
|
{
|
|
286
|
-
"
|
|
542
|
+
"op": "firmware_health",
|
|
287
543
|
"description": "Run firmware readiness checks and report status metrics.",
|
|
288
|
-
"
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
544
|
+
"required": [],
|
|
545
|
+
"optional": [],
|
|
546
|
+
"inputSchema": {
|
|
547
|
+
"type": "object",
|
|
548
|
+
"description": "Run firmware readiness checks and report status metrics.",
|
|
549
|
+
"properties": {
|
|
550
|
+
"op": {
|
|
551
|
+
"const": "firmware_health"
|
|
552
|
+
}
|
|
553
|
+
},
|
|
554
|
+
"additionalProperties": false,
|
|
555
|
+
"required": [
|
|
556
|
+
"op"
|
|
557
|
+
]
|
|
558
|
+
}
|
|
297
559
|
}
|
|
298
|
-
]
|
|
299
|
-
"discriminator": {
|
|
300
|
-
"propertyName": "op"
|
|
301
|
-
}
|
|
560
|
+
]
|
|
302
561
|
}
|