viba-cli 0.35.0 → 0.36.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/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +2 -2
- package/.next/fallback-build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error.html +2 -2
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found.html +2 -2
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/credentials/page/server-reference-manifest.json +7 -7
- package/.next/server/app/credentials/page.js.nft.json +1 -1
- package/.next/server/app/credentials/page_client-reference-manifest.js +1 -1
- package/.next/server/app/credentials.html +2 -2
- package/.next/server/app/credentials.rsc +3 -3
- package/.next/server/app/credentials.segments/_full.segment.rsc +3 -3
- package/.next/server/app/credentials.segments/_head.segment.rsc +1 -1
- package/.next/server/app/credentials.segments/_index.segment.rsc +1 -1
- package/.next/server/app/credentials.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/credentials.segments/credentials/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/credentials.segments/credentials.segment.rsc +1 -1
- package/.next/server/app/index.html +2 -2
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/new/page/server-reference-manifest.json +29 -29
- package/.next/server/app/new/page.js.nft.json +1 -1
- package/.next/server/app/new/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page/server-reference-manifest.json +29 -29
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/session/[sessionId]/page/server-reference-manifest.json +19 -19
- package/.next/server/app/session/[sessionId]/page.js.nft.json +1 -1
- package/.next/server/app/session/[sessionId]/page_client-reference-manifest.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__03608b11._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__03608b11._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0522f852._.js +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__d7106274._.js → [root-of-the-server]__34682cce._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__d7106274._.js.map → [root-of-the-server]__34682cce._.js.map} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__352d2b3c._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__4c388861._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__4c388861._.js.map +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__45338798._.js → [root-of-the-server]__5248b09d._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__45338798._.js.map → [root-of-the-server]__5248b09d._.js.map} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__59834c63._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__59834c63._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__90f3f366._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__90f3f366._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__9201693f._.js +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__f92d6383._.js → [root-of-the-server]__ddfe4bc9._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__f92d6383._.js.map → [root-of-the-server]__ddfe4bc9._.js.map} +1 -1
- package/.next/server/chunks/ssr/_0e1eddd4._.js +3 -0
- package/.next/server/chunks/ssr/{_9e495cd1._.js.map → _0e1eddd4._.js.map} +1 -1
- package/.next/server/chunks/ssr/_24abf4af._.js +3 -0
- package/.next/server/chunks/ssr/{_7dd8c91e._.js.map → _24abf4af._.js.map} +1 -1
- package/.next/server/chunks/ssr/src_app_credentials_page_tsx_63d8d34a._.js +1 -1
- package/.next/server/chunks/ssr/src_app_credentials_page_tsx_63d8d34a._.js.map +1 -1
- package/.next/server/chunks/ssr/src_app_session_[sessionId]_SessionPageClient_tsx_dab490d7._.js +1 -1
- package/.next/server/chunks/ssr/src_app_session_[sessionId]_SessionPageClient_tsx_dab490d7._.js.map +1 -1
- package/.next/server/chunks/ssr/src_components_GitRepoSelector_tsx_05c81afa._.js +1 -1
- package/.next/server/chunks/ssr/src_components_GitRepoSelector_tsx_05c81afa._.js.map +1 -1
- package/.next/server/pages/404.html +2 -2
- package/.next/server/pages/500.html +2 -2
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +48 -48
- package/.next/static/chunks/{5ad3d5d6c07c99cf.js → 55530e7372f637a5.js} +3 -3
- package/.next/static/chunks/{d9512842f72f81d6.js → 69f9cafe63e37b94.js} +2 -2
- package/.next/static/chunks/{f526d44cc764beed.js → 77fd18eb8db19b06.js} +1 -1
- package/.next/static/chunks/{21e669e5ae3894e2.js → 7d1a2e687efd0dae.js} +1 -1
- package/.next/static/chunks/{2bfa56d03bfd813d.js → 87a0daee0af7dbbb.js} +2 -2
- package/.next/static/chunks/{a681ffd5bce0ddd1.js → cbeda3911cb6ed6b.js} +1 -1
- package/package.json +1 -1
- package/.next/server/chunks/ssr/_7dd8c91e._.js +0 -3
- package/.next/server/chunks/ssr/_9e495cd1._.js +0 -3
- /package/.next/static/{xdnDnbUFZLle37zkWVRbd → ZQBlMiVA1p6iyepPKzRE3}/_buildManifest.js +0 -0
- /package/.next/static/{xdnDnbUFZLle37zkWVRbd → ZQBlMiVA1p6iyepPKzRE3}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{xdnDnbUFZLle37zkWVRbd → ZQBlMiVA1p6iyepPKzRE3}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/next/src/build/webpack/loaders/next-flight-loader/server-reference.ts","../../../../src/lib/credentials.ts","../../../../src/lib/agent-api-credentials.ts","../../../../node_modules/next/src/build/webpack/loaders/next-flight-loader/action-validate.ts","../../../../src/app/actions/credentials.ts","../../../../.next-internal/server/app/credentials/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nexport { registerServerReference } from 'react-server-dom-webpack/server'\n","import fs from 'fs/promises';\nimport os from 'os';\nimport path from 'path';\n\nconst SERVICE_NAME = 'viba-git-credentials';\nconst CREDENTIALS_FILE_NAME = 'credentials.json';\n\nexport type CredentialType = 'github' | 'gitlab';\n\nexport interface BaseCredential {\n id: string;\n type: CredentialType;\n username: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface GitHubCredential extends BaseCredential {\n type: 'github';\n}\n\nexport interface GitLabCredential extends BaseCredential {\n type: 'gitlab';\n serverUrl: string;\n}\n\nexport type Credential = GitHubCredential | GitLabCredential;\n\ntype CredentialMetadata = {\n id: string;\n type: CredentialType;\n username: string;\n serverUrl?: string;\n createdAt: string;\n updatedAt: string;\n keytarAccount?: string;\n};\n\ntype LegacyCredentialMetadata = {\n type: CredentialType;\n username: string;\n serverUrl?: string;\n createdAt: string;\n updatedAt: string;\n};\n\ntype KeytarModule = {\n getPassword(service: string, account: string): Promise<string | null>;\n setPassword(service: string, account: string, password: string): Promise<void>;\n deletePassword(service: string, account: string): Promise<boolean>;\n};\n\nlet keytarPromise: Promise<KeytarModule | null> | null = null;\nlet keytarUnavailableReason: string | null = null;\nlet didLogKeytarWarning = false;\n\nfunction keytarUnavailableMessage(): string {\n if (keytarUnavailableReason) {\n return `Secure credential storage is unavailable: ${keytarUnavailableReason}`;\n }\n return 'Secure credential storage is unavailable in this runtime.';\n}\n\nasync function loadKeytar(): Promise<KeytarModule | null> {\n if (!keytarPromise) {\n keytarPromise = import('keytar')\n .then((module) => (module.default ?? module) as KeytarModule)\n .catch((error: unknown) => {\n keytarUnavailableReason = error instanceof Error ? error.message : String(error);\n if (!didLogKeytarWarning) {\n didLogKeytarWarning = true;\n console.warn(`[credentials] ${keytarUnavailableMessage()}`);\n }\n return null;\n });\n }\n\n return keytarPromise;\n}\n\nasync function requireKeytar(): Promise<KeytarModule> {\n const keytar = await loadKeytar();\n if (!keytar) {\n throw new Error(keytarUnavailableMessage());\n }\n return keytar;\n}\n\nfunction generateId(): string {\n return `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;\n}\n\nfunction normalizeGitLabServerUrl(serverUrl: string): string {\n return serverUrl.trim().replace(/\\/$/, '');\n}\n\nfunction getDefaultKeytarAccount(id: string): string {\n return `credential-${id}`;\n}\n\nfunction getLegacyKeytarAccount(type: CredentialType): string {\n return `credential-${type}`;\n}\n\nfunction getKeytarAccountForMetadata(metadata: CredentialMetadata): string {\n return metadata.keytarAccount || getDefaultKeytarAccount(metadata.id);\n}\n\nfunction toCredential(metadata: CredentialMetadata): Credential {\n if (metadata.type === 'gitlab') {\n return {\n id: metadata.id,\n type: 'gitlab',\n username: metadata.username,\n serverUrl: metadata.serverUrl || 'https://gitlab.com',\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n };\n }\n\n return {\n id: metadata.id,\n type: 'github',\n username: metadata.username,\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n };\n}\n\nasync function getCredentialsFilePath(): Promise<string> {\n const vibaDir = path.join(os.homedir(), '.viba');\n await fs.mkdir(vibaDir, { recursive: true });\n return path.join(vibaDir, CREDENTIALS_FILE_NAME);\n}\n\nfunction isLegacyCredentialMetadata(value: unknown, expectedType: CredentialType): value is LegacyCredentialMetadata {\n if (!value || typeof value !== 'object') return false;\n\n const candidate = value as Record<string, unknown>;\n if (candidate.type !== expectedType) return false;\n if (typeof candidate.username !== 'string') return false;\n if (typeof candidate.createdAt !== 'string') return false;\n if (typeof candidate.updatedAt !== 'string') return false;\n\n if (expectedType === 'gitlab') {\n return typeof candidate.serverUrl === 'string';\n }\n\n return true;\n}\n\nfunction isCredentialMetadata(value: unknown): value is CredentialMetadata {\n if (!value || typeof value !== 'object') return false;\n\n const candidate = value as Record<string, unknown>;\n if (typeof candidate.id !== 'string' || !candidate.id.trim()) return false;\n if (candidate.type !== 'github' && candidate.type !== 'gitlab') return false;\n if (typeof candidate.username !== 'string') return false;\n if (typeof candidate.createdAt !== 'string') return false;\n if (typeof candidate.updatedAt !== 'string') return false;\n if (candidate.keytarAccount !== undefined && typeof candidate.keytarAccount !== 'string') return false;\n\n if (candidate.type === 'gitlab') {\n return typeof candidate.serverUrl === 'string';\n }\n\n return true;\n}\n\nasync function writeCredentialsMetadata(metadata: CredentialMetadata[]): Promise<void> {\n const credentialsFilePath = await getCredentialsFilePath();\n await fs.writeFile(credentialsFilePath, JSON.stringify(metadata, null, 2), 'utf-8');\n}\n\nasync function readCredentialsMetadata(): Promise<CredentialMetadata[]> {\n const credentialsFilePath = await getCredentialsFilePath();\n\n try {\n const content = await fs.readFile(credentialsFilePath, 'utf-8');\n const parsed = JSON.parse(content) as unknown;\n\n if (Array.isArray(parsed)) {\n return parsed.filter(isCredentialMetadata);\n }\n\n if (!parsed || typeof parsed !== 'object') {\n return [];\n }\n\n const legacyMapped = parsed as Record<string, unknown>;\n const migrated: CredentialMetadata[] = [];\n\n if (isLegacyCredentialMetadata(legacyMapped.github, 'github')) {\n const metadata = legacyMapped.github;\n migrated.push({\n id: generateId(),\n type: 'github',\n username: metadata.username,\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n keytarAccount: getLegacyKeytarAccount('github'),\n });\n }\n\n if (isLegacyCredentialMetadata(legacyMapped.gitlab, 'gitlab')) {\n const metadata = legacyMapped.gitlab;\n migrated.push({\n id: generateId(),\n type: 'gitlab',\n username: metadata.username,\n serverUrl: metadata.serverUrl,\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n keytarAccount: getLegacyKeytarAccount('gitlab'),\n });\n }\n\n if (migrated.length > 0) {\n await writeCredentialsMetadata(migrated);\n }\n\n return migrated;\n } catch (error) {\n if ((error as NodeJS.ErrnoException)?.code === 'ENOENT') {\n return [];\n }\n\n console.error('Failed to parse credentials metadata:', error);\n return [];\n }\n}\n\nexport async function getAllCredentials(): Promise<Credential[]> {\n const metadata = await readCredentialsMetadata();\n\n return metadata\n .map(toCredential)\n .sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));\n}\n\nexport async function getCredentialById(id: string): Promise<Credential | null> {\n const metadata = await readCredentialsMetadata();\n const found = metadata.find((credential) => credential.id === id);\n return found ? toCredential(found) : null;\n}\n\nexport async function getCredentialToken(id: string): Promise<string | null> {\n const metadata = await readCredentialsMetadata();\n const found = metadata.find((credential) => credential.id === id);\n if (!found) {\n return null;\n }\n\n const keytar = await loadKeytar();\n if (!keytar) {\n return null;\n }\n\n return keytar.getPassword(SERVICE_NAME, getKeytarAccountForMetadata(found));\n}\n\nasync function verifyGitHubToken(token: string): Promise<{ valid: boolean; username?: string; error?: string }> {\n try {\n const response = await fetch('https://api.github.com/user', {\n headers: {\n Authorization: `Bearer ${token}`,\n Accept: 'application/vnd.github+json',\n 'X-GitHub-Api-Version': '2022-11-28',\n },\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n return { valid: false, error: 'Invalid or expired GitHub token.' };\n }\n return { valid: false, error: `GitHub API returned ${response.status}.` };\n }\n\n const data = await response.json();\n const username = typeof data?.login === 'string' ? data.login : null;\n if (!username) {\n return { valid: false, error: 'GitHub API response did not include a username.' };\n }\n\n return { valid: true, username };\n } catch (error) {\n return { valid: false, error: `Failed to verify GitHub token: ${(error as Error).message}` };\n }\n}\n\nasync function verifyGitLabToken(serverUrl: string, token: string): Promise<{ valid: boolean; username?: string; error?: string }> {\n try {\n const normalizedUrl = normalizeGitLabServerUrl(serverUrl);\n const response = await fetch(`${normalizedUrl}/api/v4/user`, {\n headers: {\n 'PRIVATE-TOKEN': token,\n },\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n return { valid: false, error: 'Invalid or expired GitLab token.' };\n }\n return { valid: false, error: `GitLab API returned ${response.status}.` };\n }\n\n const data = await response.json();\n const username = typeof data?.username === 'string' ? data.username : null;\n if (!username) {\n return { valid: false, error: 'GitLab API response did not include a username.' };\n }\n\n return { valid: true, username };\n } catch (error) {\n return { valid: false, error: `Failed to verify GitLab token: ${(error as Error).message}` };\n }\n}\n\nexport async function createGitHubCredential(token: string): Promise<{ success: boolean; credential?: GitHubCredential; error?: string }> {\n const trimmedToken = token.trim();\n if (!trimmedToken) {\n return { success: false, error: 'GitHub token is required.' };\n }\n\n let keytar: KeytarModule;\n try {\n keytar = await requireKeytar();\n } catch (error) {\n return { success: false, error: (error as Error).message };\n }\n\n const verification = await verifyGitHubToken(trimmedToken);\n if (!verification.valid || !verification.username) {\n return { success: false, error: verification.error || 'Failed to verify GitHub token.' };\n }\n\n const metadata = await readCredentialsMetadata();\n const duplicate = metadata.find((credential) => (\n credential.type === 'github'\n && credential.username === verification.username\n ));\n\n if (duplicate) {\n return { success: false, error: `A GitHub credential for ${verification.username} already exists.` };\n }\n\n const id = generateId();\n const now = new Date().toISOString();\n const keytarAccount = getDefaultKeytarAccount(id);\n\n await keytar.setPassword(SERVICE_NAME, keytarAccount, trimmedToken);\n\n const created: CredentialMetadata = {\n id,\n type: 'github',\n username: verification.username,\n createdAt: now,\n updatedAt: now,\n keytarAccount,\n };\n\n metadata.push(created);\n await writeCredentialsMetadata(metadata);\n\n return {\n success: true,\n credential: {\n id: created.id,\n type: 'github',\n username: created.username,\n createdAt: created.createdAt,\n updatedAt: created.updatedAt,\n },\n };\n}\n\nexport async function createGitLabCredential(\n serverUrl: string,\n token: string,\n): Promise<{ success: boolean; credential?: GitLabCredential; error?: string }> {\n const normalizedServerUrl = normalizeGitLabServerUrl(serverUrl);\n const trimmedToken = token.trim();\n\n if (!normalizedServerUrl) {\n return { success: false, error: 'GitLab server URL is required.' };\n }\n\n try {\n new URL(normalizedServerUrl);\n } catch {\n return { success: false, error: 'GitLab server URL must be a valid URL.' };\n }\n\n if (!trimmedToken) {\n return { success: false, error: 'GitLab token is required.' };\n }\n\n let keytar: KeytarModule;\n try {\n keytar = await requireKeytar();\n } catch (error) {\n return { success: false, error: (error as Error).message };\n }\n\n const verification = await verifyGitLabToken(normalizedServerUrl, trimmedToken);\n if (!verification.valid || !verification.username) {\n return { success: false, error: verification.error || 'Failed to verify GitLab token.' };\n }\n\n const metadata = await readCredentialsMetadata();\n const duplicate = metadata.find((credential) => (\n credential.type === 'gitlab'\n && credential.username === verification.username\n && credential.serverUrl === normalizedServerUrl\n ));\n\n if (duplicate) {\n return {\n success: false,\n error: `A GitLab credential for ${verification.username} on ${normalizedServerUrl} already exists.`,\n };\n }\n\n const id = generateId();\n const now = new Date().toISOString();\n const keytarAccount = getDefaultKeytarAccount(id);\n\n await keytar.setPassword(SERVICE_NAME, keytarAccount, trimmedToken);\n\n const created: CredentialMetadata = {\n id,\n type: 'gitlab',\n username: verification.username,\n serverUrl: normalizedServerUrl,\n createdAt: now,\n updatedAt: now,\n keytarAccount,\n };\n\n metadata.push(created);\n await writeCredentialsMetadata(metadata);\n\n return {\n success: true,\n credential: {\n id: created.id,\n type: 'gitlab',\n username: created.username,\n serverUrl: created.serverUrl || normalizedServerUrl,\n createdAt: created.createdAt,\n updatedAt: created.updatedAt,\n },\n };\n}\n\nexport async function deleteCredential(id: string): Promise<{ success: boolean; error?: string }> {\n const metadata = await readCredentialsMetadata();\n const index = metadata.findIndex((credential) => credential.id === id);\n\n if (index === -1) {\n return { success: false, error: 'Credential not found.' };\n }\n\n const credential = metadata[index];\n metadata.splice(index, 1);\n await writeCredentialsMetadata(metadata);\n\n const keytar = await loadKeytar();\n if (keytar) {\n await keytar.deletePassword(SERVICE_NAME, getKeytarAccountForMetadata(credential));\n }\n\n return { success: true };\n}\n","import fs from 'fs/promises';\nimport os from 'os';\nimport path from 'path';\n\nconst SERVICE_NAME = 'viba-agent-api-credentials';\nconst CONFIGS_FILE_NAME = 'agent-api-configs.json';\nconst SUPPORTED_AGENT_APIS = ['codex'] as const;\n\nexport type AgentApiCredentialAgent = typeof SUPPORTED_AGENT_APIS[number];\n\nexport interface AgentApiCredential {\n agent: AgentApiCredentialAgent;\n apiProxy?: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface AgentApiCredentialSecret {\n agent: AgentApiCredentialAgent;\n apiKey: string;\n apiProxy?: string;\n}\n\ntype AgentApiCredentialMetadata = {\n agent: AgentApiCredentialAgent;\n apiProxy?: string;\n createdAt: string;\n updatedAt: string;\n keytarAccount?: string;\n};\n\ntype KeytarModule = {\n getPassword(service: string, account: string): Promise<string | null>;\n setPassword(service: string, account: string, password: string): Promise<void>;\n deletePassword(service: string, account: string): Promise<boolean>;\n};\n\nlet keytarPromise: Promise<KeytarModule | null> | null = null;\nlet keytarUnavailableReason: string | null = null;\nlet didLogKeytarWarning = false;\n\nfunction isSupportedAgentApi(value: string): value is AgentApiCredentialAgent {\n return SUPPORTED_AGENT_APIS.includes(value as AgentApiCredentialAgent);\n}\n\nfunction keytarUnavailableMessage(): string {\n if (keytarUnavailableReason) {\n return `Secure credential storage is unavailable: ${keytarUnavailableReason}`;\n }\n return 'Secure credential storage is unavailable in this runtime.';\n}\n\nasync function loadKeytar(): Promise<KeytarModule | null> {\n if (!keytarPromise) {\n keytarPromise = import('keytar')\n .then((module) => (module.default ?? module) as KeytarModule)\n .catch((error: unknown) => {\n keytarUnavailableReason = error instanceof Error ? error.message : String(error);\n if (!didLogKeytarWarning) {\n didLogKeytarWarning = true;\n console.warn(`[agent-api-credentials] ${keytarUnavailableMessage()}`);\n }\n return null;\n });\n }\n\n return keytarPromise;\n}\n\nasync function requireKeytar(): Promise<KeytarModule> {\n const keytar = await loadKeytar();\n if (!keytar) {\n throw new Error(keytarUnavailableMessage());\n }\n return keytar;\n}\n\nfunction getDefaultKeytarAccount(agent: AgentApiCredentialAgent): string {\n return `agent-api-${agent}`;\n}\n\nfunction getKeytarAccountForMetadata(metadata: AgentApiCredentialMetadata): string {\n return metadata.keytarAccount || getDefaultKeytarAccount(metadata.agent);\n}\n\nfunction normalizeApiProxy(apiProxy: string): string | undefined {\n const trimmed = apiProxy.trim();\n if (!trimmed) return undefined;\n\n try {\n // Validate and persist as-entered once it is a valid URL.\n new URL(trimmed);\n } catch {\n throw new Error('API proxy must be a valid URL.');\n }\n\n return trimmed;\n}\n\nfunction toAgentApiCredential(metadata: AgentApiCredentialMetadata): AgentApiCredential {\n return {\n agent: metadata.agent,\n apiProxy: metadata.apiProxy,\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n };\n}\n\nfunction isAgentApiCredentialMetadata(value: unknown): value is AgentApiCredentialMetadata {\n if (!value || typeof value !== 'object') return false;\n\n const candidate = value as Record<string, unknown>;\n if (typeof candidate.agent !== 'string' || !isSupportedAgentApi(candidate.agent)) return false;\n if (typeof candidate.createdAt !== 'string') return false;\n if (typeof candidate.updatedAt !== 'string') return false;\n if (candidate.apiProxy !== undefined && typeof candidate.apiProxy !== 'string') return false;\n if (candidate.keytarAccount !== undefined && typeof candidate.keytarAccount !== 'string') return false;\n\n return true;\n}\n\nasync function getConfigsFilePath(): Promise<string> {\n const vibaDir = path.join(os.homedir(), '.viba');\n await fs.mkdir(vibaDir, { recursive: true });\n return path.join(vibaDir, CONFIGS_FILE_NAME);\n}\n\nasync function writeAgentApiCredentialMetadata(metadata: AgentApiCredentialMetadata[]): Promise<void> {\n const configsFilePath = await getConfigsFilePath();\n await fs.writeFile(configsFilePath, JSON.stringify(metadata, null, 2), 'utf-8');\n}\n\nasync function readAgentApiCredentialMetadata(): Promise<AgentApiCredentialMetadata[]> {\n const configsFilePath = await getConfigsFilePath();\n\n try {\n const content = await fs.readFile(configsFilePath, 'utf-8');\n const parsed = JSON.parse(content) as unknown;\n\n if (Array.isArray(parsed)) {\n return parsed.filter(isAgentApiCredentialMetadata);\n }\n\n if (!parsed || typeof parsed !== 'object') {\n return [];\n }\n\n // Legacy map shape: { codex: { ... }, ... }\n const entries = Object.entries(parsed as Record<string, unknown>);\n const migrated = entries\n .filter(([agent]) => isSupportedAgentApi(agent))\n .map(([agent, value]) => {\n if (!value || typeof value !== 'object') return null;\n const candidate = value as Record<string, unknown>;\n if (candidate.agent === undefined) {\n return {\n ...candidate,\n agent,\n } as unknown;\n }\n return candidate;\n })\n .filter(isAgentApiCredentialMetadata);\n\n if (migrated.length > 0) {\n await writeAgentApiCredentialMetadata(migrated);\n }\n\n return migrated;\n } catch (error) {\n if ((error as NodeJS.ErrnoException)?.code === 'ENOENT') {\n return [];\n }\n\n console.error('Failed to parse agent API credential metadata:', error);\n return [];\n }\n}\n\nexport async function getAllAgentApiCredentials(): Promise<AgentApiCredential[]> {\n const metadata = await readAgentApiCredentialMetadata();\n return metadata\n .map(toAgentApiCredential)\n .sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));\n}\n\nexport async function createOrUpdateAgentApiCredential(\n agent: AgentApiCredentialAgent,\n apiKey: string,\n apiProxy: string,\n): Promise<{ success: boolean; credential?: AgentApiCredential; error?: string }> {\n if (!isSupportedAgentApi(agent)) {\n return { success: false, error: `Unsupported agent: ${agent}` };\n }\n\n const trimmedApiKey = apiKey.trim();\n if (!trimmedApiKey) {\n return { success: false, error: 'API key is required.' };\n }\n\n let normalizedApiProxy: string | undefined;\n try {\n normalizedApiProxy = normalizeApiProxy(apiProxy);\n } catch (error) {\n return { success: false, error: (error as Error).message };\n }\n\n let keytar: KeytarModule;\n try {\n keytar = await requireKeytar();\n } catch (error) {\n return { success: false, error: (error as Error).message };\n }\n\n const metadata = await readAgentApiCredentialMetadata();\n const now = new Date().toISOString();\n const index = metadata.findIndex((credential) => credential.agent === agent);\n const keytarAccount = index >= 0\n ? getKeytarAccountForMetadata(metadata[index])\n : getDefaultKeytarAccount(agent);\n\n await keytar.setPassword(SERVICE_NAME, keytarAccount, trimmedApiKey);\n\n if (index >= 0) {\n const existing = metadata[index];\n metadata[index] = {\n ...existing,\n apiProxy: normalizedApiProxy,\n updatedAt: now,\n keytarAccount,\n };\n } else {\n metadata.push({\n agent,\n apiProxy: normalizedApiProxy,\n createdAt: now,\n updatedAt: now,\n keytarAccount,\n });\n }\n\n await writeAgentApiCredentialMetadata(metadata);\n\n const saved = metadata.find((credential) => credential.agent === agent);\n if (!saved) {\n return { success: false, error: 'Failed to persist agent API credential.' };\n }\n\n return { success: true, credential: toAgentApiCredential(saved) };\n}\n\nexport async function deleteAgentApiCredential(\n agent: AgentApiCredentialAgent,\n): Promise<{ success: boolean; error?: string }> {\n if (!isSupportedAgentApi(agent)) {\n return { success: false, error: `Unsupported agent: ${agent}` };\n }\n\n const metadata = await readAgentApiCredentialMetadata();\n const index = metadata.findIndex((credential) => credential.agent === agent);\n if (index === -1) {\n return { success: false, error: 'Agent API credential not found.' };\n }\n\n const [removed] = metadata.splice(index, 1);\n await writeAgentApiCredentialMetadata(metadata);\n\n const keytar = await loadKeytar();\n if (keytar) {\n await keytar.deletePassword(SERVICE_NAME, getKeytarAccountForMetadata(removed));\n }\n\n return { success: true };\n}\n\nexport async function getAgentApiCredentialSecret(\n agent: AgentApiCredentialAgent,\n): Promise<AgentApiCredentialSecret | null> {\n if (!isSupportedAgentApi(agent)) {\n return null;\n }\n\n const metadata = await readAgentApiCredentialMetadata();\n const found = metadata.find((credential) => credential.agent === agent);\n if (!found) {\n return null;\n }\n\n const keytar = await loadKeytar();\n if (!keytar) {\n return null;\n }\n\n const apiKey = await keytar.getPassword(SERVICE_NAME, getKeytarAccountForMetadata(found));\n if (!apiKey) {\n return null;\n }\n\n return {\n agent: found.agent,\n apiKey,\n apiProxy: found.apiProxy,\n };\n}\n","// This function ensures that all the exported values are valid server actions,\n// during the runtime. By definition all actions are required to be async\n// functions, but here we can only check that they are functions.\nexport function ensureServerEntryExports(actions: any[]) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i]\n if (typeof action !== 'function') {\n throw new Error(\n `A \"use server\" file can only export async functions, found ${typeof action}.\\nRead more: https://nextjs.org/docs/messages/invalid-use-server-value`\n )\n }\n }\n}\n","'use server';\n\nimport {\n createGitHubCredential,\n createGitLabCredential,\n deleteCredential,\n getAllCredentials,\n} from '@/lib/credentials';\nimport type { Credential } from '@/lib/credentials';\nimport {\n createOrUpdateAgentApiCredential,\n deleteAgentApiCredential,\n getAllAgentApiCredentials,\n} from '@/lib/agent-api-credentials';\nimport type {\n AgentApiCredential,\n AgentApiCredentialAgent,\n} from '@/lib/agent-api-credentials';\n\ntype ListCredentialsResult =\n | { success: true; credentials: Credential[] }\n | { success: false; error: string };\n\nexport async function listCredentials(): Promise<ListCredentialsResult> {\n try {\n const credentials = await getAllCredentials();\n return { success: true, credentials };\n } catch (error) {\n console.error('Failed to list credentials:', error);\n return { success: false, error: 'Failed to load credentials.' };\n }\n}\n\ntype SaveCredentialResult =\n | { success: true; credential: Credential }\n | { success: false; error: string };\n\nexport async function saveGitHubCredential(token: string): Promise<SaveCredentialResult> {\n const result = await createGitHubCredential(token);\n if (!result.success || !result.credential) {\n return { success: false, error: result.error || 'Failed to save GitHub credential.' };\n }\n\n return { success: true, credential: result.credential };\n}\n\nexport async function saveGitLabCredential(serverUrl: string, token: string): Promise<SaveCredentialResult> {\n const result = await createGitLabCredential(serverUrl, token);\n if (!result.success || !result.credential) {\n return { success: false, error: result.error || 'Failed to save GitLab credential.' };\n }\n\n return { success: true, credential: result.credential };\n}\n\ntype ListAgentApiCredentialsResult =\n | { success: true; credentials: AgentApiCredential[] }\n | { success: false; error: string };\n\nexport async function listAgentApiCredentials(): Promise<ListAgentApiCredentialsResult> {\n try {\n const credentials = await getAllAgentApiCredentials();\n return { success: true, credentials };\n } catch (error) {\n console.error('Failed to list agent API credentials:', error);\n return { success: false, error: 'Failed to load agent API credentials.' };\n }\n}\n\ntype SaveAgentApiCredentialResult =\n | { success: true; credential: AgentApiCredential }\n | { success: false; error: string };\n\nexport async function saveAgentApiCredential(\n agent: AgentApiCredentialAgent,\n apiKey: string,\n apiProxy: string,\n): Promise<SaveAgentApiCredentialResult> {\n const result = await createOrUpdateAgentApiCredential(agent, apiKey, apiProxy);\n if (!result.success || !result.credential) {\n return { success: false, error: result.error || 'Failed to save agent API credential.' };\n }\n\n return { success: true, credential: result.credential };\n}\n\ntype RemoveCredentialResult =\n | { success: true }\n | { success: false; error: string };\n\nexport async function removeCredential(id: string): Promise<RemoveCredentialResult> {\n try {\n const result = await deleteCredential(id);\n if (!result.success) {\n return { success: false, error: result.error || 'Failed to remove credential.' };\n }\n\n return { success: true };\n } catch (error) {\n console.error('Failed to remove credential:', error);\n return { success: false, error: 'Failed to remove credential.' };\n }\n}\n\nexport async function removeAgentApiCredential(agent: AgentApiCredentialAgent): Promise<RemoveCredentialResult> {\n try {\n const result = await deleteAgentApiCredential(agent);\n if (!result.success) {\n return { success: false, error: result.error || 'Failed to remove agent API credential.' };\n }\n\n return { success: true };\n } catch (error) {\n console.error('Failed to remove agent API credential:', error);\n return { success: false, error: 'Failed to remove agent API credential.' };\n }\n}\n","export {listAgentApiCredentials as '00b4036ea2f98f15738c5b703ee699c2bc74ed090b'} from 'ACTIONS_MODULE0'\nexport {listCredentials as '0051a3b92b920bfcdb376cb6b6ed78967546f78dc8'} from 'ACTIONS_MODULE0'\nexport {removeAgentApiCredential as '4039d6b642806340055367f225542cd7e40aaae218'} from 'ACTIONS_MODULE0'\nexport {removeCredential as '408b2012a0ab921b59a00c1a6f7b4038ef09139290'} from 'ACTIONS_MODULE0'\nexport {saveAgentApiCredential as '702257d7c64268d734cf7034bc86f712341ddd9b6a'} from 'ACTIONS_MODULE0'\nexport {saveGitHubCredential as '409348d36c78507d631779e660b4b42cdd9bad596c'} from 'ACTIONS_MODULE0'\nexport {saveGitLabCredential as '60f7783080ede8def24e544e45972f78e85a68f145'} from 'ACTIONS_MODULE0'\n"],"names":["registerServerReference","ensureServerEntryExports","actions","i","length","action","Error"],"mappings":"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","ignoreList":[0,3]}
|
|
1
|
+
{"version":3,"sources":["../../../../node_modules/next/src/build/webpack/loaders/next-flight-loader/server-reference.ts","../../../../src/lib/credentials.ts","../../../../src/lib/agent-api-credentials.ts","../../../../node_modules/next/src/build/webpack/loaders/next-flight-loader/action-validate.ts","../../../../src/app/actions/credentials.ts","../../../../.next-internal/server/app/credentials/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nexport { registerServerReference } from 'react-server-dom-webpack/server'\n","import fs from 'fs/promises';\nimport os from 'os';\nimport path from 'path';\n\nconst SERVICE_NAME = 'viba-git-credentials';\nconst CREDENTIALS_FILE_NAME = 'credentials.json';\n\nexport type CredentialType = 'github' | 'gitlab';\n\nexport interface BaseCredential {\n id: string;\n type: CredentialType;\n username: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface GitHubCredential extends BaseCredential {\n type: 'github';\n}\n\nexport interface GitLabCredential extends BaseCredential {\n type: 'gitlab';\n serverUrl: string;\n}\n\nexport type Credential = GitHubCredential | GitLabCredential;\n\ntype CredentialMetadata = {\n id: string;\n type: CredentialType;\n username: string;\n serverUrl?: string;\n createdAt: string;\n updatedAt: string;\n keytarAccount?: string;\n};\n\ntype LegacyCredentialMetadata = {\n type: CredentialType;\n username: string;\n serverUrl?: string;\n createdAt: string;\n updatedAt: string;\n};\n\ntype KeytarModule = {\n getPassword(service: string, account: string): Promise<string | null>;\n setPassword(service: string, account: string, password: string): Promise<void>;\n deletePassword(service: string, account: string): Promise<boolean>;\n};\n\nlet keytarPromise: Promise<KeytarModule | null> | null = null;\nlet keytarUnavailableReason: string | null = null;\nlet didLogKeytarWarning = false;\n\nfunction keytarUnavailableMessage(): string {\n if (keytarUnavailableReason) {\n return `Secure credential storage is unavailable: ${keytarUnavailableReason}`;\n }\n return 'Secure credential storage is unavailable in this runtime.';\n}\n\nasync function loadKeytar(): Promise<KeytarModule | null> {\n if (!keytarPromise) {\n keytarPromise = import('keytar')\n .then((module) => (module.default ?? module) as KeytarModule)\n .catch((error: unknown) => {\n keytarUnavailableReason = error instanceof Error ? error.message : String(error);\n if (!didLogKeytarWarning) {\n didLogKeytarWarning = true;\n console.warn(`[credentials] ${keytarUnavailableMessage()}`);\n }\n return null;\n });\n }\n\n return keytarPromise;\n}\n\nasync function requireKeytar(): Promise<KeytarModule> {\n const keytar = await loadKeytar();\n if (!keytar) {\n throw new Error(keytarUnavailableMessage());\n }\n return keytar;\n}\n\nfunction generateId(): string {\n return `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;\n}\n\nfunction normalizeGitLabServerUrl(serverUrl: string): string {\n return serverUrl.trim().replace(/\\/$/, '');\n}\n\nfunction getDefaultKeytarAccount(id: string): string {\n return `credential-${id}`;\n}\n\nfunction getLegacyKeytarAccount(type: CredentialType): string {\n return `credential-${type}`;\n}\n\nfunction getKeytarAccountForMetadata(metadata: CredentialMetadata): string {\n return metadata.keytarAccount || getDefaultKeytarAccount(metadata.id);\n}\n\nfunction toCredential(metadata: CredentialMetadata): Credential {\n if (metadata.type === 'gitlab') {\n return {\n id: metadata.id,\n type: 'gitlab',\n username: metadata.username,\n serverUrl: metadata.serverUrl || 'https://gitlab.com',\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n };\n }\n\n return {\n id: metadata.id,\n type: 'github',\n username: metadata.username,\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n };\n}\n\nasync function getCredentialsFilePath(): Promise<string> {\n const vibaDir = path.join(os.homedir(), '.viba');\n await fs.mkdir(vibaDir, { recursive: true });\n return path.join(vibaDir, CREDENTIALS_FILE_NAME);\n}\n\nfunction isLegacyCredentialMetadata(value: unknown, expectedType: CredentialType): value is LegacyCredentialMetadata {\n if (!value || typeof value !== 'object') return false;\n\n const candidate = value as Record<string, unknown>;\n if (candidate.type !== expectedType) return false;\n if (typeof candidate.username !== 'string') return false;\n if (typeof candidate.createdAt !== 'string') return false;\n if (typeof candidate.updatedAt !== 'string') return false;\n\n if (expectedType === 'gitlab') {\n return typeof candidate.serverUrl === 'string';\n }\n\n return true;\n}\n\nfunction isCredentialMetadata(value: unknown): value is CredentialMetadata {\n if (!value || typeof value !== 'object') return false;\n\n const candidate = value as Record<string, unknown>;\n if (typeof candidate.id !== 'string' || !candidate.id.trim()) return false;\n if (candidate.type !== 'github' && candidate.type !== 'gitlab') return false;\n if (typeof candidate.username !== 'string') return false;\n if (typeof candidate.createdAt !== 'string') return false;\n if (typeof candidate.updatedAt !== 'string') return false;\n if (candidate.keytarAccount !== undefined && typeof candidate.keytarAccount !== 'string') return false;\n\n if (candidate.type === 'gitlab') {\n return typeof candidate.serverUrl === 'string';\n }\n\n return true;\n}\n\nasync function writeCredentialsMetadata(metadata: CredentialMetadata[]): Promise<void> {\n const credentialsFilePath = await getCredentialsFilePath();\n await fs.writeFile(credentialsFilePath, JSON.stringify(metadata, null, 2), 'utf-8');\n}\n\nasync function readCredentialsMetadata(): Promise<CredentialMetadata[]> {\n const credentialsFilePath = await getCredentialsFilePath();\n\n try {\n const content = await fs.readFile(credentialsFilePath, 'utf-8');\n const parsed = JSON.parse(content) as unknown;\n\n if (Array.isArray(parsed)) {\n return parsed.filter(isCredentialMetadata);\n }\n\n if (!parsed || typeof parsed !== 'object') {\n return [];\n }\n\n const legacyMapped = parsed as Record<string, unknown>;\n const migrated: CredentialMetadata[] = [];\n\n if (isLegacyCredentialMetadata(legacyMapped.github, 'github')) {\n const metadata = legacyMapped.github;\n migrated.push({\n id: generateId(),\n type: 'github',\n username: metadata.username,\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n keytarAccount: getLegacyKeytarAccount('github'),\n });\n }\n\n if (isLegacyCredentialMetadata(legacyMapped.gitlab, 'gitlab')) {\n const metadata = legacyMapped.gitlab;\n migrated.push({\n id: generateId(),\n type: 'gitlab',\n username: metadata.username,\n serverUrl: metadata.serverUrl,\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n keytarAccount: getLegacyKeytarAccount('gitlab'),\n });\n }\n\n if (migrated.length > 0) {\n await writeCredentialsMetadata(migrated);\n }\n\n return migrated;\n } catch (error) {\n if ((error as NodeJS.ErrnoException)?.code === 'ENOENT') {\n return [];\n }\n\n console.error('Failed to parse credentials metadata:', error);\n return [];\n }\n}\n\nexport async function getAllCredentials(): Promise<Credential[]> {\n const metadata = await readCredentialsMetadata();\n\n return metadata\n .map(toCredential)\n .sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));\n}\n\nexport async function getCredentialById(id: string): Promise<Credential | null> {\n const metadata = await readCredentialsMetadata();\n const found = metadata.find((credential) => credential.id === id);\n return found ? toCredential(found) : null;\n}\n\nexport async function getCredentialToken(id: string): Promise<string | null> {\n const metadata = await readCredentialsMetadata();\n const found = metadata.find((credential) => credential.id === id);\n if (!found) {\n return null;\n }\n\n const keytar = await loadKeytar();\n if (!keytar) {\n return null;\n }\n\n return keytar.getPassword(SERVICE_NAME, getKeytarAccountForMetadata(found));\n}\n\nasync function verifyGitHubToken(token: string): Promise<{ valid: boolean; username?: string; error?: string }> {\n try {\n const response = await fetch('https://api.github.com/user', {\n headers: {\n Authorization: `Bearer ${token}`,\n Accept: 'application/vnd.github+json',\n 'X-GitHub-Api-Version': '2022-11-28',\n },\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n return { valid: false, error: 'Invalid or expired GitHub token.' };\n }\n return { valid: false, error: `GitHub API returned ${response.status}.` };\n }\n\n const data = await response.json();\n const username = typeof data?.login === 'string' ? data.login : null;\n if (!username) {\n return { valid: false, error: 'GitHub API response did not include a username.' };\n }\n\n return { valid: true, username };\n } catch (error) {\n return { valid: false, error: `Failed to verify GitHub token: ${(error as Error).message}` };\n }\n}\n\nasync function verifyGitLabToken(serverUrl: string, token: string): Promise<{ valid: boolean; username?: string; error?: string }> {\n try {\n const normalizedUrl = normalizeGitLabServerUrl(serverUrl);\n const response = await fetch(`${normalizedUrl}/api/v4/user`, {\n headers: {\n 'PRIVATE-TOKEN': token,\n },\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n return { valid: false, error: 'Invalid or expired GitLab token.' };\n }\n return { valid: false, error: `GitLab API returned ${response.status}.` };\n }\n\n const data = await response.json();\n const username = typeof data?.username === 'string' ? data.username : null;\n if (!username) {\n return { valid: false, error: 'GitLab API response did not include a username.' };\n }\n\n return { valid: true, username };\n } catch (error) {\n return { valid: false, error: `Failed to verify GitLab token: ${(error as Error).message}` };\n }\n}\n\nexport async function createGitHubCredential(token: string): Promise<{ success: boolean; credential?: GitHubCredential; error?: string }> {\n const trimmedToken = token.trim();\n if (!trimmedToken) {\n return { success: false, error: 'GitHub token is required.' };\n }\n\n let keytar: KeytarModule;\n try {\n keytar = await requireKeytar();\n } catch (error) {\n return { success: false, error: (error as Error).message };\n }\n\n const verification = await verifyGitHubToken(trimmedToken);\n if (!verification.valid || !verification.username) {\n return { success: false, error: verification.error || 'Failed to verify GitHub token.' };\n }\n\n const metadata = await readCredentialsMetadata();\n const duplicate = metadata.find((credential) => (\n credential.type === 'github'\n && credential.username === verification.username\n ));\n\n if (duplicate) {\n return { success: false, error: `A GitHub credential for ${verification.username} already exists.` };\n }\n\n const id = generateId();\n const now = new Date().toISOString();\n const keytarAccount = getDefaultKeytarAccount(id);\n\n await keytar.setPassword(SERVICE_NAME, keytarAccount, trimmedToken);\n\n const created: CredentialMetadata = {\n id,\n type: 'github',\n username: verification.username,\n createdAt: now,\n updatedAt: now,\n keytarAccount,\n };\n\n metadata.push(created);\n await writeCredentialsMetadata(metadata);\n\n return {\n success: true,\n credential: {\n id: created.id,\n type: 'github',\n username: created.username,\n createdAt: created.createdAt,\n updatedAt: created.updatedAt,\n },\n };\n}\n\nexport async function createGitLabCredential(\n serverUrl: string,\n token: string,\n): Promise<{ success: boolean; credential?: GitLabCredential; error?: string }> {\n const normalizedServerUrl = normalizeGitLabServerUrl(serverUrl);\n const trimmedToken = token.trim();\n\n if (!normalizedServerUrl) {\n return { success: false, error: 'GitLab server URL is required.' };\n }\n\n try {\n new URL(normalizedServerUrl);\n } catch {\n return { success: false, error: 'GitLab server URL must be a valid URL.' };\n }\n\n if (!trimmedToken) {\n return { success: false, error: 'GitLab token is required.' };\n }\n\n let keytar: KeytarModule;\n try {\n keytar = await requireKeytar();\n } catch (error) {\n return { success: false, error: (error as Error).message };\n }\n\n const verification = await verifyGitLabToken(normalizedServerUrl, trimmedToken);\n if (!verification.valid || !verification.username) {\n return { success: false, error: verification.error || 'Failed to verify GitLab token.' };\n }\n\n const metadata = await readCredentialsMetadata();\n const duplicate = metadata.find((credential) => (\n credential.type === 'gitlab'\n && credential.username === verification.username\n && credential.serverUrl === normalizedServerUrl\n ));\n\n if (duplicate) {\n return {\n success: false,\n error: `A GitLab credential for ${verification.username} on ${normalizedServerUrl} already exists.`,\n };\n }\n\n const id = generateId();\n const now = new Date().toISOString();\n const keytarAccount = getDefaultKeytarAccount(id);\n\n await keytar.setPassword(SERVICE_NAME, keytarAccount, trimmedToken);\n\n const created: CredentialMetadata = {\n id,\n type: 'gitlab',\n username: verification.username,\n serverUrl: normalizedServerUrl,\n createdAt: now,\n updatedAt: now,\n keytarAccount,\n };\n\n metadata.push(created);\n await writeCredentialsMetadata(metadata);\n\n return {\n success: true,\n credential: {\n id: created.id,\n type: 'gitlab',\n username: created.username,\n serverUrl: created.serverUrl || normalizedServerUrl,\n createdAt: created.createdAt,\n updatedAt: created.updatedAt,\n },\n };\n}\n\nexport async function deleteCredential(id: string): Promise<{ success: boolean; error?: string }> {\n const metadata = await readCredentialsMetadata();\n const index = metadata.findIndex((credential) => credential.id === id);\n\n if (index === -1) {\n return { success: false, error: 'Credential not found.' };\n }\n\n const credential = metadata[index];\n metadata.splice(index, 1);\n await writeCredentialsMetadata(metadata);\n\n const keytar = await loadKeytar();\n if (keytar) {\n await keytar.deletePassword(SERVICE_NAME, getKeytarAccountForMetadata(credential));\n }\n\n return { success: true };\n}\n","import fs from 'fs/promises';\nimport os from 'os';\nimport path from 'path';\n\nconst SERVICE_NAME = 'viba-agent-api-credentials';\nconst CONFIGS_FILE_NAME = 'agent-api-configs.json';\nconst SUPPORTED_AGENT_APIS = ['codex'] as const;\n\nexport type AgentApiCredentialAgent = typeof SUPPORTED_AGENT_APIS[number];\n\nexport interface AgentApiCredential {\n agent: AgentApiCredentialAgent;\n apiProxy?: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface AgentApiCredentialSecret {\n agent: AgentApiCredentialAgent;\n apiKey: string;\n apiProxy?: string;\n}\n\ntype AgentApiCredentialMetadata = {\n agent: AgentApiCredentialAgent;\n apiProxy?: string;\n createdAt: string;\n updatedAt: string;\n keytarAccount?: string;\n};\n\ntype KeytarModule = {\n getPassword(service: string, account: string): Promise<string | null>;\n setPassword(service: string, account: string, password: string): Promise<void>;\n deletePassword(service: string, account: string): Promise<boolean>;\n};\n\nlet keytarPromise: Promise<KeytarModule | null> | null = null;\nlet keytarUnavailableReason: string | null = null;\nlet didLogKeytarWarning = false;\n\nfunction isSupportedAgentApi(value: string): value is AgentApiCredentialAgent {\n return SUPPORTED_AGENT_APIS.includes(value as AgentApiCredentialAgent);\n}\n\nfunction keytarUnavailableMessage(): string {\n if (keytarUnavailableReason) {\n return `Secure credential storage is unavailable: ${keytarUnavailableReason}`;\n }\n return 'Secure credential storage is unavailable in this runtime.';\n}\n\nasync function loadKeytar(): Promise<KeytarModule | null> {\n if (!keytarPromise) {\n keytarPromise = import('keytar')\n .then((module) => (module.default ?? module) as KeytarModule)\n .catch((error: unknown) => {\n keytarUnavailableReason = error instanceof Error ? error.message : String(error);\n if (!didLogKeytarWarning) {\n didLogKeytarWarning = true;\n console.warn(`[agent-api-credentials] ${keytarUnavailableMessage()}`);\n }\n return null;\n });\n }\n\n return keytarPromise;\n}\n\nasync function requireKeytar(): Promise<KeytarModule> {\n const keytar = await loadKeytar();\n if (!keytar) {\n throw new Error(keytarUnavailableMessage());\n }\n return keytar;\n}\n\nfunction getDefaultKeytarAccount(agent: AgentApiCredentialAgent): string {\n return `agent-api-${agent}`;\n}\n\nfunction getKeytarAccountForMetadata(metadata: AgentApiCredentialMetadata): string {\n return metadata.keytarAccount || getDefaultKeytarAccount(metadata.agent);\n}\n\nfunction normalizeApiProxy(apiProxy: string): string | undefined {\n const trimmed = apiProxy.trim();\n if (!trimmed) return undefined;\n\n try {\n // Validate and persist as-entered once it is a valid URL.\n new URL(trimmed);\n } catch {\n throw new Error('API proxy must be a valid URL.');\n }\n\n return trimmed;\n}\n\nfunction toAgentApiCredential(metadata: AgentApiCredentialMetadata): AgentApiCredential {\n return {\n agent: metadata.agent,\n apiProxy: metadata.apiProxy,\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n };\n}\n\nfunction isAgentApiCredentialMetadata(value: unknown): value is AgentApiCredentialMetadata {\n if (!value || typeof value !== 'object') return false;\n\n const candidate = value as Record<string, unknown>;\n if (typeof candidate.agent !== 'string' || !isSupportedAgentApi(candidate.agent)) return false;\n if (typeof candidate.createdAt !== 'string') return false;\n if (typeof candidate.updatedAt !== 'string') return false;\n if (candidate.apiProxy !== undefined && typeof candidate.apiProxy !== 'string') return false;\n if (candidate.keytarAccount !== undefined && typeof candidate.keytarAccount !== 'string') return false;\n\n return true;\n}\n\nasync function getConfigsFilePath(): Promise<string> {\n const vibaDir = path.join(os.homedir(), '.viba');\n await fs.mkdir(vibaDir, { recursive: true });\n return path.join(vibaDir, CONFIGS_FILE_NAME);\n}\n\nasync function writeAgentApiCredentialMetadata(metadata: AgentApiCredentialMetadata[]): Promise<void> {\n const configsFilePath = await getConfigsFilePath();\n await fs.writeFile(configsFilePath, JSON.stringify(metadata, null, 2), 'utf-8');\n}\n\nasync function readAgentApiCredentialMetadata(): Promise<AgentApiCredentialMetadata[]> {\n const configsFilePath = await getConfigsFilePath();\n\n try {\n const content = await fs.readFile(configsFilePath, 'utf-8');\n const parsed = JSON.parse(content) as unknown;\n\n if (Array.isArray(parsed)) {\n return parsed.filter(isAgentApiCredentialMetadata);\n }\n\n if (!parsed || typeof parsed !== 'object') {\n return [];\n }\n\n // Legacy map shape: { codex: { ... }, ... }\n const entries = Object.entries(parsed as Record<string, unknown>);\n const migrated = entries\n .filter(([agent]) => isSupportedAgentApi(agent))\n .map(([agent, value]) => {\n if (!value || typeof value !== 'object') return null;\n const candidate = value as Record<string, unknown>;\n if (candidate.agent === undefined) {\n return {\n ...candidate,\n agent,\n } as unknown;\n }\n return candidate;\n })\n .filter(isAgentApiCredentialMetadata);\n\n if (migrated.length > 0) {\n await writeAgentApiCredentialMetadata(migrated);\n }\n\n return migrated;\n } catch (error) {\n if ((error as NodeJS.ErrnoException)?.code === 'ENOENT') {\n return [];\n }\n\n console.error('Failed to parse agent API credential metadata:', error);\n return [];\n }\n}\n\nexport async function getAllAgentApiCredentials(): Promise<AgentApiCredential[]> {\n const metadata = await readAgentApiCredentialMetadata();\n return metadata\n .map(toAgentApiCredential)\n .sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));\n}\n\nexport async function createOrUpdateAgentApiCredential(\n agent: AgentApiCredentialAgent,\n apiKey: string,\n apiProxy: string,\n): Promise<{ success: boolean; credential?: AgentApiCredential; error?: string }> {\n if (!isSupportedAgentApi(agent)) {\n return { success: false, error: `Unsupported agent: ${agent}` };\n }\n\n const trimmedApiKey = apiKey.trim();\n if (!trimmedApiKey) {\n return { success: false, error: 'API key is required.' };\n }\n\n let normalizedApiProxy: string | undefined;\n try {\n normalizedApiProxy = normalizeApiProxy(apiProxy);\n } catch (error) {\n return { success: false, error: (error as Error).message };\n }\n\n let keytar: KeytarModule;\n try {\n keytar = await requireKeytar();\n } catch (error) {\n return { success: false, error: (error as Error).message };\n }\n\n const metadata = await readAgentApiCredentialMetadata();\n const now = new Date().toISOString();\n const index = metadata.findIndex((credential) => credential.agent === agent);\n const keytarAccount = index >= 0\n ? getKeytarAccountForMetadata(metadata[index])\n : getDefaultKeytarAccount(agent);\n\n await keytar.setPassword(SERVICE_NAME, keytarAccount, trimmedApiKey);\n\n if (index >= 0) {\n const existing = metadata[index];\n metadata[index] = {\n ...existing,\n apiProxy: normalizedApiProxy,\n updatedAt: now,\n keytarAccount,\n };\n } else {\n metadata.push({\n agent,\n apiProxy: normalizedApiProxy,\n createdAt: now,\n updatedAt: now,\n keytarAccount,\n });\n }\n\n await writeAgentApiCredentialMetadata(metadata);\n\n const saved = metadata.find((credential) => credential.agent === agent);\n if (!saved) {\n return { success: false, error: 'Failed to persist agent API credential.' };\n }\n\n return { success: true, credential: toAgentApiCredential(saved) };\n}\n\nexport async function deleteAgentApiCredential(\n agent: AgentApiCredentialAgent,\n): Promise<{ success: boolean; error?: string }> {\n if (!isSupportedAgentApi(agent)) {\n return { success: false, error: `Unsupported agent: ${agent}` };\n }\n\n const metadata = await readAgentApiCredentialMetadata();\n const index = metadata.findIndex((credential) => credential.agent === agent);\n if (index === -1) {\n return { success: false, error: 'Agent API credential not found.' };\n }\n\n const [removed] = metadata.splice(index, 1);\n await writeAgentApiCredentialMetadata(metadata);\n\n const keytar = await loadKeytar();\n if (keytar) {\n await keytar.deletePassword(SERVICE_NAME, getKeytarAccountForMetadata(removed));\n }\n\n return { success: true };\n}\n\nexport async function getAgentApiCredentialSecret(\n agent: AgentApiCredentialAgent,\n): Promise<AgentApiCredentialSecret | null> {\n if (!isSupportedAgentApi(agent)) {\n return null;\n }\n\n const metadata = await readAgentApiCredentialMetadata();\n const found = metadata.find((credential) => credential.agent === agent);\n if (!found) {\n return null;\n }\n\n const keytar = await loadKeytar();\n if (!keytar) {\n return null;\n }\n\n const apiKey = await keytar.getPassword(SERVICE_NAME, getKeytarAccountForMetadata(found));\n if (!apiKey) {\n return null;\n }\n\n return {\n agent: found.agent,\n apiKey,\n apiProxy: found.apiProxy,\n };\n}\n","// This function ensures that all the exported values are valid server actions,\n// during the runtime. By definition all actions are required to be async\n// functions, but here we can only check that they are functions.\nexport function ensureServerEntryExports(actions: any[]) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i]\n if (typeof action !== 'function') {\n throw new Error(\n `A \"use server\" file can only export async functions, found ${typeof action}.\\nRead more: https://nextjs.org/docs/messages/invalid-use-server-value`\n )\n }\n }\n}\n","'use server';\n\nimport {\n createGitHubCredential,\n createGitLabCredential,\n deleteCredential,\n getAllCredentials,\n} from '@/lib/credentials';\nimport type { Credential } from '@/lib/credentials';\nimport {\n createOrUpdateAgentApiCredential,\n deleteAgentApiCredential,\n getAllAgentApiCredentials,\n} from '@/lib/agent-api-credentials';\nimport type {\n AgentApiCredential,\n AgentApiCredentialAgent,\n} from '@/lib/agent-api-credentials';\n\ntype ListCredentialsResult =\n | { success: true; credentials: Credential[] }\n | { success: false; error: string };\n\nexport async function listCredentials(): Promise<ListCredentialsResult> {\n try {\n const credentials = await getAllCredentials();\n return { success: true, credentials };\n } catch (error) {\n console.error('Failed to list credentials:', error);\n return { success: false, error: 'Failed to load credentials.' };\n }\n}\n\ntype SaveCredentialResult =\n | { success: true; credential: Credential }\n | { success: false; error: string };\n\nexport async function saveGitHubCredential(token: string): Promise<SaveCredentialResult> {\n const result = await createGitHubCredential(token);\n if (!result.success || !result.credential) {\n return { success: false, error: result.error || 'Failed to save GitHub credential.' };\n }\n\n return { success: true, credential: result.credential };\n}\n\nexport async function saveGitLabCredential(serverUrl: string, token: string): Promise<SaveCredentialResult> {\n const result = await createGitLabCredential(serverUrl, token);\n if (!result.success || !result.credential) {\n return { success: false, error: result.error || 'Failed to save GitLab credential.' };\n }\n\n return { success: true, credential: result.credential };\n}\n\ntype ListAgentApiCredentialsResult =\n | { success: true; credentials: AgentApiCredential[] }\n | { success: false; error: string };\n\nexport async function listAgentApiCredentials(): Promise<ListAgentApiCredentialsResult> {\n try {\n const credentials = await getAllAgentApiCredentials();\n return { success: true, credentials };\n } catch (error) {\n console.error('Failed to list agent API credentials:', error);\n return { success: false, error: 'Failed to load agent API credentials.' };\n }\n}\n\ntype SaveAgentApiCredentialResult =\n | { success: true; credential: AgentApiCredential }\n | { success: false; error: string };\n\nexport async function saveAgentApiCredential(\n agent: AgentApiCredentialAgent,\n apiKey: string,\n apiProxy: string,\n): Promise<SaveAgentApiCredentialResult> {\n const result = await createOrUpdateAgentApiCredential(agent, apiKey, apiProxy);\n if (!result.success || !result.credential) {\n return { success: false, error: result.error || 'Failed to save agent API credential.' };\n }\n\n return { success: true, credential: result.credential };\n}\n\ntype RemoveCredentialResult =\n | { success: true }\n | { success: false; error: string };\n\nexport async function removeCredential(id: string): Promise<RemoveCredentialResult> {\n try {\n const result = await deleteCredential(id);\n if (!result.success) {\n return { success: false, error: result.error || 'Failed to remove credential.' };\n }\n\n return { success: true };\n } catch (error) {\n console.error('Failed to remove credential:', error);\n return { success: false, error: 'Failed to remove credential.' };\n }\n}\n\nexport async function removeAgentApiCredential(agent: AgentApiCredentialAgent): Promise<RemoveCredentialResult> {\n try {\n const result = await deleteAgentApiCredential(agent);\n if (!result.success) {\n return { success: false, error: result.error || 'Failed to remove agent API credential.' };\n }\n\n return { success: true };\n } catch (error) {\n console.error('Failed to remove agent API credential:', error);\n return { success: false, error: 'Failed to remove agent API credential.' };\n }\n}\n","export {listAgentApiCredentials as '00f788a987802139e46a67eba5adb590c5fcd38ef1'} from 'ACTIONS_MODULE0'\nexport {listCredentials as '0059895046be5f7d970c84173683f7146b15a9e827'} from 'ACTIONS_MODULE0'\nexport {removeAgentApiCredential as '40a0a853fa0d398367fdf97332b450ac737400fb43'} from 'ACTIONS_MODULE0'\nexport {removeCredential as '4041b80033a71531b74b20ff6b4fc7130ca65f48e7'} from 'ACTIONS_MODULE0'\nexport {saveAgentApiCredential as '70dfba5cb918f24cd0db4026a6167587584b87871c'} from 'ACTIONS_MODULE0'\nexport {saveGitHubCredential as '408d0413a7e2b53e29b3de1bb5edb388d7af7b6c3c'} from 'ACTIONS_MODULE0'\nexport {saveGitLabCredential as '60639821e5c6ec13c50b35cb0a4a2c8b8e0b1a10f5'} from 'ACTIONS_MODULE0'\n"],"names":["registerServerReference","ensureServerEntryExports","actions","i","length","action","Error"],"mappings":"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","ignoreList":[0,3]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[273,a=>{"use strict";var b=a.i(15271),c=a.i(98624),d=a.i(51817),e=a.i(54569),f=a.i(38642),g=a.i(37359);a.s([],62514),a.i(62514),a.s(["
|
|
1
|
+
module.exports=[273,a=>{"use strict";var b=a.i(15271),c=a.i(98624),d=a.i(51817),e=a.i(54569),f=a.i(38642),g=a.i(37359);a.s([],62514),a.i(62514),a.s(["0059895046be5f7d970c84173683f7146b15a9e827",()=>g.listCredentials,"0090143951524e8794de0cc16631ba5964247564ab",()=>f.getConfig,"00a74f384d2cda752e3b9ee67bd62fa7761af1ea26",()=>b.getHomeDirectory,"00f788a987802139e46a67eba5adb590c5fcd38ef1",()=>g.listAgentApiCredentials,"400ecae2d332e3a39884651beffb5643f337b4b8d7",()=>d.listSessions,"4012d46ff8dc147d17cdfec0fb516bc4915458b5c3",()=>e.deleteDraft,"401385154d1818ac3fd6d24d101fdab8f444a3d426",()=>e.listDrafts,"401f4da927b9b004d8ae001f6e4972df2e31119280",()=>b.listDirectories,"402da035968b51974a34c2569a8d8791dbe1fea1a6",()=>d.deleteSession,"40713aa6a336ac8c615c8a3af9bbc4759d63e57e82",()=>b.getBranches,"409308512ce8225139218969f6a5b2387b5924b603",()=>b.listPathEntries,"40a0b4f45c88615dd73729b50a1d177390d60a8ef9",()=>b.checkDirectoryAccessible,"40a6e747015bde8951b3191938cd2b11a15c8bc6d3",()=>b.installAgentCli,"40aee3a461f9a258460b0e82efb42d094277a5a60f",()=>b.checkIsGitRepo,"40b036e80ecb3baa03ca7965a3f3a5b18f30aeb901",()=>d.getSessionPrefillContext,"40b240f2771a3d3f6c0fe2a9fea3aea873e7aebd1d",()=>b.checkAgentCliInstalled,"40d07ec2171c1e97e44b1468f680cd155c123a366a",()=>c.resolveRepositoryByName,"40f204216c588467db4bc8834bb88d59a5d6b37b1b",()=>e.saveDraft,"40fb598c6dcac5f8751f764c103c9babd05dccca94",()=>f.updateConfig,"600cd715c465e8381b3eceacda785287694529a979",()=>b.checkoutBranch,"60689a38f117d0930a2e3775394416021c909d413c",()=>f.updateRepoSettings,"608c4ea4e0e4a3f42e6796721ae33c7cfe4df0ab73",()=>c.cloneRemoteRepository,"60b6f46da4e2273601a954e184e00805b9eed25ad7",()=>d.saveSessionLaunchContext,"70244e5765f29ad7d3e7617a7392c10b86b6372a60",()=>d.createSession,"7f1bb02edb0879eb875355b1623f93b1b21777b97f",()=>b.listRepoFiles,"7f2eabfa5ed19370d8dea29832e00b1e28baa3d07b",()=>b.getDefaultDevServerScript,"7f6243b34e46ab390207d9a1c2cb42b1dbd5567506",()=>b.saveAttachments,"7f8444b3b99875207f964f39accc0122511e2a0004",()=>b.startTtydProcess,"7fe0e9b26ba4f4015abe081aa37c8f1a28c9c74807",()=>b.getStartupScript],273)},45581,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]_keytar_23140f5c._.js"].map(b=>a.l(b))).then(()=>b(83034)))},44264,a=>{a.v(a=>Promise.resolve().then(()=>a(33405)))},37706,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__edf0aa7a._.js"].map(b=>a.l(b))).then(()=>b(78775)))}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__90f3f366._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../.next-internal/server/app/new/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["export {checkDirectoryAccessible as '
|
|
1
|
+
{"version":3,"sources":["../../../../.next-internal/server/app/new/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["export {checkDirectoryAccessible as '40a0b4f45c88615dd73729b50a1d177390d60a8ef9'} from 'ACTIONS_MODULE0'\nexport {listDirectories as '401f4da927b9b004d8ae001f6e4972df2e31119280'} from 'ACTIONS_MODULE0'\nexport {getHomeDirectory as '00a74f384d2cda752e3b9ee67bd62fa7761af1ea26'} from 'ACTIONS_MODULE0'\nexport {checkIsGitRepo as '40aee3a461f9a258460b0e82efb42d094277a5a60f'} from 'ACTIONS_MODULE0'\nexport {getBranches as '40713aa6a336ac8c615c8a3af9bbc4759d63e57e82'} from 'ACTIONS_MODULE0'\nexport {checkoutBranch as '600cd715c465e8381b3eceacda785287694529a979'} from 'ACTIONS_MODULE0'\nexport {startTtydProcess as '7f8444b3b99875207f964f39accc0122511e2a0004'} from 'ACTIONS_MODULE0'\nexport {getStartupScript as '7fe0e9b26ba4f4015abe081aa37c8f1a28c9c74807'} from 'ACTIONS_MODULE0'\nexport {getDefaultDevServerScript as '7f2eabfa5ed19370d8dea29832e00b1e28baa3d07b'} from 'ACTIONS_MODULE0'\nexport {listRepoFiles as '7f1bb02edb0879eb875355b1623f93b1b21777b97f'} from 'ACTIONS_MODULE0'\nexport {checkAgentCliInstalled as '40b240f2771a3d3f6c0fe2a9fea3aea873e7aebd1d'} from 'ACTIONS_MODULE0'\nexport {installAgentCli as '40a6e747015bde8951b3191938cd2b11a15c8bc6d3'} from 'ACTIONS_MODULE0'\nexport {cloneRemoteRepository as '608c4ea4e0e4a3f42e6796721ae33c7cfe4df0ab73'} from 'ACTIONS_MODULE1'\nexport {resolveRepositoryByName as '40d07ec2171c1e97e44b1468f680cd155c123a366a'} from 'ACTIONS_MODULE1'\nexport {createSession as '70244e5765f29ad7d3e7617a7392c10b86b6372a60'} from 'ACTIONS_MODULE2'\nexport {deleteSession as '402da035968b51974a34c2569a8d8791dbe1fea1a6'} from 'ACTIONS_MODULE2'\nexport {getSessionPrefillContext as '40b036e80ecb3baa03ca7965a3f3a5b18f30aeb901'} from 'ACTIONS_MODULE2'\nexport {listSessions as '400ecae2d332e3a39884651beffb5643f337b4b8d7'} from 'ACTIONS_MODULE2'\nexport {saveSessionLaunchContext as '60b6f46da4e2273601a954e184e00805b9eed25ad7'} from 'ACTIONS_MODULE2'\nexport {deleteDraft as '4012d46ff8dc147d17cdfec0fb516bc4915458b5c3'} from 'ACTIONS_MODULE3'\nexport {listDrafts as '401385154d1818ac3fd6d24d101fdab8f444a3d426'} from 'ACTIONS_MODULE3'\nexport {saveDraft as '40f204216c588467db4bc8834bb88d59a5d6b37b1b'} from 'ACTIONS_MODULE3'\nexport {getConfig as '0090143951524e8794de0cc16631ba5964247564ab'} from 'ACTIONS_MODULE4'\nexport {updateConfig as '40fb598c6dcac5f8751f764c103c9babd05dccca94'} from 'ACTIONS_MODULE4'\nexport {updateRepoSettings as '60689a38f117d0930a2e3775394416021c909d413c'} from 'ACTIONS_MODULE4'\nexport {listAgentApiCredentials as '00f788a987802139e46a67eba5adb590c5fcd38ef1'} from 'ACTIONS_MODULE5'\nexport {listCredentials as '0059895046be5f7d970c84173683f7146b15a9e827'} from 'ACTIONS_MODULE5'\nexport {listPathEntries as '409308512ce8225139218969f6a5b2387b5924b603'} from 'ACTIONS_MODULE0'\nexport {saveAttachments as '7f6243b34e46ab390207d9a1c2cb42b1dbd5567506'} from 'ACTIONS_MODULE0'\n"],"names":[],"mappings":"qCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OAYA,EAAA,EAAA,CAAA,CAAA,OAEA,EAAA,EAAA,CAAA,CAAA,OAKA,EAAA,EAAA,CAAA,CAAA,OAGA,EAAA,EAAA,CAAA,CAAA,OAGA,EAAA,EAAA,CAAA,CAAA"}
|