scamscript 0.2.0__tar.gz → 0.2.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 (61) hide show
  1. {scamscript-0.2.0 → scamscript-0.2.1}/CHANGELOG.md +8 -0
  2. {scamscript-0.2.0 → scamscript-0.2.1}/PKG-INFO +9 -29
  3. {scamscript-0.2.0 → scamscript-0.2.1}/README.md +7 -7
  4. {scamscript-0.2.0 → scamscript-0.2.1}/pyproject.toml +3 -2
  5. {scamscript-0.2.0 → scamscript-0.2.1}/src/scamscript/__init__.py +1 -1
  6. {scamscript-0.2.0 → scamscript-0.2.1}/src/scamscript/client.py +1 -1
  7. {scamscript-0.2.0 → scamscript-0.2.1}/tests/test_cli.py +1 -1
  8. {scamscript-0.2.0 → scamscript-0.2.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  9. {scamscript-0.2.0 → scamscript-0.2.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  10. {scamscript-0.2.0 → scamscript-0.2.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  11. {scamscript-0.2.0 → scamscript-0.2.1}/.github/SECURITY.md +0 -0
  12. {scamscript-0.2.0 → scamscript-0.2.1}/.github/pull_request_template.md +0 -0
  13. {scamscript-0.2.0 → scamscript-0.2.1}/.github/workflows/ci.yml +0 -0
  14. {scamscript-0.2.0 → scamscript-0.2.1}/.github/workflows/release.yml +0 -0
  15. {scamscript-0.2.0 → scamscript-0.2.1}/.gitignore +0 -0
  16. {scamscript-0.2.0 → scamscript-0.2.1}/CITATION.cff +0 -0
  17. {scamscript-0.2.0 → scamscript-0.2.1}/CODE_OF_CONDUCT.md +0 -0
  18. {scamscript-0.2.0 → scamscript-0.2.1}/CONTRIBUTING.md +0 -0
  19. {scamscript-0.2.0 → scamscript-0.2.1}/LICENSE +0 -0
  20. {scamscript-0.2.0 → scamscript-0.2.1}/docs/banner.svg +0 -0
  21. {scamscript-0.2.0 → scamscript-0.2.1}/docs/calibration.md +0 -0
  22. {scamscript-0.2.0 → scamscript-0.2.1}/docs/demo.gif +0 -0
  23. {scamscript-0.2.0 → scamscript-0.2.1}/docs/sample-report.md +0 -0
  24. {scamscript-0.2.0 → scamscript-0.2.1}/docs/social-preview.png +0 -0
  25. {scamscript-0.2.0 → scamscript-0.2.1}/examples/adversarial/fake_output_json.txt +0 -0
  26. {scamscript-0.2.0 → scamscript-0.2.1}/examples/adversarial/fence_escape.txt +0 -0
  27. {scamscript-0.2.0 → scamscript-0.2.1}/examples/adversarial/fixed_attack_type.txt +0 -0
  28. {scamscript-0.2.0 → scamscript-0.2.1}/examples/adversarial/non_json_demand.txt +0 -0
  29. {scamscript-0.2.0 → scamscript-0.2.1}/examples/adversarial/print_system_prompt.txt +0 -0
  30. {scamscript-0.2.0 → scamscript-0.2.1}/examples/adversarial/role_switch.txt +0 -0
  31. {scamscript-0.2.0 → scamscript-0.2.1}/examples/adversarial/score_override.txt +0 -0
  32. {scamscript-0.2.0 → scamscript-0.2.1}/examples/crude_robocall.txt +0 -0
  33. {scamscript-0.2.0 → scamscript-0.2.1}/examples/gov_impersonation_vishing.txt +0 -0
  34. {scamscript-0.2.0 → scamscript-0.2.1}/examples/prompt_injection_script.txt +0 -0
  35. {scamscript-0.2.0 → scamscript-0.2.1}/examples/romance_scam_sms.txt +0 -0
  36. {scamscript-0.2.0 → scamscript-0.2.1}/examples/sophisticated_wire_fraud.txt +0 -0
  37. {scamscript-0.2.0 → scamscript-0.2.1}/examples/tech_support_scam.txt +0 -0
  38. {scamscript-0.2.0 → scamscript-0.2.1}/scripts/calibrate.py +0 -0
  39. {scamscript-0.2.0 → scamscript-0.2.1}/scripts/injection_eval.py +0 -0
  40. {scamscript-0.2.0 → scamscript-0.2.1}/src/scamscript/__main__.py +0 -0
  41. {scamscript-0.2.0 → scamscript-0.2.1}/src/scamscript/analysis.py +0 -0
  42. {scamscript-0.2.0 → scamscript-0.2.1}/src/scamscript/cli.py +0 -0
  43. {scamscript-0.2.0 → scamscript-0.2.1}/src/scamscript/config.py +0 -0
  44. {scamscript-0.2.0 → scamscript-0.2.1}/src/scamscript/ingest.py +0 -0
  45. {scamscript-0.2.0 → scamscript-0.2.1}/src/scamscript/models.py +0 -0
  46. {scamscript-0.2.0 → scamscript-0.2.1}/src/scamscript/prompts.py +0 -0
  47. {scamscript-0.2.0 → scamscript-0.2.1}/src/scamscript/redact.py +0 -0
  48. {scamscript-0.2.0 → scamscript-0.2.1}/src/scamscript/render.py +0 -0
  49. {scamscript-0.2.0 → scamscript-0.2.1}/src/scamscript/report.py +0 -0
  50. {scamscript-0.2.0 → scamscript-0.2.1}/src/scamscript/store.py +0 -0
  51. {scamscript-0.2.0 → scamscript-0.2.1}/src/scamscript/verify.py +0 -0
  52. {scamscript-0.2.0 → scamscript-0.2.1}/tests/test_analysis.py +0 -0
  53. {scamscript-0.2.0 → scamscript-0.2.1}/tests/test_client.py +0 -0
  54. {scamscript-0.2.0 → scamscript-0.2.1}/tests/test_ingest.py +0 -0
  55. {scamscript-0.2.0 → scamscript-0.2.1}/tests/test_models.py +0 -0
  56. {scamscript-0.2.0 → scamscript-0.2.1}/tests/test_prompts.py +0 -0
  57. {scamscript-0.2.0 → scamscript-0.2.1}/tests/test_redact.py +0 -0
  58. {scamscript-0.2.0 → scamscript-0.2.1}/tests/test_render.py +0 -0
  59. {scamscript-0.2.0 → scamscript-0.2.1}/tests/test_report.py +0 -0
  60. {scamscript-0.2.0 → scamscript-0.2.1}/tests/test_store.py +0 -0
  61. {scamscript-0.2.0 → scamscript-0.2.1}/tests/test_verify.py +0 -0
@@ -5,6 +5,14 @@ schema are the things that count as public API.
5
5
 
6
6
  ## Unreleased
7
7
 
8
+ ## 0.2.1 - 2026-11-02
9
+
10
+ ### Fixed
11
+
12
+ - PyPI project page: absolute image and link URLs so the banner, demo and docs links resolve.
13
+ - License metadata now uses the SPDX expression `MIT` plus `license-files` instead of embedding the
14
+ full license text in the sidebar.
15
+
8
16
  ### Added
9
17
 
10
18
  - Terminal demo GIF in the README, recorded against a local stub endpoint.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: scamscript
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: Reverse-engineer scam scripts and vishing transcripts into structured counter-playbooks
5
5
  Project-URL: Homepage, https://github.com/sjdsjadjajdjsa/scamscript
6
6
  Project-URL: Repository, https://github.com/sjdsjadjajdjsa/scamscript
@@ -8,27 +8,7 @@ Project-URL: Issues, https://github.com/sjdsjadjajdjsa/scamscript/issues
8
8
  Project-URL: Changelog, https://github.com/sjdsjadjajdjsa/scamscript/blob/master/CHANGELOG.md
9
9
  Author-email: scamscript contributors <313729361+sjdsjadjajdjsa@users.noreply.github.com>
10
10
  Maintainer-email: scamscript contributors <313729361+sjdsjadjajdjsa@users.noreply.github.com>
11
- License: MIT License
12
-
13
- Copyright (c) 2026 scamscript contributors
14
-
15
- Permission is hereby granted, free of charge, to any person obtaining a copy
16
- of this software and associated documentation files (the "Software"), to deal
17
- in the Software without restriction, including without limitation the rights
18
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
19
- copies of the Software, and to permit persons to whom the Software is
20
- furnished to do so, subject to the following conditions:
21
-
22
- The above copyright notice and this permission notice shall be included in all
23
- copies or substantial portions of the Software.
24
-
25
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
30
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
31
- SOFTWARE.
11
+ License-Expression: MIT
32
12
  License-File: LICENSE
33
13
  Keywords: cli,fraud,osint,phishing,scam,security,smishing,social-engineering,transcripts,vishing
34
14
  Classifier: Development Status :: 4 - Beta
@@ -55,11 +35,11 @@ Requires-Dist: twine==6.1.0; extra == 'dev'
55
35
  Description-Content-Type: text/markdown
56
36
 
57
37
  <p align="center">
58
- <img src="docs/banner.svg" alt="scamscript: reverse-engineer the playbook, not the story" width="100%">
38
+ <img src="https://raw.githubusercontent.com/sjdsjadjajdjsa/scamscript/master/docs/banner.svg" alt="scamscript: reverse-engineer the playbook, not the story" width="100%">
59
39
  </p>
60
40
 
61
41
  <p align="center">
62
- <img src="docs/demo.gif" alt="terminal demo: analyzing a script, then ranking a directory" width="760">
42
+ <img src="https://raw.githubusercontent.com/sjdsjadjajdjsa/scamscript/master/docs/demo.gif" alt="terminal demo: analyzing a script, then ranking a directory" width="760">
63
43
  <br>
64
44
  <sub>Recorded against a local stub endpoint, so no API spend.</sub>
65
45
  </p>
@@ -68,7 +48,7 @@ Description-Content-Type: text/markdown
68
48
 
69
49
  [![CI](https://github.com/sjdsjadjajdjsa/scamscript/actions/workflows/ci.yml/badge.svg)](https://github.com/sjdsjadjajdjsa/scamscript/actions/workflows/ci.yml)
70
50
  [![Python](https://img.shields.io/badge/python-3.12%20%7C%203.13-3776ab)](pyproject.toml)
71
- [![License](https://img.shields.io/badge/license-MIT-2a9d8f)](LICENSE)
51
+ [![License](https://img.shields.io/badge/license-MIT-2a9d8f)](https://github.com/sjdsjadjajdjsa/scamscript/blob/master/LICENSE)
72
52
  [![Scope](https://img.shields.io/badge/scope-security%20research-e63946)](#scope-and-disclaimer)
73
53
 
74
54
  A reverse-engineering analyzer for leaked or public scam call scripts and vishing transcripts.
@@ -135,7 +115,7 @@ compared against the source, and lines that are paraphrased or simply not there
135
115
  `--strict-quotes` to make a missing line fail the run, and `--no-verify` to skip it.
136
116
 
137
117
  Batch mode ranks a whole directory into one markdown report. A redacted report from the sample
138
- corpus is at [`docs/sample-report.md`](docs/sample-report.md).
118
+ corpus is at [`docs/sample-report.md`](https://github.com/sjdsjadjajdjsa/scamscript/blob/master/docs/sample-report.md).
139
119
 
140
120
  ## Commands
141
121
 
@@ -197,7 +177,7 @@ bounded.
197
177
  ## Install and configure
198
178
 
199
179
  Python 3.12+. `pip install scamscript` for use, `pip install -e ".[dev]"` from a clone for tests.
200
- Release history is in [CHANGELOG.md](CHANGELOG.md).
180
+ Release history is in [CHANGELOG.md](https://github.com/sjdsjadjajdjsa/scamscript/blob/master/CHANGELOG.md).
201
181
 
202
182
  | Setting | Flag | Env | Default |
203
183
  | --- | --- | --- | --- |
@@ -224,7 +204,7 @@ API_KEY=... python scripts/calibrate.py --dir examples --repeat 3 \
224
204
  --base-url https://openrouter.ai/api/v1
225
205
  ```
226
206
 
227
- Recorded passes with their numbers are in [`docs/calibration.md`](docs/calibration.md): three rubric
207
+ Recorded passes with their numbers are in [`docs/calibration.md`](https://github.com/sjdsjadjajdjsa/scamscript/blob/master/docs/calibration.md): three rubric
228
208
  repeats, a three-model comparison, an adversarial set and end-case stability runs. The current rubric
229
209
  reaches both ends of the scale, and quote checking flags the invented lines a plain reading would
230
210
  take as evidence.
@@ -274,5 +254,5 @@ docs/ calibration record, sample report, banner, demo
274
254
  For security research and fraud-awareness training only. Not legal advice, not an attribution
275
255
  tool, no warranty. Keep API keys out of commits; the key is read from the environment.
276
256
 
277
- MIT licensed, see [LICENSE](LICENSE). Contribution notes in [CONTRIBUTING.md](CONTRIBUTING.md),
257
+ MIT licensed, see [LICENSE](https://github.com/sjdsjadjajdjsa/scamscript/blob/master/LICENSE). Contribution notes in [CONTRIBUTING.md](https://github.com/sjdsjadjajdjsa/scamscript/blob/master/CONTRIBUTING.md),
278
258
  vulnerability reports in [SECURITY.md](.github/SECURITY.md).
@@ -1,9 +1,9 @@
1
1
  <p align="center">
2
- <img src="docs/banner.svg" alt="scamscript: reverse-engineer the playbook, not the story" width="100%">
2
+ <img src="https://raw.githubusercontent.com/sjdsjadjajdjsa/scamscript/master/docs/banner.svg" alt="scamscript: reverse-engineer the playbook, not the story" width="100%">
3
3
  </p>
4
4
 
5
5
  <p align="center">
6
- <img src="docs/demo.gif" alt="terminal demo: analyzing a script, then ranking a directory" width="760">
6
+ <img src="https://raw.githubusercontent.com/sjdsjadjajdjsa/scamscript/master/docs/demo.gif" alt="terminal demo: analyzing a script, then ranking a directory" width="760">
7
7
  <br>
8
8
  <sub>Recorded against a local stub endpoint, so no API spend.</sub>
9
9
  </p>
@@ -12,7 +12,7 @@
12
12
 
13
13
  [![CI](https://github.com/sjdsjadjajdjsa/scamscript/actions/workflows/ci.yml/badge.svg)](https://github.com/sjdsjadjajdjsa/scamscript/actions/workflows/ci.yml)
14
14
  [![Python](https://img.shields.io/badge/python-3.12%20%7C%203.13-3776ab)](pyproject.toml)
15
- [![License](https://img.shields.io/badge/license-MIT-2a9d8f)](LICENSE)
15
+ [![License](https://img.shields.io/badge/license-MIT-2a9d8f)](https://github.com/sjdsjadjajdjsa/scamscript/blob/master/LICENSE)
16
16
  [![Scope](https://img.shields.io/badge/scope-security%20research-e63946)](#scope-and-disclaimer)
17
17
 
18
18
  A reverse-engineering analyzer for leaked or public scam call scripts and vishing transcripts.
@@ -79,7 +79,7 @@ compared against the source, and lines that are paraphrased or simply not there
79
79
  `--strict-quotes` to make a missing line fail the run, and `--no-verify` to skip it.
80
80
 
81
81
  Batch mode ranks a whole directory into one markdown report. A redacted report from the sample
82
- corpus is at [`docs/sample-report.md`](docs/sample-report.md).
82
+ corpus is at [`docs/sample-report.md`](https://github.com/sjdsjadjajdjsa/scamscript/blob/master/docs/sample-report.md).
83
83
 
84
84
  ## Commands
85
85
 
@@ -141,7 +141,7 @@ bounded.
141
141
  ## Install and configure
142
142
 
143
143
  Python 3.12+. `pip install scamscript` for use, `pip install -e ".[dev]"` from a clone for tests.
144
- Release history is in [CHANGELOG.md](CHANGELOG.md).
144
+ Release history is in [CHANGELOG.md](https://github.com/sjdsjadjajdjsa/scamscript/blob/master/CHANGELOG.md).
145
145
 
146
146
  | Setting | Flag | Env | Default |
147
147
  | --- | --- | --- | --- |
@@ -168,7 +168,7 @@ API_KEY=... python scripts/calibrate.py --dir examples --repeat 3 \
168
168
  --base-url https://openrouter.ai/api/v1
169
169
  ```
170
170
 
171
- Recorded passes with their numbers are in [`docs/calibration.md`](docs/calibration.md): three rubric
171
+ Recorded passes with their numbers are in [`docs/calibration.md`](https://github.com/sjdsjadjajdjsa/scamscript/blob/master/docs/calibration.md): three rubric
172
172
  repeats, a three-model comparison, an adversarial set and end-case stability runs. The current rubric
173
173
  reaches both ends of the scale, and quote checking flags the invented lines a plain reading would
174
174
  take as evidence.
@@ -218,5 +218,5 @@ docs/ calibration record, sample report, banner, demo
218
218
  For security research and fraud-awareness training only. Not legal advice, not an attribution
219
219
  tool, no warranty. Keep API keys out of commits; the key is read from the environment.
220
220
 
221
- MIT licensed, see [LICENSE](LICENSE). Contribution notes in [CONTRIBUTING.md](CONTRIBUTING.md),
221
+ MIT licensed, see [LICENSE](https://github.com/sjdsjadjajdjsa/scamscript/blob/master/LICENSE). Contribution notes in [CONTRIBUTING.md](https://github.com/sjdsjadjajdjsa/scamscript/blob/master/CONTRIBUTING.md),
222
222
  vulnerability reports in [SECURITY.md](.github/SECURITY.md).
@@ -4,11 +4,12 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "scamscript"
7
- version = "0.2.0"
7
+ version = "0.2.1"
8
8
  description = "Reverse-engineer scam scripts and vishing transcripts into structured counter-playbooks"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
11
- license = { file = "LICENSE" }
11
+ license = "MIT"
12
+ license-files = ["LICENSE"]
12
13
  authors = [
13
14
  { name = "scamscript contributors", email = "313729361+sjdsjadjajdjsa@users.noreply.github.com" },
14
15
  ]
@@ -1,3 +1,3 @@
1
1
  """scamscript: reverse-engineering analyzer for scam call scripts."""
2
2
 
3
- __version__ = "0.2.0"
3
+ __version__ = "0.2.1"
@@ -64,7 +64,7 @@ class ChatClient:
64
64
  "Authorization": f"Bearer {api_key}",
65
65
  "Content-Type": "application/json",
66
66
  "Accept": "application/json",
67
- "User-Agent": "scamscript/0.2",
67
+ "User-Agent": "scamscript/0.2.1",
68
68
  },
69
69
  )
70
70
 
@@ -197,7 +197,7 @@ def test_history_empty(home):
197
197
  def test_version(home):
198
198
  result = runner.invoke(cli.app, ["--version"])
199
199
  assert result.exit_code == 0
200
- assert result.stdout.strip() == "scamscript 0.2.0"
200
+ assert result.stdout.strip() == "scamscript 0.2.1"
201
201
 
202
202
 
203
203
  def test_json_output_is_one_object_per_script(home, tmp_path, fake):
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes