mirror of
https://github.com/stablyai/orca.git
synced 2026-10-30 08:37:49 +00:00
* feat(github): bind projects to a specific gh account Adds per-project `Repo.ghAccount` so repo-scoped gh calls (create-worktree issue/PR search, work items, hosted-review reads and mutations) run as the bound account via ephemeral child-env token injection instead of the globally active gh login. Multi-account resolution is capability-gated (gh >= 2.40) and fails closed when the bound account or host is unavailable; Project View stays ambient by design. Repository settings gains a section for selecting or clearing a keyring-backed account (shadcn `Select`), with mixed-version "not enforced" handling for older remote runtimes. Attached `-Rhost/owner/repo` forms are covered by the host-drift guard and its tests; es/ja/ko/zh catalogs carry the section's strings. `getLocalProjectGhExecOptions` centralizes the binding lookup so every gh execution path picks it up, including the Electron `hostedReview:*` handlers that previously stayed on the ambient login. `gh auth token` (a keyring read) is exempt from the rate-limit breaker gate so a tripped bucket cannot turn a bound-token resolve into a false "unavailable". The `ghAccount` update field and the two binding RPC methods live in the shared RPC params contract; the generated catalog is regenerated. Fixes #13612 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012B3QEP5iP4WGGEpPLtkHqA * fix(settings): make GitHub account refresh secondary * fix(github): satisfy strict casting quality checks * test(rpc): use runtime fixture for repo binding * fix(github): preserve project account for PR worktree lookups * test(rpc): avoid incomplete runtime settings fixture * fix(i18n): add GitHub account refresh label * fix(i18n): refresh runtime required catalog * fix(windows): preserve mobile patch bytes --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> Co-authored-by: Neil <neil@stably.ai>
22 lines
1.1 KiB
TypeScript
22 lines
1.1 KiB
TypeScript
import type { Store } from '../persistence'
|
|
import type { StatsCollector } from '../stats/collector'
|
|
import { registerGitHubAccountHandlers } from './github-account-handlers'
|
|
import { registerGitHubIssueMutationHandlers } from './github-issue-mutation-handlers'
|
|
import { registerGitHubPRMutationHandlers } from './github-pr-mutation-handlers'
|
|
import { registerGitHubPRReadHandlers } from './github-pr-read-handlers'
|
|
import { registerGitHubPRRefreshHandlers } from './github-pr-refresh-handlers'
|
|
import { registerGitHubPRReviewHandlers } from './github-pr-review-handlers'
|
|
import { registerGitHubProjectViewHandlers } from './github-project-view-handlers'
|
|
import { registerGitHubWorkItemHandlers } from './github-work-item-handlers'
|
|
|
|
export function registerGitHubHandlers(store: Store, stats: StatsCollector): void {
|
|
registerGitHubPRRefreshHandlers(store, stats)
|
|
registerGitHubWorkItemHandlers(store)
|
|
registerGitHubPRReadHandlers(store)
|
|
registerGitHubPRReviewHandlers(store)
|
|
registerGitHubPRMutationHandlers(store)
|
|
registerGitHubIssueMutationHandlers(store)
|
|
registerGitHubAccountHandlers(store)
|
|
registerGitHubProjectViewHandlers()
|
|
}
|