app-ai-solution-exp 0.1.7 → 0.1.8

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 (22) hide show
  1. package/out/main/index.js +155 -29
  2. package/out/preload/index.js +2 -1
  3. package/out/renderer/assets/{cssMode-0REew4-I.js → cssMode-Djbzf0LR.js} +3 -3
  4. package/out/renderer/assets/{freemarker2-DGOHYByW.js → freemarker2-plN48J_D.js} +1 -1
  5. package/out/renderer/assets/{handlebars-BqVGkTnX.js → handlebars-DkGSdJeE.js} +1 -1
  6. package/out/renderer/assets/{html-SBYz9B6Z.js → html-GfH6N1Gv.js} +1 -1
  7. package/out/renderer/assets/{htmlMode-CGiY9fYI.js → htmlMode-rVPkSV1Q.js} +3 -3
  8. package/out/renderer/assets/{index-D1jw-q7W.js → index-BmudFTDL.js} +511 -261
  9. package/out/renderer/assets/{index-BmTOg-UU.css → index-DCXeENj2.css} +92 -4
  10. package/out/renderer/assets/{javascript-C0APGOR5.js → javascript-PIyGYu6r.js} +2 -2
  11. package/out/renderer/assets/{jsonMode-Bp6cgaVL.js → jsonMode-1NERwSWX.js} +3 -3
  12. package/out/renderer/assets/{liquid-Azv9oa6C.js → liquid-DFsQCm0l.js} +1 -1
  13. package/out/renderer/assets/{lspLanguageFeatures-gtRC0h19.js → lspLanguageFeatures-UQJ0l2cB.js} +1 -1
  14. package/out/renderer/assets/{mdx-BFq9ZGPW.js → mdx-pETBiXt-.js} +1 -1
  15. package/out/renderer/assets/{python-Bmt9B2If.js → python-C-ndJWZ6.js} +1 -1
  16. package/out/renderer/assets/{razor-DNyVX9o_.js → razor-ccgYQ7JO.js} +1 -1
  17. package/out/renderer/assets/{tsMode-B-gbMtTM.js → tsMode-P6prXeLi.js} +1 -1
  18. package/out/renderer/assets/{typescript-EOW0R50S.js → typescript-D2Zozwub.js} +1 -1
  19. package/out/renderer/assets/{xml-Dvlj5OXN.js → xml-L2644zxV.js} +1 -1
  20. package/out/renderer/assets/{yaml-CUjhit4r.js → yaml-5rwJYQiz.js} +1 -1
  21. package/out/renderer/index.html +2 -2
  22. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cssMode-0REew4-I.js","./lspLanguageFeatures-gtRC0h19.js","./htmlMode-CGiY9fYI.js","./jsonMode-Bp6cgaVL.js","./javascript-C0APGOR5.js","./typescript-EOW0R50S.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cssMode-Djbzf0LR.js","./lspLanguageFeatures-UQJ0l2cB.js","./htmlMode-rVPkSV1Q.js","./jsonMode-1NERwSWX.js","./javascript-PIyGYu6r.js","./typescript-D2Zozwub.js"])))=>i.map(i=>d[i]);
2
2
  function _mergeNamespaces(n2, m2) {
3
3
  for (var i2 = 0; i2 < m2.length; i2++) {
4
4
  const e = m2[i2];
@@ -29393,7 +29393,8 @@ const ipc = {
29393
29393
  detectOrphan: (profileId) => getElectronAPI().history.detectOrphan(profileId),
29394
29394
  readOrphanContent: (jsonlPath) => getElectronAPI().history.readOrphanContent(jsonlPath),
29395
29395
  listNativeSessions: () => getElectronAPI().history.listNativeSessions(),
29396
- readNativeSessionConversation: (sessionId) => getElectronAPI().history.readNativeSessionConversation(sessionId)
29396
+ readNativeSessionConversation: (sessionId) => getElectronAPI().history.readNativeSessionConversation(sessionId),
29397
+ deleteNativeSession: (sessionId) => getElectronAPI().history.deleteNativeSession(sessionId)
29397
29398
  },
29398
29399
  summary: {
29399
29400
  generate: (payload) => getElectronAPI().summary.generate(payload)
@@ -29618,18 +29619,18 @@ const createLucideIcon = (iconName, iconNode) => {
29618
29619
  * This source code is licensed under the ISC license.
29619
29620
  * See the LICENSE file in the root directory of this source tree.
29620
29621
  */
29621
- const __iconNode$L = [
29622
+ const __iconNode$M = [
29622
29623
  ["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
29623
29624
  ["path", { d: "M19 12H5", key: "x3x0zl" }]
29624
29625
  ];
29625
- const ArrowLeft = createLucideIcon("ArrowLeft", __iconNode$L);
29626
+ const ArrowLeft = createLucideIcon("ArrowLeft", __iconNode$M);
29626
29627
  /**
29627
29628
  * @license lucide-react v0.475.0 - ISC
29628
29629
  *
29629
29630
  * This source code is licensed under the ISC license.
29630
29631
  * See the LICENSE file in the root directory of this source tree.
29631
29632
  */
29632
- const __iconNode$K = [
29633
+ const __iconNode$L = [
29633
29634
  ["path", { d: "M12 8V4H8", key: "hb8ula" }],
29634
29635
  ["rect", { width: "16", height: "12", x: "4", y: "8", rx: "2", key: "enze0r" }],
29635
29636
  ["path", { d: "M2 14h2", key: "vft8re" }],
@@ -29637,80 +29638,91 @@ const __iconNode$K = [
29637
29638
  ["path", { d: "M15 13v2", key: "1xurst" }],
29638
29639
  ["path", { d: "M9 13v2", key: "rq6x2g" }]
29639
29640
  ];
29640
- const Bot = createLucideIcon("Bot", __iconNode$K);
29641
+ const Bot = createLucideIcon("Bot", __iconNode$L);
29641
29642
  /**
29642
29643
  * @license lucide-react v0.475.0 - ISC
29643
29644
  *
29644
29645
  * This source code is licensed under the ISC license.
29645
29646
  * See the LICENSE file in the root directory of this source tree.
29646
29647
  */
29647
- const __iconNode$J = [
29648
+ const __iconNode$K = [
29648
29649
  ["path", { d: "M8 2v4", key: "1cmpym" }],
29649
29650
  ["path", { d: "M16 2v4", key: "4m81vk" }],
29650
29651
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
29651
29652
  ["path", { d: "M3 10h18", key: "8toen8" }]
29652
29653
  ];
29653
- const Calendar = createLucideIcon("Calendar", __iconNode$J);
29654
+ const Calendar = createLucideIcon("Calendar", __iconNode$K);
29654
29655
  /**
29655
29656
  * @license lucide-react v0.475.0 - ISC
29656
29657
  *
29657
29658
  * This source code is licensed under the ISC license.
29658
29659
  * See the LICENSE file in the root directory of this source tree.
29659
29660
  */
29660
- const __iconNode$I = [
29661
+ const __iconNode$J = [
29661
29662
  ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }],
29662
29663
  ["path", { d: "M18 17V9", key: "2bz60n" }],
29663
29664
  ["path", { d: "M13 17V5", key: "1frdt8" }],
29664
29665
  ["path", { d: "M8 17v-3", key: "17ska0" }]
29665
29666
  ];
29666
- const ChartColumn = createLucideIcon("ChartColumn", __iconNode$I);
29667
+ const ChartColumn = createLucideIcon("ChartColumn", __iconNode$J);
29667
29668
  /**
29668
29669
  * @license lucide-react v0.475.0 - ISC
29669
29670
  *
29670
29671
  * This source code is licensed under the ISC license.
29671
29672
  * See the LICENSE file in the root directory of this source tree.
29672
29673
  */
29673
- const __iconNode$H = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
29674
- const Check = createLucideIcon("Check", __iconNode$H);
29674
+ const __iconNode$I = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
29675
+ const Check = createLucideIcon("Check", __iconNode$I);
29675
29676
  /**
29676
29677
  * @license lucide-react v0.475.0 - ISC
29677
29678
  *
29678
29679
  * This source code is licensed under the ISC license.
29679
29680
  * See the LICENSE file in the root directory of this source tree.
29680
29681
  */
29681
- const __iconNode$G = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
29682
- const ChevronLeft = createLucideIcon("ChevronLeft", __iconNode$G);
29682
+ const __iconNode$H = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
29683
+ const ChevronLeft = createLucideIcon("ChevronLeft", __iconNode$H);
29683
29684
  /**
29684
29685
  * @license lucide-react v0.475.0 - ISC
29685
29686
  *
29686
29687
  * This source code is licensed under the ISC license.
29687
29688
  * See the LICENSE file in the root directory of this source tree.
29688
29689
  */
29689
- const __iconNode$F = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
29690
- const ChevronRight = createLucideIcon("ChevronRight", __iconNode$F);
29690
+ const __iconNode$G = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
29691
+ const ChevronRight = createLucideIcon("ChevronRight", __iconNode$G);
29691
29692
  /**
29692
29693
  * @license lucide-react v0.475.0 - ISC
29693
29694
  *
29694
29695
  * This source code is licensed under the ISC license.
29695
29696
  * See the LICENSE file in the root directory of this source tree.
29696
29697
  */
29697
- const __iconNode$E = [
29698
+ const __iconNode$F = [
29698
29699
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
29699
29700
  ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
29700
29701
  ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
29701
29702
  ];
29702
- const CircleAlert = createLucideIcon("CircleAlert", __iconNode$E);
29703
+ const CircleAlert = createLucideIcon("CircleAlert", __iconNode$F);
29703
29704
  /**
29704
29705
  * @license lucide-react v0.475.0 - ISC
29705
29706
  *
29706
29707
  * This source code is licensed under the ISC license.
29707
29708
  * See the LICENSE file in the root directory of this source tree.
29708
29709
  */
29709
- const __iconNode$D = [
29710
+ const __iconNode$E = [
29710
29711
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
29711
29712
  ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
29712
29713
  ];
29713
- const CircleCheck = createLucideIcon("CircleCheck", __iconNode$D);
29714
+ const CircleCheck = createLucideIcon("CircleCheck", __iconNode$E);
29715
+ /**
29716
+ * @license lucide-react v0.475.0 - ISC
29717
+ *
29718
+ * This source code is licensed under the ISC license.
29719
+ * See the LICENSE file in the root directory of this source tree.
29720
+ */
29721
+ const __iconNode$D = [
29722
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
29723
+ ["polygon", { points: "10 8 16 12 10 16 10 8", key: "1cimsy" }]
29724
+ ];
29725
+ const CirclePlay = createLucideIcon("CirclePlay", __iconNode$D);
29714
29726
  /**
29715
29727
  * @license lucide-react v0.475.0 - ISC
29716
29728
  *
@@ -56228,6 +56240,7 @@ function SessionPage() {
56228
56240
  const projectClaudeMdRef = reactExports.useRef("");
56229
56241
  const fullSummaryContentRef = reactExports.useRef("");
56230
56242
  const isSwitchingModelRef = reactExports.useRef(false);
56243
+ const hasPrefilledRef = reactExports.useRef(false);
56231
56244
  const state = location.state ?? {};
56232
56245
  const workingDirectory = state.workingDirectory ?? "";
56233
56246
  const liveSession = session ? getSession(session.id) ?? session : null;
@@ -56245,10 +56258,16 @@ function SessionPage() {
56245
56258
  setRecentSummary(null);
56246
56259
  projectClaudeMdRef.current = "";
56247
56260
  fullSummaryContentRef.current = "";
56261
+ hasPrefilledRef.current = false;
56248
56262
  const existing = getSessionByProfileId(profileId);
56249
56263
  if (existing) {
56250
56264
  setSession(existing);
56251
56265
  setPhase("running");
56266
+ if (state.contextToInject && workingDirectory) {
56267
+ const mdPath = workingDirectory.replace(/\\/g, "/") + "/CLAUDE.md";
56268
+ ipc.fs.injectContext(mdPath, state.contextToInject).catch(() => {
56269
+ });
56270
+ }
56252
56271
  return;
56253
56272
  }
56254
56273
  const claudeMdPath = getClaudeMdPath();
@@ -56362,6 +56381,14 @@ function SessionPage() {
56362
56381
  setShowSummaryModal(false);
56363
56382
  navigate("/dashboard");
56364
56383
  }
56384
+ reactExports.useEffect(() => {
56385
+ if (liveSession && state.prefillMessage && !hasPrefilledRef.current) {
56386
+ hasPrefilledRef.current = true;
56387
+ setTimeout(() => {
56388
+ ipc.terminal.input(liveSession.id, state.prefillMessage);
56389
+ }, 1500);
56390
+ }
56391
+ }, [liveSession, state.prefillMessage]);
56365
56392
  const durationMin = session ? Math.round((Date.now() - sessionStartedAt.current.getTime()) / 6e4) : 0;
56366
56393
  if (phase === "checking" || phase === "starting") {
56367
56394
  return /* @__PURE__ */ jsxRuntimeExports.jsx(SessionLayout, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-1 items-center justify-center", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: phase === "checking" ? "Verificando histórico..." : "Iniciando sessão..." }) }) });
@@ -56414,6 +56441,17 @@ function SessionList({
56414
56441
  profileNames
56415
56442
  }) {
56416
56443
  const navigate = useNavigate();
56444
+ const queryClient2 = useQueryClient();
56445
+ async function handleDeleteNative(e, sessionId) {
56446
+ e.stopPropagation();
56447
+ try {
56448
+ await ipc.history.deleteNativeSession(sessionId);
56449
+ queryClient2.invalidateQueries({ queryKey: ["history", "native-sessions"] });
56450
+ ue$1.success("Sessão excluída");
56451
+ } catch {
56452
+ ue$1.error("Erro ao excluir sessão");
56453
+ }
56454
+ }
56417
56455
  if (isLoading) {
56418
56456
  return /* @__PURE__ */ jsxRuntimeExports.jsx("ul", { className: "space-y-2", "aria-label": "Carregando histórico", children: Array.from({ length: 5 }).map((_2, i2) => /* @__PURE__ */ jsxRuntimeExports.jsxs("li", { className: "rounded-lg border border-border bg-card p-4", children: [
56419
56457
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start justify-between gap-3", children: [
@@ -56425,18 +56463,16 @@ function SessionList({
56425
56463
  ] }, i2)) });
56426
56464
  }
56427
56465
  const filteredSummaries = selectedProfileId ? summaries.filter((s2) => s2.profileId === selectedProfileId) : summaries;
56428
- const filteredNative = selectedProfileId ? [] : nativeSessions;
56466
+ const filteredNative = selectedProfileId ? nativeSessions.filter((s2) => s2.profileId === selectedProfileId) : nativeSessions;
56429
56467
  let items = [
56430
56468
  ...filteredSummaries.map((s2) => ({
56431
56469
  kind: "cm",
56432
56470
  data: s2,
56433
- // YYYY-MM-DD_HH-MM → comparável diretamente (lexicográfico = cronológico)
56434
56471
  sortKey: s2.date
56435
56472
  })),
56436
56473
  ...filteredNative.map((s2) => ({
56437
56474
  kind: "native",
56438
56475
  data: s2,
56439
- // ISO 8601 → slice para YYYY-MM-DDTHH-MM para comparar com o mesmo formato
56440
56476
  sortKey: s2.lastMessageAt
56441
56477
  }))
56442
56478
  ];
@@ -56525,22 +56561,39 @@ function SessionList({
56525
56561
  state: { session: native }
56526
56562
  }),
56527
56563
  className: cn(
56528
- "w-full rounded-lg border border-border bg-card p-4 text-left transition-colors",
56564
+ "group w-full rounded-lg border border-border bg-card p-4 text-left transition-colors",
56529
56565
  "hover:border-border/80 hover:bg-card/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
56530
56566
  ),
56531
56567
  children: [
56532
56568
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start justify-between gap-3", children: [
56533
56569
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
56534
56570
  /* @__PURE__ */ jsxRuntimeExports.jsx(Terminal$1, { size: 14, className: "shrink-0 text-muted-foreground", "aria-hidden": "true" }),
56535
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate text-sm font-medium", children: native.projectName }),
56571
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate text-sm font-medium", children: native.profileId && profileNames[native.profileId] ? profileNames[native.profileId] : native.projectName }),
56536
56572
  /* @__PURE__ */ jsxRuntimeExports.jsx(Badge, { variant: "secondary", className: "shrink-0 text-xs", children: "Nativo" })
56537
56573
  ] }),
56538
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 text-right", children: [
56539
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs text-muted-foreground", children: formatNativeDate(native.lastMessageAt) }),
56540
- /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs text-muted-foreground/60", children: [
56541
- native.messageCount,
56542
- " msgs"
56543
- ] })
56574
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
56575
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 text-right", children: [
56576
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs text-muted-foreground", children: formatNativeDate(native.lastMessageAt) }),
56577
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs text-muted-foreground/60", children: [
56578
+ native.messageCount,
56579
+ " interações"
56580
+ ] })
56581
+ ] }),
56582
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
56583
+ "button",
56584
+ {
56585
+ type: "button",
56586
+ onClick: (e) => handleDeleteNative(e, native.sessionId),
56587
+ className: cn(
56588
+ "rounded-md p-1.5 text-muted-foreground/40 transition-colors",
56589
+ "opacity-0 group-hover:opacity-100",
56590
+ "hover:bg-destructive/10 hover:text-destructive",
56591
+ "focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
56592
+ ),
56593
+ title: "Excluir sessão",
56594
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, { size: 14, "aria-hidden": "true" })
56595
+ }
56596
+ )
56544
56597
  ] })
56545
56598
  ] }),
56546
56599
  native.firstMessage && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mt-2 line-clamp-2 text-xs text-muted-foreground", children: native.firstMessage })
@@ -56576,13 +56629,41 @@ function useAllHistorySummaries(profileIds) {
56576
56629
  });
56577
56630
  }
56578
56631
  function HistoryPage() {
56579
- const [searchTerm, setSearchTerm] = reactExports.useState("");
56580
- const [selectedProfileId, setSelectedProfileId] = reactExports.useState(void 0);
56581
- const { data: profiles = [] } = useProfiles();
56632
+ const [searchTerm, setSearchTerm] = reactExports.useState(() => sessionStorage.getItem("cm:history:search") || "");
56633
+ const [selectedProfileId, setSelectedProfileId] = reactExports.useState(
56634
+ () => sessionStorage.getItem("cm:history:profile") || void 0
56635
+ );
56636
+ const scrollContainerRef = reactExports.useRef(null);
56637
+ reactExports.useEffect(() => {
56638
+ sessionStorage.setItem("cm:history:search", searchTerm);
56639
+ }, [searchTerm]);
56640
+ reactExports.useEffect(() => {
56641
+ if (selectedProfileId) {
56642
+ sessionStorage.setItem("cm:history:profile", selectedProfileId);
56643
+ } else {
56644
+ sessionStorage.removeItem("cm:history:profile");
56645
+ }
56646
+ }, [selectedProfileId]);
56647
+ const { data: profilesData = [] } = useProfiles();
56648
+ const profiles = profilesData;
56582
56649
  const profileIds = profiles.map((p2) => p2.id);
56583
56650
  const { data: summaries = [], isLoading: isLoadingSummaries } = useAllHistorySummaries(profileIds);
56584
56651
  const { data: nativeSessions = [], isLoading: isLoadingNative } = useNativeSessions();
56585
56652
  const isLoading = isLoadingSummaries || isLoadingNative;
56653
+ reactExports.useEffect(() => {
56654
+ const savedScroll = sessionStorage.getItem("cm:history:scroll");
56655
+ if (savedScroll && scrollContainerRef.current) {
56656
+ const timeoutId = setTimeout(() => {
56657
+ if (scrollContainerRef.current) {
56658
+ scrollContainerRef.current.scrollTop = parseInt(savedScroll, 10);
56659
+ }
56660
+ }, 100);
56661
+ return () => clearTimeout(timeoutId);
56662
+ }
56663
+ }, [summaries.length, nativeSessions.length]);
56664
+ function handleScroll2(e) {
56665
+ sessionStorage.setItem("cm:history:scroll", e.currentTarget.scrollTop.toString());
56666
+ }
56586
56667
  const profileNames = Object.fromEntries(profiles.map((p2) => [p2.id, p2.name]));
56587
56668
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-1 flex-col overflow-hidden", children: [
56588
56669
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "border-b border-border px-6 py-4", children: [
@@ -56641,17 +56722,25 @@ function HistoryPage() {
56641
56722
  ))
56642
56723
  ] })
56643
56724
  ] }) }),
56644
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto px-6 py-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
56645
- SessionList,
56725
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
56726
+ "div",
56646
56727
  {
56647
- summaries,
56648
- nativeSessions,
56649
- isLoading,
56650
- searchTerm,
56651
- selectedProfileId,
56652
- profileNames
56728
+ ref: scrollContainerRef,
56729
+ className: "flex-1 overflow-y-auto px-6 py-4",
56730
+ onScroll: handleScroll2,
56731
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
56732
+ SessionList,
56733
+ {
56734
+ summaries,
56735
+ nativeSessions,
56736
+ isLoading,
56737
+ searchTerm,
56738
+ selectedProfileId,
56739
+ profileNames
56740
+ }
56741
+ )
56653
56742
  }
56654
- ) })
56743
+ )
56655
56744
  ] });
56656
56745
  }
56657
56746
  function ok$2() {
@@ -89945,6 +90034,80 @@ function NativeSessionDetailPage() {
89945
90034
  const [isLoading, setIsLoading] = reactExports.useState(true);
89946
90035
  const state = location.state ?? {};
89947
90036
  const session = state.session;
90037
+ const { data: profiles = [] } = useProfiles();
90038
+ const profileName = session?.profileId ? profiles.find((p2) => p2.id === session.profileId)?.name : void 0;
90039
+ const displayName = profileName ?? session?.projectName ?? "";
90040
+ const [showContinueModal, setShowContinueModal] = reactExports.useState(false);
90041
+ const [selectedProfileId, setSelectedProfileId] = reactExports.useState("");
90042
+ const [isStarting, setIsStarting] = reactExports.useState(false);
90043
+ reactExports.useEffect(() => {
90044
+ if (showContinueModal && profiles.length > 0 && !selectedProfileId) {
90045
+ const defaultId = session?.profileId ?? profiles[0]?.id ?? "";
90046
+ setSelectedProfileId(defaultId);
90047
+ }
90048
+ }, [showContinueModal, profiles, selectedProfileId, session?.profileId]);
90049
+ const [quotaMap, setQuotaMap] = reactExports.useState({});
90050
+ const [quotaLoading, setQuotaLoading] = reactExports.useState(false);
90051
+ reactExports.useEffect(() => {
90052
+ if (!showContinueModal || profiles.length === 0) return;
90053
+ setQuotaLoading(true);
90054
+ Promise.all(
90055
+ profiles.map(async (p2) => {
90056
+ try {
90057
+ const q2 = await ipc.quota.get(p2.id);
90058
+ return [p2.id, q2];
90059
+ } catch {
90060
+ return [p2.id, null];
90061
+ }
90062
+ })
90063
+ ).then((results) => {
90064
+ const map2 = {};
90065
+ for (const [id, q2] of results) map2[id] = q2;
90066
+ setQuotaMap(map2);
90067
+ setQuotaLoading(false);
90068
+ });
90069
+ }, [showContinueModal, profiles]);
90070
+ function quotaBadgeColor(percent) {
90071
+ if (percent >= 90) return "bg-destructive/15 text-destructive border-destructive/30";
90072
+ if (percent >= 70) return "bg-amber-500/15 text-amber-500 border-amber-500/30";
90073
+ return "bg-primary/10 text-primary border-primary/30";
90074
+ }
90075
+ async function handleContinueSession() {
90076
+ if (!selectedProfileId || !session) return;
90077
+ const profile = profiles.find((p2) => p2.id === selectedProfileId);
90078
+ if (!profile) return;
90079
+ setIsStarting(true);
90080
+ try {
90081
+ const summaryLines = [];
90082
+ summaryLines.push(`# Contexto da sessão anterior`);
90083
+ summaryLines.push(`> Sessão: ${session.sessionId.slice(0, 8)}... | Projeto: ${session.projectPath}`);
90084
+ summaryLines.push(`> ${messages2.length} mensagens | ${formatTimestamp(session.lastMessageAt)}`);
90085
+ summaryLines.push("");
90086
+ const relevantMessages = messages2.filter((m2) => m2.kind !== "tool").slice(-20);
90087
+ for (const msg of relevantMessages) {
90088
+ const prefix2 = msg.role === "user" ? "**Usuário:**" : "**Claude:**";
90089
+ const content2 = msg.content.length > 500 ? msg.content.slice(0, 500) + "..." : msg.content;
90090
+ summaryLines.push(`${prefix2} ${content2}`);
90091
+ summaryLines.push("");
90092
+ }
90093
+ const summaryContent = summaryLines.join("\n");
90094
+ setShowContinueModal(false);
90095
+ navigate(`/session/${profile.id}`, {
90096
+ state: {
90097
+ profileName: profile.name,
90098
+ workingDirectory: session.projectPath,
90099
+ contextToInject: summaryContent,
90100
+ prefillMessage: "Continue o trabalho da sessão anterior com base no contexto do CLAUDE.md"
90101
+ }
90102
+ });
90103
+ } catch (err) {
90104
+ ue$1.error("Erro ao iniciar sessão", {
90105
+ description: err instanceof Error ? err.message : "Erro desconhecido"
90106
+ });
90107
+ } finally {
90108
+ setIsStarting(false);
90109
+ }
90110
+ }
89948
90111
  reactExports.useEffect(() => {
89949
90112
  if (!sessionId) {
89950
90113
  setIsLoading(false);
@@ -89968,218 +90131,305 @@ function NativeSessionDetailPage() {
89968
90131
  return iso;
89969
90132
  }
89970
90133
  }
89971
- return /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipProvider, { delayDuration: 400, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-1 flex-col overflow-hidden", children: [
89972
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 border-b border-border px-6 py-4", children: [
89973
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
89974
- Button$1,
89975
- {
89976
- variant: "ghost",
89977
- size: "sm",
89978
- onClick: () => navigate("/history"),
89979
- className: "gap-1.5 text-muted-foreground hover:text-foreground",
89980
- children: [
89981
- /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowLeft, { size: 14, "aria-hidden": "true" }),
89982
- "Histórico"
89983
- ]
89984
- }
89985
- ),
89986
- session && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
89987
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-muted-foreground/40", children: "/" }),
89988
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm font-medium", children: session.projectName }),
89989
- /* @__PURE__ */ jsxRuntimeExports.jsx(Badge, { variant: "secondary", className: "text-xs", children: "Nativo" })
89990
- ] })
89991
- ] }),
89992
- session && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-wrap items-center gap-4 border-b border-border px-6 py-3", children: [
89993
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
89994
- /* @__PURE__ */ jsxRuntimeExports.jsx(FolderOpen, { size: 12, "aria-hidden": "true" }),
89995
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono", children: session.projectPath })
89996
- ] }),
89997
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
89998
- /* @__PURE__ */ jsxRuntimeExports.jsx(Calendar, { size: 12, "aria-hidden": "true" }),
89999
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: formatTimestamp(session.lastMessageAt) })
90000
- ] }),
90001
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
90002
- /* @__PURE__ */ jsxRuntimeExports.jsx(MessageSquare, { size: 12, "aria-hidden": "true" }),
90003
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: isLoading ? "…" : `${messages2.length} mensagens` })
90004
- ] }),
90005
- sessionId && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ml-auto font-mono text-xs text-muted-foreground/40", children: [
90006
- sessionId.slice(0, 8),
90007
- "…"
90008
- ] })
90009
- ] }),
90010
- stats && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-wrap gap-x-4 gap-y-1 border-b border-border/40 bg-card/30 px-4 py-2 text-[11px]", children: [
90011
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90012
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "flex cursor-default items-center gap-1 text-muted-foreground/70", children: [
90013
- /* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { size: 10, "aria-hidden": "true" }),
90014
- " ",
90015
- formatDuration(stats.durationMs)
90016
- ] }) }),
90017
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Duração da sessão — tempo decorrido entre a primeira e a última mensagem" }) })
90018
- ] }),
90019
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-muted-foreground/50", children: "·" }),
90020
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-muted-foreground/70", children: [
90021
- stats.totalMessages,
90022
- " msgs · ",
90023
- stats.totalToolCalls,
90024
- " tool calls"
90025
- ] }),
90026
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-muted-foreground/50", children: "·" }),
90027
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90028
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "cursor-default text-muted-foreground/70", children: [
90029
- "↑ ",
90030
- formatTokens$1(stats.totalInputTokens)
90031
- ] }) }),
90032
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Input tokens — tokens enviados ao modelo (prompt + contexto + histórico)" }) })
90033
- ] }),
90034
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90035
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "cursor-default text-muted-foreground/70", children: [
90036
- "↓ ",
90037
- formatTokens$1(stats.totalOutputTokens)
90038
- ] }) }),
90039
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Output tokens — tokens gerados pelo modelo (respostas do Claude)" }) })
90040
- ] }),
90041
- stats.totalCacheRead > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90042
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "cursor-default text-muted-foreground/50", children: [
90043
- "📖 ",
90044
- formatTokens$1(stats.totalCacheRead)
90045
- ] }) }),
90046
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Cache read — tokens lidos do cache de contexto (custo reduzido)" }) })
90134
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(TooltipProvider, { delayDuration: 400, children: [
90135
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-1 flex-col overflow-hidden", children: [
90136
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 border-b border-border px-6 py-4", children: [
90137
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
90138
+ Button$1,
90139
+ {
90140
+ variant: "ghost",
90141
+ size: "sm",
90142
+ onClick: () => navigate("/history"),
90143
+ className: "gap-1.5 text-muted-foreground hover:text-foreground",
90144
+ children: [
90145
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowLeft, { size: 14, "aria-hidden": "true" }),
90146
+ "Histórico"
90147
+ ]
90148
+ }
90149
+ ),
90150
+ session && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
90151
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-muted-foreground/40", children: "/" }),
90152
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm font-medium", children: displayName }),
90153
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Badge, { variant: "secondary", className: "text-xs", children: "Nativo" })
90154
+ ] }),
90155
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ml-auto", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
90156
+ Button$1,
90157
+ {
90158
+ variant: "default",
90159
+ size: "sm",
90160
+ onClick: () => setShowContinueModal(true),
90161
+ className: "gap-1.5",
90162
+ disabled: !session || messages2.length === 0,
90163
+ children: [
90164
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CirclePlay, { size: 14, "aria-hidden": "true" }),
90165
+ "Continuar sessão"
90166
+ ]
90167
+ }
90168
+ ) })
90047
90169
  ] }),
90048
- stats.totalCacheCreate > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90049
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "cursor-default text-muted-foreground/50", children: [
90050
- "📦 ",
90051
- formatTokens$1(stats.totalCacheCreate)
90052
- ] }) }),
90053
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Cache write tokens gravados no cache para reutilização futura" }) })
90170
+ session && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-wrap items-center gap-4 border-b border-border px-6 py-3", children: [
90171
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
90172
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FolderOpen, { size: 12, "aria-hidden": "true" }),
90173
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono", children: session.projectPath })
90174
+ ] }),
90175
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
90176
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Calendar, { size: 12, "aria-hidden": "true" }),
90177
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: formatTimestamp(session.lastMessageAt) })
90178
+ ] }),
90179
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
90180
+ /* @__PURE__ */ jsxRuntimeExports.jsx(MessageSquare, { size: 12, "aria-hidden": "true" }),
90181
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { children: [
90182
+ session?.messageCount ?? 0,
90183
+ " interações"
90184
+ ] })
90185
+ ] }),
90186
+ sessionId && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ml-auto font-mono text-xs text-muted-foreground/40", children: [
90187
+ sessionId.slice(0, 8),
90188
+ "…"
90189
+ ] })
90054
90190
  ] }),
90055
- stats.compactionCount > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
90191
+ stats && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-wrap gap-x-4 gap-y-1 border-b border-border/40 bg-card/30 px-4 py-2 text-[11px]", children: [
90192
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90193
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "flex cursor-default items-center gap-1 text-muted-foreground/70", children: [
90194
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { size: 10, "aria-hidden": "true" }),
90195
+ " ",
90196
+ formatDuration(stats.durationMs)
90197
+ ] }) }),
90198
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Duração da sessão — tempo decorrido entre a primeira e a última mensagem" }) })
90199
+ ] }),
90200
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-muted-foreground/50", children: "·" }),
90201
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-muted-foreground/70", children: [
90202
+ stats.totalMessages,
90203
+ " blocos de texto · ",
90204
+ stats.totalToolCalls,
90205
+ " tool calls"
90206
+ ] }),
90056
90207
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-muted-foreground/50", children: "·" }),
90057
90208
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90058
90209
  /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "cursor-default text-muted-foreground/70", children: [
90059
- " ",
90060
- stats.compactionCount,
90061
- "×"
90210
+ " ",
90211
+ formatTokens$1(stats.totalInputTokens)
90212
+ ] }) }),
90213
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Input tokens — tokens enviados ao modelo (prompt + contexto + histórico)" }) })
90214
+ ] }),
90215
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90216
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "cursor-default text-muted-foreground/70", children: [
90217
+ "↓ ",
90218
+ formatTokens$1(stats.totalOutputTokens)
90219
+ ] }) }),
90220
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Output tokens — tokens gerados pelo modelo (respostas do Claude)" }) })
90221
+ ] }),
90222
+ stats.totalCacheRead > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90223
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "cursor-default text-muted-foreground/50", children: [
90224
+ "📖 ",
90225
+ formatTokens$1(stats.totalCacheRead)
90226
+ ] }) }),
90227
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Cache read — tokens lidos do cache de contexto (custo reduzido)" }) })
90228
+ ] }),
90229
+ stats.totalCacheCreate > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90230
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "cursor-default text-muted-foreground/50", children: [
90231
+ "📦 ",
90232
+ formatTokens$1(stats.totalCacheCreate)
90062
90233
  ] }) }),
90063
- /* @__PURE__ */ jsxRuntimeExports.jsxs(TooltipContent, { children: [
90064
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "font-medium", children: stats.compactionCount === 1 ? "1 compactação" : `${stats.compactionCount} compactações` }),
90065
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mt-0.5 text-xs text-muted-foreground", children: "Contexto resumido para liberar espaço na janela" }),
90066
- /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-xs", children: [
90067
- formatTokens$1(stats.compactionTokensIn),
90068
- " ",
90069
- formatTokens$1(stats.compactionTokensOut),
90070
- " tokens"
90234
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Cache write — tokens gravados no cache para reutilização futura" }) })
90235
+ ] }),
90236
+ stats.compactionCount > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
90237
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-muted-foreground/50", children: "·" }),
90238
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90239
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "cursor-default text-muted-foreground/70", children: [
90240
+ "⚡ ",
90241
+ stats.compactionCount,
90242
+ "×"
90243
+ ] }) }),
90244
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(TooltipContent, { children: [
90245
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "font-medium", children: stats.compactionCount === 1 ? "1 compactação" : `${stats.compactionCount} compactações` }),
90246
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mt-0.5 text-xs text-muted-foreground", children: "Contexto resumido para liberar espaço na janela" }),
90247
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-1 text-xs", children: [
90248
+ formatTokens$1(stats.compactionTokensIn),
90249
+ " → ",
90250
+ formatTokens$1(stats.compactionTokensOut),
90251
+ " tokens"
90252
+ ] })
90071
90253
  ] })
90072
90254
  ] })
90073
90255
  ] })
90074
- ] })
90075
- ] }),
90076
- /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { className: "flex-1 px-6 py-4", children: isLoading ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-4", children: Array.from({ length: 6 }).map((_2, i2) => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: cn("flex gap-3", i2 % 2 === 0 ? "justify-end" : ""), children: /* @__PURE__ */ jsxRuntimeExports.jsx(Skeleton, { className: cn("h-16 rounded-xl", i2 % 2 === 0 ? "w-2/3" : "w-3/4") }) }, i2)) }) : messages2.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [
90077
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: "Conversa não encontrada ou não pôde ser lida." }),
90078
- /* @__PURE__ */ jsxRuntimeExports.jsx(
90079
- Button$1,
90080
- {
90081
- variant: "ghost",
90082
- size: "sm",
90083
- className: "mt-3",
90084
- onClick: () => navigate("/history"),
90085
- children: "Voltar ao histórico"
90086
- }
90087
- )
90088
- ] }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-4 pb-4", children: messages2.map(
90089
- (msg, i2) => msg.kind === "tool" ? (
90090
- // Linha de ação de ferramenta — compacta, sem bolha
90091
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-center py-0.5", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-2 rounded-lg border border-border/40 bg-muted/20 px-3 py-1.5", children: [
90092
- /* @__PURE__ */ jsxRuntimeExports.jsx(Wrench, { size: 10, className: "mt-0.5 shrink-0 text-muted-foreground/40", "aria-hidden": "true" }),
90093
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "font-mono text-[10px] leading-relaxed text-muted-foreground/50", children: [
90094
- msg.content.split("\n").join(" · "),
90095
- msg.durationMs !== void 0 && msg.durationMs > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90096
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ml-2 cursor-default text-muted-foreground/30", children: [
90097
- "· ",
90098
- formatDuration(msg.durationMs)
90099
- ] }) }),
90100
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Tempo de execução das ferramentas neste bloco" }) })
90101
- ] })
90102
- ] })
90103
- ] }) }, i2)
90104
- ) : (
90105
- // Bolha de conversa normal
90106
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
90107
- "div",
90256
+ ] }),
90257
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { className: "flex-1 px-6 py-4", children: isLoading ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-4", children: Array.from({ length: 6 }).map((_2, i2) => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: cn("flex gap-3", i2 % 2 === 0 ? "justify-end" : ""), children: /* @__PURE__ */ jsxRuntimeExports.jsx(Skeleton, { className: cn("h-16 rounded-xl", i2 % 2 === 0 ? "w-2/3" : "w-3/4") }) }, i2)) }) : messages2.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [
90258
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: "Conversa não encontrada ou não pôde ser lida." }),
90259
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
90260
+ Button$1,
90108
90261
  {
90109
- className: cn(
90110
- "flex gap-2.5",
90111
- msg.role === "user" ? "flex-row-reverse" : "flex-row"
90112
- ),
90113
- children: [
90114
- /* @__PURE__ */ jsxRuntimeExports.jsx(
90115
- "div",
90116
- {
90117
- className: cn(
90118
- "mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-full",
90119
- msg.role === "user" ? "bg-primary text-primary-foreground" : "bg-muted text-muted-foreground"
90120
- ),
90121
- children: msg.role === "user" ? /* @__PURE__ */ jsxRuntimeExports.jsx(User, { size: 12, "aria-hidden": "true" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Bot, { size: 12, "aria-hidden": "true" })
90122
- }
90262
+ variant: "ghost",
90263
+ size: "sm",
90264
+ className: "mt-3",
90265
+ onClick: () => navigate("/history"),
90266
+ children: "Voltar ao histórico"
90267
+ }
90268
+ )
90269
+ ] }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-4 pb-4", children: messages2.map(
90270
+ (msg, i2) => msg.kind === "tool" ? (
90271
+ // Linha de ação de ferramenta compacta, sem bolha
90272
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-center py-0.5", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-2 rounded-lg border border-border/40 bg-muted/20 px-3 py-1.5", children: [
90273
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Wrench, { size: 10, className: "mt-0.5 shrink-0 text-muted-foreground/40", "aria-hidden": "true" }),
90274
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "font-mono text-[10px] leading-relaxed text-muted-foreground/50", children: [
90275
+ msg.content.split("\n").join(" · "),
90276
+ msg.durationMs !== void 0 && msg.durationMs > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90277
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ml-2 cursor-default text-muted-foreground/30", children: [
90278
+ "· ",
90279
+ formatDuration(msg.durationMs)
90280
+ ] }) }),
90281
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Tempo de execução das ferramentas neste bloco" }) })
90282
+ ] })
90283
+ ] })
90284
+ ] }) }, i2)
90285
+ ) : (
90286
+ // Bolha de conversa normal
90287
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
90288
+ "div",
90289
+ {
90290
+ className: cn(
90291
+ "flex gap-2.5",
90292
+ msg.role === "user" ? "flex-row-reverse" : "flex-row"
90123
90293
  ),
90124
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
90125
- "div",
90126
- {
90127
- className: cn(
90128
- "max-w-[75%] rounded-2xl px-4 py-2.5",
90129
- msg.role === "user" ? "rounded-tr-sm bg-primary text-primary-foreground" : "rounded-tl-sm bg-muted text-foreground"
90130
- ),
90131
- children: [
90132
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "whitespace-pre-wrap text-sm leading-relaxed", children: msg.content }),
90133
- /* @__PURE__ */ jsxRuntimeExports.jsx(
90134
- "p",
90135
- {
90136
- className: cn(
90137
- "mt-1 text-right text-[10px]",
90138
- msg.role === "user" ? "text-primary-foreground/60" : "text-muted-foreground/60"
90139
- ),
90140
- children: formatTimestamp(msg.timestamp)
90141
- }
90294
+ children: [
90295
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
90296
+ "div",
90297
+ {
90298
+ className: cn(
90299
+ "mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-full",
90300
+ msg.role === "user" ? "bg-primary text-primary-foreground" : "bg-muted text-muted-foreground"
90301
+ ),
90302
+ children: msg.role === "user" ? /* @__PURE__ */ jsxRuntimeExports.jsx(User, { size: 12, "aria-hidden": "true" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Bot, { size: 12, "aria-hidden": "true" })
90303
+ }
90304
+ ),
90305
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
90306
+ "div",
90307
+ {
90308
+ className: cn(
90309
+ "max-w-[75%] rounded-2xl px-4 py-2.5",
90310
+ msg.role === "user" ? "rounded-tr-sm bg-primary text-primary-foreground" : "rounded-tl-sm bg-muted text-foreground"
90142
90311
  ),
90143
- msg.tokens && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-0.5 flex flex-wrap gap-x-2 text-[10px] text-muted-foreground/50", children: [
90144
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90145
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "cursor-default", children: [
90146
- "",
90147
- formatTokens$1(msg.tokens.input)
90148
- ] }) }),
90149
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Input tokens — tokens enviados ao modelo" }) })
90150
- ] }),
90151
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90152
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "cursor-default", children: [
90153
- "↓ ",
90154
- formatTokens$1(msg.tokens.output)
90155
- ] }) }),
90156
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Output tokens — tokens gerados pelo modelo" }) })
90157
- ] }),
90158
- msg.tokens.cacheRead > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90159
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "cursor-default", children: [
90160
- "📖 ",
90161
- formatTokens$1(msg.tokens.cacheRead)
90162
- ] }) }),
90163
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Cache read — tokens lidos do cache de contexto" }) })
90164
- ] }),
90165
- msg.tokens.cacheCreate > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90166
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "cursor-default", children: [
90167
- "📦 ",
90168
- formatTokens$1(msg.tokens.cacheCreate)
90169
- ] }) }),
90170
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Cache write — tokens gravados no cache para reutilização futura" }) })
90312
+ children: [
90313
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "whitespace-pre-wrap text-sm leading-relaxed", children: msg.content }),
90314
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
90315
+ "p",
90316
+ {
90317
+ className: cn(
90318
+ "mt-1 text-right text-[10px]",
90319
+ msg.role === "user" ? "text-primary-foreground/60" : "text-muted-foreground/60"
90320
+ ),
90321
+ children: formatTimestamp(msg.timestamp)
90322
+ }
90323
+ ),
90324
+ msg.tokens && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-0.5 flex flex-wrap gap-x-2 text-[10px] text-muted-foreground/50", children: [
90325
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90326
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "cursor-default", children: [
90327
+ "↑ ",
90328
+ formatTokens$1(msg.tokens.input)
90329
+ ] }) }),
90330
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Input tokens — tokens enviados ao modelo" }) })
90331
+ ] }),
90332
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90333
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "cursor-default", children: [
90334
+ "↓ ",
90335
+ formatTokens$1(msg.tokens.output)
90336
+ ] }) }),
90337
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Output tokens — tokens gerados pelo modelo" }) })
90338
+ ] }),
90339
+ msg.tokens.cacheRead > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90340
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "cursor-default", children: [
90341
+ "📖 ",
90342
+ formatTokens$1(msg.tokens.cacheRead)
90343
+ ] }) }),
90344
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Cache read — tokens lidos do cache de contexto" }) })
90345
+ ] }),
90346
+ msg.tokens.cacheCreate > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
90347
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "cursor-default", children: [
90348
+ "📦 ",
90349
+ formatTokens$1(msg.tokens.cacheCreate)
90350
+ ] }) }),
90351
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Cache write — tokens gravados no cache para reutilização futura" }) })
90352
+ ] })
90171
90353
  ] })
90172
- ] })
90173
- ]
90174
- }
90175
- )
90354
+ ]
90355
+ }
90356
+ )
90357
+ ]
90358
+ },
90359
+ i2
90360
+ )
90361
+ )
90362
+ ) }) })
90363
+ ] }),
90364
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Dialog, { open: showContinueModal, onOpenChange: setShowContinueModal, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogContent, { className: "sm:max-w-md", children: [
90365
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogHeader, { children: [
90366
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DialogTitle, { children: "Continuar sessão" }),
90367
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DialogDescription, { children: "O contexto da sessão será injetado no CLAUDE.md do projeto para a nova sessão." })
90368
+ ] }),
90369
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "py-4", children: [
90370
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mb-2 text-sm font-medium", children: "Perfil" }),
90371
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "max-h-[220px] space-y-1.5 overflow-y-auto pr-1", children: profiles.map((p2) => {
90372
+ const q2 = quotaMap[p2.id];
90373
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
90374
+ "button",
90375
+ {
90376
+ type: "button",
90377
+ onClick: () => setSelectedProfileId(p2.id),
90378
+ className: cn(
90379
+ "flex w-full items-center gap-2 rounded-lg border px-3 py-2.5 text-left text-sm transition-all",
90380
+ selectedProfileId === p2.id ? "border-primary bg-primary/5 ring-1 ring-primary" : "border-border hover:border-border/80 hover:bg-muted/30"
90381
+ ),
90382
+ children: [
90383
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-1 truncate font-medium", children: p2.name }),
90384
+ quotaLoading ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-1.5", children: [
90385
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Skeleton, { className: "h-4 w-12 rounded-full" }),
90386
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Skeleton, { className: "h-4 w-12 rounded-full" })
90387
+ ] }) : q2 ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-1.5", children: [
90388
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: cn(
90389
+ "rounded-full border px-1.5 py-0.5 text-[10px] font-medium leading-none",
90390
+ quotaBadgeColor(q2.session.percent)
90391
+ ), children: [
90392
+ "S ",
90393
+ q2.session.percent,
90394
+ "%"
90395
+ ] }),
90396
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: cn(
90397
+ "rounded-full border px-1.5 py-0.5 text-[10px] font-medium leading-none",
90398
+ quotaBadgeColor(q2.week.percent)
90399
+ ), children: [
90400
+ "W ",
90401
+ q2.week.percent,
90402
+ "%"
90403
+ ] })
90404
+ ] }) : null
90405
+ ]
90406
+ },
90407
+ p2.id
90408
+ );
90409
+ }) }),
90410
+ session && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "mt-3 text-xs text-muted-foreground", children: [
90411
+ "Projeto: ",
90412
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono", children: session.projectPath })
90413
+ ] })
90414
+ ] }),
90415
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogFooter, { children: [
90416
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Button$1, { variant: "ghost", size: "sm", onClick: () => setShowContinueModal(false), children: "Cancelar" }),
90417
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
90418
+ Button$1,
90419
+ {
90420
+ size: "sm",
90421
+ onClick: handleContinueSession,
90422
+ disabled: !selectedProfileId || isStarting,
90423
+ className: "gap-1.5",
90424
+ children: [
90425
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CirclePlay, { size: 14, "aria-hidden": "true" }),
90426
+ isStarting ? "Iniciando..." : "Iniciar sessão"
90176
90427
  ]
90177
- },
90178
- i2
90428
+ }
90179
90429
  )
90180
- )
90181
- ) }) })
90182
- ] }) });
90430
+ ] })
90431
+ ] }) })
90432
+ ] });
90183
90433
  }
90184
90434
  // @__NO_SIDE_EFFECTS__
90185
90435
  function createSlot(ownerName) {
@@ -305041,7 +305291,7 @@ const lessDefaults = new LanguageServiceDefaultsImpl$3(
305041
305291
  modeConfigurationDefault$2
305042
305292
  );
305043
305293
  function getMode$3() {
305044
- return __vitePreload(() => import("./cssMode-0REew4-I.js"), true ? __vite__mapDeps([0,1]) : void 0, import.meta.url);
305294
+ return __vitePreload(() => import("./cssMode-Djbzf0LR.js"), true ? __vite__mapDeps([0,1]) : void 0, import.meta.url);
305045
305295
  }
305046
305296
  languages.onLanguage("less", () => {
305047
305297
  getMode$3().then((mode2) => mode2.setupMode(lessDefaults));
@@ -305146,7 +305396,7 @@ const razorLanguageService = registerHTMLLanguageService(
305146
305396
  );
305147
305397
  const razorDefaults = razorLanguageService.defaults;
305148
305398
  function getMode$2() {
305149
- return __vitePreload(() => import("./htmlMode-CGiY9fYI.js"), true ? __vite__mapDeps([2,1]) : void 0, import.meta.url);
305399
+ return __vitePreload(() => import("./htmlMode-rVPkSV1Q.js"), true ? __vite__mapDeps([2,1]) : void 0, import.meta.url);
305150
305400
  }
305151
305401
  function registerHTMLLanguageService(languageId, options = optionsDefault, modeConfiguration = getConfigurationDefault(languageId)) {
305152
305402
  const defaults2 = new LanguageServiceDefaultsImpl$2(languageId, options, modeConfiguration);
@@ -305230,7 +305480,7 @@ const jsonDefaults = new LanguageServiceDefaultsImpl$1(
305230
305480
  );
305231
305481
  const getWorker$1 = () => getMode$1().then((mode2) => mode2.getWorker());
305232
305482
  function getMode$1() {
305233
- return __vitePreload(() => import("./jsonMode-Bp6cgaVL.js"), true ? __vite__mapDeps([3,1]) : void 0, import.meta.url);
305483
+ return __vitePreload(() => import("./jsonMode-1NERwSWX.js"), true ? __vite__mapDeps([3,1]) : void 0, import.meta.url);
305234
305484
  }
305235
305485
  languages.register({
305236
305486
  id: "json",
@@ -305476,7 +305726,7 @@ const getJavaScriptWorker = () => {
305476
305726
  return getMode().then((mode) => mode.getJavaScriptWorker());
305477
305727
  };
305478
305728
  function getMode() {
305479
- return __vitePreload(() => import("./tsMode-B-gbMtTM.js"), true ? [] : void 0, import.meta.url);
305729
+ return __vitePreload(() => import("./tsMode-P6prXeLi.js"), true ? [] : void 0, import.meta.url);
305480
305730
  }
305481
305731
  languages.onLanguage("typescript", () => {
305482
305732
  return getMode().then((mode) => mode.setupTypeScript(typescriptDefaults));
@@ -305671,49 +305921,49 @@ registerLanguage({
305671
305921
  extensions: [".ftl", ".ftlh", ".ftlx"],
305672
305922
  aliases: ["FreeMarker2", "Apache FreeMarker2"],
305673
305923
  loader: () => {
305674
- return __vitePreload(() => import("./freemarker2-DGOHYByW.js"), true ? [] : void 0, import.meta.url).then((m2) => m2.TagAutoInterpolationDollar);
305924
+ return __vitePreload(() => import("./freemarker2-plN48J_D.js"), true ? [] : void 0, import.meta.url).then((m2) => m2.TagAutoInterpolationDollar);
305675
305925
  }
305676
305926
  });
305677
305927
  registerLanguage({
305678
305928
  id: "freemarker2.tag-angle.interpolation-dollar",
305679
305929
  aliases: ["FreeMarker2 (Angle/Dollar)", "Apache FreeMarker2 (Angle/Dollar)"],
305680
305930
  loader: () => {
305681
- return __vitePreload(() => import("./freemarker2-DGOHYByW.js"), true ? [] : void 0, import.meta.url).then((m2) => m2.TagAngleInterpolationDollar);
305931
+ return __vitePreload(() => import("./freemarker2-plN48J_D.js"), true ? [] : void 0, import.meta.url).then((m2) => m2.TagAngleInterpolationDollar);
305682
305932
  }
305683
305933
  });
305684
305934
  registerLanguage({
305685
305935
  id: "freemarker2.tag-bracket.interpolation-dollar",
305686
305936
  aliases: ["FreeMarker2 (Bracket/Dollar)", "Apache FreeMarker2 (Bracket/Dollar)"],
305687
305937
  loader: () => {
305688
- return __vitePreload(() => import("./freemarker2-DGOHYByW.js"), true ? [] : void 0, import.meta.url).then((m2) => m2.TagBracketInterpolationDollar);
305938
+ return __vitePreload(() => import("./freemarker2-plN48J_D.js"), true ? [] : void 0, import.meta.url).then((m2) => m2.TagBracketInterpolationDollar);
305689
305939
  }
305690
305940
  });
305691
305941
  registerLanguage({
305692
305942
  id: "freemarker2.tag-angle.interpolation-bracket",
305693
305943
  aliases: ["FreeMarker2 (Angle/Bracket)", "Apache FreeMarker2 (Angle/Bracket)"],
305694
305944
  loader: () => {
305695
- return __vitePreload(() => import("./freemarker2-DGOHYByW.js"), true ? [] : void 0, import.meta.url).then((m2) => m2.TagAngleInterpolationBracket);
305945
+ return __vitePreload(() => import("./freemarker2-plN48J_D.js"), true ? [] : void 0, import.meta.url).then((m2) => m2.TagAngleInterpolationBracket);
305696
305946
  }
305697
305947
  });
305698
305948
  registerLanguage({
305699
305949
  id: "freemarker2.tag-bracket.interpolation-bracket",
305700
305950
  aliases: ["FreeMarker2 (Bracket/Bracket)", "Apache FreeMarker2 (Bracket/Bracket)"],
305701
305951
  loader: () => {
305702
- return __vitePreload(() => import("./freemarker2-DGOHYByW.js"), true ? [] : void 0, import.meta.url).then((m2) => m2.TagBracketInterpolationBracket);
305952
+ return __vitePreload(() => import("./freemarker2-plN48J_D.js"), true ? [] : void 0, import.meta.url).then((m2) => m2.TagBracketInterpolationBracket);
305703
305953
  }
305704
305954
  });
305705
305955
  registerLanguage({
305706
305956
  id: "freemarker2.tag-auto.interpolation-dollar",
305707
305957
  aliases: ["FreeMarker2 (Auto/Dollar)", "Apache FreeMarker2 (Auto/Dollar)"],
305708
305958
  loader: () => {
305709
- return __vitePreload(() => import("./freemarker2-DGOHYByW.js"), true ? [] : void 0, import.meta.url).then((m2) => m2.TagAutoInterpolationDollar);
305959
+ return __vitePreload(() => import("./freemarker2-plN48J_D.js"), true ? [] : void 0, import.meta.url).then((m2) => m2.TagAutoInterpolationDollar);
305710
305960
  }
305711
305961
  });
305712
305962
  registerLanguage({
305713
305963
  id: "freemarker2.tag-auto.interpolation-bracket",
305714
305964
  aliases: ["FreeMarker2 (Auto/Bracket)", "Apache FreeMarker2 (Auto/Bracket)"],
305715
305965
  loader: () => {
305716
- return __vitePreload(() => import("./freemarker2-DGOHYByW.js"), true ? [] : void 0, import.meta.url).then((m2) => m2.TagAutoInterpolationBracket);
305966
+ return __vitePreload(() => import("./freemarker2-plN48J_D.js"), true ? [] : void 0, import.meta.url).then((m2) => m2.TagAutoInterpolationBracket);
305717
305967
  }
305718
305968
  });
305719
305969
  registerLanguage({
@@ -305734,7 +305984,7 @@ registerLanguage({
305734
305984
  extensions: [".handlebars", ".hbs"],
305735
305985
  aliases: ["Handlebars", "handlebars", "hbs"],
305736
305986
  mimetypes: ["text/x-handlebars-template"],
305737
- loader: () => __vitePreload(() => import("./handlebars-BqVGkTnX.js"), true ? [] : void 0, import.meta.url)
305987
+ loader: () => __vitePreload(() => import("./handlebars-DkGSdJeE.js"), true ? [] : void 0, import.meta.url)
305738
305988
  });
305739
305989
  registerLanguage({
305740
305990
  id: "hcl",
@@ -305747,7 +305997,7 @@ registerLanguage({
305747
305997
  extensions: [".html", ".htm", ".shtml", ".xhtml", ".mdoc", ".jsp", ".asp", ".aspx", ".jshtm"],
305748
305998
  aliases: ["HTML", "htm", "html", "xhtml"],
305749
305999
  mimetypes: ["text/html", "text/x-jshtm", "text/template", "text/ng-template"],
305750
- loader: () => __vitePreload(() => import("./html-SBYz9B6Z.js"), true ? [] : void 0, import.meta.url)
306000
+ loader: () => __vitePreload(() => import("./html-GfH6N1Gv.js"), true ? [] : void 0, import.meta.url)
305751
306001
  });
305752
306002
  registerLanguage({
305753
306003
  id: "ini",
@@ -305770,7 +306020,7 @@ registerLanguage({
305770
306020
  filenames: ["jakefile"],
305771
306021
  aliases: ["JavaScript", "javascript", "js"],
305772
306022
  mimetypes: ["text/javascript"],
305773
- loader: () => __vitePreload(() => import("./javascript-C0APGOR5.js"), true ? __vite__mapDeps([4,5]) : void 0, import.meta.url)
306023
+ loader: () => __vitePreload(() => import("./javascript-PIyGYu6r.js"), true ? __vite__mapDeps([4,5]) : void 0, import.meta.url)
305774
306024
  });
305775
306025
  registerLanguage({
305776
306026
  id: "julia",
@@ -305809,7 +306059,7 @@ registerLanguage({
305809
306059
  extensions: [".liquid", ".html.liquid"],
305810
306060
  aliases: ["Liquid", "liquid"],
305811
306061
  mimetypes: ["application/liquid"],
305812
- loader: () => __vitePreload(() => import("./liquid-Azv9oa6C.js"), true ? [] : void 0, import.meta.url)
306062
+ loader: () => __vitePreload(() => import("./liquid-DFsQCm0l.js"), true ? [] : void 0, import.meta.url)
305813
306063
  });
305814
306064
  registerLanguage({
305815
306065
  id: "m3",
@@ -305827,7 +306077,7 @@ registerLanguage({
305827
306077
  id: "mdx",
305828
306078
  extensions: [".mdx"],
305829
306079
  aliases: ["MDX", "mdx"],
305830
- loader: () => __vitePreload(() => import("./mdx-BFq9ZGPW.js"), true ? [] : void 0, import.meta.url)
306080
+ loader: () => __vitePreload(() => import("./mdx-pETBiXt-.js"), true ? [] : void 0, import.meta.url)
305831
306081
  });
305832
306082
  registerLanguage({
305833
306083
  id: "mips",
@@ -305926,7 +306176,7 @@ registerLanguage({
305926
306176
  extensions: [".py", ".rpy", ".pyw", ".cpy", ".gyp", ".gypi"],
305927
306177
  aliases: ["Python", "py"],
305928
306178
  firstLine: "^#!/.*\\bpython[0-9.-]*\\b",
305929
- loader: () => __vitePreload(() => import("./python-Bmt9B2If.js"), true ? [] : void 0, import.meta.url)
306179
+ loader: () => __vitePreload(() => import("./python-C-ndJWZ6.js"), true ? [] : void 0, import.meta.url)
305930
306180
  });
305931
306181
  registerLanguage({
305932
306182
  id: "qsharp",
@@ -305945,7 +306195,7 @@ registerLanguage({
305945
306195
  extensions: [".cshtml"],
305946
306196
  aliases: ["Razor", "razor"],
305947
306197
  mimetypes: ["text/x-cshtml"],
305948
- loader: () => __vitePreload(() => import("./razor-DNyVX9o_.js"), true ? [] : void 0, import.meta.url)
306198
+ loader: () => __vitePreload(() => import("./razor-ccgYQ7JO.js"), true ? [] : void 0, import.meta.url)
305949
306199
  });
305950
306200
  registerLanguage({
305951
306201
  id: "redis",
@@ -306078,7 +306328,7 @@ registerLanguage({
306078
306328
  aliases: ["TypeScript", "ts", "typescript"],
306079
306329
  mimetypes: ["text/typescript"],
306080
306330
  loader: () => {
306081
- return __vitePreload(() => import("./typescript-EOW0R50S.js"), true ? [] : void 0, import.meta.url);
306331
+ return __vitePreload(() => import("./typescript-D2Zozwub.js"), true ? [] : void 0, import.meta.url);
306082
306332
  }
306083
306333
  });
306084
306334
  registerLanguage({
@@ -306123,14 +306373,14 @@ registerLanguage({
306123
306373
  firstLine: "(\\<\\?xml.*)|(\\<svg)|(\\<\\!doctype\\s+svg)",
306124
306374
  aliases: ["XML", "xml"],
306125
306375
  mimetypes: ["text/xml", "application/xml", "application/xaml+xml", "application/xml-dtd"],
306126
- loader: () => __vitePreload(() => import("./xml-Dvlj5OXN.js"), true ? [] : void 0, import.meta.url)
306376
+ loader: () => __vitePreload(() => import("./xml-L2644zxV.js"), true ? [] : void 0, import.meta.url)
306127
306377
  });
306128
306378
  registerLanguage({
306129
306379
  id: "yaml",
306130
306380
  extensions: [".yaml", ".yml"],
306131
306381
  aliases: ["YAML", "yaml", "YML", "yml"],
306132
306382
  mimetypes: ["application/x-yaml", "text/x-yaml"],
306133
- loader: () => __vitePreload(() => import("./yaml-CUjhit4r.js"), true ? [] : void 0, import.meta.url)
306383
+ loader: () => __vitePreload(() => import("./yaml-5rwJYQiz.js"), true ? [] : void 0, import.meta.url)
306134
306384
  });
306135
306385
  var __defProp = Object.defineProperty;
306136
306386
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;