bash-classify 0.1.3__tar.gz → 0.1.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. {bash_classify-0.1.3 → bash_classify-0.1.4}/.claude-plugin/marketplace.json +1 -1
  2. {bash_classify-0.1.3 → bash_classify-0.1.4}/PKG-INFO +1 -1
  3. {bash_classify-0.1.3 → bash_classify-0.1.4}/coding-agent-plugins/claude-code/.claude-plugin/plugin.json +1 -1
  4. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/git.yaml +7 -0
  5. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/kubectl.yaml +16 -0
  6. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/poetry.yaml +12 -0
  7. bash_classify-0.1.4/src/bash_classify/commands/pytest.yaml +5 -0
  8. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/python.yaml +5 -0
  9. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/python3.yaml +5 -0
  10. bash_classify-0.1.4/src/bash_classify/commands/rg.yaml +5 -0
  11. bash_classify-0.1.4/src/bash_classify/commands/ruff.yaml +25 -0
  12. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/uv.yaml +19 -0
  13. {bash_classify-0.1.3 → bash_classify-0.1.4}/tests/test_real_world.py +4 -4
  14. {bash_classify-0.1.3 → bash_classify-0.1.4}/.claude/rules/command-database.md +0 -0
  15. {bash_classify-0.1.3 → bash_classify-0.1.4}/.editorconfig +0 -0
  16. {bash_classify-0.1.3 → bash_classify-0.1.4}/.github/workflows/ci.yml +0 -0
  17. {bash_classify-0.1.3 → bash_classify-0.1.4}/.github/workflows/publish.yml +0 -0
  18. {bash_classify-0.1.3 → bash_classify-0.1.4}/.gitignore +0 -0
  19. {bash_classify-0.1.3 → bash_classify-0.1.4}/.python-version +0 -0
  20. {bash_classify-0.1.3 → bash_classify-0.1.4}/CLAUDE.md +0 -0
  21. {bash_classify-0.1.3 → bash_classify-0.1.4}/LICENSE +0 -0
  22. {bash_classify-0.1.3 → bash_classify-0.1.4}/README.md +0 -0
  23. {bash_classify-0.1.3 → bash_classify-0.1.4}/SPEC.md +0 -0
  24. {bash_classify-0.1.3 → bash_classify-0.1.4}/coding-agent-plugins/claude-code/hooks/classify-bash.sh +0 -0
  25. {bash_classify-0.1.3 → bash_classify-0.1.4}/coding-agent-plugins/claude-code/hooks/hooks.json +0 -0
  26. {bash_classify-0.1.3 → bash_classify-0.1.4}/docs/classification-guidance.md +0 -0
  27. {bash_classify-0.1.3 → bash_classify-0.1.4}/pyproject.toml +0 -0
  28. {bash_classify-0.1.3 → bash_classify-0.1.4}/ruff.toml +0 -0
  29. {bash_classify-0.1.3 → bash_classify-0.1.4}/schemas/command.schema.json +0 -0
  30. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/__init__.py +0 -0
  31. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/__main__.py +0 -0
  32. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/classifier.py +0 -0
  33. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/cli.py +0 -0
  34. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/apt.yaml +0 -0
  35. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/awk.yaml +0 -0
  36. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/basename.yaml +0 -0
  37. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/bash.yaml +0 -0
  38. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/brew.yaml +0 -0
  39. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/builtin.yaml +0 -0
  40. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/cargo.yaml +0 -0
  41. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/cat.yaml +0 -0
  42. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/chgrp.yaml +0 -0
  43. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/chmod.yaml +0 -0
  44. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/chown.yaml +0 -0
  45. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/column.yaml +0 -0
  46. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/comm.yaml +0 -0
  47. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/command.yaml +0 -0
  48. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/cp.yaml +0 -0
  49. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/curl.yaml +0 -0
  50. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/cut.yaml +0 -0
  51. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/date.yaml +0 -0
  52. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/df.yaml +0 -0
  53. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/diff.yaml +0 -0
  54. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/dig.yaml +0 -0
  55. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/dirname.yaml +0 -0
  56. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/docker.yaml +0 -0
  57. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/du.yaml +0 -0
  58. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/echo.yaml +0 -0
  59. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/env.yaml +0 -0
  60. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/expand.yaml +0 -0
  61. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/false.yaml +0 -0
  62. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/file.yaml +0 -0
  63. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/find.yaml +0 -0
  64. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/fmt.yaml +0 -0
  65. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/fold.yaml +0 -0
  66. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/free.yaml +0 -0
  67. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/gawk.yaml +0 -0
  68. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/go.yaml +0 -0
  69. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/grep.yaml +0 -0
  70. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/groups.yaml +0 -0
  71. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/gunzip.yaml +0 -0
  72. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/gzip.yaml +0 -0
  73. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/head.yaml +0 -0
  74. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/helm.yaml +0 -0
  75. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/hostname.yaml +0 -0
  76. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/id.yaml +0 -0
  77. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/install.yaml +0 -0
  78. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/join.yaml +0 -0
  79. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/journalctl.yaml +0 -0
  80. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/jq.yaml +0 -0
  81. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/kill.yaml +0 -0
  82. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/killall.yaml +0 -0
  83. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/less.yaml +0 -0
  84. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/ln.yaml +0 -0
  85. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/ls.yaml +0 -0
  86. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/make.yaml +0 -0
  87. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/md5sum.yaml +0 -0
  88. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/mkdir.yaml +0 -0
  89. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/more.yaml +0 -0
  90. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/mv.yaml +0 -0
  91. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/netstat.yaml +0 -0
  92. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/nice.yaml +0 -0
  93. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/nl.yaml +0 -0
  94. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/node.yaml +0 -0
  95. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/nohup.yaml +0 -0
  96. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/npm.yaml +0 -0
  97. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/nslookup.yaml +0 -0
  98. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/paste.yaml +0 -0
  99. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/ping.yaml +0 -0
  100. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/pip.yaml +0 -0
  101. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/pip3.yaml +0 -0
  102. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/pkill.yaml +0 -0
  103. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/printenv.yaml +0 -0
  104. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/printf.yaml +0 -0
  105. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/ps.yaml +0 -0
  106. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/pwd.yaml +0 -0
  107. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/read.yaml +0 -0
  108. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/readlink.yaml +0 -0
  109. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/realpath.yaml +0 -0
  110. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/rev.yaml +0 -0
  111. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/rm.yaml +0 -0
  112. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/rsync.yaml +0 -0
  113. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/scp.yaml +0 -0
  114. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/sed.yaml +0 -0
  115. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/seq.yaml +0 -0
  116. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/sh.yaml +0 -0
  117. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/sha1sum.yaml +0 -0
  118. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/sha256sum.yaml +0 -0
  119. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/sort.yaml +0 -0
  120. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/ss.yaml +0 -0
  121. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/ssh.yaml +0 -0
  122. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/stat.yaml +0 -0
  123. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/strace.yaml +0 -0
  124. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/sudo.yaml +0 -0
  125. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/systemctl.yaml +0 -0
  126. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/tac.yaml +0 -0
  127. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/tail.yaml +0 -0
  128. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/tar.yaml +0 -0
  129. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/tee.yaml +0 -0
  130. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/terraform.yaml +0 -0
  131. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/test.yaml +0 -0
  132. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/time.yaml +0 -0
  133. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/timeout.yaml +0 -0
  134. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/top.yaml +0 -0
  135. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/touch.yaml +0 -0
  136. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/tr.yaml +0 -0
  137. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/traceroute.yaml +0 -0
  138. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/true.yaml +0 -0
  139. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/type.yaml +0 -0
  140. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/uname.yaml +0 -0
  141. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/unexpand.yaml +0 -0
  142. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/uniq.yaml +0 -0
  143. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/unzip.yaml +0 -0
  144. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/uptime.yaml +0 -0
  145. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/wc.yaml +0 -0
  146. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/wget.yaml +0 -0
  147. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/whereis.yaml +0 -0
  148. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/which.yaml +0 -0
  149. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/whoami.yaml +0 -0
  150. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/xargs.yaml +0 -0
  151. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/xmllint.yaml +0 -0
  152. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/yes.yaml +0 -0
  153. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/yq.yaml +0 -0
  154. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/zip.yaml +0 -0
  155. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/commands/zsh.yaml +0 -0
  156. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/database.py +0 -0
  157. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/matcher.py +0 -0
  158. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/models.py +0 -0
  159. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/parser.py +0 -0
  160. {bash_classify-0.1.3 → bash_classify-0.1.4}/src/bash_classify/py.typed +0 -0
  161. {bash_classify-0.1.3 → bash_classify-0.1.4}/tests/__init__.py +0 -0
  162. {bash_classify-0.1.3 → bash_classify-0.1.4}/tests/conftest.py +0 -0
  163. {bash_classify-0.1.3 → bash_classify-0.1.4}/tests/test_classifier.py +0 -0
  164. {bash_classify-0.1.3 → bash_classify-0.1.4}/tests/test_cli.py +0 -0
  165. {bash_classify-0.1.3 → bash_classify-0.1.4}/tests/test_cli_serialization.py +0 -0
  166. {bash_classify-0.1.3 → bash_classify-0.1.4}/tests/test_database.py +0 -0
  167. {bash_classify-0.1.3 → bash_classify-0.1.4}/tests/test_matcher.py +0 -0
  168. {bash_classify-0.1.3 → bash_classify-0.1.4}/tests/test_models.py +0 -0
  169. {bash_classify-0.1.3 → bash_classify-0.1.4}/tests/test_parser.py +0 -0
  170. {bash_classify-0.1.3 → bash_classify-0.1.4}/tests/test_schema.py +0 -0
  171. {bash_classify-0.1.3 → bash_classify-0.1.4}/tests/test_smoke.py +0 -0
  172. {bash_classify-0.1.3 → bash_classify-0.1.4}/uv.lock +0 -0
@@ -8,7 +8,7 @@
8
8
  {
9
9
  "name": "bash-classify-hook",
10
10
  "description": "Auto-allows readonly bash commands in Claude Code using bash-classify",
11
- "version": "0.1.3",
11
+ "version": "0.1.4",
12
12
  "author": {
13
13
  "name": "Filip Procházka",
14
14
  "url": "https://github.com/fprochazka"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bash-classify
3
- Version: 0.1.3
3
+ Version: 0.1.4
4
4
  Summary: Classify bash commands as READONLY, WRITE, DANGEROUS, or UNKNOWN
5
5
  Project-URL: Homepage, https://github.com/fprochazka/bash-classify
6
6
  Project-URL: Repository, https://github.com/fprochazka/bash-classify
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bash-classify-hook",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Auto-allows readonly bash commands in Claude Code using bash-classify",
5
5
  "author": {
6
6
  "name": "Filip Prochazka"
@@ -88,6 +88,10 @@ subcommands:
88
88
  branch:
89
89
  classification: WRITE
90
90
  options:
91
+ -a: {}
92
+ --all: {aliases: [-a]}
93
+ -v: {}
94
+ --verbose: {aliases: [-v]}
91
95
  -l: {overrides: READONLY}
92
96
  --list: {overrides: READONLY, aliases: [-l]}
93
97
  -d: {overrides: WRITE}
@@ -104,6 +108,7 @@ subcommands:
104
108
  --unset-upstream: {overrides: WRITE}
105
109
  remote:
106
110
  classification: READONLY
111
+ strict: false
107
112
  subcommands:
108
113
  add:
109
114
  classification: WRITE
@@ -439,3 +444,5 @@ subcommands:
439
444
  fsck:
440
445
  classification: READONLY
441
446
  strict: false
447
+
448
+ # --- Misc ---
@@ -188,3 +188,19 @@ subcommands:
188
188
  classification: DANGEROUS
189
189
  delete-cluster:
190
190
  classification: DANGEROUS
191
+
192
+ diff:
193
+ classification: READONLY
194
+ strict: false
195
+
196
+ kustomize:
197
+ classification: READONLY
198
+ strict: false
199
+
200
+ events:
201
+ classification: READONLY
202
+ strict: false
203
+
204
+ wait:
205
+ classification: READONLY
206
+ strict: false
@@ -66,6 +66,18 @@ subcommands:
66
66
  run:
67
67
  classification: DANGEROUS
68
68
  strict: false
69
+ delegates_to:
70
+ mode: rest_are_argv
71
+ subcommands:
72
+ pytest:
73
+ classification: WRITE
74
+ strict: false
75
+ ruff:
76
+ classification: WRITE
77
+ strict: false
78
+ mypy:
79
+ classification: READONLY
80
+ strict: false
69
81
  self:
70
82
  strict: false
71
83
  subcommands:
@@ -0,0 +1,5 @@
1
+ # $schema: ../../../schemas/command.schema.json
2
+ command: pytest
3
+ description: "Python testing framework"
4
+ classification: WRITE
5
+ strict: false
@@ -3,3 +3,8 @@ command: python
3
3
  description: "Python language interpreter"
4
4
  classification: DANGEROUS
5
5
  strict: false
6
+ options:
7
+ --version: {overrides: READONLY}
8
+ -V: {overrides: READONLY}
9
+ --help: {overrides: READONLY}
10
+ -h: {overrides: READONLY}
@@ -3,3 +3,8 @@ command: python3
3
3
  description: "Python 3 language interpreter"
4
4
  classification: DANGEROUS
5
5
  strict: false
6
+ options:
7
+ --version: {overrides: READONLY}
8
+ -V: {overrides: READONLY}
9
+ --help: {overrides: READONLY}
10
+ -h: {overrides: READONLY}
@@ -0,0 +1,5 @@
1
+ # $schema: ../../../schemas/command.schema.json
2
+ command: rg
3
+ description: "Recursively search directories for a regex pattern"
4
+ classification: READONLY
5
+ strict: false
@@ -0,0 +1,25 @@
1
+ # $schema: ../../../schemas/command.schema.json
2
+ command: ruff
3
+ description: "Fast Python linter and formatter"
4
+ strict: false
5
+ subcommands:
6
+ check:
7
+ classification: READONLY
8
+ strict: false
9
+ options:
10
+ --fix: {overrides: WRITE}
11
+ --fix-only: {overrides: WRITE}
12
+ format:
13
+ classification: WRITE
14
+ strict: false
15
+ options:
16
+ --check: {overrides: READONLY}
17
+ --diff: {overrides: READONLY}
18
+ version:
19
+ classification: READONLY
20
+ rule:
21
+ classification: READONLY
22
+ linter:
23
+ classification: READONLY
24
+ clean:
25
+ classification: WRITE
@@ -6,15 +6,32 @@ subcommands:
6
6
  run:
7
7
  classification: DANGEROUS
8
8
  strict: false
9
+ delegates_to:
10
+ mode: rest_are_argv
11
+ strip_assignments: true
12
+ subcommands:
13
+ pytest:
14
+ classification: WRITE
15
+ strict: false
16
+ ruff:
17
+ classification: WRITE
18
+ strict: false
19
+ mypy:
20
+ classification: READONLY
21
+ strict: false
9
22
  init:
10
23
  classification: WRITE
11
24
  strict: false
12
25
  add:
13
26
  classification: WRITE
14
27
  strict: false
28
+ options:
29
+ --dry-run: {overrides: READONLY}
15
30
  remove:
16
31
  classification: WRITE
17
32
  strict: false
33
+ options:
34
+ --dry-run: {overrides: READONLY}
18
35
  version:
19
36
  classification: READONLY
20
37
  strict: false
@@ -24,6 +41,8 @@ subcommands:
24
41
  lock:
25
42
  classification: WRITE
26
43
  strict: false
44
+ options:
45
+ --check: {overrides: READONLY}
27
46
  export:
28
47
  classification: READONLY
29
48
  strict: false
@@ -107,9 +107,9 @@ class TestBuildAndTest:
107
107
  assert result.classification == Classification.UNKNOWN
108
108
 
109
109
  def test_pytest_verbose(self, database):
110
- # uv run executes arbitrary code -> DANGEROUS
110
+ # uv run pytest is a known safe subcommand -> WRITE
111
111
  result = classify_expression("uv run pytest -v --tb=short", database)
112
- assert result.classification == Classification.DANGEROUS
112
+ assert result.classification == Classification.WRITE
113
113
 
114
114
  def test_npm_test(self, database):
115
115
  result = classify_expression("npm test", database)
@@ -125,8 +125,8 @@ class TestBuildAndTest:
125
125
 
126
126
  def test_ruff_check_and_format(self, database):
127
127
  result = classify_expression("ruff check --fix . && ruff format .", database)
128
- # ruff is not in DB -> UNKNOWN
129
- assert result.classification == Classification.UNKNOWN
128
+ # ruff check --fix is WRITE, ruff format is WRITE -> WRITE
129
+ assert result.classification == Classification.WRITE
130
130
 
131
131
  def test_make_with_target(self, database):
132
132
  result = classify_expression("make build", database)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes