ace-demo 0.18.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.
- checksums.yaml +7 -0
- data/.ace-defaults/demo/config.yml +3 -0
- data/.ace-defaults/demo/tapes/hello.tape +12 -0
- data/.ace-defaults/nav/protocols/wfi-sources/ace-demo.yml +19 -0
- data/CHANGELOG.md +310 -0
- data/LICENSE +21 -0
- data/README.md +69 -0
- data/Rakefile +16 -0
- data/exe/ace-demo +14 -0
- data/handbook/skills/as-demo-create/SKILL.md +27 -0
- data/handbook/skills/as-demo-record/SKILL.md +27 -0
- data/handbook/workflow-instructions/demo/create.wf.md +89 -0
- data/handbook/workflow-instructions/demo/record.wf.md +146 -0
- data/lib/ace/demo/atoms/attach_output_printer.rb +22 -0
- data/lib/ace/demo/atoms/demo_comment_formatter.rb +25 -0
- data/lib/ace/demo/atoms/demo_name_sanitizer.rb +21 -0
- data/lib/ace/demo/atoms/demo_yaml_parser.rb +148 -0
- data/lib/ace/demo/atoms/playback_speed_parser.rb +30 -0
- data/lib/ace/demo/atoms/tape_content_generator.rb +37 -0
- data/lib/ace/demo/atoms/tape_metadata_parser.rb +42 -0
- data/lib/ace/demo/atoms/tape_search_dirs.rb +19 -0
- data/lib/ace/demo/atoms/vhs_command_builder.rb +15 -0
- data/lib/ace/demo/atoms/vhs_tape_compiler.rb +38 -0
- data/lib/ace/demo/cli/commands/attach.rb +33 -0
- data/lib/ace/demo/cli/commands/create.rb +69 -0
- data/lib/ace/demo/cli/commands/list.rb +35 -0
- data/lib/ace/demo/cli/commands/record.rb +214 -0
- data/lib/ace/demo/cli/commands/retime.rb +46 -0
- data/lib/ace/demo/cli/commands/show.rb +72 -0
- data/lib/ace/demo/cli.rb +70 -0
- data/lib/ace/demo/models/execution_result.rb +22 -0
- data/lib/ace/demo/molecules/demo_comment_poster.rb +54 -0
- data/lib/ace/demo/molecules/demo_sandbox_builder.rb +121 -0
- data/lib/ace/demo/molecules/demo_teardown_executor.rb +48 -0
- data/lib/ace/demo/molecules/gh_asset_uploader.rb +101 -0
- data/lib/ace/demo/molecules/inline_recorder.rb +62 -0
- data/lib/ace/demo/molecules/media_retimer.rb +81 -0
- data/lib/ace/demo/molecules/tape_resolver.rb +51 -0
- data/lib/ace/demo/molecules/tape_scanner.rb +148 -0
- data/lib/ace/demo/molecules/tape_writer.rb +34 -0
- data/lib/ace/demo/molecules/vhs_executor.rb +38 -0
- data/lib/ace/demo/organisms/demo_attacher.rb +44 -0
- data/lib/ace/demo/organisms/demo_recorder.rb +95 -0
- data/lib/ace/demo/organisms/tape_creator.rb +68 -0
- data/lib/ace/demo/version.rb +7 -0
- data/lib/ace/demo.rb +84 -0
- metadata +204 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 05dccf36768772abb152a0b5494c5248f7c2ace0a1109618d1e66394d48d5a19
|
|
4
|
+
data.tar.gz: 5f78333a34958fbfec8e7694016e7511ec2b1bafe55f8a75cfb2d809b23e5e18
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 0deee155122d67606f4fdfbdab863b639a31c191cbd0ef6d0cee352c36f32abf17404ed2deebdd1a8923619a5cc66e442a7b572c97dabb920cbe3d66f193b74f
|
|
7
|
+
data.tar.gz: 74725ee58385d06c0ca31cdafe9c4d42effde8c6eea50ca4f7d67c0a226fc0e20deb0ec86e23cae5ddba0295f24d727f07f76880d517d9385fe864cbdd0848cc
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
# WFI Sources Protocol Configuration for ace-demo gem
|
|
3
|
+
# This enables workflow discovery from the installed ace-demo gem
|
|
4
|
+
|
|
5
|
+
name: ace-demo
|
|
6
|
+
type: gem
|
|
7
|
+
description: Workflow instructions from ace-demo gem
|
|
8
|
+
priority: 10
|
|
9
|
+
|
|
10
|
+
# Configuration for workflow discovery within the gem
|
|
11
|
+
config:
|
|
12
|
+
# Relative path within the gem (default: handbook/workflow-instructions)
|
|
13
|
+
relative_path: handbook/workflow-instructions
|
|
14
|
+
|
|
15
|
+
# Pattern for finding workflow files (default: *.wf.md)
|
|
16
|
+
pattern: "*.wf.md"
|
|
17
|
+
|
|
18
|
+
# Enable discovery
|
|
19
|
+
enabled: true
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to ace-demo will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.18.0] - 2026-03-23
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- New "Tape Format" section in README explaining the `.tape.yml` YAML spec (setup, scenes, teardown, settings).
|
|
14
|
+
- Comprehensive YAML tape tutorial in getting-started.md (step 7) covering setup directives, multi-scene recordings, teardown, and fixture provisioning.
|
|
15
|
+
- Re-recorded getting-started demo GIF using a sandbox-based YAML tape with setup/teardown and multiple scenes.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
- Reframed README and gemspec around proof-of-work evidence delivery for agent-driven workflows.
|
|
19
|
+
- Updated getting-started demo tape to demonstrate sandbox setup, git-init, multi-scene recording, and teardown cleanup.
|
|
20
|
+
- Consolidated README use cases: merged overlapping PR attachment and code review paragraphs.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
- Corrected `.tape` → `.tape.yml` file extension in four places in usage.md to match actual implementation output.
|
|
24
|
+
|
|
25
|
+
## [0.17.4] - 2026-03-23
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
- Refreshed `README.md` with the new package layout pattern, including top-level docs navigation, use-case-led content, and quick-start commands.
|
|
29
|
+
|
|
30
|
+
### Technical
|
|
31
|
+
- Added setup-doc discoverability in README navigation and aligned package footer/handbook labels with current ACE conventions.
|
|
32
|
+
|
|
33
|
+
## [0.17.3] - 2026-03-22
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
- Updated `record --dry-run` tape-mode previews to resolve YAML tape specs before reporting preview format/output behavior.
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
- Switched generated `.tape.yml` template rendering to structured YAML serialization for safer escaping and multiline handling.
|
|
40
|
+
- Removed default `copy-fixtures` from generated project tape templates to avoid guaranteed no-op setup warnings.
|
|
41
|
+
|
|
42
|
+
### Technical
|
|
43
|
+
- Updated command/organism test expectations and added dry-run YAML format coverage for the new preview/serialization behavior.
|
|
44
|
+
|
|
45
|
+
## [0.17.2] - 2026-03-22
|
|
46
|
+
|
|
47
|
+
### Changed
|
|
48
|
+
- Removed the legacy `YamlDemoRecorder`/`DemoSetupExecutor` pipeline and consolidated YAML recording on the production `DemoRecorder` sandbox flow.
|
|
49
|
+
- Updated getting-started docs to reflect `.tape.yml` output paths for created and inline tapes.
|
|
50
|
+
|
|
51
|
+
### Technical
|
|
52
|
+
- Removed obsolete legacy YAML parser/content-generator compatibility files and their test coverage.
|
|
53
|
+
- Added production-path regression coverage for `DemoRecorder` YAML execution, teardown behavior, and migrated getting-started tape smoke checks.
|
|
54
|
+
|
|
55
|
+
## [0.17.1] - 2026-03-22
|
|
56
|
+
|
|
57
|
+
### Fixed
|
|
58
|
+
- Honored YAML `settings.format` during `ace-demo record` tape-mode execution when `--format` is omitted.
|
|
59
|
+
- Cleaned up sandbox directories on setup failures and preserved `ArgumentError` type for invalid setup directives.
|
|
60
|
+
- Guarded missing YAML `setup`/`teardown` sections and normalized `.tape.yaml` compiled tape naming.
|
|
61
|
+
|
|
62
|
+
### Technical
|
|
63
|
+
- Added regression tests for CLI format passthrough, YAML compiled naming, and sandbox-builder failure cleanup behavior.
|
|
64
|
+
|
|
65
|
+
## [0.17.0] - 2026-03-22
|
|
66
|
+
|
|
67
|
+
### Changed
|
|
68
|
+
- Removed the built-in non-CLI `ace-test` demo tape from default demo inventory so `ace-demo list` only shows CLI-relevant demos.
|
|
69
|
+
- Updated getting-started guidance and list/scan test fixtures to reflect the cleaned built-in tape set.
|
|
70
|
+
|
|
71
|
+
## [0.16.0] - 2026-03-22
|
|
72
|
+
|
|
73
|
+
### Added
|
|
74
|
+
- Added `DemoYamlParser` and `VhsTapeCompiler` atoms for strict `.tape.yml` schema validation and VHS script compilation.
|
|
75
|
+
- Added `DemoSandboxBuilder` and `DemoTeardownExecutor` molecules for sandbox lifecycle management, fixture setup, and teardown execution.
|
|
76
|
+
|
|
77
|
+
### Changed
|
|
78
|
+
- Updated `DemoRecorder` to support unified `.tape`/`.tape.yml` routing with YAML pipeline execution.
|
|
79
|
+
- Updated `TapeResolver` and `TapeScanner` to support dual-format discovery and YAML-first extensionless resolution.
|
|
80
|
+
- Updated `ace-demo create`/`TapeCreator` to generate `.tape.yml` templates as the default authoring format.
|
|
81
|
+
- Updated CLI `list` and `show` output to include tape format and YAML metadata details.
|
|
82
|
+
- Added `sandbox_dir` default configuration (`.ace-local/demo/sandbox`).
|
|
83
|
+
|
|
84
|
+
### Technical
|
|
85
|
+
- Added and updated tests across atoms, molecules, organisms, and commands for the new YAML engine path and compatibility shims.
|
|
86
|
+
|
|
87
|
+
## [0.15.0] - 2026-03-22
|
|
88
|
+
|
|
89
|
+
### Added
|
|
90
|
+
- Added YAML demo recording support in `ace-demo record` for `.tape.yml` inputs, including YAML parsing, scene compilation, sandbox setup execution, and teardown cleanup.
|
|
91
|
+
- Added demo spike artifacts for `ace-task` YAML recording (`ace-task-getting-started.tape.yml`) and fixture-based setup support.
|
|
92
|
+
|
|
93
|
+
### Changed
|
|
94
|
+
- Updated `VhsExecutor#run` to support sandbox-scoped execution via optional `chdir:`.
|
|
95
|
+
- Updated usage docs to include `.tape.yml` recording workflow.
|
|
96
|
+
|
|
97
|
+
### Technical
|
|
98
|
+
- Added parser/compiler/setup/recorder test coverage for the YAML demo pipeline and CLI routing.
|
|
99
|
+
|
|
100
|
+
## [0.14.2] - 2026-03-22
|
|
101
|
+
|
|
102
|
+
### Fixed
|
|
103
|
+
- Corrected `ace-demo create` usage syntax to show options before `--`, matching CLI argument parsing behavior.
|
|
104
|
+
|
|
105
|
+
## [0.14.1] - 2026-03-22
|
|
106
|
+
|
|
107
|
+
### Fixed
|
|
108
|
+
- Removed the duplicated `0.13.0` changelog section that repeated `0.14.0` release notes.
|
|
109
|
+
|
|
110
|
+
## [0.14.0] - 2026-03-22
|
|
111
|
+
|
|
112
|
+
### Changed
|
|
113
|
+
- Refreshed package README and documentation with landing-focused messaging for agent workflows.
|
|
114
|
+
- Expanded command usage coverage in `docs/usage.md` and added new getting-started and handbook guides.
|
|
115
|
+
- Added a reusable example tape asset at `.ace/demo/tapes/my-demo.tape` and updated project docs for inline demo creation.
|
|
116
|
+
|
|
117
|
+
## [0.12.0] - 2026-03-21
|
|
118
|
+
|
|
119
|
+
### Changed
|
|
120
|
+
- Added initial `TS-DEMO-001` value-gated smoke E2E coverage for CLI help surface, tape create/show lifecycle, inline record dry-run preview, and attach validation error behavior.
|
|
121
|
+
- Added `e2e-decision-record.md` with explicit ADD/SKIP decisions and unit-coverage evidence for retained and deferred E2E candidates.
|
|
122
|
+
|
|
123
|
+
## [0.11.1] - 2026-03-18
|
|
124
|
+
|
|
125
|
+
### Changed
|
|
126
|
+
- Migrated CLI namespace from `Ace::Core::CLI::*` to `Ace::Support::Cli::*` (ace-support-cli is now the canonical home for CLI infrastructure).
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
## [0.11.0] - 2026-03-18
|
|
130
|
+
|
|
131
|
+
### Changed
|
|
132
|
+
- Removed legacy backward-compatibility behavior as part of the 0.10 cleanup release.
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
## [0.10.4] - 2026-03-15
|
|
136
|
+
|
|
137
|
+
### Changed
|
|
138
|
+
- Migrated CLI framework from dry-cli to ace-support-cli
|
|
139
|
+
|
|
140
|
+
## [0.10.3] - 2026-03-13
|
|
141
|
+
|
|
142
|
+
### Changed
|
|
143
|
+
- Updated canonical demo skills to explicitly run bundled workflows in the current project and execute them end-to-end.
|
|
144
|
+
|
|
145
|
+
## [0.10.2] - 2026-03-13
|
|
146
|
+
|
|
147
|
+
### Changed
|
|
148
|
+
- Removed the Codex-specific delegated execution metadata from the canonical `as-demo-create` and `as-demo-record` skills so provider projections now inherit the canonical skill body unchanged.
|
|
149
|
+
|
|
150
|
+
## [0.10.1] - 2026-03-12
|
|
151
|
+
|
|
152
|
+
### Fixed
|
|
153
|
+
- Registered the package WFI source so `wfi://demo/create` and `wfi://demo/record` resolve for the canonical demo skills.
|
|
154
|
+
|
|
155
|
+
## [0.10.0] - 2026-03-12
|
|
156
|
+
|
|
157
|
+
### Added
|
|
158
|
+
- Added Codex-specific delegated execution metadata to the canonical `as-demo-create` and `as-demo-record` skills so the generated Codex skills run in fork context on `gpt-5.3-codex-spark`.
|
|
159
|
+
|
|
160
|
+
## [0.9.0] - 2026-03-10
|
|
161
|
+
|
|
162
|
+
### Added
|
|
163
|
+
- Added canonical handbook-owned demo skills for tape creation and recording workflows.
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
## [0.8.0] - 2026-03-08
|
|
167
|
+
|
|
168
|
+
### Added
|
|
169
|
+
- Added `retime` command: `ace-demo retime <file> --playback-speed <1x|2x|4x|8x>` to postprocess GIF/MP4/WebM recordings into faster playback variants.
|
|
170
|
+
- Added playback speed parser and media retime engine (`ffmpeg`-based) with strict speed validation and format-aware processing.
|
|
171
|
+
- Added `assign-drive-showcase` project demo tape under `.ace/demo/tapes/` for delegation/drive walkthrough recording.
|
|
172
|
+
|
|
173
|
+
### Changed
|
|
174
|
+
- Extended `record` with `--playback-speed` and config fallback (`record.postprocess.playback_speed`) to auto-generate retimed artifacts while preserving originals.
|
|
175
|
+
- Updated `record --pr` behavior to attach the retimed artifact when playback postprocess is active.
|
|
176
|
+
- Updated docs/workflows (`README`, `docs/usage.md`, `docs/setup.md`, `demo/record.wf.md`) to cover retime usage and postprocess configuration.
|
|
177
|
+
|
|
178
|
+
## [0.7.2] - 2026-03-05
|
|
179
|
+
|
|
180
|
+
### Fixed
|
|
181
|
+
- Fixed `AttachOutputPrinter` printing full comment body to stdout in live mode — now only shown in dry-run preview.
|
|
182
|
+
- Fixed `--output` option being silently ignored in inline recording mode — now wired through to `InlineRecorder`.
|
|
183
|
+
- Fixed `--pr` with non-GIF formats producing broken image markdown — `DemoCommentFormatter` now uses link format for MP4/WebM.
|
|
184
|
+
- Fixed dry-run with `--pr` not previewing attachment step — both tape and inline modes now show attachment preview.
|
|
185
|
+
- Fixed dry-run inline preview using unsanitized name in output path placeholder.
|
|
186
|
+
- Renamed `gif_path:` parameter to `file_path:` in `GhAssetUploader` for format-neutral naming.
|
|
187
|
+
- Changed "GIF not found" error messages to "Recording file not found" in `DemoAttacher` and `GhAssetUploader`.
|
|
188
|
+
- Updated `attach` command description and argument help to be format-neutral.
|
|
189
|
+
- Fixed incorrect env var passing example in `demo/record` workflow (`TEST_PATH=... ace-demo` instead of positional arg).
|
|
190
|
+
- Fixed `docs/usage.md` expected output examples for `list` and `show` commands to match actual implementation.
|
|
191
|
+
- Removed redundant project-level WFI source registration (gem default suffices).
|
|
192
|
+
|
|
193
|
+
### Added
|
|
194
|
+
- Added dedicated `DemoNameSanitizer` unit tests covering edge cases: empty input, path traversal, special characters, max length boundary.
|
|
195
|
+
- Added escaping regression test for `TapeContentGenerator` double-quote and backslash handling.
|
|
196
|
+
- Added `DemoCommentFormatter` test for non-GIF format link rendering.
|
|
197
|
+
|
|
198
|
+
## [0.7.1] - 2026-03-05
|
|
199
|
+
|
|
200
|
+
### Added
|
|
201
|
+
- Added handbook workflow instructions for tape creation (`demo/create`) and recording (`demo/record`).
|
|
202
|
+
- Added skills integration (`ace-demo-create`, `ace-demo-record`) for agent workflow routing via `wfi://` protocol.
|
|
203
|
+
- Added WFI source registration for `ace-bundle wfi://demo/*` discovery.
|
|
204
|
+
- Added `handbook/**/*` to gemspec `spec.files` per project convention.
|
|
205
|
+
|
|
206
|
+
### Fixed
|
|
207
|
+
- Fixed command escaping in `TapeContentGenerator` — double quotes and backslashes in commands are now properly escaped in `Type` directives.
|
|
208
|
+
- Fixed path traversal vulnerability in `TapeCreator` — tape names are now sanitized via `DemoNameSanitizer` before use in file paths.
|
|
209
|
+
- Fixed `--dry-run` in tape recording mode — now skips VHS execution entirely instead of only dry-running PR attachment.
|
|
210
|
+
- Narrowed auth error detection in `GhAssetUploader` and `DemoCommentPoster` to match specific patterns (`authentication required`, `authentication token`) instead of broad `authentication` substring.
|
|
211
|
+
- Removed unused `format:` parameter from `VhsCommandBuilder.build`.
|
|
212
|
+
|
|
213
|
+
## [0.7.0] - 2026-03-05
|
|
214
|
+
|
|
215
|
+
### Added
|
|
216
|
+
- Added `Atoms::DemoNameSanitizer` for sanitizing user-supplied demo names to filesystem-safe slugs (lowercase, alphanumeric/hyphen, max 55 chars).
|
|
217
|
+
- Added `ace-b36ts` runtime dependency for compact 6-character base36 session IDs.
|
|
218
|
+
- Replaced `YYYYMMDD-HHMMSS` timestamp session IDs with `Ace::B36ts.now` 6-character b36ts tokens in `InlineRecorder`.
|
|
219
|
+
- Name passed to `record` is now sanitized via `DemoNameSanitizer` before use in tape/output paths.
|
|
220
|
+
|
|
221
|
+
## [0.6.0] - 2026-03-05
|
|
222
|
+
|
|
223
|
+
### Added
|
|
224
|
+
- Added inline recording to `record` command: `ace-demo record <name> -- <commands...>` generates a session-local tape and records it in one step.
|
|
225
|
+
- Added `Molecules::InlineRecorder` for session-scoped tape generation and VHS execution with timestamped output directories (`.ace-local/demo/<session_id>/`).
|
|
226
|
+
- Added create-style options to `record` command for inline mode: `--timeout`, `--desc`, `--tags`, `--width`, `--height`, `--font-size`.
|
|
227
|
+
- Added stdin support for piping commands into `record` (one command per line).
|
|
228
|
+
- Added dry-run support for inline recording that previews tape content without executing VHS.
|
|
229
|
+
- Added tests for inline recorder molecule and CLI inline record integration.
|
|
230
|
+
|
|
231
|
+
## [0.5.0] - 2026-03-05
|
|
232
|
+
|
|
233
|
+
### Added
|
|
234
|
+
- Added `create` command: `ace-demo create <name> [--timeout] [--desc] [--tags] [--width] [--height] [--font-size] [--format] [--force] [--dry-run] -- <commands...>` for generating tape files from shell commands.
|
|
235
|
+
- Added tape creation pipeline components:
|
|
236
|
+
- `Atoms::TapeContentGenerator` for pure tape content generation from structured params.
|
|
237
|
+
- `Molecules::TapeWriter` for conflict-aware file I/O to `.ace/demo/tapes/`.
|
|
238
|
+
- `Organisms::TapeCreator` for orchestrating content generation and file writing.
|
|
239
|
+
- Added `TapeAlreadyExistsError` for conflict detection with `--force` override.
|
|
240
|
+
- Added stdin support for piping commands into `create` (one command per line).
|
|
241
|
+
- Added tests for generator, writer, creator, and CLI command behavior.
|
|
242
|
+
- Updated defaults to 960x480px at font size 16 (~100 columns) for better terminal rendering.
|
|
243
|
+
|
|
244
|
+
## [0.4.3] - 2026-03-05
|
|
245
|
+
|
|
246
|
+
### Fixed
|
|
247
|
+
- Extracted shared tape search directory construction to `Atoms::TapeSearchDirs` and reused it in tape scanner/resolver paths.
|
|
248
|
+
- Extracted shared attach output rendering to `Atoms::AttachOutputPrinter` and reused it across `record` and `attach` commands.
|
|
249
|
+
- Hardened PR-not-found detection in demo comment posting to avoid broad stderr misclassification.
|
|
250
|
+
- Applied runtime config defaults (`vhs_bin`, `output_dir`) in demo recording execution paths and added coverage for configured defaults.
|
|
251
|
+
|
|
252
|
+
## [0.4.2] - 2026-03-05
|
|
253
|
+
|
|
254
|
+
### Fixed
|
|
255
|
+
- Moved `ExecutionResult` from molecules to models and updated recorder/executor references for ATOM layer consistency.
|
|
256
|
+
- Optimized `TapeScanner#find` to use direct layered lookup instead of full tape-list scans for single-name lookups.
|
|
257
|
+
- Updated config load fallback to emit a warning when loading fails, improving diagnostics for invalid config states.
|
|
258
|
+
- Added regression coverage for direct lookup behavior and config-fallback warning behavior.
|
|
259
|
+
|
|
260
|
+
## [0.4.1] - 2026-03-05
|
|
261
|
+
|
|
262
|
+
### Fixed
|
|
263
|
+
- Fixed tape precedence handling to consistently prefer project tapes over home and gem defaults.
|
|
264
|
+
- Removed redundant VHS availability pre-check and now report missing VHS from the actual execution path.
|
|
265
|
+
- Updated dry-run attach behavior to avoid `gh` CLI/network/auth calls.
|
|
266
|
+
- Removed unsupported `--format` emission from VHS command construction.
|
|
267
|
+
- Removed duplicate `Error:` message prefixing in CLI command error propagation.
|
|
268
|
+
- Added debug-mode diagnostics when config loading fails instead of silently swallowing all errors.
|
|
269
|
+
|
|
270
|
+
## [0.4.0] - 2026-03-05
|
|
271
|
+
|
|
272
|
+
### Added
|
|
273
|
+
- Added demo tape discovery commands:
|
|
274
|
+
- `ace-demo list` to enumerate available tapes with description and source path.
|
|
275
|
+
- `ace-demo show <name>` to display tape metadata and full tape contents.
|
|
276
|
+
- Added tape library components:
|
|
277
|
+
- `Atoms::TapeMetadataParser` for parsing VHS comment metadata.
|
|
278
|
+
- `Molecules::TapeScanner` for config-cascade discovery with override semantics and direct-path lookup.
|
|
279
|
+
- Added built-in default tapes in `.ace-defaults/demo/tapes/`:
|
|
280
|
+
- `hello.tape`
|
|
281
|
+
- `ace-test.tape`
|
|
282
|
+
- Added tests for parser/scanner behavior and new CLI commands.
|
|
283
|
+
|
|
284
|
+
## [0.3.0] - 2026-03-05
|
|
285
|
+
|
|
286
|
+
### Added
|
|
287
|
+
- Added `attach` command: `ace-demo attach <file> --pr <number> [--dry-run]` for uploading GIFs to the `demo-assets` release and posting inline PR comments.
|
|
288
|
+
- Added PR-attachment ATOM components:
|
|
289
|
+
- `Atoms::DemoCommentFormatter`
|
|
290
|
+
- `Molecules::GhAssetUploader`
|
|
291
|
+
- `Molecules::DemoCommentPoster`
|
|
292
|
+
- `Organisms::DemoAttacher`
|
|
293
|
+
- Added `record --pr <number>` flow to record and attach in one command.
|
|
294
|
+
- Added package tests for formatter, uploader, comment poster, attacher, and CLI integration.
|
|
295
|
+
|
|
296
|
+
## [0.2.0] - 2026-03-05
|
|
297
|
+
|
|
298
|
+
### Added
|
|
299
|
+
- Added new `ace-demo` gem scaffold with executable, module loading, and dry-cli integration.
|
|
300
|
+
- Added `record` command: `ace-demo record <tape> [--output] [--format gif|mp4|webm]`.
|
|
301
|
+
- Added VHS recording pipeline components:
|
|
302
|
+
- `Atoms::VhsCommandBuilder`
|
|
303
|
+
- `Molecules::TapeResolver`
|
|
304
|
+
- `Molecules::VhsExecutor`
|
|
305
|
+
- `Organisms::DemoRecorder`
|
|
306
|
+
- Added `.ace-defaults/demo/` config and tape preset structure.
|
|
307
|
+
- Added package test suite for atom, molecules, organism, and CLI command behavior.
|
|
308
|
+
|
|
309
|
+
### Fixed
|
|
310
|
+
- Added explicit error handling for missing tape files, missing VHS binary, unsupported formats, and VHS execution failures with actionable messages.
|
data/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Michal Czyz
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<h1> ACE - Demo </h1>
|
|
3
|
+
|
|
4
|
+
Record terminal sessions as proof-of-work evidence for pull requests.
|
|
5
|
+
|
|
6
|
+
<img src="https://raw.githubusercontent.com/cs3b/ace/main/docs/brand/AgenticCodingEnvironment.Logo.XS.jpg" alt="ACE Logo" width="480">
|
|
7
|
+
<br><br>
|
|
8
|
+
|
|
9
|
+
<a href="https://rubygems.org/gems/ace-demo"><img alt="Gem Version" src="https://img.shields.io/gem/v/ace-demo.svg" /></a>
|
|
10
|
+
<a href="https://www.ruby-lang.org"><img alt="Ruby" src="https://img.shields.io/badge/Ruby-3.2+-CC342D?logo=ruby" /></a>
|
|
11
|
+
<a href="https://opensource.org/licenses/MIT"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-blue.svg" /></a>
|
|
12
|
+
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
> Works with: Claude Code, Codex CLI, OpenCode, Gemini CLI, pi-agent, and more.
|
|
16
|
+
|
|
17
|
+
[Getting Started](docs/getting-started.md) | [Usage Guide](docs/usage.md) | [Handbook - Skills, Agents, Templates](docs/handbook.md)
|
|
18
|
+
|
|
19
|
+

|
|
20
|
+
|
|
21
|
+
`ace-demo` records terminal sessions as proof-of-work evidence for agent-driven workflows. Tapes define what to capture — either as simple [VHS](https://github.com/charmbracelet/vhs) scripts (`.tape`) or as YAML specs (`.tape.yml`) with sandbox setup, scenes, and teardown.
|
|
22
|
+
|
|
23
|
+
Recordings attach directly to GitHub pull requests as reviewable evidence. Requires `vhs`, `chromium`, and `ttyd` for deterministic rendering (see [setup requirements](docs/setup.md)).
|
|
24
|
+
|
|
25
|
+
## How It Works
|
|
26
|
+
|
|
27
|
+
1. **Define a tape** — inline commands, a VHS `.tape` script, or a `.tape.yml` with sandbox setup, recording scenes, and teardown cleanup.
|
|
28
|
+
2. **Record** — ace-demo compiles the tape to VHS, executes in an isolated sandbox, and produces a GIF, MP4, or WebM artifact.
|
|
29
|
+
3. **Deliver evidence** — attach the recording to a GitHub pull request with `--pr`, where it serves as proof-of-work for code review or assignment verification.
|
|
30
|
+
|
|
31
|
+
## Tape Format
|
|
32
|
+
|
|
33
|
+
A `.tape.yml` file defines a self-contained recording scenario:
|
|
34
|
+
|
|
35
|
+
```yaml
|
|
36
|
+
setup:
|
|
37
|
+
- sandbox # create isolated working directory
|
|
38
|
+
- git-init # initialize a git repo in the sandbox
|
|
39
|
+
- copy-fixtures # copy fixture files from adjacent fixtures/ dir
|
|
40
|
+
|
|
41
|
+
scenes:
|
|
42
|
+
- name: Main flow
|
|
43
|
+
commands:
|
|
44
|
+
- type: ace-demo list
|
|
45
|
+
sleep: 4s
|
|
46
|
+
- type: ace-demo record hello
|
|
47
|
+
sleep: 6s
|
|
48
|
+
|
|
49
|
+
teardown:
|
|
50
|
+
- cleanup # remove sandbox directory
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
- **setup** — sandbox isolation, git init, fixture copying, or arbitrary shell via `run: <cmd>`
|
|
54
|
+
- **scenes** — named command sequences compiled to VHS directives (`Type`, `Enter`, `Sleep`)
|
|
55
|
+
- **teardown** — cleanup directives that always run (even on failure)
|
|
56
|
+
- **settings** — optional `font_size`, `width`, `height`, `format` overrides
|
|
57
|
+
|
|
58
|
+
Legacy `.tape` files use raw VHS syntax directly. See the [Usage Guide](docs/usage.md) for the full tape specification.
|
|
59
|
+
|
|
60
|
+
## Use Cases
|
|
61
|
+
|
|
62
|
+
**Deliver proof-of-work for agent tasks** — pair with [ace-assign](../ace-assign) for scoped task workflows that require demo evidence, using [ace-bundle](../ace-bundle) for loading workflow context that drives repeatable demo scenarios.
|
|
63
|
+
|
|
64
|
+
**Attach visual evidence to pull requests** — record a tape with [`ace-demo record --pr`](docs/usage.md) or attach an existing file with [`ace-demo attach`](docs/usage.md) so reviewers see actual terminal output. Use `/as-demo-record` for agent-driven recording sessions.
|
|
65
|
+
|
|
66
|
+
*Future: web interaction recording is planned alongside terminal capture.*
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
[Getting Started](docs/getting-started.md) | [Usage Guide](docs/usage.md) | [Handbook - Skills, Agents, Templates](docs/handbook.md) | Part of [ACE](https://github.com/cs3b/ace)
|
data/Rakefile
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "bundler/gem_tasks"
|
|
4
|
+
require "minitest/test_task"
|
|
5
|
+
|
|
6
|
+
desc "Run tests using ace-test"
|
|
7
|
+
task :test do
|
|
8
|
+
sh "ace-test"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
desc "Run tests directly (CI mode)"
|
|
12
|
+
Minitest::TestTask.create(:ci)
|
|
13
|
+
|
|
14
|
+
task spec: :test
|
|
15
|
+
|
|
16
|
+
task default: :test
|
data/exe/ace-demo
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require_relative "../lib/ace/demo"
|
|
5
|
+
require "ace/support/cli"
|
|
6
|
+
|
|
7
|
+
args = ARGV.empty? ? ["--help"] : ARGV
|
|
8
|
+
|
|
9
|
+
begin
|
|
10
|
+
Ace::Support::Cli::Runner.new(Ace::Demo::CLI).call(args: args)
|
|
11
|
+
rescue Ace::Support::Cli::Error => e
|
|
12
|
+
warn e.message
|
|
13
|
+
exit(e.exit_code)
|
|
14
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: as-demo-create
|
|
3
|
+
description: Create or update VHS demo tapes from shell commands
|
|
4
|
+
# bundle: wfi://demo/create
|
|
5
|
+
# agent: general-purpose
|
|
6
|
+
user-invocable: true
|
|
7
|
+
allowed-tools:
|
|
8
|
+
- Bash(ace-demo:*)
|
|
9
|
+
- Bash(ace-bundle:*)
|
|
10
|
+
- Read
|
|
11
|
+
argument-hint: "<name> [--force] -- <commands...>"
|
|
12
|
+
last_modified: 2026-03-05
|
|
13
|
+
source: ace-demo
|
|
14
|
+
integration:
|
|
15
|
+
targets:
|
|
16
|
+
- claude
|
|
17
|
+
- codex
|
|
18
|
+
- gemini
|
|
19
|
+
- opencode
|
|
20
|
+
- pi
|
|
21
|
+
skill:
|
|
22
|
+
kind: workflow
|
|
23
|
+
execution:
|
|
24
|
+
workflow: wfi://demo/create
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
Load and run `ace-bundle wfi://demo/create` in the current project, then follow the loaded workflow as the source of truth and execute it end-to-end instead of only summarizing it.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: as-demo-record
|
|
3
|
+
description: Record terminal demos from VHS tapes or inline commands
|
|
4
|
+
# bundle: wfi://demo/record
|
|
5
|
+
# agent: general-purpose
|
|
6
|
+
user-invocable: true
|
|
7
|
+
allowed-tools:
|
|
8
|
+
- Bash(ace-demo:*)
|
|
9
|
+
- Bash(ace-bundle:*)
|
|
10
|
+
- Read
|
|
11
|
+
argument-hint: "<tape|name> [--pr <number>] [-- commands...]"
|
|
12
|
+
last_modified: 2026-03-05
|
|
13
|
+
source: ace-demo
|
|
14
|
+
integration:
|
|
15
|
+
targets:
|
|
16
|
+
- claude
|
|
17
|
+
- codex
|
|
18
|
+
- gemini
|
|
19
|
+
- opencode
|
|
20
|
+
- pi
|
|
21
|
+
skill:
|
|
22
|
+
kind: workflow
|
|
23
|
+
execution:
|
|
24
|
+
workflow: wfi://demo/record
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
Load and run `ace-bundle wfi://demo/record` in the current project, then follow the loaded workflow as the source of truth and execute it end-to-end instead of only summarizing it.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
doc-type: workflow
|
|
3
|
+
title: Create Demo Tape Workflow
|
|
4
|
+
purpose: tape creation workflow instruction
|
|
5
|
+
ace-docs:
|
|
6
|
+
last-updated: 2026-03-05
|
|
7
|
+
last-checked: 2026-03-21
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Create Demo Tape Workflow
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
Create or update VHS demo tapes using `ace-demo create`. Tapes are stored in `.ace/demo/tapes/` and define terminal recordings as reproducible scripts.
|
|
15
|
+
|
|
16
|
+
## Context
|
|
17
|
+
|
|
18
|
+
Tapes are VHS script files that define terminal sessions: commands to type, timing, and display settings. Once created, tapes can be recorded with `ace-demo record`.
|
|
19
|
+
|
|
20
|
+
**Tape discovery cascade** (highest to lowest priority):
|
|
21
|
+
1. Direct file path
|
|
22
|
+
2. `.ace/demo/tapes/` — project-specific (committed)
|
|
23
|
+
3. `~/.ace/demo/tapes/` — user-wide
|
|
24
|
+
4. `.ace-defaults/demo/tapes/` — built-in
|
|
25
|
+
|
|
26
|
+
## Variables
|
|
27
|
+
|
|
28
|
+
- `$ARGUMENTS`: Tape name, options, and commands (everything after `--`)
|
|
29
|
+
|
|
30
|
+
## Instructions
|
|
31
|
+
|
|
32
|
+
1. **Preview the tape** before writing:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
ace-demo create <name> --dry-run -- "cmd1" "cmd2"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
This prints the generated tape content without writing any file.
|
|
39
|
+
|
|
40
|
+
2. **Create the tape**:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
ace-demo create <name> -- "cmd1" "cmd2"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Add metadata for discoverability:
|
|
47
|
+
```bash
|
|
48
|
+
ace-demo create <name> --desc "What this demo shows" --tags "feature,setup" -- "cmd1" "cmd2"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
3. **Update an existing tape** (overwrite):
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
ace-demo create <name> --force -- "cmd1" "cmd2"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
4. **Verify** the created tape:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
ace-demo show <name>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
This displays metadata and full tape contents.
|
|
64
|
+
|
|
65
|
+
5. **List all available tapes** to confirm visibility:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
ace-demo list
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Options Reference
|
|
72
|
+
|
|
73
|
+
| Option | Description |
|
|
74
|
+
|--------|-------------|
|
|
75
|
+
| `--desc/-D <text>` | Description metadata |
|
|
76
|
+
| `--tags/-T <tags>` | Comma-separated tags |
|
|
77
|
+
| `--format/-f <fmt>` | Output format: gif, mp4, webm (default: gif) |
|
|
78
|
+
| `--timeout/-t <dur>` | Wait time after each command (default: 2s) |
|
|
79
|
+
| `--width <px>` | Terminal width in pixels (default: 960) |
|
|
80
|
+
| `--height <px>` | Terminal height in pixels (default: 480) |
|
|
81
|
+
| `--font-size <n>` | Font size (default: 16) |
|
|
82
|
+
| `--force` | Overwrite existing tape |
|
|
83
|
+
| `--dry-run/-n` | Preview content without writing |
|
|
84
|
+
|
|
85
|
+
## Success Criteria
|
|
86
|
+
|
|
87
|
+
- Tape file created at `.ace/demo/tapes/<name>.tape`
|
|
88
|
+
- `ace-demo show <name>` displays correct metadata and commands
|
|
89
|
+
- `ace-demo list` shows the new tape
|