c64bridge 1.0.6 → 1.1.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/skills/assembly-program/SKILL.md +37 -0
- package/.github/skills/basic-program/SKILL.md +40 -0
- package/.github/skills/cross-platform-demo/SKILL.md +32 -0
- package/.github/skills/drive-manager/SKILL.md +33 -0
- package/.github/skills/graphics-demo/SKILL.md +30 -0
- package/.github/skills/hello-world/SKILL.md +36 -0
- package/.github/skills/memory-debug/SKILL.md +32 -0
- package/.github/skills/pr-converge/SKILL.md +33 -0
- package/.github/skills/printer-job/SKILL.md +30 -0
- package/.github/skills/sid-music/SKILL.md +35 -0
- package/.github/skills/software-launch/SKILL.md +31 -0
- package/.github/skills/stream-control/SKILL.md +29 -0
- package/.github/skills/system-control/SKILL.md +32 -0
- package/AGENTS.md +28 -7
- package/README.md +70 -15
- package/data/assembly/assembly-spec.md +2 -0
- package/dist/c64Client.js +238 -60
- package/dist/chargen.js +0 -4
- package/dist/config.js +53 -28
- package/dist/device.js +92 -37
- package/dist/diagnostics.js +66 -5
- package/dist/hostPaths.js +128 -0
- package/dist/logger.js +3 -2
- package/dist/loggingHttpClient.js +71 -2
- package/dist/mcp-server.js +416 -291
- package/dist/numericArg.js +55 -0
- package/dist/petscii.js +13 -6
- package/dist/platform.js +12 -3
- package/dist/prompts/registry.js +6 -1
- package/dist/redact.js +166 -0
- package/dist/tools/access.js +66 -0
- package/dist/tools/debug.js +6 -0
- package/dist/tools/developer.js +77 -36
- package/dist/tools/errors.js +54 -3
- package/dist/tools/input.js +25 -8
- package/dist/tools/machineControl.js +113 -21
- package/dist/tools/memory.js +135 -30
- package/dist/tools/meta/artifacts.js +5 -5
- package/dist/tools/meta/background.js +216 -54
- package/dist/tools/meta/compilation.js +6 -5
- package/dist/tools/meta/config.js +20 -10
- package/dist/tools/meta/configInventory.js +25 -2
- package/dist/tools/meta/diagnostics.js +2 -1
- package/dist/tools/meta/filesystem.js +16 -14
- package/dist/tools/meta/graphics.js +48 -20
- package/dist/tools/meta/memory.js +45 -19
- package/dist/tools/meta/program.js +10 -7
- package/dist/tools/meta/screen.js +116 -25
- package/dist/tools/pauseGuard.js +23 -0
- package/dist/tools/pollValidator.js +53 -8
- package/dist/tools/programRunners.js +62 -18
- package/dist/tools/registry/batch.js +17 -11
- package/dist/tools/registry/config.js +9 -2
- package/dist/tools/registry/disk.js +12 -2
- package/dist/tools/registry/drive.js +3 -0
- package/dist/tools/registry/extract.js +3 -0
- package/dist/tools/registry/graphics.js +59 -6
- package/dist/tools/registry/index.js +17 -1
- package/dist/tools/registry/memory.js +11 -1
- package/dist/tools/registry/platform.js +4 -1
- package/dist/tools/registry/printer.js +2 -1
- package/dist/tools/registry/program.js +5 -1
- package/dist/tools/registry/rag.js +1 -0
- package/dist/tools/registry/sound.js +12 -1
- package/dist/tools/registry/stream.js +2 -1
- package/dist/tools/registry/system.js +8 -1
- package/dist/tools/schema.js +7 -7
- package/dist/tools/streaming.js +34 -4
- package/dist/tools/translation/assembler.js +247 -24
- package/dist/tools/translation/basicDetokenizer.js +80 -0
- package/dist/tools/translation/basicTokenizer.js +8 -3
- package/dist/tools/translation/disassembler.js +14 -0
- package/dist/tools/types.js +258 -7
- package/dist/tools/vice.js +5 -16
- package/dist/vicBitmap.js +1 -1
- package/dist/vice/mockServer.js +3 -0
- package/dist/vice/process.js +19 -0
- package/dist/vice/resourcePolicy.js +36 -0
- package/dist/vice/viceClient.js +22 -5
- package/doc/vice/support-matrix.md +17 -11
- package/mcp/schemas/c64_batch.schema.json +2 -1
- package/mcp/schemas/c64_config.schema.json +33 -466
- package/mcp/schemas/c64_debug.schema.json +3 -602
- package/mcp/schemas/c64_disk.schema.json +17 -344
- package/mcp/schemas/c64_drive.schema.json +2 -157
- package/mcp/schemas/c64_extract.schema.json +10 -364
- package/mcp/schemas/c64_graphics.schema.json +19 -426
- package/mcp/schemas/c64_input.schema.json +5 -318
- package/mcp/schemas/c64_memory.schema.json +23 -491
- package/mcp/schemas/c64_printer.schema.json +3 -258
- package/mcp/schemas/c64_program.schema.json +16 -491
- package/mcp/schemas/c64_rag.schema.json +1 -81
- package/mcp/schemas/c64_select_backend.schema.json +2 -36
- package/mcp/schemas/c64_sound.schema.json +20 -822
- package/mcp/schemas/c64_stream.schema.json +4 -75
- package/mcp/schemas/c64_system.schema.json +28 -348
- package/mcp/schemas/c64_vice.schema.json +2 -71
- package/mcp/server.json +1 -1
- package/mcp/tools.json +1990 -6900
- package/mcp.json +21 -1
- package/package.json +19 -8
- package/scripts/mockC64Server.mjs +44 -0
- package/scripts/run-coverage.mjs +27 -1
- package/scripts/smoke-run.sh +3 -2
- package/scripts/start.mjs +23 -1
- package/server.json +53 -3
- package/dist/.tsbuildinfo +0 -1
- package/doc/agent-state-spec.md +0 -243
- package/doc/plans/bun/baseline-metrics.md +0 -16
- package/doc/plans/bun/migration-checklist.md +0 -55
- package/doc/plans/bun/migration.md +0 -83
- package/doc/plans/improve-knowledge/notes.md +0 -43
- package/doc/plans/improve-knowledge/plan.md +0 -121
- package/doc/plans/improve-knowledge/rollout.md +0 -110
- package/doc/plans/meta-tools/README.md +0 -110
- package/doc/plans/meta-tools/analysis.md +0 -272
- package/doc/plans/meta-tools/catalog.md +0 -435
- package/doc/plans/meta-tools/notes.md +0 -192
- package/doc/plans/meta-tools/rollout.md +0 -368
- package/doc/plans/prompts/README.md +0 -96
- package/doc/plans/prompts/user-prompt-ideas.md +0 -147
- package/doc/plans/tool-consolidation/notes.md +0 -28
- package/doc/plans/tool-consolidation/plan.md +0 -169
- package/doc/plans/tool-consolidation/rollout.md +0 -104
- package/doc/plans/vice-backend-switch/plan.md +0 -486
- package/doc/plans/vice-backend-switch-2/plan.md +0 -48
- package/doc/plans/vice-support/notes.md +0 -63
- package/doc/plans/vice-support/plan.md +0 -88
- package/doc/plans/vice-support/rollout.md +0 -99
- package/doc/reviews/audit.md +0 -143
- package/doc/reviews/hardening/01-fable/prompt-handover.md +0 -125
- package/doc/reviews/hardening/01-fable/prompt.md +0 -98
- package/doc/reviews/hardening/01-fable/review-prompt.md +0 -468
- package/doc/reviews/hardening/01-fable/review.md +0 -1234
- package/doc/reviews/vice-support-review.md +0 -185
- package/scripts/compare-rest/rest-compare-2025-11-01T00-25-21-830Z.json +0 -2513
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: assembly-program
|
|
3
|
+
description: Execute 6502/6510 assembly workflows through c64bridge.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Intent
|
|
7
|
+
|
|
8
|
+
Use this skill for custom assembly routines, register work, IRQ handlers, and hardware-timed code.
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
- Hardware focus: VIC-II, SID, CIA, or mixed.
|
|
13
|
+
- Memory layout constraints, zero-page usage, and interrupt ownership.
|
|
14
|
+
- Validation target: screen state, memory state, or register state.
|
|
15
|
+
|
|
16
|
+
## Execution
|
|
17
|
+
|
|
18
|
+
1. Clarify which hardware blocks and memory ranges the routine may touch.
|
|
19
|
+
2. Consult `c64://assembly/6510-spec`, `c64://memory/map`, and any hardware-specific resource that applies.
|
|
20
|
+
3. Use `c64_rag` with `op: "asm"` when targeted timing tables or code examples are needed.
|
|
21
|
+
4. Generate assembly source with explicit labels and memory usage.
|
|
22
|
+
5. Execute with `c64_program` using `op: "upload_run_asm"`.
|
|
23
|
+
|
|
24
|
+
## Validation
|
|
25
|
+
|
|
26
|
+
1. Use `c64_memory` with `op: "read"` for installed code, vectors, or register checks.
|
|
27
|
+
2. Use `c64_memory` with `op: "read_screen"` when the routine produces visible output.
|
|
28
|
+
3. Report assembler diagnostics directly if compilation fails.
|
|
29
|
+
|
|
30
|
+
## Safety
|
|
31
|
+
|
|
32
|
+
- Confirm before invasive recovery actions such as reset or reboot.
|
|
33
|
+
- Pause and resume the machine around manual memory patching when the workflow requires it.
|
|
34
|
+
|
|
35
|
+
## Escalation
|
|
36
|
+
|
|
37
|
+
- Switch to `.github/skills/basic-program/SKILL.md` when the task is better served by a high-level loader or a simple BASIC program.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: basic-program
|
|
3
|
+
description: Execute bespoke Commodore BASIC v2 programs through c64bridge.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Intent
|
|
7
|
+
|
|
8
|
+
Use this skill when the user needs a custom BASIC program rather than a one-call demo.
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
- Desired behavior, inputs, and expected output.
|
|
13
|
+
- Target backend or backend preference.
|
|
14
|
+
- Whether current machine state must be preserved.
|
|
15
|
+
|
|
16
|
+
## Execution
|
|
17
|
+
|
|
18
|
+
1. If the request is only a hello-world, greeting, or smoke test, delegate to `.github/skills/hello-world/SKILL.md` instead of generating bespoke BASIC.
|
|
19
|
+
2. Clarify missing requirements before generating code when the request is not already specific enough to execute.
|
|
20
|
+
3. Consult `c64://basic/spec` and `c64://guide/bootstrap` only when syntax or workflow constraints matter.
|
|
21
|
+
4. Generate uppercase, line-numbered BASIC. `upload_run_basic` repairs a missing closing quote or parenthesis on a failing line and runs the program again, reporting the rewritten lines; pass `autoFix: false` for programs with side effects.
|
|
22
|
+
5. For VICE-backed local runs, assume the user should see a real visible emulator window unless CI or the lack of a framebuffer/display session forces headless operation.
|
|
23
|
+
6. When running visible VICE BASIC manually, do not immediately follow the run with `read_screen` or `wait_for_text` unless the user explicitly asks for machine verification after the visible output has rendered.
|
|
24
|
+
7. Use `c64_rag` with `op: "basic"` only when targeted BASIC examples are needed.
|
|
25
|
+
|
|
26
|
+
## Validation
|
|
27
|
+
|
|
28
|
+
1. For normal non-visual runs, call `c64_memory` with `op: "read_screen"` after execution.
|
|
29
|
+
2. For visible VICE runs, prefer user-visible confirmation first and only do monitor-based reads after the screen has clearly rendered or when the user asks for explicit verification.
|
|
30
|
+
3. Use `c64_memory` with `op: "read"` around the BASIC program area only when tokenization or memory placement needs verification.
|
|
31
|
+
4. Summarize expected versus observed output.
|
|
32
|
+
|
|
33
|
+
## Safety
|
|
34
|
+
|
|
35
|
+
- Confirm before reset, reboot, or other disruptive recovery actions.
|
|
36
|
+
- Preserve existing machine state when the user requests it.
|
|
37
|
+
|
|
38
|
+
## Escalation
|
|
39
|
+
|
|
40
|
+
- Switch to `.github/skills/assembly-program/SKILL.md` when performance, raster timing, or direct register control becomes the primary need.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cross-platform-demo
|
|
3
|
+
description: Run the shortest visible demo path across VICE and C64U.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Intent
|
|
7
|
+
|
|
8
|
+
Use this skill for quick greetings, smoke tests, and visible confirmation that one or more backends are responding.
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
- Target backends: `vice`, `c64u`, or both.
|
|
13
|
+
- Optional message template when the default greeting is not sufficient.
|
|
14
|
+
|
|
15
|
+
## Execution
|
|
16
|
+
|
|
17
|
+
0. Grouped MCP tools always require `op`. Do not call `c64_program` without it.
|
|
18
|
+
1. Execute `c64_program` with `op: "cross_platform_greeting"`.
|
|
19
|
+
2. Pass `platforms` only when the user wants a subset of the configured backends.
|
|
20
|
+
3. Pass `messageTemplate` only when the user explicitly wants custom text.
|
|
21
|
+
4. On local machines with a graphical session, assume VICE should render in a real visible emulator window by default. Only expect Xvfb or other headless behavior in CI or when no framebuffer/display session exists.
|
|
22
|
+
|
|
23
|
+
## Validation
|
|
24
|
+
|
|
25
|
+
1. Trust the workflow's structured verification first.
|
|
26
|
+
2. Summarize the reported text match results and screenshot paths.
|
|
27
|
+
3. Fall back to `.github/skills/basic-program/SKILL.md` only when the user needs custom program flow beyond a simple greeting, not merely because they want to see VICE render live.
|
|
28
|
+
|
|
29
|
+
## Safety
|
|
30
|
+
|
|
31
|
+
- Warn if a running session may be overwritten by the demo.
|
|
32
|
+
- Do not add manual reset steps unless the workflow fails and the user confirms recovery actions.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: drive-manager
|
|
3
|
+
description: Manage disk images and drive state through c64bridge.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Intent
|
|
7
|
+
|
|
8
|
+
Use this skill for disk image mounts, blank media creation, drive resets, power changes, and mode changes.
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
- Desired action: inspect, mount, create, unmount, reset, power cycle, or mode change.
|
|
13
|
+
- Target drive slot.
|
|
14
|
+
- Any image path, format, or verification requirement.
|
|
15
|
+
|
|
16
|
+
## Execution
|
|
17
|
+
|
|
18
|
+
1. Call `c64_disk` with `op: "list_drives"` before any mutation.
|
|
19
|
+
2. For image mounts or unmounts, use `c64_disk` with `op: "mount"` or `op: "unmount"`.
|
|
20
|
+
3. For new media, use `c64_disk` with `op: "create_image"` and then verify the result.
|
|
21
|
+
4. For drive hardware state, use `c64_drive` with `op: "reset"`, `op: "power_on"`, `op: "power_off"`, or `op: "set_mode"`.
|
|
22
|
+
5. To locate files by name on the device, use `c64_disk` with `op: "find_paths"` (`nameContains`, optional `root`, `extensions`, `maxResults`); a `truncated: true` result means more matches exist and the search should be narrowed.
|
|
23
|
+
6. Use `c64_disk` with `op: "file_info"` or `op: "find_and_run"` when inspection or launch is part of the task.
|
|
24
|
+
|
|
25
|
+
## Validation
|
|
26
|
+
|
|
27
|
+
1. Re-run `c64_disk` with `op: "list_drives"` after each mutation.
|
|
28
|
+
2. Confirm the final drive slot, mounted image, and mode in the summary.
|
|
29
|
+
|
|
30
|
+
## Safety
|
|
31
|
+
|
|
32
|
+
- Warn before power changes, resets, or other actions that may interrupt running software.
|
|
33
|
+
- Confirm destructive or stateful actions before executing them.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: graphics-demo
|
|
3
|
+
description: Execute PETSCII, sprite, bitmap, and frame-capture graphics workflows.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Intent
|
|
7
|
+
|
|
8
|
+
Use this skill when the user wants visual output on the C64, whether generated directly through graphics tools or through supporting BASIC or assembly loaders.
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
- Desired visual mode: PETSCII, text banner, sprite, bitmap, or frame capture.
|
|
13
|
+
- Artistic direction, palette constraints, and target backend.
|
|
14
|
+
- Whether the user wants a preview, a rendered asset, or a running program.
|
|
15
|
+
|
|
16
|
+
## Execution
|
|
17
|
+
|
|
18
|
+
1. For direct graphics generation, use `c64_graphics` with the relevant operation such as `render_petscii_art`, `render_petscii_text`, `render_sprite`, `render_bitmap`, or `capture_frame`.
|
|
19
|
+
2. When the request needs custom loader logic, delegate code generation to `.github/skills/basic-program/SKILL.md` or `.github/skills/assembly-program/SKILL.md`.
|
|
20
|
+
3. Reference `c64://graphics/vic/spec` and any character-set or PETSCII resources needed for the chosen mode.
|
|
21
|
+
|
|
22
|
+
## Validation
|
|
23
|
+
|
|
24
|
+
1. Use `c64_memory` with `op: "read_screen"` for text-mode validation.
|
|
25
|
+
2. Use `c64_graphics` with `op: "capture_frame"` for full-frame verification. Pass `format: "png"` (at most 4 frames) to receive viewable images; raw pixels are off by default and need `includePixels: true` with a small `count`.
|
|
26
|
+
3. Summarize the resulting mode, palette choices, and any captured assets.
|
|
27
|
+
|
|
28
|
+
## Safety
|
|
29
|
+
|
|
30
|
+
- Confirm before resets or teardown steps that would disrupt the current display state.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: hello-world
|
|
3
|
+
description: Run the fastest greeting or smoke-test path across VICE and C64U.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Intent
|
|
7
|
+
|
|
8
|
+
Use this skill when the user wants the shortest hello-world, greeting, or smoke-test workflow.
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
- Target backends: `vice`, `c64u`, or both.
|
|
13
|
+
- Optional greeting text or message template. Treat explicitly requested on-screen text such as `HELLO WORLD` as literal output to preserve.
|
|
14
|
+
|
|
15
|
+
## Execution
|
|
16
|
+
|
|
17
|
+
0. Grouped MCP tools always require `op`. Do not call `c64_program` without it.
|
|
18
|
+
1. If `c64_program` is exposed in the current tool set, execute it immediately with `op: "cross_platform_greeting"`.
|
|
19
|
+
2. If the current tool set does not expose `c64_program`, immediately delegate the same request to the `C64` agent instead of inspecting repository files, README sections, or MCP manifests.
|
|
20
|
+
3. Pass `platforms` only when the user pins a backend or wants a subset of the configured backends.
|
|
21
|
+
4. For a single visible VICE greeting, prefer the no-probe fast path: do not request screenshots or monitor-based verification unless the user explicitly asks for them.
|
|
22
|
+
5. Pass `messageTemplate` whenever the user specifies the exact text that should appear on screen, including simple phrases such as `HELLO WORLD`. Do not substitute the workflow's default greeting when the prompt implies literal output.
|
|
23
|
+
6. On local machines with a graphical session, assume VICE should render in a real visible emulator window. Only expect Xvfb or other headless behavior in CI or when no framebuffer/display session exists.
|
|
24
|
+
7. Do not re-read README sections, MCP manifests, or BASIC references before executing unless the request is ambiguous or the workflow fails.
|
|
25
|
+
8. Fall back to `.github/skills/basic-program/SKILL.md` only when the user needs custom BASIC logic beyond a static greeting.
|
|
26
|
+
|
|
27
|
+
## Validation
|
|
28
|
+
|
|
29
|
+
1. Trust the workflow's structured verification first.
|
|
30
|
+
2. For local visible VICE runs, treat the emulator window as the primary confirmation and summarize any reported text matches or screenshot artifacts.
|
|
31
|
+
3. Fall back to manual `read_screen` checks only when the user asks for explicit verification or the workflow fails.
|
|
32
|
+
|
|
33
|
+
## Safety
|
|
34
|
+
|
|
35
|
+
- Warn if a running session may be overwritten by the demo.
|
|
36
|
+
- Do not add manual reset steps unless the workflow fails and the user confirms recovery actions.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: memory-debug
|
|
3
|
+
description: Inspect, patch, and validate C64 memory safely.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Intent
|
|
7
|
+
|
|
8
|
+
Use this skill for RAM inspection, screen reads, polling for output, and carefully scoped memory writes.
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
- Address range or text pattern to inspect.
|
|
13
|
+
- Whether the operation is read-only or mutating.
|
|
14
|
+
- Any expectation about program state before or after the change.
|
|
15
|
+
|
|
16
|
+
## Execution
|
|
17
|
+
|
|
18
|
+
1. For direct memory inspection, use `c64_memory` with `op: "read"`.
|
|
19
|
+
Pass `format: "dump"` for a 16-bytes-per-line listing with addresses and a PETSCII column; the default `"hex"` returns one hex string.
|
|
20
|
+
2. For screen output, use `c64_memory` with `op: "read_screen"`. To see the BASIC program in memory as text, use `op: "list_basic"`.
|
|
21
|
+
3. For polling, use `c64_memory` with `op: "wait_for_text"`.
|
|
22
|
+
4. For writes, use `c64_memory` with `op: "write"` only after confirming the target range and side effects.
|
|
23
|
+
|
|
24
|
+
## Validation
|
|
25
|
+
|
|
26
|
+
1. Re-read the same memory range after every write.
|
|
27
|
+
2. Summarize the before and after state when patching memory.
|
|
28
|
+
|
|
29
|
+
## Safety
|
|
30
|
+
|
|
31
|
+
- Warn before writes in I/O or ROM-adjacent regions.
|
|
32
|
+
- Use pause and resume workflows when live execution makes writes risky.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pr-converge
|
|
3
|
+
description: Converge an open pull request to merge-ready state.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Intent
|
|
7
|
+
|
|
8
|
+
Use this skill when the task is to address review feedback, clear CI, and bring a pull request to merge readiness.
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
- Target pull request or the currently checked out pull request.
|
|
13
|
+
- Review comments, CI failures, and repository validation requirements.
|
|
14
|
+
|
|
15
|
+
## Execution
|
|
16
|
+
|
|
17
|
+
1. Retrieve active review comments and open threads.
|
|
18
|
+
2. Evaluate each comment against the current code and decide whether it requires a fix, explanation, or no action.
|
|
19
|
+
3. Implement focused fixes for valid issues and add regression coverage when the comment reveals a bug.
|
|
20
|
+
4. Reply to each comment with a concise technical explanation.
|
|
21
|
+
5. Re-run the minimal validation needed by the touched areas.
|
|
22
|
+
6. Check CI status and iterate until failures are resolved.
|
|
23
|
+
|
|
24
|
+
## Validation
|
|
25
|
+
|
|
26
|
+
1. Confirm that review threads are responded to and ready for resolution.
|
|
27
|
+
2. Confirm that local validation is green.
|
|
28
|
+
3. Confirm that CI is green before declaring convergence.
|
|
29
|
+
|
|
30
|
+
## Safety
|
|
31
|
+
|
|
32
|
+
- Do not resolve comments without explanation.
|
|
33
|
+
- Keep each fix minimal and scoped to the review issue it addresses.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: printer-job
|
|
3
|
+
description: Execute Commodore and Epson printing workflows through c64bridge.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Intent
|
|
7
|
+
|
|
8
|
+
Use this skill for printer text output, bitmap output, and custom character definition.
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
- Printer family: Commodore or Epson.
|
|
13
|
+
- Desired output type: text, bitmap row, or custom character definition.
|
|
14
|
+
- Any device or secondary-address requirements.
|
|
15
|
+
|
|
16
|
+
## Execution
|
|
17
|
+
|
|
18
|
+
1. Use `c64_printer` with `op: "print_text"` for text workflows.
|
|
19
|
+
2. Use `c64_printer` with `op: "print_bitmap"` for bitmap row workflows.
|
|
20
|
+
3. Use `c64_printer` with `op: "define_chars"` for custom character definitions.
|
|
21
|
+
4. Surface any generated BASIC or payload details the user must keep or reuse.
|
|
22
|
+
|
|
23
|
+
## Validation
|
|
24
|
+
|
|
25
|
+
1. Confirm which printer family and operation ran.
|
|
26
|
+
2. Summarize any generated program text or printer control assumptions.
|
|
27
|
+
|
|
28
|
+
## Safety
|
|
29
|
+
|
|
30
|
+
- Confirm printer family before issuing printer-specific control sequences.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sid-music
|
|
3
|
+
description: Execute built-in and custom SID playback workflows through c64bridge.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Intent
|
|
7
|
+
|
|
8
|
+
Use this skill for preset music demos, SIDWAVE composition, direct voice control, and audio verification.
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
- Whether the user wants the built-in `fuer_elise` preset or a custom composition.
|
|
13
|
+
- Target backends and verification expectations.
|
|
14
|
+
- Desired format for custom work: direct voice events, SIDWAVE, or BASIC playback.
|
|
15
|
+
|
|
16
|
+
## Execution
|
|
17
|
+
|
|
18
|
+
1. For a quick recognizable demo, execute `c64_sound` with `op: "play_preset"` and canonical preset `fuer_elise`.
|
|
19
|
+
2. If a legacy preset identifier reaches this workflow, normalize it to `fuer_elise` before playback.
|
|
20
|
+
3. For custom music, use `c64_sound` with `op: "generate"`, `op: "compile_play"`, or `op: "pipeline"` as appropriate.
|
|
21
|
+
4. Use `.github/skills/basic-program/SKILL.md` only when the user explicitly wants BASIC-driven playback.
|
|
22
|
+
|
|
23
|
+
## Validation
|
|
24
|
+
|
|
25
|
+
1. On `c64u`, prefer `c64_sound` analysis results when verification is enabled.
|
|
26
|
+
2. On `vice`, summarize successful playback launch and state clearly when live audio analysis is unavailable.
|
|
27
|
+
3. Report the canonical preset or composition path that actually ran.
|
|
28
|
+
|
|
29
|
+
## Safety
|
|
30
|
+
|
|
31
|
+
- Confirm before reset or silence actions that would interrupt an in-progress performance.
|
|
32
|
+
|
|
33
|
+
## Escalation
|
|
34
|
+
|
|
35
|
+
- Switch from preset playback to custom composition only when the user requests a different arrangement, instrumentation, or score.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: software-launch
|
|
3
|
+
description: Load and run existing C64 software through c64bridge.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Intent
|
|
7
|
+
|
|
8
|
+
Use this skill for existing PRG, CRT, or disk-image based software rather than newly authored programs.
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
- Media type: PRG, CRT, or disk image.
|
|
13
|
+
- File path or image path.
|
|
14
|
+
- Target backend and any drive-slot requirement.
|
|
15
|
+
|
|
16
|
+
## Execution
|
|
17
|
+
|
|
18
|
+
1. Confirm connectivity before launch when the environment looks uncertain.
|
|
19
|
+
2. For loose files, use `c64_program` with `op: "run_prg"` or `op: "run_crt"`. `load_prg` loads a PRG without running it on C64U, U2 and VICE (on VICE the path is a host-local file); `run_crt` is not available on VICE.
|
|
20
|
+
3. For disk images, use `.github/skills/drive-manager/SKILL.md` to mount the image first, then launch the correct program.
|
|
21
|
+
4. Use `c64_disk` with `op: "find_and_run"` when the user needs discovery inside an image.
|
|
22
|
+
|
|
23
|
+
## Validation
|
|
24
|
+
|
|
25
|
+
1. Use `c64_memory` with `op: "read_screen"` after launch when visible output is expected.
|
|
26
|
+
2. Summarize the loaded media, backend, and observed first-run state.
|
|
27
|
+
|
|
28
|
+
## Safety
|
|
29
|
+
|
|
30
|
+
- Confirm target drive slot before mutating disk state.
|
|
31
|
+
- Warn before power or reset actions that would interrupt the launch flow.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: stream-control
|
|
3
|
+
description: Start and stop live C64 audio or video streams.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Intent
|
|
7
|
+
|
|
8
|
+
Use this skill when the user wants a live audio or video stream forwarded to another host.
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
- Stream type: audio or video.
|
|
13
|
+
- Destination host and port.
|
|
14
|
+
- Whether the session should be stopped or started.
|
|
15
|
+
|
|
16
|
+
## Execution
|
|
17
|
+
|
|
18
|
+
1. Use `c64_stream` with `op: "start"` to begin a stream.
|
|
19
|
+
2. Use `c64_stream` with `op: "stop"` to terminate a stream.
|
|
20
|
+
3. Confirm the stream target back to the user after each action.
|
|
21
|
+
|
|
22
|
+
## Validation
|
|
23
|
+
|
|
24
|
+
1. Summarize the stream type and target that the workflow attempted.
|
|
25
|
+
2. Report any failure clearly so the user can adjust network or backend settings.
|
|
26
|
+
|
|
27
|
+
## Safety
|
|
28
|
+
|
|
29
|
+
- Remind the user to stop streams explicitly when capture is finished.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: system-control
|
|
3
|
+
description: Control machine lifecycle, background tasks, and configuration state.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Intent
|
|
7
|
+
|
|
8
|
+
Use this skill for pause/resume, reset, reboot, power, menu actions, background tasks, and configuration workflows.
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
- Desired machine action or configuration change.
|
|
13
|
+
- Any task name, configuration category, or configuration item involved.
|
|
14
|
+
- Whether state persistence or flash save is required.
|
|
15
|
+
|
|
16
|
+
## Execution
|
|
17
|
+
|
|
18
|
+
1. Use `c64_system` with `op: "pause"`, `op: "resume"`, `op: "reset"`, `op: "reboot"`, `op: "poweroff"`, `op: "power_cycle"`, or `op: "menu"` as needed. `power_cycle` verifies C64U/U64 Tool Menu screens between injected keys; it uses REST reboot on U2-family cartridges and a fresh VICE start on VICE.
|
|
19
|
+
`reset`, `reboot` and `power_cycle` accept `waitForReady: true` (with `readyTimeoutMs`, default 15000) to wait for the BASIC READY. prompt; a timeout is reported as `ready=false`, not as an error. `pause` and `resume` are not available on VICE.
|
|
20
|
+
2. Use `c64_system` task operations for background task lifecycle management.
|
|
21
|
+
3. Use `c64_config` REST operations for all C64U/U64/U2 configuration reads, writes, snapshots, diffs, and status checks. `load_flash`, `save_flash` and `reset_defaults` take an optional `category` to limit the operation to one configuration category. Do not navigate configuration menus through injected keyboard input.
|
|
22
|
+
4. Use `c64_input` `key` only for single PETSCII/KERNAL-queue keys and `keyboard` only for physical C64 key chords on Ultimate REST input. Firmware-menu navigation is an exception only when REST has no equivalent, such as the machine code monitor, visual SID editor, or Tool Menu.
|
|
23
|
+
|
|
24
|
+
## Validation
|
|
25
|
+
|
|
26
|
+
1. Confirm the resulting machine or configuration state in the summary.
|
|
27
|
+
2. When configuration changes are involved, report the category and item that changed.
|
|
28
|
+
|
|
29
|
+
## Safety
|
|
30
|
+
|
|
31
|
+
- Require explicit confirmation before reset, reboot, poweroff, flash save, or destructive config resets.
|
|
32
|
+
- Never leave the system paused without telling the user.
|
package/AGENTS.md
CHANGED
|
@@ -33,6 +33,20 @@ Use `C64_MODE=u2` to select that profile. U2-family cartridges support the share
|
|
|
33
33
|
|
|
34
34
|
When Ultimate firmware network protection is enabled, `networkPassword` is sent as the `X-Password` header on every REST request.
|
|
35
35
|
|
|
36
|
+
### Host File Access
|
|
37
|
+
|
|
38
|
+
Tool arguments that become host file paths (memory dumps, config snapshots, sprite/charset exports, run artifacts, `symbolsFile`, VICE PRG and disk image paths) must lie inside the working directory (not when it is `~` or `/`), `~/.c64bridge`, or the system temp directory. Other locations are rejected with an error that lists the allowed roots; use a path inside one of them rather than retrying elsewhere. The operator can add roots with `C64BRIDGE_ALLOWED_DIRS` (entries separated by the path delimiter; `*` disables the check).
|
|
39
|
+
|
|
40
|
+
### Environment Variables
|
|
41
|
+
|
|
42
|
+
| Variable | Effect |
|
|
43
|
+
| --- | --- |
|
|
44
|
+
| `C64BRIDGE_ALLOWED_DIRS` | Extra directories for host file paths in tool arguments, separated by the path delimiter; `*` disables the check. |
|
|
45
|
+
| `C64BRIDGE_ACCESS` | `full` (default), `no-destructive` or `read-only`. Limits which operations may be called; read on every call. |
|
|
46
|
+
| `C64BRIDGE_HTTP_TOKEN` | Bearer token required (`Authorization: Bearer <token>`) by the optional HTTP transport (`--http`), which also accepts only loopback Host and Origin headers. |
|
|
47
|
+
| `C64BRIDGE_DIAGNOSTICS_KEEP` | Number of diagnostics files kept at startup (default 200; files older than 30 days are always removed). |
|
|
48
|
+
| `C64BRIDGE_VERBOSE_SCHEMA` | Set to `1` to include the full per-operation schemas in `tools/list` (omitted by default to keep it small). |
|
|
49
|
+
|
|
36
50
|
### Runtime Backend Switching
|
|
37
51
|
|
|
38
52
|
When any combination of `c64u`, `u2`, and `vice` is configured, the server can keep the configured backends live at the same time.
|
|
@@ -90,15 +104,20 @@ If a workflow description starts listing tool calls outside `.github/skills`, tr
|
|
|
90
104
|
|
|
91
105
|
## Capabilities
|
|
92
106
|
|
|
93
|
-
- Program runners: `c64_program` (`upload_run_basic`, `upload_run_asm`, `run_prg`, `run_crt`, `bundle_run`, `batch_run`)
|
|
107
|
+
- Program runners: `c64_program` (`upload_run_basic`, `upload_run_asm`, `load_prg`, `run_prg`, `run_crt`, `bundle_run`, `batch_run`). `upload_run_basic` repairs a missing closing quote or parenthesis and reruns once; pass `autoFix: false` for programs with side effects.
|
|
94
108
|
- Fast demo workflow: `c64_program` (`cross_platform_greeting`) for one-call greetings on VICE and/or C64U with screenshot capture and verification
|
|
95
|
-
- Screen & memory: `c64_memory` (`read`, `write`, `read_screen`, `wait_for_text`)
|
|
96
|
-
- System control: `c64_system` (`pause`, `resume`, `reset`, `reboot`, `poweroff`, `power_cycle`, `menu`, tasks)
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
100
|
-
-
|
|
109
|
+
- Screen & memory: `c64_memory` (`read`, `write`, `read_screen`, `wait_for_text`, `list_basic`, `disassemble`, `copy_memory`, `fill_memory`, `search_memory`, `compare_memory`, `save_memory`). `read` accepts `format: "hex"` (default) or `"dump"` (addresses plus a PETSCII column); `list_basic` lists the BASIC program in memory as text.
|
|
110
|
+
- System control: `c64_system` (`pause`, `resume`, `reset`, `reboot`, `poweroff`, `power_cycle`, `menu`, tasks). `reset`, `reboot` and `power_cycle` accept `waitForReady` and `readyTimeoutMs` to wait for the BASIC READY. prompt. `pause` and `resume` are not available on VICE.
|
|
111
|
+
- Input: `c64_input` (`write_text`, `key`, `keyboard`, `joystick`, `release_all`, `state`)
|
|
112
|
+
- Configuration: `c64_config` (get/set, `batch_update`, `snapshot`, `restore`, `diff`, `shuffle`, `load_flash`, `save_flash`, `reset_defaults`). The flash operations take an optional `category`.
|
|
113
|
+
- Drives & files: `c64_disk` (including `find_paths`, which returns `results` and `truncated`; limit with `maxResults`), `c64_drive`
|
|
114
|
+
- SID / music: `c64_sound` (`play_preset`, playback, generate, analyze, `capture_samples`)
|
|
115
|
+
- Graphics: `c64_graphics` (PETSCII, sprites, `capture_frame`). `capture_frame` omits raw pixels unless `includePixels: true`; `format: "png"` returns viewable images (at most 4 frames; raw output is capped at 2 MiB, as for `capture_samples`).
|
|
116
|
+
- Debugging (VICE): `c64_debug` (checkpoints, registers, stepping, `wait_for_state`), `c64_vice` (resources)
|
|
117
|
+
- Streaming and extraction: `c64_stream` (C64U), `c64_extract` (sprites, charset, memory dump, firmware health)
|
|
118
|
+
- Batching: `c64_batch` runs several tool calls in one request
|
|
101
119
|
- Knowledge & RAG: `c64_rag` (BASIC and ASM lookups)
|
|
120
|
+
- Backend selection: `c64_select_backend`
|
|
102
121
|
|
|
103
122
|
Tools and parameters are listed dynamically via ListTools.
|
|
104
123
|
|
|
@@ -154,6 +173,8 @@ For execution details, follow the matching skill rather than duplicating tool st
|
|
|
154
173
|
## Safety Notes
|
|
155
174
|
|
|
156
175
|
- Some tools affect device state (power, reboot, drive ops). Use deliberately.
|
|
176
|
+
- Every operation has an effect (`read`, `write`, `destructive`). `C64BRIDGE_ACCESS=full|no-destructive|read-only` (default `full`) limits what may be called; a blocked call returns a validation error naming the operation, effect and mode. Do not try to work around a block; ask the user to change the variable. `c64://platform/status` shows the active mode.
|
|
177
|
+
- `poweroff` does not restore power by software. The machine returns only when power is restored at the outlet, and starts by itself only if automatic startup on power restoration is enabled.
|
|
157
178
|
- Logs emit to stderr; stdout is reserved for the MCP protocol.
|
|
158
179
|
|
|
159
180
|
## Personas
|