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
package/dist/tools/audio.js
CHANGED
|
@@ -397,9 +397,9 @@ export const audioModule = defineToolModule({
|
|
|
397
397
|
domain: "audio",
|
|
398
398
|
summary: "SID composition, playback, and audio analysis workflows.",
|
|
399
399
|
resources: [
|
|
400
|
-
"c64://
|
|
401
|
-
"c64://
|
|
402
|
-
"c64://
|
|
400
|
+
"c64://sound/sid/spec",
|
|
401
|
+
"c64://sound/sidwave/spec",
|
|
402
|
+
"c64://sound/sid/file-format",
|
|
403
403
|
],
|
|
404
404
|
prompts: ["sid-music"],
|
|
405
405
|
defaultTags: ["sid", "audio"],
|
|
@@ -411,7 +411,7 @@ export const audioModule = defineToolModule({
|
|
|
411
411
|
tools: [
|
|
412
412
|
{
|
|
413
413
|
name: "sid_volume",
|
|
414
|
-
description: "Set the SID master volume register at $D418. See c64://
|
|
414
|
+
description: "Set the SID master volume register at $D418. See c64://sound/sid/spec.",
|
|
415
415
|
summary: "Clamps the requested volume and writes it to the SID master volume register.",
|
|
416
416
|
inputSchema: sidVolumeArgsSchema.jsonSchema,
|
|
417
417
|
tags: ["sid", "control"],
|
|
@@ -496,7 +496,7 @@ export const audioModule = defineToolModule({
|
|
|
496
496
|
},
|
|
497
497
|
{
|
|
498
498
|
name: "sid_note_on",
|
|
499
|
-
description: "Trigger a SID voice with configurable waveform, pulse width, and ADSR envelope. See c64://
|
|
499
|
+
description: "Trigger a SID voice with configurable waveform, pulse width, and ADSR envelope. See c64://sound/sid/spec.",
|
|
500
500
|
summary: "Resolves note or frequency, clamps parameters, and writes the SID voice registers.",
|
|
501
501
|
inputSchema: sidNoteOnArgsSchema.jsonSchema,
|
|
502
502
|
tags: ["sid", "control", "music", "pal-ntsc"],
|
|
@@ -700,7 +700,7 @@ export const audioModule = defineToolModule({
|
|
|
700
700
|
description: "Play a SID file stored on the Ultimate filesystem via the firmware player.",
|
|
701
701
|
summary: "Instructs the SID player to load the given file and optional song number.",
|
|
702
702
|
inputSchema: sidplayFileArgsSchema.jsonSchema,
|
|
703
|
-
relatedResources: ["c64://
|
|
703
|
+
relatedResources: ["c64://sound/sid/spec"],
|
|
704
704
|
tags: ["sid", "playback"],
|
|
705
705
|
prerequisites: ["drives_list"],
|
|
706
706
|
examples: [
|
|
@@ -740,7 +740,7 @@ export const audioModule = defineToolModule({
|
|
|
740
740
|
description: "Play a MOD tracker module stored on the Ultimate filesystem.",
|
|
741
741
|
summary: "Sends the module to the Ultimate SID player and starts playback.",
|
|
742
742
|
inputSchema: modplayFileArgsSchema.jsonSchema,
|
|
743
|
-
relatedResources: ["c64://
|
|
743
|
+
relatedResources: ["c64://sound/sid/spec"],
|
|
744
744
|
tags: ["sid", "playback"],
|
|
745
745
|
prerequisites: ["drives_list"],
|
|
746
746
|
examples: [
|
|
@@ -780,7 +780,7 @@ export const audioModule = defineToolModule({
|
|
|
780
780
|
summary: "Builds a note timeline from semitone offsets and triggers SID playback asynchronously.",
|
|
781
781
|
lifecycle: "fire-and-forget",
|
|
782
782
|
inputSchema: musicGenerateArgsSchema.jsonSchema,
|
|
783
|
-
relatedResources: ["c64://
|
|
783
|
+
relatedResources: ["c64://sound/sid/spec"],
|
|
784
784
|
relatedPrompts: ["sid-music"],
|
|
785
785
|
tags: ["sid", "music", "generator", "pal-ntsc"],
|
|
786
786
|
prerequisites: ["sid_volume"],
|
|
@@ -862,7 +862,7 @@ export const audioModule = defineToolModule({
|
|
|
862
862
|
description: "Compile a SIDWAVE composition to PRG or SID and optionally play it immediately.",
|
|
863
863
|
summary: "Parses SIDWAVE/CPG input, compiles to a PRG, and plays via PRG or SID attachment.",
|
|
864
864
|
inputSchema: musicCompileArgsSchema.jsonSchema,
|
|
865
|
-
relatedResources: ["c64://
|
|
865
|
+
relatedResources: ["c64://sound/sid/spec", "c64://sound/sidwave/spec", "c64://sound/sid/file-format"],
|
|
866
866
|
relatedPrompts: ["sid-music"],
|
|
867
867
|
tags: ["sid", "music", "compiler"],
|
|
868
868
|
prerequisites: [],
|
|
@@ -945,7 +945,7 @@ export const audioModule = defineToolModule({
|
|
|
945
945
|
description: "Record audio from the default input device and analyze SID playback characteristics.",
|
|
946
946
|
summary: "Captures PCM data, extracts notes, tempo, and deviation metrics for SID verification workflows.",
|
|
947
947
|
inputSchema: recordAndAnalyzeArgsSchema.jsonSchema,
|
|
948
|
-
relatedResources: ["c64://
|
|
948
|
+
relatedResources: ["c64://sound/sid/spec", "c64://sound/sid/file-format"],
|
|
949
949
|
relatedPrompts: ["sid-music"],
|
|
950
950
|
tags: ["sid", "analysis"],
|
|
951
951
|
prerequisites: [],
|
|
@@ -985,7 +985,7 @@ export const audioModule = defineToolModule({
|
|
|
985
985
|
description: "Automatically analyze SID playback when the user requests verification feedback.",
|
|
986
986
|
summary: "Detects verification intent in natural language, records a short clip, and returns musical feedback.",
|
|
987
987
|
inputSchema: analyzeAudioArgsSchema.jsonSchema,
|
|
988
|
-
relatedResources: ["c64://
|
|
988
|
+
relatedResources: ["c64://sound/sid/spec", "c64://sound/sid/file-format"],
|
|
989
989
|
relatedPrompts: ["sid-music"],
|
|
990
990
|
tags: ["sid", "analysis"],
|
|
991
991
|
prerequisites: [],
|
package/dist/tools/debug.js
CHANGED
|
@@ -350,7 +350,7 @@ const debugOperationDispatcher = createOperationDispatcher("c64_debug", debugOpe
|
|
|
350
350
|
export const debugModuleGroup = defineToolModule({
|
|
351
351
|
domain: "debug",
|
|
352
352
|
summary: "VICE Binary Monitor debugger operations (breakpoints, registers, stepping).",
|
|
353
|
-
resources: ["c64://
|
|
353
|
+
resources: ["c64://assembly/6510-spec", "c64://memory/map"],
|
|
354
354
|
prompts: ["assembly-program", "memory-debug"],
|
|
355
355
|
defaultTags: ["debug", "vice"],
|
|
356
356
|
workflowHints: [
|
package/dist/tools/developer.js
CHANGED
|
@@ -123,8 +123,8 @@ export const developerModule = defineToolModule({
|
|
|
123
123
|
domain: "developer",
|
|
124
124
|
summary: "Configuration management, diagnostics, and helper utilities for advanced workflows.",
|
|
125
125
|
resources: [
|
|
126
|
-
"c64://
|
|
127
|
-
"c64://
|
|
126
|
+
"c64://guide/bootstrap",
|
|
127
|
+
"c64://guide/index",
|
|
128
128
|
],
|
|
129
129
|
prompts: ["memory-debug"],
|
|
130
130
|
defaultTags: ["developer", "config", "debug"],
|
|
@@ -138,7 +138,7 @@ export const developerModule = defineToolModule({
|
|
|
138
138
|
description: "List configuration categories available on the Ultimate firmware.",
|
|
139
139
|
summary: "Fetches the configuration tree and returns firmware-reported categories.",
|
|
140
140
|
inputSchema: noArgsSchema.jsonSchema,
|
|
141
|
-
relatedResources: ["c64://
|
|
141
|
+
relatedResources: ["c64://guide/bootstrap"],
|
|
142
142
|
tags: ["config", "list"],
|
|
143
143
|
examples: [
|
|
144
144
|
{ name: "List configs", description: "Enumerate configuration categories", arguments: {} },
|
|
@@ -173,7 +173,7 @@ export const developerModule = defineToolModule({
|
|
|
173
173
|
description: "Read a configuration category or specific item.",
|
|
174
174
|
summary: "Returns firmware configuration data for the selected category (and item).",
|
|
175
175
|
inputSchema: configGetArgsSchema.jsonSchema,
|
|
176
|
-
relatedResources: ["c64://
|
|
176
|
+
relatedResources: ["c64://guide/bootstrap"],
|
|
177
177
|
tags: ["config", "read"],
|
|
178
178
|
examples: [
|
|
179
179
|
{ name: "Get audio config", description: "Read audio category", arguments: { category: "Audio" } },
|
|
@@ -210,7 +210,7 @@ export const developerModule = defineToolModule({
|
|
|
210
210
|
description: "Set a configuration value within a category.",
|
|
211
211
|
summary: "Writes a primitive value to a specific configuration item via firmware APIs.",
|
|
212
212
|
inputSchema: configSetArgsSchema.jsonSchema,
|
|
213
|
-
relatedResources: ["c64://
|
|
213
|
+
relatedResources: ["c64://guide/bootstrap"],
|
|
214
214
|
tags: ["config", "write"],
|
|
215
215
|
examples: [
|
|
216
216
|
{ name: "Set volume", description: "Adjust audio volume", arguments: { category: "Audio", item: "Volume", value: 75 } },
|
|
@@ -254,7 +254,7 @@ export const developerModule = defineToolModule({
|
|
|
254
254
|
description: "Apply multiple configuration changes in a single request.",
|
|
255
255
|
summary: "Sends a nested object of category/item values to the firmware batch endpoint.",
|
|
256
256
|
inputSchema: configBatchSchema.jsonSchema,
|
|
257
|
-
relatedResources: ["c64://
|
|
257
|
+
relatedResources: ["c64://guide/bootstrap"],
|
|
258
258
|
tags: ["config", "write"],
|
|
259
259
|
examples: [
|
|
260
260
|
{ name: "Batch update", description: "Update multiple settings", arguments: { Audio: { Volume: 80, DACMode: "stereo" } } },
|
|
@@ -298,7 +298,7 @@ export const developerModule = defineToolModule({
|
|
|
298
298
|
description: "Load configuration settings from flash storage.",
|
|
299
299
|
summary: "Restores the firmware configuration by reading the persisted flash snapshot.",
|
|
300
300
|
inputSchema: noArgsSchema.jsonSchema,
|
|
301
|
-
relatedResources: ["c64://
|
|
301
|
+
relatedResources: ["c64://guide/bootstrap"],
|
|
302
302
|
tags: ["config", "flash"],
|
|
303
303
|
examples: [
|
|
304
304
|
{ name: "Load from flash", description: "Restore saved configuration", arguments: {} },
|
|
@@ -334,7 +334,7 @@ export const developerModule = defineToolModule({
|
|
|
334
334
|
description: "Persist current configuration settings to flash storage.",
|
|
335
335
|
summary: "Saves the active configuration snapshot so it survives power cycles.",
|
|
336
336
|
inputSchema: noArgsSchema.jsonSchema,
|
|
337
|
-
relatedResources: ["c64://
|
|
337
|
+
relatedResources: ["c64://guide/bootstrap"],
|
|
338
338
|
tags: ["config", "flash"],
|
|
339
339
|
examples: [
|
|
340
340
|
{ name: "Save to flash", description: "Persist current config", arguments: {} },
|
|
@@ -370,7 +370,7 @@ export const developerModule = defineToolModule({
|
|
|
370
370
|
description: "Reset configuration categories to their factory defaults.",
|
|
371
371
|
summary: "Instructs the firmware to discard overrides and restore default configuration values.",
|
|
372
372
|
inputSchema: noArgsSchema.jsonSchema,
|
|
373
|
-
relatedResources: ["c64://
|
|
373
|
+
relatedResources: ["c64://guide/bootstrap"],
|
|
374
374
|
tags: ["config", "reset"],
|
|
375
375
|
examples: [
|
|
376
376
|
{ name: "Reset config", description: "Restore factory defaults", arguments: {} },
|
|
@@ -407,7 +407,7 @@ export const developerModule = defineToolModule({
|
|
|
407
407
|
summary: "Calls the firmware version endpoint (Ultimate) or returns emulator info (VICE).",
|
|
408
408
|
supportedPlatforms: ["c64u", "vice"],
|
|
409
409
|
inputSchema: noArgsSchema.jsonSchema,
|
|
410
|
-
relatedResources: ["c64://
|
|
410
|
+
relatedResources: ["c64://guide/bootstrap"],
|
|
411
411
|
tags: ["diagnostics", "version"],
|
|
412
412
|
examples: [
|
|
413
413
|
{ name: "Get version", description: "Check firmware version", arguments: {} },
|
|
@@ -439,7 +439,7 @@ export const developerModule = defineToolModule({
|
|
|
439
439
|
summary: "Returns the diagnostics payload reported by the firmware (Ultimate) or emulator (VICE).",
|
|
440
440
|
supportedPlatforms: ["c64u", "vice"],
|
|
441
441
|
inputSchema: noArgsSchema.jsonSchema,
|
|
442
|
-
relatedResources: ["c64://
|
|
442
|
+
relatedResources: ["c64://guide/bootstrap"],
|
|
443
443
|
tags: ["diagnostics", "info"],
|
|
444
444
|
examples: [
|
|
445
445
|
{ name: "Get hardware info", description: "Query hardware status", arguments: {} },
|
|
@@ -470,7 +470,7 @@ export const developerModule = defineToolModule({
|
|
|
470
470
|
description: "Read the Ultimate debug register ($D7FF).",
|
|
471
471
|
summary: "Returns the current hex value stored in the debug register.",
|
|
472
472
|
inputSchema: noArgsSchema.jsonSchema,
|
|
473
|
-
relatedResources: ["c64://
|
|
473
|
+
relatedResources: ["c64://guide/bootstrap"],
|
|
474
474
|
tags: ["debug"],
|
|
475
475
|
examples: [
|
|
476
476
|
{ name: "Read debug register", description: "Check $D7FF value", arguments: {} },
|
|
@@ -509,7 +509,7 @@ export const developerModule = defineToolModule({
|
|
|
509
509
|
description: "Write a value into the Ultimate debug register ($D7FF).",
|
|
510
510
|
summary: "Validates the hex input and forwards it to the firmware.",
|
|
511
511
|
inputSchema: debugWriteArgsSchema.jsonSchema,
|
|
512
|
-
relatedResources: ["c64://
|
|
512
|
+
relatedResources: ["c64://guide/bootstrap"],
|
|
513
513
|
tags: ["debug"],
|
|
514
514
|
examples: [
|
|
515
515
|
{ name: "Write debug register", description: "Set $D7FF to $42", arguments: { value: "42" } },
|
package/dist/tools/graphics.js
CHANGED
|
@@ -546,9 +546,9 @@ export const graphicsModule = defineToolModule({
|
|
|
546
546
|
domain: "graphics",
|
|
547
547
|
summary: "PETSCII art, sprite workflows, and VIC-II graphics helpers.",
|
|
548
548
|
resources: [
|
|
549
|
-
"c64://
|
|
550
|
-
"c64://
|
|
551
|
-
"c64://
|
|
549
|
+
"c64://graphics/vic/spec",
|
|
550
|
+
"c64://assembly/6510-spec",
|
|
551
|
+
"c64://basic/spec",
|
|
552
552
|
],
|
|
553
553
|
prompts: ["graphics-demo", "basic-program", "assembly-program"],
|
|
554
554
|
defaultTags: ["graphics", "vic"],
|
|
@@ -559,10 +559,10 @@ export const graphicsModule = defineToolModule({
|
|
|
559
559
|
tools: [
|
|
560
560
|
{
|
|
561
561
|
name: "render_sprite",
|
|
562
|
-
description: "Display supplied 63-byte sprite data at the requested position and colour by writing memory and patching VIC-II registers directly. See c64://
|
|
562
|
+
description: "Display supplied 63-byte sprite data at the requested position and colour by writing memory and patching VIC-II registers directly. See c64://graphics/vic/spec for registers.",
|
|
563
563
|
summary: "Writes sprite data into RAM, updates the sprite pointer table, and patches VIC-II registers to render a sprite preview.",
|
|
564
564
|
inputSchema: spriteArgsSchema.jsonSchema,
|
|
565
|
-
relatedResources: ["c64://
|
|
565
|
+
relatedResources: ["c64://graphics/vic/spec"],
|
|
566
566
|
relatedPrompts: ["graphics-demo", "assembly-program"],
|
|
567
567
|
tags: ["sprite", "assembly", "pal-ntsc"],
|
|
568
568
|
prerequisites: ["upload_run_asm"],
|
|
@@ -587,7 +587,7 @@ export const graphicsModule = defineToolModule({
|
|
|
587
587
|
description: "Import an image file, convert it to a VIC-II bitmap, write it into RAM, and display it.",
|
|
588
588
|
summary: "Decodes a source image, quantizes it into C64 colours, writes bitmap/screen/color RAM, and displays it in hires or multicolor bitmap mode.",
|
|
589
589
|
inputSchema: generateBitmapArgsSchema.jsonSchema,
|
|
590
|
-
relatedResources: ["c64://
|
|
590
|
+
relatedResources: ["c64://graphics/vic/spec", "c64://guide/bootstrap"],
|
|
591
591
|
relatedPrompts: ["graphics-demo"],
|
|
592
592
|
tags: ["bitmap", "vic", "image"],
|
|
593
593
|
workflowHints: [
|
|
@@ -601,10 +601,10 @@ export const graphicsModule = defineToolModule({
|
|
|
601
601
|
},
|
|
602
602
|
{
|
|
603
603
|
name: "render_petscii_text",
|
|
604
|
-
description: "Display PETSCII text with optional border and background colours. See c64://
|
|
604
|
+
description: "Display PETSCII text with optional border and background colours. See c64://basic/spec.",
|
|
605
605
|
summary: "Generates a BASIC program that clears the screen, sets colours, and prints text.",
|
|
606
606
|
inputSchema: renderPetsciiScreenArgsSchema.jsonSchema,
|
|
607
|
-
relatedResources: ["c64://
|
|
607
|
+
relatedResources: ["c64://basic/spec", "c64://guide/bootstrap"],
|
|
608
608
|
relatedPrompts: ["basic-program", "graphics-demo"],
|
|
609
609
|
tags: ["basic", "screen"],
|
|
610
610
|
prerequisites: ["upload_run_basic"],
|
|
@@ -626,10 +626,10 @@ export const graphicsModule = defineToolModule({
|
|
|
626
626
|
},
|
|
627
627
|
{
|
|
628
628
|
name: "render_petscii_art",
|
|
629
|
-
description: "Create PETSCII art from prompts, text, or bitmap input, and optionally display it on the C64. Returns metadata including PETSCII codes and glyphs. See c64://
|
|
629
|
+
description: "Create PETSCII art from prompts, text, or bitmap input, and optionally display it on the C64. Returns metadata including PETSCII codes and glyphs. See c64://basic/spec, c64://graphics/vic/spec, and c64://graphics/character-set.",
|
|
630
630
|
summary: "Synthesises PETSCII art, generates a BASIC program with preview metadata (petsciiCodes, glyphs, dimensions), and uploads it unless dry-run is requested.",
|
|
631
631
|
inputSchema: petsciiImageArgsSchema.jsonSchema,
|
|
632
|
-
relatedResources: ["c64://
|
|
632
|
+
relatedResources: ["c64://basic/spec", "c64://graphics/vic/spec", "c64://graphics/character-set"],
|
|
633
633
|
relatedPrompts: ["graphics-demo", "basic-program"],
|
|
634
634
|
tags: ["petscii", "basic", "pal-ntsc"],
|
|
635
635
|
prerequisites: ["upload_run_basic"],
|
|
@@ -33,7 +33,7 @@ const menuButtonArgsSchema = createNoArgsSchema("No arguments required to toggle
|
|
|
33
33
|
export const machineControlModule = defineToolModule({
|
|
34
34
|
domain: "machine",
|
|
35
35
|
summary: "Power, reset, pause/resume, and diagnostic controls for the C64 and Ultimate hardware.",
|
|
36
|
-
resources: ["c64://
|
|
36
|
+
resources: ["c64://guide/bootstrap"],
|
|
37
37
|
prompts: ["memory-debug"],
|
|
38
38
|
defaultTags: ["machine", "control"],
|
|
39
39
|
workflowHints: [
|
|
@@ -43,7 +43,7 @@ export const machineControlModule = defineToolModule({
|
|
|
43
43
|
tools: [
|
|
44
44
|
{
|
|
45
45
|
name: "reset_c64",
|
|
46
|
-
description: "Reset the C64 via Ultimate firmware. Review c64://
|
|
46
|
+
description: "Reset the C64 via Ultimate firmware. Review c64://guide/bootstrap safety rules.",
|
|
47
47
|
summary: "Issues a soft reset, equivalent to power cycling without cutting power.",
|
|
48
48
|
inputSchema: resetArgsSchema.jsonSchema,
|
|
49
49
|
tags: ["reset"],
|
|
@@ -81,7 +81,7 @@ export const machineControlModule = defineToolModule({
|
|
|
81
81
|
},
|
|
82
82
|
{
|
|
83
83
|
name: "reboot_c64",
|
|
84
|
-
description: "Reboot the Ultimate firmware and C64. See c64://
|
|
84
|
+
description: "Reboot the Ultimate firmware and C64. See c64://guide/bootstrap.",
|
|
85
85
|
summary: "Triggers a firmware reboot, useful after configuration changes.",
|
|
86
86
|
inputSchema: rebootArgsSchema.jsonSchema,
|
|
87
87
|
tags: ["reboot"],
|
|
@@ -119,7 +119,7 @@ export const machineControlModule = defineToolModule({
|
|
|
119
119
|
},
|
|
120
120
|
{
|
|
121
121
|
name: "pause",
|
|
122
|
-
description: "Pause the machine on Ultimate hardware. See memory safety checklist in c64://
|
|
122
|
+
description: "Pause the machine on Ultimate hardware. See memory safety checklist in c64://guide/bootstrap.",
|
|
123
123
|
summary: "Suspends CPU execution on Ultimate hardware until resumed.",
|
|
124
124
|
inputSchema: pauseArgsSchema.jsonSchema,
|
|
125
125
|
tags: ["pause"],
|
|
@@ -195,7 +195,7 @@ export const machineControlModule = defineToolModule({
|
|
|
195
195
|
},
|
|
196
196
|
{
|
|
197
197
|
name: "poweroff",
|
|
198
|
-
description: "Power off the machine via Ultimate firmware. See safety notes in c64://
|
|
198
|
+
description: "Power off the machine via Ultimate firmware. See safety notes in c64://guide/bootstrap.",
|
|
199
199
|
summary: "Attempts a controlled shutdown through the Ultimate control interface.",
|
|
200
200
|
inputSchema: poweroffArgsSchema.jsonSchema,
|
|
201
201
|
tags: ["power"],
|
package/dist/tools/memory.js
CHANGED
|
@@ -171,13 +171,21 @@ async function executeReadMemory(rawArgs, ctx) {
|
|
|
171
171
|
const detailRecord = toRecord(result.details) ?? {};
|
|
172
172
|
const resolvedAddress = resolveAddressLabel(detailRecord, parsed.address);
|
|
173
173
|
const resolvedLength = resolveLength(detailRecord) ?? parsed.length;
|
|
174
|
-
|
|
174
|
+
const data = {
|
|
175
175
|
success: true,
|
|
176
176
|
address: resolvedAddress,
|
|
177
177
|
length: resolvedLength,
|
|
178
178
|
hexData: result.data ?? null,
|
|
179
179
|
details: detailRecord,
|
|
180
|
-
}
|
|
180
|
+
};
|
|
181
|
+
const base = textResult(`Read ${resolvedLength} bytes starting at ${resolvedAddress}.`, data);
|
|
182
|
+
return {
|
|
183
|
+
...base,
|
|
184
|
+
structuredContent: {
|
|
185
|
+
type: "json",
|
|
186
|
+
data,
|
|
187
|
+
},
|
|
188
|
+
};
|
|
181
189
|
}
|
|
182
190
|
catch (error) {
|
|
183
191
|
if (error instanceof ToolError) {
|
|
@@ -354,9 +362,9 @@ export const memoryModule = defineToolModule({
|
|
|
354
362
|
summary: "Screen, main memory, and low-level inspection utilities.",
|
|
355
363
|
supportedPlatforms: ["c64u", "vice"],
|
|
356
364
|
resources: [
|
|
357
|
-
"c64://
|
|
358
|
-
"c64://
|
|
359
|
-
"c64://
|
|
365
|
+
"c64://guide/bootstrap",
|
|
366
|
+
"c64://basic/spec",
|
|
367
|
+
"c64://assembly/6510-spec",
|
|
360
368
|
],
|
|
361
369
|
prompts: ["memory-debug", "basic-program", "assembly-program"],
|
|
362
370
|
defaultTags: ["memory", "debug"],
|
|
@@ -367,10 +375,10 @@ export const memoryModule = defineToolModule({
|
|
|
367
375
|
tools: [
|
|
368
376
|
{
|
|
369
377
|
name: "read_screen",
|
|
370
|
-
description: "Read the current text screen (40x25) and return its ASCII representation. For PETSCII details, see c64://
|
|
378
|
+
description: "Read the current text screen (40x25) and return its ASCII representation. For PETSCII details, see c64://basic/spec.",
|
|
371
379
|
summary: "Fetches screen RAM, converts from PETSCII, and returns the printable output.",
|
|
372
380
|
inputSchema: readScreenArgsSchema.jsonSchema,
|
|
373
|
-
relatedResources: ["c64://
|
|
381
|
+
relatedResources: ["c64://guide/bootstrap", "c64://basic/spec"],
|
|
374
382
|
relatedPrompts: ["memory-debug", "basic-program", "assembly-program"],
|
|
375
383
|
tags: ["screen", "memory"],
|
|
376
384
|
prerequisites: [],
|
|
@@ -390,10 +398,10 @@ export const memoryModule = defineToolModule({
|
|
|
390
398
|
},
|
|
391
399
|
{
|
|
392
400
|
name: "read",
|
|
393
|
-
description: "Read a range of bytes from main memory and return the data as hexadecimal. Consult c64://
|
|
401
|
+
description: "Read a range of bytes from main memory and return the data as hexadecimal. Consult c64://assembly/6510-spec and docs index.",
|
|
394
402
|
summary: "Resolves symbols, reads memory, and returns a hex dump with addressing metadata.",
|
|
395
403
|
inputSchema: readMemoryArgsSchema.jsonSchema,
|
|
396
|
-
relatedResources: ["c64://
|
|
404
|
+
relatedResources: ["c64://guide/bootstrap", "c64://assembly/6510-spec", "c64://guide/index"],
|
|
397
405
|
relatedPrompts: ["memory-debug", "assembly-program"],
|
|
398
406
|
tags: ["memory", "hex"],
|
|
399
407
|
prerequisites: [],
|
|
@@ -414,10 +422,10 @@ export const memoryModule = defineToolModule({
|
|
|
414
422
|
},
|
|
415
423
|
{
|
|
416
424
|
name: "write",
|
|
417
|
-
description: "Write a hexadecimal byte sequence into main memory at the specified address. See c64://
|
|
425
|
+
description: "Write a hexadecimal byte sequence into main memory at the specified address. See c64://guide/bootstrap for safety rules.",
|
|
418
426
|
summary: "Resolves symbols, validates hex data, and writes bytes to RAM.",
|
|
419
427
|
inputSchema: writeMemoryArgsSchema.jsonSchema,
|
|
420
|
-
relatedResources: ["c64://
|
|
428
|
+
relatedResources: ["c64://guide/bootstrap", "c64://assembly/6510-spec", "c64://guide/index"],
|
|
421
429
|
relatedPrompts: ["memory-debug", "assembly-program"],
|
|
422
430
|
tags: ["memory", "hex", "write"],
|
|
423
431
|
prerequisites: ["read"],
|
package/dist/tools/meta/index.js
CHANGED
|
@@ -28,7 +28,7 @@ const allTools = [
|
|
|
28
28
|
export const metaModule = defineToolModule({
|
|
29
29
|
domain: "meta",
|
|
30
30
|
summary: "High-level meta tools that orchestrate multiple MCP actions.",
|
|
31
|
-
resources: ["c64://
|
|
31
|
+
resources: ["c64://guide/bootstrap", "c64://assembly/6510-spec"],
|
|
32
32
|
defaultTags: ["meta", "orchestration", "experimental"],
|
|
33
33
|
supportedPlatforms: ["c64u", "vice"],
|
|
34
34
|
workflowHints: [
|
package/dist/tools/printer.js
CHANGED
|
@@ -227,13 +227,12 @@ export const printerModule = defineToolModule({
|
|
|
227
227
|
domain: "printer",
|
|
228
228
|
summary: "Printer workflow helpers for Commodore MPS and Epson FX devices, including prompt templates.",
|
|
229
229
|
resources: [
|
|
230
|
-
"c64://
|
|
231
|
-
"c64://
|
|
232
|
-
"c64://
|
|
233
|
-
"c64://
|
|
234
|
-
"c64://
|
|
235
|
-
"c64://
|
|
236
|
-
"c64://docs/printer/prompts",
|
|
230
|
+
"c64://printer/spec",
|
|
231
|
+
"c64://printer/commodore/text",
|
|
232
|
+
"c64://printer/commodore/bitmap",
|
|
233
|
+
"c64://printer/epson/text",
|
|
234
|
+
"c64://printer/epson/bitmap",
|
|
235
|
+
"c64://printer/prompt-guide",
|
|
237
236
|
],
|
|
238
237
|
prompts: ["printer-job"],
|
|
239
238
|
defaultTags: ["printer"],
|
|
@@ -244,10 +243,10 @@ export const printerModule = defineToolModule({
|
|
|
244
243
|
tools: [
|
|
245
244
|
{
|
|
246
245
|
name: "print_text",
|
|
247
|
-
description: "Print text on device 4 using Commodore or Epson workflows. See c64://
|
|
246
|
+
description: "Print text on device 4 using Commodore or Epson workflows. See c64://printer/spec.",
|
|
248
247
|
summary: "Generates printer BASIC, opens device 4, prints text, and optionally emits a form feed.",
|
|
249
248
|
inputSchema: printTextArgsSchema.jsonSchema,
|
|
250
|
-
relatedResources: ["c64://
|
|
249
|
+
relatedResources: ["c64://printer/spec"],
|
|
251
250
|
relatedPrompts: ["printer-job"],
|
|
252
251
|
tags: ["text"],
|
|
253
252
|
prerequisites: ["upload_run_basic"],
|
|
@@ -304,7 +303,7 @@ export const printerModule = defineToolModule({
|
|
|
304
303
|
description: "Print a Commodore MPS bit-image row using BIM BASIC helpers.",
|
|
305
304
|
summary: "Generates BASIC that emits Commodore BIM commands for the provided bitmap columns.",
|
|
306
305
|
inputSchema: commodoreBitmapArgsSchema.jsonSchema,
|
|
307
|
-
relatedResources: ["c64://
|
|
306
|
+
relatedResources: ["c64://printer/commodore/bitmap"],
|
|
308
307
|
relatedPrompts: ["printer-job"],
|
|
309
308
|
tags: ["bitmap", "commodore"],
|
|
310
309
|
prerequisites: ["upload_run_basic"],
|
|
@@ -364,7 +363,7 @@ export const printerModule = defineToolModule({
|
|
|
364
363
|
description: "Print an Epson FX bit-image row using ESC/P commands.",
|
|
365
364
|
summary: "Generates BASIC that emits ESC/P graphics commands for Epson printers.",
|
|
366
365
|
inputSchema: epsonBitmapArgsSchema.jsonSchema,
|
|
367
|
-
relatedResources: ["c64://
|
|
366
|
+
relatedResources: ["c64://printer/epson/bitmap"],
|
|
368
367
|
relatedPrompts: ["printer-job"],
|
|
369
368
|
tags: ["bitmap", "epson"],
|
|
370
369
|
prerequisites: ["upload_run_basic"],
|
|
@@ -425,7 +424,7 @@ export const printerModule = defineToolModule({
|
|
|
425
424
|
description: "Define custom characters on Commodore MPS printers using DLL mode.",
|
|
426
425
|
summary: "Uploads custom glyph data (11 columns each) for device 4 DLL mode.",
|
|
427
426
|
inputSchema: commodoreDllArgsSchema.jsonSchema,
|
|
428
|
-
relatedResources: ["c64://
|
|
427
|
+
relatedResources: ["c64://printer/commodore/bitmap"],
|
|
429
428
|
relatedPrompts: ["printer-job"],
|
|
430
429
|
tags: ["dll", "commodore"],
|
|
431
430
|
prerequisites: ["upload_run_basic"],
|
|
@@ -394,7 +394,7 @@ async function executeUploadRunBasic(rawArgs, ctx) {
|
|
|
394
394
|
format: "prg",
|
|
395
395
|
entryAddress,
|
|
396
396
|
prgSize: prg.length,
|
|
397
|
-
resources: ["c64://
|
|
397
|
+
resources: ["c64://basic/spec", "c64://guide/bootstrap"],
|
|
398
398
|
...(screenOutput ? { screen: screenOutput } : {}),
|
|
399
399
|
...(autoFixInfo
|
|
400
400
|
? {
|
|
@@ -460,7 +460,7 @@ async function executeUploadRunAsm(rawArgs, ctx) {
|
|
|
460
460
|
format: "prg",
|
|
461
461
|
entryAddress,
|
|
462
462
|
prgSize: prg.length,
|
|
463
|
-
resources: ["c64://
|
|
463
|
+
resources: ["c64://assembly/6510-spec", "c64://guide/bootstrap"],
|
|
464
464
|
...(shouldVerify && verified ? { verified: true } : {}),
|
|
465
465
|
};
|
|
466
466
|
const base = textResult("Assembly program assembled, uploaded, and executed successfully.", {
|
|
@@ -506,7 +506,7 @@ async function executeLoadPrg(rawArgs, ctx) {
|
|
|
506
506
|
format: "prg",
|
|
507
507
|
path: parsed.path,
|
|
508
508
|
entryAddress: null,
|
|
509
|
-
resources: ["c64://
|
|
509
|
+
resources: ["c64://guide/bootstrap"],
|
|
510
510
|
};
|
|
511
511
|
const base = textResult(`PRG ${parsed.path} loaded into memory.`, {
|
|
512
512
|
success: true,
|
|
@@ -538,7 +538,7 @@ async function executeRunPrg(rawArgs, ctx) {
|
|
|
538
538
|
format: "prg",
|
|
539
539
|
path: parsed.path,
|
|
540
540
|
entryAddress: null,
|
|
541
|
-
resources: ["c64://
|
|
541
|
+
resources: ["c64://guide/bootstrap"],
|
|
542
542
|
};
|
|
543
543
|
const base = textResult(`PRG ${parsed.path} loaded and executed.`, {
|
|
544
544
|
success: true,
|
|
@@ -570,7 +570,7 @@ async function executeRunCrt(rawArgs, ctx) {
|
|
|
570
570
|
format: "crt",
|
|
571
571
|
path: parsed.path,
|
|
572
572
|
entryAddress: null,
|
|
573
|
-
resources: ["c64://
|
|
573
|
+
resources: ["c64://guide/bootstrap"],
|
|
574
574
|
};
|
|
575
575
|
const base = textResult(`PRG ${parsed.path} loaded and executed.`, {
|
|
576
576
|
success: true,
|
|
@@ -598,9 +598,9 @@ export const programRunnersModule = defineToolModule({
|
|
|
598
598
|
domain: "programs",
|
|
599
599
|
summary: "Program uploaders, runners, and compilation workflows for BASIC, assembly, and PRG files.",
|
|
600
600
|
resources: [
|
|
601
|
-
"c64://
|
|
602
|
-
"c64://
|
|
603
|
-
"c64://
|
|
601
|
+
"c64://guide/bootstrap",
|
|
602
|
+
"c64://basic/spec",
|
|
603
|
+
"c64://assembly/6510-spec",
|
|
604
604
|
],
|
|
605
605
|
prompts: ["basic-program", "assembly-program"],
|
|
606
606
|
defaultTags: ["programs", "execution"],
|
|
@@ -611,10 +611,10 @@ export const programRunnersModule = defineToolModule({
|
|
|
611
611
|
tools: [
|
|
612
612
|
{
|
|
613
613
|
name: "upload_run_basic",
|
|
614
|
-
description: "Upload a BASIC program to the C64 and execute it immediately. Refer to c64://
|
|
614
|
+
description: "Upload a BASIC program to the C64 and execute it immediately. Refer to c64://basic/spec for syntax and device I/O.",
|
|
615
615
|
summary: "Uploads Commodore BASIC v2 source and runs it via Ultimate 64 firmware.",
|
|
616
616
|
inputSchema: uploadBasicArgsSchema.jsonSchema,
|
|
617
|
-
relatedResources: ["c64://
|
|
617
|
+
relatedResources: ["c64://basic/spec", "c64://basic/pitfalls", "c64://guide/bootstrap"],
|
|
618
618
|
relatedPrompts: ["basic-program"],
|
|
619
619
|
tags: ["basic", "execution"],
|
|
620
620
|
prerequisites: ["read_screen"],
|
|
@@ -636,10 +636,10 @@ export const programRunnersModule = defineToolModule({
|
|
|
636
636
|
},
|
|
637
637
|
{
|
|
638
638
|
name: "upload_run_asm",
|
|
639
|
-
description: "Assemble 6502/6510 source code, upload the PRG, and run it immediately. See c64://
|
|
639
|
+
description: "Assemble 6502/6510 source code, upload the PRG, and run it immediately. See c64://assembly/6510-spec.",
|
|
640
640
|
summary: "Compiles assembly to a PRG and executes it on the C64 via Ultimate 64 firmware.",
|
|
641
641
|
inputSchema: uploadAsmArgsSchema.jsonSchema,
|
|
642
|
-
relatedResources: ["c64://
|
|
642
|
+
relatedResources: ["c64://assembly/6510-spec", "c64://guide/bootstrap"],
|
|
643
643
|
relatedPrompts: ["assembly-program"],
|
|
644
644
|
tags: ["assembly", "execution"],
|
|
645
645
|
prerequisites: ["read_screen"],
|
|
@@ -664,7 +664,7 @@ export const programRunnersModule = defineToolModule({
|
|
|
664
664
|
description: "Load a PRG into C64 memory without executing it.",
|
|
665
665
|
summary: "Instructs the Ultimate firmware to transfer a PRG into memory without RUN.",
|
|
666
666
|
inputSchema: prgFileArgsSchema.jsonSchema,
|
|
667
|
-
relatedResources: ["c64://
|
|
667
|
+
relatedResources: ["c64://guide/bootstrap"],
|
|
668
668
|
tags: ["programs", "file"],
|
|
669
669
|
prerequisites: ["drives_list"],
|
|
670
670
|
examples: [
|
|
@@ -688,7 +688,7 @@ export const programRunnersModule = defineToolModule({
|
|
|
688
688
|
description: "Run a PRG located on the Ultimate filesystem without uploading source.",
|
|
689
689
|
summary: "Loads and executes a PRG file residing on attached storage.",
|
|
690
690
|
inputSchema: prgFileArgsSchema.jsonSchema,
|
|
691
|
-
relatedResources: ["c64://
|
|
691
|
+
relatedResources: ["c64://guide/bootstrap"],
|
|
692
692
|
tags: ["programs", "execution", "file"],
|
|
693
693
|
workflowHints: [
|
|
694
694
|
"Call when the user provides a PRG path and expects immediate execution without compiling.",
|
|
@@ -712,7 +712,7 @@ export const programRunnersModule = defineToolModule({
|
|
|
712
712
|
description: "Run a cartridge image stored on the Ultimate filesystem.",
|
|
713
713
|
summary: "Mounts and autostarts the specified CRT file through the firmware.",
|
|
714
714
|
inputSchema: crtFileArgsSchema.jsonSchema,
|
|
715
|
-
relatedResources: ["c64://
|
|
715
|
+
relatedResources: ["c64://guide/bootstrap"],
|
|
716
716
|
tags: ["programs", "cartridge"],
|
|
717
717
|
workflowHints: [
|
|
718
718
|
"Use for cartridge images and remind the user that the machine will reset into the CRT.",
|
|
@@ -742,7 +742,7 @@ export const programRunnersModule = defineToolModule({
|
|
|
742
742
|
format: "crt",
|
|
743
743
|
path: parsed.path,
|
|
744
744
|
entryAddress: null,
|
|
745
|
-
resources: ["c64://
|
|
745
|
+
resources: ["c64://guide/bootstrap"],
|
|
746
746
|
};
|
|
747
747
|
const base = textResult(`CRT ${parsed.path} mounted and started.`, {
|
|
748
748
|
success: true,
|
package/dist/tools/rag.js
CHANGED
|
@@ -23,18 +23,18 @@ const ragRetrieveArgsSchema = objectSchema({
|
|
|
23
23
|
});
|
|
24
24
|
function createRagTool(language, options) {
|
|
25
25
|
const primaryResourceUris = language === "basic"
|
|
26
|
-
? ["c64://
|
|
27
|
-
: ["c64://
|
|
26
|
+
? ["c64://basic/spec", "c64://guide/bootstrap"]
|
|
27
|
+
: ["c64://assembly/6510-spec", "c64://guide/bootstrap"];
|
|
28
28
|
return {
|
|
29
29
|
name: language === "basic" ? "rag_retrieve_basic" : "rag_retrieve_asm",
|
|
30
30
|
description: language === "basic"
|
|
31
|
-
? "Retrieve BASIC references from local knowledge. See c64://
|
|
32
|
-
: "Retrieve 6502/6510 assembly references from local knowledge. See c64://
|
|
31
|
+
? "Retrieve BASIC references from local knowledge. See c64://basic/spec before coding."
|
|
32
|
+
: "Retrieve 6502/6510 assembly references from local knowledge. See c64://assembly/6510-spec.",
|
|
33
33
|
summary: options.summary,
|
|
34
34
|
inputSchema: ragRetrieveArgsSchema.jsonSchema,
|
|
35
35
|
relatedResources: language === "basic"
|
|
36
|
-
? ["c64://
|
|
37
|
-
: ["c64://
|
|
36
|
+
? ["c64://basic/spec"]
|
|
37
|
+
: ["c64://assembly/6510-spec"],
|
|
38
38
|
relatedPrompts: language === "basic"
|
|
39
39
|
? ["basic-program"]
|
|
40
40
|
: ["assembly-program"],
|
|
@@ -175,9 +175,9 @@ export const ragModule = defineToolModule({
|
|
|
175
175
|
domain: "rag",
|
|
176
176
|
summary: "Retrieval-augmented generation helpers for BASIC and assembly examples.",
|
|
177
177
|
resources: [
|
|
178
|
-
"c64://
|
|
179
|
-
"c64://
|
|
180
|
-
"c64://
|
|
178
|
+
"c64://basic/spec",
|
|
179
|
+
"c64://assembly/6510-spec",
|
|
180
|
+
"c64://guide/index",
|
|
181
181
|
],
|
|
182
182
|
prompts: ["basic-program", "assembly-program"],
|
|
183
183
|
defaultTags: ["rag", "search"],
|
|
@@ -151,7 +151,7 @@ const configOperationHandlers = createOperationHandlers(configOperations);
|
|
|
151
151
|
export const configModuleGroup = defineToolModule({
|
|
152
152
|
domain: "config",
|
|
153
153
|
summary: "Grouped configuration management, diagnostics, and snapshot workflows.",
|
|
154
|
-
resources: ["c64://
|
|
154
|
+
resources: ["c64://guide/bootstrap", "c64://guide/index"],
|
|
155
155
|
prompts: ["memory-debug"],
|
|
156
156
|
defaultTags: ["config", "diagnostics"],
|
|
157
157
|
supportedPlatforms: ["c64u", "vice"],
|