c64bridge 0.7.4 → 0.8.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/README.md +14 -4
- package/.github/prompts/assembly-routine-session.prompt.md +9 -9
- package/.github/prompts/basic-program-session.prompt.md +11 -9
- package/.github/prompts/drive-management-session.prompt.md +9 -9
- package/.github/prompts/hello-world-session.prompt.md +17 -0
- package/.github/prompts/petscii-art-session.prompt.md +9 -9
- package/.github/prompts/play-classic-game.prompt.md +9 -9
- package/.github/prompts/pr-converge.prompt.md +13 -0
- package/.github/prompts/sid-music-session.prompt.md +9 -9
- package/AGENTS.md +59 -60
- package/README.md +550 -191
- package/data/assembly/assembly-spec.md +290 -1
- package/data/context/bootstrap.md +26 -2
- package/data/context/fast-paths.md +44 -0
- package/data/graphics/petscii-style-guide.md +6 -2
- package/data/graphics/sprite-charset-best-practices.md +5 -5
- package/dist/.tsbuildinfo +1 -1
- package/dist/c64Client.js +990 -26
- package/dist/config.js +5 -1
- package/dist/device.js +680 -57
- package/dist/diagnostics.js +371 -0
- package/dist/mcp/metadata.js +39 -0
- package/dist/mcp-server.js +170 -20
- package/dist/platform.js +10 -2
- package/dist/prompts/registry.js +166 -309
- package/dist/rag/init.js +37 -1
- package/dist/rag/knowledgeIndex.js +18 -6
- package/dist/rag/rateLimiter.js +2 -2
- package/dist/streamCapture.js +135 -0
- package/dist/tools/audio.js +3 -1
- package/dist/tools/debug.js +470 -0
- package/dist/tools/developer.js +10 -4
- package/dist/tools/graphics.js +183 -17
- package/dist/tools/machineControl.js +11 -5
- package/dist/tools/memory.js +19 -10
- package/dist/tools/meta/audio.js +240 -1
- package/dist/tools/meta/config.js +20 -28
- package/dist/tools/meta/configInventory.js +104 -0
- package/dist/tools/meta/diagnostics.js +45 -2
- package/dist/tools/meta/graphics.js +14 -6
- package/dist/tools/meta/index.js +1 -0
- package/dist/tools/meta/memory.js +20 -6
- package/dist/tools/meta/program.js +473 -0
- package/dist/tools/pollValidator.js +4 -2
- package/dist/tools/programRunners.js +8 -4
- package/dist/tools/registry/config.js +17 -0
- package/dist/tools/registry/disk.js +7 -0
- package/dist/tools/registry/drive.js +3 -0
- package/dist/tools/registry/graphics.js +111 -27
- package/dist/tools/registry/index.js +6 -0
- package/dist/tools/registry/memory.js +1 -0
- package/dist/tools/registry/platform.js +121 -0
- package/dist/tools/registry/program.js +26 -8
- package/dist/tools/registry/sound.js +96 -0
- package/dist/tools/registry/system.js +15 -2
- package/dist/tools/storage.js +1 -0
- package/dist/tools/streaming.js +1 -0
- package/dist/tools/types.js +38 -4
- package/dist/tools/vice.js +160 -0
- package/dist/vicBitmap.js +317 -0
- package/dist/vice/mockServer.js +439 -0
- package/dist/vice/process.js +310 -0
- package/dist/vice/readiness.js +18 -2
- package/dist/vice/viceClient.js +382 -22
- package/doc/developer.md +71 -25
- package/doc/img/backend-switch/hello-c64u.png +0 -0
- package/doc/img/backend-switch/hello-vice-and-c64u.png +0 -0
- package/doc/img/backend-switch/hello-vice.png +0 -0
- package/doc/img/backend-switch/metadata.json +50 -0
- package/doc/plans/vice-backend-switch/plan.md +486 -0
- package/doc/plans/vice-backend-switch-2/plan.md +48 -0
- package/doc/plans/vice-support/notes.md +1 -0
- package/doc/plans/vice-support/plan.md +5 -0
- package/doc/plans/vice-support/rollout.md +23 -17
- package/doc/reviews/vice-support-review.md +185 -0
- package/doc/troubleshooting-mcp.md +35 -6
- package/doc/vice/support-matrix.md +54 -0
- package/mcp/prompts.json +292 -0
- package/mcp/protocol-examples.json +46 -0
- package/mcp/resources.json +940 -0
- package/mcp/schemas/c64_config.schema.json +350 -0
- package/mcp/schemas/c64_debug.schema.json +380 -0
- package/mcp/schemas/c64_disk.schema.json +278 -0
- package/mcp/schemas/c64_drive.schema.json +120 -0
- package/mcp/schemas/c64_extract.schema.json +302 -0
- package/mcp/schemas/c64_graphics.schema.json +333 -0
- package/mcp/schemas/c64_memory.schema.json +155 -0
- package/mcp/schemas/c64_printer.schema.json +218 -0
- package/mcp/schemas/c64_program.schema.json +391 -0
- package/mcp/schemas/c64_rag.schema.json +67 -0
- package/mcp/schemas/c64_select_backend.schema.json +32 -0
- package/mcp/schemas/c64_sound.schema.json +644 -0
- package/mcp/schemas/c64_stream.schema.json +61 -0
- package/mcp/schemas/c64_system.schema.json +227 -0
- package/mcp/schemas/c64_vice.schema.json +63 -0
- package/mcp/server.json +15 -0
- package/mcp/tools.json +4517 -0
- package/mcp.json +90 -15
- package/package.json +11 -4
- package/scripts/capture-backend-switch-screenshots.mjs +276 -0
- package/scripts/generate-mcp-interface.ts +289 -0
- package/scripts/invoke-bun.mjs +67 -21
- package/scripts/mockC64Server.mjs +162 -6
- package/scripts/prepare-release.mjs +59 -2
- package/scripts/run-coverage.mjs +284 -0
- package/scripts/run-tests.mjs +95 -39
- package/scripts/run-tests.ts +378 -73
- package/scripts/update-readme.ts +147 -13
- package/server.json +94 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"description": "System operations available via the c64_system tool.",
|
|
4
|
+
"oneOf": [
|
|
5
|
+
{
|
|
6
|
+
"type": "object",
|
|
7
|
+
"description": "Pause the machine until resumed.",
|
|
8
|
+
"properties": {
|
|
9
|
+
"op": {
|
|
10
|
+
"const": "pause"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"additionalProperties": false,
|
|
14
|
+
"required": [
|
|
15
|
+
"op"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"type": "object",
|
|
20
|
+
"description": "Resume CPU execution after a pause.",
|
|
21
|
+
"properties": {
|
|
22
|
+
"op": {
|
|
23
|
+
"const": "resume"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"additionalProperties": false,
|
|
27
|
+
"required": [
|
|
28
|
+
"op"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"type": "object",
|
|
33
|
+
"description": "Issue a soft reset without cutting power.",
|
|
34
|
+
"properties": {
|
|
35
|
+
"op": {
|
|
36
|
+
"const": "reset"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"additionalProperties": false,
|
|
40
|
+
"required": [
|
|
41
|
+
"op"
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"type": "object",
|
|
46
|
+
"description": "Trigger a firmware reboot to recover from faults.",
|
|
47
|
+
"properties": {
|
|
48
|
+
"op": {
|
|
49
|
+
"const": "reboot"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"additionalProperties": false,
|
|
53
|
+
"required": [
|
|
54
|
+
"op"
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"type": "object",
|
|
59
|
+
"description": "Request a controlled shutdown via the Ultimate firmware.",
|
|
60
|
+
"properties": {
|
|
61
|
+
"op": {
|
|
62
|
+
"const": "poweroff"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"additionalProperties": false,
|
|
66
|
+
"required": [
|
|
67
|
+
"op"
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"type": "object",
|
|
72
|
+
"description": "Toggle the Ultimate menu button for navigation.",
|
|
73
|
+
"properties": {
|
|
74
|
+
"op": {
|
|
75
|
+
"const": "menu"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"additionalProperties": false,
|
|
79
|
+
"required": [
|
|
80
|
+
"op"
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"type": "object",
|
|
85
|
+
"description": "Start a named background task that runs on an interval.",
|
|
86
|
+
"properties": {
|
|
87
|
+
"name": {
|
|
88
|
+
"type": "string",
|
|
89
|
+
"description": "Unique task name",
|
|
90
|
+
"minLength": 1
|
|
91
|
+
},
|
|
92
|
+
"operation": {
|
|
93
|
+
"type": "string",
|
|
94
|
+
"description": "Operation name (e.g., read, read_screen)",
|
|
95
|
+
"minLength": 1
|
|
96
|
+
},
|
|
97
|
+
"arguments": {
|
|
98
|
+
"type": [
|
|
99
|
+
"object",
|
|
100
|
+
"null"
|
|
101
|
+
],
|
|
102
|
+
"description": "Operation-specific arguments",
|
|
103
|
+
"properties": {},
|
|
104
|
+
"additionalProperties": true,
|
|
105
|
+
"default": {}
|
|
106
|
+
},
|
|
107
|
+
"intervalMs": {
|
|
108
|
+
"type": [
|
|
109
|
+
"integer",
|
|
110
|
+
"null"
|
|
111
|
+
],
|
|
112
|
+
"description": "Interval milliseconds",
|
|
113
|
+
"minimum": 1,
|
|
114
|
+
"default": 1000
|
|
115
|
+
},
|
|
116
|
+
"maxIterations": {
|
|
117
|
+
"type": [
|
|
118
|
+
"integer",
|
|
119
|
+
"null"
|
|
120
|
+
],
|
|
121
|
+
"description": "Maximum number of iterations (omit for indefinite)",
|
|
122
|
+
"minimum": 1
|
|
123
|
+
},
|
|
124
|
+
"op": {
|
|
125
|
+
"const": "start_task"
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
"required": [
|
|
129
|
+
"name",
|
|
130
|
+
"operation",
|
|
131
|
+
"op"
|
|
132
|
+
],
|
|
133
|
+
"additionalProperties": false
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"type": "object",
|
|
137
|
+
"description": "Stop a specific background task and clear its timer.",
|
|
138
|
+
"properties": {
|
|
139
|
+
"name": {
|
|
140
|
+
"type": "string",
|
|
141
|
+
"description": "Task name",
|
|
142
|
+
"minLength": 1
|
|
143
|
+
},
|
|
144
|
+
"op": {
|
|
145
|
+
"const": "stop_task"
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
"required": [
|
|
149
|
+
"name",
|
|
150
|
+
"op"
|
|
151
|
+
],
|
|
152
|
+
"additionalProperties": false
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"type": "object",
|
|
156
|
+
"description": "Stop every running background task and persist state.",
|
|
157
|
+
"properties": {
|
|
158
|
+
"op": {
|
|
159
|
+
"const": "stop_all_tasks"
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
"additionalProperties": false,
|
|
163
|
+
"required": [
|
|
164
|
+
"op"
|
|
165
|
+
]
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"type": "object",
|
|
169
|
+
"description": "List known background tasks with status metadata.",
|
|
170
|
+
"properties": {
|
|
171
|
+
"op": {
|
|
172
|
+
"const": "list_tasks"
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
"additionalProperties": false,
|
|
176
|
+
"required": [
|
|
177
|
+
"op"
|
|
178
|
+
]
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"type": "object",
|
|
182
|
+
"description": "Summarize diagnostics spans and tool latencies from the current or latest MCP session.",
|
|
183
|
+
"properties": {
|
|
184
|
+
"scope": {
|
|
185
|
+
"type": [
|
|
186
|
+
"string",
|
|
187
|
+
"null"
|
|
188
|
+
],
|
|
189
|
+
"description": "Which diagnostics session to summarize.",
|
|
190
|
+
"enum": [
|
|
191
|
+
"current",
|
|
192
|
+
"latest"
|
|
193
|
+
],
|
|
194
|
+
"default": "current"
|
|
195
|
+
},
|
|
196
|
+
"includeTimeline": {
|
|
197
|
+
"type": [
|
|
198
|
+
"boolean",
|
|
199
|
+
"null"
|
|
200
|
+
],
|
|
201
|
+
"description": "Include the tail of the event timeline.",
|
|
202
|
+
"default": true
|
|
203
|
+
},
|
|
204
|
+
"maxEntries": {
|
|
205
|
+
"type": [
|
|
206
|
+
"integer",
|
|
207
|
+
"null"
|
|
208
|
+
],
|
|
209
|
+
"description": "Maximum number of span and timeline entries to return.",
|
|
210
|
+
"minimum": 1,
|
|
211
|
+
"maximum": 200,
|
|
212
|
+
"default": 25
|
|
213
|
+
},
|
|
214
|
+
"op": {
|
|
215
|
+
"const": "performance_report"
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
"additionalProperties": false,
|
|
219
|
+
"required": [
|
|
220
|
+
"op"
|
|
221
|
+
]
|
|
222
|
+
}
|
|
223
|
+
],
|
|
224
|
+
"discriminator": {
|
|
225
|
+
"propertyName": "op"
|
|
226
|
+
}
|
|
227
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "object",
|
|
3
|
+
"description": "VICE emulator operations available via the c64_vice tool.",
|
|
4
|
+
"oneOf": [
|
|
5
|
+
{
|
|
6
|
+
"type": "object",
|
|
7
|
+
"description": "Read a VICE configuration resource (safe prefixes only).",
|
|
8
|
+
"properties": {
|
|
9
|
+
"op": {
|
|
10
|
+
"const": "resource_get"
|
|
11
|
+
},
|
|
12
|
+
"name": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"description": "VICE resource name (example: SidEngine, C64Model).",
|
|
15
|
+
"minLength": 1,
|
|
16
|
+
"maxLength": 64,
|
|
17
|
+
"pattern": "^[A-Z][A-Za-z0-9_.-]{0,63}$"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"required": [
|
|
21
|
+
"op",
|
|
22
|
+
"name"
|
|
23
|
+
],
|
|
24
|
+
"additionalProperties": false
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"type": "object",
|
|
28
|
+
"description": "Write a VICE configuration resource (safe prefixes only).",
|
|
29
|
+
"properties": {
|
|
30
|
+
"op": {
|
|
31
|
+
"const": "resource_set"
|
|
32
|
+
},
|
|
33
|
+
"name": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"description": "VICE resource name (example: SidEngine, C64Model).",
|
|
36
|
+
"minLength": 1,
|
|
37
|
+
"maxLength": 64,
|
|
38
|
+
"pattern": "^[A-Z][A-Za-z0-9_.-]{0,63}$"
|
|
39
|
+
},
|
|
40
|
+
"value": {
|
|
41
|
+
"description": "VICE resource value (string or integer).",
|
|
42
|
+
"oneOf": [
|
|
43
|
+
{
|
|
44
|
+
"type": "string"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"type": "integer"
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"required": [
|
|
53
|
+
"op",
|
|
54
|
+
"name",
|
|
55
|
+
"value"
|
|
56
|
+
],
|
|
57
|
+
"additionalProperties": false
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"discriminator": {
|
|
61
|
+
"propertyName": "op"
|
|
62
|
+
}
|
|
63
|
+
}
|
package/mcp/server.json
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "c64bridge",
|
|
3
|
+
"version": "0.8.1",
|
|
4
|
+
"description": "Stdio-based Model Context Protocol (MCP) server that bridges Commodore 64 Ultimate hardware with AI agents.",
|
|
5
|
+
"transports": [
|
|
6
|
+
"stdio"
|
|
7
|
+
],
|
|
8
|
+
"capabilities": {
|
|
9
|
+
"prompts": {},
|
|
10
|
+
"resources": {},
|
|
11
|
+
"tools": {}
|
|
12
|
+
},
|
|
13
|
+
"repository": "https://github.com/chrisgleissner/c64bridge",
|
|
14
|
+
"license": "GPL-2.0-only"
|
|
15
|
+
}
|