The repository's new name

This commit is contained in:
feder-cr committed 2026-11-05 14:48:34 +01:00
1 parent b23cadb276
commit 69d93438cd
10 files changed
+17 -17

No files matched your search

+2 -2
View File
@@ -1,8 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Questions and ideas
url: https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk/discussions
url: https://github.com/feder-cr/Jobs_Applier_AI_Agent/discussions
about: Ask how AIHawk works, or talk over an idea before you build it.
- name: Security problem
url: https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk/security/policy
url: https://github.com/feder-cr/Jobs_Applier_AI_Agent/security/policy
about: Report it privately. Do not open a public issue for it.
+3 -3
View File
@@ -7,8 +7,8 @@ AIHawk is a command-line program in Python. The most useful contribution is a pl
You need Python 3.11 or newer. CI runs the unit tests on 3.11 and 3.12, on Ubuntu, Windows and macOS.
```sh
git clone https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk
cd Jobs_Applier_AI_Agent_AIHawk
git clone https://github.com/feder-cr/Jobs_Applier_AI_Agent
cd Jobs_Applier_AI_Agent
python -m venv .venv
. .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
@@ -60,7 +60,7 @@ The other workflow, `.github/workflows/jobs-database.yml`, builds the job databa
- Anything that weakens what the person controls: a change that lets the model send a form or an email without the person's yes, that lets a page's text steer the model past the rules in `apply.py`, that reads mail beyond what the mail plugins allow, or that gets around a captcha or a login.
- Real personal data in fixtures or examples: no real CVs, names, e-mail addresses, phone numbers or screenshots of someone's application. Invent the data.
Use the issue templates for bugs and plugin requests. For a security problem, do not open an issue: follow [SECURITY.md](SECURITY.md). Questions go to [Discussions](https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk/discussions).
Use the issue templates for bugs and plugin requests. For a security problem, do not open an issue: follow [SECURITY.md](SECURITY.md). Questions go to [Discussions](https://github.com/feder-cr/Jobs_Applier_AI_Agent/discussions).
## License
+3 -3
View File
@@ -23,13 +23,13 @@
Windows, in PowerShell:
```powershell
irm https://raw.githubusercontent.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk/main/run.ps1 | iex
irm https://raw.githubusercontent.com/feder-cr/Jobs_Applier_AI_Agent/main/run.ps1 | iex
```
Linux:
```bash
curl -LsSf https://raw.githubusercontent.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk/main/run.sh | sh
curl -LsSf https://raw.githubusercontent.com/feder-cr/Jobs_Applier_AI_Agent/main/run.sh | sh
```
That is the only command, now and every time after: it installs what is missing, updates AIHawk and starts it. Everything else is on the screen.
@@ -63,6 +63,6 @@ One send each so far, so "it can send", not "it sends reliably": [what has reall
---
[Configuration](docs/configuration.md) · [Wiki](https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk/wiki) · [Contributing](CONTRIBUTING.md) · [Changelog](CHANGELOG.md) · [Notice](NOTICE) · [MIT](LICENSE)
[Configuration](docs/configuration.md) · [Wiki](https://github.com/feder-cr/Jobs_Applier_AI_Agent/wiki) · [Contributing](CONTRIBUTING.md) · [Changelog](CHANGELOG.md) · [Notice](NOTICE) · [MIT](LICENSE)
The former Dots project is at [feder-cr/invisible_dots](https://github.com/feder-cr/invisible_dots).
+1 -1
View File
@@ -5,7 +5,7 @@
Do not open a public issue or a pull request for a security problem. Report it privately with GitHub's private vulnerability reporting:
1. Open the repository's **Security** tab.
2. Choose **Report a vulnerability**. Direct link: https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk/security/advisories/new
2. Choose **Report a vulnerability**. Direct link: https://github.com/feder-cr/Jobs_Applier_AI_Agent/security/advisories/new
Say what you found, how to reproduce it, and what you think a person could lose. Do not include a real person's CV, e-mail or sign-in, or a working API key. Replace them with invented ones.
+1 -1
View File
@@ -8,7 +8,7 @@ Loading a resume rewrites this file, and the rewrite drops the comments you put
|---|---|---|
| `name` | empty | Your name for this search, shown at the top of the list. |
| `goals` | empty | What you are looking for, in your own words. The decision model and the judge read it. |
| `database` | `https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk/releases/download/jobs-latest/manifest.json` | Where the job database is: the URL of its `manifest.json`, or the path of a local one. The files it names sit beside it, unless its `base_url` says otherwise. |
| `database` | `https://github.com/feder-cr/Jobs_Applier_AI_Agent/releases/download/jobs-latest/manifest.json` | Where the job database is: the URL of its `manifest.json`, or the path of a local one. The files it names sit beside it, unless its `base_url` says otherwise. |
| `max_age_days` | `60` | Postings posted more than this many days ago are left out. A posting with no date is kept. |
| `model` | `deepseek/deepseek-v4.1-flash` | Writes the tailored CV and fills the application forms. |
| `quick_model` | `google/gemini-3.5-flash` | Writes the search plan from your CV, and the other short calls of a search. |
+3 -3
View File
@@ -41,9 +41,9 @@ dev = ["pytest>=8", "ruff>=0.6"]
aihawk = "aihawk.cli:run"
[project.urls]
Homepage = "https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk"
Issues = "https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk/issues"
Changelog = "https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk/blob/main/CHANGELOG.md"
Homepage = "https://github.com/feder-cr/Jobs_Applier_AI_Agent"
Issues = "https://github.com/feder-cr/Jobs_Applier_AI_Agent/issues"
Changelog = "https://github.com/feder-cr/Jobs_Applier_AI_Agent/blob/main/CHANGELOG.md"
[tool.hatch.version]
path = "src/aihawk/__init__.py"
+1 -1
View File
@@ -3,4 +3,4 @@ if (-not (Get-Command uvx -ErrorAction SilentlyContinue)) {
Invoke-RestMethod https://astral.sh/uv/install.ps1 | Invoke-Expression
$env:Path = "$env:USERPROFILE\.local\bin;$env:Path"
}
uvx --refresh-package aihawk --from git+https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk aihawk
uvx --refresh-package aihawk --from git+https://github.com/feder-cr/Jobs_Applier_AI_Agent aihawk
+1 -1
View File
@@ -2,4 +2,4 @@
# AIHawk in one command: installs uv if it is missing, brings AIHawk up to date, and starts it.
command -v uvx >/dev/null 2>&1 || { curl -LsSf https://astral.sh/uv/install.sh | sh && . "$HOME/.local/bin/env"; }
# This script arrives through a pipe, and the screen needs the terminal.
exec uvx --refresh-package aihawk --from git+https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk aihawk "$@" </dev/tty
exec uvx --refresh-package aihawk --from git+https://github.com/feder-cr/Jobs_Applier_AI_Agent aihawk "$@" </dev/tty
+1 -1
View File
@@ -24,7 +24,7 @@ DEFAULT_JUDGE_MODEL = "deepseek/deepseek-v4.1-flash"
# Answers the six questions that shortlist the postings. Kept as the default: judge.py turns its answers into evidence by rules
# that were checked on this model, and another model answers differently, so those rules need checking again.
DEFAULT_DECISION_MODEL = "typesafe/jev-1.14"
DEFAULT_DATABASE = "https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk/releases/download/jobs-latest/manifest.json"
DEFAULT_DATABASE = "https://github.com/feder-cr/Jobs_Applier_AI_Agent/releases/download/jobs-latest/manifest.json"
DEFAULT_MAX_AGE_DAYS = 60
+1 -1
View File
@@ -127,7 +127,7 @@ def with_description(job: Job, timeout: float = 30.0) -> Job:
if stored.strip():
return replace(job, description=stored)
try:
request = urllib.request.Request(job.url, headers={"User-Agent": "AIHawk (+https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk)"})
request = urllib.request.Request(job.url, headers={"User-Agent": "AIHawk (+https://github.com/feder-cr/Jobs_Applier_AI_Agent)"})
with urllib.request.urlopen(request, timeout=timeout) as response:
return replace(job, description=page_text(response.read().decode("utf-8", "replace")))
except (OSError, ValueError, HTTPException):