rdc-cli 0.3.0__tar.gz → 0.3.2__tar.gz

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.
Files changed (516) hide show
  1. rdc_cli-0.3.2/.commitlintrc.yml +2 -0
  2. rdc_cli-0.3.2/.githooks/pre-commit +7 -0
  3. rdc_cli-0.3.2/.githooks/pre-push +7 -0
  4. rdc_cli-0.3.2/.github/CODEOWNERS +1 -0
  5. rdc_cli-0.3.2/.github/workflows/aur.yml +63 -0
  6. rdc_cli-0.3.2/.github/workflows/ci.yml +183 -0
  7. rdc_cli-0.3.2/.github/workflows/commitlint.yml +27 -0
  8. rdc_cli-0.3.2/.github/workflows/docs.yml +127 -0
  9. rdc_cli-0.3.2/.gitignore +20 -0
  10. rdc_cli-0.3.2/.python-version +1 -0
  11. rdc_cli-0.3.2/.release-please-manifest.json +1 -0
  12. rdc_cli-0.3.2/Makefile +20 -0
  13. rdc_cli-0.3.2/PKG-INFO +207 -0
  14. rdc_cli-0.3.2/README.md +178 -0
  15. rdc_cli-0.3.2/SECURITY.md +6 -0
  16. rdc_cli-0.3.2/aur/PKGBUILD +97 -0
  17. rdc_cli-0.3.2/aur/stable/PKGBUILD +83 -0
  18. rdc_cli-0.3.2/docker/Dockerfile +44 -0
  19. rdc_cli-0.3.2/docs/cli-reference.md +8 -0
  20. rdc_cli-0.3.2/docs/index.md +35 -0
  21. rdc_cli-0.3.2/docs/install.md +63 -0
  22. rdc_cli-0.3.2/docs/usage.md +92 -0
  23. rdc_cli-0.3.2/docs/vfs.md +71 -0
  24. rdc_cli-0.3.2/docs-astro/astro.config.mjs +10 -0
  25. rdc_cli-0.3.2/docs-astro/package-lock.json +6482 -0
  26. rdc_cli-0.3.2/docs-astro/package.json +24 -0
  27. rdc_cli-0.3.2/docs-astro/public/favicon.svg +5 -0
  28. rdc_cli-0.3.2/docs-astro/src/components/Commands.astro +73 -0
  29. rdc_cli-0.3.2/docs-astro/src/components/Demo.astro +93 -0
  30. rdc_cli-0.3.2/docs-astro/src/components/Features.astro +116 -0
  31. rdc_cli-0.3.2/docs-astro/src/components/Footer.astro +39 -0
  32. rdc_cli-0.3.2/docs-astro/src/components/Hero.astro +109 -0
  33. rdc_cli-0.3.2/docs-astro/src/components/Install.astro +116 -0
  34. rdc_cli-0.3.2/docs-astro/src/components/Navbar.astro +69 -0
  35. rdc_cli-0.3.2/docs-astro/src/components/Philosophy.astro +80 -0
  36. rdc_cli-0.3.2/docs-astro/src/components/Terminal.astro +20 -0
  37. rdc_cli-0.3.2/docs-astro/src/components/ThemeSwitcher.astro +41 -0
  38. rdc_cli-0.3.2/docs-astro/src/data/stats.json +7 -0
  39. rdc_cli-0.3.2/docs-astro/src/layouts/Base.astro +37 -0
  40. rdc_cli-0.3.2/docs-astro/src/layouts/Docs.astro +98 -0
  41. rdc_cli-0.3.2/docs-astro/src/pages/docs/ai-integration.astro +116 -0
  42. rdc_cli-0.3.2/docs-astro/src/pages/docs/commands.astro +313 -0
  43. rdc_cli-0.3.2/docs-astro/src/pages/docs/design.astro +191 -0
  44. rdc_cli-0.3.2/docs-astro/src/pages/docs/examples.astro +362 -0
  45. rdc_cli-0.3.2/docs-astro/src/pages/docs/index.astro +64 -0
  46. rdc_cli-0.3.2/docs-astro/src/pages/docs/install.astro +64 -0
  47. rdc_cli-0.3.2/docs-astro/src/pages/docs/usage.astro +95 -0
  48. rdc_cli-0.3.2/docs-astro/src/pages/docs/vfs.astro +82 -0
  49. rdc_cli-0.3.2/docs-astro/src/pages/index.astro +24 -0
  50. rdc_cli-0.3.2/docs-astro/src/styles/global.css +201 -0
  51. rdc_cli-0.3.2/docs-astro/tailwind.config.mjs +54 -0
  52. rdc_cli-0.3.2/docs-astro/tapes/pipeline.tape +41 -0
  53. rdc_cli-0.3.2/docs-astro/tapes/quickstart.tape +37 -0
  54. rdc_cli-0.3.2/docs-astro/tests/validate.mjs +185 -0
  55. rdc_cli-0.3.2/docs-astro/tsconfig.json +3 -0
  56. rdc_cli-0.3.2/mkdocs.yml +37 -0
  57. rdc_cli-0.3.2/mypy.ini +7 -0
  58. rdc_cli-0.3.2/openspec/changes/2026-02-22-bugfix-remaining-blackbox/proposal.md +164 -0
  59. rdc_cli-0.3.2/openspec/changes/2026-02-22-bugfix-remaining-blackbox/tasks.md +478 -0
  60. rdc_cli-0.3.2/openspec/changes/2026-02-22-bugfix-remaining-blackbox/test-plan.md +562 -0
  61. rdc_cli-0.3.2/openspec/changes/2026-02-22-code-maintainability/proposal.md +36 -0
  62. rdc_cli-0.3.2/openspec/changes/2026-02-22-code-maintainability/tasks.md +55 -0
  63. rdc_cli-0.3.2/openspec/changes/2026-02-22-code-maintainability/test-plan.md +42 -0
  64. rdc_cli-0.3.2/openspec/changes/2026-02-22-docs-automation/proposal.md +95 -0
  65. rdc_cli-0.3.2/openspec/changes/2026-02-22-docs-automation/tasks.md +185 -0
  66. rdc_cli-0.3.2/openspec/changes/2026-02-22-docs-automation/test-plan.md +68 -0
  67. rdc_cli-0.3.2/openspec/changes/2026-02-22-skill-auto-install/proposal.md +141 -0
  68. rdc_cli-0.3.2/openspec/changes/2026-02-22-skill-auto-install/tasks.md +118 -0
  69. rdc_cli-0.3.2/openspec/changes/2026-02-22-skill-auto-install/test-plan.md +134 -0
  70. rdc_cli-0.3.2/openspec/changes/2026-02-23-docs-polish/proposal.md +66 -0
  71. rdc_cli-0.3.2/openspec/changes/2026-02-23-docs-polish/tasks.md +32 -0
  72. rdc_cli-0.3.2/openspec/changes/2026-02-23-docs-polish/test-plan.md +48 -0
  73. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-bootstrap-foundation/proposal.md +15 -0
  74. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-bootstrap-foundation/tasks.md +12 -0
  75. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-bootstrap-foundation/test-plan.md +49 -0
  76. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-ci-hardening/proposal.md +12 -0
  77. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-ci-hardening/specs/ci/spec.md +9 -0
  78. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-ci-hardening/tasks.md +9 -0
  79. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-ci-hardening/test-plan.md +17 -0
  80. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-core-checks/proposal.md +13 -0
  81. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-core-checks/specs/foundation/spec.md +14 -0
  82. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-core-checks/tasks.md +12 -0
  83. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-core-checks/test-plan.md +43 -0
  84. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/proposal.md +13 -0
  85. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/specs/daemon/spec.md +12 -0
  86. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/tasks.md +8 -0
  87. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/test-plan.md +21 -0
  88. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-daemon-transport/proposal.md +13 -0
  89. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-daemon-transport/specs/daemon/spec.md +14 -0
  90. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-daemon-transport/tasks.md +11 -0
  91. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-daemon-transport/test-plan.md +18 -0
  92. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/proposal.md +12 -0
  93. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/specs/tooling/spec.md +12 -0
  94. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/tasks.md +9 -0
  95. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/test-plan.md +17 -0
  96. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-pixi-env/proposal.md +12 -0
  97. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-pixi-env/specs/tooling/spec.md +8 -0
  98. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-pixi-env/tasks.md +8 -0
  99. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-pixi-env/test-plan.md +16 -0
  100. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-session-skeleton/proposal.md +13 -0
  101. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-session-skeleton/specs/session/spec.md +19 -0
  102. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-session-skeleton/tasks.md +11 -0
  103. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-session-skeleton/test-plan.md +40 -0
  104. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-structure-refactor/design.md +12 -0
  105. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-structure-refactor/proposal.md +18 -0
  106. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-structure-refactor/specs/architecture/spec.md +9 -0
  107. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-structure-refactor/tasks.md +9 -0
  108. rdc_cli-0.3.2/openspec/changes/archive/2026-02-18-phase0-structure-refactor/test-plan.md +17 -0
  109. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-count-shadermap/proposal.md +39 -0
  110. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-count-shadermap/specs/daemon/spec.md +27 -0
  111. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-count-shadermap/tasks.md +24 -0
  112. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-count-shadermap/test-plan.md +51 -0
  113. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-daemon-replay/proposal.md +39 -0
  114. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-daemon-replay/specs/daemon/spec.md +44 -0
  115. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-daemon-replay/specs/foundation/spec.md +44 -0
  116. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-daemon-replay/tasks.md +38 -0
  117. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-daemon-replay/test-plan.md +49 -0
  118. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-draws-events/proposal.md +54 -0
  119. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-draws-events/specs/daemon/spec.md +32 -0
  120. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-draws-events/tasks.md +32 -0
  121. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-draws-events/test-plan.md +81 -0
  122. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-log/proposal.md +33 -0
  123. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-log/tasks.md +10 -0
  124. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-log/test-plan.md +37 -0
  125. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-pass-detail/proposal.md +43 -0
  126. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-pass-detail/tasks.md +10 -0
  127. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-pass-detail/test-plan.md +35 -0
  128. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-resources-passes/proposal.md +23 -0
  129. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-resources-passes/specs/daemon/spec.md +20 -0
  130. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-resources-passes/tasks.md +12 -0
  131. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-resources-passes/test-plan.md +25 -0
  132. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-shader-extended/proposal.md +41 -0
  133. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-shader-extended/tasks.md +57 -0
  134. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1-shader-extended/test-plan.md +47 -0
  135. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1.5-vfs/proposal.md +133 -0
  136. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1.5-vfs/tasks.md +114 -0
  137. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase1.5-vfs/test-plan.md +161 -0
  138. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase2-api-fix/proposal.md +116 -0
  139. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase2-api-fix/tasks.md +55 -0
  140. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase2-api-fix/test-plan.md +58 -0
  141. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase2-buffer-decode/proposal.md +69 -0
  142. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase2-buffer-decode/tasks.md +41 -0
  143. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase2-buffer-decode/test-plan.md +74 -0
  144. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase2-pipeline-state/proposal.md +82 -0
  145. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase2-pipeline-state/tasks.md +44 -0
  146. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase2-pipeline-state/test-plan.md +94 -0
  147. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase2-vfs-binary/proposal.md +230 -0
  148. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase2-vfs-binary/tasks.md +232 -0
  149. rdc_cli-0.3.2/openspec/changes/archive/2026-02-19-phase2-vfs-binary/test-plan.md +258 -0
  150. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2-counters/proposal.md +145 -0
  151. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2-counters/tasks.md +92 -0
  152. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2-counters/test-plan.md +215 -0
  153. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2-descriptors/proposal.md +104 -0
  154. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2-descriptors/tasks.md +71 -0
  155. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2-descriptors/test-plan.md +142 -0
  156. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2-search/proposal.md +133 -0
  157. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2-search/tasks.md +50 -0
  158. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2-search/test-plan.md +86 -0
  159. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2-usage/proposal.md +120 -0
  160. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2-usage/tasks.md +77 -0
  161. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2-usage/test-plan.md +165 -0
  162. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/proposal.md +34 -0
  163. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/tasks.md +7 -0
  164. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/test-plan.md +35 -0
  165. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/proposal.md +34 -0
  166. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/tasks.md +9 -0
  167. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/test-plan.md +42 -0
  168. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/proposal.md +54 -0
  169. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/tasks.md +28 -0
  170. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/test-plan.md +63 -0
  171. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.5-release-ci/proposal.md +31 -0
  172. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.5-release-ci/tasks.md +7 -0
  173. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.5-release-ci/test-plan.md +42 -0
  174. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/proposal.md +29 -0
  175. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/tasks.md +8 -0
  176. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/test-plan.md +40 -0
  177. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.6-output-quality/proposal.md +48 -0
  178. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.6-output-quality/tasks.md +30 -0
  179. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.6-output-quality/test-plan.md +69 -0
  180. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/proposal.md +49 -0
  181. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/tasks.md +12 -0
  182. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/test-plan.md +67 -0
  183. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.6-shader-api/proposal.md +55 -0
  184. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.6-shader-api/tasks.md +10 -0
  185. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-phase2.6-shader-api/test-plan.md +65 -0
  186. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-vfs-path-completion/proposal.md +47 -0
  187. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-vfs-path-completion/tasks.md +19 -0
  188. rdc_cli-0.3.2/openspec/changes/archive/2026-02-20-vfs-path-completion/test-plan.md +50 -0
  189. rdc_cli-0.3.2/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/proposal.md +35 -0
  190. rdc_cli-0.3.2/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/tasks.md +9 -0
  191. rdc_cli-0.3.2/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/test-plan.md +34 -0
  192. rdc_cli-0.3.2/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/proposal.md +43 -0
  193. rdc_cli-0.3.2/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/tasks.md +15 -0
  194. rdc_cli-0.3.2/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/test-plan.md +42 -0
  195. rdc_cli-0.3.2/openspec/changes/archive/2026-02-21-fix-pass-detection/proposal.md +93 -0
  196. rdc_cli-0.3.2/openspec/changes/archive/2026-02-21-fix-pass-detection/tasks.md +27 -0
  197. rdc_cli-0.3.2/openspec/changes/archive/2026-02-21-fix-pass-detection/test-plan.md +84 -0
  198. rdc_cli-0.3.2/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/proposal.md +45 -0
  199. rdc_cli-0.3.2/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/tasks.md +13 -0
  200. rdc_cli-0.3.2/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/test-plan.md +47 -0
  201. rdc_cli-0.3.2/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/proposal.md +193 -0
  202. rdc_cli-0.3.2/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/tasks.md +138 -0
  203. rdc_cli-0.3.2/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/test-plan.md +163 -0
  204. rdc_cli-0.3.2/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/proposal.md +199 -0
  205. rdc_cli-0.3.2/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/tasks.md +154 -0
  206. rdc_cli-0.3.2/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/test-plan.md +154 -0
  207. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/proposal.md +97 -0
  208. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/tasks.md +281 -0
  209. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/test-plan.md +219 -0
  210. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-ci-repo-hardening/proposal.md +36 -0
  211. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-ci-repo-hardening/tasks.md +45 -0
  212. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-ci-repo-hardening/test-plan.md +49 -0
  213. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-code-maintainability/proposal.md +36 -0
  214. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-code-maintainability/tasks.md +55 -0
  215. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-code-maintainability/test-plan.md +42 -0
  216. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-consistent-output-options/proposal.md +157 -0
  217. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-consistent-output-options/tasks.md +246 -0
  218. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-consistent-output-options/test-plan.md +222 -0
  219. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/proposal.md +108 -0
  220. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/tasks.md +13 -0
  221. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/test-plan.md +140 -0
  222. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/proposal.md +129 -0
  223. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/tasks.md +71 -0
  224. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/test-plan.md +121 -0
  225. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/proposal.md +128 -0
  226. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/tasks.md +105 -0
  227. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/test-plan.md +134 -0
  228. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-diff-draws/proposal.md +105 -0
  229. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-diff-draws/tasks.md +45 -0
  230. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-diff-draws/test-plan.md +49 -0
  231. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-diff-framebuffer/proposal.md +159 -0
  232. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-diff-framebuffer/tasks.md +77 -0
  233. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-diff-framebuffer/test-plan.md +117 -0
  234. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-diff-infrastructure/proposal.md +170 -0
  235. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-diff-infrastructure/tasks.md +43 -0
  236. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-diff-infrastructure/test-plan.md +84 -0
  237. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-diff-pipeline/proposal.md +165 -0
  238. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-diff-pipeline/tasks.md +90 -0
  239. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-diff-pipeline/test-plan.md +159 -0
  240. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-diff-resources/proposal.md +111 -0
  241. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-diff-resources/tasks.md +80 -0
  242. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-diff-resources/test-plan.md +170 -0
  243. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-diff-stats/proposal.md +106 -0
  244. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-diff-stats/tasks.md +51 -0
  245. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-diff-stats/test-plan.md +86 -0
  246. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-image-compare/proposal.md +98 -0
  247. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-image-compare/tasks.md +9 -0
  248. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-image-compare/test-plan.md +49 -0
  249. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase3a-script/proposal.md +177 -0
  250. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase3a-script/tasks.md +92 -0
  251. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase3a-script/test-plan.md +174 -0
  252. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/proposal.md +323 -0
  253. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/tasks.md +170 -0
  254. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/test-plan.md +217 -0
  255. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase3c-snapshot/proposal.md +91 -0
  256. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase3c-snapshot/tasks.md +91 -0
  257. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase3c-snapshot/test-plan.md +128 -0
  258. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase4a-shader-debug/proposal.md +332 -0
  259. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase4a-shader-debug/tasks.md +100 -0
  260. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase4a-shader-debug/test-plan.md +118 -0
  261. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/proposal.md +430 -0
  262. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/tasks.md +227 -0
  263. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/test-plan.md +263 -0
  264. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase4c-mesh-export/proposal.md +58 -0
  265. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase4c-mesh-export/tasks.md +28 -0
  266. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase4c-mesh-export/test-plan.md +39 -0
  267. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase4c-overlay/proposal.md +113 -0
  268. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase4c-overlay/tasks.md +54 -0
  269. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase4c-overlay/test-plan.md +128 -0
  270. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase5-debug-thread/proposal.md +130 -0
  271. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase5-debug-thread/tasks.md +40 -0
  272. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase5-debug-thread/test-plan.md +80 -0
  273. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase5-pick-pixel/proposal.md +137 -0
  274. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase5-pick-pixel/tasks.md +52 -0
  275. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase5-pick-pixel/test-plan.md +81 -0
  276. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase5-tex-stats/proposal.md +177 -0
  277. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase5-tex-stats/tasks.md +23 -0
  278. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-phase5-tex-stats/test-plan.md +93 -0
  279. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-robustness-hardening/proposal.md +111 -0
  280. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-robustness-hardening/tasks.md +143 -0
  281. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-robustness-hardening/test-plan.md +171 -0
  282. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-security-hardening-2/proposal.md +15 -0
  283. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-security-hardening-2/tasks.md +21 -0
  284. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-security-hardening-2/test-plan.md +29 -0
  285. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-worktree-isolation/proposal.md +71 -0
  286. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-worktree-isolation/tasks.md +18 -0
  287. rdc_cli-0.3.2/openspec/changes/archive/2026-02-22-worktree-isolation/test-plan.md +38 -0
  288. rdc_cli-0.3.2/openspec/changes/archive/2026-02-23-test-gpu-coverage/proposal.md +59 -0
  289. rdc_cli-0.3.2/openspec/changes/archive/2026-02-23-test-gpu-coverage/tasks.md +32 -0
  290. rdc_cli-0.3.2/openspec/changes/archive/2026-02-23-test-gpu-coverage/test-plan.md +75 -0
  291. rdc_cli-0.3.2/openspec/changes/archive/2026-02-23-test-mock-accuracy/proposal.md +53 -0
  292. rdc_cli-0.3.2/openspec/changes/archive/2026-02-23-test-mock-accuracy/tasks.md +34 -0
  293. rdc_cli-0.3.2/openspec/changes/archive/2026-02-23-test-mock-accuracy/test-plan.md +81 -0
  294. rdc_cli-0.3.2/openspec/specs/architecture/spec.md +13 -0
  295. rdc_cli-0.3.2/openspec/specs/ci/spec.md +23 -0
  296. rdc_cli-0.3.2/openspec/specs/daemon/spec.md +135 -0
  297. rdc_cli-0.3.2/openspec/specs/foundation/spec.md +18 -0
  298. rdc_cli-0.3.2/openspec/specs/packaging/spec.md +56 -0
  299. rdc_cli-0.3.2/openspec/specs/session/spec.md +23 -0
  300. rdc_cli-0.3.2/openspec/specs/tooling/spec.md +23 -0
  301. rdc_cli-0.3.2/pixi.lock +676 -0
  302. rdc_cli-0.3.2/pixi.toml +26 -0
  303. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/pyproject.toml +6 -2
  304. rdc_cli-0.3.2/release-please-config.json +34 -0
  305. rdc_cli-0.3.2/ruff.toml +9 -0
  306. rdc_cli-0.3.2/scripts/build-renderdoc.sh +82 -0
  307. rdc_cli-0.3.2/scripts/capture_fixture.sh +22 -0
  308. rdc_cli-0.3.2/scripts/e2e-test.sh +143 -0
  309. rdc_cli-0.3.2/scripts/ensure-renderdoc.sh +15 -0
  310. rdc_cli-0.3.2/scripts/gen-skill-ref.py +103 -0
  311. rdc_cli-0.3.2/scripts/gen-stats.py +55 -0
  312. rdc_cli-0.3.2/scripts/setup-renderdoc.sh +68 -0
  313. rdc_cli-0.3.2/scripts/verify-package.sh +80 -0
  314. rdc_cli-0.3.2/src/rdc/__init__.py +10 -0
  315. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/_skills/references/commands-quick-ref.md +125 -4
  316. rdc_cli-0.3.2/src/rdc/capture_core.py +168 -0
  317. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/cli.py +20 -0
  318. rdc_cli-0.3.2/src/rdc/commands/capture.py +187 -0
  319. rdc_cli-0.3.2/src/rdc/commands/capture_control.py +172 -0
  320. rdc_cli-0.3.2/src/rdc/commands/capturefile.py +70 -0
  321. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/snapshot.py +15 -4
  322. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/daemon_server.py +2 -0
  323. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/diff/framebuffer.py +38 -2
  324. rdc_cli-0.3.2/src/rdc/handlers/capturefile.py +115 -0
  325. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/handlers/debug.py +6 -4
  326. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/handlers/pixel.py +12 -0
  327. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/handlers/query.py +22 -19
  328. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/services/query_service.py +0 -27
  329. rdc_cli-0.3.2/src/rdc/target_state.py +83 -0
  330. rdc_cli-0.3.2/src/rdc/vfs/__init__.py +0 -0
  331. rdc_cli-0.3.2/src/rdc_cli.egg-info/PKG-INFO +207 -0
  332. rdc_cli-0.3.2/src/rdc_cli.egg-info/SOURCES.txt +509 -0
  333. rdc_cli-0.3.2/tests/conftest.py +82 -0
  334. rdc_cli-0.3.2/tests/fixtures/hello_triangle.rdc +0 -0
  335. rdc_cli-0.3.2/tests/fixtures/vkcube.rdc +0 -0
  336. rdc_cli-0.3.2/tests/fixtures/vkcube_validation.rdc +0 -0
  337. rdc_cli-0.3.2/tests/integration/test_daemon_handlers_real.py +2004 -0
  338. rdc_cli-0.3.2/tests/integration/test_mock_api_sync.py +129 -0
  339. rdc_cli-0.3.2/tests/integration/test_real_replay.py +114 -0
  340. rdc_cli-0.3.2/tests/integration/test_vulkan_samples.py +285 -0
  341. rdc_cli-0.3.2/tests/mocks/mock_renderdoc.py +1813 -0
  342. rdc_cli-0.3.2/tests/unit/test_adapter.py +62 -0
  343. rdc_cli-0.3.2/tests/unit/test_assert_ci_commands.py +684 -0
  344. rdc_cli-0.3.2/tests/unit/test_assert_image_command.py +115 -0
  345. rdc_cli-0.3.2/tests/unit/test_binary_daemon.py +389 -0
  346. rdc_cli-0.3.2/tests/unit/test_buffer_decode.py +516 -0
  347. rdc_cli-0.3.2/tests/unit/test_capture.py +256 -0
  348. rdc_cli-0.3.2/tests/unit/test_capture_control.py +210 -0
  349. rdc_cli-0.3.2/tests/unit/test_capture_core.py +262 -0
  350. rdc_cli-0.3.2/tests/unit/test_capturefile_commands.py +130 -0
  351. rdc_cli-0.3.2/tests/unit/test_capturefile_handlers.py +161 -0
  352. rdc_cli-0.3.2/tests/unit/test_ci_files.py +11 -0
  353. rdc_cli-0.3.2/tests/unit/test_cli.py +20 -0
  354. rdc_cli-0.3.2/tests/unit/test_cli_session_flag.py +107 -0
  355. rdc_cli-0.3.2/tests/unit/test_completion.py +50 -0
  356. rdc_cli-0.3.2/tests/unit/test_count_shadermap.py +425 -0
  357. rdc_cli-0.3.2/tests/unit/test_counters_commands.py +191 -0
  358. rdc_cli-0.3.2/tests/unit/test_counters_daemon.py +262 -0
  359. rdc_cli-0.3.2/tests/unit/test_daemon_crash_regression.py +175 -0
  360. rdc_cli-0.3.2/tests/unit/test_daemon_output_quality.py +244 -0
  361. rdc_cli-0.3.2/tests/unit/test_daemon_pipeline_extended.py +341 -0
  362. rdc_cli-0.3.2/tests/unit/test_daemon_server_unit.py +397 -0
  363. rdc_cli-0.3.2/tests/unit/test_daemon_shader_api_fix.py +572 -0
  364. rdc_cli-0.3.2/tests/unit/test_daemon_shader_extended.py +241 -0
  365. rdc_cli-0.3.2/tests/unit/test_daemon_transport.py +125 -0
  366. rdc_cli-0.3.2/tests/unit/test_debug_commands.py +777 -0
  367. rdc_cli-0.3.2/tests/unit/test_debug_handlers.py +929 -0
  368. rdc_cli-0.3.2/tests/unit/test_descriptors_daemon.py +206 -0
  369. rdc_cli-0.3.2/tests/unit/test_diff_alignment.py +267 -0
  370. rdc_cli-0.3.2/tests/unit/test_diff_command.py +534 -0
  371. rdc_cli-0.3.2/tests/unit/test_diff_draws.py +347 -0
  372. rdc_cli-0.3.2/tests/unit/test_diff_framebuffer.py +784 -0
  373. rdc_cli-0.3.2/tests/unit/test_diff_pipeline.py +507 -0
  374. rdc_cli-0.3.2/tests/unit/test_diff_resources.py +458 -0
  375. rdc_cli-0.3.2/tests/unit/test_diff_service.py +396 -0
  376. rdc_cli-0.3.2/tests/unit/test_diff_stats.py +738 -0
  377. rdc_cli-0.3.2/tests/unit/test_diff_summary.py +176 -0
  378. rdc_cli-0.3.2/tests/unit/test_discover.py +50 -0
  379. rdc_cli-0.3.2/tests/unit/test_doctor.py +58 -0
  380. rdc_cli-0.3.2/tests/unit/test_draws_daemon.py +168 -0
  381. rdc_cli-0.3.2/tests/unit/test_draws_events_cli.py +53 -0
  382. rdc_cli-0.3.2/tests/unit/test_draws_events_daemon.py +463 -0
  383. rdc_cli-0.3.2/tests/unit/test_events_commands.py +187 -0
  384. rdc_cli-0.3.2/tests/unit/test_export_commands.py +169 -0
  385. rdc_cli-0.3.2/tests/unit/test_export_overlay.py +112 -0
  386. rdc_cli-0.3.2/tests/unit/test_fix1_draws_pass_name.py +106 -0
  387. rdc_cli-0.3.2/tests/unit/test_fix2_vfs_intermediate_dirs.py +173 -0
  388. rdc_cli-0.3.2/tests/unit/test_fix3_friendly_pass_name.py +31 -0
  389. rdc_cli-0.3.2/tests/unit/test_formatters.py +90 -0
  390. rdc_cli-0.3.2/tests/unit/test_gen_skill_ref.py +66 -0
  391. rdc_cli-0.3.2/tests/unit/test_image_compare.py +154 -0
  392. rdc_cli-0.3.2/tests/unit/test_info_commands.py +415 -0
  393. rdc_cli-0.3.2/tests/unit/test_install_skill.py +73 -0
  394. rdc_cli-0.3.2/tests/unit/test_json_errors.py +208 -0
  395. rdc_cli-0.3.2/tests/unit/test_mesh_commands.py +149 -0
  396. rdc_cli-0.3.2/tests/unit/test_mesh_handler.py +187 -0
  397. rdc_cli-0.3.2/tests/unit/test_mock_capture_types.py +265 -0
  398. rdc_cli-0.3.2/tests/unit/test_mock_renderdoc.py +169 -0
  399. rdc_cli-0.3.2/tests/unit/test_output_options.py +64 -0
  400. rdc_cli-0.3.2/tests/unit/test_overlay_handler.py +178 -0
  401. rdc_cli-0.3.2/tests/unit/test_pick_pixel_commands.py +122 -0
  402. rdc_cli-0.3.2/tests/unit/test_pick_pixel_daemon.py +214 -0
  403. rdc_cli-0.3.2/tests/unit/test_pipeline_cli_phase27.py +258 -0
  404. rdc_cli-0.3.2/tests/unit/test_pipeline_commands.py +410 -0
  405. rdc_cli-0.3.2/tests/unit/test_pipeline_daemon.py +87 -0
  406. rdc_cli-0.3.2/tests/unit/test_pipeline_section_routing.py +334 -0
  407. rdc_cli-0.3.2/tests/unit/test_pipeline_shader.py +311 -0
  408. rdc_cli-0.3.2/tests/unit/test_pipeline_state.py +234 -0
  409. rdc_cli-0.3.2/tests/unit/test_pixel_history_commands.py +240 -0
  410. rdc_cli-0.3.2/tests/unit/test_pixel_history_daemon.py +247 -0
  411. rdc_cli-0.3.2/tests/unit/test_pixi_files.py +16 -0
  412. rdc_cli-0.3.2/tests/unit/test_protocol.py +35 -0
  413. rdc_cli-0.3.2/tests/unit/test_query_service.py +565 -0
  414. rdc_cli-0.3.2/tests/unit/test_resources_commands.py +253 -0
  415. rdc_cli-0.3.2/tests/unit/test_resources_filter.py +356 -0
  416. rdc_cli-0.3.2/tests/unit/test_script_command.py +199 -0
  417. rdc_cli-0.3.2/tests/unit/test_script_handler.py +178 -0
  418. rdc_cli-0.3.2/tests/unit/test_search.py +513 -0
  419. rdc_cli-0.3.2/tests/unit/test_session_commands.py +96 -0
  420. rdc_cli-0.3.2/tests/unit/test_session_service.py +185 -0
  421. rdc_cli-0.3.2/tests/unit/test_session_state.py +208 -0
  422. rdc_cli-0.3.2/tests/unit/test_shader_edit_commands.py +207 -0
  423. rdc_cli-0.3.2/tests/unit/test_shader_edit_handlers.py +286 -0
  424. rdc_cli-0.3.2/tests/unit/test_shader_preload.py +330 -0
  425. rdc_cli-0.3.2/tests/unit/test_skill_structure.py +61 -0
  426. rdc_cli-0.3.2/tests/unit/test_snapshot_command.py +280 -0
  427. rdc_cli-0.3.2/tests/unit/test_target_state.py +76 -0
  428. rdc_cli-0.3.2/tests/unit/test_tex_stats_commands.py +153 -0
  429. rdc_cli-0.3.2/tests/unit/test_tex_stats_handler.py +273 -0
  430. rdc_cli-0.3.2/tests/unit/test_tooling_files.py +31 -0
  431. rdc_cli-0.3.2/tests/unit/test_unix_helpers_commands.py +203 -0
  432. rdc_cli-0.3.2/tests/unit/test_usage_commands.py +188 -0
  433. rdc_cli-0.3.2/tests/unit/test_usage_daemon.py +144 -0
  434. rdc_cli-0.3.2/tests/unit/test_vfs_binary.py +143 -0
  435. rdc_cli-0.3.2/tests/unit/test_vfs_commands.py +639 -0
  436. rdc_cli-0.3.2/tests/unit/test_vfs_completion.py +139 -0
  437. rdc_cli-0.3.2/tests/unit/test_vfs_daemon.py +474 -0
  438. rdc_cli-0.3.2/tests/unit/test_vfs_formatter.py +87 -0
  439. rdc_cli-0.3.2/tests/unit/test_vfs_router.py +480 -0
  440. rdc_cli-0.3.2/tests/unit/test_vfs_tree_cache.py +645 -0
  441. rdc_cli-0.3.2/uv.lock +777 -0
  442. rdc_cli-0.3.0/PKG-INFO +0 -133
  443. rdc_cli-0.3.0/README.md +0 -104
  444. rdc_cli-0.3.0/src/rdc/__init__.py +0 -4
  445. rdc_cli-0.3.0/src/rdc/commands/capture.py +0 -62
  446. rdc_cli-0.3.0/src/rdc_cli.egg-info/PKG-INFO +0 -133
  447. rdc_cli-0.3.0/src/rdc_cli.egg-info/SOURCES.txt +0 -83
  448. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/LICENSE +0 -0
  449. /rdc_cli-0.3.0/src/rdc/_skills/__init__.py → /rdc_cli-0.3.2/docs-astro/public/.nojekyll +0 -0
  450. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/setup.cfg +0 -0
  451. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/_skills/SKILL.md +0 -0
  452. {rdc_cli-0.3.0/src/rdc/vfs → rdc_cli-0.3.2/src/rdc/_skills}/__init__.py +0 -0
  453. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/_transport.py +0 -0
  454. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/adapter.py +0 -0
  455. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/_helpers.py +0 -0
  456. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/assert_ci.py +0 -0
  457. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/assert_image.py +0 -0
  458. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/completion.py +0 -0
  459. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/counters.py +0 -0
  460. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/debug.py +0 -0
  461. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/diff.py +0 -0
  462. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/doctor.py +0 -0
  463. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/events.py +0 -0
  464. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/export.py +0 -0
  465. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/info.py +0 -0
  466. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/install_skill.py +0 -0
  467. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/mesh.py +0 -0
  468. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/pick_pixel.py +0 -0
  469. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/pipeline.py +0 -0
  470. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/pixel.py +0 -0
  471. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/resources.py +0 -0
  472. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/script.py +0 -0
  473. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/search.py +0 -0
  474. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/session.py +0 -0
  475. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/shader_edit.py +0 -0
  476. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/tex_stats.py +0 -0
  477. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/unix_helpers.py +0 -0
  478. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/usage.py +0 -0
  479. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/commands/vfs.py +0 -0
  480. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/daemon_client.py +0 -0
  481. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/diff/__init__.py +0 -0
  482. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/diff/alignment.py +0 -0
  483. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/diff/draws.py +0 -0
  484. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/diff/pipeline.py +0 -0
  485. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/diff/resources.py +0 -0
  486. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/diff/stats.py +0 -0
  487. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/diff/summary.py +0 -0
  488. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/discover.py +0 -0
  489. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/formatters/json_fmt.py +0 -0
  490. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/formatters/options.py +0 -0
  491. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/formatters/tsv.py +0 -0
  492. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/handlers/__init__.py +0 -0
  493. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/handlers/_helpers.py +0 -0
  494. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/handlers/_types.py +0 -0
  495. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/handlers/buffer.py +0 -0
  496. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/handlers/core.py +0 -0
  497. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/handlers/descriptor.py +0 -0
  498. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/handlers/pipe_state.py +0 -0
  499. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/handlers/script.py +0 -0
  500. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/handlers/shader.py +0 -0
  501. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/handlers/shader_edit.py +0 -0
  502. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/handlers/texture.py +0 -0
  503. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/handlers/vfs.py +0 -0
  504. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/image_compare.py +0 -0
  505. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/protocol.py +0 -0
  506. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/services/__init__.py +0 -0
  507. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/services/diff_service.py +0 -0
  508. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/services/session_service.py +0 -0
  509. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/session_state.py +0 -0
  510. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/vfs/formatter.py +0 -0
  511. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/vfs/router.py +0 -0
  512. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc/vfs/tree_cache.py +0 -0
  513. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc_cli.egg-info/dependency_links.txt +0 -0
  514. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc_cli.egg-info/entry_points.txt +0 -0
  515. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc_cli.egg-info/requires.txt +0 -0
  516. {rdc_cli-0.3.0 → rdc_cli-0.3.2}/src/rdc_cli.egg-info/top_level.txt +0 -0
@@ -0,0 +1,2 @@
1
+ extends:
2
+ - '@commitlint/config-conventional'
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env bash
2
+ # Pre-commit hook: run lint + typecheck + test before every commit.
3
+ # Install: git config core.hooksPath .githooks
4
+ set -euo pipefail
5
+
6
+ echo "pre-commit: running pixi run check..."
7
+ pixi run check
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env bash
2
+ # Pre-push hook: run e2e test before pushing.
3
+ # Requires active renderdoc module — skip with: git push --no-verify
4
+ set -euo pipefail
5
+
6
+ echo "pre-push: running pixi run e2e..."
7
+ pixi run e2e
@@ -0,0 +1 @@
1
+ * @BANANASJIM
@@ -0,0 +1,63 @@
1
+ name: AUR Publish
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+ paths: ["aur/PKGBUILD"]
7
+ tags: ["v*"]
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ aur-git:
14
+ name: Publish rdc-cli-git
15
+ runs-on: ubuntu-latest
16
+ if: github.ref_type == 'branch'
17
+ steps:
18
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
19
+
20
+ - uses: KSXGitHub/github-actions-deploy-aur@9dfe151cf48f26a957bbd0379c120e79cb990e13 # v2.7.2
21
+ with:
22
+ pkgname: rdc-cli-git
23
+ pkgbuild: aur/PKGBUILD
24
+ commit_username: ${{ secrets.AUR_USERNAME }}
25
+ commit_email: ${{ secrets.AUR_EMAIL }}
26
+ ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
27
+ commit_message: "Update PKGBUILD"
28
+
29
+ aur-stable:
30
+ name: Publish rdc-cli (stable)
31
+ runs-on: ubuntu-latest
32
+ if: github.ref_type == 'tag'
33
+ steps:
34
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
35
+
36
+ - name: Extract version
37
+ id: ver
38
+ run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
39
+
40
+ - name: Compute tarball sha256
41
+ id: sha
42
+ env:
43
+ VERSION: ${{ steps.ver.outputs.version }}
44
+ run: |
45
+ SHA=$(curl -fsSL "https://github.com/BANANASJIM/rdc-cli/archive/refs/tags/v${VERSION}.tar.gz" | sha256sum | awk '{print $1}')
46
+ echo "sha256=${SHA}" >> "$GITHUB_OUTPUT"
47
+
48
+ - name: Patch PKGBUILD
49
+ env:
50
+ VERSION: ${{ steps.ver.outputs.version }}
51
+ SHA256: ${{ steps.sha.outputs.sha256 }}
52
+ run: |
53
+ sed -i "s/^pkgver=.*/pkgver=${VERSION}/" aur/stable/PKGBUILD
54
+ sed -i "s/'PLACEHOLDER'/'${SHA256}'/" aur/stable/PKGBUILD
55
+
56
+ - uses: KSXGitHub/github-actions-deploy-aur@9dfe151cf48f26a957bbd0379c120e79cb990e13 # v2.7.2
57
+ with:
58
+ pkgname: rdc-cli
59
+ pkgbuild: aur/stable/PKGBUILD
60
+ commit_username: ${{ secrets.AUR_USERNAME }}
61
+ commit_email: ${{ secrets.AUR_EMAIL }}
62
+ ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
63
+ commit_message: "Update rdc-cli to v${{ steps.ver.outputs.version }}"
@@ -0,0 +1,183 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [master, main]
6
+ tags: ["v*"]
7
+ pull_request:
8
+ branches: [master, main]
9
+
10
+ concurrency:
11
+ group: ${{ github.workflow }}-${{ github.ref }}
12
+ cancel-in-progress: true
13
+
14
+ permissions:
15
+ contents: read
16
+
17
+ jobs:
18
+ lint:
19
+ name: Lint (ruff)
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - name: Checkout
23
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
24
+
25
+ - name: Setup uv
26
+ uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
27
+ with:
28
+ enable-cache: true
29
+
30
+ - name: Setup Python
31
+ run: uv python install 3.12
32
+
33
+ - name: Sync deps
34
+ run: uv sync --extra dev
35
+
36
+ - name: Ruff check
37
+ run: uv run ruff check src tests
38
+
39
+ - name: Ruff format check
40
+ run: uv run ruff format --check src tests
41
+
42
+ - name: Verify skill reference is fresh
43
+ run: diff <(uv run python scripts/gen-skill-ref.py) src/rdc/_skills/references/commands-quick-ref.md
44
+ shell: bash
45
+
46
+ security:
47
+ name: Dependency audit
48
+ runs-on: ubuntu-latest
49
+ steps:
50
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
51
+ - uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
52
+ with:
53
+ enable-cache: true
54
+ - run: uv python install 3.12
55
+ - run: uv sync --extra dev
56
+ - run: uv run --with pip-audit pip-audit
57
+
58
+ typecheck:
59
+ name: Type check (mypy)
60
+ runs-on: ubuntu-latest
61
+ steps:
62
+ - name: Checkout
63
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
64
+
65
+ - name: Setup uv
66
+ uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
67
+ with:
68
+ enable-cache: true
69
+
70
+ - name: Setup Python
71
+ run: uv python install 3.12
72
+
73
+ - name: Sync deps
74
+ run: uv sync --extra dev
75
+
76
+ - name: Mypy
77
+ run: uv run mypy src
78
+
79
+ test:
80
+ name: Test (py${{ matrix.python-version }})
81
+ runs-on: ubuntu-latest
82
+ strategy:
83
+ fail-fast: false
84
+ matrix:
85
+ python-version: ["3.10", "3.12", "3.14"]
86
+ steps:
87
+ - name: Checkout
88
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
89
+
90
+ - name: Setup uv
91
+ uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
92
+ with:
93
+ enable-cache: true
94
+
95
+ - name: Setup Python
96
+ run: uv python install ${{ matrix.python-version }}
97
+
98
+ - name: Sync deps
99
+ run: uv sync --extra dev --python ${{ matrix.python-version }}
100
+
101
+ - name: Pytest + coverage
102
+ run: uv run --python ${{ matrix.python-version }} pytest tests/unit -v --cov=rdc --cov-report=term-missing --cov-fail-under=80
103
+
104
+ build-and-verify:
105
+ name: Build & verify (py${{ matrix.python-version }})
106
+ needs: [lint, typecheck, test]
107
+ runs-on: ubuntu-latest
108
+ strategy:
109
+ fail-fast: false
110
+ matrix:
111
+ python-version: ["3.10", "3.12", "3.14"]
112
+ steps:
113
+ - name: Checkout
114
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
115
+
116
+ - name: Setup uv
117
+ uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
118
+ with:
119
+ enable-cache: true
120
+
121
+ - name: Setup Python
122
+ run: uv python install ${{ matrix.python-version }}
123
+
124
+ - name: Build
125
+ run: uv build --python ${{ matrix.python-version }}
126
+
127
+ - name: Twine check
128
+ run: uvx twine check dist/*
129
+
130
+ - name: Check wheel contents
131
+ run: uvx check-wheel-contents dist/*.whl
132
+
133
+ - name: Create clean test venv
134
+ run: uv venv /tmp/test-env --python ${{ matrix.python-version }}
135
+
136
+ - name: Install wheel in clean venv
137
+ run: uv pip install dist/*.whl --python /tmp/test-env/bin/python
138
+
139
+ - name: Smoke test version
140
+ run: /tmp/test-env/bin/rdc --version
141
+
142
+ - name: Smoke test help
143
+ run: /tmp/test-env/bin/rdc --help
144
+
145
+ - name: Smoke test import
146
+ run: /tmp/test-env/bin/python -c "from rdc.cli import main"
147
+
148
+ - name: Upload dist artifacts
149
+ if: matrix.python-version == '3.12'
150
+ uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
151
+ with:
152
+ name: dist
153
+ path: dist/
154
+
155
+ release:
156
+ name: Publish to PyPI + GitHub Release
157
+ if: startsWith(github.ref, 'refs/tags/v')
158
+ needs: [build-and-verify]
159
+ runs-on: ubuntu-latest
160
+ environment: pypi
161
+ permissions:
162
+ id-token: write
163
+ contents: write
164
+ steps:
165
+ - name: Checkout
166
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
167
+ with:
168
+ fetch-depth: 0
169
+
170
+ - name: Download dist artifacts
171
+ uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
172
+ with:
173
+ name: dist
174
+ path: dist/
175
+
176
+ - name: Publish to PyPI
177
+ uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
178
+
179
+ - name: Create GitHub Release
180
+ uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0
181
+ with:
182
+ files: dist/*
183
+ generate_release_notes: true
@@ -0,0 +1,27 @@
1
+ name: Commit Lint
2
+
3
+ on:
4
+ pull_request:
5
+ branches: [master, main]
6
+
7
+ concurrency:
8
+ group: ${{ github.workflow }}-${{ github.ref }}
9
+ cancel-in-progress: true
10
+
11
+ permissions:
12
+ contents: read
13
+ pull-requests: read
14
+
15
+ jobs:
16
+ commitlint:
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - name: Checkout
20
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
21
+ with:
22
+ fetch-depth: 0
23
+
24
+ - name: Commitlint
25
+ uses: wagoid/commitlint-github-action@b948419dd99f3fd78a6548d48f94e3df7f6bf3ed # v6.2.1
26
+ with:
27
+ configFile: .commitlintrc.yml
@@ -0,0 +1,127 @@
1
+ name: Docs
2
+
3
+ on:
4
+ push:
5
+ tags: ['v*']
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: write
10
+
11
+ concurrency:
12
+ group: gh-pages
13
+ cancel-in-progress: false
14
+
15
+ jobs:
16
+ build-and-deploy:
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - name: Checkout
20
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
21
+
22
+ - name: Extract version from tag
23
+ id: version
24
+ run: |
25
+ if [[ "$GITHUB_REF_NAME" == v* ]]; then
26
+ echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
27
+ else
28
+ VER=$(grep -m1 '^version' pyproject.toml | sed 's/.*= *"\(.*\)"/\1/')
29
+ echo "version=${VER}-dev" >> "$GITHUB_OUTPUT"
30
+ fi
31
+
32
+ - name: Set up uv
33
+ uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
34
+ with:
35
+ enable-cache: true
36
+
37
+ - name: Install Python dependencies
38
+ run: uv sync --extra dev
39
+
40
+ - name: Compute test stats
41
+ id: test_stats
42
+ run: |
43
+ TEST_COUNT=$(uv run pytest tests/unit --co 2>/dev/null \
44
+ | grep -oP '^\d+(?= tests? collected)' || echo "0")
45
+ COV_PCT=$(uv run pytest tests/unit --cov=rdc --cov-report=term-missing \
46
+ --no-header -rN -q 2>/dev/null \
47
+ | grep 'TOTAL' | awk '{print $NF}' || echo "")
48
+ echo "test_count=${TEST_COUNT}" >> "$GITHUB_OUTPUT"
49
+ echo "coverage=${COV_PCT}" >> "$GITHUB_OUTPUT"
50
+
51
+ - name: Generate stats.json
52
+ env:
53
+ DOC_VERSION: ${{ steps.version.outputs.version }}
54
+ TEST_COUNT: ${{ steps.test_stats.outputs.test_count }}
55
+ COVERAGE: ${{ steps.test_stats.outputs.coverage }}
56
+ run: |
57
+ mkdir -p docs-astro/src/data
58
+ uv run python scripts/gen-stats.py \
59
+ --version "$DOC_VERSION" \
60
+ --test-count "$TEST_COUNT" \
61
+ --coverage "$COVERAGE" \
62
+ > docs-astro/src/data/stats.json
63
+ cat docs-astro/src/data/stats.json
64
+
65
+ - name: Build mkdocs
66
+ run: uv run --with "mkdocs<2" --with mkdocs-material --with mkdocs-click mkdocs build -d _site
67
+
68
+ - name: Set up Node.js
69
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
70
+ with:
71
+ node-version: 22
72
+ cache: npm
73
+ cache-dependency-path: docs-astro/package-lock.json
74
+
75
+ - name: Build Astro
76
+ run: |
77
+ cd docs-astro
78
+ npm ci
79
+ npm run build
80
+
81
+ - name: Merge mkdocs CLI reference into Astro output
82
+ run: |
83
+ mkdir -p docs-astro/dist/docs/cli-reference
84
+ cp -r _site/cli-reference/* docs-astro/dist/docs/cli-reference/
85
+
86
+ - name: Generate badge endpoint JSONs
87
+ run: |
88
+ mkdir -p docs-astro/dist/badges
89
+ python3 -c "
90
+ import json, pathlib
91
+ s = json.loads(pathlib.Path('docs-astro/src/data/stats.json').read_text())
92
+ badges = [
93
+ ('commands', str(s.get('command_count', '?')), 'brightgreen'),
94
+ ('tests', str(s.get('test_count', 0) or '?'), 'blue'),
95
+ ('coverage', s.get('coverage', '') or '?', 'green'),
96
+ ]
97
+ for name, message, color in badges:
98
+ pathlib.Path(f'docs-astro/dist/badges/{name}.json').write_text(
99
+ json.dumps({'schemaVersion': 1, 'label': name, 'message': message, 'color': color})
100
+ )
101
+ print('Badges generated:', [b[0] for b in badges])
102
+ "
103
+
104
+ - name: Deploy to gh-pages branch
105
+ env:
106
+ DOC_VERSION: ${{ steps.version.outputs.version }}
107
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
108
+ run: |
109
+ cd docs-astro/dist
110
+ git init -b gh-pages
111
+ git config user.name "github-actions[bot]"
112
+ git config user.email "github-actions[bot]@users.noreply.github.com"
113
+ git add .
114
+ git commit -m "deploy: v${DOC_VERSION}"
115
+ git push --force \
116
+ "https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" \
117
+ HEAD:gh-pages
118
+
119
+ - name: Update repo metadata
120
+ env:
121
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
122
+ DOC_VERSION: ${{ steps.version.outputs.version }}
123
+ run: |
124
+ gh repo edit \
125
+ --description "Scriptable CLI for RenderDoc captures — built for terminal workflows, CI pipelines, and AI agents (v${DOC_VERSION})" \
126
+ || true
127
+ gh repo edit --homepage "https://bananasjim.github.io/rdc-cli/" || true
@@ -0,0 +1,20 @@
1
+ .venv/
2
+ __pycache__/
3
+ *.pyc
4
+ *.pyo
5
+ *.pyd
6
+ .pytest_cache/
7
+ .mypy_cache/
8
+ .ruff_cache/
9
+ .coverage
10
+ htmlcov/
11
+ build/
12
+ dist/
13
+ *.egg-info/
14
+ CLAUDE.md
15
+ tests/fixtures/vulkan_samples
16
+ .local/
17
+ .claude/*
18
+ !.claude/skills/
19
+ _site/
20
+ docs-astro/dist/
@@ -0,0 +1 @@
1
+ 3.14
@@ -0,0 +1 @@
1
+ {".": "0.2.0"}
rdc_cli-0.3.2/Makefile ADDED
@@ -0,0 +1,20 @@
1
+ .PHONY: sync check lint format typecheck test
2
+
3
+ sync:
4
+ uv sync --extra dev
5
+
6
+ check: lint typecheck test
7
+
8
+ lint:
9
+ uv run ruff check src tests
10
+ uv run ruff format --check src tests
11
+
12
+ format:
13
+ uv run ruff format src tests
14
+ uv run ruff check --fix src tests
15
+
16
+ typecheck:
17
+ uv run mypy src
18
+
19
+ test:
20
+ uv run pytest tests -v --cov=rdc --cov-report=term-missing --cov-fail-under=80
rdc_cli-0.3.2/PKG-INFO ADDED
@@ -0,0 +1,207 @@
1
+ Metadata-Version: 2.4
2
+ Name: rdc-cli
3
+ Version: 0.3.2
4
+ Summary: Unix-friendly CLI for RenderDoc .rdc captures
5
+ Author: Jim
6
+ License-Expression: MIT
7
+ Classifier: Programming Language :: Python :: 3
8
+ Classifier: Programming Language :: Python :: 3.10
9
+ Classifier: Programming Language :: Python :: 3.11
10
+ Classifier: Programming Language :: Python :: 3.12
11
+ Classifier: Programming Language :: Python :: 3.13
12
+ Classifier: Programming Language :: Python :: 3.14
13
+ Classifier: Environment :: Console
14
+ Classifier: Topic :: Multimedia :: Graphics
15
+ Requires-Python: >=3.10
16
+ Description-Content-Type: text/markdown
17
+ License-File: LICENSE
18
+ Requires-Dist: click>=8.1
19
+ Requires-Dist: Pillow>=10.0
20
+ Requires-Dist: numpy>=1.24
21
+ Provides-Extra: rich
22
+ Requires-Dist: rich>=13.0; extra == "rich"
23
+ Provides-Extra: dev
24
+ Requires-Dist: pytest>=8.0; extra == "dev"
25
+ Requires-Dist: pytest-cov>=5.0; extra == "dev"
26
+ Requires-Dist: mypy>=1.10; extra == "dev"
27
+ Requires-Dist: ruff>=0.6; extra == "dev"
28
+ Dynamic: license-file
29
+
30
+ ```
31
+ _____ _____ _____
32
+ | __ \| __ \ / ____|
33
+ | |__) | | | | |
34
+ | _ /| | | | |
35
+ | | \ \| |__| | |____
36
+ |_| \_\_____/ \_____| cli
37
+ ```
38
+
39
+ [![PyPI](https://img.shields.io/pypi/v/rdc-cli)](https://pypi.org/project/rdc-cli/)
40
+ [![Python](https://img.shields.io/badge/python-3.10%2B-blue)](https://pypi.org/project/rdc-cli/)
41
+ [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
42
+ [![Commands](https://img.shields.io/endpoint?url=https://bananasjim.github.io/rdc-cli/badges/commands.json)](https://bananasjim.github.io/rdc-cli/)
43
+ [![Tests](https://img.shields.io/endpoint?url=https://bananasjim.github.io/rdc-cli/badges/tests.json)](https://bananasjim.github.io/rdc-cli/)
44
+ [![Coverage](https://img.shields.io/endpoint?url=https://bananasjim.github.io/rdc-cli/badges/coverage.json)](https://bananasjim.github.io/rdc-cli/)
45
+
46
+ **Turn RenderDoc captures into Unix text streams.** rdc-cli does not replace RenderDoc — it makes `.rdc` file contents accessible to `grep`, `awk`, `sort`, `diff`, `jq`, and AI agents.
47
+
48
+ **[Full documentation →](https://bananasjim.github.io/rdc-cli/)**
49
+
50
+ ```bash
51
+ rdc open scene.rdc
52
+ rdc draws | grep Shadow | sort -t$'\t' -k3 -rn | head -5 # top 5 shadow draws by tri count
53
+ rdc shader 142 ps | grep shadowMap # find shadow sampling in PS
54
+ rdc cat /draws/142/shader/ps/constants # inspect bound constants
55
+ rdc diff before.rdc after.rdc --draws | grep '~' # what changed between two frames?
56
+ rdc close
57
+ ```
58
+
59
+ ## Why rdc-cli?
60
+
61
+ RenderDoc is excellent at capturing GPU frames and replaying them interactively. But its GUI doesn't compose — you can't pipe a draw call list into `sort`, diff two captures in CI, or let an AI agent inspect shader state.
62
+
63
+ rdc-cli bridges that gap:
64
+
65
+ - **TSV by default** — every command outputs tab-separated text that pipes directly into Unix tools. Raw numbers, not human-friendly formatting (use `--table` for that).
66
+ - **VFS path namespace** — GPU state is navigable like a filesystem: `/draws/142/shader/ps`, `/passes/GBuffer/draws`, `/resources/88`. Explore with `ls`, read with `cat`.
67
+ - **Daemon architecture** — load the capture once, then query as many times as you want. No per-command startup cost.
68
+ - **Built for CI** — `assert-pixel`, `assert-state`, `assert-image`, `assert-count`, `assert-clean` with `diff(1)`-compatible exit codes (0=pass, 1=fail, 2=error).
69
+ - **AI-agent friendly** — structured output (`--json`, `--jsonl`), deterministic VFS paths, and a [Claude Code skill](https://bananasjim.github.io/rdc-cli/) for automated GPU frame analysis.
70
+ - **Escape hatch** — `rdc script` runs arbitrary Python inside the daemon with full access to the renderdoc module, for anything the CLI doesn't cover yet.
71
+
72
+ ## Quick examples
73
+
74
+ **Explore a capture like a filesystem:**
75
+
76
+ ```bash
77
+ rdc ls / # top-level: draws, passes, resources, shaders, ...
78
+ rdc ls /draws/142 # what's inside this draw call?
79
+ rdc cat /draws/142/pipeline/om # output merger state
80
+ rdc tree /passes --depth 2 # pass structure at a glance
81
+ ```
82
+
83
+ **Shader debugging — no GUI needed:**
84
+
85
+ ```bash
86
+ rdc shader 142 ps # pixel shader disassembly
87
+ rdc shader 142 ps --constants # current constant buffer values
88
+ rdc debug pixel 142 400 300 --trace # step-by-step PS execution trace
89
+ rdc search "shadowMap" # grep across all shaders in the frame
90
+ ```
91
+
92
+ **Export and scripting:**
93
+
94
+ ```bash
95
+ rdc texture 5 -o albedo.png # export a texture
96
+ rdc rt 142 -o render.png # export render target
97
+ rdc buffer 88 -o verts.bin # export raw buffer
98
+ rdc snapshot 142 -o ./snap/ # pipeline + shaders + render targets
99
+ rdc draws --json | jq '.[] | select(.tri_count > 10000)' # filter with jq
100
+ ```
101
+
102
+ **CI assertions:**
103
+
104
+ ```bash
105
+ rdc open frame.rdc
106
+ rdc assert-pixel 142 400 300 --expect "0.5 0.0 0.0 1.0" --tolerance 0.01
107
+ rdc assert-state 142 topology --expect TriangleList
108
+ rdc assert-image golden.png actual.png --threshold 0.001
109
+ rdc assert-clean --min-severity HIGH
110
+ rdc close
111
+ ```
112
+
113
+ **Two-frame diff:**
114
+
115
+ ```bash
116
+ rdc diff before.rdc after.rdc --shortstat # summary: draws ±N, resources ±N
117
+ rdc diff before.rdc after.rdc --draws # per-draw changes
118
+ rdc diff before.rdc after.rdc --framebuffer # pixel-level image diff
119
+ ```
120
+
121
+ ## Install
122
+
123
+ **PyPI** (recommended)
124
+
125
+ ```bash
126
+ pipx install rdc-cli
127
+ # build renderdoc Python module (one-time, ~3 min, needs cmake/ninja/python3)
128
+ curl -fsSL https://raw.githubusercontent.com/BANANASJIM/rdc-cli/master/scripts/build-renderdoc.sh | bash
129
+ rdc doctor # verify installation
130
+ ```
131
+
132
+ **AUR** (Arch Linux — builds renderdoc Python module automatically)
133
+
134
+ ```bash
135
+ yay -S rdc-cli-git
136
+ ```
137
+
138
+ **From source**
139
+
140
+ ```bash
141
+ git clone https://github.com/BANANASJIM/rdc-cli.git
142
+ cd rdc-cli
143
+ pixi install && pixi run sync
144
+ ```
145
+
146
+ ## Commands
147
+
148
+ Run `rdc --help` for the full list, or `rdc <command> --help` for details. See the [full command reference](https://bananasjim.github.io/rdc-cli/docs/cli-reference/rdc/) for every option.
149
+
150
+ | Category | Commands |
151
+ |----------|----------|
152
+ | Session | `open`, `close`, `status`, `goto` |
153
+ | Inspection | `info`, `stats`, `events`, `draws`, `event`, `draw`, `log` |
154
+ | GPU state | `pipeline`, `bindings`, `shader`, `shaders`, `shader-map` |
155
+ | Debug | `debug pixel`, `debug vertex`, `debug thread`, `pixel`, `pick-pixel`, `tex-stats` |
156
+ | Shader edit | `shader-build`, `shader-replace`, `shader-restore`, `shader-restore-all`, `shader-encodings` |
157
+ | Resources | `resources`, `resource`, `passes`, `pass`, `usage` |
158
+ | Export | `texture`, `rt`, `buffer`, `mesh`, `snapshot` |
159
+ | Search | `search`, `counters` |
160
+ | Assertions | `assert-pixel`, `assert-state`, `assert-image`, `assert-count`, `assert-clean` |
161
+ | Diff | `diff` (with `--draws`, `--stats`, `--framebuffer`, `--pipeline`, etc.) |
162
+ | VFS | `ls`, `cat`, `tree` |
163
+ | Utility | `doctor`, `completion`, `capture`, `count`, `script`, `install-skill` |
164
+
165
+ All list commands output TSV. All commands support `--json`. Footer/summary goes to stderr — stdout is always clean data.
166
+
167
+ ### Common options
168
+
169
+ Options available on most list/query commands (not every command supports all):
170
+
171
+ ```
172
+ --json JSON output (all commands)
173
+ --jsonl streaming JSON, one object per line (list commands)
174
+ --no-header drop TSV header for awk/cut (list commands)
175
+ -q / --quiet IDs only for xargs (list commands)
176
+ --sort <field> sort by field (events, resources, shaders)
177
+ --limit <N> truncate rows (events, search)
178
+ --filter <pat> name glob filter (events)
179
+ -o <path> output to file (export commands)
180
+ ```
181
+
182
+ ### Shell completions
183
+
184
+ ```bash
185
+ rdc completion bash > ~/.local/share/bash-completion/completions/rdc
186
+ rdc completion zsh > ~/.zfunc/_rdc
187
+ rdc completion fish > ~/.config/fish/completions/rdc.fish
188
+ ```
189
+
190
+ ## Development
191
+
192
+ ```bash
193
+ pixi run sync # install deps + git hooks + renderdoc symlink
194
+ pixi run check # lint + typecheck + test
195
+ pixi run verify # full packaging verification
196
+ ```
197
+
198
+ GPU integration tests require a real renderdoc module:
199
+
200
+ ```bash
201
+ export RENDERDOC_PYTHON_PATH=/path/to/renderdoc/build/lib
202
+ pixi run test-gpu
203
+ ```
204
+
205
+ ## License
206
+
207
+ [MIT](LICENSE)