mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-10-12 03:51:01 +00:00
Add `GitHubRepositoryAccess`, the secret-free validated value describing a run's effective GitHub repository set: the primary origin repository plus the declared additional repositories with the shared permission map. - The constructor normalizes HTTPS and both SSH origin spellings to one primary slug, rejects a missing or non-GitHub origin when additional repositories are declared, rejects primary duplication and cross-owner additional repositories, and re-checks that interpolated permissions carry `contents = "read"|"write"` — exposing targets in deterministic primary-first order. - `resolve_shared_installation` resolves every target's App installation with the App JWT and requires one shared installation ID, naming the repository the App cannot see before any mint. - The installation-token mint now accepts a repository-name list; the single-repository entry points delegate to it, and the request body lists every projected name with the shared permissions. - `InstallationTokenSource::for_access` builds a source over the access value; caching, refresh margin, and single-flight are unchanged. - The scripted `MockHttpClient` and test RSA key move to a shared crate-internal `tests_mock` module. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| fabro-acp | ||
| fabro-agent | ||
| fabro-automation | ||
| fabro-checkpoint | ||
| fabro-dump | ||
| fabro-environment | ||
| fabro-github | ||
| fabro-graphviz | ||
| fabro-hooks | ||
| fabro-install | ||
| fabro-interview | ||
| fabro-llm | ||
| fabro-manifest | ||
| fabro-mcp | ||
| fabro-mcp-store | ||
| fabro-sandbox | ||
| fabro-slack | ||
| fabro-store | ||
| fabro-tool | ||
| fabro-tracker | ||
| fabro-validate | ||
| fabro-variable | ||
| fabro-workflow | ||
| fabro-workflow-version | ||