feat: scaffold CLI and minimal issue list (task 0001)

Tracer bullet for gitea-axi: runnable npm package on axi-sdk-js with
gitea-js as the sole HTTP layer, ESM on Node 20+.

- issue list with --state/--limit, default fields, count line from
  X-Total-Count, type=issues guard, explicit empty state, and next-step
  suggestions
- repo context detection from the git origin remote (SSH/scp/HTTPS),
  tea credential discovery with the three-way login-matching split, and
  -R/--repo and --login overrides (flag > env > auto)
- token retrieval via tea login helper get: tea's login list JSON
  carries no token (ADR 0001 amended)
- full AxiError classification table with path-based 404 split, TOON
  errors on stdout, exit codes 0/1/2
- test mode (GITEA_AXI_API_URL/TOKEN/REPO) suppressing subprocesses,
  fixture server, and vitest suites driving the CLI seam (50 tests)
This commit is contained in:
2026-07-11 07:11:07 -04:00
parent 21a075f8cd
commit 38026f963d
34 changed files with 3892 additions and 0 deletions

27
test/fixtures/issues-closed.json vendored Normal file
View File

@@ -0,0 +1,27 @@
[
{
"id": 300,
"number": 37,
"title": "Crash on empty config",
"body": "Fixed in 1.2.1",
"state": "closed",
"is_locked": false,
"comments": 1,
"created_at": "2026-04-10T11:00:00Z",
"updated_at": "2026-04-12T11:00:00Z",
"closed_at": "2026-04-12T11:00:00Z",
"html_url": "http://gitea.example/testowner/testrepo/issues/37",
"url": "http://gitea.example/api/v1/repos/testowner/testrepo/issues/37",
"user": {
"id": 9,
"login": "contributor",
"full_name": "A Contributor",
"email": "contributor@example.com"
},
"labels": [],
"milestone": null,
"assignee": null,
"assignees": null,
"pull_request": null
}
]