vbagent 0.1.0__tar.gz → 0.1.1__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 (149) hide show
  1. vbagent-0.1.1/PKG-INFO +383 -0
  2. vbagent-0.1.1/README.md +362 -0
  3. {vbagent-0.1.0 → vbagent-0.1.1}/pyproject.toml +1 -1
  4. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/cli/batch.py +76 -18
  5. vbagent-0.1.0/PKG-INFO +0 -21
  6. vbagent-0.1.0/README.md +0 -0
  7. vbagent-0.1.0/vbagent/agents/__pycache__/__init__.cpython-312.pyc +0 -0
  8. vbagent-0.1.0/vbagent/agents/__pycache__/alternate.cpython-312.pyc +0 -0
  9. vbagent-0.1.0/vbagent/agents/__pycache__/base.cpython-312.pyc +0 -0
  10. vbagent-0.1.0/vbagent/agents/__pycache__/clarity_checker.cpython-312.pyc +0 -0
  11. vbagent-0.1.0/vbagent/agents/__pycache__/classifier.cpython-312.pyc +0 -0
  12. vbagent-0.1.0/vbagent/agents/__pycache__/converter.cpython-312.pyc +0 -0
  13. vbagent-0.1.0/vbagent/agents/__pycache__/grammar_checker.cpython-312.pyc +0 -0
  14. vbagent-0.1.0/vbagent/agents/__pycache__/idea.cpython-312.pyc +0 -0
  15. vbagent-0.1.0/vbagent/agents/__pycache__/multi_variant.cpython-312.pyc +0 -0
  16. vbagent-0.1.0/vbagent/agents/__pycache__/reviewer.cpython-312.pyc +0 -0
  17. vbagent-0.1.0/vbagent/agents/__pycache__/scanner.cpython-312.pyc +0 -0
  18. vbagent-0.1.0/vbagent/agents/__pycache__/selector.cpython-312.pyc +0 -0
  19. vbagent-0.1.0/vbagent/agents/__pycache__/solution_checker.cpython-312.pyc +0 -0
  20. vbagent-0.1.0/vbagent/agents/__pycache__/tikz.cpython-312.pyc +0 -0
  21. vbagent-0.1.0/vbagent/agents/__pycache__/tikz_checker.cpython-312.pyc +0 -0
  22. vbagent-0.1.0/vbagent/agents/__pycache__/variant.cpython-312.pyc +0 -0
  23. vbagent-0.1.0/vbagent/cli/__pycache__/__init__.cpython-312.pyc +0 -0
  24. vbagent-0.1.0/vbagent/cli/__pycache__/alternate.cpython-312.pyc +0 -0
  25. vbagent-0.1.0/vbagent/cli/__pycache__/batch.cpython-312.pyc +0 -0
  26. vbagent-0.1.0/vbagent/cli/__pycache__/check.cpython-312.pyc +0 -0
  27. vbagent-0.1.0/vbagent/cli/__pycache__/classify.cpython-312.pyc +0 -0
  28. vbagent-0.1.0/vbagent/cli/__pycache__/common.cpython-312.pyc +0 -0
  29. vbagent-0.1.0/vbagent/cli/__pycache__/config.cpython-312.pyc +0 -0
  30. vbagent-0.1.0/vbagent/cli/__pycache__/convert.cpython-312.pyc +0 -0
  31. vbagent-0.1.0/vbagent/cli/__pycache__/idea.cpython-312.pyc +0 -0
  32. vbagent-0.1.0/vbagent/cli/__pycache__/main.cpython-312.pyc +0 -0
  33. vbagent-0.1.0/vbagent/cli/__pycache__/process.cpython-312.pyc +0 -0
  34. vbagent-0.1.0/vbagent/cli/__pycache__/ref.cpython-312.pyc +0 -0
  35. vbagent-0.1.0/vbagent/cli/__pycache__/scan.cpython-312.pyc +0 -0
  36. vbagent-0.1.0/vbagent/cli/__pycache__/tikz.cpython-312.pyc +0 -0
  37. vbagent-0.1.0/vbagent/cli/__pycache__/variant.cpython-312.pyc +0 -0
  38. vbagent-0.1.0/vbagent/models/__pycache__/__init__.cpython-312.pyc +0 -0
  39. vbagent-0.1.0/vbagent/models/__pycache__/batch.cpython-312.pyc +0 -0
  40. vbagent-0.1.0/vbagent/models/__pycache__/classification.cpython-312.pyc +0 -0
  41. vbagent-0.1.0/vbagent/models/__pycache__/diff.cpython-312.pyc +0 -0
  42. vbagent-0.1.0/vbagent/models/__pycache__/idea.cpython-312.pyc +0 -0
  43. vbagent-0.1.0/vbagent/models/__pycache__/pipeline.cpython-312.pyc +0 -0
  44. vbagent-0.1.0/vbagent/models/__pycache__/review.cpython-312.pyc +0 -0
  45. vbagent-0.1.0/vbagent/models/__pycache__/scan.cpython-312.pyc +0 -0
  46. vbagent-0.1.0/vbagent/models/__pycache__/version_store.cpython-312.pyc +0 -0
  47. vbagent-0.1.0/vbagent/prompts/__pycache__/__init__.cpython-312.pyc +0 -0
  48. vbagent-0.1.0/vbagent/prompts/__pycache__/alternate.cpython-312.pyc +0 -0
  49. vbagent-0.1.0/vbagent/prompts/__pycache__/clarity_checker.cpython-312.pyc +0 -0
  50. vbagent-0.1.0/vbagent/prompts/__pycache__/classifier.cpython-312.pyc +0 -0
  51. vbagent-0.1.0/vbagent/prompts/__pycache__/converter.cpython-312.pyc +0 -0
  52. vbagent-0.1.0/vbagent/prompts/__pycache__/grammar_checker.cpython-312.pyc +0 -0
  53. vbagent-0.1.0/vbagent/prompts/__pycache__/idea.cpython-312.pyc +0 -0
  54. vbagent-0.1.0/vbagent/prompts/__pycache__/reviewer.cpython-312.pyc +0 -0
  55. vbagent-0.1.0/vbagent/prompts/__pycache__/solution_checker.cpython-312.pyc +0 -0
  56. vbagent-0.1.0/vbagent/prompts/__pycache__/tikz.cpython-312.pyc +0 -0
  57. vbagent-0.1.0/vbagent/prompts/__pycache__/tikz_checker.cpython-312.pyc +0 -0
  58. vbagent-0.1.0/vbagent/prompts/scanner/__pycache__/__init__.cpython-312.pyc +0 -0
  59. vbagent-0.1.0/vbagent/prompts/scanner/__pycache__/assertion_reason.cpython-312.pyc +0 -0
  60. vbagent-0.1.0/vbagent/prompts/scanner/__pycache__/common.cpython-312.pyc +0 -0
  61. vbagent-0.1.0/vbagent/prompts/scanner/__pycache__/match.cpython-312.pyc +0 -0
  62. vbagent-0.1.0/vbagent/prompts/scanner/__pycache__/mcq_mc.cpython-312.pyc +0 -0
  63. vbagent-0.1.0/vbagent/prompts/scanner/__pycache__/mcq_sc.cpython-312.pyc +0 -0
  64. vbagent-0.1.0/vbagent/prompts/scanner/__pycache__/passage.cpython-312.pyc +0 -0
  65. vbagent-0.1.0/vbagent/prompts/scanner/__pycache__/subjective.cpython-312.pyc +0 -0
  66. vbagent-0.1.0/vbagent/prompts/variants/__pycache__/__init__.cpython-312.pyc +0 -0
  67. vbagent-0.1.0/vbagent/prompts/variants/__pycache__/conceptual.cpython-312.pyc +0 -0
  68. vbagent-0.1.0/vbagent/prompts/variants/__pycache__/conceptual_calculus.cpython-312.pyc +0 -0
  69. vbagent-0.1.0/vbagent/prompts/variants/__pycache__/context.cpython-312.pyc +0 -0
  70. vbagent-0.1.0/vbagent/prompts/variants/__pycache__/multi_context.cpython-312.pyc +0 -0
  71. vbagent-0.1.0/vbagent/prompts/variants/__pycache__/numerical.cpython-312.pyc +0 -0
  72. vbagent-0.1.0/vbagent/references/__pycache__/__init__.cpython-312.pyc +0 -0
  73. vbagent-0.1.0/vbagent/references/__pycache__/context.cpython-312.pyc +0 -0
  74. vbagent-0.1.0/vbagent/references/__pycache__/store.cpython-312.pyc +0 -0
  75. vbagent-0.1.0/vbagent/references/__pycache__/tikz_store.cpython-312.pyc +0 -0
  76. vbagent-0.1.0/vbagent/templates/__pycache__/__init__.cpython-312.pyc +0 -0
  77. vbagent-0.1.0/vbagent/templates/__pycache__/agentic_context.cpython-312.pyc +0 -0
  78. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/__init__.py +0 -0
  79. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/agents/__init__.py +0 -0
  80. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/agents/alternate.py +0 -0
  81. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/agents/base.py +0 -0
  82. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/agents/clarity_checker.py +0 -0
  83. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/agents/classifier.py +0 -0
  84. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/agents/converter.py +0 -0
  85. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/agents/grammar_checker.py +0 -0
  86. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/agents/idea.py +0 -0
  87. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/agents/multi_variant.py +0 -0
  88. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/agents/reviewer.py +0 -0
  89. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/agents/scanner.py +0 -0
  90. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/agents/selector.py +0 -0
  91. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/agents/solution_checker.py +0 -0
  92. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/agents/tikz.py +0 -0
  93. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/agents/tikz_checker.py +0 -0
  94. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/agents/variant.py +0 -0
  95. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/cli/__init__.py +0 -0
  96. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/cli/alternate.py +0 -0
  97. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/cli/check.py +0 -0
  98. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/cli/classify.py +0 -0
  99. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/cli/common.py +0 -0
  100. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/cli/config.py +0 -0
  101. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/cli/convert.py +0 -0
  102. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/cli/idea.py +0 -0
  103. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/cli/main.py +0 -0
  104. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/cli/process.py +0 -0
  105. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/cli/ref.py +0 -0
  106. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/cli/scan.py +0 -0
  107. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/cli/tikz.py +0 -0
  108. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/cli/variant.py +0 -0
  109. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/config.py +0 -0
  110. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/models/__init__.py +0 -0
  111. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/models/batch.py +0 -0
  112. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/models/classification.py +0 -0
  113. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/models/diff.py +0 -0
  114. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/models/idea.py +0 -0
  115. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/models/pipeline.py +0 -0
  116. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/models/review.py +0 -0
  117. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/models/scan.py +0 -0
  118. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/models/version_store.py +0 -0
  119. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/__init__.py +0 -0
  120. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/alternate.py +0 -0
  121. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/clarity_checker.py +0 -0
  122. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/classifier.py +0 -0
  123. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/converter.py +0 -0
  124. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/grammar_checker.py +0 -0
  125. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/idea.py +0 -0
  126. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/reviewer.py +0 -0
  127. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/scanner/__init__.py +0 -0
  128. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/scanner/assertion_reason.py +0 -0
  129. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/scanner/common.py +0 -0
  130. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/scanner/match.py +0 -0
  131. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/scanner/mcq_mc.py +0 -0
  132. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/scanner/mcq_sc.py +0 -0
  133. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/scanner/passage.py +0 -0
  134. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/scanner/subjective.py +0 -0
  135. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/solution_checker.py +0 -0
  136. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/tikz.py +0 -0
  137. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/tikz_checker.py +0 -0
  138. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/variants/__init__.py +0 -0
  139. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/variants/conceptual.py +0 -0
  140. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/variants/conceptual_calculus.py +0 -0
  141. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/variants/context.py +0 -0
  142. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/variants/multi_context.py +0 -0
  143. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/prompts/variants/numerical.py +0 -0
  144. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/references/__init__.py +0 -0
  145. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/references/context.py +0 -0
  146. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/references/store.py +0 -0
  147. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/references/tikz_store.py +0 -0
  148. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/templates/__init__.py +0 -0
  149. {vbagent-0.1.0 → vbagent-0.1.1}/vbagent/templates/agentic_context.py +0 -0
vbagent-0.1.1/PKG-INFO ADDED
@@ -0,0 +1,383 @@
1
+ Metadata-Version: 2.3
2
+ Name: vbagent
3
+ Version: 0.1.1
4
+ Summary: CLI tool for physics question image scanning, categorization, and variant generation
5
+ Author: vaibhavblayer
6
+ Author-email: vaibhavblayer@gmail.com
7
+ Requires-Python: >=3.12
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.12
10
+ Classifier: Programming Language :: Python :: 3.13
11
+ Provides-Extra: dev
12
+ Requires-Dist: click (>=8.1.0)
13
+ Requires-Dist: hypothesis (>=6.0.0) ; extra == "dev"
14
+ Requires-Dist: openai-agents (>=0.6.2)
15
+ Requires-Dist: pillow (>=10.0.0)
16
+ Requires-Dist: pydantic (>=2.0.0)
17
+ Requires-Dist: pytest (>=8.0.0) ; extra == "dev"
18
+ Requires-Dist: rich (>=13.0.0)
19
+ Description-Content-Type: text/markdown
20
+
21
+ # VBAgent
22
+
23
+ A multi-agent CLI tool for processing physics question images. Supports classification, LaTeX extraction, TikZ diagram generation, variant creation, and format conversion.
24
+
25
+ ## Installation
26
+
27
+ ### From PyPI
28
+
29
+ ```bash
30
+ pip install vbagent
31
+ ```
32
+
33
+ ### From Source
34
+
35
+ ```bash
36
+ # Clone the repository
37
+ git clone https://github.com/vaibhavblayer/vbagent.git
38
+ cd vbagent
39
+
40
+ # Install with pip
41
+ pip install .
42
+
43
+ # Or install in development mode
44
+ pip install -e .
45
+
46
+ # Or using Poetry
47
+ poetry install
48
+ ```
49
+
50
+ ## Requirements
51
+
52
+ - Python 3.12+
53
+ - OpenAI API key (set as `OPENAI_API_KEY` environment variable)
54
+
55
+ ## Configuration
56
+
57
+ Set your OpenAI API key:
58
+
59
+ ```bash
60
+ export OPENAI_API_KEY="your-api-key"
61
+ ```
62
+
63
+ Or configure via the CLI:
64
+
65
+ ```bash
66
+ vbagent config set api-key YOUR_API_KEY
67
+ ```
68
+
69
+ ## Usage
70
+
71
+ ### Quick Start
72
+
73
+ ```bash
74
+ # Scan a physics question image to LaTeX
75
+ vbagent scan -i question.png -o output.tex
76
+
77
+ # Classify a question type
78
+ vbagent classify -i question.png
79
+
80
+ # Generate TikZ diagram from image
81
+ vbagent tikz -i diagram.png -o diagram.tex
82
+
83
+ # Generate problem variants
84
+ vbagent variant -t problem.tex -o variants.tex
85
+ ```
86
+
87
+ ### Commands
88
+
89
+ | Command | Description |
90
+ |---------|-------------|
91
+ | `classify` | Classify physics question image type |
92
+ | `scan` | Extract LaTeX from question image |
93
+ | `tikz` | Generate TikZ/PGF code for diagrams |
94
+ | `idea` | Extract physics concepts and ideas |
95
+ | `alternate` | Generate alternative solutions |
96
+ | `variant` | Generate problem variants (numerical, conceptual, context) |
97
+ | `convert` | Convert between question formats |
98
+ | `process` | Run full processing pipeline |
99
+ | `batch` | Batch process multiple images with resume capability |
100
+ | `ref` | Manage reference context files |
101
+ | `config` | Configure models and settings |
102
+ | `check` | QA review with interactive approval |
103
+
104
+ ### Batch Processing
105
+
106
+ Process multiple images with automatic resume on interruption:
107
+
108
+ ```bash
109
+ # Initialize batch processing
110
+ vbagent batch init -i ./images -o ./output
111
+
112
+ # Continue processing (resumes from where it left off)
113
+ vbagent batch continue
114
+
115
+ # Check status
116
+ vbagent batch status
117
+ ```
118
+
119
+ ### Full Pipeline
120
+
121
+ Process a single image through the complete pipeline:
122
+
123
+ ```bash
124
+ # Basic processing (classify + scan + tikz)
125
+ vbagent process -i question.png
126
+
127
+ # With ideas extraction
128
+ vbagent process -i question.png --ideas
129
+
130
+ # With alternate solutions
131
+ vbagent process -i question.png --alternate
132
+
133
+ # With variant generation
134
+ vbagent process -i question.png --variants numerical,context
135
+
136
+ # Full pipeline with all features
137
+ vbagent process -i question.png --ideas --alternate --variants numerical,context,conceptual
138
+ ```
139
+
140
+ Process a range of images:
141
+
142
+ ```bash
143
+ # Process Problem_1.png through Problem_5.png
144
+ vbagent process -i images/Problem_1.png -r 1 5
145
+
146
+ # Process range with parallel workers (faster)
147
+ vbagent process -i images/Problem_1.png -r 1 10 --parallel 3
148
+
149
+ # Process range with all features
150
+ vbagent process -i images/Problem_1.png -r 1 5 --ideas --alternate --variants numerical
151
+ ```
152
+
153
+ Process TeX file with multiple items:
154
+
155
+ ```bash
156
+ # Process items 1-5 from a TeX file
157
+ vbagent process -t problems.tex --range 1 5
158
+
159
+ # With alternate solutions and ideas
160
+ vbagent process -t problems.tex --range 1 5 --alternate --ideas
161
+ ```
162
+
163
+ Custom output directory:
164
+
165
+ ```bash
166
+ vbagent process -i question.png -o ./my_output
167
+ ```
168
+
169
+ #### Process Command Options
170
+
171
+ | Option | Description |
172
+ |--------|-------------|
173
+ | `-i, --image` | Image file to process |
174
+ | `-t, --tex` | TeX file containing problems |
175
+ | `-r, --range` | Range of items to process (1-based, inclusive) |
176
+ | `--variants` | Variant types (comma-separated: numerical,context,conceptual,calculus) |
177
+ | `--alternate` | Generate alternate solutions |
178
+ | `--ideas` | Extract physics concepts |
179
+ | `--ref` | Reference directories for TikZ |
180
+ | `-o, --output` | Output directory (default: agentic) |
181
+ | `--context` | Use reference context (default: yes) |
182
+ | `-p, --parallel` | Parallel workers for batch (default: 1, max: 10) |
183
+
184
+ #### Output Structure
185
+
186
+ ```
187
+ agentic/
188
+ ├── scans/problem_1.tex # Extracted LaTeX
189
+ ├── classifications/problem_1.json # Question metadata
190
+ ├── tikz/problem_1.tex # Generated TikZ diagrams
191
+ ├── ideas/problem_1.json # Physics concepts (if --ideas)
192
+ ├── alternates/problem_1.tex # Alternate solutions (if --alternate)
193
+ ├── variants/
194
+ │ ├── numerical/problem_1.tex # Numerical variants
195
+ │ ├── context/problem_1.tex # Context variants
196
+ │ └── conceptual/problem_1.tex # Conceptual variants
197
+ └── CONTEXT.md # Documentation for AI agents
198
+ ```
199
+
200
+ ### Help
201
+
202
+ ```bash
203
+ # General help
204
+ vbagent --help
205
+
206
+ # Command-specific help
207
+ vbagent scan --help
208
+ vbagent variant --help
209
+ ```
210
+
211
+ ### Scan Command
212
+
213
+ Extract LaTeX from physics question images:
214
+
215
+ ```bash
216
+ # Basic scan with auto-classification
217
+ vbagent scan -i question.png
218
+
219
+ # Save output to file
220
+ vbagent scan -i question.png -o output.tex
221
+
222
+ # Override question type (skip classification)
223
+ vbagent scan -i question.png --type mcq_sc
224
+ ```
225
+
226
+ ### Variant Command
227
+
228
+ Generate problem variants with controlled modifications:
229
+
230
+ ```bash
231
+ # Numerical variant (change numbers only)
232
+ vbagent variant -t problem.tex --type numerical
233
+
234
+ # Context variant (change scenario)
235
+ vbagent variant -t problem.tex --type context
236
+
237
+ # Generate multiple variants
238
+ vbagent variant -t problem.tex --type numerical --count 3
239
+
240
+ # Process range of items
241
+ vbagent variant -t problems.tex --type numerical -r 1 5
242
+
243
+ # Multi-context variant (combine problems)
244
+ vbagent variant --type multi --context p1.tex --context p2.tex -o combined.tex
245
+
246
+ # From image (scans first)
247
+ vbagent variant -i image.png --type numerical -o variant.tex
248
+ ```
249
+
250
+ #### Variant Types
251
+
252
+ | Type | Description |
253
+ |------|-------------|
254
+ | `numerical` | Change only numbers, keep context |
255
+ | `context` | Change scenario, keep numbers |
256
+ | `conceptual` | Change physics concept |
257
+ | `calculus` | Add calculus elements |
258
+ | `multi` | Combine multiple problems |
259
+
260
+ ### Alternate Command
261
+
262
+ Generate alternative solution methods:
263
+
264
+ ```bash
265
+ # Generate one alternate solution
266
+ vbagent alternate -t problem.tex
267
+
268
+ # Generate multiple alternates
269
+ vbagent alternate -t problem.tex -n 3
270
+
271
+ # With ideas context
272
+ vbagent alternate -t problem.tex --ideas ideas.json
273
+
274
+ # Save to file
275
+ vbagent alternate -t problem.tex -n 2 -o alternates.tex
276
+ ```
277
+
278
+ ### Check Command (QA Review)
279
+
280
+ AI-powered quality review with interactive approval workflow:
281
+
282
+ ```bash
283
+ # Start a review session (random 5 problems)
284
+ vbagent check run
285
+
286
+ # Review more problems
287
+ vbagent check run -c 10
288
+
289
+ # Review specific problem
290
+ vbagent check run -p Problem_42
291
+
292
+ # Review from specific directory
293
+ vbagent check run -d ./my_output
294
+
295
+ # View suggestion history
296
+ vbagent check history
297
+
298
+ # Apply a stored suggestion
299
+ vbagent check apply 42
300
+
301
+ # Resume interrupted session
302
+ vbagent check resume abc123
303
+ ```
304
+
305
+ #### Check Subcommands
306
+
307
+ | Subcommand | Description |
308
+ |------------|-------------|
309
+ | `run` | Start a random QA review session |
310
+ | `history` | View suggestion history |
311
+ | `apply` | Apply a stored suggestion by ID |
312
+ | `resume` | Resume an interrupted session |
313
+ | `solution` | Check solution correctness |
314
+ | `grammar` | Check grammar and spelling |
315
+ | `clarity` | Check clarity and conciseness |
316
+ | `tikz` | Check TikZ diagram code |
317
+
318
+ ### TikZ Command
319
+
320
+ Generate TikZ/PGF code for diagrams:
321
+
322
+ ```bash
323
+ # From image
324
+ vbagent tikz -i diagram.png
325
+
326
+ # With description
327
+ vbagent tikz -d "A block on an inclined plane with friction"
328
+
329
+ # Save to file
330
+ vbagent tikz -i diagram.png -o diagram.tex
331
+
332
+ # With reference directories
333
+ vbagent tikz -i diagram.png --ref ./tikz_examples/
334
+ ```
335
+
336
+ ### Idea Command
337
+
338
+ Extract physics concepts and ideas from problems:
339
+
340
+ ```bash
341
+ # From TeX file
342
+ vbagent idea -t problem.tex
343
+
344
+ # Save to JSON
345
+ vbagent idea -t problem.tex -o ideas.json
346
+ ```
347
+
348
+ ## Supported Question Types
349
+
350
+ - MCQ Single Correct
351
+ - MCQ Multiple Correct
352
+ - Assertion-Reason
353
+ - Match the Following
354
+ - Passage/Comprehension
355
+ - Subjective/Numerical
356
+
357
+ ## Variant Types
358
+
359
+ - **Numerical**: Change numerical values while preserving physics
360
+ - **Conceptual**: Modify the underlying concept
361
+ - **Context**: Change the real-world scenario
362
+
363
+ ## Platform Support
364
+
365
+ Works on macOS, Windows, and Linux. Sleep prevention during batch processing is supported on all platforms.
366
+
367
+ ## Development
368
+
369
+ ```bash
370
+ # Install dev dependencies
371
+ pip install -e ".[dev]"
372
+
373
+ # Run tests
374
+ pytest
375
+
376
+ # Run specific test
377
+ pytest tests/test_scanner.py -v
378
+ ```
379
+
380
+ ## License
381
+
382
+ MIT
383
+