feat(aiturk): one-click sign-in for AITURK IDE (1.0.0-beta.14)

The onboarding and provider settings get a Sign in button: the IDE shows a
short code, opens the turkservis.online approval page, and after approval
saves the TurkServis provider itself and hands a separate member key to the
AITURK CLI over stdin (aiturk login --key-stdin --keep-other-account).
Keys never reach the renderer, logs, process arguments or URLs. Pasting an
API key remains as the fallback.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B8ppceaR5s6cvMnm7uGRnf
This commit is contained in:
yilsemandClaude Opus 5.5 committed 2026-10-03 15:13:23 +03:00
1 parent fe0a45a84f
commit 25d8c18c10
13 files changed
+1938 -15

No files matched your search

+22
View File
@@ -323,6 +323,14 @@ declare global {
setDisableF12?: (blocked: boolean) => void
setPreviewShortcutActive?: (active: boolean) => void
openExternal: (url: string) => Promise<void>
/** One-click TurkServis sign-in (electron/aiturk-login.ts). API keys stay
* in the main process; only the short code and a status come back. */
aiturkLogin?: {
start: (scope?: { connectionId?: string; profile?: string }) => Promise<AiturkLoginStart>
poll: () => Promise<AiturkLoginPoll>
cancel: () => Promise<{ ok: true }>
overwriteCli: () => Promise<{ cli: AiturkCliStatus }>
}
/** One-shot loopback callback listener for MCP OAuth against remote
* backends (electron/mcp-oauth-callback-ipc.ts): bind on THIS machine,
* pass redirectUri as client_redirect_uri to mcp.servers.oauth.start,
@@ -1212,6 +1220,20 @@ export type DesktopBootstrapEvent =
docsUrl: string
}
export type AiturkCliStatus = 'ok' | 'missing' | 'outdated' | 'other-account' | 'unknown-account' | 'failed'
export interface AiturkLoginStart {
userCode: string
verificationUri: string
expiresAt: number
}
export type AiturkLoginPoll =
| { state: 'pending' }
| { state: 'expired' }
| { state: 'connected'; cli: AiturkCliStatus }
| { state: 'error'; error: string }
export interface HermesApiRequest {
path: string
method?: string