codebase-receipts-cli 1.0.0__py3-none-any.whl

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 (78) hide show
  1. codebase_receipts_cli-1.0.0.dist-info/METADATA +268 -0
  2. codebase_receipts_cli-1.0.0.dist-info/RECORD +78 -0
  3. codebase_receipts_cli-1.0.0.dist-info/WHEEL +4 -0
  4. codebase_receipts_cli-1.0.0.dist-info/entry_points.txt +2 -0
  5. codebase_receipts_cli-1.0.0.dist-info/licenses/LICENSE +21 -0
  6. receipts/__init__.py +0 -0
  7. receipts/ama/__init__.py +0 -0
  8. receipts/ama/interviewer.py +415 -0
  9. receipts/ats/__init__.py +1 -0
  10. receipts/ats/comparator.py +98 -0
  11. receipts/ats/scorer.py +550 -0
  12. receipts/ats/stats.py +164 -0
  13. receipts/cli.py +2062 -0
  14. receipts/config.py +106 -0
  15. receipts/errors.py +18 -0
  16. receipts/export.py +120 -0
  17. receipts/ingest/__init__.py +0 -0
  18. receipts/ingest/artifact_extractor.py +679 -0
  19. receipts/ingest/git_source.py +159 -0
  20. receipts/ingest/manifest.py +114 -0
  21. receipts/ingest/scanner.py +141 -0
  22. receipts/ingest/secrets_scanner.py +225 -0
  23. receipts/interactive/__init__.py +1 -0
  24. receipts/interactive/repl.py +755 -0
  25. receipts/ledger/__init__.py +0 -0
  26. receipts/ledger/pricing_table.py +54 -0
  27. receipts/ledger/token_ledger.py +226 -0
  28. receipts/llm/__init__.py +0 -0
  29. receipts/llm/anthropic_provider.py +95 -0
  30. receipts/llm/factory.py +124 -0
  31. receipts/llm/fake_provider.py +79 -0
  32. receipts/llm/gemini_provider.py +205 -0
  33. receipts/llm/json_utils.py +46 -0
  34. receipts/llm/metered.py +62 -0
  35. receipts/llm/ollama_provider.py +117 -0
  36. receipts/llm/openai_provider.py +118 -0
  37. receipts/llm/provider.py +42 -0
  38. receipts/llm/split.py +78 -0
  39. receipts/llm/token_estimate.py +35 -0
  40. receipts/mine/__init__.py +1 -0
  41. receipts/mine/code_metrics.py +246 -0
  42. receipts/mine/git_evidence.py +109 -0
  43. receipts/prep/__init__.py +1 -0
  44. receipts/prep/dossier.py +313 -0
  45. receipts/prep/readiness.py +227 -0
  46. receipts/resume/__init__.py +0 -0
  47. receipts/resume/claim_extractor.py +338 -0
  48. receipts/resume/loader.py +35 -0
  49. receipts/resume/pdf_parser.py +259 -0
  50. receipts/resume/tex_parser.py +394 -0
  51. receipts/rewrite/__init__.py +0 -0
  52. receipts/rewrite/compiler.py +180 -0
  53. receipts/rewrite/optimizer.py +140 -0
  54. receipts/rewrite/tex_rewriter.py +227 -0
  55. receipts/tui/__init__.py +0 -0
  56. receipts/tui/ama_app.py +454 -0
  57. receipts/tui/app.py +316 -0
  58. receipts/tui/dossier_app.py +170 -0
  59. receipts/tui/hub.py +367 -0
  60. receipts/tui/ingest_app.py +183 -0
  61. receipts/tui/rewrite_app.py +463 -0
  62. receipts/tui/score_app.py +237 -0
  63. receipts/tui/widgets/__init__.py +0 -0
  64. receipts/tui/widgets/claims_table.py +50 -0
  65. receipts/tui/widgets/diff_view.py +38 -0
  66. receipts/tui/widgets/status_bar.py +38 -0
  67. receipts/verify/__init__.py +0 -0
  68. receipts/verify/bm25.py +112 -0
  69. receipts/verify/enrich.py +128 -0
  70. receipts/verify/jd_fetch.py +101 -0
  71. receipts/verify/kb.py +379 -0
  72. receipts/verify/keyword_gap.py +127 -0
  73. receipts/verify/query_expand.py +88 -0
  74. receipts/verify/rerank.py +74 -0
  75. receipts/verify/rewriter.py +172 -0
  76. receipts/verify/router.py +211 -0
  77. receipts/verify/summaries.py +258 -0
  78. receipts/verify/verifier.py +552 -0
@@ -0,0 +1,268 @@
1
+ Metadata-Version: 2.4
2
+ Name: codebase-receipts-cli
3
+ Version: 1.0.0
4
+ Summary: Receipts — resume claim verifier & codebase-grounded interview prep CLI
5
+ Project-URL: Homepage, https://github.com/Ishaan-1606/receipts-cli
6
+ Project-URL: Repository, https://github.com/Ishaan-1606/receipts-cli
7
+ Project-URL: Issues, https://github.com/Ishaan-1606/receipts-cli/issues
8
+ Author-email: Ishaan Sharma <ishaan406061@gmail.com>
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: cli,codebase,interview,llm,resume,verification
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Software Development :: Quality Assurance
22
+ Classifier: Typing :: Typed
23
+ Requires-Python: >=3.10
24
+ Requires-Dist: chromadb>=1.0
25
+ Requires-Dist: gitpython>=3.1.50
26
+ Requires-Dist: google-genai>=1.0
27
+ Requires-Dist: ollama>=0.4
28
+ Requires-Dist: pathspec>=1.1.1
29
+ Requires-Dist: pypdf>=5.0
30
+ Requires-Dist: python-dotenv>=1.0
31
+ Requires-Dist: textual>=0.80
32
+ Requires-Dist: tiktoken>=0.13.0
33
+ Requires-Dist: tree-sitter-language-pack>=1.12.2
34
+ Requires-Dist: tree-sitter>=0.26.0
35
+ Requires-Dist: typer>=0.12
36
+ Provides-Extra: anthropic
37
+ Requires-Dist: anthropic>=0.30; extra == 'anthropic'
38
+ Provides-Extra: openai
39
+ Requires-Dist: openai>=1.30; extra == 'openai'
40
+ Provides-Extra: pdf
41
+ Requires-Dist: markdown>=3.5; extra == 'pdf'
42
+ Requires-Dist: xhtml2pdf>=0.2.16; extra == 'pdf'
43
+ Description-Content-Type: text/markdown
44
+
45
+ <p align="center">
46
+ <h1 align="center">RECEIPTS</h1>
47
+ <p align="center">
48
+ <strong>Your resume said it. Your code proves it.</strong>
49
+ </p>
50
+ <p align="center">
51
+ <a href="#quick-start">Quick Start</a> &bull;
52
+ <a href="#what-it-does">What It Does</a> &bull;
53
+ <a href="#how-it-works">How It Works</a> &bull;
54
+ <a href="#providers">Providers</a> &bull;
55
+ <a href="SETUP.md">Setup Guide</a> &bull;
56
+ <a href="LEARN.md">Deep Dive</a>
57
+ </p>
58
+ </p>
59
+
60
+ <br>
61
+
62
+ > **The anti-flattery resume tool.** Most resume reviewers feed your bullets
63
+ > into an LLM and hand you back compliments. Receipts does the opposite — it
64
+ > embeds your actual codebase, searches it for evidence behind every claim you
65
+ > made, and tells you the truth. If the code doesn't back it up, you'll know
66
+ > before the interviewer does.
67
+
68
+ <br>
69
+
70
+ ## Quick Start
71
+
72
+ ```bash
73
+ pip install codebase-receipts-cli
74
+ ```
75
+
76
+ ```bash
77
+ receipts check # verify provider is working
78
+ receipts ingest ./my-project # index your codebase
79
+ receipts verify resume.tex ./my-project # verify every claim
80
+ receipts verify resume.tex ./my-project --rewrite # + honest rewrites
81
+ receipts tui resume.tex ./my-project # full-screen dashboard
82
+ receipts ama resume.tex ./my-project # mock interview mode
83
+ receipts ledger # token usage & costs
84
+ ```
85
+
86
+ > [!TIP]
87
+ > See **[SETUP.md](SETUP.md)** for the full walkthrough — provider config,
88
+ > model setup, and first-run instructions. See **[LEARN.md](LEARN.md)** for
89
+ > how every piece works under the hood.
90
+
91
+ <br>
92
+
93
+ ## What It Does
94
+
95
+ ### Claim Verification
96
+
97
+ Every bullet in your `.tex` resume gets broken into individual claims —
98
+ percentages, counts, latency numbers, technology names — and each one is
99
+ checked against the code.
100
+
101
+ ```
102
+ Results: 5 verified, 3 plausible, 2 unsupported
103
+
104
+ UNSUPPORTED CLAIMS:
105
+ [percentage] 40%
106
+ bullet: Reduced API latency by 40% through query optimization...
107
+ reason: No evidence of latency measurement or optimization in codebase
108
+ ```
109
+
110
+ **The rule:** if the knowledge base has no relevant code for a claim, it's
111
+ marked Unsupported *without even asking the LLM*. The model never gets a
112
+ chance to talk itself into justifying something it can't find.
113
+
114
+ ### Honest Rewrites
115
+
116
+ Weak bullets get rewritten to be exactly as strong as what the code can
117
+ actually justify. No invented numbers. No inflated language.
118
+
119
+ ```
120
+ ORIGINAL: Reduced API latency by 40% through query optimization
121
+ REWRITTEN: Optimized database queries in the API layer using indexed lookups
122
+ ```
123
+
124
+ ### Keyword Gap Analysis
125
+
126
+ Paste a job description. Get back what's addable, what's ungrounded, and
127
+ what's missing:
128
+
129
+ ```
130
+ Can add (code supports it):
131
+ + Docker — Dockerfile and compose config found in codebase
132
+
133
+ Ungrounded (resume claims, no code):
134
+ ? Kubernetes — mentioned in resume but no k8s config in codebase
135
+
136
+ Gaps (JD wants, you don't have):
137
+ - Terraform
138
+ ```
139
+
140
+ ### Interactive TUI
141
+
142
+ A full-screen terminal dashboard with a file tree, sortable claims table,
143
+ side-by-side rewrite diffs, live LLM activity log, and a running token counter.
144
+
145
+ | Shortcut | Action |
146
+ |----------|--------|
147
+ | `c` | Claims tab |
148
+ | `r` | Rewrites tab |
149
+ | `l` | Log tab |
150
+ | `q` | Quit |
151
+
152
+ ### Mock Interview (`ama`)
153
+
154
+ An AI interviewer that targets your weakest bullets. Unsupported claims get
155
+ asked about 3x more often than verified ones. For each bullet:
156
+
157
+ 1. Pointed technical question about the specific claim
158
+ 2. Your answer
159
+ 3. Natural follow-up based on what you said
160
+ 4. Your follow-up answer
161
+ 5. Assessment: did it hold up?
162
+
163
+ Ends with a summary of strengths, weaknesses, and overall readiness.
164
+
165
+ ### Token Ledger
166
+
167
+ Every LLM call is metered and logged — even when the provider is free.
168
+ `receipts ledger` shows lifetime totals across all sessions.
169
+
170
+ <br>
171
+
172
+ ## How It Works
173
+
174
+ ```
175
+ receipts/
176
+ cli.py ........................ Typer CLI: check, ingest, verify, tui, ama, ledger
177
+ config.py ..................... BYOK config (env vars / .env, never committed)
178
+ ama/
179
+ interviewer.py .............. Mock-interview loop, weighted toward weak claims
180
+ ingest/
181
+ scanner.py .................. Tree-style walk respecting .gitignore
182
+ git_source.py ............... Clone remote repos to temp dir
183
+ artifact_extractor.py ....... Tree-sitter extraction within a token budget
184
+ secrets_scanner.py .......... Pre-embedding secrets scan + redaction
185
+ ledger/
186
+ token_ledger.py ............. SQLite-backed token/cost log
187
+ pricing_table.py ............ $/1K-token rates per provider/model
188
+ llm/
189
+ provider.py ................. Abstract LLMProvider (complete, embed)
190
+ factory.py .................. Reads config, returns the active provider
191
+ ollama_provider.py .......... Local, free, no key needed
192
+ gemini_provider.py .......... Free-tier Google AI Studio key
193
+ anthropic_provider.py ....... BYOK adapter (paid)
194
+ openai_provider.py .......... BYOK adapter (paid)
195
+ fake_provider.py ............ Deterministic offline stub for tests
196
+ resume/
197
+ tex_parser.py ............... Parse .tex into structured sections/bullets
198
+ claim_extractor.py .......... Extract numeric + technology claims per bullet
199
+ tui/
200
+ app.py ...................... Textual App with panelled layout
201
+ widgets/ .................... StatusBar, ClaimsTable, DiffView
202
+ verify/
203
+ kb.py ....................... ChromaDB-backed vector store over code artifacts
204
+ verifier.py ................. Classify: Verified / Plausible / Unsupported
205
+ rewriter.py ................. Propose honest rewrites for weak bullets
206
+ keyword_gap.py .............. JD keyword gap analysis grounded in code
207
+ ```
208
+
209
+ > [!NOTE]
210
+ > For a narrative walkthrough of every module — what it does, why it exists,
211
+ > and how to explain it in an interview — see **[LEARN.md](LEARN.md)**.
212
+
213
+ <br>
214
+
215
+ <h2 id="providers">Provider Support (BYOK)</h2>
216
+
217
+ | Provider | Default | Key | Install |
218
+ |----------|---------|-----|---------|
219
+ | **Ollama** | Yes | None | Built-in |
220
+ | **Gemini** | No | Free | Built-in |
221
+ | **Anthropic** | No | Paid | `pip install codebase-receipts-cli[anthropic]` |
222
+ | **OpenAI** | No | Paid | `pip install codebase-receipts-cli[openai]` |
223
+
224
+ **Zero bundled keys. Zero silent paid API calls. Ever.**
225
+
226
+ > [!IMPORTANT]
227
+ > Anthropic does not offer an embeddings API, so Claude needs a split
228
+ > config — chat via Claude, embeddings via a provider that has them:
229
+ > `RECEIPTS_PROVIDER=anthropic` + `RECEIPTS_EMBED_PROVIDER=gemini` (or
230
+ > `ollama`). The embed provider must match whatever embedded your
231
+ > knowledge base — re-ingest if you switch embedding models.
232
+
233
+ <br>
234
+
235
+ ## Development
236
+
237
+ ```bash
238
+ uv sync --group dev # install everything
239
+ uv run pytest -v # 233 tests, fully offline
240
+ uv run ruff check receipts/ # lint
241
+ uv run black --check receipts/ tests/ # format check
242
+ uv run pre-commit install # git hooks
243
+ ```
244
+
245
+ The entire test suite runs with **zero network access** — a deterministic
246
+ fake provider handles all LLM calls in tests.
247
+
248
+ ## Publishing
249
+
250
+ ```bash
251
+ git tag v0.1.0
252
+ git push origin v0.1.0
253
+ ```
254
+
255
+ GitHub Actions runs the full test suite on Ubuntu + Windows (Python 3.10 +
256
+ 3.12), then publishes to PyPI via trusted publishing. No tokens in secrets.
257
+
258
+ <br>
259
+
260
+ ## License
261
+
262
+ [MIT](LICENSE)
263
+
264
+ ---
265
+
266
+ <p align="center">
267
+ <sub>Built by <a href="mailto:ishaan406061@gmail.com">Ishaan Sharma</a></sub>
268
+ </p>
@@ -0,0 +1,78 @@
1
+ receipts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ receipts/cli.py,sha256=W8YUEuFmnA0HpxF1d0OKOAfn1zaMMx2dQ1bAISTg3ro,69238
3
+ receipts/config.py,sha256=OdMAcnn0jaaDImrmYIxmIUv2UD5TOmhPVd6-5AMl5RM,4392
4
+ receipts/errors.py,sha256=_lV1Usmk2UqmWIX0Ee0kzhU79YpkbIdcMUQbHgoqqHM,482
5
+ receipts/export.py,sha256=qWbnU2kkDfBc4pKC5ARnq3EP2JmrMElys4jYiwDcmBg,4225
6
+ receipts/ama/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ receipts/ama/interviewer.py,sha256=ZOftuAYQiZHWDkl9qTr_wEGpnoYHX6n0WI0LpGr5O3c,14541
8
+ receipts/ats/__init__.py,sha256=XidKPKhkvOO1u7kz4_LZw7T4bZH6cWZRbgn-X67UPXA,39
9
+ receipts/ats/comparator.py,sha256=IINuarlrOZ0wWTiNXKtApsmptsAAeUpBjQ7VcEuX5ag,2723
10
+ receipts/ats/scorer.py,sha256=CqVit0gPrkBHAXx594tL9h2pFr3FRyrpDUzKgDJmLMg,18370
11
+ receipts/ats/stats.py,sha256=b4kPlPZ9QUTecLAKa6efuY4xilkUw8D9wlofg1J1dKQ,5022
12
+ receipts/ingest/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
+ receipts/ingest/artifact_extractor.py,sha256=HmW00S5Kr-p7ynrx7hc91EIh-Ot5WUidO-iW8PPMWuI,23140
14
+ receipts/ingest/git_source.py,sha256=fgri8YTZ8zrw4-AwFjIShkUia7HTTS7xOv7bT-6PqyA,6204
15
+ receipts/ingest/manifest.py,sha256=KgzdqcdzkdeMZeppGa5Qlem59GhhCe9gUnj3n-IgAQc,3450
16
+ receipts/ingest/scanner.py,sha256=3YJKxjUtnPD7mK-Jimsfm4I17VT7qzKdpkAzCGbzDKE,4970
17
+ receipts/ingest/secrets_scanner.py,sha256=O5Yf_EY2W9TQE9U2vIv6pl2oLtKd0UF3ra5fhWPZm4Q,8214
18
+ receipts/interactive/__init__.py,sha256=aZVlXl2ugcHW0s9BhumLLTjNvOyHvC346eHn_Mfh5LU,51
19
+ receipts/interactive/repl.py,sha256=g8t4dCLQc9XBasDTuBvnjep3SXzGE7gOPPHDe_V-tyk,22359
20
+ receipts/ledger/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
+ receipts/ledger/pricing_table.py,sha256=uhPcrJpVDxjnBPzEFfvW0fzTdlzHHUfm9zgeAduwMqs,1695
22
+ receipts/ledger/token_ledger.py,sha256=PPDo_l9bMZj4EIqFob4u1gW9WjfDgZU3sX8SsvjbHvc,6863
23
+ receipts/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
+ receipts/llm/anthropic_provider.py,sha256=2SoVvLZ11ksl9BoqFZNPO2AdJlZvPc0Nlq07AdFHx_Q,3674
25
+ receipts/llm/factory.py,sha256=zL1XEQ54p1WMZjKp0wWxC1WhI_DZ3xgd0p0sDA3bfNA,4293
26
+ receipts/llm/fake_provider.py,sha256=eNTvNzf-SiTmcjJwQeMEv_XLZVJM7ORI7Qe0oGFw7hU,2607
27
+ receipts/llm/gemini_provider.py,sha256=3smYn_gZvJDbnDxTFVjil-D2Hgyp0YIOStg_LD0FYw0,8494
28
+ receipts/llm/json_utils.py,sha256=yBvfGJtcx_0ojyxxCDWneLbzKJ5ZarmWct8WOsJTJp8,1430
29
+ receipts/llm/metered.py,sha256=Oogp0v4V-xoehHGLb5aZSm26nRvFJ5vIU6l4Bje4VAI,2402
30
+ receipts/llm/ollama_provider.py,sha256=AEc1TGykSlZxh3rRSZMeS1arupwdTT5BSfVliT47BkY,4541
31
+ receipts/llm/openai_provider.py,sha256=f848VrfmucrTWgHExx4lhFMPAx6FaZV5kAMLvlLzcBA,4600
32
+ receipts/llm/provider.py,sha256=mL0adcyhmrYxTkIylGEVLSk7RnTadTCrotmHjx5zBj0,1218
33
+ receipts/llm/split.py,sha256=8QcEPRE8Jc0WEFBcPueKDXhKRRVJndi4AlBqFZoWQvg,2740
34
+ receipts/llm/token_estimate.py,sha256=-FKyWagDpOn7-brGIij8mMdi0adWcme_NoU52iH0QRA,1258
35
+ receipts/mine/__init__.py,sha256=1GL97BJKV9QQX30xWpLSiYNvD64i6wQCsPTBpbkold8,84
36
+ receipts/mine/code_metrics.py,sha256=keddSV-0l85FxgkMFdoAh9RItGaOQd56sM5BerXkGGE,7885
37
+ receipts/mine/git_evidence.py,sha256=l_sKPyLfLkrs2km96muZ2KXPmEtsaU8bGmhDRt6CUnw,3871
38
+ receipts/prep/__init__.py,sha256=C8bh2B7Lf9Jq3cE0paDHisF5Kmm72EltHlSsvF17ITo,75
39
+ receipts/prep/dossier.py,sha256=-qOv5dU41bWfbDkOtPbVD_cTHAdbJvBSLSEBhKZPjok,10497
40
+ receipts/prep/readiness.py,sha256=ozcIgvAT7Xupkq7tYMUYUplB6nsGimjUCf6kKCz_nZw,7235
41
+ receipts/resume/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
+ receipts/resume/claim_extractor.py,sha256=BfdCd2K2l-l4n7hXru3BmXz32kGAa0Rv-XvsNi6iTb0,10615
43
+ receipts/resume/loader.py,sha256=ij72GiJYqGCQZcymqDsiO6DQBOknaqAjdrAIb3_l9uI,1218
44
+ receipts/resume/pdf_parser.py,sha256=orkfWjqe0W4KrH5ExFlGZQpynA8yrA9wcFvNKhjDqBU,8550
45
+ receipts/resume/tex_parser.py,sha256=31tMXc1YUQ1l048hQFiHMY2lQ1GxfJOq0otOZczAl7k,12873
46
+ receipts/rewrite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
+ receipts/rewrite/compiler.py,sha256=2aiyQKC1J9n-ahGkwvK_xzhMQpnzQ1Xg2MKj8wdb6qs,5778
48
+ receipts/rewrite/optimizer.py,sha256=NphN0ws-e8Xe0demNwv3DLEDGUO4Jw6Sy1f3kjReD34,4915
49
+ receipts/rewrite/tex_rewriter.py,sha256=gzksgLj50rQMO-zTZ9IwqLPI5-V3UsY4Ug_C_7fHHZs,7526
50
+ receipts/tui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
+ receipts/tui/ama_app.py,sha256=ERfaH-jlqW-MwBXBrokEQFFwT0QIooh3Bn9czVpRNiM,16496
52
+ receipts/tui/app.py,sha256=9F_YdxtquYKjTO5E06VVAi__AR-OuL4HNCfo9Z0SKyE,11358
53
+ receipts/tui/dossier_app.py,sha256=OjCY7s_cHyW56KNvulsDbbT_GPIT43dqxMXa4PmgcAU,5827
54
+ receipts/tui/hub.py,sha256=OHfIXIR93a7a9lOaHC8HcbvmgyIHSRppivo2CYTctec,12526
55
+ receipts/tui/ingest_app.py,sha256=30w7QA4o9hBipYlQsGLusc3R0HkPwsO4Tm_x-lm6cGg,6663
56
+ receipts/tui/rewrite_app.py,sha256=q6bOCNV4QXi2Tq67D-c7ufl3oIgEOBnFQ_O3ljf72NE,17718
57
+ receipts/tui/score_app.py,sha256=VvXtJYqCAA4sQeayEsyEM7Uku3qN9o3MvTKdKATMEeE,8603
58
+ receipts/tui/widgets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
+ receipts/tui/widgets/claims_table.py,sha256=2ocALjMw1LOOY75eKs-tR6addNMRoQmc0pMOM0b7U7w,1506
60
+ receipts/tui/widgets/diff_view.py,sha256=RXe5D7E-6Z6DrgRdGTQPU6KMnS30OUwq7-mBL-3Ovbs,1086
61
+ receipts/tui/widgets/status_bar.py,sha256=BPdWP6LsoVmXKT5XNzG9GLUn_SschZ9AAouZSBylmbM,1043
62
+ receipts/verify/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
+ receipts/verify/bm25.py,sha256=baVlOYBVHUsqk1m8EdcGJ7W26uuY5MbaKKW10pCYXQM,3997
64
+ receipts/verify/enrich.py,sha256=W_-FtbItY9f3VpRxwt1SD1cjonmZKmut0zZSC1oIwsw,4546
65
+ receipts/verify/jd_fetch.py,sha256=-yX0R_9w_hEvq7JNzvaSGivRTYW7H90YQqCgot9kjac,3497
66
+ receipts/verify/kb.py,sha256=Mim2Id-XLEwWWpOtczNf1JOgPrYO4mkStlnhBAbPld0,13611
67
+ receipts/verify/keyword_gap.py,sha256=e8VbzmCY0VJj3YwBFxQhACQW4L3TPm81ACwuUXVpcOw,4253
68
+ receipts/verify/query_expand.py,sha256=hWw2xvBpuFFFgKC3ip7Cfz82HDtywnHD1RIjEfLd1fY,3532
69
+ receipts/verify/rerank.py,sha256=CMRyKQ9U4mSUfkTuYEpl_wgGJR_77tvJEo1RG50I3qQ,2660
70
+ receipts/verify/rewriter.py,sha256=zM5T5vQxmy1ZQnBbB9rvhVRHOmpsu-2csf_jM4NYL0k,6132
71
+ receipts/verify/router.py,sha256=dByAiZ0XvVQGFYMik7v-y4COVqCkeM8YmS-kLr-Sv24,7062
72
+ receipts/verify/summaries.py,sha256=0Ihj17Th6CicZJbctf2QdoqSMDR86ATJjAMj6zY99Bk,8818
73
+ receipts/verify/verifier.py,sha256=fcwp_PCrYDAJeFycFbpB5_0HAHDC8AWp4a11faddVAM,19709
74
+ codebase_receipts_cli-1.0.0.dist-info/METADATA,sha256=9kdkEpoW3K12vN3o5F5nDLhPgAUTdvQG7kwXH-51D3U,9092
75
+ codebase_receipts_cli-1.0.0.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
76
+ codebase_receipts_cli-1.0.0.dist-info/entry_points.txt,sha256=GW_kkDazAIFIVZd6sj6DM-5VrWcBakGCvPSJ84w9koE,47
77
+ codebase_receipts_cli-1.0.0.dist-info/licenses/LICENSE,sha256=8Uz1XENAU_8FzLJWXQq_cWpdkoBr97ROq5N09lIhOv0,1070
78
+ codebase_receipts_cli-1.0.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.31.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ receipts = receipts.cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ishaan Sharma
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
receipts/__init__.py ADDED
File without changes
File without changes