@thxgg/steward 0.1.16 → 0.1.18

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.
Files changed (157) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{CxHOXVf6.js → -z_Gr0GN.js} +1 -1
  3. package/.output/public/_nuxt/5LlyHjkF.js +60 -0
  4. package/.output/public/_nuxt/BA0u_CRT.js +1 -0
  5. package/.output/public/_nuxt/{Bibm_IDv.js → BA4e9-N5.js} +2 -2
  6. package/.output/public/_nuxt/{BSA0RJ-H.js → BO8EM227.js} +1 -1
  7. package/.output/public/_nuxt/C0XT5P3Q.js +1 -0
  8. package/.output/public/_nuxt/{BWVTacYj.js → CGzrvVc6.js} +1 -1
  9. package/.output/public/_nuxt/{Dum5qplW.js → CJlXUkTg.js} +1 -1
  10. package/.output/public/_nuxt/CZsXZugv.js +1 -0
  11. package/.output/public/_nuxt/{ynmyrfyT.js → C_HVaH3B.js} +1 -1
  12. package/.output/public/_nuxt/{wbjFvimm.js → DAnnHVQP.js} +1 -1
  13. package/.output/public/_nuxt/DEr8q68O.js +141 -0
  14. package/.output/public/_nuxt/Detail.DSyVQNdr.css +1 -0
  15. package/.output/public/_nuxt/DrXxYwWw.js +30 -0
  16. package/.output/public/_nuxt/QAzsKGuP.js +1 -0
  17. package/.output/public/_nuxt/TSsR_oCL.js +1 -0
  18. package/.output/public/_nuxt/WUF6Thhn.js +13 -0
  19. package/.output/public/_nuxt/_prd_.BkpxMFSV.css +1 -0
  20. package/.output/public/_nuxt/builds/latest.json +1 -1
  21. package/.output/public/_nuxt/builds/meta/19e0e040-a531-4c25-b46d-a6ca54a1ae3e.json +1 -0
  22. package/.output/public/_nuxt/i9wn3hS7.js +1 -0
  23. package/.output/server/chunks/_/git-api.mjs +101 -8
  24. package/.output/server/chunks/_/git-api.mjs.map +1 -1
  25. package/.output/server/chunks/_/git.mjs +3 -10
  26. package/.output/server/chunks/_/git.mjs.map +1 -1
  27. package/.output/server/chunks/_/prd-service.mjs +366 -0
  28. package/.output/server/chunks/_/prd-service.mjs.map +1 -0
  29. package/.output/server/chunks/_/repos.mjs +448 -0
  30. package/.output/server/chunks/_/repos.mjs.map +1 -0
  31. package/.output/server/chunks/_/task-graph.mjs +13 -14
  32. package/.output/server/chunks/_/task-graph.mjs.map +1 -1
  33. package/.output/server/chunks/_/watcher.mjs +54 -68
  34. package/.output/server/chunks/_/watcher.mjs.map +1 -1
  35. package/.output/server/chunks/build/{Detail-CUfU85GY.mjs → Detail-BQSkP9Zm.mjs} +170 -74
  36. package/.output/server/chunks/build/Detail-BQSkP9Zm.mjs.map +1 -0
  37. package/.output/server/chunks/build/DiffViewer-styles-1.mjs-BFsE2PCW.mjs +4 -0
  38. package/.output/server/chunks/build/DiffViewer-styles-1.mjs-BFsE2PCW.mjs.map +1 -0
  39. package/.output/server/chunks/build/DiffViewer-styles.D2bqX3nK.mjs +8 -0
  40. package/.output/server/chunks/build/DiffViewer-styles.D2bqX3nK.mjs.map +1 -0
  41. package/.output/server/chunks/build/DiffViewer-styles.FoV36wuV.mjs +10 -0
  42. package/.output/server/chunks/build/DiffViewer-styles.FoV36wuV.mjs.map +1 -0
  43. package/.output/server/chunks/build/Viewer-styles.D6wYWFb1.mjs +8 -0
  44. package/.output/server/chunks/build/Viewer-styles.D6wYWFb1.mjs.map +1 -0
  45. package/.output/server/chunks/build/{_prd_-CeVnQzOV.mjs → _prd_-CBR_wm9i.mjs} +73 -33
  46. package/.output/server/chunks/build/_prd_-CBR_wm9i.mjs.map +1 -0
  47. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  48. package/.output/server/chunks/build/{default-DWCOHHTE.mjs → default-Cao5eO80.mjs} +2 -3
  49. package/.output/server/chunks/build/default-Cao5eO80.mjs.map +1 -0
  50. package/.output/server/chunks/build/error-404-Bf6kdO80.mjs +0 -1
  51. package/.output/server/chunks/build/error-500-D_bcARXN.mjs +0 -1
  52. package/.output/server/chunks/build/{index-CckL_NBD.mjs → index-ByZO4Bvq.mjs} +2 -2
  53. package/.output/server/chunks/build/index-ByZO4Bvq.mjs.map +1 -0
  54. package/.output/server/chunks/build/{index-QVeSHT3L.mjs → index-ljj9uTXI.mjs} +6 -5
  55. package/.output/server/chunks/build/index-ljj9uTXI.mjs.map +1 -0
  56. package/.output/server/chunks/build/nuxt-link-SvT1nf8Z.mjs +1 -1
  57. package/.output/server/chunks/build/{repo-graph-CHNl58mY.mjs → repo-graph-CVnkmn8i.mjs} +23 -10
  58. package/.output/server/chunks/build/repo-graph-CVnkmn8i.mjs.map +1 -0
  59. package/.output/server/chunks/build/server.mjs +5 -6
  60. package/.output/server/chunks/build/styles.mjs +4 -4
  61. package/.output/server/chunks/build/{usePrd-SqcxGyFU.mjs → usePrd-f7ylhIqs.mjs} +10 -34
  62. package/.output/server/chunks/build/usePrd-f7ylhIqs.mjs.map +1 -0
  63. package/.output/server/chunks/nitro/nitro.mjs +614 -1211
  64. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  65. package/.output/server/chunks/routes/api/browse.get.mjs +34 -10
  66. package/.output/server/chunks/routes/api/browse.get.mjs.map +1 -1
  67. package/.output/server/chunks/routes/api/index.get.mjs +3 -2
  68. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  69. package/.output/server/chunks/routes/api/index.post.mjs +22 -7
  70. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  71. package/.output/server/chunks/routes/api/repos/_repoId/git/commits.get.mjs +29 -23
  72. package/.output/server/chunks/routes/api/repos/_repoId/git/commits.get.mjs.map +1 -1
  73. package/.output/server/chunks/routes/api/repos/_repoId/git/diff.get.mjs +12 -7
  74. package/.output/server/chunks/routes/api/repos/_repoId/git/diff.get.mjs.map +1 -1
  75. package/.output/server/chunks/routes/api/repos/_repoId/git/file-content.get.mjs +32 -13
  76. package/.output/server/chunks/routes/api/repos/_repoId/git/file-content.get.mjs.map +1 -1
  77. package/.output/server/chunks/routes/api/repos/_repoId/git/file-diff.get.mjs +14 -14
  78. package/.output/server/chunks/routes/api/repos/_repoId/git/file-diff.get.mjs.map +1 -1
  79. package/.output/server/chunks/routes/api/repos/_repoId/graph.get.mjs +7 -2
  80. package/.output/server/chunks/routes/api/repos/_repoId/graph.get.mjs.map +1 -1
  81. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/graph.get.mjs +16 -2
  82. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/graph.get.mjs.map +1 -1
  83. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/progress.get.mjs +21 -9
  84. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/progress.get.mjs.map +1 -1
  85. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks/_taskId/commits.get.mjs +21 -85
  86. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks/_taskId/commits.get.mjs.map +1 -1
  87. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks.get.mjs +21 -9
  88. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks.get.mjs.map +1 -1
  89. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug_.get.mjs +31 -50
  90. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug_.get.mjs.map +1 -1
  91. package/.output/server/chunks/routes/api/repos/_repoId/prds.get.mjs +20 -49
  92. package/.output/server/chunks/routes/api/repos/_repoId/prds.get.mjs.map +1 -1
  93. package/.output/server/chunks/routes/api/repos/_repoId/refresh-git-repos.post.mjs +6 -13
  94. package/.output/server/chunks/routes/api/repos/_repoId/refresh-git-repos.post.mjs.map +1 -1
  95. package/.output/server/chunks/routes/api/repos/_repoId_.delete.mjs +3 -2
  96. package/.output/server/chunks/routes/api/repos/_repoId_.delete.mjs.map +1 -1
  97. package/.output/server/chunks/routes/api/runtime.get.mjs +1 -2
  98. package/.output/server/chunks/routes/api/runtime.get.mjs.map +1 -1
  99. package/.output/server/chunks/routes/api/watch.get.mjs +5 -4
  100. package/.output/server/chunks/routes/api/watch.get.mjs.map +1 -1
  101. package/.output/server/chunks/routes/renderer.mjs +1 -1
  102. package/.output/server/index.mjs +1 -2
  103. package/.output/server/index.mjs.map +1 -1
  104. package/.output/server/node_modules/zod/index.js +4 -0
  105. package/.output/server/node_modules/zod/package.json +118 -0
  106. package/.output/server/node_modules/zod/v3/ZodError.js +133 -0
  107. package/.output/server/node_modules/zod/v3/errors.js +9 -0
  108. package/.output/server/node_modules/zod/v3/external.js +6 -0
  109. package/.output/server/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  110. package/.output/server/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  111. package/.output/server/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  112. package/.output/server/node_modules/zod/v3/helpers/util.js +133 -0
  113. package/.output/server/node_modules/zod/v3/locales/en.js +109 -0
  114. package/.output/server/node_modules/zod/v3/types.js +3693 -0
  115. package/.output/server/package.json +2 -1
  116. package/README.md +2 -2
  117. package/dist/host/src/api/prds.js +6 -172
  118. package/dist/host/src/api/repos.js +3 -18
  119. package/dist/host/src/api/state.js +8 -9
  120. package/dist/host/src/executor-runner.js +368 -0
  121. package/dist/host/src/executor.js +138 -260
  122. package/dist/host/src/mcp.js +27 -1
  123. package/dist/host/src/ui.js +14 -4
  124. package/dist/server/utils/change-events.js +33 -0
  125. package/dist/server/utils/git.js +11 -16
  126. package/dist/server/utils/prd-service.js +231 -0
  127. package/dist/server/utils/prd-state.js +54 -162
  128. package/dist/server/utils/repos.js +72 -17
  129. package/dist/server/utils/state-schema.js +61 -0
  130. package/dist/server/utils/task-graph.js +13 -13
  131. package/package.json +2 -1
  132. package/.output/public/_nuxt/CVJh28bx.js +0 -1
  133. package/.output/public/_nuxt/CyZuidLG.js +0 -60
  134. package/.output/public/_nuxt/D0op9E2g.js +0 -1
  135. package/.output/public/_nuxt/DX8awZaa.js +0 -1
  136. package/.output/public/_nuxt/Detail.z33AHKev.css +0 -1
  137. package/.output/public/_nuxt/DiTJUZOC.js +0 -1
  138. package/.output/public/_nuxt/T_3JE9C-.js +0 -1
  139. package/.output/public/_nuxt/WOI2tLsR.js +0 -42
  140. package/.output/public/_nuxt/_prd_.KTotLoF_.css +0 -1
  141. package/.output/public/_nuxt/builds/meta/029070b0-b8e2-4988-84f4-d0c9ff55c998.json +0 -1
  142. package/.output/public/_nuxt/odRGDGwj.js +0 -1
  143. package/.output/server/chunks/build/Detail-CUfU85GY.mjs.map +0 -1
  144. package/.output/server/chunks/build/DiffViewer-styles-1.mjs-CS8FTppg.mjs +0 -4
  145. package/.output/server/chunks/build/DiffViewer-styles-1.mjs-CS8FTppg.mjs.map +0 -1
  146. package/.output/server/chunks/build/DiffViewer-styles.AUfwwelI.mjs +0 -10
  147. package/.output/server/chunks/build/DiffViewer-styles.AUfwwelI.mjs.map +0 -1
  148. package/.output/server/chunks/build/DiffViewer-styles.D_it8zfk.mjs +0 -8
  149. package/.output/server/chunks/build/DiffViewer-styles.D_it8zfk.mjs.map +0 -1
  150. package/.output/server/chunks/build/Viewer-styles.CshnetGw.mjs +0 -8
  151. package/.output/server/chunks/build/Viewer-styles.CshnetGw.mjs.map +0 -1
  152. package/.output/server/chunks/build/_prd_-CeVnQzOV.mjs.map +0 -1
  153. package/.output/server/chunks/build/default-DWCOHHTE.mjs.map +0 -1
  154. package/.output/server/chunks/build/index-CckL_NBD.mjs.map +0 -1
  155. package/.output/server/chunks/build/index-QVeSHT3L.mjs.map +0 -1
  156. package/.output/server/chunks/build/repo-graph-CHNl58mY.mjs.map +0 -1
  157. package/.output/server/chunks/build/usePrd-SqcxGyFU.mjs.map +0 -1
@@ -5,11 +5,10 @@ import { Background } from '@vue-flow/background';
5
5
  import { Controls } from '@vue-flow/controls';
6
6
  import { MarkerType, VueFlow, Position, Handle } from '@vue-flow/core';
7
7
  import { Loader2, AlertCircle, GitBranch, Circle, Clock3, CheckCircle2, AlertTriangle, Clock, ArrowLeft, Tag, ListOrdered, CheckSquare, Check, Link2, Diff, Calendar, ExternalLink, X, RefreshCw, Keyboard, FileDiff, FileCode, GitCommit, FileText, Plus, Minus, FolderGit2, ArrowRight, FileWarning, ChevronDown, Link, Link2Off, FileEdit, FileX, FilePlus } from 'lucide-vue-next';
8
- import { codeToHtml } from 'shiki/bundle/full';
9
- import { B as Button } from './index-CckL_NBD.mjs';
8
+ import { B as Button } from './index-ByZO4Bvq.mjs';
10
9
  import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
11
10
  import { Primitive, useForwardPropsEmits, DialogRoot, DialogPortal, DialogContent, DialogClose, DialogTitle, DialogDescription, Separator as Separator$1, DialogOverlay, TooltipProvider as TooltipProvider$1, TooltipRoot, TooltipTrigger as TooltipTrigger$1, TooltipPortal, TooltipContent as TooltipContent$1, TooltipArrow, ScrollAreaRoot, ScrollAreaViewport, ScrollAreaCorner, ScrollAreaScrollbar, ScrollAreaThumb, DialogTrigger } from 'reka-ui';
12
- import { c as cn, b as useToast } from './usePrd-SqcxGyFU.mjs';
11
+ import { c as cn, b as useToast } from './usePrd-f7ylhIqs.mjs';
13
12
  import { cva } from 'class-variance-authority';
14
13
  import { _ as __nuxt_component_0$3 } from './nuxt-link-SvT1nf8Z.mjs';
15
14
 
@@ -563,6 +562,8 @@ _sfc_main$k.setup = (props, ctx) => {
563
562
  };
564
563
  const __nuxt_component_0$1 = Object.assign(_sfc_main$k, { __name: "GitChangesMinimap" });
565
564
  const LINE_LIMIT = 1e4;
565
+ const MAX_DIFF_HIGHLIGHT_LINES = 1500;
566
+ const MAX_FULL_FILE_HIGHLIGHT_LINES = 4e3;
566
567
  const _sfc_main$j = /* @__PURE__ */ defineComponent({
567
568
  __name: "DiffViewer",
568
569
  __ssrInlineRender: true,
@@ -661,6 +662,14 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
661
662
  const language = computed(() => detectLanguage(props.filePath));
662
663
  const highlightedLines = ref(/* @__PURE__ */ new Map());
663
664
  const isLoading = ref(true);
665
+ const lineHighlightCache = /* @__PURE__ */ new Map();
666
+ let codeToHtmlLoader = null;
667
+ async function getCodeToHtml() {
668
+ if (!codeToHtmlLoader) {
669
+ codeToHtmlLoader = import('shiki').then((module) => module.codeToHtml);
670
+ }
671
+ return codeToHtmlLoader;
672
+ }
664
673
  const displayItems = computed(() => {
665
674
  const items = [];
666
675
  for (let hunkIndex = 0; hunkIndex < props.hunks.length; hunkIndex++) {
@@ -747,7 +756,13 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
747
756
  if (!content.trim()) {
748
757
  return "";
749
758
  }
759
+ const cacheKey = `${lang}:${content}`;
760
+ const cached = lineHighlightCache.get(cacheKey);
761
+ if (cached !== void 0) {
762
+ return cached;
763
+ }
750
764
  try {
765
+ const codeToHtml = await getCodeToHtml();
751
766
  const html = await codeToHtml(content, {
752
767
  lang,
753
768
  themes: {
@@ -756,16 +771,25 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
756
771
  }
757
772
  });
758
773
  const codeMatch = html.match(/<code[^>]*>([\s\S]*?)<\/code>/);
759
- return codeMatch ? codeMatch[1] || "" : escapeHtml(content);
774
+ const highlighted = codeMatch ? codeMatch[1] || "" : escapeHtml(content);
775
+ lineHighlightCache.set(cacheKey, highlighted);
776
+ return highlighted;
760
777
  } catch {
761
- return escapeHtml(content);
778
+ const fallback = escapeHtml(content);
779
+ lineHighlightCache.set(cacheKey, fallback);
780
+ return fallback;
762
781
  }
763
782
  }
764
783
  async function highlightFullContent(content, lang) {
765
784
  if (!content) {
766
785
  return [];
767
786
  }
787
+ const lines = content.split("\n");
788
+ if (lines.length > MAX_FULL_FILE_HIGHLIGHT_LINES) {
789
+ return lines.map(escapeHtml);
790
+ }
768
791
  try {
792
+ const codeToHtml = await getCodeToHtml();
769
793
  const html = await codeToHtml(content, {
770
794
  lang,
771
795
  themes: {
@@ -775,12 +799,12 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
775
799
  });
776
800
  const codeMatch = html.match(/<code[^>]*>([\s\S]*?)<\/code>/);
777
801
  if (!codeMatch || !codeMatch[1]) {
778
- return content.split("\n").map(escapeHtml);
802
+ return lines.map(escapeHtml);
779
803
  }
780
804
  const highlightedContent = codeMatch[1];
781
805
  return highlightedContent.split("\n");
782
806
  } catch {
783
- return content.split("\n").map(escapeHtml);
807
+ return lines.map(escapeHtml);
784
808
  }
785
809
  }
786
810
  function escapeHtml(text) {
@@ -836,9 +860,14 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
836
860
  }
837
861
  }
838
862
  }
863
+ const limitedLines = linesToHighlight.slice(0, MAX_DIFF_HIGHLIGHT_LINES);
864
+ const overflowLines = linesToHighlight.slice(MAX_DIFF_HIGHLIGHT_LINES);
865
+ for (const { key, content } of overflowLines) {
866
+ newHighlighted.set(key, escapeHtml(content));
867
+ }
839
868
  const batchSize = 50;
840
- for (let i = 0; i < linesToHighlight.length; i += batchSize) {
841
- const batch = linesToHighlight.slice(i, i + batchSize);
869
+ for (let i = 0; i < limitedLines.length; i += batchSize) {
870
+ const batch = limitedLines.slice(i, i + batchSize);
842
871
  const results = await Promise.all(
843
872
  batch.map(async ({ key, content }) => {
844
873
  const result = await highlightLine(content, lang);
@@ -862,21 +891,21 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
862
891
  return "context";
863
892
  }
864
893
  return (_ctx, _push, _parent, _attrs) => {
865
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "diff-viewer" }, _attrs))} data-v-8fd455b9>`);
894
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "diff-viewer" }, _attrs))} data-v-a5da7e6e>`);
866
895
  if ((unref(isLoading) || __props.isLoadingContent || unref(isLoadingFullFile)) && !__props.binary) {
867
- _push(`<div class="flex items-center justify-center py-8" data-v-8fd455b9><div class="size-6 animate-spin rounded-full border-2 border-primary border-t-transparent" data-v-8fd455b9></div></div>`);
896
+ _push(`<div class="flex items-center justify-center py-8" data-v-a5da7e6e><div class="size-6 animate-spin rounded-full border-2 border-primary border-t-transparent" data-v-a5da7e6e></div></div>`);
868
897
  } else if (__props.binary) {
869
- _push(`<div class="flex flex-col items-center justify-center gap-3 py-12 text-muted-foreground" data-v-8fd455b9>`);
898
+ _push(`<div class="flex flex-col items-center justify-center gap-3 py-12 text-muted-foreground" data-v-a5da7e6e>`);
870
899
  _push(ssrRenderComponent(unref(FileWarning), { class: "size-10 opacity-50" }, null, _parent));
871
- _push(`<div class="text-center" data-v-8fd455b9><p class="font-medium" data-v-8fd455b9>Binary file</p><p class="text-sm" data-v-8fd455b9>This file cannot be displayed as a diff</p></div></div>`);
900
+ _push(`<div class="text-center" data-v-a5da7e6e><p class="font-medium" data-v-a5da7e6e>Binary file</p><p class="text-sm" data-v-a5da7e6e>This file cannot be displayed as a diff</p></div></div>`);
872
901
  } else if (unref(isEmpty) && !__props.showFullFile) {
873
- _push(`<div class="flex flex-col items-center justify-center gap-3 py-12 text-muted-foreground" data-v-8fd455b9>`);
902
+ _push(`<div class="flex flex-col items-center justify-center gap-3 py-12 text-muted-foreground" data-v-a5da7e6e>`);
874
903
  _push(ssrRenderComponent(unref(AlertTriangle), { class: "size-10 opacity-50" }, null, _parent));
875
- _push(`<div class="text-center" data-v-8fd455b9><p class="font-medium" data-v-8fd455b9>No changes</p><p class="text-sm" data-v-8fd455b9>This file was touched but has no content changes</p></div></div>`);
904
+ _push(`<div class="text-center" data-v-a5da7e6e><p class="font-medium" data-v-a5da7e6e>No changes</p><p class="text-sm" data-v-a5da7e6e>This file was touched but has no content changes</p></div></div>`);
876
905
  } else if (unref(isLargeFile) && !unref(showAll) && !__props.showFullFile) {
877
- _push(`<div class="diff-container" data-v-8fd455b9><div class="flex flex-col items-center justify-center gap-3 border-b border-border bg-muted/30 py-6" data-v-8fd455b9>`);
906
+ _push(`<div class="diff-container" data-v-a5da7e6e><div class="flex flex-col items-center justify-center gap-3 border-b border-border bg-muted/30 py-6" data-v-a5da7e6e>`);
878
907
  _push(ssrRenderComponent(unref(AlertTriangle), { class: "size-8 text-yellow-500" }, null, _parent));
879
- _push(`<div class="text-center" data-v-8fd455b9><p class="font-medium" data-v-8fd455b9>Large file</p><p class="text-sm text-muted-foreground" data-v-8fd455b9> This file has ${ssrInterpolate(unref(totalLines).toLocaleString())} lines (threshold: ${ssrInterpolate(LINE_LIMIT.toLocaleString())}) </p></div>`);
908
+ _push(`<div class="text-center" data-v-a5da7e6e><p class="font-medium" data-v-a5da7e6e>Large file</p><p class="text-sm text-muted-foreground" data-v-a5da7e6e> This file has ${ssrInterpolate(unref(totalLines).toLocaleString())} lines (threshold: ${ssrInterpolate(LINE_LIMIT.toLocaleString())}) </p></div>`);
880
909
  _push(ssrRenderComponent(unref(Button), {
881
910
  variant: "outline",
882
911
  size: "sm",
@@ -897,15 +926,15 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
897
926
  }, _parent));
898
927
  _push(`</div></div>`);
899
928
  } else if (__props.showFullFile && __props.fileContent) {
900
- _push(`<div class="diff-container" data-v-8fd455b9><div class="full-file-view" data-v-8fd455b9><!--[-->`);
929
+ _push(`<div class="diff-container" data-v-a5da7e6e><div class="full-file-view" data-v-a5da7e6e><!--[-->`);
901
930
  ssrRenderList(unref(fullFileLines), (line, index) => {
902
931
  _push(`<div class="${ssrRenderClass([{
903
932
  "diff-add": getFullFileLineType(index + 1) === "add"
904
- }, "full-file-line"])}" data-v-8fd455b9><div class="diff-gutter" data-v-8fd455b9><span class="line-number" data-v-8fd455b9>${ssrInterpolate(index + 1)}</span></div><div class="diff-content" data-v-8fd455b9><span class="diff-code" data-v-8fd455b9>${(unref(highlightedFullFile)[index] || escapeHtml(line)) ?? ""}</span></div></div>`);
933
+ }, "full-file-line"])}" data-v-a5da7e6e><div class="diff-gutter" data-v-a5da7e6e><span class="line-number" data-v-a5da7e6e>${ssrInterpolate(index + 1)}</span></div><div class="diff-content" data-v-a5da7e6e><span class="diff-code" data-v-a5da7e6e>${(unref(highlightedFullFile)[index] || escapeHtml(line)) ?? ""}</span></div></div>`);
905
934
  });
906
935
  _push(`<!--]--></div></div>`);
907
936
  } else {
908
- _push(`<div class="diff-container" data-v-8fd455b9><div class="diff-toolbar" data-v-8fd455b9>`);
937
+ _push(`<div class="diff-container" data-v-a5da7e6e><div class="diff-toolbar" data-v-a5da7e6e>`);
909
938
  _push(ssrRenderComponent(unref(Button), {
910
939
  variant: "ghost",
911
940
  size: "sm",
@@ -925,25 +954,25 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
925
954
  }),
926
955
  _: 1
927
956
  }, _parent));
928
- _push(`</div><div class="diff-split" data-v-8fd455b9><div class="diff-column diff-column-left" data-v-8fd455b9><div class="diff-column-content" data-v-8fd455b9><!--[-->`);
957
+ _push(`</div><div class="diff-split" data-v-a5da7e6e><div class="diff-column diff-column-left" data-v-a5da7e6e><div class="diff-column-content" data-v-a5da7e6e><!--[-->`);
929
958
  ssrRenderList(unref(displayItems), (item) => {
930
959
  _push(`<!--[-->`);
931
960
  if (item.type === "separator") {
932
- _push(`<div class="diff-separator-half" data-v-8fd455b9><div class="separator-line" data-v-8fd455b9></div><span class="separator-text" data-v-8fd455b9>···</span></div>`);
961
+ _push(`<div class="diff-separator-half" data-v-a5da7e6e><div class="separator-line" data-v-a5da7e6e></div><span class="separator-text" data-v-a5da7e6e>···</span></div>`);
933
962
  } else if (item.pair) {
934
963
  _push(`<div class="${ssrRenderClass([{
935
964
  "diff-remove": item.pair.left.type === "remove",
936
965
  "diff-empty": item.pair.left.type === "empty",
937
966
  "diff-context": item.pair.left.type === "context"
938
- }, "diff-line"])}" data-v-8fd455b9><div class="diff-gutter" data-v-8fd455b9>`);
967
+ }, "diff-line"])}" data-v-a5da7e6e><div class="diff-gutter" data-v-a5da7e6e>`);
939
968
  if (item.pair.left.lineNum) {
940
- _push(`<span class="line-number" data-v-8fd455b9>${ssrInterpolate(item.pair.left.lineNum)}</span>`);
969
+ _push(`<span class="line-number" data-v-a5da7e6e>${ssrInterpolate(item.pair.left.lineNum)}</span>`);
941
970
  } else {
942
971
  _push(`<!---->`);
943
972
  }
944
- _push(`</div><div class="diff-content" data-v-8fd455b9>`);
973
+ _push(`</div><div class="diff-content" data-v-a5da7e6e>`);
945
974
  if (item.pair.left.type !== "empty") {
946
- _push(`<span class="diff-code" data-v-8fd455b9>${(getHighlightedContent(item.pair.id, "old") || escapeHtml(item.pair.left.content)) ?? ""}</span>`);
975
+ _push(`<span class="diff-code" data-v-a5da7e6e>${(getHighlightedContent(item.pair.id, "old") || escapeHtml(item.pair.left.content)) ?? ""}</span>`);
947
976
  } else {
948
977
  _push(`<!---->`);
949
978
  }
@@ -953,25 +982,25 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
953
982
  }
954
983
  _push(`<!--]-->`);
955
984
  });
956
- _push(`<!--]--></div></div><div class="diff-column diff-column-right" data-v-8fd455b9><div class="diff-column-content" data-v-8fd455b9><!--[-->`);
985
+ _push(`<!--]--></div></div><div class="diff-column diff-column-right" data-v-a5da7e6e><div class="diff-column-content" data-v-a5da7e6e><!--[-->`);
957
986
  ssrRenderList(unref(displayItems), (item) => {
958
987
  _push(`<!--[-->`);
959
988
  if (item.type === "separator") {
960
- _push(`<div class="diff-separator-half" data-v-8fd455b9><span class="separator-text" data-v-8fd455b9>···</span><div class="separator-line" data-v-8fd455b9></div></div>`);
989
+ _push(`<div class="diff-separator-half" data-v-a5da7e6e><span class="separator-text" data-v-a5da7e6e>···</span><div class="separator-line" data-v-a5da7e6e></div></div>`);
961
990
  } else if (item.pair) {
962
991
  _push(`<div class="${ssrRenderClass([{
963
992
  "diff-add": item.pair.right.type === "add",
964
993
  "diff-empty": item.pair.right.type === "empty",
965
994
  "diff-context": item.pair.right.type === "context"
966
- }, "diff-line"])}" data-v-8fd455b9><div class="diff-gutter" data-v-8fd455b9>`);
995
+ }, "diff-line"])}" data-v-a5da7e6e><div class="diff-gutter" data-v-a5da7e6e>`);
967
996
  if (item.pair.right.lineNum) {
968
- _push(`<span class="line-number" data-v-8fd455b9>${ssrInterpolate(item.pair.right.lineNum)}</span>`);
997
+ _push(`<span class="line-number" data-v-a5da7e6e>${ssrInterpolate(item.pair.right.lineNum)}</span>`);
969
998
  } else {
970
999
  _push(`<!---->`);
971
1000
  }
972
- _push(`</div><div class="diff-content" data-v-8fd455b9>`);
1001
+ _push(`</div><div class="diff-content" data-v-a5da7e6e>`);
973
1002
  if (item.pair.right.type !== "empty") {
974
- _push(`<span class="diff-code" data-v-8fd455b9>${(getHighlightedContent(item.pair.id, "new") || escapeHtml(item.pair.right.content)) ?? ""}</span>`);
1003
+ _push(`<span class="diff-code" data-v-a5da7e6e>${(getHighlightedContent(item.pair.id, "new") || escapeHtml(item.pair.right.content)) ?? ""}</span>`);
975
1004
  } else {
976
1005
  _push(`<!---->`);
977
1006
  }
@@ -993,7 +1022,7 @@ _sfc_main$j.setup = (props, ctx) => {
993
1022
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/git/DiffViewer.vue");
994
1023
  return _sfc_setup$j ? _sfc_setup$j(props, ctx) : void 0;
995
1024
  };
996
- const __nuxt_component_1$2 = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main$j, [["__scopeId", "data-v-8fd455b9"]]), { __name: "GitDiffViewer" });
1025
+ const __nuxt_component_1$2 = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main$j, [["__scopeId", "data-v-a5da7e6e"]]), { __name: "GitDiffViewer" });
997
1026
  const _sfc_main$i = /* @__PURE__ */ defineComponent({
998
1027
  __name: "ScrollBar",
999
1028
  __ssrInlineRender: true,
@@ -1350,7 +1379,7 @@ function useGit() {
1350
1379
  return files;
1351
1380
  } catch (error) {
1352
1381
  showError("Failed to fetch diff", getErrorMessage(error));
1353
- return [];
1382
+ throw error;
1354
1383
  } finally {
1355
1384
  isLoadingDiff.value = false;
1356
1385
  }
@@ -1372,7 +1401,7 @@ function useGit() {
1372
1401
  return hunks;
1373
1402
  } catch (error) {
1374
1403
  showError("Failed to fetch file diff", getErrorMessage(error));
1375
- return [];
1404
+ throw error;
1376
1405
  } finally {
1377
1406
  isLoadingFileDiff.value = false;
1378
1407
  }
@@ -1394,7 +1423,7 @@ function useGit() {
1394
1423
  return result.content;
1395
1424
  } catch (error) {
1396
1425
  showError("Failed to fetch file content", getErrorMessage(error));
1397
- return null;
1426
+ throw error;
1398
1427
  } finally {
1399
1428
  isLoadingFileContent.value = false;
1400
1429
  }
@@ -1431,19 +1460,28 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
1431
1460
  const error = ref(null);
1432
1461
  const fileDiffError = ref(null);
1433
1462
  const viewMode = ref("changes");
1463
+ function getErrorMessage(error2, fallback) {
1464
+ if (error2 && typeof error2 === "object") {
1465
+ const fetchError = error2;
1466
+ return fetchError.data?.message || fetchError.data?.statusMessage || fetchError.statusMessage || fetchError.message || fallback;
1467
+ }
1468
+ return fallback;
1469
+ }
1434
1470
  const selectedFileDiff = computed(() => files.value.find((f) => f.path === selectedFile.value));
1435
1471
  async function loadDiff() {
1436
1472
  error.value = null;
1437
1473
  files.value = [];
1438
1474
  selectedFile.value = void 0;
1439
1475
  hunks.value = [];
1440
- const result = await fetchDiff(props.repoId, props.commitSha, props.repoPath);
1441
- if (result.length === 0 && !isLoadingDiff.value) {
1442
- error.value = null;
1443
- }
1444
- files.value = result;
1445
- if (result.length > 0) {
1446
- selectedFile.value = result[0].path;
1476
+ fileContent.value = null;
1477
+ try {
1478
+ const result = await fetchDiff(props.repoId, props.commitSha, props.repoPath);
1479
+ files.value = result;
1480
+ if (result.length > 0) {
1481
+ selectedFile.value = result[0].path;
1482
+ }
1483
+ } catch (loadError) {
1484
+ error.value = getErrorMessage(loadError, "Could not load commit diff.");
1447
1485
  }
1448
1486
  }
1449
1487
  async function loadFileDiff() {
@@ -1453,11 +1491,17 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
1453
1491
  return;
1454
1492
  }
1455
1493
  fileDiffError.value = null;
1456
- const result = await fetchFileDiff(props.repoId, props.commitSha, selectedFile.value, props.repoPath);
1457
- hunks.value = result;
1458
- if (viewMode.value === "full") {
1459
- const content = await fetchFileContent(props.repoId, props.commitSha, selectedFile.value, props.repoPath);
1460
- fileContent.value = content;
1494
+ try {
1495
+ const result = await fetchFileDiff(props.repoId, props.commitSha, selectedFile.value, props.repoPath);
1496
+ hunks.value = result;
1497
+ if (viewMode.value === "full") {
1498
+ const content = await fetchFileContent(props.repoId, props.commitSha, selectedFile.value, props.repoPath);
1499
+ fileContent.value = content;
1500
+ } else {
1501
+ fileContent.value = null;
1502
+ }
1503
+ } catch (loadError) {
1504
+ fileDiffError.value = getErrorMessage(loadError, "Could not load file diff.");
1461
1505
  }
1462
1506
  }
1463
1507
  function toggleViewMode() {
@@ -1465,8 +1509,13 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
1465
1509
  }
1466
1510
  watch(viewMode, async (mode) => {
1467
1511
  if (mode === "full" && selectedFile.value && !fileContent.value) {
1468
- const content = await fetchFileContent(props.repoId, props.commitSha, selectedFile.value, props.repoPath);
1469
- fileContent.value = content;
1512
+ try {
1513
+ const content = await fetchFileContent(props.repoId, props.commitSha, selectedFile.value, props.repoPath);
1514
+ fileContent.value = content;
1515
+ fileDiffError.value = null;
1516
+ } catch (loadError) {
1517
+ fileDiffError.value = getErrorMessage(loadError, "Could not load file content.");
1518
+ }
1470
1519
  }
1471
1520
  });
1472
1521
  function handleFileSelect(path) {
@@ -1905,6 +1954,21 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
1905
1954
  const { fetchCommits, isLoadingCommits } = useGit();
1906
1955
  const commitDetails = ref(/* @__PURE__ */ new Map());
1907
1956
  const failedCommits = ref(/* @__PURE__ */ new Set());
1957
+ function toShaLookupValue(sha) {
1958
+ return sha.trim().toLowerCase();
1959
+ }
1960
+ function toRepoLookupValue(repo) {
1961
+ return (repo || "").trim();
1962
+ }
1963
+ function createCommitKey(sha, repo) {
1964
+ return `${toRepoLookupValue(repo)}::${toShaLookupValue(sha)}`;
1965
+ }
1966
+ function matchesRequestedSha(requestedSha, commit) {
1967
+ const requested = toShaLookupValue(requestedSha);
1968
+ const fullSha = toShaLookupValue(commit.sha);
1969
+ const shortSha = toShaLookupValue(commit.shortSha);
1970
+ return fullSha === requested || shortSha === requested || fullSha.startsWith(requested) || requested.startsWith(fullSha) || shortSha.startsWith(requested) || requested.startsWith(shortSha);
1971
+ }
1908
1972
  const hasMultipleRepos = computed(() => {
1909
1973
  const repos = new Set(props.commits.map((c) => c.repo).filter(Boolean));
1910
1974
  return repos.size > 1;
@@ -1929,19 +1993,34 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
1929
1993
  Array.from(commitsByRepo.entries()).map(async ([repoPath, shas]) => {
1930
1994
  const result = await fetchCommits(repoId, shas, repoPath || void 0);
1931
1995
  return {
1932
- commits: result.commits.map((c) => ({ ...c, repoPath })),
1996
+ repoPath,
1997
+ requestedShas: [...shas],
1998
+ commits: result.commits,
1933
1999
  failedShas: result.failedShas
1934
2000
  };
1935
2001
  })
1936
2002
  );
1937
2003
  const detailsMap = /* @__PURE__ */ new Map();
1938
2004
  const failed = /* @__PURE__ */ new Set();
1939
- for (const { commits: repoCommits, failedShas } of results) {
1940
- for (const commit of repoCommits) {
1941
- detailsMap.set(commit.shortSha, commit);
2005
+ for (const { repoPath, requestedShas, commits: repoCommits, failedShas } of results) {
2006
+ const remainingCommits = [...repoCommits];
2007
+ for (const requestedSha of requestedShas) {
2008
+ const key = createCommitKey(requestedSha, repoPath);
2009
+ const matchIndex = remainingCommits.findIndex((commit) => matchesRequestedSha(requestedSha, commit));
2010
+ if (matchIndex >= 0) {
2011
+ const [matchedCommit] = remainingCommits.splice(matchIndex, 1);
2012
+ if (matchedCommit) {
2013
+ detailsMap.set(key, {
2014
+ ...matchedCommit,
2015
+ repoPath
2016
+ });
2017
+ continue;
2018
+ }
2019
+ }
2020
+ failed.add(key);
1942
2021
  }
1943
2022
  for (const sha of failedShas) {
1944
- failed.add(sha);
2023
+ failed.add(createCommitKey(sha, repoPath));
1945
2024
  }
1946
2025
  }
1947
2026
  commitDetails.value = detailsMap;
@@ -1969,20 +2048,37 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
1969
2048
  return date.toLocaleDateString();
1970
2049
  }
1971
2050
  }
1972
- function getDetails(sha) {
1973
- const direct = commitDetails.value.get(sha);
1974
- if (direct) return direct;
2051
+ function getDetails(commitRef) {
2052
+ const direct = commitDetails.value.get(createCommitKey(commitRef.sha, commitRef.repo));
2053
+ if (direct) {
2054
+ return direct;
2055
+ }
2056
+ const requestedSha = toShaLookupValue(commitRef.sha);
2057
+ const repoPrefix = `${toRepoLookupValue(commitRef.repo)}::`;
1975
2058
  for (const [key, commit] of commitDetails.value) {
1976
- if (key.startsWith(sha) || sha.startsWith(key)) {
2059
+ if (!key.startsWith(repoPrefix)) {
2060
+ continue;
2061
+ }
2062
+ const storedSha = key.slice(repoPrefix.length);
2063
+ if (storedSha.startsWith(requestedSha) || requestedSha.startsWith(storedSha)) {
1977
2064
  return commit;
1978
2065
  }
1979
2066
  }
1980
2067
  return void 0;
1981
2068
  }
1982
- function isFailed(sha) {
1983
- if (failedCommits.value.has(sha)) return true;
1984
- for (const failedSha of failedCommits.value) {
1985
- if (failedSha.startsWith(sha) || sha.startsWith(failedSha)) {
2069
+ function isFailed(commitRef) {
2070
+ const directKey = createCommitKey(commitRef.sha, commitRef.repo);
2071
+ if (failedCommits.value.has(directKey)) {
2072
+ return true;
2073
+ }
2074
+ const requestedSha = toShaLookupValue(commitRef.sha);
2075
+ const repoPrefix = `${toRepoLookupValue(commitRef.repo)}::`;
2076
+ for (const failedKey of failedCommits.value) {
2077
+ if (!failedKey.startsWith(repoPrefix)) {
2078
+ continue;
2079
+ }
2080
+ const failedSha = failedKey.slice(repoPrefix.length);
2081
+ if (failedSha.startsWith(requestedSha) || requestedSha.startsWith(failedSha)) {
1986
2082
  return true;
1987
2083
  }
1988
2084
  }
@@ -2003,15 +2099,15 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
2003
2099
  ssrRenderList(__props.commits, (commit) => {
2004
2100
  _push(`<button class="w-full rounded-lg border bg-card p-3 text-left transition-colors hover:bg-muted/50 focus:outline-none focus:ring-2 focus:ring-ring"><div class="flex items-start gap-3">`);
2005
2101
  _push(ssrRenderComponent(unref(GitCommit), { class: "mt-0.5 size-5 shrink-0 text-muted-foreground" }, null, _parent));
2006
- _push(`<div class="min-w-0 flex-1"><div class="flex flex-wrap items-center gap-2"><code class="font-mono text-xs font-medium text-primary">${ssrInterpolate(getDetails(commit.sha)?.shortSha || commit.sha.substring(0, 7))}</code>`);
2007
- if (getDetails(commit.sha)) {
2102
+ _push(`<div class="min-w-0 flex-1"><div class="flex flex-wrap items-center gap-2"><code class="font-mono text-xs font-medium text-primary">${ssrInterpolate(getDetails(commit)?.shortSha || commit.sha.substring(0, 7))}</code>`);
2103
+ if (getDetails(commit)) {
2008
2104
  _push(`<!--[--><span class="flex items-center gap-1 text-xs text-muted-foreground">`);
2009
2105
  _push(ssrRenderComponent(unref(FileText), { class: "size-3" }, null, _parent));
2010
- _push(` ${ssrInterpolate(getDetails(commit.sha).filesChanged)}</span><span class="flex items-center gap-0.5 text-xs text-green-600 dark:text-green-400">`);
2106
+ _push(` ${ssrInterpolate(getDetails(commit).filesChanged)}</span><span class="flex items-center gap-0.5 text-xs text-green-600 dark:text-green-400">`);
2011
2107
  _push(ssrRenderComponent(unref(Plus), { class: "size-3" }, null, _parent));
2012
- _push(`${ssrInterpolate(getDetails(commit.sha).additions)}</span><span class="flex items-center gap-0.5 text-xs text-red-600 dark:text-red-400">`);
2108
+ _push(`${ssrInterpolate(getDetails(commit).additions)}</span><span class="flex items-center gap-0.5 text-xs text-red-600 dark:text-red-400">`);
2013
2109
  _push(ssrRenderComponent(unref(Minus), { class: "size-3" }, null, _parent));
2014
- _push(`${ssrInterpolate(getDetails(commit.sha).deletions)}</span><!--]-->`);
2110
+ _push(`${ssrInterpolate(getDetails(commit).deletions)}</span><!--]-->`);
2015
2111
  } else {
2016
2112
  _push(`<!---->`);
2017
2113
  }
@@ -2037,9 +2133,9 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
2037
2133
  _push(`<!---->`);
2038
2134
  }
2039
2135
  _push(`</div><p class="mt-1 truncate text-sm">`);
2040
- if (getDetails(commit.sha)) {
2041
- _push(`<!--[-->${ssrInterpolate(getDetails(commit.sha).message)}<!--]-->`);
2042
- } else if (isFailed(commit.sha)) {
2136
+ if (getDetails(commit)) {
2137
+ _push(`<!--[-->${ssrInterpolate(getDetails(commit).message)}<!--]-->`);
2138
+ } else if (isFailed(commit)) {
2043
2139
  _push(`<span class="flex items-center gap-1 text-muted-foreground">`);
2044
2140
  _push(ssrRenderComponent(unref(AlertCircle), { class: "size-3" }, null, _parent));
2045
2141
  _push(` Commit unavailable </span>`);
@@ -2047,8 +2143,8 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
2047
2143
  _push(`<span class="text-muted-foreground">Loading...</span>`);
2048
2144
  }
2049
2145
  _push(`</p>`);
2050
- if (getDetails(commit.sha)) {
2051
- _push(`<p class="mt-1 text-xs text-muted-foreground">${ssrInterpolate(getDetails(commit.sha).author)} · ${ssrInterpolate(formatRelativeDate(getDetails(commit.sha).date))}</p>`);
2146
+ if (getDetails(commit)) {
2147
+ _push(`<p class="mt-1 text-xs text-muted-foreground">${ssrInterpolate(getDetails(commit).author)} · ${ssrInterpolate(formatRelativeDate(getDetails(commit).date))}</p>`);
2052
2148
  } else {
2053
2149
  _push(`<!---->`);
2054
2150
  }
@@ -3445,4 +3541,4 @@ _sfc_main.setup = (props, ctx) => {
3445
3541
  const __nuxt_component_1 = Object.assign(_sfc_main, { __name: "TasksDetail" });
3446
3542
 
3447
3543
  export { Badge as B, __nuxt_component_0$2 as _, __nuxt_component_1 as a };
3448
- //# sourceMappingURL=Detail-CUfU85GY.mjs.map
3544
+ //# sourceMappingURL=Detail-BQSkP9Zm.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Detail-BQSkP9Zm.mjs","sources":["../../../../node_modules/@dagrejs/dagre/dist/dagre.esm.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/Detail-BQSkP9Zm.js"],"names":[],"mappings":"","x_google_ignoreList":[0,1]}
@@ -0,0 +1,4 @@
1
+ const DiffViewer_vue_vue_type_style_index_0_scoped_a5da7e6e_lang = ".diff-viewer[data-v-a5da7e6e]{color:hsl(var(--foreground));font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Monaco,Consolas,monospace;font-size:.8125rem;line-height:1.5}.diff-container[data-v-a5da7e6e]{overflow-x:auto}.diff-toolbar[data-v-a5da7e6e]{background:hsl(var(--muted)/.3);border-bottom:1px solid hsl(var(--border));display:flex;justify-content:flex-end;padding:.25rem .5rem}.diff-split[data-v-a5da7e6e]{display:flex;min-width:100%}.diff-column[data-v-a5da7e6e]{flex:1;min-width:0;overflow-x:auto}.diff-column-left[data-v-a5da7e6e]{border-right:1px solid hsl(var(--border))}.diff-column-content[data-v-a5da7e6e]{min-width:-moz-fit-content;min-width:fit-content}.diff-line[data-v-a5da7e6e]{display:flex}.diff-gutter[data-v-a5da7e6e]{background:hsl(var(--muted)/.3);color:hsl(var(--muted-foreground));flex-shrink:0;padding:0 .5rem;text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:3.5rem}.line-number[data-v-a5da7e6e]{display:inline-block;min-width:2rem;opacity:.7}.diff-content[data-v-a5da7e6e]{color:hsl(var(--foreground));flex:1;min-width:0;padding:0 .5rem;white-space:pre}.diff-code[data-v-a5da7e6e]{color:inherit;display:inline}.diff-add[data-v-a5da7e6e]{background:#16a24926}.diff-add .diff-gutter[data-v-a5da7e6e]{background:#16a24940}.diff-remove[data-v-a5da7e6e]{background:#ef434326}.diff-remove .diff-gutter[data-v-a5da7e6e]{background:#ef434340}.diff-empty[data-v-a5da7e6e]{background:hsl(var(--muted)/.2)}.diff-empty .diff-gutter[data-v-a5da7e6e]{background:hsl(var(--muted)/.3)}.diff-context[data-v-a5da7e6e]{background:transparent}.full-file-view[data-v-a5da7e6e]{min-width:100%}.full-file-line[data-v-a5da7e6e]{display:flex}.full-file-line .diff-gutter[data-v-a5da7e6e]{width:4rem}.full-file-line.diff-add[data-v-a5da7e6e]{background:#16a24926}.full-file-line.diff-add .diff-gutter[data-v-a5da7e6e]{background:#16a24940}.dark .full-file-line.diff-add[data-v-a5da7e6e]{background:#16a2491a}.dark .full-file-line.diff-add .diff-gutter[data-v-a5da7e6e]{background:#16a24933}.diff-separator[data-v-a5da7e6e],.diff-separator-half[data-v-a5da7e6e]{align-items:center;background:hsl(var(--muted)/.4);display:flex;padding:.25rem 0}.separator-line[data-v-a5da7e6e]{background:hsl(var(--border));flex:1;height:1px}.separator-text[data-v-a5da7e6e]{color:hsl(var(--muted-foreground));font-size:.75rem;padding:0 .75rem}.dark .diff-add[data-v-a5da7e6e]{background:#16a2491a}.dark .diff-add .diff-gutter[data-v-a5da7e6e]{background:#16a24933}.dark .diff-remove[data-v-a5da7e6e]{background:#ef43431a}.dark .diff-remove .diff-gutter[data-v-a5da7e6e]{background:#ef434333}[data-v-a5da7e6e] .shiki span,[data-v-a5da7e6e] .shiki{background:transparent!important}";
2
+
3
+ export { DiffViewer_vue_vue_type_style_index_0_scoped_a5da7e6e_lang as D };
4
+ //# sourceMappingURL=DiffViewer-styles-1.mjs-BFsE2PCW.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffViewer-styles-1.mjs-BFsE2PCW.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/DiffViewer-styles-1.mjs-BFsE2PCW.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
@@ -0,0 +1,8 @@
1
+ import { D as DiffViewer_vue_vue_type_style_index_0_scoped_a5da7e6e_lang } from './DiffViewer-styles-1.mjs-BFsE2PCW.mjs';
2
+
3
+ const DiffViewerStyles_D2bqX3nK = [
4
+ DiffViewer_vue_vue_type_style_index_0_scoped_a5da7e6e_lang
5
+ ];
6
+
7
+ export { DiffViewerStyles_D2bqX3nK as default };
8
+ //# sourceMappingURL=DiffViewer-styles.D2bqX3nK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffViewer-styles.D2bqX3nK.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/DiffViewer-styles.D2bqX3nK.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0]}
@@ -0,0 +1,10 @@
1
+ import { D as DiffViewer_vue_vue_type_style_index_0_scoped_a5da7e6e_lang } from './DiffViewer-styles-1.mjs-BFsE2PCW.mjs';
2
+ import { D as DiffViewer_vue_vue_type_style_index_1_lang } from './DiffViewer-styles-2.mjs-X6QKNjM0.mjs';
3
+
4
+ const DiffViewerStyles_FoV36wuV = [
5
+ DiffViewer_vue_vue_type_style_index_0_scoped_a5da7e6e_lang,
6
+ DiffViewer_vue_vue_type_style_index_1_lang
7
+ ];
8
+
9
+ export { DiffViewerStyles_FoV36wuV as default };
10
+ //# sourceMappingURL=DiffViewer-styles.FoV36wuV.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffViewer-styles.FoV36wuV.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/DiffViewer-styles.FoV36wuV.mjs"],"names":["style_0","style_1"],"mappings":"","x_google_ignoreList":[0]}
@@ -0,0 +1,8 @@
1
+ const Viewer_vue_vue_type_style_index_0_lang = ".prd-viewer .prose{--tw-prose-body:var(--foreground);--tw-prose-headings:var(--foreground);--tw-prose-links:var(--primary);--tw-prose-code:var(--foreground);--tw-prose-pre-bg:var(--muted);--tw-prose-quotes:var(--muted-foreground);--tw-prose-hr:var(--border)}.prd-viewer .prose h1,.prd-viewer .prose h2,.prd-viewer .prose h3,.prd-viewer .prose h4{font-weight:600;margin-bottom:.5em;margin-top:1.5em}.prd-viewer .prose h1{border-bottom:1px solid var(--border);font-size:1.875rem;padding-bottom:.5rem}.prd-viewer .prose h2{border-bottom:1px solid var(--border);font-size:1.5rem;padding-bottom:.25rem}.prd-viewer .prose h3{font-size:1.25rem}.prd-viewer .prose p{line-height:1.7;margin-bottom:.75em;margin-top:.75em}.prd-viewer .prose a{color:var(--primary);text-decoration:underline;text-underline-offset:2px}.prd-viewer .prose a:hover{opacity:.8}.prd-viewer .prose code:not(pre code){background:var(--muted);border-radius:.25rem;font-size:.875em;font-weight:500;padding:.125rem .375rem}.prd-viewer .prose pre{background:var(--muted);border-radius:.5rem;margin:1rem 0;overflow-x:auto;padding:1rem}.prd-viewer .prose pre.shiki{background-color:var(--muted)!important}.prd-viewer .prose .shiki code{background:transparent;font-size:.875rem;line-height:1.5;padding:0}.dark .prd-viewer .prose .shiki,.dark .prd-viewer .prose pre.shiki{background-color:var(--muted)!important}.dark .prd-viewer .prose .shiki.github-light,.light .prd-viewer .prose .shiki.github-dark,:not(.dark) .prd-viewer .prose .shiki.github-dark{display:none!important}.prd-viewer .prose table{border-collapse:collapse;margin:1rem 0;width:100%}.prd-viewer .prose td,.prd-viewer .prose th{border:1px solid var(--border);padding:.5rem .75rem;text-align:left}.prd-viewer .prose th{background:var(--muted);font-weight:600}.prd-viewer .prose tr:nth-child(2n){background:color-mix(in oklch,var(--muted) 30%,transparent)}.prd-viewer .prose ol,.prd-viewer .prose ul{margin:.75em 0;padding-left:1.5rem}.prd-viewer .prose li{margin:.25em 0}.prd-viewer .prose ul{list-style-type:disc}.prd-viewer .prose ol{list-style-type:decimal}.prd-viewer .prose input[type=checkbox]{margin-right:.5rem;pointer-events:none}.prd-viewer .prose blockquote{border-left:4px solid var(--border);color:var(--muted-foreground);font-style:italic;margin:1rem 0;padding-left:1rem}.prd-viewer .prose hr{border:none;border-top:1px solid var(--border);margin:2rem 0}.prd-viewer .prose img{border-radius:.5rem;height:auto;margin:1rem 0;max-width:100%}";
2
+
3
+ const ViewerStyles_D6wYWFb1 = [
4
+ Viewer_vue_vue_type_style_index_0_lang
5
+ ];
6
+
7
+ export { ViewerStyles_D6wYWFb1 as default };
8
+ //# sourceMappingURL=Viewer-styles.D6wYWFb1.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Viewer-styles.D6wYWFb1.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/Viewer-styles-1.mjs-D92u4Pso.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/Viewer-styles.D6wYWFb1.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]}