rubik 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (523) hide show
  1. checksums.yaml +7 -0
  2. data/ATTRIBUTION.md +139 -0
  3. data/CHANGELOG.md +236 -0
  4. data/LICENSE +21 -0
  5. data/README.md +269 -0
  6. data/bin/rubik +82 -0
  7. data/lib/rubik/adapter/base.rb +195 -0
  8. data/lib/rubik/adapter/c.rb +36 -0
  9. data/lib/rubik/adapter/crystal.rb +78 -0
  10. data/lib/rubik/adapter/generic.rb +86 -0
  11. data/lib/rubik/adapter/go.rb +36 -0
  12. data/lib/rubik/adapter/node.rb +146 -0
  13. data/lib/rubik/adapter/process.rb +78 -0
  14. data/lib/rubik/adapter/python.rb +30 -0
  15. data/lib/rubik/adapter/registry.rb +81 -0
  16. data/lib/rubik/adapter/ruby.rb +30 -0
  17. data/lib/rubik/adapter/rust.rb +36 -0
  18. data/lib/rubik/adapter/zig.rb +36 -0
  19. data/lib/rubik/adapter.rb +18 -0
  20. data/lib/rubik/ast/body_loader.rb +19 -0
  21. data/lib/rubik/ast/c_extractor.rb +114 -0
  22. data/lib/rubik/ast/cache_store.rb +191 -0
  23. data/lib/rubik/ast/extractor.rb +59 -0
  24. data/lib/rubik/ast/fallback_cleaner.rb +145 -0
  25. data/lib/rubik/ast/go_extractor.rb +148 -0
  26. data/lib/rubik/ast/graph.rb +272 -0
  27. data/lib/rubik/ast/python_extractor.rb +120 -0
  28. data/lib/rubik/ast/ruby_extractor.rb +260 -0
  29. data/lib/rubik/ast/rust_extractor.rb +127 -0
  30. data/lib/rubik/ast/symbol.rb +103 -0
  31. data/lib/rubik/ast/treesitter/base_walker.rb +109 -0
  32. data/lib/rubik/ast/treesitter/c_walker.rb +122 -0
  33. data/lib/rubik/ast/treesitter/go_walker.rb +120 -0
  34. data/lib/rubik/ast/treesitter/python_walker.rb +107 -0
  35. data/lib/rubik/ast/treesitter/rust_walker.rb +130 -0
  36. data/lib/rubik/ast/treesitter/typescript_walker.rb +182 -0
  37. data/lib/rubik/ast/treesitter/zig_walker.rb +109 -0
  38. data/lib/rubik/ast/treesitter_extractor.rb +93 -0
  39. data/lib/rubik/ast/typescript_extractor.rb +283 -0
  40. data/lib/rubik/ast/zig_extractor.rb +116 -0
  41. data/lib/rubik/ast.rb +13 -0
  42. data/lib/rubik/benchmark/runner.rb +224 -0
  43. data/lib/rubik/benchmark/synth_repo.rb +59 -0
  44. data/lib/rubik/benchmark.rb +9 -0
  45. data/lib/rubik/buffer/diff.rb +43 -0
  46. data/lib/rubik/buffer/manager.rb +427 -0
  47. data/lib/rubik/buffer/path_validator.rb +60 -0
  48. data/lib/rubik/buffer/snapshot.rb +99 -0
  49. data/lib/rubik/buffer.rb +10 -0
  50. data/lib/rubik/coeffects.rb +129 -0
  51. data/lib/rubik/concurrency/boundary.rb +74 -0
  52. data/lib/rubik/concurrency/dns_pool.rb +68 -0
  53. data/lib/rubik/concurrency/errors.rb +17 -0
  54. data/lib/rubik/concurrency/event_loop.rb +441 -0
  55. data/lib/rubik/concurrency/join.rb +55 -0
  56. data/lib/rubik/concurrency/process_waiter.rb +55 -0
  57. data/lib/rubik/concurrency/scheduler.rb +84 -0
  58. data/lib/rubik/concurrency/timers.rb +109 -0
  59. data/lib/rubik/concurrency.rb +132 -0
  60. data/lib/rubik/config/deep_ops.rb +80 -0
  61. data/lib/rubik/config/defaults.rb +248 -0
  62. data/lib/rubik/config/model_catalog.rb +93 -0
  63. data/lib/rubik/config/store.rb +155 -0
  64. data/lib/rubik/config.rb +216 -0
  65. data/lib/rubik/context/git_info.rb +84 -0
  66. data/lib/rubik/context/git_lister.rb +37 -0
  67. data/lib/rubik/context/index.rb +134 -0
  68. data/lib/rubik/context/repo_context_reader.rb +121 -0
  69. data/lib/rubik/context/scanner.rb +439 -0
  70. data/lib/rubik/context.rb +11 -0
  71. data/lib/rubik/diagnostics/collector.rb +200 -0
  72. data/lib/rubik/diagnostics/entry.rb +60 -0
  73. data/lib/rubik/diagnostics/parser.rb +107 -0
  74. data/lib/rubik/diagnostics.rb +10 -0
  75. data/lib/rubik/event_bus.rb +56 -0
  76. data/lib/rubik/kernel/dispatcher.rb +171 -0
  77. data/lib/rubik/kernel/dmesg.rb +116 -0
  78. data/lib/rubik/kernel/init.rb +177 -0
  79. data/lib/rubik/kernel/record.rb +85 -0
  80. data/lib/rubik/kernel/unit.rb +160 -0
  81. data/lib/rubik/llm/anthropic.rb +202 -0
  82. data/lib/rubik/llm/chunk_assembler.rb +285 -0
  83. data/lib/rubik/llm/client.rb +526 -0
  84. data/lib/rubik/llm/formatter.rb +450 -0
  85. data/lib/rubik/llm/message_sanitizer.rb +87 -0
  86. data/lib/rubik/llm/ollama.rb +167 -0
  87. data/lib/rubik/llm/openai.rb +21 -0
  88. data/lib/rubik/llm/openai_compatible.rb +216 -0
  89. data/lib/rubik/llm/provider.rb +125 -0
  90. data/lib/rubik/llm/registry.rb +336 -0
  91. data/lib/rubik/llm/router.rb +100 -0
  92. data/lib/rubik/llm.rb +18 -0
  93. data/lib/rubik/log.rb +38 -0
  94. data/lib/rubik/lsp/client.rb +475 -0
  95. data/lib/rubik/lsp/manager.rb +366 -0
  96. data/lib/rubik/lsp.rb +9 -0
  97. data/lib/rubik/mcp/boot_lifecycle.rb +114 -0
  98. data/lib/rubik/mcp/client.rb +169 -0
  99. data/lib/rubik/mcp/errors.rb +11 -0
  100. data/lib/rubik/mcp/manager.rb +619 -0
  101. data/lib/rubik/mcp/proxy_tool.rb +104 -0
  102. data/lib/rubik/mcp/transport/stdio.rb +255 -0
  103. data/lib/rubik/mcp.rb +12 -0
  104. data/lib/rubik/orchestrator/activity_log.rb +75 -0
  105. data/lib/rubik/orchestrator/auto_apply.rb +166 -0
  106. data/lib/rubik/orchestrator/budget_manager.rb +97 -0
  107. data/lib/rubik/orchestrator/continuation_manager.rb +161 -0
  108. data/lib/rubik/orchestrator/finish_message_selector.rb +55 -0
  109. data/lib/rubik/orchestrator/goal_ledger/drift.rb +71 -0
  110. data/lib/rubik/orchestrator/goal_ledger/ledger.rb +399 -0
  111. data/lib/rubik/orchestrator/goal_ledger/observation_projection.rb +179 -0
  112. data/lib/rubik/orchestrator/goal_ledger/patch.rb +268 -0
  113. data/lib/rubik/orchestrator/goal_ledger/schema.rb +123 -0
  114. data/lib/rubik/orchestrator/goal_ledger/validator.rb +361 -0
  115. data/lib/rubik/orchestrator/goal_ledger/verifier.rb +129 -0
  116. data/lib/rubik/orchestrator/goal_ledger/verify_spec.rb +50 -0
  117. data/lib/rubik/orchestrator/goal_ledger.rb +65 -0
  118. data/lib/rubik/orchestrator/goal_state.rb +184 -0
  119. data/lib/rubik/orchestrator/goal_wait.rb +125 -0
  120. data/lib/rubik/orchestrator/loop.rb +388 -0
  121. data/lib/rubik/orchestrator/lsp_feedback.rb +55 -0
  122. data/lib/rubik/orchestrator/maestro_gate.rb +65 -0
  123. data/lib/rubik/orchestrator/provider_recovery.rb +90 -0
  124. data/lib/rubik/orchestrator/provider_resolver.rb +69 -0
  125. data/lib/rubik/orchestrator/shell_deps.rb +85 -0
  126. data/lib/rubik/orchestrator/step_executor.rb +328 -0
  127. data/lib/rubik/orchestrator/stream_manager.rb +118 -0
  128. data/lib/rubik/orchestrator/subagent/activation.rb +65 -0
  129. data/lib/rubik/orchestrator/subagent/budget.rb +108 -0
  130. data/lib/rubik/orchestrator/subagent/completion.rb +61 -0
  131. data/lib/rubik/orchestrator/subagent/concurrency_gate.rb +37 -0
  132. data/lib/rubik/orchestrator/subagent/conversation_id.rb +67 -0
  133. data/lib/rubik/orchestrator/subagent/dependency.rb +398 -0
  134. data/lib/rubik/orchestrator/subagent/instance.rb +384 -0
  135. data/lib/rubik/orchestrator/subagent/lifecycle.rb +118 -0
  136. data/lib/rubik/orchestrator/subagent/messaging.rb +61 -0
  137. data/lib/rubik/orchestrator/subagent/narration.rb +125 -0
  138. data/lib/rubik/orchestrator/subagent/notices.rb +209 -0
  139. data/lib/rubik/orchestrator/subagent/questioner.rb +80 -0
  140. data/lib/rubik/orchestrator/subagent/reaper.rb +98 -0
  141. data/lib/rubik/orchestrator/subagent/resilience.rb +70 -0
  142. data/lib/rubik/orchestrator/subagent/reuse.rb +127 -0
  143. data/lib/rubik/orchestrator/subagent/scoped_registry.rb +79 -0
  144. data/lib/rubik/orchestrator/subagent/step_runner.rb +240 -0
  145. data/lib/rubik/orchestrator/subagent/storage_id.rb +26 -0
  146. data/lib/rubik/orchestrator/subagent/supervisor.rb +327 -0
  147. data/lib/rubik/orchestrator/subagent/transcript_formatter.rb +141 -0
  148. data/lib/rubik/orchestrator/subagent/type_registry.rb +199 -0
  149. data/lib/rubik/orchestrator/subagent_notice_inbox.rb +80 -0
  150. data/lib/rubik/orchestrator/tool_call_id.rb +47 -0
  151. data/lib/rubik/orchestrator/tool_circuit_breaker.rb +91 -0
  152. data/lib/rubik/orchestrator/tool_history.rb +39 -0
  153. data/lib/rubik/orchestrator/turn_executor/subagent_channel.rb +102 -0
  154. data/lib/rubik/orchestrator/turn_executor/user_channel.rb +172 -0
  155. data/lib/rubik/orchestrator/turn_executor.rb +376 -0
  156. data/lib/rubik/orchestrator.rb +11 -0
  157. data/lib/rubik/platform/filesystem.rb +64 -0
  158. data/lib/rubik/platform/io_drain.rb +53 -0
  159. data/lib/rubik/platform/path.rb +210 -0
  160. data/lib/rubik/platform/process.rb +38 -0
  161. data/lib/rubik/platform/sanitize.rb +157 -0
  162. data/lib/rubik/platform.rb +113 -0
  163. data/lib/rubik/plugin/dsl.rb +51 -0
  164. data/lib/rubik/plugin/manager.rb +247 -0
  165. data/lib/rubik/plugin/storage.rb +195 -0
  166. data/lib/rubik/plugin.rb +10 -0
  167. data/lib/rubik/prompt/context_builder.rb +377 -0
  168. data/lib/rubik/prompt/context_compactor.rb +326 -0
  169. data/lib/rubik/prompt/conversation_rows.rb +74 -0
  170. data/lib/rubik/prompt/doctrine.rb +160 -0
  171. data/lib/rubik/prompt/emergency_compactor.rb +81 -0
  172. data/lib/rubik/prompt/services.rb +60 -0
  173. data/lib/rubik/prompt/token_estimator.rb +63 -0
  174. data/lib/rubik/prompt/tool_teachings.rb +78 -0
  175. data/lib/rubik/prompt.rb +13 -0
  176. data/lib/rubik/repair/loop.rb +95 -0
  177. data/lib/rubik/repair.rb +8 -0
  178. data/lib/rubik/repl/ast_warmup.rb +129 -0
  179. data/lib/rubik/repl/command_context.rb +214 -0
  180. data/lib/rubik/repl/command_parser.rb +48 -0
  181. data/lib/rubik/repl/commands/agent.rb +30 -0
  182. data/lib/rubik/repl/commands/agent_context.rb +289 -0
  183. data/lib/rubik/repl/commands/agent_execution.rb +342 -0
  184. data/lib/rubik/repl/commands/agent_models.rb +212 -0
  185. data/lib/rubik/repl/commands/agent_providers.rb +232 -0
  186. data/lib/rubik/repl/commands/base.rb +55 -0
  187. data/lib/rubik/repl/commands/buffer.rb +124 -0
  188. data/lib/rubik/repl/commands/dmesg.rb +87 -0
  189. data/lib/rubik/repl/commands/lsp.rb +235 -0
  190. data/lib/rubik/repl/commands/mcp.rb +194 -0
  191. data/lib/rubik/repl/commands/plugins.rb +208 -0
  192. data/lib/rubik/repl/commands/pruner.rb +71 -0
  193. data/lib/rubik/repl/commands/session.rb +183 -0
  194. data/lib/rubik/repl/commands/skills.rb +111 -0
  195. data/lib/rubik/repl/commands/storage.rb +85 -0
  196. data/lib/rubik/repl/commands/subagents.rb +195 -0
  197. data/lib/rubik/repl/commands/system.rb +85 -0
  198. data/lib/rubik/repl/commands/tasks.rb +120 -0
  199. data/lib/rubik/repl/commands/workspace.rb +443 -0
  200. data/lib/rubik/repl/commands.rb +44 -0
  201. data/lib/rubik/repl/composition.rb +32 -0
  202. data/lib/rubik/repl/config_wiring.rb +142 -0
  203. data/lib/rubik/repl/confirmations.rb +56 -0
  204. data/lib/rubik/repl/hooks.rb +47 -0
  205. data/lib/rubik/repl/input_execution.rb +323 -0
  206. data/lib/rubik/repl/input_loop.rb +213 -0
  207. data/lib/rubik/repl/interrupt_handler.rb +217 -0
  208. data/lib/rubik/repl/lifecycle.rb +410 -0
  209. data/lib/rubik/repl/paste_support.rb +88 -0
  210. data/lib/rubik/repl/pending_notice_queue.rb +60 -0
  211. data/lib/rubik/repl/presentation.rb +132 -0
  212. data/lib/rubik/repl/pruner/brief.rb +101 -0
  213. data/lib/rubik/repl/pruner/gate.rb +279 -0
  214. data/lib/rubik/repl/pruner/harness.rb +236 -0
  215. data/lib/rubik/repl/pruner/rules.rb +316 -0
  216. data/lib/rubik/repl/pruner/service.rb +82 -0
  217. data/lib/rubik/repl/pruner.rb +39 -0
  218. data/lib/rubik/repl/service_catalog.rb +374 -0
  219. data/lib/rubik/repl/setup_factories.rb +66 -0
  220. data/lib/rubik/repl/shell.rb +231 -0
  221. data/lib/rubik/repl/step_formatter.rb +324 -0
  222. data/lib/rubik/repl/tee_io.rb +105 -0
  223. data/lib/rubik/repl/terminal_guard.rb +157 -0
  224. data/lib/rubik/repl/turn_recorder.rb +234 -0
  225. data/lib/rubik/repl.rb +14 -0
  226. data/lib/rubik/runtime/ast_service.rb +78 -0
  227. data/lib/rubik/runtime/context.rb +335 -0
  228. data/lib/rubik/runtime/diagnostic_engine.rb +188 -0
  229. data/lib/rubik/runtime/discovery.rb +342 -0
  230. data/lib/rubik/runtime/fiber.rb +142 -0
  231. data/lib/rubik/runtime/fiber_ordering.rb +52 -0
  232. data/lib/rubik/runtime/fiber_retry_gate.rb +84 -0
  233. data/lib/rubik/runtime/index_service.rb +58 -0
  234. data/lib/rubik/runtime/loop_service.rb +73 -0
  235. data/lib/rubik/runtime/manager.rb +241 -0
  236. data/lib/rubik/runtime/overlay_storage.rb +481 -0
  237. data/lib/rubik/runtime/service_definition.rb +54 -0
  238. data/lib/rubik/runtime/service_registration.rb +33 -0
  239. data/lib/rubik/runtime/task_manager.rb +302 -0
  240. data/lib/rubik/runtime.rb +19 -0
  241. data/lib/rubik/sandbox/driver/base.rb +30 -0
  242. data/lib/rubik/sandbox/driver/bubblewrap.rb +111 -0
  243. data/lib/rubik/sandbox/driver/docker.rb +113 -0
  244. data/lib/rubik/sandbox/driver/podman.rb +98 -0
  245. data/lib/rubik/sandbox/driver/process.rb +190 -0
  246. data/lib/rubik/sandbox/driver.rb +91 -0
  247. data/lib/rubik/sandbox/runner.rb +218 -0
  248. data/lib/rubik/sandbox/shell_resolver.rb +178 -0
  249. data/lib/rubik/sandbox.rb +8 -0
  250. data/lib/rubik/security/blocked_guidance.rb +187 -0
  251. data/lib/rubik/security/classifier/classifier.rb +440 -0
  252. data/lib/rubik/security/classifier/commands/agent-browser.yaml +9 -0
  253. data/lib/rubik/security/classifier/commands/apt.yaml +25 -0
  254. data/lib/rubik/security/classifier/commands/awk.yaml +10 -0
  255. data/lib/rubik/security/classifier/commands/basename.yaml +7 -0
  256. data/lib/rubik/security/classifier/commands/bash-classify.yaml +8 -0
  257. data/lib/rubik/security/classifier/commands/bash.yaml +20 -0
  258. data/lib/rubik/security/classifier/commands/black.yaml +12 -0
  259. data/lib/rubik/security/classifier/commands/brew.yaml +31 -0
  260. data/lib/rubik/security/classifier/commands/builtin.yaml +8 -0
  261. data/lib/rubik/security/classifier/commands/cargo.yaml +114 -0
  262. data/lib/rubik/security/classifier/commands/cat.yaml +7 -0
  263. data/lib/rubik/security/classifier/commands/chgrp.yaml +10 -0
  264. data/lib/rubik/security/classifier/commands/chmod.yaml +10 -0
  265. data/lib/rubik/security/classifier/commands/chown.yaml +10 -0
  266. data/lib/rubik/security/classifier/commands/column.yaml +7 -0
  267. data/lib/rubik/security/classifier/commands/comm.yaml +7 -0
  268. data/lib/rubik/security/classifier/commands/command.yaml +12 -0
  269. data/lib/rubik/security/classifier/commands/cp.yaml +7 -0
  270. data/lib/rubik/security/classifier/commands/crystal.yaml +63 -0
  271. data/lib/rubik/security/classifier/commands/curl.yaml +30 -0
  272. data/lib/rubik/security/classifier/commands/cut.yaml +7 -0
  273. data/lib/rubik/security/classifier/commands/date.yaml +10 -0
  274. data/lib/rubik/security/classifier/commands/df.yaml +7 -0
  275. data/lib/rubik/security/classifier/commands/diff.yaml +7 -0
  276. data/lib/rubik/security/classifier/commands/dig.yaml +7 -0
  277. data/lib/rubik/security/classifier/commands/dirname.yaml +7 -0
  278. data/lib/rubik/security/classifier/commands/docker.yaml +177 -0
  279. data/lib/rubik/security/classifier/commands/du.yaml +7 -0
  280. data/lib/rubik/security/classifier/commands/echo.yaml +7 -0
  281. data/lib/rubik/security/classifier/commands/env.yaml +15 -0
  282. data/lib/rubik/security/classifier/commands/eslint.yaml +12 -0
  283. data/lib/rubik/security/classifier/commands/eval.yaml +8 -0
  284. data/lib/rubik/security/classifier/commands/exec.yaml +12 -0
  285. data/lib/rubik/security/classifier/commands/expand.yaml +7 -0
  286. data/lib/rubik/security/classifier/commands/false.yaml +7 -0
  287. data/lib/rubik/security/classifier/commands/file.yaml +7 -0
  288. data/lib/rubik/security/classifier/commands/find.yaml +25 -0
  289. data/lib/rubik/security/classifier/commands/fmt.yaml +7 -0
  290. data/lib/rubik/security/classifier/commands/fold.yaml +7 -0
  291. data/lib/rubik/security/classifier/commands/free.yaml +7 -0
  292. data/lib/rubik/security/classifier/commands/gawk.yaml +10 -0
  293. data/lib/rubik/security/classifier/commands/gcloud.yaml +979 -0
  294. data/lib/rubik/security/classifier/commands/gh.yaml +615 -0
  295. data/lib/rubik/security/classifier/commands/git.yaml +524 -0
  296. data/lib/rubik/security/classifier/commands/glab-discussion.yaml +21 -0
  297. data/lib/rubik/security/classifier/commands/glab.yaml +807 -0
  298. data/lib/rubik/security/classifier/commands/go.yaml +44 -0
  299. data/lib/rubik/security/classifier/commands/gog.yaml +983 -0
  300. data/lib/rubik/security/classifier/commands/gradle.yaml +92 -0
  301. data/lib/rubik/security/classifier/commands/gradlew.yaml +92 -0
  302. data/lib/rubik/security/classifier/commands/grep.yaml +7 -0
  303. data/lib/rubik/security/classifier/commands/groups.yaml +7 -0
  304. data/lib/rubik/security/classifier/commands/gunzip.yaml +8 -0
  305. data/lib/rubik/security/classifier/commands/gws.yaml +211 -0
  306. data/lib/rubik/security/classifier/commands/gzip.yaml +7 -0
  307. data/lib/rubik/security/classifier/commands/hadolint.yaml +9 -0
  308. data/lib/rubik/security/classifier/commands/halt.yaml +8 -0
  309. data/lib/rubik/security/classifier/commands/head.yaml +7 -0
  310. data/lib/rubik/security/classifier/commands/helm.yaml +129 -0
  311. data/lib/rubik/security/classifier/commands/hostname.yaml +7 -0
  312. data/lib/rubik/security/classifier/commands/id.yaml +7 -0
  313. data/lib/rubik/security/classifier/commands/install.yaml +7 -0
  314. data/lib/rubik/security/classifier/commands/isort.yaml +14 -0
  315. data/lib/rubik/security/classifier/commands/java.yaml +35 -0
  316. data/lib/rubik/security/classifier/commands/javac.yaml +39 -0
  317. data/lib/rubik/security/classifier/commands/join.yaml +7 -0
  318. data/lib/rubik/security/classifier/commands/journalctl.yaml +14 -0
  319. data/lib/rubik/security/classifier/commands/jq.yaml +7 -0
  320. data/lib/rubik/security/classifier/commands/kill.yaml +7 -0
  321. data/lib/rubik/security/classifier/commands/killall.yaml +7 -0
  322. data/lib/rubik/security/classifier/commands/kubectl.yaml +211 -0
  323. data/lib/rubik/security/classifier/commands/less.yaml +7 -0
  324. data/lib/rubik/security/classifier/commands/ln.yaml +7 -0
  325. data/lib/rubik/security/classifier/commands/ls.yaml +7 -0
  326. data/lib/rubik/security/classifier/commands/make.yaml +21 -0
  327. data/lib/rubik/security/classifier/commands/md5sum.yaml +7 -0
  328. data/lib/rubik/security/classifier/commands/mise.yaml +579 -0
  329. data/lib/rubik/security/classifier/commands/mkdir.yaml +8 -0
  330. data/lib/rubik/security/classifier/commands/more.yaml +7 -0
  331. data/lib/rubik/security/classifier/commands/mv.yaml +7 -0
  332. data/lib/rubik/security/classifier/commands/mvn.yaml +83 -0
  333. data/lib/rubik/security/classifier/commands/mvnw.yaml +83 -0
  334. data/lib/rubik/security/classifier/commands/mypy.yaml +9 -0
  335. data/lib/rubik/security/classifier/commands/netstat.yaml +7 -0
  336. data/lib/rubik/security/classifier/commands/nice.yaml +11 -0
  337. data/lib/rubik/security/classifier/commands/nl.yaml +7 -0
  338. data/lib/rubik/security/classifier/commands/node.yaml +20 -0
  339. data/lib/rubik/security/classifier/commands/nohup.yaml +9 -0
  340. data/lib/rubik/security/classifier/commands/npm.yaml +71 -0
  341. data/lib/rubik/security/classifier/commands/npx.yaml +42 -0
  342. data/lib/rubik/security/classifier/commands/nslookup.yaml +7 -0
  343. data/lib/rubik/security/classifier/commands/paste.yaml +7 -0
  344. data/lib/rubik/security/classifier/commands/ping.yaml +7 -0
  345. data/lib/rubik/security/classifier/commands/pip.yaml +33 -0
  346. data/lib/rubik/security/classifier/commands/pip3.yaml +33 -0
  347. data/lib/rubik/security/classifier/commands/pipx.yaml +33 -0
  348. data/lib/rubik/security/classifier/commands/pkill.yaml +7 -0
  349. data/lib/rubik/security/classifier/commands/pnpm.yaml +346 -0
  350. data/lib/rubik/security/classifier/commands/poetry.yaml +97 -0
  351. data/lib/rubik/security/classifier/commands/poweroff.yaml +8 -0
  352. data/lib/rubik/security/classifier/commands/prettier.yaml +13 -0
  353. data/lib/rubik/security/classifier/commands/printenv.yaml +7 -0
  354. data/lib/rubik/security/classifier/commands/printf.yaml +7 -0
  355. data/lib/rubik/security/classifier/commands/ps.yaml +7 -0
  356. data/lib/rubik/security/classifier/commands/pup.yaml +882 -0
  357. data/lib/rubik/security/classifier/commands/pwd.yaml +7 -0
  358. data/lib/rubik/security/classifier/commands/pytest.yaml +7 -0
  359. data/lib/rubik/security/classifier/commands/python.yaml +9 -0
  360. data/lib/rubik/security/classifier/commands/python3.yaml +9 -0
  361. data/lib/rubik/security/classifier/commands/read.yaml +7 -0
  362. data/lib/rubik/security/classifier/commands/readlink.yaml +7 -0
  363. data/lib/rubik/security/classifier/commands/realpath.yaml +7 -0
  364. data/lib/rubik/security/classifier/commands/reboot.yaml +8 -0
  365. data/lib/rubik/security/classifier/commands/rev.yaml +7 -0
  366. data/lib/rubik/security/classifier/commands/rg.yaml +7 -0
  367. data/lib/rubik/security/classifier/commands/rm.yaml +8 -0
  368. data/lib/rubik/security/classifier/commands/rsync.yaml +12 -0
  369. data/lib/rubik/security/classifier/commands/rtk.yaml +140 -0
  370. data/lib/rubik/security/classifier/commands/ruff.yaml +29 -0
  371. data/lib/rubik/security/classifier/commands/rustfmt.yaml +14 -0
  372. data/lib/rubik/security/classifier/commands/scp.yaml +7 -0
  373. data/lib/rubik/security/classifier/commands/sed.yaml +14 -0
  374. data/lib/rubik/security/classifier/commands/seq.yaml +7 -0
  375. data/lib/rubik/security/classifier/commands/sh.yaml +14 -0
  376. data/lib/rubik/security/classifier/commands/sha1sum.yaml +7 -0
  377. data/lib/rubik/security/classifier/commands/sha256sum.yaml +7 -0
  378. data/lib/rubik/security/classifier/commands/shellcheck.yaml +10 -0
  379. data/lib/rubik/security/classifier/commands/shutdown.yaml +8 -0
  380. data/lib/rubik/security/classifier/commands/slack.yaml +113 -0
  381. data/lib/rubik/security/classifier/commands/sleep.yaml +8 -0
  382. data/lib/rubik/security/classifier/commands/snip.yaml +79 -0
  383. data/lib/rubik/security/classifier/commands/sort.yaml +10 -0
  384. data/lib/rubik/security/classifier/commands/ss.yaml +7 -0
  385. data/lib/rubik/security/classifier/commands/ssh.yaml +41 -0
  386. data/lib/rubik/security/classifier/commands/stat.yaml +7 -0
  387. data/lib/rubik/security/classifier/commands/stdbuf.yaml +15 -0
  388. data/lib/rubik/security/classifier/commands/strace.yaml +20 -0
  389. data/lib/rubik/security/classifier/commands/strings.yaml +11 -0
  390. data/lib/rubik/security/classifier/commands/sudo.yaml +24 -0
  391. data/lib/rubik/security/classifier/commands/systemctl.yaml +58 -0
  392. data/lib/rubik/security/classifier/commands/systemd-run.yaml +30 -0
  393. data/lib/rubik/security/classifier/commands/tac.yaml +7 -0
  394. data/lib/rubik/security/classifier/commands/tail.yaml +7 -0
  395. data/lib/rubik/security/classifier/commands/tar.yaml +25 -0
  396. data/lib/rubik/security/classifier/commands/tee.yaml +8 -0
  397. data/lib/rubik/security/classifier/commands/terraform.yaml +70 -0
  398. data/lib/rubik/security/classifier/commands/test.yaml +7 -0
  399. data/lib/rubik/security/classifier/commands/time.yaml +8 -0
  400. data/lib/rubik/security/classifier/commands/timeout.yaml +18 -0
  401. data/lib/rubik/security/classifier/commands/top.yaml +7 -0
  402. data/lib/rubik/security/classifier/commands/touch.yaml +8 -0
  403. data/lib/rubik/security/classifier/commands/tr.yaml +7 -0
  404. data/lib/rubik/security/classifier/commands/traceroute.yaml +7 -0
  405. data/lib/rubik/security/classifier/commands/true.yaml +7 -0
  406. data/lib/rubik/security/classifier/commands/tsc.yaml +16 -0
  407. data/lib/rubik/security/classifier/commands/type.yaml +7 -0
  408. data/lib/rubik/security/classifier/commands/uname.yaml +7 -0
  409. data/lib/rubik/security/classifier/commands/unexpand.yaml +7 -0
  410. data/lib/rubik/security/classifier/commands/uniq.yaml +7 -0
  411. data/lib/rubik/security/classifier/commands/unzip.yaml +10 -0
  412. data/lib/rubik/security/classifier/commands/uptime.yaml +7 -0
  413. data/lib/rubik/security/classifier/commands/uv.yaml +156 -0
  414. data/lib/rubik/security/classifier/commands/wait.yaml +11 -0
  415. data/lib/rubik/security/classifier/commands/wc.yaml +7 -0
  416. data/lib/rubik/security/classifier/commands/wget.yaml +7 -0
  417. data/lib/rubik/security/classifier/commands/whereis.yaml +7 -0
  418. data/lib/rubik/security/classifier/commands/which.yaml +7 -0
  419. data/lib/rubik/security/classifier/commands/whoami.yaml +7 -0
  420. data/lib/rubik/security/classifier/commands/xargs.yaml +26 -0
  421. data/lib/rubik/security/classifier/commands/xmllint.yaml +7 -0
  422. data/lib/rubik/security/classifier/commands/yarn.yaml +72 -0
  423. data/lib/rubik/security/classifier/commands/yes.yaml +7 -0
  424. data/lib/rubik/security/classifier/commands/yq.yaml +10 -0
  425. data/lib/rubik/security/classifier/commands/zip.yaml +8 -0
  426. data/lib/rubik/security/classifier/commands/zsh.yaml +14 -0
  427. data/lib/rubik/security/classifier/database.rb +216 -0
  428. data/lib/rubik/security/classifier/matcher/delegation.rb +190 -0
  429. data/lib/rubik/security/classifier/matcher/options.rb +245 -0
  430. data/lib/rubik/security/classifier/matcher/subcommands.rb +103 -0
  431. data/lib/rubik/security/classifier/matcher.rb +249 -0
  432. data/lib/rubik/security/classifier/models.rb +170 -0
  433. data/lib/rubik/security/classifier/parser.rb +23 -0
  434. data/lib/rubik/security/classifier/parsers/bash.rb +280 -0
  435. data/lib/rubik/security/classifier/parsers/bash_extractors.rb +221 -0
  436. data/lib/rubik/security/classifier/parsers/powershell.rb +185 -0
  437. data/lib/rubik/security/classifier/pwsh_rules.rb +224 -0
  438. data/lib/rubik/security/classifier.rb +25 -0
  439. data/lib/rubik/security/errors.rb +39 -0
  440. data/lib/rubik/security/guard.rb +954 -0
  441. data/lib/rubik/security/redactor.rb +89 -0
  442. data/lib/rubik/security.rb +11 -0
  443. data/lib/rubik/session/manager.rb +331 -0
  444. data/lib/rubik/session/recorder.rb +149 -0
  445. data/lib/rubik/session/replayer.rb +65 -0
  446. data/lib/rubik/session.rb +10 -0
  447. data/lib/rubik/skills/frontmatter.rb +41 -0
  448. data/lib/rubik/skills/manager.rb +223 -0
  449. data/lib/rubik/skills/registry.rb +64 -0
  450. data/lib/rubik/skills/skill.rb +33 -0
  451. data/lib/rubik/skills/storage.rb +77 -0
  452. data/lib/rubik/skills/validator.rb +116 -0
  453. data/lib/rubik/skills.rb +20 -0
  454. data/lib/rubik/storage/folding.rb +23 -0
  455. data/lib/rubik/storage/layout.rb +145 -0
  456. data/lib/rubik/storage/render.rb +97 -0
  457. data/lib/rubik/storage/service.rb +42 -0
  458. data/lib/rubik/storage/store.rb +514 -0
  459. data/lib/rubik/storage/transcript_indexer.rb +116 -0
  460. data/lib/rubik/storage/uri_reader.rb +168 -0
  461. data/lib/rubik/storage/vakanuvis/annal_writer.rb +92 -0
  462. data/lib/rubik/storage/vakanuvis/distill_gate.rb +323 -0
  463. data/lib/rubik/storage/vakanuvis/gate.rb +250 -0
  464. data/lib/rubik/storage/vakanuvis/harness.rb +421 -0
  465. data/lib/rubik/storage/vakanuvis/memory_steward.rb +163 -0
  466. data/lib/rubik/storage/vakanuvis/service.rb +69 -0
  467. data/lib/rubik/storage/vakanuvis/vocabulary.rb +99 -0
  468. data/lib/rubik/storage/vakanuvis/wiki_skeleton.rb +67 -0
  469. data/lib/rubik/storage/vakanuvis.rb +77 -0
  470. data/lib/rubik/storage.rb +29 -0
  471. data/lib/rubik/tools/base.rb +107 -0
  472. data/lib/rubik/tools/builtins/dmesg.rb +74 -0
  473. data/lib/rubik/tools/builtins/exec.rb +293 -0
  474. data/lib/rubik/tools/builtins/files.rb +354 -0
  475. data/lib/rubik/tools/builtins/goal_ledger.rb +89 -0
  476. data/lib/rubik/tools/builtins/grep.rb +281 -0
  477. data/lib/rubik/tools/builtins/interactive.rb +175 -0
  478. data/lib/rubik/tools/builtins/lifecycle.rb +359 -0
  479. data/lib/rubik/tools/builtins/lsp.rb +283 -0
  480. data/lib/rubik/tools/builtins/pruner.rb +88 -0
  481. data/lib/rubik/tools/builtins/runtime.rb +120 -0
  482. data/lib/rubik/tools/builtins/send_message.rb +109 -0
  483. data/lib/rubik/tools/builtins/show_file.rb +84 -0
  484. data/lib/rubik/tools/builtins/skill.rb +72 -0
  485. data/lib/rubik/tools/builtins/storage.rb +232 -0
  486. data/lib/rubik/tools/builtins/subagent.rb +356 -0
  487. data/lib/rubik/tools/builtins/subagent_lifecycle.rb +72 -0
  488. data/lib/rubik/tools/builtins/symbols.rb +209 -0
  489. data/lib/rubik/tools/builtins/synthesis.rb +314 -0
  490. data/lib/rubik/tools/builtins/task.rb +168 -0
  491. data/lib/rubik/tools/builtins/unsynthesize.rb +111 -0
  492. data/lib/rubik/tools/builtins/vakanuvis.rb +161 -0
  493. data/lib/rubik/tools/builtins.rb +30 -0
  494. data/lib/rubik/tools/catalog.rb +70 -0
  495. data/lib/rubik/tools/declaration.rb +90 -0
  496. data/lib/rubik/tools/diagnostic_reporter.rb +283 -0
  497. data/lib/rubik/tools/fuzzy_matcher.rb +172 -0
  498. data/lib/rubik/tools/native_search.rb +180 -0
  499. data/lib/rubik/tools/output.rb +54 -0
  500. data/lib/rubik/tools/preflight_runner.rb +209 -0
  501. data/lib/rubik/tools/registry.rb +247 -0
  502. data/lib/rubik/tools/result.rb +71 -0
  503. data/lib/rubik/tools/services.rb +96 -0
  504. data/lib/rubik/tools/truncator.rb +78 -0
  505. data/lib/rubik/tools/uri_resolver.rb +195 -0
  506. data/lib/rubik/tools.rb +14 -0
  507. data/lib/rubik/ui/approvals.rb +52 -0
  508. data/lib/rubik/ui/banner.rb +43 -0
  509. data/lib/rubik/ui/capability.rb +122 -0
  510. data/lib/rubik/ui/dialog.rb +106 -0
  511. data/lib/rubik/ui/diff_viewer.rb +78 -0
  512. data/lib/rubik/ui/frame.rb +95 -0
  513. data/lib/rubik/ui/markdown_stream.rb +107 -0
  514. data/lib/rubik/ui/panel.rb +98 -0
  515. data/lib/rubik/ui/renderer.rb +206 -0
  516. data/lib/rubik/ui/spinner.rb +120 -0
  517. data/lib/rubik/ui/statusline.rb +134 -0
  518. data/lib/rubik/ui/theme.rb +118 -0
  519. data/lib/rubik/ui.rb +57 -0
  520. data/lib/rubik/uris.rb +101 -0
  521. data/lib/rubik/version.rb +5 -0
  522. data/lib/rubik.rb +65 -0
  523. metadata +770 -0
@@ -0,0 +1,807 @@
1
+ # $schema: ../../../schemas/command.schema.json
2
+ command: glab
3
+ description: "GitLab CLI"
4
+ classification: EXTERNAL_EFFECTS
5
+ strict: false
6
+ global_options:
7
+ -R: {takes_value: true}
8
+ --repo: {takes_value: true, aliases: [-R]}
9
+ --help: {}
10
+
11
+ subcommands:
12
+ # ── Core: Merge Requests ──────────────────────────────────────
13
+ mr:
14
+ subcommands:
15
+ list:
16
+ classification: READONLY
17
+ strict: false
18
+ view:
19
+ classification: READONLY
20
+ strict: false
21
+ options:
22
+ -c: {}
23
+ --comments: {aliases: [-c]}
24
+ -w: {}
25
+ --web: {aliases: [-w]}
26
+ -F: {takes_value: true}
27
+ --output: {takes_value: true, aliases: [-F]}
28
+ -P: {takes_value: true}
29
+ --page: {takes_value: true, aliases: [-P]}
30
+ -p: {takes_value: true}
31
+ --per-page: {takes_value: true, aliases: [-p]}
32
+ diff:
33
+ classification: READONLY
34
+ strict: false
35
+ approvers:
36
+ classification: READONLY
37
+ strict: false
38
+ issues:
39
+ classification: READONLY
40
+ strict: false
41
+ create:
42
+ classification: EXTERNAL_EFFECTS
43
+ strict: false
44
+ for:
45
+ classification: EXTERNAL_EFFECTS
46
+ strict: false
47
+ update:
48
+ classification: EXTERNAL_EFFECTS
49
+ strict: false
50
+ close:
51
+ classification: EXTERNAL_EFFECTS
52
+ strict: false
53
+ reopen:
54
+ classification: EXTERNAL_EFFECTS
55
+ strict: false
56
+ merge:
57
+ classification: EXTERNAL_EFFECTS
58
+ strict: false
59
+ approve:
60
+ classification: EXTERNAL_EFFECTS
61
+ strict: false
62
+ revoke:
63
+ classification: EXTERNAL_EFFECTS
64
+ strict: false
65
+ rebase:
66
+ classification: EXTERNAL_EFFECTS
67
+ strict: false
68
+ subscribe:
69
+ classification: EXTERNAL_EFFECTS
70
+ strict: false
71
+ unsubscribe:
72
+ classification: EXTERNAL_EFFECTS
73
+ strict: false
74
+ todo:
75
+ classification: EXTERNAL_EFFECTS
76
+ strict: false
77
+ note:
78
+ classification: EXTERNAL_EFFECTS
79
+ strict: false
80
+ options:
81
+ -m: {takes_value: true}
82
+ --message: {takes_value: true, aliases: [-m]}
83
+ subcommands:
84
+ list:
85
+ classification: READONLY
86
+ strict: false
87
+ options:
88
+ -F: {takes_value: true}
89
+ --output: {takes_value: true, aliases: [-F]}
90
+ resolve:
91
+ classification: EXTERNAL_EFFECTS
92
+ strict: false
93
+ reopen:
94
+ classification: EXTERNAL_EFFECTS
95
+ strict: false
96
+ checkout:
97
+ classification: LOCAL_EFFECTS
98
+ strict: false
99
+ delete:
100
+ classification: DANGEROUS
101
+ strict: false
102
+
103
+ # ── Core: Issues ──────────────────────────────────────────────
104
+ issue:
105
+ subcommands:
106
+ list:
107
+ classification: READONLY
108
+ strict: false
109
+ view:
110
+ classification: READONLY
111
+ strict: false
112
+ create:
113
+ classification: EXTERNAL_EFFECTS
114
+ strict: false
115
+ update:
116
+ classification: EXTERNAL_EFFECTS
117
+ strict: false
118
+ close:
119
+ classification: EXTERNAL_EFFECTS
120
+ strict: false
121
+ reopen:
122
+ classification: EXTERNAL_EFFECTS
123
+ strict: false
124
+ note:
125
+ classification: EXTERNAL_EFFECTS
126
+ strict: false
127
+ subscribe:
128
+ classification: EXTERNAL_EFFECTS
129
+ strict: false
130
+ unsubscribe:
131
+ classification: EXTERNAL_EFFECTS
132
+ strict: false
133
+ board:
134
+ subcommands:
135
+ view:
136
+ classification: READONLY
137
+ strict: false
138
+ create:
139
+ classification: EXTERNAL_EFFECTS
140
+ strict: false
141
+ delete:
142
+ classification: DANGEROUS
143
+ strict: false
144
+
145
+ # ── Core: Incidents ───────────────────────────────────────────
146
+ incident:
147
+ subcommands:
148
+ list:
149
+ classification: READONLY
150
+ strict: false
151
+ view:
152
+ classification: READONLY
153
+ strict: false
154
+ close:
155
+ classification: EXTERNAL_EFFECTS
156
+ strict: false
157
+ reopen:
158
+ classification: EXTERNAL_EFFECTS
159
+ strict: false
160
+ note:
161
+ classification: EXTERNAL_EFFECTS
162
+ strict: false
163
+ subscribe:
164
+ classification: EXTERNAL_EFFECTS
165
+ strict: false
166
+ unsubscribe:
167
+ classification: EXTERNAL_EFFECTS
168
+ strict: false
169
+
170
+ # ── Core: Snippets ────────────────────────────────────────────
171
+ snippet:
172
+ subcommands:
173
+ create:
174
+ classification: EXTERNAL_EFFECTS
175
+ strict: false
176
+
177
+ # ── Core: Repositories ────────────────────────────────────────
178
+ repo:
179
+ subcommands:
180
+ list:
181
+ classification: READONLY
182
+ strict: false
183
+ view:
184
+ classification: READONLY
185
+ strict: false
186
+ search:
187
+ classification: READONLY
188
+ strict: false
189
+ contributors:
190
+ classification: READONLY
191
+ strict: false
192
+ archive:
193
+ classification: LOCAL_EFFECTS
194
+ strict: false
195
+ clone:
196
+ classification: LOCAL_EFFECTS
197
+ strict: false
198
+ create:
199
+ classification: EXTERNAL_EFFECTS
200
+ strict: false
201
+ update:
202
+ classification: EXTERNAL_EFFECTS
203
+ strict: false
204
+ fork:
205
+ classification: EXTERNAL_EFFECTS
206
+ strict: false
207
+ mirror:
208
+ classification: EXTERNAL_EFFECTS
209
+ strict: false
210
+ transfer:
211
+ classification: EXTERNAL_EFFECTS
212
+ strict: false
213
+ publish:
214
+ subcommands:
215
+ catalog:
216
+ classification: EXTERNAL_EFFECTS
217
+ strict: false
218
+ members:
219
+ subcommands:
220
+ add:
221
+ classification: EXTERNAL_EFFECTS
222
+ strict: false
223
+ remove:
224
+ classification: EXTERNAL_EFFECTS
225
+ strict: false
226
+ delete:
227
+ classification: DANGEROUS
228
+ strict: false
229
+
230
+ # ── Core: Releases ────────────────────────────────────────────
231
+ release:
232
+ subcommands:
233
+ list:
234
+ classification: READONLY
235
+ strict: false
236
+ view:
237
+ classification: READONLY
238
+ strict: false
239
+ create:
240
+ classification: EXTERNAL_EFFECTS
241
+ strict: false
242
+ upload:
243
+ classification: EXTERNAL_EFFECTS
244
+ strict: false
245
+ download:
246
+ classification: LOCAL_EFFECTS
247
+ strict: false
248
+ delete:
249
+ classification: DANGEROUS
250
+ strict: false
251
+
252
+ # ── CI/CD: Pipelines ──────────────────────────────────────────
253
+ ci:
254
+ # `pipe` and `pipeline` are glab's own deprecated aliases for `ci`
255
+ aliases: [pipe, pipeline]
256
+ subcommands:
257
+ list:
258
+ classification: READONLY
259
+ strict: false
260
+ options:
261
+ -b: {takes_value: true}
262
+ --branch: {takes_value: true, aliases: [-b]}
263
+ -P: {takes_value: true}
264
+ --page: {takes_value: true, aliases: [-P]}
265
+ --per-page: {takes_value: true}
266
+ --status: {takes_value: true}
267
+ -F: {takes_value: true}
268
+ --output: {takes_value: true, aliases: [-F]}
269
+ status:
270
+ classification: READONLY
271
+ strict: false
272
+ options:
273
+ -b: {takes_value: true}
274
+ --branch: {takes_value: true, aliases: [-b]}
275
+ --compact: {}
276
+ --pipeline-id: {takes_value: true}
277
+ view:
278
+ classification: READONLY
279
+ strict: false
280
+ options:
281
+ -b: {takes_value: true}
282
+ --branch: {takes_value: true, aliases: [-b]}
283
+ -w: {}
284
+ --web: {aliases: [-w]}
285
+ get:
286
+ classification: READONLY
287
+ strict: false
288
+ options:
289
+ -b: {takes_value: true}
290
+ --branch: {takes_value: true, aliases: [-b]}
291
+ -p: {takes_value: true}
292
+ --pipeline: {takes_value: true, aliases: [-p]}
293
+ -F: {takes_value: true}
294
+ --output: {takes_value: true, aliases: [-F]}
295
+ --with-job-details: {}
296
+ trace:
297
+ classification: READONLY
298
+ strict: false
299
+ options:
300
+ -b: {takes_value: true}
301
+ --branch: {takes_value: true, aliases: [-b]}
302
+ -p: {takes_value: true}
303
+ --pipeline-id: {takes_value: true, aliases: [-p]}
304
+ lint:
305
+ classification: READONLY
306
+ strict: false
307
+ config:
308
+ subcommands:
309
+ compile:
310
+ classification: READONLY
311
+ strict: false
312
+ artifact:
313
+ classification: LOCAL_EFFECTS
314
+ strict: false
315
+ run:
316
+ classification: EXTERNAL_EFFECTS
317
+ strict: false
318
+ run-trig:
319
+ classification: EXTERNAL_EFFECTS
320
+ strict: false
321
+ trigger:
322
+ classification: EXTERNAL_EFFECTS
323
+ strict: false
324
+ retry:
325
+ classification: EXTERNAL_EFFECTS
326
+ strict: false
327
+ cancel:
328
+ classification: EXTERNAL_EFFECTS
329
+ strict: false
330
+ delete:
331
+ classification: DANGEROUS
332
+ strict: false
333
+
334
+ # ── CI/CD: Jobs ────────────────────────────────────────────────
335
+ job:
336
+ subcommands:
337
+ artifact:
338
+ classification: LOCAL_EFFECTS
339
+ strict: false
340
+
341
+ # ── CI/CD: Schedules ──────────────────────────────────────────
342
+ schedule:
343
+ subcommands:
344
+ list:
345
+ classification: READONLY
346
+ strict: false
347
+ create:
348
+ classification: EXTERNAL_EFFECTS
349
+ strict: false
350
+ update:
351
+ classification: EXTERNAL_EFFECTS
352
+ strict: false
353
+ run:
354
+ classification: EXTERNAL_EFFECTS
355
+ strict: false
356
+ delete:
357
+ classification: DANGEROUS
358
+ strict: false
359
+
360
+ # ── CI/CD: Runners ────────────────────────────────────────────
361
+ runner:
362
+ subcommands:
363
+ list:
364
+ classification: READONLY
365
+ strict: false
366
+ jobs:
367
+ classification: READONLY
368
+ strict: false
369
+ managers:
370
+ classification: READONLY
371
+ strict: false
372
+ assign:
373
+ classification: EXTERNAL_EFFECTS
374
+ strict: false
375
+ unassign:
376
+ classification: EXTERNAL_EFFECTS
377
+ strict: false
378
+ update:
379
+ classification: EXTERNAL_EFFECTS
380
+ strict: false
381
+ delete:
382
+ classification: DANGEROUS
383
+ strict: false
384
+
385
+ # ── CI/CD: Runner Controllers ──────────────────────────────────
386
+ runner-controller:
387
+ subcommands:
388
+ list:
389
+ classification: READONLY
390
+ strict: false
391
+ get:
392
+ classification: READONLY
393
+ strict: false
394
+ create:
395
+ classification: EXTERNAL_EFFECTS
396
+ strict: false
397
+ update:
398
+ classification: EXTERNAL_EFFECTS
399
+ strict: false
400
+ scope:
401
+ subcommands:
402
+ list:
403
+ classification: READONLY
404
+ strict: false
405
+ create:
406
+ classification: EXTERNAL_EFFECTS
407
+ strict: false
408
+ delete:
409
+ classification: DANGEROUS
410
+ strict: false
411
+ token:
412
+ subcommands:
413
+ list:
414
+ classification: READONLY
415
+ strict: false
416
+ create:
417
+ classification: EXTERNAL_EFFECTS
418
+ strict: false
419
+ revoke:
420
+ classification: EXTERNAL_EFFECTS
421
+ strict: false
422
+ rotate:
423
+ classification: EXTERNAL_EFFECTS
424
+ strict: false
425
+ delete:
426
+ classification: DANGEROUS
427
+ strict: false
428
+
429
+ # ── Auth ───────────────────────────────────────────────────────
430
+ auth:
431
+ subcommands:
432
+ status:
433
+ classification: READONLY
434
+ strict: false
435
+ login:
436
+ classification: LOCAL_EFFECTS
437
+ strict: false
438
+ logout:
439
+ classification: LOCAL_EFFECTS
440
+ strict: false
441
+ configure-docker:
442
+ classification: LOCAL_EFFECTS
443
+ strict: false
444
+ docker-helper:
445
+ classification: LOCAL_EFFECTS
446
+ strict: false
447
+ dpop-gen:
448
+ classification: READONLY
449
+ strict: false
450
+
451
+ # ── Config ─────────────────────────────────────────────────────
452
+ config:
453
+ subcommands:
454
+ get:
455
+ classification: READONLY
456
+ strict: false
457
+ set:
458
+ classification: LOCAL_EFFECTS
459
+ strict: false
460
+ edit:
461
+ classification: LOCAL_EFFECTS
462
+ strict: false
463
+
464
+ # ── Labels ─────────────────────────────────────────────────────
465
+ label:
466
+ subcommands:
467
+ list:
468
+ classification: READONLY
469
+ strict: false
470
+ get:
471
+ classification: READONLY
472
+ strict: false
473
+ create:
474
+ classification: EXTERNAL_EFFECTS
475
+ strict: false
476
+ edit:
477
+ classification: EXTERNAL_EFFECTS
478
+ strict: false
479
+ delete:
480
+ classification: DANGEROUS
481
+ strict: false
482
+
483
+ # ── Variables ──────────────────────────────────────────────────
484
+ variable:
485
+ subcommands:
486
+ list:
487
+ classification: READONLY
488
+ strict: false
489
+ get:
490
+ classification: READONLY
491
+ strict: false
492
+ export:
493
+ classification: READONLY
494
+ strict: false
495
+ set:
496
+ classification: EXTERNAL_EFFECTS
497
+ strict: false
498
+ update:
499
+ classification: EXTERNAL_EFFECTS
500
+ strict: false
501
+ delete:
502
+ classification: DANGEROUS
503
+ strict: false
504
+
505
+ # ── Milestones ─────────────────────────────────────────────────
506
+ milestone:
507
+ subcommands:
508
+ list:
509
+ classification: READONLY
510
+ strict: false
511
+ get:
512
+ classification: READONLY
513
+ strict: false
514
+ create:
515
+ classification: EXTERNAL_EFFECTS
516
+ strict: false
517
+ edit:
518
+ classification: EXTERNAL_EFFECTS
519
+ strict: false
520
+ delete:
521
+ classification: DANGEROUS
522
+ strict: false
523
+
524
+ # ── SSH Keys ───────────────────────────────────────────────────
525
+ ssh-key:
526
+ subcommands:
527
+ list:
528
+ classification: READONLY
529
+ strict: false
530
+ get:
531
+ classification: READONLY
532
+ strict: false
533
+ add:
534
+ classification: EXTERNAL_EFFECTS
535
+ strict: false
536
+ delete:
537
+ classification: DANGEROUS
538
+ strict: false
539
+
540
+ # ── GPG Keys ───────────────────────────────────────────────────
541
+ gpg-key:
542
+ subcommands:
543
+ list:
544
+ classification: READONLY
545
+ strict: false
546
+ get:
547
+ classification: READONLY
548
+ strict: false
549
+ add:
550
+ classification: EXTERNAL_EFFECTS
551
+ strict: false
552
+ delete:
553
+ classification: DANGEROUS
554
+ strict: false
555
+
556
+ # ── Deploy Keys ────────────────────────────────────────────────
557
+ deploy-key:
558
+ subcommands:
559
+ list:
560
+ classification: READONLY
561
+ strict: false
562
+ get:
563
+ classification: READONLY
564
+ strict: false
565
+ add:
566
+ classification: EXTERNAL_EFFECTS
567
+ strict: false
568
+ delete:
569
+ classification: DANGEROUS
570
+ strict: false
571
+
572
+ # ── Secure Files ───────────────────────────────────────────────
573
+ securefile:
574
+ subcommands:
575
+ list:
576
+ classification: READONLY
577
+ strict: false
578
+ get:
579
+ classification: READONLY
580
+ strict: false
581
+ download:
582
+ classification: LOCAL_EFFECTS
583
+ strict: false
584
+ create:
585
+ classification: EXTERNAL_EFFECTS
586
+ strict: false
587
+ remove:
588
+ classification: DANGEROUS
589
+ strict: false
590
+
591
+ # ── Tokens ─────────────────────────────────────────────────────
592
+ token:
593
+ subcommands:
594
+ list:
595
+ classification: READONLY
596
+ strict: false
597
+ create:
598
+ classification: EXTERNAL_EFFECTS
599
+ strict: false
600
+ revoke:
601
+ classification: EXTERNAL_EFFECTS
602
+ strict: false
603
+ rotate:
604
+ classification: EXTERNAL_EFFECTS
605
+ strict: false
606
+
607
+ # ── Aliases ────────────────────────────────────────────────────
608
+ alias:
609
+ subcommands:
610
+ list:
611
+ classification: READONLY
612
+ strict: false
613
+ set:
614
+ classification: LOCAL_EFFECTS
615
+ strict: false
616
+ delete:
617
+ classification: LOCAL_EFFECTS
618
+ strict: false
619
+
620
+ # ── Changelog ──────────────────────────────────────────────────
621
+ changelog:
622
+ subcommands:
623
+ generate:
624
+ classification: EXTERNAL_EFFECTS
625
+ strict: false
626
+
627
+ # ── Cluster ────────────────────────────────────────────────────
628
+ cluster:
629
+ subcommands:
630
+ graph:
631
+ classification: READONLY
632
+ strict: false
633
+ agent:
634
+ subcommands:
635
+ list:
636
+ classification: READONLY
637
+ strict: false
638
+ check_manifest_usage:
639
+ classification: READONLY
640
+ strict: false
641
+ bootstrap:
642
+ classification: EXTERNAL_EFFECTS
643
+ strict: false
644
+ get-token:
645
+ classification: EXTERNAL_EFFECTS
646
+ strict: false
647
+ update-kubeconfig:
648
+ classification: LOCAL_EFFECTS
649
+ strict: false
650
+ token:
651
+ subcommands:
652
+ list:
653
+ classification: READONLY
654
+ strict: false
655
+ revoke:
656
+ classification: EXTERNAL_EFFECTS
657
+ strict: false
658
+ token-cache:
659
+ subcommands:
660
+ list:
661
+ classification: READONLY
662
+ strict: false
663
+ clear:
664
+ classification: LOCAL_EFFECTS
665
+ strict: false
666
+
667
+ # ── OpenTofu / Terraform ───────────────────────────────────────
668
+ opentofu:
669
+ subcommands:
670
+ init:
671
+ classification: LOCAL_EFFECTS
672
+ strict: false
673
+ state:
674
+ subcommands:
675
+ list:
676
+ classification: READONLY
677
+ strict: false
678
+ download:
679
+ classification: READONLY
680
+ strict: false
681
+ lock:
682
+ classification: EXTERNAL_EFFECTS
683
+ strict: false
684
+ unlock:
685
+ classification: EXTERNAL_EFFECTS
686
+ strict: false
687
+ delete:
688
+ classification: DANGEROUS
689
+ strict: false
690
+
691
+ # ── Duo (AI) ───────────────────────────────────────────────────
692
+ duo:
693
+ subcommands:
694
+ ask:
695
+ classification: READONLY
696
+ strict: false
697
+ cli:
698
+ classification: READONLY
699
+ strict: false
700
+
701
+ # ── Stack (Stacked Diffs) ──────────────────────────────────────
702
+ stack:
703
+ subcommands:
704
+ list:
705
+ classification: READONLY
706
+ strict: false
707
+ create:
708
+ classification: EXTERNAL_EFFECTS
709
+ strict: false
710
+ save:
711
+ classification: LOCAL_EFFECTS
712
+ strict: false
713
+ amend:
714
+ classification: LOCAL_EFFECTS
715
+ strict: false
716
+ sync:
717
+ classification: EXTERNAL_EFFECTS
718
+ strict: false
719
+ first:
720
+ classification: LOCAL_EFFECTS
721
+ strict: false
722
+ last:
723
+ classification: LOCAL_EFFECTS
724
+ strict: false
725
+ next:
726
+ classification: LOCAL_EFFECTS
727
+ strict: false
728
+ prev:
729
+ classification: LOCAL_EFFECTS
730
+ strict: false
731
+ move:
732
+ classification: LOCAL_EFFECTS
733
+ strict: false
734
+ switch:
735
+ classification: LOCAL_EFFECTS
736
+ strict: false
737
+ reorder:
738
+ classification: EXTERNAL_EFFECTS
739
+ strict: false
740
+
741
+ # ── Attestation ────────────────────────────────────────────────
742
+ attestation:
743
+ subcommands:
744
+ verify:
745
+ classification: READONLY
746
+ strict: false
747
+
748
+ # ── MCP ────────────────────────────────────────────────────────
749
+ mcp:
750
+ subcommands:
751
+ serve:
752
+ classification: LOCAL_EFFECTS
753
+ strict: false
754
+
755
+ # ── User ───────────────────────────────────────────────────────
756
+ user:
757
+ subcommands:
758
+ events:
759
+ classification: READONLY
760
+ strict: false
761
+
762
+ # ── Iteration ──────────────────────────────────────────────────
763
+ iteration:
764
+ subcommands:
765
+ list:
766
+ classification: READONLY
767
+ strict: false
768
+
769
+ # ── Work Items ─────────────────────────────────────────────────
770
+ work-items:
771
+ subcommands:
772
+ list:
773
+ classification: READONLY
774
+ strict: false
775
+
776
+ # ── Top-level commands ─────────────────────────────────────────
777
+ check-update:
778
+ classification: READONLY
779
+ strict: false
780
+
781
+ version:
782
+ classification: READONLY
783
+ strict: false
784
+
785
+ completion:
786
+ classification: READONLY
787
+ strict: false
788
+
789
+ api:
790
+ classification: EXTERNAL_EFFECTS
791
+ strict: false
792
+ options:
793
+ -X: {takes_value: true}
794
+ --method: {takes_value: true, aliases: [-X]}
795
+ -f: {takes_value: true}
796
+ --field: {takes_value: true, aliases: [-f]}
797
+ -F: {takes_value: true}
798
+ --raw-field: {takes_value: true, aliases: [-F]}
799
+ -H: {takes_value: true}
800
+ --header: {takes_value: true, aliases: [-H]}
801
+ --hostname: {takes_value: true}
802
+ --input: {takes_value: true}
803
+ --output: {takes_value: true}
804
+ -i: {}
805
+ --include: {aliases: [-i]}
806
+ --paginate: {}
807
+ --silent: {}