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,983 @@
1
+ # $schema: ../../../schemas/command.schema.json
2
+ command: gog
3
+ description: "gogcli — Google Workspace CLI for Gmail, Calendar, Drive, Docs, Sheets, Slides, Chat, Contacts, Tasks, and more"
4
+ classification: READONLY
5
+
6
+ global_options:
7
+ --help: {overrides: READONLY}
8
+ -h: {overrides: READONLY}
9
+ --account: {takes_value: true}
10
+ -a: {takes_value: true, aliases: [--account]}
11
+ --client: {takes_value: true}
12
+ --enable-commands: {takes_value: true}
13
+ --json: {}
14
+ -j: {aliases: [--json]}
15
+ --plain: {}
16
+ -p: {aliases: [--plain]}
17
+ --results-only: {}
18
+ --select: {takes_value: true}
19
+ --dry-run: {overrides: READONLY, risk: LOW}
20
+ -n: {overrides: READONLY, risk: LOW, aliases: [--dry-run]}
21
+ --force: {}
22
+ -y: {aliases: [--force]}
23
+ --no-input: {}
24
+ --verbose: {}
25
+ -v: {aliases: [--verbose]}
26
+ --version: {overrides: READONLY}
27
+ --color: {takes_value: true}
28
+
29
+ subcommands:
30
+ # ── top-level aliases ────────────────────────────────────────────────
31
+ # These are convenience aliases for common operations.
32
+ send:
33
+ # Alias for gmail send — sends an email
34
+ classification: EXTERNAL_EFFECTS
35
+ strict: false
36
+ ls:
37
+ classification: READONLY
38
+ strict: false
39
+ search:
40
+ classification: READONLY
41
+ strict: false
42
+ open:
43
+ classification: READONLY
44
+ strict: false
45
+ download:
46
+ classification: READONLY
47
+ strict: false
48
+ upload:
49
+ classification: EXTERNAL_EFFECTS
50
+ strict: false
51
+ login:
52
+ # OAuth2 handshake — creates/rotates credential server-side
53
+ classification: EXTERNAL_EFFECTS
54
+ strict: false
55
+ logout:
56
+ classification: LOCAL_EFFECTS
57
+ risk: LOW
58
+ strict: false
59
+ status:
60
+ classification: READONLY
61
+ me:
62
+ classification: READONLY
63
+ whoami:
64
+ classification: READONLY
65
+ version:
66
+ classification: READONLY
67
+ completion:
68
+ classification: READONLY
69
+ strict: false
70
+ exit-codes:
71
+ classification: READONLY
72
+ schema:
73
+ classification: READONLY
74
+ strict: false
75
+
76
+ # ── auth ─────────────────────────────────────────────────────────────
77
+ auth:
78
+ classification: READONLY
79
+ subcommands:
80
+ credentials:
81
+ # Storing OAuth client credentials is a local config write
82
+ classification: LOCAL_EFFECTS
83
+ subcommands:
84
+ set:
85
+ classification: LOCAL_EFFECTS
86
+ list:
87
+ classification: READONLY
88
+ add:
89
+ # OAuth2 handshake — creates/rotates credential server-side
90
+ classification: EXTERNAL_EFFECTS
91
+ strict: false
92
+ services:
93
+ classification: READONLY
94
+ list:
95
+ classification: READONLY
96
+ strict: false
97
+ alias:
98
+ classification: LOCAL_EFFECTS
99
+ subcommands:
100
+ list:
101
+ classification: READONLY
102
+ set:
103
+ classification: LOCAL_EFFECTS
104
+ unset:
105
+ classification: LOCAL_EFFECTS
106
+ status:
107
+ classification: READONLY
108
+ keyring:
109
+ # Viewing or setting keyring backend — local config
110
+ classification: LOCAL_EFFECTS
111
+ remove:
112
+ # Removes a stored refresh token
113
+ classification: LOCAL_EFFECTS
114
+ tokens:
115
+ classification: READONLY
116
+ subcommands:
117
+ list:
118
+ classification: READONLY
119
+ delete:
120
+ classification: LOCAL_EFFECTS
121
+ export:
122
+ # Exports a refresh token file — contains secrets
123
+ classification: DANGEROUS
124
+ strict: false
125
+ import:
126
+ classification: LOCAL_EFFECTS
127
+ manage:
128
+ # Opens browser to Google accounts manager
129
+ classification: READONLY
130
+ service-account:
131
+ classification: LOCAL_EFFECTS
132
+ subcommands:
133
+ set:
134
+ classification: LOCAL_EFFECTS
135
+ strict: false
136
+ unset:
137
+ classification: LOCAL_EFFECTS
138
+ status:
139
+ classification: READONLY
140
+ keep:
141
+ # Legacy alias for service-account set (Keep)
142
+ classification: LOCAL_EFFECTS
143
+ strict: false
144
+
145
+ # ── config ───────────────────────────────────────────────────────────
146
+ config:
147
+ classification: READONLY
148
+ subcommands:
149
+ get:
150
+ classification: READONLY
151
+ keys:
152
+ classification: READONLY
153
+ set:
154
+ classification: LOCAL_EFFECTS
155
+ unset:
156
+ classification: LOCAL_EFFECTS
157
+ list:
158
+ classification: READONLY
159
+ path:
160
+ classification: READONLY
161
+
162
+ # ── agent ────────────────────────────────────────────────────────────
163
+ agent:
164
+ classification: READONLY
165
+ subcommands:
166
+ exit-codes:
167
+ classification: READONLY
168
+
169
+ # ── time ─────────────────────────────────────────────────────────────
170
+ time:
171
+ classification: READONLY
172
+ strict: false
173
+ subcommands:
174
+ now:
175
+ classification: READONLY
176
+ strict: false
177
+
178
+ # ── gmail ────────────────────────────────────────────────────────────
179
+ gmail:
180
+ classification: READONLY
181
+ subcommands:
182
+ # -- read --
183
+ search:
184
+ classification: READONLY
185
+ strict: false
186
+ get:
187
+ classification: READONLY
188
+ strict: false
189
+ attachment:
190
+ classification: READONLY
191
+ strict: false
192
+ url:
193
+ classification: READONLY
194
+ history:
195
+ classification: READONLY
196
+ strict: false
197
+ messages:
198
+ classification: READONLY
199
+ subcommands:
200
+ search:
201
+ classification: READONLY
202
+ strict: false
203
+
204
+ # -- threads --
205
+ thread:
206
+ classification: READONLY
207
+ subcommands:
208
+ get:
209
+ classification: READONLY
210
+ strict: false
211
+ modify:
212
+ classification: EXTERNAL_EFFECTS
213
+ strict: false
214
+ attachments:
215
+ classification: READONLY
216
+ strict: false
217
+
218
+ # -- labels --
219
+ labels:
220
+ classification: READONLY
221
+ subcommands:
222
+ list:
223
+ classification: READONLY
224
+ get:
225
+ classification: READONLY
226
+ strict: false
227
+ create:
228
+ classification: EXTERNAL_EFFECTS
229
+ modify:
230
+ classification: EXTERNAL_EFFECTS
231
+ strict: false
232
+ delete:
233
+ classification: DANGEROUS
234
+
235
+ # -- batch --
236
+ batch:
237
+ classification: EXTERNAL_EFFECTS
238
+ subcommands:
239
+ delete:
240
+ classification: DANGEROUS
241
+ modify:
242
+ classification: EXTERNAL_EFFECTS
243
+ strict: false
244
+
245
+ # -- write --
246
+ send:
247
+ classification: EXTERNAL_EFFECTS
248
+ strict: false
249
+ drafts:
250
+ classification: READONLY
251
+ subcommands:
252
+ list:
253
+ classification: READONLY
254
+ strict: false
255
+ get:
256
+ classification: READONLY
257
+ strict: false
258
+ create:
259
+ classification: EXTERNAL_EFFECTS
260
+ strict: false
261
+ update:
262
+ classification: EXTERNAL_EFFECTS
263
+ strict: false
264
+ send:
265
+ classification: EXTERNAL_EFFECTS
266
+ delete:
267
+ classification: DANGEROUS
268
+
269
+ # -- track --
270
+ track:
271
+ classification: READONLY
272
+ subcommands:
273
+ setup:
274
+ classification: EXTERNAL_EFFECTS
275
+ strict: false
276
+ opens:
277
+ classification: READONLY
278
+ strict: false
279
+ status:
280
+ classification: READONLY
281
+
282
+ # -- settings --
283
+ settings:
284
+ classification: READONLY
285
+ subcommands:
286
+ filters:
287
+ classification: READONLY
288
+ subcommands:
289
+ list:
290
+ classification: READONLY
291
+ get:
292
+ classification: READONLY
293
+ create:
294
+ classification: EXTERNAL_EFFECTS
295
+ strict: false
296
+ delete:
297
+ classification: DANGEROUS
298
+ delegates:
299
+ classification: READONLY
300
+ subcommands:
301
+ list:
302
+ classification: READONLY
303
+ get:
304
+ classification: READONLY
305
+ add:
306
+ classification: EXTERNAL_EFFECTS
307
+ remove:
308
+ classification: EXTERNAL_EFFECTS
309
+ forwarding:
310
+ classification: READONLY
311
+ subcommands:
312
+ list:
313
+ classification: READONLY
314
+ get:
315
+ classification: READONLY
316
+ create:
317
+ classification: EXTERNAL_EFFECTS
318
+ delete:
319
+ classification: DANGEROUS
320
+ autoforward:
321
+ classification: READONLY
322
+ subcommands:
323
+ get:
324
+ classification: READONLY
325
+ update:
326
+ classification: EXTERNAL_EFFECTS
327
+ strict: false
328
+ sendas:
329
+ classification: READONLY
330
+ subcommands:
331
+ list:
332
+ classification: READONLY
333
+ get:
334
+ classification: READONLY
335
+ create:
336
+ classification: EXTERNAL_EFFECTS
337
+ strict: false
338
+ update:
339
+ classification: EXTERNAL_EFFECTS
340
+ strict: false
341
+ verify:
342
+ classification: EXTERNAL_EFFECTS
343
+ delete:
344
+ classification: DANGEROUS
345
+ vacation:
346
+ classification: READONLY
347
+ subcommands:
348
+ get:
349
+ classification: READONLY
350
+ update:
351
+ classification: EXTERNAL_EFFECTS
352
+ strict: false
353
+ watch:
354
+ classification: EXTERNAL_EFFECTS
355
+ subcommands:
356
+ start:
357
+ classification: EXTERNAL_EFFECTS
358
+ strict: false
359
+ status:
360
+ classification: READONLY
361
+ renew:
362
+ classification: EXTERNAL_EFFECTS
363
+ strict: false
364
+ stop:
365
+ classification: EXTERNAL_EFFECTS
366
+ serve:
367
+ classification: EXTERNAL_EFFECTS
368
+ strict: false
369
+
370
+ # ── calendar ─────────────────────────────────────────────────────────
371
+ calendar:
372
+ classification: READONLY
373
+ subcommands:
374
+ calendars:
375
+ classification: READONLY
376
+ strict: false
377
+ acl:
378
+ classification: READONLY
379
+ strict: false
380
+ events:
381
+ classification: READONLY
382
+ strict: false
383
+ event:
384
+ classification: READONLY
385
+ strict: false
386
+ get:
387
+ classification: READONLY
388
+ strict: false
389
+ search:
390
+ classification: READONLY
391
+ strict: false
392
+ freebusy:
393
+ classification: READONLY
394
+ strict: false
395
+ conflicts:
396
+ classification: READONLY
397
+ strict: false
398
+ colors:
399
+ classification: READONLY
400
+ time:
401
+ classification: READONLY
402
+ strict: false
403
+ users:
404
+ classification: READONLY
405
+ strict: false
406
+ team:
407
+ classification: READONLY
408
+ strict: false
409
+ create:
410
+ classification: EXTERNAL_EFFECTS
411
+ strict: false
412
+ update:
413
+ classification: EXTERNAL_EFFECTS
414
+ strict: false
415
+ delete:
416
+ classification: DANGEROUS
417
+ strict: false
418
+ respond:
419
+ classification: EXTERNAL_EFFECTS
420
+ strict: false
421
+ propose-time:
422
+ # Generates a URL or opens browser; optionally declines
423
+ classification: EXTERNAL_EFFECTS
424
+ strict: false
425
+ focus-time:
426
+ classification: EXTERNAL_EFFECTS
427
+ strict: false
428
+ out-of-office:
429
+ classification: EXTERNAL_EFFECTS
430
+ strict: false
431
+ working-location:
432
+ classification: EXTERNAL_EFFECTS
433
+ strict: false
434
+
435
+ # ── drive ────────────────────────────────────────────────────────────
436
+ drive:
437
+ classification: READONLY
438
+ subcommands:
439
+ ls:
440
+ classification: READONLY
441
+ strict: false
442
+ search:
443
+ classification: READONLY
444
+ strict: false
445
+ get:
446
+ classification: READONLY
447
+ download:
448
+ classification: READONLY
449
+ strict: false
450
+ url:
451
+ classification: READONLY
452
+ permissions:
453
+ classification: READONLY
454
+ strict: false
455
+ drives:
456
+ classification: READONLY
457
+ strict: false
458
+ comments:
459
+ classification: READONLY
460
+ subcommands:
461
+ list:
462
+ classification: READONLY
463
+ strict: false
464
+ get:
465
+ classification: READONLY
466
+ create:
467
+ classification: EXTERNAL_EFFECTS
468
+ strict: false
469
+ update:
470
+ classification: EXTERNAL_EFFECTS
471
+ copy:
472
+ classification: EXTERNAL_EFFECTS
473
+ strict: false
474
+ upload:
475
+ classification: EXTERNAL_EFFECTS
476
+ strict: false
477
+ mkdir:
478
+ classification: EXTERNAL_EFFECTS
479
+ strict: false
480
+ rename:
481
+ classification: EXTERNAL_EFFECTS
482
+ move:
483
+ classification: EXTERNAL_EFFECTS
484
+ strict: false
485
+ share:
486
+ classification: EXTERNAL_EFFECTS
487
+ strict: false
488
+ unshare:
489
+ classification: EXTERNAL_EFFECTS
490
+ delete:
491
+ # Default: move to trash. --permanent: permanently delete.
492
+ classification: EXTERNAL_EFFECTS
493
+ strict: false
494
+ options:
495
+ --permanent: {overrides: DANGEROUS}
496
+
497
+ # ── docs ─────────────────────────────────────────────────────────────
498
+ docs:
499
+ classification: READONLY
500
+ subcommands:
501
+ info:
502
+ classification: READONLY
503
+ cat:
504
+ classification: READONLY
505
+ strict: false
506
+ export:
507
+ classification: READONLY
508
+ strict: false
509
+ list-tabs:
510
+ classification: READONLY
511
+ comments:
512
+ classification: READONLY
513
+ subcommands:
514
+ list:
515
+ classification: READONLY
516
+ strict: false
517
+ get:
518
+ classification: READONLY
519
+ add:
520
+ classification: EXTERNAL_EFFECTS
521
+ strict: false
522
+ reply:
523
+ classification: EXTERNAL_EFFECTS
524
+ create:
525
+ classification: EXTERNAL_EFFECTS
526
+ strict: false
527
+ copy:
528
+ classification: EXTERNAL_EFFECTS
529
+ strict: false
530
+ add-tab:
531
+ classification: EXTERNAL_EFFECTS
532
+ strict: false
533
+ update-tab:
534
+ classification: EXTERNAL_EFFECTS
535
+ strict: false
536
+ delete-tab:
537
+ classification: DANGEROUS
538
+ write:
539
+ classification: EXTERNAL_EFFECTS
540
+ strict: false
541
+ insert:
542
+ classification: EXTERNAL_EFFECTS
543
+ strict: false
544
+ delete:
545
+ classification: DANGEROUS
546
+ strict: false
547
+ find-replace:
548
+ classification: EXTERNAL_EFFECTS
549
+ strict: false
550
+ update:
551
+ classification: EXTERNAL_EFFECTS
552
+ strict: false
553
+
554
+ # ── slides ───────────────────────────────────────────────────────────
555
+ slides:
556
+ classification: READONLY
557
+ subcommands:
558
+ info:
559
+ classification: READONLY
560
+ export:
561
+ classification: READONLY
562
+ strict: false
563
+ list-slides:
564
+ classification: READONLY
565
+ read-slide:
566
+ classification: READONLY
567
+ create:
568
+ classification: EXTERNAL_EFFECTS
569
+ strict: false
570
+ create-from-markdown:
571
+ classification: EXTERNAL_EFFECTS
572
+ strict: false
573
+ copy:
574
+ classification: EXTERNAL_EFFECTS
575
+ strict: false
576
+ add-slide:
577
+ classification: EXTERNAL_EFFECTS
578
+ strict: false
579
+ update-notes:
580
+ classification: EXTERNAL_EFFECTS
581
+ strict: false
582
+ replace-slide:
583
+ classification: EXTERNAL_EFFECTS
584
+ strict: false
585
+ delete-slide:
586
+ classification: DANGEROUS
587
+
588
+ # ── sheets ───────────────────────────────────────────────────────────
589
+ sheets:
590
+ classification: READONLY
591
+ subcommands:
592
+ get:
593
+ classification: READONLY
594
+ strict: false
595
+ metadata:
596
+ classification: READONLY
597
+ notes:
598
+ classification: READONLY
599
+ export:
600
+ classification: READONLY
601
+ strict: false
602
+ create:
603
+ classification: EXTERNAL_EFFECTS
604
+ strict: false
605
+ copy:
606
+ classification: EXTERNAL_EFFECTS
607
+ strict: false
608
+ update:
609
+ classification: EXTERNAL_EFFECTS
610
+ strict: false
611
+ append:
612
+ classification: EXTERNAL_EFFECTS
613
+ strict: false
614
+ insert:
615
+ classification: EXTERNAL_EFFECTS
616
+ strict: false
617
+ format:
618
+ classification: EXTERNAL_EFFECTS
619
+ strict: false
620
+ clear:
621
+ classification: DANGEROUS
622
+
623
+ # ── contacts ─────────────────────────────────────────────────────────
624
+ contacts:
625
+ classification: READONLY
626
+ subcommands:
627
+ list:
628
+ classification: READONLY
629
+ strict: false
630
+ search:
631
+ classification: READONLY
632
+ strict: false
633
+ get:
634
+ classification: READONLY
635
+ create:
636
+ classification: EXTERNAL_EFFECTS
637
+ strict: false
638
+ update:
639
+ classification: EXTERNAL_EFFECTS
640
+ strict: false
641
+ delete:
642
+ classification: DANGEROUS
643
+ directory:
644
+ classification: READONLY
645
+ subcommands:
646
+ list:
647
+ classification: READONLY
648
+ strict: false
649
+ search:
650
+ classification: READONLY
651
+ strict: false
652
+ other:
653
+ classification: READONLY
654
+ subcommands:
655
+ list:
656
+ classification: READONLY
657
+ strict: false
658
+ search:
659
+ classification: READONLY
660
+ strict: false
661
+ delete:
662
+ classification: DANGEROUS
663
+
664
+ # ── tasks ────────────────────────────────────────────────────────────
665
+ tasks:
666
+ classification: READONLY
667
+ subcommands:
668
+ lists:
669
+ classification: READONLY
670
+ subcommands:
671
+ list:
672
+ classification: READONLY
673
+ strict: false
674
+ create:
675
+ classification: EXTERNAL_EFFECTS
676
+ list:
677
+ classification: READONLY
678
+ strict: false
679
+ get:
680
+ classification: READONLY
681
+ add:
682
+ classification: EXTERNAL_EFFECTS
683
+ strict: false
684
+ update:
685
+ classification: EXTERNAL_EFFECTS
686
+ strict: false
687
+ done:
688
+ classification: EXTERNAL_EFFECTS
689
+ undo:
690
+ classification: EXTERNAL_EFFECTS
691
+ delete:
692
+ classification: DANGEROUS
693
+ clear:
694
+ classification: DANGEROUS
695
+
696
+ # ── people ───────────────────────────────────────────────────────────
697
+ people:
698
+ classification: READONLY
699
+ subcommands:
700
+ me:
701
+ classification: READONLY
702
+ get:
703
+ classification: READONLY
704
+ search:
705
+ classification: READONLY
706
+ strict: false
707
+ relations:
708
+ classification: READONLY
709
+ strict: false
710
+
711
+ # ── chat ─────────────────────────────────────────────────────────────
712
+ chat:
713
+ classification: READONLY
714
+ subcommands:
715
+ spaces:
716
+ classification: READONLY
717
+ subcommands:
718
+ list:
719
+ classification: READONLY
720
+ strict: false
721
+ find:
722
+ classification: READONLY
723
+ strict: false
724
+ create:
725
+ classification: EXTERNAL_EFFECTS
726
+ strict: false
727
+ messages:
728
+ classification: READONLY
729
+ subcommands:
730
+ list:
731
+ classification: READONLY
732
+ strict: false
733
+ send:
734
+ classification: EXTERNAL_EFFECTS
735
+ strict: false
736
+ threads:
737
+ classification: READONLY
738
+ subcommands:
739
+ list:
740
+ classification: READONLY
741
+ strict: false
742
+ dm:
743
+ classification: READONLY
744
+ subcommands:
745
+ send:
746
+ classification: EXTERNAL_EFFECTS
747
+ strict: false
748
+ space:
749
+ classification: READONLY
750
+
751
+ # ── groups ───────────────────────────────────────────────────────────
752
+ groups:
753
+ classification: READONLY
754
+ subcommands:
755
+ list:
756
+ classification: READONLY
757
+ strict: false
758
+ members:
759
+ classification: READONLY
760
+ strict: false
761
+
762
+ # ── keep ─────────────────────────────────────────────────────────────
763
+ keep:
764
+ classification: READONLY
765
+ strict: false
766
+ subcommands:
767
+ list:
768
+ classification: READONLY
769
+ strict: false
770
+ get:
771
+ classification: READONLY
772
+ strict: false
773
+ search:
774
+ classification: READONLY
775
+ strict: false
776
+ attachment:
777
+ classification: READONLY
778
+ strict: false
779
+
780
+ # ── forms ────────────────────────────────────────────────────────────
781
+ forms:
782
+ classification: READONLY
783
+ subcommands:
784
+ get:
785
+ classification: READONLY
786
+ create:
787
+ classification: EXTERNAL_EFFECTS
788
+ strict: false
789
+ responses:
790
+ classification: READONLY
791
+ subcommands:
792
+ list:
793
+ classification: READONLY
794
+ strict: false
795
+ get:
796
+ classification: READONLY
797
+
798
+ # ── appscript ────────────────────────────────────────────────────────
799
+ appscript:
800
+ classification: READONLY
801
+ subcommands:
802
+ get:
803
+ classification: READONLY
804
+ content:
805
+ classification: READONLY
806
+ create:
807
+ classification: EXTERNAL_EFFECTS
808
+ strict: false
809
+ run:
810
+ # Runs arbitrary Apps Script code
811
+ classification: DANGEROUS
812
+ strict: false
813
+
814
+ # ── classroom ────────────────────────────────────────────────────────
815
+ classroom:
816
+ classification: READONLY
817
+ subcommands:
818
+ courses:
819
+ classification: READONLY
820
+ subcommands:
821
+ list:
822
+ classification: READONLY
823
+ strict: false
824
+ get:
825
+ classification: READONLY
826
+ create:
827
+ classification: EXTERNAL_EFFECTS
828
+ strict: false
829
+ update:
830
+ classification: EXTERNAL_EFFECTS
831
+ strict: false
832
+ delete:
833
+ classification: DANGEROUS
834
+ archive:
835
+ classification: EXTERNAL_EFFECTS
836
+ unarchive:
837
+ classification: EXTERNAL_EFFECTS
838
+ url:
839
+ classification: READONLY
840
+ students:
841
+ classification: READONLY
842
+ subcommands:
843
+ list:
844
+ classification: READONLY
845
+ strict: false
846
+ get:
847
+ classification: READONLY
848
+ add:
849
+ classification: EXTERNAL_EFFECTS
850
+ strict: false
851
+ remove:
852
+ classification: EXTERNAL_EFFECTS
853
+ teachers:
854
+ classification: READONLY
855
+ subcommands:
856
+ list:
857
+ classification: READONLY
858
+ strict: false
859
+ get:
860
+ classification: READONLY
861
+ add:
862
+ classification: EXTERNAL_EFFECTS
863
+ remove:
864
+ classification: EXTERNAL_EFFECTS
865
+ roster:
866
+ classification: READONLY
867
+ strict: false
868
+ coursework:
869
+ classification: READONLY
870
+ subcommands:
871
+ list:
872
+ classification: READONLY
873
+ strict: false
874
+ get:
875
+ classification: READONLY
876
+ create:
877
+ classification: EXTERNAL_EFFECTS
878
+ strict: false
879
+ update:
880
+ classification: EXTERNAL_EFFECTS
881
+ strict: false
882
+ assignees:
883
+ classification: EXTERNAL_EFFECTS
884
+ strict: false
885
+ materials:
886
+ classification: READONLY
887
+ subcommands:
888
+ list:
889
+ classification: READONLY
890
+ strict: false
891
+ get:
892
+ classification: READONLY
893
+ create:
894
+ classification: EXTERNAL_EFFECTS
895
+ strict: false
896
+ update:
897
+ classification: EXTERNAL_EFFECTS
898
+ strict: false
899
+ submissions:
900
+ classification: READONLY
901
+ subcommands:
902
+ list:
903
+ classification: READONLY
904
+ strict: false
905
+ get:
906
+ classification: READONLY
907
+ grade:
908
+ classification: EXTERNAL_EFFECTS
909
+ strict: false
910
+ return:
911
+ classification: EXTERNAL_EFFECTS
912
+ turn-in:
913
+ classification: EXTERNAL_EFFECTS
914
+ reclaim:
915
+ classification: EXTERNAL_EFFECTS
916
+ announcements:
917
+ classification: READONLY
918
+ subcommands:
919
+ list:
920
+ classification: READONLY
921
+ strict: false
922
+ get:
923
+ classification: READONLY
924
+ create:
925
+ classification: EXTERNAL_EFFECTS
926
+ strict: false
927
+ update:
928
+ classification: EXTERNAL_EFFECTS
929
+ strict: false
930
+ assignees:
931
+ classification: EXTERNAL_EFFECTS
932
+ strict: false
933
+ topics:
934
+ classification: READONLY
935
+ subcommands:
936
+ list:
937
+ classification: READONLY
938
+ strict: false
939
+ get:
940
+ classification: READONLY
941
+ create:
942
+ classification: EXTERNAL_EFFECTS
943
+ update:
944
+ classification: EXTERNAL_EFFECTS
945
+ invitations:
946
+ classification: READONLY
947
+ subcommands:
948
+ list:
949
+ classification: READONLY
950
+ strict: false
951
+ get:
952
+ classification: READONLY
953
+ create:
954
+ classification: EXTERNAL_EFFECTS
955
+ strict: false
956
+ accept:
957
+ classification: EXTERNAL_EFFECTS
958
+ guardians:
959
+ classification: READONLY
960
+ subcommands:
961
+ list:
962
+ classification: READONLY
963
+ strict: false
964
+ get:
965
+ classification: READONLY
966
+ delete:
967
+ classification: DANGEROUS
968
+ guardian-invitations:
969
+ classification: READONLY
970
+ subcommands:
971
+ list:
972
+ classification: READONLY
973
+ strict: false
974
+ get:
975
+ classification: READONLY
976
+ create:
977
+ classification: EXTERNAL_EFFECTS
978
+ strict: false
979
+ profile:
980
+ classification: READONLY
981
+ subcommands:
982
+ get:
983
+ classification: READONLY