@kb-labs/commit-entry 2.105.0 → 2.106.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/dist/widgets/117.js +1 -2
- package/dist/widgets/165.js +1 -2
- package/dist/widgets/326.js +1 -2
- package/dist/widgets/370.js +1 -2
- package/dist/widgets/405.js +1 -2
- package/dist/widgets/46.js +1 -2
- package/dist/widgets/50.js +1 -2
- package/dist/widgets/546.js +1 -2
- package/dist/widgets/62.js +1 -2
- package/dist/widgets/648.js +1 -2
- package/dist/widgets/669.js +1 -2
- package/dist/widgets/707.js +1 -2
- package/dist/widgets/733.js +1 -2
- package/dist/widgets/775.js +1 -2
- package/dist/widgets/78.js +1 -2
- package/dist/widgets/945.js +1 -2
- package/dist/widgets/968.js +1 -2
- package/dist/widgets/__federation_expose_CommitOverview.js +1 -2
- package/dist/widgets/mf-manifest.json +5 -5
- package/dist/widgets/mf-stats.json +5 -5
- package/dist/widgets/remoteEntry.js +2 -3
- package/package.json +4 -4
- package/dist/widgets/117.js.map +0 -1
- package/dist/widgets/165.js.map +0 -1
- package/dist/widgets/326.js.map +0 -1
- package/dist/widgets/370.js.map +0 -1
- package/dist/widgets/405.js.map +0 -1
- package/dist/widgets/46.js.map +0 -1
- package/dist/widgets/50.js.map +0 -1
- package/dist/widgets/546.js.map +0 -1
- package/dist/widgets/62.js.map +0 -1
- package/dist/widgets/648.js.map +0 -1
- package/dist/widgets/669.js.map +0 -1
- package/dist/widgets/707.js.map +0 -1
- package/dist/widgets/733.js.map +0 -1
- package/dist/widgets/775.js.map +0 -1
- package/dist/widgets/78.js.map +0 -1
- package/dist/widgets/945.js.map +0 -1
- package/dist/widgets/968.js.map +0 -1
- package/dist/widgets/__federation_expose_CommitOverview.js.map +0 -1
- package/dist/widgets/remoteEntry.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"__federation_expose_CommitOverview.js","sources":["webpack://@kb-labs/commit-entry/../../../node_modules/.pnpm/react@19.2.5/node_modules/react/cjs/react-jsx-runtime.production.js","webpack://@kb-labs/commit-entry/../../../node_modules/.pnpm/react@19.2.5/node_modules/react/jsx-runtime.js","webpack://@kb-labs/commit-entry/./src/studio/components/CommitPlanTab.tsx","webpack://@kb-labs/commit-entry/./src/studio/components/CommitFilesTab.tsx","webpack://@kb-labs/commit-entry/./src/studio/pages/CommitOverview.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * CommitPlanTab — commit plan viewer with generate/apply/push/reset actions.\n */\n\nimport { useState } from 'react';\nimport { theme } from 'antd';\nimport {\n useData, useMutateData, useNotification,\n UICard, UIButton, UIEmptyState, UISpin, UIAlert, UIBadge, UITag,\n UITooltip, UIIcon, UISpace, UICheckbox, UIInput, UIDropdown,\n UIPopconfirm, UITypographyText, UIModalConfirm, UIModalError, UIFlex,\n UISkeletonText, UIShimmerText,\n} from '@kb-labs/sdk/studio';\n\nconst { useToken } = theme;\nconst Text = UITypographyText;\n\ninterface CommitPlanTabProps {\n scope: string;\n}\n\ninterface Commit {\n id: string;\n type: string;\n scope?: string;\n message: string;\n body?: string;\n files?: string[];\n breaking?: boolean;\n reasoning?: { explanation: string; confidence?: number };\n}\n\ninterface PlanData {\n plan?: { commits: Commit[] };\n}\n\ninterface StatusData {\n filesChanged: number;\n hasPlan: boolean;\n planStatus: string;\n}\n\n// Semantic commit type → Ant Design token color name\nconst TYPE_COLOR_MAP: Record<string, string> = {\n feat: 'green', fix: 'red', docs: 'blue', style: 'purple',\n refactor: 'cyan', test: 'magenta', chore: 'default', perf: 'gold',\n ci: 'blue', build: 'geekblue',\n};\n\nexport function CommitPlanTab({ scope }: CommitPlanTabProps) {\n const { token } = useToken();\n const notify = useNotification();\n\n const [expanded, setExpanded] = useState<Set<string>>(new Set());\n const [selected, setSelected] = useState<Set<string>>(new Set());\n const [editingId, setEditingId] = useState<string | null>(null);\n const [editMsg, setEditMsg] = useState('');\n const [regeneratingId, setRegeneratingId] = useState<string | null>(null);\n const [allowSecrets, setAllowSecrets] = useState(false);\n\n const { data: statusData, isLoading: statusLoading, refetch: refetchStatus } = useData<StatusData>(\n '/v1/plugins/commit/status', { params: { scope }, enabled: !!scope },\n );\n const { data: planData, refetch: refetchPlan } = useData<PlanData>(\n '/v1/plugins/commit/plan', { params: { scope }, enabled: !!scope },\n );\n\n const refetchAll = () => { void refetchStatus(); void refetchPlan(); };\n\n const generate = useMutateData<{ scope: string; allowSecrets: boolean; autoConfirm: boolean }, any>('/v1/plugins/commit/generate');\n const apply = useMutateData<{ scope: string; commitIds?: string[] }, any>('/v1/plugins/commit/apply');\n const push = useMutateData<{ scope: string }, any>('/v1/plugins/commit/push');\n const reset = useMutateData<{ scope: string }, any>('/v1/plugins/commit/plan', 'DELETE');\n const patch = useMutateData<{ scope: string; commitId: string; message: string }, any>('/v1/plugins/commit/plan', 'PATCH');\n const regenerate = useMutateData<{ scope: string; commitId: string }, any>('/v1/plugins/commit/regenerate-commit');\n\n const filesChanged = statusData?.filesChanged ?? 0;\n const commits = planData?.plan?.commits ?? [];\n const hasPlan = commits.length > 0;\n const planStatus = hasPlan ? (statusData?.planStatus ?? 'ready') : 'idle';\n const isAnyLoading = generate.isLoading || apply.isLoading || push.isLoading || reset.isLoading;\n\n const handleGenerate = () => {\n if (allowSecrets) {\n UIModalConfirm({\n title: 'Allow Secrets?',\n icon: <UIIcon name=\"ExclamationCircleOutlined\" />,\n content: 'Files may contain secrets. This bypasses security checks.',\n okText: 'Proceed',\n okType: 'danger',\n onOk: () => generate.mutate({ scope, allowSecrets: true, autoConfirm: true }, { onSuccess: refetchAll }),\n });\n } else {\n generate.mutate({ scope, allowSecrets: false, autoConfirm: false }, {\n onSuccess: (data: any) => {\n refetchAll();\n if (data.secretsDetected && data.secrets) {\n UIModalError({\n title: 'Secrets Detected',\n width: 600,\n content: (\n <div>\n <UIAlert message={data.message} variant=\"error\" showIcon style={{ marginBottom: 16 }} />\n <Text strong>{data.secrets.length} potential secret(s) found.</Text>\n <div style={{ maxHeight: 300, overflow: 'auto', marginTop: 8 }}>\n {data.secrets.map((s: any, i: number) => (\n <UICard key={i} size=\"small\" style={{ marginBottom: 8 }}>\n <Text style={{ fontFamily: 'monospace', fontSize: 12 }}>{s.file}:{s.line}</Text>\n <br />\n <Text type=\"secondary\">{s.type}: {s.matched}</Text>\n </UICard>\n ))}\n </div>\n </div>\n ),\n });\n }\n },\n });\n }\n };\n\n const handleApply = (commitIds?: string[]) => {\n apply.mutate({ scope, commitIds }, {\n onSuccess: (data: any) => {\n refetchAll();\n const result = data.result;\n const applied = result?.appliedCommits?.length ?? 0;\n const errors: string[] = result?.errors ?? [];\n if (result?.success) {\n notify.success(`${applied} commit(s) applied`);\n setSelected(new Set());\n } else if (applied > 0 && errors.length > 0) {\n notify.warning(`${applied} commit(s) applied, ${errors.length} failed: ${errors[0]}`);\n setSelected(new Set());\n } else {\n notify.error(errors[0] ?? 'Apply failed');\n }\n },\n onError: (e: Error) => notify.error(`Apply failed: ${e.message}`),\n });\n };\n\n const handlePush = () => {\n push.mutate({ scope }, {\n onSuccess: (data: any) => {\n refetchAll();\n if (data.result?.success) {\n notify.success(`Pushed ${data.result.commitsPushed} commit(s) to ${data.result.remote}/${data.result.branch}`);\n setSelected(new Set());\n setExpanded(new Set());\n } else {\n notify.error(data.result?.error ?? 'Push failed');\n }\n },\n onError: (e: Error) => notify.error(`Push failed: ${e.message}`),\n });\n };\n\n const handleReset = () => {\n reset.mutate({ scope }, {\n onSuccess: () => { refetchAll(); notify.success('Plan reset'); setSelected(new Set()); setExpanded(new Set()); },\n onError: (e: Error) => notify.error(`Reset failed: ${e.message}`),\n });\n };\n\n const handleSaveEdit = (commitId: string) => {\n patch.mutate({ scope, commitId, message: editMsg }, {\n onSuccess: () => { refetchPlan(); setEditingId(null); notify.success('Message updated'); },\n onError: (e: Error) => notify.error(`Update failed: ${e.message}`),\n });\n };\n\n const handleRegenerate = (commitId: string) => {\n setRegeneratingId(commitId);\n regenerate.mutate({ scope, commitId }, {\n onSuccess: () => { refetchPlan(); setRegeneratingId(null); notify.success('Commit regenerated'); },\n onError: (e: Error) => { setRegeneratingId(null); notify.error(`Regenerate failed: ${e.message}`); },\n });\n };\n\n const toggle = (set: Set<string>, id: string) => {\n const next = new Set(set);\n if (next.has(id)) { next.delete(id); } else { next.add(id); }\n return next;\n };\n\n if (!scope) {\n return <UIEmptyState description=\"Select a repository to continue\" />;\n }\n if (statusLoading) {\n return <UISpin size=\"large\" style={{ display: 'block', margin: '48px auto' }} />;\n }\n\n const statusBadge: Record<string, { text: string; status: 'default' | 'processing' | 'success' }> = {\n idle: { text: 'No Plan', status: 'default' },\n ready: { text: 'Ready to Apply', status: 'processing' },\n applied: { text: 'Applied', status: 'success' },\n pushed: { text: 'Pushed', status: 'success' },\n };\n const badge = statusBadge[planStatus] ?? statusBadge.idle!;\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: token.marginSM }}>\n {/* Summary bar */}\n <UICard size=\"small\">\n <UIFlex justify=\"between\" align=\"center\">\n <UISpace size={24}>\n <UIBadge {...badge} />\n <Text type=\"secondary\">{commits.length} commit{commits.length !== 1 ? 's' : ''}</Text>\n <Text type=\"secondary\">{filesChanged} file{filesChanged !== 1 ? 's' : ''} changed</Text>\n </UISpace>\n {hasPlan && (\n <UISpace size={8}>\n {planStatus === 'ready' && (\n selected.size > 0 ? (\n <UIButton variant=\"primary\" size=\"small\" onClick={() => handleApply([...selected])} loading={apply.isLoading} disabled={isAnyLoading}>\n Apply Selected ({selected.size})\n </UIButton>\n ) : (\n <UIButton variant=\"primary\" size=\"small\" onClick={() => handleApply()} loading={apply.isLoading} disabled={isAnyLoading}>\n Apply All\n </UIButton>\n )\n )}\n {(planStatus === 'applied' || planStatus === 'pushed') && (\n <UIButton size=\"small\" icon={<UIIcon name=\"CloudUploadOutlined\" />} onClick={handlePush} loading={push.isLoading} disabled={isAnyLoading}>\n Push\n </UIButton>\n )}\n <UIButton size=\"small\" icon={<UIIcon name=\"ReloadOutlined\" />} onClick={handleGenerate} loading={generate.isLoading} disabled={isAnyLoading}>\n Regenerate\n </UIButton>\n <UIPopconfirm title=\"Reset commit plan?\" description=\"This deletes the current plan.\" onConfirm={handleReset} okText=\"Reset\" okType=\"danger\">\n <span>\n <UIButton size=\"small\" danger icon={<UIIcon name=\"DeleteOutlined\" />} loading={reset.isLoading} disabled={isAnyLoading}>\n Reset\n </UIButton>\n </span>\n </UIPopconfirm>\n </UISpace>\n )}\n </UIFlex>\n </UICard>\n\n {/* Generating */}\n {generate.isLoading && (\n <UICard style={{ padding: '16px 24px' }}>\n <UISkeletonText width={['100%', '85%', '65%']} height=\"16px\" gap={12} />\n <div style={{ textAlign: 'center', paddingTop: 20 }}>\n <UIShimmerText duration=\"1.8s\">\n Analyzing {filesChanged} files...\n </UIShimmerText>\n </div>\n </UICard>\n )}\n\n {/* Empty state */}\n {(!hasPlan || commits.length === 0) && !generate.isLoading && (\n <UICard>\n <UIEmptyState\n icon={<UIIcon name=\"FileOutlined\" />}\n title=\"No commit plan yet\"\n description={filesChanged > 0 ? `${filesChanged} file${filesChanged !== 1 ? 's' : ''} changed` : undefined}\n >\n <UISpace direction=\"vertical\" align=\"center\">\n <UICheckbox checked={allowSecrets} onChange={(v) => setAllowSecrets(v)}>\n <Text type=\"secondary\" style={{ fontSize: 13 }}>Allow secrets</Text>\n </UICheckbox>\n <UIButton variant=\"primary\" icon={<UIIcon name=\"ThunderboltOutlined\" />} onClick={handleGenerate} disabled={filesChanged === 0}>\n Generate Plan\n </UIButton>\n </UISpace>\n </UIEmptyState>\n </UICard>\n )}\n\n {/* Commit list */}\n {!generate.isLoading && commits.length > 0 && commits.map((commit) => {\n const isExpanded = expanded.has(commit.id);\n const isEditing = editingId === commit.id;\n const isRegenerating = regeneratingId === commit.id;\n const isSelected = selected.has(commit.id);\n const typeColor = TYPE_COLOR_MAP[commit.type] ?? 'default';\n\n return (\n <UICard key={commit.id} size=\"small\" style={{ opacity: isRegenerating ? 0.6 : 1 }}>\n <UIFlex align=\"center\" gap={8} style={{ marginBottom: isExpanded ? token.marginSM : 0 }}>\n {planStatus === 'ready' && (\n <span onClick={(e) => e.stopPropagation()}>\n <UICheckbox checked={isSelected} onChange={() => setSelected(toggle(selected, commit.id))} />\n </span>\n )}\n\n <UIIcon\n name=\"RightOutlined\"\n style={{ fontSize: 11, cursor: 'pointer', color: token.colorTextTertiary, transform: isExpanded ? 'rotate(90deg)' : undefined, transition: 'transform 0.2s' }}\n onClick={() => setExpanded(toggle(expanded, commit.id))}\n />\n\n <UITag color={typeColor} style={{ margin: 0 }}>{commit.type}</UITag>\n\n <div style={{ flex: 1, cursor: 'pointer', minWidth: 0 }} onClick={() => setExpanded(toggle(expanded, commit.id))}>\n {isEditing ? (\n <div style={{ display: 'flex', gap: 8, alignItems: 'center' }} onClick={(e) => e.stopPropagation()}>\n <UIInput size=\"small\" value={editMsg} onChange={(v) => setEditMsg(v)} onPressEnter={() => handleSaveEdit(commit.id)} autoFocus style={{ flex: 1 }} />\n <UIButton size=\"small\" variant=\"text\" icon={<UIIcon name=\"CheckOutlined\" />} onClick={() => handleSaveEdit(commit.id)} loading={patch.isLoading} />\n <UIButton size=\"small\" variant=\"text\" icon={<UIIcon name=\"CloseOutlined\" />} onClick={() => setEditingId(null)} />\n </div>\n ) : (\n <Text ellipsis>\n {commit.scope && <Text type=\"secondary\">({commit.scope}){' '}</Text>}\n {commit.message}\n </Text>\n )}\n </div>\n\n {commit.breaking && <UITag color=\"red\" style={{ margin: 0 }}>BREAKING</UITag>}\n\n <UITooltip title={`${commit.files?.length ?? 0} files`}>\n <Text type=\"secondary\" style={{ fontSize: 12, whiteSpace: 'nowrap' }}>{commit.files?.length ?? 0} files</Text>\n </UITooltip>\n\n {commit.reasoning?.confidence !== undefined && (\n <UITooltip title=\"AI confidence\">\n <Text type=\"secondary\" style={{ fontSize: 12 }}>{(commit.reasoning.confidence * 100).toFixed(0)}%</Text>\n </UITooltip>\n )}\n\n {planStatus === 'ready' && !isEditing && (\n <UIDropdown trigger={['click']} menu={{\n items: [\n { key: 'edit', label: 'Edit message', icon: <UIIcon name=\"EditOutlined\" />, onClick: () => { setEditingId(commit.id); setEditMsg(commit.message); } },\n { key: 'regen', label: 'Regenerate', icon: <UIIcon name=\"ReloadOutlined\" />, onClick: () => handleRegenerate(commit.id) },\n ],\n }}>\n <UIButton variant=\"text\" size=\"small\" icon={<UIIcon name=\"MoreOutlined\" />} onClick={(e) => e.stopPropagation()} />\n </UIDropdown>\n )}\n </UIFlex>\n\n {isExpanded && (\n <div style={{ paddingTop: token.paddingSM }}>\n {isRegenerating && (\n <UIFlex justify=\"center\" style={{ padding: token.padding }}>\n <UISpin size=\"small\" />\n <Text type=\"secondary\" style={{ marginLeft: 8 }}>Regenerating...</Text>\n </UIFlex>\n )}\n {commit.body && (\n <Text type=\"secondary\" style={{ whiteSpace: 'pre-wrap', display: 'block', marginBottom: token.marginSM }}>\n {commit.body}\n </Text>\n )}\n {commit.files && commit.files.length > 0 && (\n <div style={{ marginBottom: token.marginSM }}>\n <Text type=\"secondary\" style={{ fontSize: 12, display: 'block', marginBottom: 4 }}>\n {commit.files.length} file{commit.files.length !== 1 ? 's' : ''}\n </Text>\n <UICard size=\"small\" style={{ background: token.colorFillAlter }}>\n {commit.files.map((file, i) => (\n <div key={i} style={{ padding: '2px 0', fontFamily: 'monospace', fontSize: 12 }}>{file}</div>\n ))}\n </UICard>\n </div>\n )}\n {commit.reasoning && (\n <UIAlert\n message=\"AI Reasoning\"\n description={\n <Text type=\"secondary\">\n {commit.reasoning.explanation}\n {commit.reasoning.confidence !== undefined && (\n <> ({(commit.reasoning.confidence * 100).toFixed(0)}% confidence)</>\n )}\n </Text>\n }\n variant=\"info\"\n />\n )}\n </div>\n )}\n </UICard>\n );\n })}\n </div>\n );\n}\n","/**\n * CommitFilesTab — file viewer grouped by status with expandable diffs and AI summaries.\n */\n\nimport { useState } from 'react';\nimport { useData, useMutateData, useNotification, useTheme, UICard, UIButton, UIEmptyState, UISkeleton, UIAlert, UITag, UIBadge, UIIcon, UITypographyText, UIDiffViewer } from '@kb-labs/sdk/studio';\n\nconst Text = UITypographyText;\n\ninterface CommitFilesTabProps {\n scope: string;\n}\n\ninterface FileEntry {\n path: string;\n status: string;\n}\n\ninterface StatusGroup {\n key: string;\n label: string;\n color: string;\n tagColor: string;\n iconName: string;\n files: FileEntry[];\n}\n\nexport function CommitFilesTab({ scope }: CommitFilesTabProps) {\n const notify = useNotification();\n const { semantic } = useTheme();\n\n const [expandedFiles, setExpandedFiles] = useState<Set<string>>(new Set());\n const [collapsedGroups, setCollapsedGroups] = useState<Set<string>>(new Set());\n const [overallSummary, setOverallSummary] = useState<string | null>(null);\n const [fileSummaries, setFileSummaries] = useState<Record<string, string>>({});\n const [summarizingFile, setSummarizingFile] = useState<string | null>(null);\n const [isSummarizingAll, setIsSummarizingAll] = useState(false);\n\n const { data: gitStatus, isLoading } = useData<{ rows?: FileEntry[]; summaries?: FileEntry[] }>(\n '/v1/plugins/commit/git-status', { params: { scope }, enabled: !!scope },\n );\n\n const summarize = useMutateData<{ scope: string; file?: string }, { summary: string }>(\n '/v1/plugins/commit/summarize',\n );\n\n // Guards\n if (!scope) {return <UIEmptyState description=\"Select a scope to continue\" />;}\n if (isLoading) {return <UICard><UISkeleton active lines={5} /></UICard>;}\n\n const rawFiles = gitStatus?.rows ?? gitStatus?.summaries ?? [];\n const files: FileEntry[] = rawFiles\n .filter((f): f is FileEntry => typeof f?.path === 'string')\n .map((f) => ({ path: f.path, status: f.status ?? 'modified' }));\n\n if (files.length === 0) {\n return (\n <UICard style={{ textAlign: 'center', padding: '48px 0' }}>\n <UIIcon name=\"FileOutlined\" style={{ fontSize: 48, color: semantic.disabled, display: 'block', marginBottom: 16 }} />\n <Text type=\"secondary\">No files changed</Text>\n </UICard>\n );\n }\n\n // Group by status\n const grouped: Record<string, FileEntry[]> = {};\n for (const f of files) {\n (grouped[f.status] ??= []).push(f);\n }\n\n const groups: StatusGroup[] = [\n { key: 'staged', label: 'Staged', color: semantic.success, tagColor: 'green', iconName: 'CheckCircleOutlined', files: grouped['staged'] ?? [] },\n { key: 'modified', label: 'Modified', color: semantic.warning, tagColor: 'orange', iconName: 'EditOutlined', files: grouped['modified'] ?? [] },\n { key: 'untracked', label: 'Untracked', color: semantic.disabled, tagColor: 'default', iconName: 'PlusOutlined', files: grouped['untracked'] ?? [] },\n ].filter((g) => g.files.length > 0);\n\n const toggle = <T,>(set: Set<T>, item: T) => {\n const next = new Set(set);\n if (next.has(item)) { next.delete(item); } else { next.add(item); }\n return next;\n };\n\n const handleSummarizeAll = async () => {\n setIsSummarizingAll(true);\n try {\n const result = await summarize.mutateAsync({ scope });\n setOverallSummary(result.summary);\n notify.success('Summary generated');\n } catch {\n notify.error('Failed to generate summary');\n } finally {\n setIsSummarizingAll(false);\n }\n };\n\n const handleSummarizeFile = async (file: string) => {\n setSummarizingFile(file);\n try {\n const result = await summarize.mutateAsync({ scope, file });\n setFileSummaries((prev) => ({ ...prev, [file]: result.summary }));\n } catch {\n notify.error(`Failed to summarize ${file}`);\n } finally {\n setSummarizingFile(null);\n }\n };\n\n return (\n <div>\n {/* Summary bar */}\n <UICard size=\"small\" style={{ marginBottom: 16 }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n <div style={{ display: 'flex', gap: 16, alignItems: 'center' }}>\n <Text type=\"secondary\">{files.length} file{files.length !== 1 ? 's' : ''} changed</Text>\n {groups.map((g) => (\n <UITag key={g.key} color={g.tagColor} style={{ margin: 0 }}>{g.label}: {g.files.length}</UITag>\n ))}\n </div>\n <UIButton size=\"small\" icon={<UIIcon name=\"RobotOutlined\" />} onClick={handleSummarizeAll} loading={isSummarizingAll}>\n Summarize All\n </UIButton>\n </div>\n </UICard>\n\n {/* Overall summary */}\n {overallSummary && (\n <UIAlert\n message=\"AI Summary\"\n description={overallSummary}\n variant=\"info\"\n closable\n onClose={() => setOverallSummary(null)}\n style={{ marginBottom: 16, whiteSpace: 'pre-wrap' }}\n icon={<UIIcon name=\"RobotOutlined\" />}\n />\n )}\n\n {/* File groups */}\n {groups.map((group) => {\n const isCollapsed = collapsedGroups.has(group.key);\n\n return (\n <div key={group.key} style={{ marginBottom: 16 }}>\n {/* Group header */}\n <div\n style={{ display: 'flex', alignItems: 'center', gap: 8, padding: '8px 12px', cursor: 'pointer', borderBottom: `2px solid ${group.color}`, marginBottom: 4 }}\n onClick={() => setCollapsedGroups(toggle(collapsedGroups, group.key))}\n >\n <UIIcon name=\"RightOutlined\" style={{ fontSize: 10, color: semantic.disabled, transform: isCollapsed ? undefined : 'rotate(90deg)', transition: 'transform 0.2s' }} />\n <UIIcon name={group.iconName} style={{ color: group.color }} />\n <Text strong>{group.label}</Text>\n <UIBadge count={group.files.length} style={{ backgroundColor: group.color }} size=\"small\" />\n </div>\n\n {/* File rows */}\n {!isCollapsed && group.files.map((file) => {\n const isExpanded = expandedFiles.has(file.path);\n const fileSummary = fileSummaries[file.path];\n const isSummarizing = summarizingFile === file.path;\n\n return (\n <div key={file.path}>\n <div\n style={{ display: 'flex', alignItems: 'center', gap: 8, padding: '6px 12px', cursor: 'pointer', borderBottom: `1px solid ${semantic.borderPrimary}` }}\n onClick={() => setExpandedFiles(toggle(expandedFiles, file.path))}\n >\n <UIIcon name=\"RightOutlined\" style={{ fontSize: 10, color: semantic.disabled, transform: isExpanded ? 'rotate(90deg)' : undefined, transition: 'transform 0.2s' }} />\n <UIIcon name=\"FileOutlined\" style={{ fontSize: 13, color: semantic.disabled }} />\n <Text style={{ flex: 1, fontFamily: 'monospace', fontSize: 13 }} ellipsis>{file.path}</Text>\n <div style={{ display: 'flex', gap: 4 }} onClick={(e) => e.stopPropagation()}>\n <UIButton variant=\"text\" size=\"small\" icon={<UIIcon name=\"CopyOutlined\" />}\n onClick={() => { navigator.clipboard.writeText(file.path); notify.success('Copied'); }}\n />\n <UIButton variant=\"text\" size=\"small\" icon={<UIIcon name=\"RobotOutlined\" />}\n onClick={() => handleSummarizeFile(file.path)} loading={isSummarizing}\n />\n </div>\n </div>\n\n {isExpanded && (\n <div style={{ borderBottom: `1px solid ${semantic.borderPrimary}` }}>\n {fileSummary && (\n <UIAlert\n message=\"AI Summary\"\n description={fileSummary}\n variant=\"success\"\n closable\n onClose={() => setFileSummaries((prev) => { const n = { ...prev }; delete n[file.path]; return n; })}\n style={{ margin: '8px 12px', whiteSpace: 'pre-wrap' }}\n icon={<UIIcon name=\"RobotOutlined\" />}\n />\n )}\n <FileDiff scope={scope} file={file.path} status={file.status} />\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n })}\n </div>\n );\n}\n\n/**\n * Inline file diff viewer — fetches diff for a single file.\n */\nfunction FileDiff({ scope, file, status }: { scope: string; file: string; status: string }) {\n const { data: diffData, isLoading } = useData<{ diff: string }>(\n '/v1/plugins/commit/diff', { params: { scope, file }, enabled: !!scope && !!file },\n );\n\n if (isLoading) {return <div style={{ padding: 16 }}><UISkeleton active lines={8} /></div>;}\n if (!diffData?.diff) {return <div style={{ padding: 16 }}><Text type=\"secondary\">No changes to display</Text></div>;}\n\n const isNew = status === 'untracked' || status === 'added';\n\n if (isNew) {\n return (\n <div style={{ padding: 16 }}>\n <Text type=\"secondary\" style={{ display: 'block', marginBottom: 8 }}>New file content</Text>\n <pre style={{\n margin: 0, maxHeight: 700, overflow: 'auto',\n fontFamily: 'Monaco, Menlo, monospace', fontSize: 12, lineHeight: 1.5,\n padding: 12, borderRadius: 8,\n background: 'var(--bg-tertiary)', border: '1px solid var(--border-primary)',\n whiteSpace: 'pre-wrap', wordBreak: 'break-word',\n }}>\n {diffData.diff}\n </pre>\n </div>\n );\n }\n\n return (\n <div style={{ padding: 16 }}>\n <UIDiffViewer diff={diffData.diff} maxHeight={700} />\n </div>\n );\n}\n","/**\n * CommitOverview — main commit plugin page.\n * Scope selector + tabbed view (Plan / Files).\n */\n\nimport { useState, useEffect } from 'react';\nimport { useData, UIPage, UIPageHeader, UITabs, UISelect, type SelectData } from '@kb-labs/sdk/studio';\nimport { CommitPlanTab } from '../components/CommitPlanTab';\nimport { CommitFilesTab } from '../components/CommitFilesTab';\n\nexport default function CommitOverview() {\n const [scope, setScope] = useState<string>('');\n\n const { data: scopesData, isLoading: scopesLoading } = useData<SelectData>(\n '/v1/plugins/commit/scopes',\n );\n\n // Auto-select first scope\n useEffect(() => {\n if (scopesData?.options?.length && !scope) {\n setScope(scopesData.value || scopesData.options[0]!.value);\n }\n }, [scopesData, scope]);\n\n const scopeOptions = scopesData?.options?.map((s) => ({\n label: s.label,\n value: s.value,\n })) ?? [];\n\n const tabs = (\n <UITabs\n syncUrl=\"search\"\n items={[\n {\n key: 'plan',\n label: 'Commit Plan',\n children: <CommitPlanTab scope={scope} />,\n },\n {\n key: 'files',\n label: 'Files',\n children: <CommitFilesTab scope={scope} />,\n },\n ]}\n />\n );\n\n return (\n <UIPage>\n <UIPageHeader\n title=\"Commit\"\n description=\"AI-powered commit generation\"\n actions={\n <UISelect\n style={{ width: 260 }}\n placeholder=\"Select repository...\"\n value={scope || undefined}\n onChange={(v) => setScope(v as string)}\n loading={scopesLoading}\n showSearch\n options={scopeOptions}\n />\n }\n tabs={tabs}\n />\n </UIPage>\n );\n}\n"],"names":["Symbol","useToken","theme","Text","UITypographyText","TYPE_COLOR_MAP","CommitPlanTab","param","_statusBadge_planStatus","_planData_plan","scope","token","notify","useNotification","_useState","Set","expanded","setExpanded","_useState1","selected","setSelected","_useState2","editingId","setEditingId","_useState3","editMsg","setEditMsg","_useState4","regeneratingId","setRegeneratingId","_useState5","allowSecrets","setAllowSecrets","_useData","statusData","statusLoading","refetchStatus","_useData1","planData","refetchPlan","refetchAll","generate","useMutateData","apply","push","reset","patch","regenerate","filesChanged","commits","hasPlan","planStatus","isAnyLoading","handleGenerate","UIModalConfirm","UIIcon","onOk","onSuccess","data","UIModalError","UIAlert","s","i","UICard","handleApply","commitIds","_result_appliedCommits","_errors_","result","applied","errors","onError","e","handleSaveEdit","commitId","handleRegenerate","toggle","set","id","next","UIEmptyState","UISpin","statusBadge","badge","UIFlex","UISpace","UIBadge","UIButton","onClick","_data_result","_data_result1","UIPopconfirm","UISkeletonText","UIShimmerText","undefined","UICheckbox","onChange","v","commit","_TYPE_COLOR_MAP_commit_type","_commit_files","_commit_files1","_commit_reasoning","isExpanded","isEditing","isRegenerating","isSelected","typeColor","UITag","UIInput","onPressEnter","UITooltip","UIDropdown","file","CommitFilesTab","semantic","useTheme","expandedFiles","setExpandedFiles","collapsedGroups","setCollapsedGroups","overallSummary","setOverallSummary","fileSummaries","setFileSummaries","summarizingFile","setSummarizingFile","isSummarizingAll","setIsSummarizingAll","gitStatus","isLoading","summarize","UISkeleton","files","rawFiles","_ref","f","_f_status","grouped","_iteratorError","_grouped_staged","_grouped_modified","_grouped_untracked","_grouped","groups","g","item","onClose","group","isCollapsed","fileSummary","isSummarizing","navigator","prev","n","FileDiff","status","diffData","UIDiffViewer","CommitOverview","_scopesData_options","setScope","scopesData","scopesLoading","useEffect","scopeOptions","tabs","UITabs","UIPage","UIPageHeader","UISelect"],"mappings":"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"}
|