xgauntlet 0.1.0 → 0.3.0

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.
package/README.md CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  <p align="center">
22
22
  <a href="https://www.npmjs.com/package/xgauntlet"><img src="https://img.shields.io/npm/v/xgauntlet.svg?color=blue" alt="NPM Version" /></a>
23
- <a href="https://github.com/rolfmadsen/xGauntlet/actions/workflows/ci.yml"><img src="https://github.com/rolfmadsen/xGauntlet/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI" /></a>
23
+ <a href="https://github.com/rolfmadsen/xgauntlet/actions/workflows/ci.yml"><img src="https://github.com/rolfmadsen/xgauntlet/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI" /></a>
24
24
  <a href="docs/adr/0005-two-tier-verification-and-attestation-model.md"><img src="https://img.shields.io/badge/evidence-Two--Tier%20Trust%20Model-blue.svg" alt="Evidence Model" /></a>
25
25
  <a href="wit/gauntlet_policy.wit"><img src="https://img.shields.io/badge/WASM-Zero%20Ambient%20Authority-purple.svg" alt="WASM Policy" /></a>
26
26
  <a href="Cargo.toml"><img src="https://img.shields.io/badge/rust-2021%20edition-orange.svg" alt="Rust Version" /></a>
@@ -31,68 +31,113 @@
31
31
 
32
32
  **Dokumentation**: [Makro-Spec](spec.md) • [Domæne-Glossary](CONTEXT.md) • [Kodestandarder](CODING_STANDARDS.md) • [Arkitektur (ADRs)](docs/adr/)
33
33
 
34
- **Kildekode & Pakker**: [GitHub](https://github.com/rolfmadsen/xGauntlet) • [NPM Pakke](packages/cli)
34
+ **Kildekode & Pakker**: [GitHub](https://github.com/rolfmadsen/xgauntlet) • [NPM Pakke](packages/cli)
35
35
 
36
36
  ---
37
37
 
38
38
  **xGauntlet** omgiver AI-genereret kode med et kompromisløst verifikations-gauntlet (Linters, Type-checkere, Unit tests, Invariant-tests og Mutationsafprøvning), håndhæver en deterministisk **Zero Ambient Authority WebAssembly policy-kerne** (`wit/gauntlet_policy.wit`) og oversætter rå fejludskrifter til **Actionable Diagnostics** i et feedback-loop, som AI-agenter kan handle direkte på.
39
39
 
40
- Bygget i **Rust** for lynhurtig sub-3ms koldstart uden baggrundsdæmoner, og distribueret via **NPX** for øjeblikkelig brug på tværs af **Linux**, **macOS** og **Windows 11**.
40
+ Bygget i **Rust** for lynhurtig sub-3ms koldstart uden baggrundsdæmoner, og distribueret via **NPM** og **Cargo** for øjeblikkelig brug på tværs af **Linux**, **macOS** og **Windows 11**.
41
41
 
42
42
  ---
43
43
 
44
44
  ## 🚀 Hurtig Start & Installation
45
45
 
46
- Kom i gang på under 10 sekunder uden forudgående installation via NPX:
46
+ xGauntlet følger samme enkle model som `git`: Værktøjet installeres én gang globalt på maskinen, hvorefter du initialiserer det lokalt i de repositories, du ønsker at sætte under governance.
47
47
 
48
- ### 1. Initialiser dit projekt
49
- Stil dig i rodmappen på dit projekt (Rust, TypeScript, Python eller polyglot) og kør:
48
+ ### 1. Installer xGauntlet (én gang på din maskine)
49
+
50
+ Kør én enkelt kommando for at installere værktøjet globalt på tværs af alle programmeringssprog og platforme:
51
+
52
+ ```bash
53
+ npm install -g xgauntlet
54
+ ```
55
+
56
+ > [!TIP]
57
+ > **⚡ Hvorfor global installation frem for blot `npx`?**
58
+ > Når `xgauntlet` er installeret globalt i dit `$PATH`, kører gatekeeper-hooks (`xgauntlet hook ...`) direkte som maskinkode på **under 3 millisekunder** ved hvert eneste værktøjskald fra din AI-agent – helt uden Node.js koldstarts-overhead.
59
+ > *(Du kan dog stadig køre `npx xgauntlet init`, hvis du blot vil afprøve værktøjet flygtigt uden installation).*
60
+
61
+ ### 2. Initialiser dit projekt (In-Repo Governance)
62
+
63
+ Gå ind i dit projekt – uanset om det er skrevet i Python, Rust, Go eller TypeScript:
50
64
 
51
65
  ```bash
52
66
  # Åbn dit projektkatalog
53
67
  cd ~/sti/til/dit-projekt
54
68
 
55
- # Scaffold samtlige in-repo styringsfiler direkte via NPX
56
- npx xgauntlet init
69
+ # Scaffold in-repo styringsfiler:
70
+ xgauntlet init
57
71
  ```
58
72
 
73
+ `xgauntlet init` detekterer automatisk projektets programmeringssprog (via `package.json`, `Cargo.toml`, `pyproject.toml`, `go.mod` osv.) og opretter de deklarative styringsfiler.
74
+
59
75
  #### 📦 Hvad `xgauntlet init` opretter lokalt i projektet (In-Repo Single Source of Truth):
60
- | Fil / Mappe | Formål |
61
- |---|---|
62
- | [`gauntlet.toml`](gauntlet.toml) | Deklarativ konfiguration af lintere, typer, tests og verifikationslag |
63
- | [`CONTEXT.md`](CONTEXT.md) | Domæne-glossary for projektet (Aristoteles' *definitio per genus et differentiam*) |
64
- | [`CODING_STANDARDS.md`](CODING_STANDARDS.md) | Multi-stack kodestandarder og arkitekturinvarianter |
65
- | [`spec.md`](spec.md) | Makro-specifikation og system-invarianter |
66
- | [`tasks/001-bootstrap.md`](tasks/) | Opgavemappe til håndhævelse af task-kontrakter & acceptkriterier |
67
- | [`docs/adr/`](docs/adr/) | Architecture Decision Records (ADR) til projekt-specifikke beslutninger |
68
- | [`.agents/AGENTS.md`](.agents/AGENTS.md) | Retningslinjer for AI-agenter, Response HUD og task-management |
69
- | [`.agents/hooks.json`](.agents/hooks.json) | Pre-Invocation Hook til gatekeeperen |
70
- | [`CLAUDE.md`](CLAUDE.md) | Retningslinjer og sikkerhedsinvarianter for Claude Code |
76
+
77
+ | Fil / Mappe | Type | Formål |
78
+ |---|---|---|
79
+ | [`gauntlet.toml`](gauntlet.toml) | **Fælles** | Deklarativ konfiguration af lintere, typer, tests og verifikationslag |
80
+ | [`CONTEXT.md`](CONTEXT.md) | **Fælles** | Domæne-glossary for projektet (Aristoteles' *definitio per genus et differentiam*) |
81
+ | [`CODING_STANDARDS.md`](CODING_STANDARDS.md) | **Fælles** | Multi-stack kodestandarder og arkitekturinvarianter |
82
+ | [`spec.md`](spec.md) | **Fælles** | Makro-specifikation og system-invarianter |
83
+ | [`tasks/001-bootstrap.md`](tasks/) | **Fælles** | Opgavemappe til håndhævelse af task-kontrakter & acceptkriterier |
84
+ | [`docs/adr/`](docs/adr/) | **Fælles** | Architecture Decision Records (ADR) til projekt-specifikke beslutninger |
85
+ | [`.agents/AGENTS.md`](.agents/AGENTS.md) | **Antigravity / Gemini** | Retningslinjer for AI-agenter, Response HUD og task-management |
86
+ | [`.agents/hooks.json`](.agents/hooks.json) | **Antigravity / Gemini** | PreToolUse gatekeeper hook konfiguration |
87
+ | [`CLAUDE.md`](CLAUDE.md) | **Claude Code** | Retningslinjer og sikkerhedsinvarianter for Anthropic Claude Code |
88
+
89
+ > [!NOTE]
90
+ > **🤝 Poly-Harness Sameksistens:**
91
+ > De 7 øverste filer er helt universelle og styrer projektet for både mennesker og alle typer AI-agenter. De to harness-specifikke sæt (`CLAUDE.md` og `.agents/`) sameksisterer fredeligt uden konflikter, så du eller dit team frit kan skifte mellem f.eks. Google Antigravity IDE og Claude Code på det samme projekt. Hvis du udelukkende benytter én agent, kan det overskydende sæt frit slettes.
71
92
 
72
93
  > [!TIP]
73
94
  > **🛡️ Ikke-destruktiv Garanti (Safety First):**
74
95
  > `xgauntlet init` overskriver **aldrig** eksisterende filer i dit projekt, medmindre du udtrykkeligt angiver `--force`.
75
96
 
76
- ### 2. Kør Verifikation & Tjek Evidens
97
+ ### 3. Kør Verifikation & Tjek Evidens
98
+
77
99
  Når du eller agenten arbejder på en opgave i projektet, afvikles gauntlettet direkte:
78
100
 
79
101
  ```bash
80
102
  # Kør gauntlet og forseg evidens for en opgave:
81
- npx xgauntlet verify --task-id 001-bootstrap
103
+ xgauntlet verify --task-id 001-bootstrap
82
104
 
83
105
  # Valider kildetræets integritet mod rapporten (drift-kontrol):
84
- npx xgauntlet check-evidence
106
+ xgauntlet check-evidence
85
107
 
86
108
  # Valider opgavespecifikation og CONTEXT.md definitionsformat:
87
- npx xgauntlet check-spec
109
+ xgauntlet check-spec
88
110
 
89
111
  # Kør miljø- og toolchain-diagnostik:
90
- npx xgauntlet doctor
112
+ xgauntlet doctor
91
113
  ```
92
114
 
93
- > [!IMPORTANT]
94
- > **🚪 Zero Lock-in & Ren Afinstallation:**
95
- > Alt ligger lokalt i dit Git-træ. xGauntlet efterlader ingen globale dæmoner, baggrundsprocesser eller systemændringer på din maskine.
115
+ ---
116
+
117
+ ### 🧹 Afinstallation & Oprydning
118
+
119
+ xGauntlet kører efter **Zero Lock-in** princippet. Der er ingen baggrundsdæmoner, ingen systemd services og ingen skjulte registre:
120
+
121
+ #### 1. Afkobl et projekt (Kirurgisk In-Repo Oprydning)
122
+ For at fjerne xGauntlet fra et projekt, fjerner du blot de specifikke styringsfiler. Dine egne kodefiler, egne tasks og egne ADR'er berøres ikke:
123
+
124
+ ```bash
125
+ # Fjern xGauntlets kontrolfiler i projektet:
126
+ rm -f gauntlet.toml .agents/hooks.json verification-report.json evidence.md
127
+
128
+ # (Valgfrit) Fjern de oprindeligt scaffoldede skabeloner, hvis du ikke ønsker at bevare dem:
129
+ rm -f tasks/001-bootstrap.md docs/adr/0001-package-by-feature-architecture.md
130
+ ```
131
+
132
+ #### 2. Afinstaller værktøjet fra maskinen (Global Cleanup)
133
+ Hvis du ønsker at fjerne selve `xgauntlet`-programmet fra dit styresystem:
134
+
135
+ ```bash
136
+ npm uninstall -g xgauntlet
137
+
138
+ # Hvis du tidligere har afviklet flygtigt via npx, slettes den lokale cache-binær:
139
+ rm -rf ~/.cache/xgauntlet
140
+ ```
96
141
 
97
142
  ---
98
143
 
@@ -102,6 +147,9 @@ npx xgauntlet doctor
102
147
  1. **Metodiske retningslinjer (Agent Skills)**: Proceskrav (såsom sokratisk grilling, TDD-disciplin og arkitektur-review), som agenten instrueres i at følge (`grill-me`, `old-coder`, `code-review`).
103
148
  2. **Håndhævede software-gates (CLI & In-Memory WASM)**: Deterministiske kontrolpunkter i Rust-koden (`check-spec`, pre-invocation WASM hook, `verify`, `check-evidence` og `check-release`), der fysisk blokerer uautoriserede handlinger med exit-koder og multi-digest integritetskontrol.
104
149
 
150
+ > [!NOTE]
151
+ > **Bemærk om tilstande og Zero-Daemon:** Systemet styres ikke af en global database eller baggrundsdæmon, men af diskrete, uafhængige CLI-kald (`sub-3ms` koldstart). Opgavestatus (`DRAFT`, `ACTIVE`, `PASSED`, `DONE`) er forankret direkte i de enkelte task-filers OKF YAML-frontmatter (`tasks/*.md`), som evalueres on-demand af de respektive gates uden behov for en tilstandsmaskine-service.
152
+
105
153
  ### Oversigt over udviklingsflowet
106
154
 
107
155
  ```text
@@ -127,6 +175,83 @@ npx xgauntlet doctor
127
175
  (Versionssynkronisering, CHANGELOG.md og ADR-krydsreferencer)
128
176
  ```
129
177
 
178
+ ### Pipelinen trin for trin
179
+
180
+ #### 1. Idé- og kontekstafklaring
181
+ * **Type**: Metodisk proces (Agent Skill)
182
+ * **Hvad der sker**: Før der skrives specifikationer eller kode, aktiveres grilling-skills (`grill-me` eller `grill-with-docs`). Agenten udfordrer antagelser, identificerer risici og afstemmer planer mod eksisterende arkitektur og ADR'er.
183
+ * **Kontrolpunkt**:
184
+ * *Hvem godkender*: Udvikleren i direkte dialog.
185
+ * *Hvordan*: Dialogen udmønter sig i, at agenten opdaterer `CONTEXT.md` og eventuelt udarbejder en ny ADR i `docs/adr/`.
186
+ * *Håndhævelse i koden*: Dette er et instruktionskrav til agenten. Der findes ingen automatisk kodelås, der forhindrer oprettelse af tasks uden forudgående grilling; disciplinen bæres af udviklerens sparring med agenten. WASM-policykernen tillader udtrykkeligt skrivning til styringsdokumenter (`tasks/`, `spec.md`, `CONTEXT.md`, `CODING_STANDARDS.md`, `docs/`) uanset opgavestatus.
187
+
188
+ #### 2. Specifikation & Opgavebinding
189
+ * **Type**: Hård software-gate
190
+ * **Hvad der sker**: Opgaven defineres formelt i en markdown-fil under `tasks/` (f.eks. `tasks/001-bootstrap.md`) med eksplicit OKF v0.2 frontmatter samt eksekverbare acceptkriterier.
191
+ * **Kontrolpunkt**: Spec Gate (`xgauntlet check-spec`)
192
+ * *Hvem godkender*: Shift-left valideringsmotoren i Rust (`crates/xgauntlet-core/src/features/tasks/validator.rs`).
193
+ * *Hvordan*: CLI-værktøjet parser task-filerne og validerer:
194
+ 1. Valid OKF v0.2 YAML-frontmatter (`type: Task Package`, `status`, `title`, `generated`).
195
+ 2. Eksistensen af sektionen `## 🎯 Formål` (eller `## Purpose`).
196
+ 3. Eksistensen af eksekverbare acceptkriterier (`- [ ]`).
197
+ 4. Eksistensen af negative forretningsregler under `## 🚫 Must NOT`.
198
+ 5. At definitionerne i `CONTEXT.md` følger Aristoteles' formel (`**Term**:\n<Definition>\n_Avoid_: <synonymer>`).
199
+ * *Håndhævelse i koden*: Returnerer exit-kode 1, hvis en task-fil mangler, er fejlbehæftet eller overtræder formateringskravene.
200
+
201
+ #### 3. Implementering under Zero-Ambient-Authority Policy (Værkstedet)
202
+ * **Type**: Metodisk TDD + Hård runtime-beskyttelse
203
+ * **Hvad der sker**: Koden skrives efter Red/Green TDD-princippet (først en fejlende test, derefter den minimale kode, der løser den, og til sidst refaktorisering).
204
+ * **Kontrolpunkt**: Pre-Invocation WASM Hook & Anti-Tamper Guard
205
+ * *Hvem godkender*: Indlejret Wasmtime policy-motor (`gauntlet_policy.wasm` bygget fra `wit/gauntlet_policy.wit`) og harness-adaptere (`crates/xgauntlet-core/src/features/adapters/`).
206
+ * *Hvordan*: Agentens værktøjskald (tool calls) overvåges deterministisk ved hvert kald via `xgauntlet hook <harness>`.
207
+ * *Håndhævelse i koden*:
208
+ * **Zero Ambient Authority**: WebAssembly-modulet har absolut nul adgang til værtsfilsystem, netværk, systemur eller tilfældighedskilder.
209
+ * Beskyttede produktions- og kildestier (`src/`, `tests/`, `crates/`, `packages/`, `.agents/`) kan **ikke** modificeres, medmindre der findes en aktiv task (`tasks/*.md`) med status `ACTIVE`.
210
+ * Destruktive kommandoer som `git push`, `git reset --hard`, `git clean -f`, `git branch -D` og `rm -rf /` blokeres hårdt (`reason_code: 4039`).
211
+ * Linux Bubblewrap (`bwrap`) er erstattet til fordel for WebAssembly + matematisk invariantkontrol (pre/post manifest-digests i verifikationspipelinen), hvilket sikrer fuld 100% krydsplatform understøttelse på tværs af Linux, macOS og Windows 11 uden kerne-afhængigheder eller root-rettigheder.
212
+ * *Bemærk om TDD*: Selve rækkefølgen (Red før Green) registreres ikke historisk af test-runneren; det er en metodisk adfærd instrueret via agent-skills.
213
+
214
+ #### 4. Flerlags Verifikation
215
+ * **Type**: Hård software-gate
216
+ * **Hvad der sker**: Fuld automatisk eksekvering af projektets test- og analysesuiter med matematisk beskyttelse mod selvmutation og generering af forseglede rapporter.
217
+ * **Kontrolpunkt**: Diagnostic & Execution Engine (`xgauntlet verify`)
218
+ * *Hvem godkender*: Verifikationspipelinen i Rust (`crates/xgauntlet-core/src/features/gauntlet/pipeline.rs`).
219
+ * *Hvordan*: Runneren eksekverer de lag, der er defineret i `gauntlet.toml` (f.eks. Typer, Linters, Tests, Invarianter & Mutationer) med fail-closed semantik og timeouts:
220
+ 1. **Pre-manifest beregning**: Beregner kildetræets Git-blob OID digests forud for testkørsel.
221
+ 2. **Lag-eksekvering**: Kører lagene sekventielt; ved fejl parses output til Actionable Diagnostics (`DiagnosticParser`).
222
+ 3. **Post-manifest & Anti-Tamper**: Genberegner manifest efter kørsel; hvis kildekode eller testassertions muteres undervejs, afvises kørslen øjeblikkeligt (`verify_self_mutation`).
223
+ * *Håndhævelse i koden*: Alle obligatoriske diagnostiske lag skal bestå (`exit_code == 0`). Ved succes genereres atomart `verification-report.json` (Schema v2) og `evidence.md` med deterministiske SHA-256 digests over kildetræ (`source_manifest_digest`), konfiguration, opgave og politikker.
224
+
225
+ #### 5. Review mod Kodestandarder
226
+ * **Type**: Hybrid gate (Agent Skill + Udvikleraccept)
227
+ * **Hvad der sker**: Den implementerede løsning auditeres mod arkitekturretningslinjer og regler i `CODING_STANDARDS.md`.
228
+ * **Kontrolpunkt**: Standards Review (`code-review` skill)
229
+ * *Hvem godkender*: Udvikleren assisteret af agentens review-skill.
230
+ * *Hvordan*: Agenten gennemgår diff'en op mod kodestandarderne og fremhæver eventuelle arkitekturbrud, manglende fejlhåndtering eller navngivningsfejl.
231
+ * *Håndhævelse i koden*: Gaten er procesmæssig og beror på agentens review-rapport kombineret med udviklerens godkendelse.
232
+
233
+ #### 6. Drift- og Integritetskontrol (Two-Tier Model)
234
+ * **Type**: Hård software-gate
235
+ * **Hvad der sker**: Verificering af, at kildekoden og arbejdstræet ikke er blevet manipuleret eller er driftet efter testkørslen.
236
+ * **Kontrolpunkt**: Drift Verification (`xgauntlet check-evidence`)
237
+ * *Hvem godkender*: Drift-detektionsmotoren (`crates/xgauntlet-core/src/features/evidence/drift.rs`).
238
+ * *Hvordan*: Værktøjet genberegner det aktuelle kildetræs workspace-manifest og sammenligner det direkte med værdierne i `verification-report.json`.
239
+ * *Håndhævelse i koden*:
240
+ * **Tier 1 (Lokal drift-kontrol)**: Er blot én byte ændret i kildetræ, opgave, config eller politik efter `verify`, afvises tjekket med en specifik `DriftViolation`. Beregningen benytter Git-tree/blob OID-hashes, hvilket gør driftkontrollen fuldstændig immun over for linjeskift-forskelle (LF vs. CRLF) på tværs af styresystemer.
241
+ * **Tier 2 (Attestation i CI)**: Jf. [ADR 0005](docs/adr/0005-two-tier-verification-and-attestation-model.md) adskilles lokal verifikation fra uafviselig CI-attestering. I beskyttede CI-miljøer genereres en kryptografisk in-toto/DSSE-attest (Sigstore/OIDC), som forsegler kildens herkomst forud for release.
242
+
243
+ #### 7. Release Readiness
244
+ * **Type**: Hård software-gate
245
+ * **Hvad der sker**: Koden klargøres til release og merge ved at kontrollere synkronisering mellem versioner, ændringslog og dokumentation.
246
+ * **Kontrolpunkt**: Release Gate (`xgauntlet check-release`)
247
+ * *Hvem godkender*: Release-orkestratoren (`crates/xgauntlet-core/src/features/release/engine.rs`).
248
+ * *Hvordan*: Værktøjet udfører tre specifikke tjek:
249
+ 1. **Versionskonsistens**: Versionsnumre skal matche på tværs af projektets manifests (`Cargo.toml`, `package.json`, `pyproject.toml`).
250
+ 2. **Changelog-synkronisering**: `CHANGELOG.md` skal indeholde en sektion for den pågældende version.
251
+ 3. **ADR-referencer**: Samtlige ADR-dokumenter i `docs/adr/` skal være eksplicit refereret eller linket i enten `README.md` eller `spec.md`.
252
+ * *Håndhævelse i koden*: Returnerer exit-kode 1, hvis der er uoverensstemmelse i versionsnumre, manglende changelog-sektion eller forældreløse ADR-dokumenter.
253
+ * *Praktisk udviklerflag*: Med flaget `--allow-unreleased` tillader værktøjet sektionen `[Unreleased]` i `CHANGELOG.md` under løbende udvikling forud for den endelige versions-tagging.
254
+
130
255
  ### 👥 De 4 AI-roller & Session Handoff
131
256
 
132
257
  For at undgå uendelige review-loops (*bikeshedding*) og bevare et skarpt kontekstvindue, udleder `xGauntlet` automatisk den næste ingeniør-rolle:
package/bin/xgauntlet.js CHANGED
@@ -15,7 +15,7 @@ const __dirname = path.dirname(__filename);
15
15
  const pkgJsonPath = path.resolve(__dirname, '../package.json');
16
16
  const pkg = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf8'));
17
17
  const VERSION = pkg.version;
18
- const REPO = 'rolfmadsen/xGauntlet';
18
+ const REPO = 'rolfmadsen/xgauntlet';
19
19
 
20
20
  function getPlatformInfo() {
21
21
  const platform = os.platform();
@@ -166,7 +166,7 @@ async function main() {
166
166
  console.log(` Platform: ${platform} (${arch})`);
167
167
  console.log(` Version: v${VERSION}`);
168
168
  console.log(` Engine: NOT_FOUND (${err.message})`);
169
- console.log(' Notice: Run `cargo build --release` in xGauntlet repo or download v0.1.0 release.');
169
+ console.log(` Notice: Run \`cargo build --release\` in xGauntlet repo or download v${VERSION} release.`);
170
170
  process.exit(0);
171
171
  }
172
172
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xgauntlet",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Universal cross-platform verification gauntlet & tamper-proof policy sidecar for AI coding agents",
5
5
  "bin": {
6
6
  "xgauntlet": "bin/xgauntlet.js",
@@ -19,13 +19,13 @@
19
19
  },
20
20
  "repository": {
21
21
  "type": "git",
22
- "url": "git+https://github.com/rolfmadsen/xGauntlet.git",
22
+ "url": "git+https://github.com/rolfmadsen/xgauntlet.git",
23
23
  "directory": "packages/cli"
24
24
  },
25
25
  "bugs": {
26
- "url": "https://github.com/rolfmadsen/xGauntlet/issues"
26
+ "url": "https://github.com/rolfmadsen/xgauntlet/issues"
27
27
  },
28
- "homepage": "https://github.com/rolfmadsen/xGauntlet#readme",
28
+ "homepage": "https://github.com/rolfmadsen/xgauntlet#readme",
29
29
  "keywords": [
30
30
  "ai-agent",
31
31
  "verification",