@gaud_erp/paperclip-github-manager 0.3.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.
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/ui/index.tsx", "../../src/constants.ts"],
4
+ "sourcesContent": ["import { useMemo, useState } from \"react\";\nimport {\n useHostContext,\n useHostLocation,\n useHostNavigation,\n usePluginAction,\n usePluginData,\n type PluginPageProps,\n type PluginSidebarProps,\n type PluginWidgetProps\n} from \"@paperclipai/plugin-sdk/ui\";\nimport { GITHUB_TOKEN_SECRET_KEY, PATHS } from \"../constants.js\";\nimport type { GitHubRepoSummary, ReposData, SyncOverviewData } from \"../types.js\";\n\ntype HealthData = {\n status: \"ok\" | \"degraded\" | \"error\";\n checkedAt: string;\n message?: string;\n login?: string;\n auth?: { configured: boolean; mode: \"pat\" | \"secret-ref\" | \"none\" };\n};\n\ntype WebhookConfigData = {\n configured: boolean;\n config: {\n repoFullName: string;\n events: string[];\n hookId?: number;\n configuredAt: string;\n inboundUrl: string;\n } | null;\n inboundUrl: string;\n};\n\nconst panelStyle: React.CSSProperties = {\n border: \"1px solid rgba(255,255,255,0.12)\",\n borderRadius: 8,\n padding: \"1rem\",\n display: \"grid\",\n gap: \"0.75rem\"\n};\n\nconst buttonStyle: React.CSSProperties = {\n padding: \"0.4rem 0.75rem\",\n borderRadius: 6,\n border: \"1px solid rgba(255,255,255,0.2)\",\n background: \"rgba(255,255,255,0.06)\",\n cursor: \"pointer\"\n};\n\nconst sidebarLinkClass =\n \"flex w-full items-center gap-2.5 px-3 py-2 text-[13px] font-medium transition-colors no-underline\";\nconst sidebarLinkActiveClass = \"bg-accent text-foreground\";\nconst sidebarLinkIdleClass = \"text-foreground/80 hover:bg-accent/50 hover:text-foreground\";\n\nconst NAV_ITEMS = [\n { path: PATHS.settings, label: \"Configura\u00E7\u00F5es\" },\n { path: PATHS.repos, label: \"Reposit\u00F3rios\" },\n { path: PATHS.pullRequests, label: \"Pull requests\" }\n] as const;\n\nfunction useGithubCompany() {\n const { companyId } = useHostContext();\n const companyParams = useMemo(\n () => (companyId ? { companyId } : undefined),\n [companyId]\n );\n return { companyId, companyParams };\n}\n\nfunction isPathActive(pathname: string, href: string): boolean {\n return pathname === href || pathname.startsWith(`${href}/`);\n}\n\n/** Sub-navega\u00E7\u00E3o do m\u00F3dulo GitHub (estilo Projects). */\nfunction GitHubModuleNav() {\n const nav = useHostNavigation();\n const { pathname } = useHostLocation();\n\n return (\n <nav style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.125rem\" }}>\n {NAV_ITEMS.map((item) => {\n const href = nav.resolveHref(item.path);\n const active = isPathActive(pathname, href);\n return (\n <a\n key={item.path}\n {...nav.linkProps(item.path)}\n className={`${sidebarLinkClass} ${active ? sidebarLinkActiveClass : sidebarLinkIdleClass}`}\n >\n <span className=\"flex-1 truncate\">{item.label}</span>\n </a>\n );\n })}\n </nav>\n );\n}\n\n/** Painel na sidebar principal (abaixo de Company), label GitHub. */\nexport function GitHubSidebarModule(_props: PluginSidebarProps) {\n return (\n <div style={{ display: \"grid\", gap: \"0.25rem\" }}>\n <div\n style={{\n padding: \"0.25rem 0.75rem\",\n fontSize: \"0.7rem\",\n fontWeight: 600,\n letterSpacing: \"0.04em\",\n textTransform: \"uppercase\",\n opacity: 0.55\n }}\n >\n GitHub\n </div>\n <GitHubModuleNav />\n </div>\n );\n}\n\n/** Sidebar ao navegar em rotas /github/*. */\nexport function GitHubRouteSidebar(_props: PluginSidebarProps) {\n const nav = useHostNavigation();\n\n return (\n <nav style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.25rem\", padding: \"0.5rem 0\" }}>\n <a\n {...nav.linkProps(\"/dashboard\")}\n className={`${sidebarLinkClass} ${sidebarLinkIdleClass}`}\n >\n <span className=\"flex-1 truncate\">\u2190 Company dashboard</span>\n </a>\n <div\n style={{\n padding: \"0.75rem 0.75rem 0.25rem\",\n fontSize: \"0.7rem\",\n fontWeight: 600,\n letterSpacing: \"0.04em\",\n textTransform: \"uppercase\",\n opacity: 0.55\n }}\n >\n GitHub\n </div>\n <GitHubModuleNav />\n </nav>\n );\n}\n\nfunction RepoTable({ repos }: { repos: GitHubRepoSummary[] }) {\n if (repos.length === 0) {\n return <div>Nenhum reposit\u00F3rio listado. Configure o token em Configura\u00E7\u00F5es.</div>;\n }\n\n return (\n <table style={{ width: \"100%\", borderCollapse: \"collapse\", fontSize: \"0.9rem\" }}>\n <thead>\n <tr style={{ textAlign: \"left\", opacity: 0.7 }}>\n <th style={{ padding: \"0.35rem 0\" }}>Reposit\u00F3rio</th>\n <th>Atualizado</th>\n <th>Visibilidade</th>\n </tr>\n </thead>\n <tbody>\n {repos.map((repo) => (\n <tr key={repo.id}>\n <td style={{ padding: \"0.35rem 0\" }}>\n <a href={repo.htmlUrl} target=\"_blank\" rel=\"noreferrer\">\n {repo.fullName}\n </a>\n </td>\n <td>{new Date(repo.updatedAt).toLocaleString()}</td>\n <td>{repo.private ? \"private\" : \"public\"}</td>\n </tr>\n ))}\n </tbody>\n </table>\n );\n}\n\nexport function DashboardWidget(_props: PluginWidgetProps) {\n const { companyParams } = useGithubCompany();\n const { data, loading, error } = usePluginData<HealthData>(\"health\", companyParams);\n const ping = usePluginAction(\"ping\");\n const nav = useHostNavigation();\n\n if (loading) return <div>Carregando status do GitHub...</div>;\n if (error) return <div>Erro do plugin: {error.message}</div>;\n\n return (\n <div style={{ display: \"grid\", gap: \"0.5rem\" }}>\n <strong>GitHub Manager</strong>\n <div>Status: {data?.status ?? \"unknown\"}</div>\n {data?.login ? <div>Conta: {data.login}</div> : null}\n {data?.message ? <div>{data.message}</div> : null}\n <div>Verificado: {data?.checkedAt ?? \"nunca\"}</div>\n {data?.status !== \"ok\" ? (\n <a {...nav.linkProps(PATHS.settings)} style={{ fontSize: \"0.85rem\" }}>\n Configurar token \u2192\n </a>\n ) : null}\n <button style={buttonStyle} onClick={() => void ping()}>\n Ping Worker\n </button>\n </div>\n );\n}\n\nexport function GitHubSettingsPage(_props: PluginPageProps) {\n const nav = useHostNavigation();\n const { companyId, companyParams } = useGithubCompany();\n const { data: health, loading, error, refresh } = usePluginData<HealthData>(\"health\", companyParams);\n const saveGithubToken = usePluginAction(\"saveGithubToken\");\n const saveGithubSecretRef = usePluginAction(\"saveGithubSecretRef\");\n const clearGithubAuth = usePluginAction(\"clearGithubAuth\");\n\n const [pat, setPat] = useState(\"\");\n const [secretRef, setSecretRef] = useState(\"\");\n const [busy, setBusy] = useState<string | null>(null);\n const [formMessage, setFormMessage] = useState<string | null>(null);\n\n async function runSave(label: string, fn: () => Promise<unknown>) {\n if (!companyId) {\n setFormMessage(\"Selecione uma company no header do Paperclip.\");\n return;\n }\n setBusy(label);\n setFormMessage(null);\n try {\n await fn();\n setPat(\"\");\n setFormMessage(`${label} \u2014 OK. Testando conex\u00E3o\u2026`);\n refresh();\n } catch (err) {\n setFormMessage(err instanceof Error ? err.message : String(err));\n } finally {\n setBusy(null);\n }\n }\n\n return (\n <div style={{ padding: \"1.5rem\", display: \"grid\", gap: \"1rem\", maxWidth: 720 }}>\n <header>\n <h1 style={{ margin: 0 }}>GitHub \u2014 Configura\u00E7\u00F5es</h1>\n <p style={{ margin: \"0.5rem 0 0\", opacity: 0.8 }}>\n Conecte um Personal Access Token (PAT) da GitHub. O token fica no estado do plugin por\n company (o Paperclip ainda n\u00E3o resolve <code>secrets.read-ref</code> em workers \u2014 PAP-2394).\n </p>\n </header>\n\n {!companyId ? (\n <p style={{ margin: 0, opacity: 0.8 }}>Selecione uma company no header do Paperclip.</p>\n ) : null}\n\n <section style={panelStyle}>\n <strong>1. Personal Access Token (recomendado)</strong>\n <p style={{ margin: 0, opacity: 0.85 }}>\n Gere um PAT em GitHub \u2192 Settings \u2192 Developer settings. Escopos: <code>repo</code>,{\" \"}\n <code>read:user</code>; para webhooks tamb\u00E9m <code>admin:repo_hook</code>.\n </p>\n <label style={{ display: \"grid\", gap: \"0.35rem\" }}>\n PAT\n <input\n type=\"password\"\n autoComplete=\"off\"\n value={pat}\n onChange={(e) => setPat(e.target.value)}\n placeholder=\"ghp_\u2026\"\n style={{ maxWidth: 480, padding: \"0.4rem 0.5rem\" }}\n />\n </label>\n <button\n style={buttonStyle}\n type=\"button\"\n disabled={Boolean(busy) || !companyId || !pat.trim()}\n onClick={() =>\n void runSave(\"Salvar token\", () =>\n saveGithubToken({ companyId: companyId!, token: pat })\n )\n }\n >\n Salvar token\n </button>\n </section>\n\n <section style={panelStyle}>\n <strong>2. Secret ID (futuro)</strong>\n <p style={{ margin: 0, opacity: 0.85 }}>\n Se voc\u00EA j\u00E1 criou um secret em <strong>Company \u2192 Settings</strong> (chave{\" \"}\n <code>{GITHUB_TOKEN_SECRET_KEY}</code>), copie o <strong>ID (UUID)</strong> do secret \u2014 n\u00E3o\n basta a chave. Quando o Paperclip reabilitar secret refs, este campo passar\u00E1 a funcionar\n sem colar o PAT aqui.\n </p>\n <a\n {...nav.linkProps(PATHS.companySecrets)}\n className={sidebarLinkClass}\n style={{ display: \"inline-flex\", width: \"auto\", marginTop: \"0.25rem\" }}\n >\n Abrir Company Settings\n </a>\n <label style={{ display: \"grid\", gap: \"0.35rem\", marginTop: \"0.75rem\" }}>\n Secret ID (UUID)\n <input\n value={secretRef}\n onChange={(e) => setSecretRef(e.target.value)}\n placeholder=\"00000000-0000-0000-0000-000000000000\"\n style={{ maxWidth: 480, padding: \"0.4rem 0.5rem\", fontFamily: \"monospace\" }}\n />\n </label>\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"0.5rem\" }}>\n <button\n style={buttonStyle}\n type=\"button\"\n disabled={Boolean(busy) || !companyId || !secretRef.trim()}\n onClick={() =>\n void runSave(\"Salvar Secret ID\", () =>\n saveGithubSecretRef({ companyId: companyId!, secretRef })\n )\n }\n >\n Salvar Secret ID\n </button>\n <button\n style={buttonStyle}\n type=\"button\"\n disabled={Boolean(busy) || !companyId}\n onClick={() =>\n void runSave(\"Limpar credenciais\", () => clearGithubAuth({ companyId: companyId! }))\n }\n >\n Limpar\n </button>\n </div>\n </section>\n\n <section style={panelStyle}>\n <strong>3. Testar conex\u00E3o</strong>\n {health?.auth ? (\n <div style={{ fontSize: \"0.85rem\", opacity: 0.75 }}>\n Credencial: {health.auth.configured ? health.auth.mode : \"nenhuma\"}\n </div>\n ) : null}\n {loading ? <div>Verificando...</div> : null}\n {error ? <div>Erro: {error.message}</div> : null}\n {health ? (\n <div style={{ display: \"grid\", gap: \"0.35rem\" }}>\n <div>\n Status: <strong>{health.status}</strong>\n {health.login ? ` \u2014 @${health.login}` : \"\"}\n </div>\n {health.message ? <div>{health.message}</div> : null}\n <div style={{ fontSize: \"0.85rem\", opacity: 0.7 }}>\n Verificado: {new Date(health.checkedAt).toLocaleString()}\n </div>\n </div>\n ) : null}\n <button\n style={buttonStyle}\n type=\"button\"\n disabled={Boolean(busy) || !companyId}\n onClick={() => refresh()}\n >\n Testar conex\u00E3o\n </button>\n {health?.status === \"ok\" ? (\n <p style={{ margin: 0, color: \"inherit\", opacity: 0.85 }}>\n Token OK. Use <a {...nav.linkProps(PATHS.repos)}>Reposit\u00F3rios</a> e{\" \"}\n <a {...nav.linkProps(PATHS.pullRequests)}>Pull requests</a>.\n </p>\n ) : null}\n </section>\n\n {formMessage ? <div>{formMessage}</div> : null}\n {busy ? <div>Executando: {busy}\u2026</div> : null}\n </div>\n );\n}\n\nexport function GitHubReposPage(_props: PluginPageProps) {\n const nav = useHostNavigation();\n const { companyId, companyParams } = useGithubCompany();\n const { data: health, loading: healthLoading, error: healthError } =\n usePluginData<HealthData>(\"health\", companyParams);\n const {\n data: reposData,\n loading: reposLoading,\n error: reposError,\n refresh: refreshRepos\n } = usePluginData<ReposData>(\"repos\", companyParams);\n const {\n data: webhookData,\n loading: webhookLoading,\n refresh: refreshWebhook\n } = usePluginData<WebhookConfigData>(\"webhookConfig\", companyParams);\n\n const setTrackedRepos = usePluginAction(\"setTrackedRepos\");\n const configureWebhook = usePluginAction(\"configureWebhook\");\n\n const [selectedRepo, setSelectedRepo] = useState(\"\");\n const [busy, setBusy] = useState<string | null>(null);\n const [actionMessage, setActionMessage] = useState<string | null>(null);\n\n const trackedSelection = selectedRepo || reposData?.repos[0]?.fullName || \"\";\n const needsToken = health?.status === \"degraded\" || health?.status === \"error\";\n\n async function runAction(label: string, fn: () => Promise<unknown>) {\n if (!companyId) {\n setActionMessage(\"Selecione uma company no host antes de continuar.\");\n return;\n }\n setBusy(label);\n setActionMessage(null);\n try {\n await fn();\n refreshRepos();\n refreshWebhook();\n setActionMessage(`${label} conclu\u00EDdo.`);\n } catch (err) {\n setActionMessage(err instanceof Error ? err.message : String(err));\n } finally {\n setBusy(null);\n }\n }\n\n return (\n <div style={{ padding: \"1.5rem\", display: \"grid\", gap: \"1rem\", maxWidth: 960 }}>\n <header>\n <h1 style={{ margin: 0 }}>GitHub \u2014 Reposit\u00F3rios</h1>\n <p style={{ margin: \"0.5rem 0 0\", opacity: 0.8 }}>\n Liste reposit\u00F3rios e escolha quais rastrear para sync e webhooks.\n </p>\n </header>\n\n {needsToken ? (\n <section style={panelStyle}>\n <strong>Token n\u00E3o configurado</strong>\n <p style={{ margin: 0 }}>\n <a {...nav.linkProps(PATHS.settings)}>Abrir Configura\u00E7\u00F5es</a> e salve um PAT da GitHub.\n </p>\n </section>\n ) : null}\n\n <section style={panelStyle}>\n <strong>Conex\u00E3o</strong>\n {healthLoading ? <div>Carregando...</div> : null}\n {healthError ? <div>Erro: {healthError.message}</div> : null}\n {health ? (\n <div>\n Status: {health.status}\n {health.login ? ` \u2014 ${health.login}` : \"\"}\n {health.message ? <div>{health.message}</div> : null}\n </div>\n ) : null}\n </section>\n\n <section style={panelStyle}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", gap: \"0.5rem\" }}>\n <strong>Reposit\u00F3rios</strong>\n <button style={buttonStyle} disabled={Boolean(busy)} onClick={() => refreshRepos()}>\n Atualizar lista\n </button>\n </div>\n {reposLoading ? <div>Carregando reposit\u00F3rios...</div> : null}\n {reposError ? <div>Erro: {reposError.message}</div> : null}\n {reposData?.message ? <div>{reposData.message}</div> : null}\n {reposData ? <RepoTable repos={reposData.repos} /> : null}\n {reposData?.repos.length ? (\n <label style={{ display: \"grid\", gap: \"0.35rem\" }}>\n Repo para webhook\n <select\n value={trackedSelection}\n onChange={(e) => setSelectedRepo(e.target.value)}\n style={{ maxWidth: 420 }}\n >\n {reposData.repos.map((repo) => (\n <option key={repo.id} value={repo.fullName}>\n {repo.fullName}\n </option>\n ))}\n </select>\n </label>\n ) : null}\n <button\n style={buttonStyle}\n disabled={Boolean(busy) || !trackedSelection || !companyId || needsToken}\n onClick={() =>\n void runAction(\"Salvar repos rastreados\", () =>\n setTrackedRepos({\n companyId,\n repos: reposData?.repos.slice(0, 5).map((r) => r.fullName) ?? []\n })\n )\n }\n >\n Rastrear top 5 repos\n </button>\n </section>\n\n <section style={panelStyle}>\n <strong>Webhooks</strong>\n {webhookLoading ? <div>Carregando configura\u00E7\u00E3o...</div> : null}\n <div style={{ fontSize: \"0.85rem\", opacity: 0.85 }}>\n URL inbound: <code>{webhookData?.inboundUrl ?? \"\u2014\"}</code>\n </div>\n {webhookData?.configured && webhookData.config ? (\n <div>\n Configurado para <strong>{webhookData.config.repoFullName}</strong> (hook{\" \"}\n {webhookData.config.hookId ?? \"?\"}) em{\" \"}\n {new Date(webhookData.config.configuredAt).toLocaleString()}\n </div>\n ) : (\n <div>Nenhum webhook registrado nesta company.</div>\n )}\n <button\n style={buttonStyle}\n disabled={Boolean(busy) || !companyId || !trackedSelection || needsToken}\n onClick={() =>\n void runAction(\"Registrar webhook\", () =>\n configureWebhook({\n companyId: companyId!,\n repoFullName: trackedSelection,\n events: [\"pull_request\", \"issues\"]\n })\n )\n }\n >\n Registrar webhook no GitHub\n </button>\n </section>\n\n {actionMessage ? <div>{actionMessage}</div> : null}\n {busy ? <div>Executando: {busy}...</div> : null}\n </div>\n );\n}\n\nexport function GitHubPullRequestsPage(_props: PluginPageProps) {\n const nav = useHostNavigation();\n const { companyId, companyParams } = useGithubCompany();\n const { data: health } = usePluginData<HealthData>(\"health\", companyParams);\n const {\n data: syncOverview,\n loading: syncLoading,\n error: syncError,\n refresh: refreshSync\n } = usePluginData<SyncOverviewData>(\"syncOverview\", companyParams);\n\n const syncAll = usePluginAction(\"syncAll\");\n const syncPullRequests = usePluginAction(\"syncPullRequests\");\n const syncIssues = usePluginAction(\"syncIssues\");\n\n const [busy, setBusy] = useState<string | null>(null);\n const [actionMessage, setActionMessage] = useState<string | null>(null);\n const needsToken = health?.status === \"degraded\" || health?.status === \"error\";\n\n async function runAction(label: string, fn: () => Promise<unknown>) {\n if (!companyId) {\n setActionMessage(\"Selecione uma company no host.\");\n return;\n }\n setBusy(label);\n setActionMessage(null);\n try {\n await fn();\n refreshSync();\n setActionMessage(`${label} conclu\u00EDdo.`);\n } catch (err) {\n setActionMessage(err instanceof Error ? err.message : String(err));\n } finally {\n setBusy(null);\n }\n }\n\n return (\n <div style={{ padding: \"1.5rem\", display: \"grid\", gap: \"1rem\", maxWidth: 960 }}>\n <header>\n <h1 style={{ margin: 0 }}>GitHub \u2014 Pull requests</h1>\n <p style={{ margin: \"0.5rem 0 0\", opacity: 0.8 }}>\n Sincronize PRs e issues abertos dos reposit\u00F3rios rastreados.\n </p>\n </header>\n\n {needsToken ? (\n <section style={panelStyle}>\n <a {...nav.linkProps(PATHS.settings)}>Configurar token GitHub</a>\n </section>\n ) : null}\n\n <section style={panelStyle}>\n <strong>Sync PRs / Issues</strong>\n {syncLoading ? <div>Carregando overview...</div> : null}\n {syncError ? <div>Erro: {syncError.message}</div> : null}\n {syncOverview ? (\n <div style={{ display: \"grid\", gap: \"0.35rem\" }}>\n <div>{syncOverview.message}</div>\n <div>\n PRs abertos: {syncOverview.pullRequestCount} \u2014 Issues abertas:{\" \"}\n {syncOverview.issueCount}\n </div>\n {syncOverview.lastSyncedAt ? (\n <div>\u00DAltimo sync: {new Date(syncOverview.lastSyncedAt).toLocaleString()}</div>\n ) : null}\n </div>\n ) : null}\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"0.5rem\" }}>\n <button\n style={buttonStyle}\n disabled={Boolean(busy) || !companyId || needsToken}\n onClick={() => void runAction(\"Sync completo\", () => syncAll({ companyId: companyId! }))}\n >\n Sync tudo\n </button>\n <button\n style={buttonStyle}\n disabled={Boolean(busy) || !companyId || needsToken}\n onClick={() =>\n void runAction(\"Sync PRs\", () => syncPullRequests({ companyId: companyId! }))\n }\n >\n Sync PRs\n </button>\n <button\n style={buttonStyle}\n disabled={Boolean(busy) || !companyId || needsToken}\n onClick={() =>\n void runAction(\"Sync issues\", () => syncIssues({ companyId: companyId! }))\n }\n >\n Sync issues\n </button>\n </div>\n {syncOverview?.recentPullRequests.length ? (\n <div>\n <div style={{ fontWeight: 600, marginBottom: 4 }}>PRs recentes</div>\n <ul style={{ margin: 0, paddingLeft: \"1.2rem\" }}>\n {syncOverview.recentPullRequests.map((pr) => (\n <li key={`${pr.repoFullName}#${pr.number}`}>\n <a href={pr.htmlUrl} target=\"_blank\" rel=\"noreferrer\">\n {pr.repoFullName}#{pr.number} \u2014 {pr.title}\n </a>\n </li>\n ))}\n </ul>\n </div>\n ) : null}\n {syncOverview?.recentIssues.length ? (\n <div>\n <div style={{ fontWeight: 600, marginBottom: 4 }}>Issues recentes</div>\n <ul style={{ margin: 0, paddingLeft: \"1.2rem\" }}>\n {syncOverview.recentIssues.map((issue) => (\n <li key={`${issue.repoFullName}#${issue.number}`}>\n <a href={issue.htmlUrl} target=\"_blank\" rel=\"noreferrer\">\n {issue.repoFullName}#{issue.number} \u2014 {issue.title}\n </a>\n </li>\n ))}\n </ul>\n </div>\n ) : null}\n </section>\n\n {actionMessage ? <div>{actionMessage}</div> : null}\n {busy ? <div>Executando: {busy}...</div> : null}\n </div>\n );\n}\n", "/** Plugin page route segments (manifest `routePath` \u2014 single slug, no slashes). */\nexport const ROUTES = {\n repos: \"github\",\n settings: \"github-settings\",\n pullRequests: \"github-pull-requests\"\n} as const;\n\n/** Host navigation paths (use with `linkProps`). */\nexport const PATHS = {\n repos: \"/github\",\n settings: \"/github-settings\",\n pullRequests: \"/github-pull-requests\",\n companySecrets: \"/company/settings\"\n} as const;\n\nexport const GITHUB_TOKEN_SECRET_KEY = \"github_token\";\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }