@juspay/shooter 1.6.1 → 1.6.2

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 (158) hide show
  1. package/build/client/_app/immutable/assets/0.BXHU1bFd.css +1 -0
  2. package/build/client/_app/immutable/assets/0.BXHU1bFd.css.br +0 -0
  3. package/build/client/_app/immutable/assets/0.BXHU1bFd.css.gz +0 -0
  4. package/build/client/_app/immutable/assets/{2.Dk9NfqnS.css → 2.Bxu934IC.css} +1 -1
  5. package/build/client/_app/immutable/assets/2.Bxu934IC.css.br +0 -0
  6. package/build/client/_app/immutable/assets/2.Bxu934IC.css.gz +0 -0
  7. package/build/client/_app/immutable/chunks/{Dc_Gg2H6.js → B7UYUXav.js} +1 -1
  8. package/build/client/_app/immutable/chunks/B7UYUXav.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/B7UYUXav.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/{DlnAjkg1.js → CAWtH3Iy.js} +1 -1
  11. package/build/client/_app/immutable/chunks/CAWtH3Iy.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/{DlnAjkg1.js.gz → CAWtH3Iy.js.gz} +0 -0
  13. package/build/client/_app/immutable/chunks/{YKoRJzXZ.js → DMGoTOyn.js} +2 -2
  14. package/build/client/_app/immutable/chunks/DMGoTOyn.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/DMGoTOyn.js.gz +0 -0
  16. package/build/client/_app/immutable/entry/{app.CFPgQOa8.js → app.DLyiS7a7.js} +2 -2
  17. package/build/client/_app/immutable/entry/app.DLyiS7a7.js.br +0 -0
  18. package/build/client/_app/immutable/entry/app.DLyiS7a7.js.gz +0 -0
  19. package/build/client/_app/immutable/entry/start.iu831vTf.js +1 -0
  20. package/build/client/_app/immutable/entry/start.iu831vTf.js.br +2 -0
  21. package/build/client/_app/immutable/entry/start.iu831vTf.js.gz +0 -0
  22. package/build/client/_app/immutable/nodes/{0.DR-BBF5r.js → 0.B76xpgU3.js} +1 -1
  23. package/build/client/_app/immutable/nodes/0.B76xpgU3.js.br +0 -0
  24. package/build/client/_app/immutable/nodes/0.B76xpgU3.js.gz +0 -0
  25. package/build/client/_app/immutable/nodes/{1.CNm6rAwf.js → 1.C8HQaM7E.js} +1 -1
  26. package/build/client/_app/immutable/nodes/1.C8HQaM7E.js.br +0 -0
  27. package/build/client/_app/immutable/nodes/1.C8HQaM7E.js.gz +0 -0
  28. package/build/client/_app/immutable/nodes/2.BAtXcLWF.js +13 -0
  29. package/build/client/_app/immutable/nodes/2.BAtXcLWF.js.br +0 -0
  30. package/build/client/_app/immutable/nodes/2.BAtXcLWF.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/{3.CsY6J5HS.js → 3.CYU2wJvk.js} +1 -1
  32. package/build/client/_app/immutable/nodes/3.CYU2wJvk.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/3.CYU2wJvk.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/{6.CbQQ3FtZ.js → 6.C_uZdnK8.js} +1 -1
  35. package/build/client/_app/immutable/nodes/6.C_uZdnK8.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/6.C_uZdnK8.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/{7.CCKgiNNk.js → 7.Cuv-AoHz.js} +1 -1
  38. package/build/client/_app/immutable/nodes/7.Cuv-AoHz.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/7.Cuv-AoHz.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/{8.C7AaheUD.js → 8.jzwOIQUM.js} +1 -1
  41. package/build/client/_app/immutable/nodes/{8.C7AaheUD.js.br → 8.jzwOIQUM.js.br} +0 -0
  42. package/build/client/_app/immutable/nodes/8.jzwOIQUM.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/{9.DfL9kMC4.js → 9.BDETv_rs.js} +1 -1
  44. package/build/client/_app/immutable/nodes/9.BDETv_rs.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/9.BDETv_rs.js.gz +0 -0
  46. package/build/client/_app/version.json +1 -1
  47. package/build/client/_app/version.json.br +0 -0
  48. package/build/client/_app/version.json.gz +0 -0
  49. package/build/server/chunks/{0-DC2VLooL.js → 0-JnYsOPFg.js} +4 -4
  50. package/build/server/chunks/{0-DC2VLooL.js.map → 0-JnYsOPFg.js.map} +1 -1
  51. package/build/server/chunks/{1-XJaf8Jvf.js → 1-uXVmLPvu.js} +3 -3
  52. package/build/server/chunks/{1-XJaf8Jvf.js.map → 1-uXVmLPvu.js.map} +1 -1
  53. package/build/server/chunks/{2-D4Cx-1QL.js → 2-CVN3QR62.js} +4 -4
  54. package/build/server/chunks/{2-D4Cx-1QL.js.map → 2-CVN3QR62.js.map} +1 -1
  55. package/build/server/chunks/{3-CVhIEP-u.js → 3-BGXBcTfb.js} +3 -3
  56. package/build/server/chunks/{3-CVhIEP-u.js.map → 3-BGXBcTfb.js.map} +1 -1
  57. package/build/server/chunks/{4-0UE_6Ep-.js → 4-DOCzBx63.js} +2 -2
  58. package/build/server/chunks/{4-0UE_6Ep-.js.map → 4-DOCzBx63.js.map} +1 -1
  59. package/build/server/chunks/{5-BBIP1PzX.js → 5-7A7zBuKk.js} +2 -2
  60. package/build/server/chunks/{5-BBIP1PzX.js.map → 5-7A7zBuKk.js.map} +1 -1
  61. package/build/server/chunks/{6-QFSbzRMP.js → 6-DWdCl-Zi.js} +3 -3
  62. package/build/server/chunks/{6-QFSbzRMP.js.map → 6-DWdCl-Zi.js.map} +1 -1
  63. package/build/server/chunks/{7-CZ_YGjMV.js → 7-DUY-pQp0.js} +3 -3
  64. package/build/server/chunks/{7-CZ_YGjMV.js.map → 7-DUY-pQp0.js.map} +1 -1
  65. package/build/server/chunks/{8-Xe2Rugb4.js → 8-vdkbC7-0.js} +3 -3
  66. package/build/server/chunks/{8-Xe2Rugb4.js.map → 8-vdkbC7-0.js.map} +1 -1
  67. package/build/server/chunks/{9-IwHpC4SO.js → 9-Bo4T88xL.js} +3 -3
  68. package/build/server/chunks/{9-IwHpC4SO.js.map → 9-Bo4T88xL.js.map} +1 -1
  69. package/build/server/chunks/{Button-WKgiLWZI.js → Button-DdjxOkSZ.js} +2 -2
  70. package/build/server/chunks/{Button-WKgiLWZI.js.map → Button-DdjxOkSZ.js.map} +1 -1
  71. package/build/server/chunks/{EmptyState-BUBqASsp.js → EmptyState-Do0HSexX.js} +3 -3
  72. package/build/server/chunks/{EmptyState-BUBqASsp.js.map → EmptyState-Do0HSexX.js.map} +1 -1
  73. package/build/server/chunks/{Icon-BNBAg85a.js → Icon-CmfQpMj8.js} +2 -2
  74. package/build/server/chunks/{Icon-BNBAg85a.js.map → Icon-CmfQpMj8.js.map} +1 -1
  75. package/build/server/chunks/{Shimmer-C4uBVwxz.js → Shimmer-5rSdw-ut.js} +2 -2
  76. package/build/server/chunks/{Shimmer-C4uBVwxz.js.map → Shimmer-5rSdw-ut.js.map} +1 -1
  77. package/build/server/chunks/{_error.svelte-DkIwmECt.js → _error.svelte-B3eSa4PI.js} +5 -5
  78. package/build/server/chunks/{_error.svelte-DkIwmECt.js.map → _error.svelte-B3eSa4PI.js.map} +1 -1
  79. package/build/server/chunks/{_layout.svelte-DllETxmJ.js → _layout.svelte-DIibCT-o.js} +6 -6
  80. package/build/server/chunks/{_layout.svelte-DllETxmJ.js.map → _layout.svelte-DIibCT-o.js.map} +1 -1
  81. package/build/server/chunks/{_page.svelte-BZSdLKE_.js → _page.svelte-BCVxxMg-.js} +4 -4
  82. package/build/server/chunks/{_page.svelte-BZSdLKE_.js.map → _page.svelte-BCVxxMg-.js.map} +1 -1
  83. package/build/server/chunks/{_page.svelte-Co5sF7W-.js → _page.svelte-BnIJOtvm.js} +11 -11
  84. package/build/server/chunks/{_page.svelte-Co5sF7W-.js.map → _page.svelte-BnIJOtvm.js.map} +1 -1
  85. package/build/server/chunks/{_page.svelte-Cmuco1mC.js → _page.svelte-D4TBiar7.js} +5 -5
  86. package/build/server/chunks/{_page.svelte-Cmuco1mC.js.map → _page.svelte-D4TBiar7.js.map} +1 -1
  87. package/build/server/chunks/{_page.svelte-JIkgFUFf.js → _page.svelte-DQZWJdHb.js} +4 -4
  88. package/build/server/chunks/{_page.svelte-JIkgFUFf.js.map → _page.svelte-DQZWJdHb.js.map} +1 -1
  89. package/build/server/chunks/{_page.svelte-fcX09N4d.js → _page.svelte-DYhv6WTT.js} +9 -9
  90. package/build/server/chunks/{_page.svelte-fcX09N4d.js.map → _page.svelte-DYhv6WTT.js.map} +1 -1
  91. package/build/server/chunks/{_page.svelte-Y9-O5a5w.js → _page.svelte-DZK06z97.js} +8 -8
  92. package/build/server/chunks/{_page.svelte-Y9-O5a5w.js.map → _page.svelte-DZK06z97.js.map} +1 -1
  93. package/build/server/chunks/{_page.svelte-CpL3R-VI.js → _page.svelte-qNZy4ITB.js} +8 -8
  94. package/build/server/chunks/{_page.svelte-CpL3R-VI.js.map → _page.svelte-qNZy4ITB.js.map} +1 -1
  95. package/build/server/chunks/{_page.svelte-DDSzYLUs.js → _page.svelte-vwYD3-TB.js} +29 -12
  96. package/build/server/chunks/_page.svelte-vwYD3-TB.js.map +1 -0
  97. package/build/server/chunks/{_server.ts-Ds_SUGC3.js → _server.ts-BQarRaho.js} +86 -73
  98. package/build/server/chunks/_server.ts-BQarRaho.js.map +1 -0
  99. package/build/server/chunks/{client-DRtPDkMh.js → client-CHdjSh4H.js} +4 -4
  100. package/build/server/chunks/{client-DRtPDkMh.js.map → client-CHdjSh4H.js.map} +1 -1
  101. package/build/server/chunks/client2-BTUnRGQp.js +7 -0
  102. package/build/server/chunks/{client2-bqqmu0b7.js.map → client2-BTUnRGQp.js.map} +1 -1
  103. package/build/server/chunks/{close-BGlLztTb.js → close-DAiakm6B.js} +2 -2
  104. package/build/server/chunks/{close-BGlLztTb.js.map → close-DAiakm6B.js.map} +1 -1
  105. package/build/server/chunks/{index-DP9bWJrR.js → index-C2COL4R7.js} +2 -2
  106. package/build/server/chunks/{index-DP9bWJrR.js.map → index-C2COL4R7.js.map} +1 -1
  107. package/build/server/chunks/{index-server-BUmV4MIG.js → index-server-Cpgjzv_S.js} +2 -2
  108. package/build/server/chunks/{index-server-BUmV4MIG.js.map → index-server-Cpgjzv_S.js.map} +1 -1
  109. package/build/server/chunks/{index2-D5Y19GKR.js → index2-CKXBGyRH.js} +2 -2
  110. package/build/server/chunks/{index2-D5Y19GKR.js.map → index2-CKXBGyRH.js.map} +1 -1
  111. package/build/server/chunks/{root-CATOR_0t.js → root-CeOG24Ij.js} +2 -2
  112. package/build/server/chunks/{root-CATOR_0t.js.map → root-CeOG24Ij.js.map} +1 -1
  113. package/build/server/chunks/{state.svelte-CftllyvC.js → state.svelte-BMNP49Le.js} +3 -3
  114. package/build/server/chunks/{state.svelte-CftllyvC.js.map → state.svelte-BMNP49Le.js.map} +1 -1
  115. package/build/server/chunks/{stores-BjL57aOK.js → stores-NzQ5oCpr.js} +4 -4
  116. package/build/server/chunks/{stores-BjL57aOK.js.map → stores-NzQ5oCpr.js.map} +1 -1
  117. package/build/server/index.js +4 -4
  118. package/build/server/index.js.map +1 -1
  119. package/build/server/manifest.js +12 -12
  120. package/build/server/manifest.js.map +1 -1
  121. package/package.json +1 -1
  122. package/src/app.css +41 -18
  123. package/src/lib/modules/server/sessions/jsonl-reader.ts +103 -92
  124. package/src/routes/+page.svelte +60 -2
  125. package/build/client/_app/immutable/assets/0.BhZOCxO4.css +0 -1
  126. package/build/client/_app/immutable/assets/0.BhZOCxO4.css.br +0 -0
  127. package/build/client/_app/immutable/assets/0.BhZOCxO4.css.gz +0 -0
  128. package/build/client/_app/immutable/assets/2.Dk9NfqnS.css.br +0 -0
  129. package/build/client/_app/immutable/assets/2.Dk9NfqnS.css.gz +0 -0
  130. package/build/client/_app/immutable/chunks/Dc_Gg2H6.js.br +0 -0
  131. package/build/client/_app/immutable/chunks/Dc_Gg2H6.js.gz +0 -0
  132. package/build/client/_app/immutable/chunks/DlnAjkg1.js.br +0 -0
  133. package/build/client/_app/immutable/chunks/YKoRJzXZ.js.br +0 -0
  134. package/build/client/_app/immutable/chunks/YKoRJzXZ.js.gz +0 -0
  135. package/build/client/_app/immutable/entry/app.CFPgQOa8.js.br +0 -0
  136. package/build/client/_app/immutable/entry/app.CFPgQOa8.js.gz +0 -0
  137. package/build/client/_app/immutable/entry/start.BnJOVqhI.js +0 -1
  138. package/build/client/_app/immutable/entry/start.BnJOVqhI.js.br +0 -2
  139. package/build/client/_app/immutable/entry/start.BnJOVqhI.js.gz +0 -0
  140. package/build/client/_app/immutable/nodes/0.DR-BBF5r.js.br +0 -0
  141. package/build/client/_app/immutable/nodes/0.DR-BBF5r.js.gz +0 -0
  142. package/build/client/_app/immutable/nodes/1.CNm6rAwf.js.br +0 -0
  143. package/build/client/_app/immutable/nodes/1.CNm6rAwf.js.gz +0 -0
  144. package/build/client/_app/immutable/nodes/2.B08usYzr.js +0 -13
  145. package/build/client/_app/immutable/nodes/2.B08usYzr.js.br +0 -0
  146. package/build/client/_app/immutable/nodes/2.B08usYzr.js.gz +0 -0
  147. package/build/client/_app/immutable/nodes/3.CsY6J5HS.js.br +0 -0
  148. package/build/client/_app/immutable/nodes/3.CsY6J5HS.js.gz +0 -0
  149. package/build/client/_app/immutable/nodes/6.CbQQ3FtZ.js.br +0 -0
  150. package/build/client/_app/immutable/nodes/6.CbQQ3FtZ.js.gz +0 -0
  151. package/build/client/_app/immutable/nodes/7.CCKgiNNk.js.br +0 -0
  152. package/build/client/_app/immutable/nodes/7.CCKgiNNk.js.gz +0 -0
  153. package/build/client/_app/immutable/nodes/8.C7AaheUD.js.gz +0 -0
  154. package/build/client/_app/immutable/nodes/9.DfL9kMC4.js.br +0 -0
  155. package/build/client/_app/immutable/nodes/9.DfL9kMC4.js.gz +0 -0
  156. package/build/server/chunks/_page.svelte-DDSzYLUs.js.map +0 -1
  157. package/build/server/chunks/_server.ts-Ds_SUGC3.js.map +0 -1
  158. package/build/server/chunks/client2-bqqmu0b7.js +0 -7
@@ -0,0 +1 @@
1
+ :root{--ds-background-100: #0a0a0a;--ds-background-200: #000000;--ds-gray-100: #1a1a1a;--ds-gray-200: #1f1f1f;--ds-gray-300: #292929;--ds-gray-400: #2e2e2e;--ds-gray-500: #454545;--ds-gray-600: #878787;--ds-gray-700: #8f8f8f;--ds-gray-800: #7d7d7d;--ds-gray-900: #a1a1a1;--ds-gray-1000: #ededed;--ds-gray-alpha-100: rgba(255, 255, 255, .06);--ds-gray-alpha-200: rgba(255, 255, 255, .09);--ds-gray-alpha-300: rgba(255, 255, 255, .13);--ds-gray-alpha-400: rgba(255, 255, 255, .14);--ds-blue-100: #0d1d33;--ds-blue-700: #0070f3;--ds-blue-900: #52a8ff;--ds-red-100: #2a1314;--ds-red-700: #e5484d;--ds-red-900: #ff6166;--ds-green-100: #0d1f12;--ds-green-700: #46a758;--ds-green-900: #62c073;--ds-amber-100: #271700;--ds-amber-700: #f5a623;--ds-amber-900: #ffb224;--background: var(--ds-background-100);--background-secondary: var(--ds-background-200);--component-bg: var(--ds-gray-100);--component-bg-hover: var(--ds-gray-200);--component-bg-active: var(--ds-gray-300);--border: var(--ds-gray-400);--border-hover: var(--ds-gray-500);--border-active: var(--ds-gray-600);--text-primary: var(--ds-gray-1000);--text-secondary: var(--ds-gray-900);--text-tertiary: var(--ds-gray-800);--font-sans: "Geist", -apple-system, "BlinkMacSystemFont", "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-mono: "Geist Mono", "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", monospace;--text-xs: 12px;--text-sm: 13px;--text-base: 14px;--text-md: 15px;--text-lg: 16px;--text-xl: 20px;--text-2xl: 24px;--text-3xl: 32px;--text-4xl: 40px;--leading-none: 1;--leading-tight: 1.25;--leading-snug: 1.375;--leading-normal: 1.5;--leading-relaxed: 1.625;--tracking-tighter: -.04em;--tracking-tight: -.02em;--tracking-normal: 0;--space-0: 0;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-full: 9999px;--transition-fast: .15s ease;--transition-normal: .2s ease;--max-width: 1100px;--header-height: 64px}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);background:var(--background);color:var(--text-primary);min-height:100vh}.app{height:100vh;display:flex;flex-direction:column;overflow:hidden}.header{height:var(--header-height);background:var(--background);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100}.header-content{max-width:var(--max-width);height:100%;margin:0 auto;padding:0 var(--space-6);display:flex;justify-content:space-between;align-items:center}.logo{display:flex;align-items:center;gap:var(--space-3);text-decoration:none;color:inherit}.logo-icon{width:24px;height:24px;flex-shrink:0}.logo-text{font-size:var(--text-md);font-weight:500;letter-spacing:var(--tracking-tight);color:var(--text-primary)}.nav{display:flex;align-items:center;gap:var(--space-1)}.nav-link{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:400;color:var(--text-secondary);text-decoration:none;background:transparent;border:none;cursor:pointer;transition:color var(--transition-fast),background var(--transition-fast)}.nav-link:hover{color:var(--text-primary);background:var(--component-bg)}.nav-link.active{color:var(--text-primary)}.main{flex:1;max-width:var(--max-width);width:100%;margin:0 auto;padding:var(--space-8) var(--space-6)}.page-header{margin-bottom:var(--space-8)}.page-title{font-size:var(--text-2xl);font-weight:600;letter-spacing:var(--tracking-tighter);color:var(--text-primary);line-height:var(--leading-tight);margin-bottom:var(--space-2)}.page-description{font-size:var(--text-sm);color:var(--text-secondary);line-height:var(--leading-normal)}.card{background:var(--component-bg);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.card-header{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--ds-gray-alpha-200)}.card-title{font-size:var(--text-sm);font-weight:500;color:var(--text-primary);line-height:var(--leading-tight)}.card-description{font-size:var(--text-sm);color:var(--text-tertiary);margin-top:var(--space-1);line-height:var(--leading-normal)}.card-content{padding:var(--space-5)}.status-badge{display:inline-flex;align-items:center;gap:var(--space-2);height:26px;padding:0 var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:500;text-transform:uppercase;letter-spacing:.02em}.status-badge.online{background:var(--ds-green-100);color:var(--ds-green-900)}.status-badge.offline{background:var(--ds-red-100);color:var(--ds-red-900)}.status-badge.degraded{background:var(--ds-amber-100);color:var(--ds-amber-900)}.status-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-16) var(--space-6)}@media(max-width:768px){.empty-state{padding:var(--space-8) var(--space-4)}}@media(max-width:480px){.empty-state{padding:var(--space-6) var(--space-3)}}.empty-state-icon{width:48px;height:48px;margin:0 auto var(--space-5);background:var(--component-bg);border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center}.empty-state-icon svg{width:24px;height:24px;color:var(--text-tertiary)}.empty-state-title{font-size:var(--text-lg);font-weight:600;color:var(--text-primary);margin-bottom:var(--space-2)}.empty-state-description{font-size:var(--text-sm);color:var(--text-secondary);max-width:320px;margin:0 auto var(--space-6);line-height:var(--leading-relaxed)}.list{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.list-item{display:flex;align-items:center;padding:var(--space-4) var(--space-5);background:var(--component-bg);border-bottom:1px solid var(--ds-gray-alpha-200);transition:background var(--transition-fast)}.list-item:last-child{border-bottom:none}.list-item:hover{background:var(--component-bg-hover)}.code{font-family:var(--font-mono);font-size:var(--text-xs);background:var(--component-bg);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);color:var(--text-secondary)}.divider{height:1px;background:var(--border);margin:var(--space-6) 0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:768px){:root{--header-height: 56px}.header-content{padding:0 var(--space-4)}.main{padding:var(--space-6) var(--space-4)}.page-title{font-size:var(--text-xl)}.hide-mobile{display:none}}@media(max-width:480px){:root{--header-height: 48px}.main{padding:var(--space-4) var(--space-3)}.header-content{padding:0 var(--space-3)}.logo{gap:var(--space-2)}.logo-text{font-size:var(--text-sm)}.nav{gap:0}.nav-link{padding:var(--space-3) var(--space-2);font-size:13px;min-height:44px;display:inline-flex;align-items:center}.btn{min-height:44px;height:auto;padding:10px 16px}.btn-sm,.input{min-height:44px;height:auto;padding:10px 12px}}.btn:focus-visible,.input:focus-visible,.nav-link:focus-visible{outline:2px solid var(--ds-blue-700);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}::selection{background:var(--ds-blue-700);color:#fff}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--ds-gray-400);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--ds-gray-500)}.session-card{background:linear-gradient(135deg,#141414e6,#1c1c20e6);border:1px solid rgba(255,255,255,.06);border-radius:var(--radius-lg, 14px);padding:var(--space-5, 1.25rem) var(--space-5, 1.25rem);cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;overflow:hidden;min-width:0;gap:var(--space-3, .75rem);position:relative;text-decoration:none;box-shadow:0 1px 3px #0000004d,0 0 0 1px #ffffff08 inset}.session-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,#22c55e,#16a34a);border-radius:3px 0 0 3px;opacity:.7;transition:opacity .25s}.session-card:hover{border-color:#22c55e4d;background:linear-gradient(135deg,#19191cf2,#202026f2);transform:translateY(-1px);box-shadow:0 4px 12px #0006,0 0 0 1px #22c55e26 inset}.session-card:hover:before{opacity:1}.session-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3, .75rem);min-width:0;overflow:hidden}.session-card-header>div:first-child{min-width:0;overflow:hidden}.session-card-title{font-size:1.05rem;font-weight:700;color:#f0f0f0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.01em}.session-card-subtitle{font-size:.78rem;color:#a3a3a3b3;font-family:var(--font-mono, monospace);margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.session-stats{display:flex;gap:var(--space-4, 1rem);font-size:.82rem;color:var(--text-secondary, #a3a3a3);align-items:center}.session-stats strong{color:#22c55e;font-weight:700;font-size:.95rem}.session-tools{display:flex;flex-wrap:wrap;gap:6px}.session-tool-pill{padding:3px 8px;border-radius:4px;font-size:.7rem;font-weight:600;font-family:var(--font-mono, monospace);border:1px solid}.session-tool-pill[data-tool=Bash]{background:#f59e0b26;color:#f59e0b;border-color:#f59e0b4d}.session-tool-pill[data-tool=Edit]{background:#3b82f626;color:#3b82f6;border-color:#3b82f64d}.session-tool-pill[data-tool=Write]{background:#8b5cf626;color:#8b5cf6;border-color:#8b5cf64d}.session-tool-pill[data-tool=Read]{background:#10b98126;color:#10b981;border-color:#10b9814d}.session-tool-pill[data-tool=Agent]{background:#ef444426;color:#ef4444;border-color:#ef44444d}.session-tool-pill[data-tool=Build]{background:#06b6d426;color:#06b6d4;border-color:#06b6d44d}.session-tool-pill[data-tool=Test]{background:#ec489926;color:#ec4899;border-color:#ec48994d}.session-tool-pill-default{background:#6b728026;color:#9ca3af;border-color:#6b72804d}.session-tool-more{padding:3px 8px;border-radius:4px;font-size:.7rem;color:var(--text-tertiary, #737373);background:#ffffff0d}.session-duration{font-size:.75rem;color:var(--text-tertiary, #737373)}.session-chevron{color:var(--text-tertiary, #737373);font-size:1.2rem;align-self:center}.session-detail-header{display:flex;align-items:center;gap:var(--space-3, .75rem);margin-bottom:var(--space-4, 1rem)}.session-back-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-md, 8px);background:var(--bg-secondary, #141414);border:1px solid var(--border, #2a2a2a);color:var(--text-secondary, #a3a3a3);cursor:pointer;transition:all var(--transition-fast, .15s);text-decoration:none;font-size:1.1rem}.session-back-btn:hover{background:var(--bg-tertiary, #1a1a1a);color:var(--text-primary, #fafafa);border-color:var(--gray-600, #525252)}.session-info-bar{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--border, #2a2a2a);border:1px solid var(--border, #2a2a2a);border-radius:var(--radius-lg, 12px);overflow:hidden;margin-bottom:var(--space-5, 1.25rem)}.session-info-item{background:var(--bg-secondary, #141414);padding:var(--space-3, .75rem) var(--space-4, 1rem)}.session-info-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary, #737373);margin-bottom:4px}.session-info-value{font-size:.9rem;font-weight:500;color:var(--text-primary, #fafafa)}.session-events-list{display:flex;flex-direction:column;gap:0}.session-event{display:grid;grid-template-columns:60px auto 1fr;gap:var(--space-3, .75rem);padding:var(--space-3, .75rem) 0;border-bottom:1px solid var(--border, #2a2a2a);align-items:start}.session-event:last-child{border-bottom:none}.session-event-time{font-family:var(--font-mono, monospace);font-size:.8rem;color:var(--text-tertiary, #737373);padding-top:2px}.session-event-tool{padding:3px 8px;border-radius:4px;font-size:.7rem;font-weight:600;font-family:var(--font-mono, monospace);text-align:center;min-width:50px;border:1px solid}.session-event-content{min-width:0}.session-event-title{font-size:.9rem;color:var(--text-primary, #fafafa);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-event-message{font-size:.8rem;color:var(--text-tertiary, #737373);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-footer{display:flex;justify-content:space-between;align-items:center;padding-top:var(--space-4, 1rem);margin-top:var(--space-3, .75rem);border-top:1px solid var(--border, #2a2a2a);font-size:.8rem;color:var(--text-secondary, #a3a3a3)}@media(max-width:768px){.session-card{padding:var(--space-3, .75rem)}.session-card-header{flex-direction:column;gap:var(--space-2, .5rem)}.session-badge{align-self:flex-start}.session-stats{flex-wrap:wrap;gap:var(--space-2, .5rem)}.session-info-bar{grid-template-columns:1fr 1fr}.session-event{grid-template-columns:50px auto 1fr;gap:var(--space-2, .5rem)}.session-event-title{white-space:normal}.session-footer{flex-direction:column;gap:var(--space-2, .5rem);align-items:flex-start}}@media(max-width:480px){.session-info-bar{grid-template-columns:1fr}.session-event{grid-template-columns:1fr;gap:var(--space-1, .25rem)}.session-event-time{font-size:.7rem}.session-card{padding:10px 12px;gap:var(--space-2)}.session-card-subtitle{font-size:.7rem}.session-stats{gap:var(--space-1);font-size:.75rem}}.chat-container{display:flex;flex-direction:column;gap:var(--space-4, 1rem);padding:var(--space-4, 1rem) 0;overflow-y:auto;flex:1;min-height:0}.chat-message{display:flex;gap:var(--space-3, .75rem);max-width:85%;animation:fadeInUp .2s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.chat-message-user{align-self:flex-end;flex-direction:row-reverse}.chat-message-assistant{align-self:flex-start}.chat-message-system{align-self:center;max-width:90%}.chat-avatar{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;flex-shrink:0;margin-top:4px}.chat-avatar-user{background:#3b82f633;color:#60a5fa;border:1px solid rgba(59,130,246,.3)}.chat-avatar-assistant{background:#f9731633;color:#fb923c;border:1px solid rgba(249,115,22,.3)}.chat-bubble{border-radius:var(--radius-lg, 12px);padding:var(--space-3, .75rem) var(--space-4, 1rem);line-height:1.5;font-size:.9rem;word-break:break-word;overflow-wrap:break-word;min-width:0;overflow:hidden}.chat-bubble-user{background:#1e293b;border:1px solid #334155;color:var(--text-primary, #fafafa);border-bottom-right-radius:4px}.chat-bubble-assistant{background:var(--bg-secondary, #141414);border:1px solid var(--border, #2a2a2a);color:var(--text-primary, #fafafa);border-bottom-left-radius:4px}.chat-bubble p{margin:0 0 .5rem}.chat-bubble p:last-child{margin-bottom:0}.chat-bubble code{background:#ffffff14;padding:2px 6px;border-radius:4px;font-family:var(--font-mono, monospace);font-size:.85em}.chat-bubble pre{background:#0000004d;border:1px solid var(--border, #2a2a2a);border-radius:var(--radius-md, 8px);padding:var(--space-3, .75rem);overflow-x:auto;margin:.5rem 0;font-size:.8rem}@media(max-width:768px){.chat-bubble pre{max-width:calc(100vw - 120px)}}.chat-bubble pre code{background:none;padding:0}.chat-bubble h1,.chat-bubble h2,.chat-bubble h3,.chat-bubble h4{margin:.75rem 0 .25rem;font-weight:600;line-height:1.3;color:var(--text-primary, #fafafa)}.chat-bubble h1{font-size:1.15em}.chat-bubble h2{font-size:1.05em}.chat-bubble h3{font-size:.95em}.chat-bubble h4{font-size:.9em}.chat-bubble h1:first-child,.chat-bubble h2:first-child,.chat-bubble h3:first-child{margin-top:0}.chat-bubble ul,.chat-bubble ol{margin:.4rem 0;padding-left:1.4rem}.chat-bubble li{margin-bottom:.2rem;line-height:1.5}.chat-bubble li>ul,.chat-bubble li>ol{margin:.1rem 0}.chat-bubble blockquote{border-left:3px solid var(--gray-600, #525252);margin:.5rem 0;padding:.25rem .75rem;color:var(--text-secondary, #a3a3a3);font-style:italic}.chat-bubble table{border-collapse:collapse;width:100%;margin:.5rem 0;font-size:.85em}.chat-bubble th,.chat-bubble td{border:1px solid var(--border, #2a2a2a);padding:.35rem .6rem;text-align:left}.chat-bubble th{background:#ffffff0a;font-weight:600}.chat-bubble hr{border:none;border-top:1px solid var(--border, #2a2a2a);margin:.75rem 0}.chat-bubble a{color:#60a5fa;text-decoration:none}.chat-bubble a:hover{text-decoration:underline}.chat-bubble strong{font-weight:600;color:var(--text-primary, #fafafa)}.chat-bubble em{font-style:italic}.chat-bubble img{max-width:100%;border-radius:var(--radius-md, 8px)}.chat-timestamp{font-size:.7rem;color:var(--text-tertiary, #737373);margin-top:4px;padding:0 4px}.chat-message-user .chat-timestamp{text-align:right}.chat-tool-card{background:var(--bg-secondary, #141414);border:1px solid var(--border, #2a2a2a);border-radius:var(--radius-md, 8px);overflow:hidden;margin:var(--space-2, .5rem) 0;max-width:90%;align-self:flex-start}.chat-tool-header{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-2, .5rem) var(--space-3, .75rem);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast, .15s)}.chat-tool-header:hover{background:#ffffff08}.chat-tool-chevron{font-size:.7rem;color:var(--text-tertiary, #737373);transition:transform .2s ease}.chat-tool-chevron.expanded{transform:rotate(90deg)}.chat-tool-name{font-family:var(--font-mono, monospace);font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:4px;border:1px solid}.chat-tool-name[data-tool=Bash]{background:#f59e0b26;color:#f59e0b;border-color:#f59e0b4d}.chat-tool-name[data-tool=Edit]{background:#3b82f626;color:#3b82f6;border-color:#3b82f64d}.chat-tool-name[data-tool=Write]{background:#8b5cf626;color:#8b5cf6;border-color:#8b5cf64d}.chat-tool-name[data-tool=Read]{background:#10b98126;color:#10b981;border-color:#10b9814d}.chat-tool-name[data-tool=Agent]{background:#ef444426;color:#ef4444;border-color:#ef44444d}.chat-tool-name[data-tool=Grep]{background:#06b6d426;color:#06b6d4;border-color:#06b6d44d}.chat-tool-name[data-tool=Glob]{background:#ec489926;color:#ec4899;border-color:#ec48994d}.chat-tool-name[data-tool=Skill]{background:#a855f726;color:#a855f7;border-color:#a855f74d}.chat-tool-description{font-size:.8rem;color:var(--text-secondary, #a3a3a3);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-tool-body{border-top:1px solid var(--border, #2a2a2a);padding:var(--space-3, .75rem);font-family:var(--font-mono, monospace);font-size:.75rem;color:var(--text-secondary, #a3a3a3);max-height:300px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.chat-tool-result{border-top:1px solid var(--border, #2a2a2a);padding:var(--space-3, .75rem);font-family:var(--font-mono, monospace);font-size:.75rem;max-height:200px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.chat-tool-result-success{color:#10b981;background:#10b9810d}.chat-tool-result-error{color:#ef4444;background:#ef44440d}.chat-thinking{background:#a855f70d;border:1px dashed rgba(168,85,247,.2);border-radius:var(--radius-md, 8px);padding:var(--space-2, .5rem) var(--space-3, .75rem);margin:var(--space-2, .5rem) 0;max-width:90%;align-self:flex-start}.chat-thinking-header{display:flex;align-items:center;gap:var(--space-2, .5rem);cursor:pointer;font-size:.75rem;color:#a855f7;font-weight:500}.chat-thinking-body{font-size:.8rem;color:var(--text-tertiary, #737373);margin-top:var(--space-2, .5rem);line-height:1.5;max-height:200px;overflow-y:auto}.back-link{display:inline-flex;align-items:center;gap:var(--space-2, .5rem);font-size:.85rem;color:var(--text-secondary, #a3a3a3);text-decoration:none;margin-bottom:var(--space-3, .75rem);transition:color var(--transition-fast, .15s);min-height:44px;padding:8px 4px}.back-link:hover{color:var(--text-primary, #fafafa)}.chat-session-header{background:var(--bg-secondary, #141414);border:1px solid var(--border, #2a2a2a);border-radius:var(--radius-lg, 12px);padding:var(--space-4, 1rem) var(--space-5, 1.25rem);margin-bottom:var(--space-4, 1rem)}.chat-session-title{font-size:1.1rem;font-weight:600;color:var(--text-primary, #fafafa);margin-bottom:var(--space-1, .25rem)}.chat-session-meta{display:flex;flex-wrap:wrap;gap:var(--space-3, .75rem);font-size:.8rem;color:var(--text-tertiary, #737373)}.chat-session-meta-item{display:flex;align-items:center;gap:4px}@media(max-width:768px){.chat-container{overflow-x:hidden}.chat-message{max-width:95%;min-width:0}.chat-tool-card,.chat-thinking{max-width:95%}.chat-avatar{width:24px;height:24px;font-size:.65rem}.chat-bubble{padding:var(--space-2, .5rem) var(--space-3, .75rem);font-size:.85rem;overflow-wrap:break-word;word-break:break-word;min-width:0}.chat-bubble pre{overflow-x:auto;max-width:100%}.chat-bubble table{display:block;overflow-x:auto;max-width:100%}.chat-tool-description{max-width:200px}.chat-tool-body{max-width:100%;overflow-x:auto}.chat-session-meta{flex-direction:column;gap:var(--space-1, .25rem)}}@media(max-width:480px){.chat-message{max-width:100%}.chat-message-user,.chat-message-assistant{align-self:stretch}.chat-tool-card,.chat-thinking{max-width:100%}.chat-tool-description{max-width:150px}}.skeleton{background:linear-gradient(90deg,var(--bg-secondary, #1a1a2e) 25%,var(--bg-tertiary, #252540) 50%,var(--bg-secondary, #1a1a2e) 75%);background-size:200% 100%;animation:skeleton-pulse 1.5s ease-in-out infinite;border-radius:var(--radius-sm, 4px)}@keyframes skeleton-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.loading-container{display:flex;flex-direction:column;gap:var(--space-3, .75rem);padding:var(--space-4, 1rem) 0}.terminal-topbar{display:flex;align-items:center;gap:var(--space-3, .75rem);padding:var(--space-2, .5rem) var(--space-4, 1rem);background:#111827;border-bottom:1px solid #1e293b;min-height:48px;flex-shrink:0}.terminal-topbar .btn{flex-shrink:0}.terminal-body{flex:1;background:#0a0a0f;overflow:hidden;position:relative;min-height:0}.terminal-input{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-2, .5rem) var(--space-3, .75rem);background:#111827;border-top:1px solid #1e293b;flex-shrink:0}.terminal-input input{flex:1;height:40px;padding:0 var(--space-3, .75rem);background:#0a0a0f;border:1px solid #1e293b;border-radius:var(--radius-md, 6px);color:var(--text-primary, #ededed);font-family:var(--font-mono);font-size:var(--text-sm, 13px);outline:none;transition:border-color var(--transition-fast, .15s)}.terminal-input input:focus{border-color:#334155}.terminal-input input::placeholder{color:var(--text-tertiary, #7d7d7d)}.term-toggle{display:inline-flex;align-items:center;background:#1e293b;border-radius:var(--radius-full, 9999px);padding:2px;flex-shrink:0}.term-toggle button{height:28px;padding:0 var(--space-3, .75rem);border:none;border-radius:var(--radius-full, 9999px);background:transparent;color:var(--text-tertiary, #7d7d7d);font-family:var(--font-sans);font-size:var(--text-xs, 12px);font-weight:500;cursor:pointer;transition:background var(--transition-fast, .15s),color var(--transition-fast, .15s)}.term-toggle button.active{background:#334155;color:var(--text-primary, #ededed)}.term-toggle button:hover:not(.active){color:var(--text-secondary, #a1a1a1)}.badge-ai{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-full, 9999px);background:#a78bfa26;color:#a78bfa;font-size:var(--text-xs, 12px);font-weight:500;white-space:nowrap}.badge-shell{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-full, 9999px);background:#22c55e26;color:#22c55e;font-size:var(--text-xs, 12px);font-weight:500;white-space:nowrap}.badge-live{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:var(--radius-full, 9999px);background:#22c55e26;color:#22c55e;font-size:var(--text-xs, 12px);font-weight:500;white-space:nowrap}.badge-live:before{content:"";width:6px;height:6px;border-radius:50%;background:#22c55e;animation:pulse-dot 2s ease-in-out infinite}.badge-ended{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-full, 9999px);background:#6b728026;color:#9ca3af;font-size:var(--text-xs, 12px);font-weight:500;white-space:nowrap}.connection-status{display:inline-flex;align-items:center;gap:6px;font-size:var(--text-xs, 12px);font-weight:500;white-space:nowrap}.connection-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.connection-status.connected .connection-status-dot{background:#22c55e}.connection-status.reconnecting .connection-status-dot{background:#f59e0b;animation:pulse-dot 1s ease-in-out infinite}.connection-status.disconnected .connection-status-dot{background:#ef4444}.connection-status.connected{color:#22c55e}.connection-status.reconnecting{color:#f59e0b}.connection-status.disconnected{color:#ef4444}.chat-input-bar{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-3, .75rem) var(--space-4, 1rem);padding-bottom:calc(var(--space-3, .75rem) + env(safe-area-inset-bottom,0px));background:#111827;border-top:1px solid #1e293b;flex-shrink:0}.chat-input-bar input{flex:1;height:44px;padding:0 var(--space-4, 1rem);background:#0a0a0f;border:1px solid #1e293b;border-radius:var(--radius-lg, 8px);color:var(--text-primary, #ededed);font-family:var(--font-sans);font-size:var(--text-base, 14px);outline:none;transition:border-color var(--transition-fast, .15s)}.chat-input-bar input:focus{border-color:#334155}.chat-input-bar input::placeholder{color:var(--text-tertiary, #7d7d7d)}.chat-input-bar button{height:44px;min-width:44px;padding:0 var(--space-4, 1rem);background:#22c55e;border:none;border-radius:var(--radius-lg, 8px);color:#0a0a0f;font-family:var(--font-sans);font-size:var(--text-sm, 13px);font-weight:600;cursor:pointer;flex-shrink:0;transition:background var(--transition-fast, .15s),opacity var(--transition-fast, .15s)}.chat-input-bar button:hover{background:#16a34a}.chat-input-bar button:disabled{opacity:.4;cursor:not-allowed}.chat-permission-inline{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-3, .75rem) var(--space-4, 1rem);background:#f59e0b14;border:1px solid rgba(245,158,11,.2);border-radius:var(--radius-lg, 8px);margin:var(--space-2, .5rem) 0}.chat-permission-inline .permission-label{flex:1;font-size:var(--text-sm, 13px);color:#f59e0b;font-weight:500}.chat-permission-inline .btn-allow{height:34px;padding:0 var(--space-4, 1rem);background:#22c55e;border:none;border-radius:var(--radius-md, 6px);color:#0a0a0f;font-size:var(--text-sm, 13px);font-weight:600;cursor:pointer;transition:background var(--transition-fast, .15s)}.chat-permission-inline .btn-allow:hover{background:#16a34a}.chat-permission-inline .btn-deny{height:34px;padding:0 var(--space-4, 1rem);background:transparent;border:1px solid #ef4444;border-radius:var(--radius-md, 6px);color:#ef4444;font-size:var(--text-sm, 13px);font-weight:600;cursor:pointer;transition:background var(--transition-fast, .15s),color var(--transition-fast, .15s)}.chat-permission-inline .btn-deny:hover{background:#ef444426}@media(max-width:768px){.terminal-topbar{padding:var(--space-2, .5rem) var(--space-3, .75rem);gap:var(--space-2, .5rem);min-height:44px}.terminal-input input,.chat-input-bar input{min-width:0}.chat-permission-inline{flex-wrap:wrap}.chat-permission-inline .permission-label{width:100%;margin-bottom:var(--space-1, .25rem)}}:root{--button-font-family: var(--font-sans);--button-font-size: var(--text-sm);--button-font-weight: 500;--button-color: var(--ds-blue-700);--button-text-color: #fff;--button-padding: 8px 16px;--button-border-radius: var(--radius-md);--button-border: 1px solid transparent;--button-hover-color: var(--ds-blue-900);--button-hover-text-color: #fff;--button-content-gap: 8px;--input-background: var(--ds-gray-100);--input-font-family: var(--font-sans);--input-font-size: var(--text-base);--input-font-weight: 400;--input-radius: var(--radius-md);--input-padding: 10px 12px;--input-height: 40px;--input-width: 100%;--input-margin: 0;--input-box-shadow: none;--input-border: 1px solid var(--border);--input-focus-border: 1px solid var(--ds-blue-700);--input-text-color: var(--text-primary);--input-placeholder-color: var(--text-tertiary);--input-label-msg-text-color: var(--text-secondary);--input-label-msg-text-size: var(--text-sm);--input-label-msg-text-weight: 400;--input-label-msg-margin: 0 0 var(--space-2) 0;--input-error-msg-text-color: var(--ds-red-700);--input-error-msg-text-size: var(--text-xs);--input-info-msg-text-color: var(--text-tertiary);--input-info-msg-text-size: var(--text-xs);--input-info-msg-margin: var(--space-2) 0 0 0;--input-container-margin: 0 0 var(--space-5) 0;--banner-background: var(--ds-gray-100);--banner-color: var(--text-secondary);--banner-font-family: var(--font-sans);--banner-font-size: var(--text-sm);--banner-font-weight: 500;--banner-padding: 12px 16px;--banner-gap: 10px;--banner-justify-content: flex-start;--banner-icon-size: 16px;--banner-link-color: var(--ds-blue-900);--banner-cursor: default;--banner-position: relative;--banner-z-index: auto;--banner-dismiss-hover-background: var(--ds-gray-alpha-200);--banner-dismiss-color: var(--text-tertiary);--pill-background: var(--ds-gray-300);--pill-color: var(--text-secondary);--pill-font-family: var(--font-sans);--pill-font-size: var(--text-xs);--pill-font-weight: 500;--pill-padding: 4px 10px;--pill-border-radius: var(--radius-full);--pill-border: none;--pill-hover-background: var(--ds-gray-400);--pill-hover-color: var(--text-primary);--badge-background: var(--ds-gray-500);--badge-color: #fff;--badge-font-family: var(--font-sans);--badge-font-size: var(--text-xs);--badge-padding: 2px 6px;--badge-border-radius: var(--radius-full);--badge-border: none;--badge-wrap-margin: 0;--badge-wrap-padding: 0;--badge-img-width: 24px;--badge-img-height: 24px;--badge-img-border-radius: var(--radius-sm);--badge-img-icon-shadow: none;--badge-min-width: 6px;--badge-min-height: 6px;--tabs-bar-background: transparent;--tabs-bar-padding: 0;--tabs-bar-gap: 0;--tabs-bar-border-bottom: 1px solid var(--border);--tabs-item-padding: 10px 16px;--tabs-item-font-size: var(--text-sm);--tabs-item-font-weight: 500;--tabs-item-font-family: var(--font-sans);--tabs-item-color: var(--text-tertiary);--tabs-item-background: transparent;--tabs-active-color: var(--text-primary);--tabs-active-font-weight: 600;--tabs-indicator-color: var(--ds-blue-700);--tabs-indicator-height: 2px;--tabs-hover-color: var(--text-secondary);--tabs-hover-background: var(--ds-gray-alpha-100);--tabs-transition: color .15s ease, background .15s ease;--sheet-overlay-background: rgba(0, 0, 0, .6);--sheet-background: var(--ds-gray-100);--sheet-box-shadow: -4px 0 16px rgba(0, 0, 0, .3);--sheet-border: none;--sheet-header-padding: 16px 20px;--sheet-header-background: var(--ds-gray-100);--sheet-header-border-bottom: 1px solid var(--border);--sheet-title-font-size: var(--text-lg);--sheet-title-font-weight: 600;--sheet-title-font-family: var(--font-sans);--sheet-title-color: var(--text-primary);--sheet-close-button-color: var(--text-tertiary);--sheet-close-button-hover-background: var(--ds-gray-300);--sheet-content-padding: 20px;--sheet-footer-padding: 16px 20px;--sheet-footer-background: var(--ds-gray-100);--sheet-footer-border-top: 1px solid var(--border);--select-bgcolor: var(--ds-gray-100);--select-font-family: var(--font-sans);--select-font-size: var(--text-base);--select-radius: var(--radius-md);--select-box-shadow: none;--select-border: 1px solid var(--border);--select-color: var(--text-primary);--select-hover-color: var(--text-primary);--select-hover-bgcolor: var(--ds-gray-200);--item-padding: 10px 12px;--item-background-color: var(--ds-gray-100);--non-selected-hover-bg: var(--ds-gray-200);--non-selected-hover-color: var(--text-primary);--non-selected-item-bgcolor: var(--ds-gray-100);--non-selected-item-color: var(--text-secondary);--non-selected-items-border-radius: var(--radius-md);--selected-item-background-color: var(--ds-gray-200);--selected-item-padding: 10px 12px;--selected-color: var(--text-primary);--selected-hover-bg: var(--ds-gray-200);--label-text-color: var(--text-secondary);--label-text-size: var(--text-xs);--label-text-weight: 500;--shimmer-background: var(--ds-gray-200);--shimmer-highlight: rgba(255, 255, 255, .04);--shimmer-border-radius: var(--radius-md);--shimmer-duration: 1.5s;--avatar-background: var(--ds-gray-300);--avatar-text-color: var(--text-secondary);--avatar-font-family: var(--font-sans);--avatar-border: none;--avatar-small-width: 28px;--avatar-small-height: 28px;--avatar-medium-width: 36px;--avatar-medium-height: 36px;--avatar-large-width: 48px;--avatar-large-height: 48px;--avatar-small-font-size: 11px;--avatar-medium-font-size: 13px;--avatar-large-font-size: 18px;--choicebox-background: var(--ds-gray-100);--choicebox-border: 2px solid var(--border);--choicebox-border-radius: var(--radius-lg);--choicebox-padding: 16px;--choicebox-gap: 12px;--choicebox-hover-border-color: var(--border-hover);--choicebox-hover-background: var(--ds-gray-200);--choicebox-selected-border-color: var(--ds-blue-700);--choicebox-selected-background: var(--ds-blue-100);--choicebox-title-color: var(--text-primary);--choicebox-title-font-size: var(--text-base);--choicebox-title-font-weight: 500;--choicebox-title-font-family: var(--font-sans);--choicebox-description-color: var(--text-tertiary);--choicebox-description-font-size: var(--text-sm);--choicebox-indicator-border: 2px solid var(--ds-gray-500);--choicebox-indicator-selected-color: var(--ds-blue-700);--choicebox-focus-ring: 0 0 0 3px rgba(0, 112, 243, .2);--toast-font-family: var(--font-sans);--toast-font-size: var(--text-sm);--toast-border-radius: var(--radius-lg);--toast-padding: 12px 16px;--toast-background-color: var(--ds-gray-200);--toast-z-index: 1000;--toast-success-background-color: var(--ds-green-100);--toast-success-text: var(--ds-green-900);--toast-error-background-color: var(--ds-red-100);--toast-error-text: var(--ds-red-900);--toast-info-background-color: var(--ds-blue-100);--toast-info-text: var(--ds-blue-900);--toast-warn-background-color: var(--ds-amber-100);--toast-warn-text: var(--ds-amber-900);--background-color: rgba(0, 0, 0, .6);--modal-content-background-color: var(--ds-gray-100);--modal-border-radius: var(--radius-xl);--modal-scrollbar-width: none;--modal-header-background-color: var(--ds-gray-100);--modal-header-padding: 16px 20px;--modal-header-border-bottom: 1px solid var(--border);--modal-footer-background-color: var(--ds-gray-100);--modal-footer-padding: 16px 20px;--modal-footer-border-top: 1px solid var(--border)}.btn-primary{--button-color: var(--ds-gray-1000);--button-text-color: var(--ds-background-100);--button-border: 1px solid var(--ds-gray-1000);--button-hover-color: #fff;--button-hover-text-color: var(--ds-background-100);--button-hover-border: 1px solid #fff}.btn-secondary{--button-color: var(--ds-background-100);--button-text-color: var(--ds-gray-1000);--button-border: 1px solid var(--ds-gray-400);--button-hover-color: var(--ds-gray-100);--button-hover-text-color: var(--ds-gray-1000);--button-hover-border: 1px solid var(--ds-gray-400)}.btn-ghost{--button-color: transparent;--button-text-color: var(--ds-gray-1000);--button-hover-color: var(--ds-gray-alpha-100);--button-hover-text-color: var(--ds-gray-1000)}.btn-danger{--button-color: #d93036;--button-text-color: #fff;--button-hover-color: #ff6166;--button-hover-text-color: #fff}.btn-warning{--button-color: #ff990a;--button-text-color: var(--ds-background-100);--button-hover-color: #ffb224;--button-hover-text-color: var(--ds-background-100)}.btn-connect{--button-color: #0d9488;--button-text-color: #fff;--button-hover-color: #14b8a6;--button-hover-text-color: #fff;--button-border: 1px solid #0d9488;--button-hover-border: 1px solid #14b8a6}.btn-resume{--button-color: transparent;--button-text-color: var(--ds-gray-900);--button-border: 1px solid var(--ds-gray-400);--button-hover-color: var(--ds-gray-100);--button-hover-text-color: var(--ds-gray-1000);--button-hover-border: 1px solid var(--ds-gray-600)}.btn-sm{--button-height: 32px;--button-padding: 0 10px;--button-font-size: var(--text-base)}.btn-xs{--button-height: 28px;--button-padding: 0 8px;--button-font-size: var(--text-xs);--button-border-radius: var(--radius-sm)}.btn-lg{--button-height: 48px;--button-padding: 0 20px;--button-font-size: var(--text-lg);--button-border-radius: var(--radius-lg)}.banner-alert{border-radius:var(--radius-md)}.banner-success{--banner-background: var(--ds-green-100);--banner-color: var(--ds-green-900);--banner-icon-color: var(--ds-green-900);border-radius:var(--radius-md)}.banner-error{--banner-background: var(--ds-red-100);--banner-color: var(--ds-red-900);--banner-icon-color: var(--ds-red-900);border-radius:var(--radius-md)}.banner-warning{--banner-background: var(--ds-amber-100);--banner-color: var(--ds-amber-900);--banner-icon-color: var(--ds-amber-900);border-radius:var(--radius-md)}.banner-info{--banner-background: var(--ds-blue-100);--banner-color: var(--ds-blue-900);--banner-icon-color: var(--ds-blue-900);border-radius:var(--radius-md)}.input-mono{--input-font-family: var(--font-mono);--input-font-size: var(--text-sm)}.avatar-user{--avatar-background: var(--ds-blue-100);--avatar-text-color: var(--ds-blue-900)}.avatar-assistant{--avatar-background: var(--ds-green-100);--avatar-text-color: var(--ds-green-900)}.btn-remove{--button-height: 24px;--button-width: 24px;--button-padding: 0;--button-font-size: 16px;--button-border-radius: var(--radius-sm)}.pill-session-time{--pill-background: var(--ds-green-100);--pill-color: var(--ds-green-900);--pill-font-size: var(--text-xs);--pill-padding: 4px 10px;--pill-hover-background: var(--ds-green-100);--pill-hover-color: var(--ds-green-900);--pill-cursor: inherit}.pill-tool-name{--pill-background: var(--ds-gray-300);--pill-color: var(--text-primary);--pill-font-size: var(--text-xs);--pill-font-family: var(--font-mono);--pill-padding: 2px 8px;--pill-hover-background: var(--ds-gray-300);--pill-cursor: inherit}.pill-tool-success{--pill-background: var(--ds-green-100);--pill-color: var(--ds-green-900);--pill-font-size: var(--text-xs);--pill-padding: 2px 8px;--pill-hover-background: var(--ds-green-100);--pill-cursor: inherit}.pill-tool-error{--pill-background: var(--ds-red-100);--pill-color: var(--ds-red-900);--pill-font-size: var(--text-xs);--pill-padding: 2px 8px;--pill-hover-background: var(--ds-red-100);--pill-cursor: inherit}.pill-live{--pill-background: rgba(34, 197, 94, .15);--pill-color: #22c55e;--pill-border: 1px solid rgba(34, 197, 94, .3);--pill-font-size: .7rem;--pill-padding: 2px 10px;--pill-hover-background: rgba(34, 197, 94, .15);--pill-hover-color: #22c55e;--pill-cursor: default;font-weight:700;letter-spacing:.05em}.pill-badge-ai{--pill-background: var(--ds-blue-100);--pill-color: var(--ds-blue-900);--pill-font-size: 9px;--pill-padding: 2px 6px;--pill-hover-background: var(--ds-blue-100);--pill-cursor: inherit;font-weight:700;letter-spacing:.05em}.pill-badge-shell{--pill-background: var(--ds-gray-300);--pill-color: var(--text-secondary);--pill-font-size: 9px;--pill-padding: 2px 6px;--pill-hover-background: var(--ds-gray-300);--pill-cursor: inherit;font-weight:700;letter-spacing:.05em}.pill-badge-ended{--pill-background: var(--ds-gray-alpha-200);--pill-color: var(--text-tertiary);--pill-font-size: 9px;--pill-padding: 2px 6px;--pill-hover-background: var(--ds-gray-alpha-200);--pill-cursor: inherit;font-weight:700;letter-spacing:.05em}.pill-exit-ok{--pill-background: var(--ds-green-100);--pill-color: var(--ds-green-900);--pill-font-size: 10px;--pill-font-family: var(--font-mono);--pill-padding: 2px 6px;--pill-hover-background: var(--ds-green-100);--pill-cursor: inherit}.pill-exit-error{--pill-background: var(--ds-red-100);--pill-color: var(--ds-red-900);--pill-font-size: 10px;--pill-font-family: var(--font-mono);--pill-padding: 2px 6px;--pill-hover-background: var(--ds-red-100);--pill-cursor: inherit}.pill-source-claude{--pill-background: var(--ds-blue-100);--pill-color: var(--ds-blue-900);--pill-font-size: 10px;--pill-padding: 2px 8px;--pill-hover-background: var(--ds-blue-100);--pill-hover-color: var(--ds-blue-900);--pill-cursor: inherit}.pill-source-opencode{--pill-background: var(--ds-amber-100);--pill-color: var(--ds-amber-900);--pill-font-size: 10px;--pill-padding: 2px 8px;--pill-hover-background: var(--ds-amber-100);--pill-hover-color: var(--ds-amber-900);--pill-cursor: inherit}.shimmer-header{--shimmer-height: 80px;--shimmer-border-radius: var(--radius-lg);margin-bottom:1rem}.shimmer-card{--shimmer-height: 120px;--shimmer-border-radius: var(--radius-lg)}.shimmer-bubble{--shimmer-height: 60px;--shimmer-border-radius: var(--radius-lg);margin-bottom:var(--space-3)}.shimmer-bubble-user{--shimmer-width: 60%;margin-left:auto}.shimmer-bubble-assistant{--shimmer-width: 75%}.shimmer-bubble-user-short{--shimmer-width: 50%;margin-left:auto}.shimmer-bubble-assistant-wide{--shimmer-width: 80%}.shimmer-bubble-assistant-short{--shimmer-width: 40%}@media(max-width:768px){.shimmer-card{--shimmer-height: 90px}.btn-xs{min-height:36px;padding:6px 12px}}.nav-right.svelte-12qhfyh{display:flex;align-items:center;gap:var(--space-2)}.btn-gear.svelte-12qhfyh{background:transparent;color:var(--text-muted);border:none;padding:0;height:36px;width:36px;border-radius:var(--radius-md);cursor:pointer;display:flex;align-items:center;justify-content:center}.btn-gear.svelte-12qhfyh:hover{background:var(--component-bg);color:var(--text-primary)}.btn-gear.svelte-12qhfyh:focus-visible{outline:2px solid var(--ds-green-700);outline-offset:2px}.btn-gear-active.svelte-12qhfyh{background:var(--component-bg);color:var(--text-primary)}.content-area.svelte-12qhfyh{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:env(safe-area-inset-bottom,0px)}.bottom-tabs.svelte-12qhfyh{height:64px;background:var(--background);border-top:1px solid var(--border);flex-shrink:0;z-index:100;padding-bottom:env(safe-area-inset-bottom,0)}.bottom-tabs-inner.svelte-12qhfyh{max-width:600px;margin:0 auto;padding:6px var(--space-4) 4px;display:flex;align-items:center;justify-content:space-around;height:100%;box-sizing:border-box}.tab-item.svelte-12qhfyh{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--text-muted);font-size:11px;font-weight:500;text-decoration:none;padding:6px 36px;border-radius:var(--radius-md);transition:color var(--transition-fast);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;min-height:48px}.tab-item.svelte-12qhfyh:hover{color:var(--text-secondary)}.tab-item.active.svelte-12qhfyh{color:var(--ds-green-700)}.tab-item.svelte-12qhfyh svg{width:26px;height:26px;flex-shrink:0}@media(max-width:480px){.btn-gear.svelte-12qhfyh{height:44px;width:44px}.bottom-tabs.svelte-12qhfyh{height:60px}.tab-item.svelte-12qhfyh{padding:6px 28px;font-size:10px;gap:3px;min-height:44px}.tab-item.svelte-12qhfyh svg{width:24px;height:24px}.status-badge{font-size:10px;padding:0 8px;height:22px}.page-header{flex-direction:column!important;gap:var(--space-3)!important}.page-header .btn-group{width:100%}.page-header .btn-group .btn{flex:1;justify-content:center}}
@@ -1 +1 @@
1
- @keyframes svelte-1qbe2oo-pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes svelte-1qbe2oo-activity-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.7}}.card.svelte-1qbe2oo{background:var(--component-bg, #1a1a1a);border:1px solid var(--border, #2e2e2e);border-left:4px solid var(--status-color, #6b7280);border-radius:var(--radius-lg, 8px);padding:var(--space-4, 16px);display:flex;flex-direction:column;gap:var(--space-3, 12px);cursor:pointer;transition:border-color var(--transition-fast, .15s ease),background var(--transition-fast, .15s ease);color:inherit;text-align:left;width:100%}.card.svelte-1qbe2oo:hover{background:var(--component-bg-hover, #1f1f1f);border-color:var(--border-hover, #454545);border-left-color:var(--status-color, #6b7280)}.card.svelte-1qbe2oo:focus-visible{outline:2px solid var(--ds-blue-700, #0070f3);outline-offset:2px}.card-header.svelte-1qbe2oo{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2, 8px);min-width:0}.project-name.svelte-1qbe2oo{font-size:var(--text-base, 14px);font-weight:600;color:var(--text-primary, #ededed);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.status-pill{--pill-font-size: var(--text-xs, 12px);--pill-font-weight: 500;--pill-padding: 3px 10px;--pill-border-radius: var(--radius-full, 9999px);--pill-cursor: default;flex-shrink:0}.status-pill--running-active{--pill-background: var(--ds-green-100);--pill-color: var(--ds-green-700);--pill-hover-background: var(--ds-green-100);--pill-hover-color: var(--ds-green-700);animation:svelte-1qbe2oo-pulse 2s ease-in-out infinite}.status-pill--running{--pill-background: var(--ds-blue-100);--pill-color: var(--ds-blue-700);--pill-hover-background: var(--ds-blue-100);--pill-hover-color: var(--ds-blue-700)}.status-pill--idle{--pill-background: var(--ds-amber-100);--pill-color: var(--ds-amber-700);--pill-hover-background: var(--ds-amber-100);--pill-hover-color: var(--ds-amber-700)}.status-pill--exited{--pill-background: var(--ds-gray-alpha-200);--pill-color: var(--ds-gray-600);--pill-hover-background: var(--ds-gray-alpha-200);--pill-hover-color: var(--ds-gray-600)}.status-pill--error{--pill-background: var(--ds-red-100);--pill-color: var(--ds-red-700);--pill-hover-background: var(--ds-red-100);--pill-hover-color: var(--ds-red-700)}.goal-text.svelte-1qbe2oo{font-size:var(--text-sm, 13px);color:var(--text-secondary, #a1a1a1);font-style:italic;margin:0;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:var(--leading-normal, 1.5)}.summary-row.svelte-1qbe2oo{min-height:18px}.summary-text.svelte-1qbe2oo{font-size:var(--text-sm, 13px);color:var(--text-primary, #ededed);line-height:var(--leading-normal, 1.5);display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.summarizing.svelte-1qbe2oo{font-size:var(--text-xs, 12px);color:var(--ds-amber-700);font-style:italic}.summary-fallback.svelte-1qbe2oo{font-size:var(--text-xs, 12px);color:var(--text-tertiary, #7d7d7d);font-style:italic}.stats-row.svelte-1qbe2oo{display:flex;align-items:center;gap:var(--space-3, 12px);flex-wrap:wrap;min-width:0}.stat.svelte-1qbe2oo{display:inline-flex;align-items:center;gap:var(--space-1, 4px);font-size:var(--text-xs, 12px);color:var(--text-tertiary, #7d7d7d);white-space:nowrap}.stat-error.svelte-1qbe2oo{color:var(--ds-red-700)}.stat-path.svelte-1qbe2oo{font-family:var(--font-mono, monospace);overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1;text-align:right}.status-dot-active.svelte-1qbe2oo{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--ds-green-700);animation:svelte-1qbe2oo-activity-pulse .6s ease-in-out infinite;flex-shrink:0}.status-dot-static.svelte-1qbe2oo{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--ds-gray-600, #878787);flex-shrink:0}@media(max-width:768px){.card.svelte-1qbe2oo{padding:10px 12px}.stats-row.svelte-1qbe2oo{flex-wrap:wrap;gap:4px}}@media(max-width:480px){.card.svelte-1qbe2oo{padding:8px 10px}.goal-text.svelte-1qbe2oo{-webkit-line-clamp:1;line-clamp:1}}.section.svelte-14sxgtb{display:flex;flex-direction:column;gap:var(--space-3, 12px);margin-bottom:var(--space-6, 24px)}.section-label.svelte-14sxgtb{font-size:var(--text-xs, 12px);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary, #a1a1a1);margin:0 0 var(--space-1, 4px) 0}.page-header.svelte-1uha8ag{margin-bottom:var(--space-6)}.page-header-content.svelte-1uha8ag{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-4)}.page-title.svelte-1uha8ag{font-size:var(--text-2xl);font-weight:600;letter-spacing:-.03em;color:var(--text-primary);margin-bottom:var(--space-1)}.page-description.svelte-1uha8ag{font-size:var(--text-sm);color:var(--text-secondary)}.page-actions.svelte-1uha8ag{display:flex;gap:var(--space-2);flex-shrink:0}.dashboard-section.svelte-1uha8ag{margin-bottom:var(--space-6)}.section-label.svelte-1uha8ag{font-size:var(--text-xs, 12px);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);margin-bottom:var(--space-3)}.projects-container.svelte-1uha8ag{display:flex;flex-direction:column;gap:var(--space-4);animation:fadeIn .2s ease}@media(max-width:768px){.page-header-content.svelte-1uha8ag{flex-direction:column;gap:var(--space-4)}}@media(max-width:480px){.page-actions.svelte-1uha8ag{width:100%}.page-actions.svelte-1uha8ag button{flex:1}}
1
+ @keyframes svelte-1qbe2oo-pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes svelte-1qbe2oo-activity-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.7}}.card.svelte-1qbe2oo{background:var(--component-bg, #1a1a1a);border:1px solid var(--border, #2e2e2e);border-left:4px solid var(--status-color, #6b7280);border-radius:var(--radius-lg, 8px);padding:var(--space-4, 16px);display:flex;flex-direction:column;gap:var(--space-3, 12px);cursor:pointer;transition:border-color var(--transition-fast, .15s ease),background var(--transition-fast, .15s ease);color:inherit;text-align:left;width:100%}.card.svelte-1qbe2oo:hover{background:var(--component-bg-hover, #1f1f1f);border-color:var(--border-hover, #454545);border-left-color:var(--status-color, #6b7280)}.card.svelte-1qbe2oo:focus-visible{outline:2px solid var(--ds-blue-700, #0070f3);outline-offset:2px}.card-header.svelte-1qbe2oo{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2, 8px);min-width:0}.project-name.svelte-1qbe2oo{font-size:var(--text-base, 14px);font-weight:600;color:var(--text-primary, #ededed);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.status-pill{--pill-font-size: var(--text-xs, 12px);--pill-font-weight: 500;--pill-padding: 3px 10px;--pill-border-radius: var(--radius-full, 9999px);--pill-cursor: default;flex-shrink:0}.status-pill--running-active{--pill-background: var(--ds-green-100);--pill-color: var(--ds-green-700);--pill-hover-background: var(--ds-green-100);--pill-hover-color: var(--ds-green-700);animation:svelte-1qbe2oo-pulse 2s ease-in-out infinite}.status-pill--running{--pill-background: var(--ds-blue-100);--pill-color: var(--ds-blue-700);--pill-hover-background: var(--ds-blue-100);--pill-hover-color: var(--ds-blue-700)}.status-pill--idle{--pill-background: var(--ds-amber-100);--pill-color: var(--ds-amber-700);--pill-hover-background: var(--ds-amber-100);--pill-hover-color: var(--ds-amber-700)}.status-pill--exited{--pill-background: var(--ds-gray-alpha-200);--pill-color: var(--ds-gray-600);--pill-hover-background: var(--ds-gray-alpha-200);--pill-hover-color: var(--ds-gray-600)}.status-pill--error{--pill-background: var(--ds-red-100);--pill-color: var(--ds-red-700);--pill-hover-background: var(--ds-red-100);--pill-hover-color: var(--ds-red-700)}.goal-text.svelte-1qbe2oo{font-size:var(--text-sm, 13px);color:var(--text-secondary, #a1a1a1);font-style:italic;margin:0;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:var(--leading-normal, 1.5)}.summary-row.svelte-1qbe2oo{min-height:18px}.summary-text.svelte-1qbe2oo{font-size:var(--text-sm, 13px);color:var(--text-primary, #ededed);line-height:var(--leading-normal, 1.5);display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.summarizing.svelte-1qbe2oo{font-size:var(--text-xs, 12px);color:var(--ds-amber-700);font-style:italic}.summary-fallback.svelte-1qbe2oo{font-size:var(--text-xs, 12px);color:var(--text-tertiary, #7d7d7d);font-style:italic}.stats-row.svelte-1qbe2oo{display:flex;align-items:center;gap:var(--space-3, 12px);flex-wrap:wrap;min-width:0}.stat.svelte-1qbe2oo{display:inline-flex;align-items:center;gap:var(--space-1, 4px);font-size:var(--text-xs, 12px);color:var(--text-tertiary, #7d7d7d);white-space:nowrap}.stat-error.svelte-1qbe2oo{color:var(--ds-red-700)}.stat-path.svelte-1qbe2oo{font-family:var(--font-mono, monospace);overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1;text-align:right}.status-dot-active.svelte-1qbe2oo{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--ds-green-700);animation:svelte-1qbe2oo-activity-pulse .6s ease-in-out infinite;flex-shrink:0}.status-dot-static.svelte-1qbe2oo{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--ds-gray-600, #878787);flex-shrink:0}@media(max-width:768px){.card.svelte-1qbe2oo{padding:10px 12px}.stats-row.svelte-1qbe2oo{flex-wrap:wrap;gap:4px}}@media(max-width:480px){.card.svelte-1qbe2oo{padding:8px 10px}.goal-text.svelte-1qbe2oo{-webkit-line-clamp:1;line-clamp:1}}.section.svelte-14sxgtb{display:flex;flex-direction:column;gap:var(--space-3, 12px);margin-bottom:var(--space-6, 24px)}.section-label.svelte-14sxgtb{font-size:var(--text-xs, 12px);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary, #a1a1a1);margin:0 0 var(--space-1, 4px) 0}.page-header.svelte-1uha8ag{margin-bottom:var(--space-6)}.page-header-content.svelte-1uha8ag{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-4)}.page-title.svelte-1uha8ag{font-size:var(--text-2xl);font-weight:700;letter-spacing:-.03em;color:var(--text-primary);margin-bottom:var(--space-1)}.page-description.svelte-1uha8ag{font-size:var(--text-sm);color:var(--text-secondary)}.page-actions.svelte-1uha8ag{display:flex;gap:var(--space-2);flex-shrink:0}.stats-bar.svelte-1uha8ag{display:flex;gap:10px;margin-top:var(--space-4)}.stat-chip.svelte-1uha8ag{display:flex;align-items:center;gap:6px;background:#ffffff0a;border:1px solid rgba(255,255,255,.06);border-radius:20px;padding:6px 14px}.stat-chip-active.svelte-1uha8ag{background:#22c55e1a;border-color:#22c55e40}.stat-value.svelte-1uha8ag{font-weight:700;font-size:.9rem;color:#f0f0f0}.stat-chip-active.svelte-1uha8ag .stat-value:where(.svelte-1uha8ag){color:#22c55e}.stat-label.svelte-1uha8ag{font-size:.78rem;color:#a3a3a3cc}.dashboard-section.svelte-1uha8ag{margin-bottom:var(--space-6)}.section-label.svelte-1uha8ag{font-size:var(--text-xs, 12px);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);margin-bottom:var(--space-3)}.projects-container.svelte-1uha8ag{display:flex;flex-direction:column;gap:var(--space-3);animation:fadeIn .2s ease}@media(max-width:768px){.page-header-content.svelte-1uha8ag{flex-direction:column;gap:var(--space-4)}.stats-bar.svelte-1uha8ag{flex-wrap:wrap}}@media(max-width:480px){.page-actions.svelte-1uha8ag{width:100%}.page-actions.svelte-1uha8ag button{flex:1}}
@@ -1 +1 @@
1
- import{s as e}from"./YKoRJzXZ.js";const r=()=>{const s=e;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},b={subscribe(s){return r().page.subscribe(s)}};export{b as p};
1
+ import{s as e}from"./DMGoTOyn.js";const r=()=>{const s=e;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},b={subscribe(s){return r().page.subscribe(s)}};export{b as p};
@@ -1 +1 @@
1
- import{s as r,p as e}from"./YKoRJzXZ.js";const a={get params(){return e.params},get url(){return e.url}};r.updated.check;const s=a;export{s as p};
1
+ import{s as r,p as e}from"./DMGoTOyn.js";const a={get params(){return e.params},get url(){return e.url}};r.updated.check;const s=a;export{s as p};
@@ -1,3 +1,3 @@
1
- import{bq as Te,X as Ve,s as j,g as P,b as x,aa as oe,br as vt}from"./CJFjKwJ7.js";class pe{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Ue{constructor(t,n){this.status=t,this.location=n}}class Le extends Error{constructor(t,n,r){super(r),this.status=t,this.text=n}}new URL("sveltekit-internal://");function bt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function kt(e){return e.split("%25").map(decodeURI).join("%25")}function Et(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function ye({href:e}){return e.split("#")[0]}function At(...e){let t=5381;for(const n of e)if(typeof n=="string"){let r=n.length;for(;r;)t=t*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)t=t*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;const St=new TextDecoder;function Rt(e){const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}const It=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||"GET")!=="GET"&&J.delete(je(e)),It(e,t));const J=new Map;function Tt(e,t){const n=je(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:a,...s}=JSON.parse(r.textContent);const o=r.getAttribute("data-ttl");return o&&J.set(n,{body:a,init:s,ttl:1e3*Number(o)}),r.getAttribute("data-b64")!==null&&(a=Rt(a)),Promise.resolve(new Response(a,s))}return window.fetch(e,t)}function Ut(e,t,n){if(J.size>0){const r=je(e,n),a=J.get(r);if(a){if(performance.now()<a.ttl&&["default","force-cache","only-if-cached",void 0].includes(n?.cache))return new Response(a.body,a.init);J.delete(r)}}return window.fetch(t,n)}function je(e,t){let r=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){const a=[];t.headers&&a.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&a.push(t.body),r+=`[data-hash="${At(...a)}"]`}return r}const Lt=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function jt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${xt(e).map(r=>{const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return t.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const s=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(s)return t.push({name:s[1],matcher:s[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const o=r.split(/\[(.+?)\](?!\])/);return"/"+o.map((i,l)=>{if(l%2){if(i.startsWith("x+"))return ve(String.fromCharCode(parseInt(i.slice(2),16)));if(i.startsWith("u+"))return ve(String.fromCharCode(...i.slice(2).split("-").map(h=>parseInt(h,16))));const f=Lt.exec(i),[,u,_,p,d]=f;return t.push({name:p,matcher:d,optional:!!u,rest:!!_,chained:_?l===1&&o[0]==="":!1}),_?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return ve(i)}).join("")}).join("")}/?$`),params:t}}function Pt(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function xt(e){return e.slice(1).split("/").filter(Pt)}function Ct(e,t,n){const r={},a=e.slice(1),s=a.filter(c=>c!==void 0);let o=0;for(let c=0;c<t.length;c+=1){const i=t[c];let l=a[c-o];if(i.chained&&i.rest&&o&&(l=a.slice(c-o,c+1).filter(f=>f).join("/"),o=0),l===void 0)if(i.rest)l="";else continue;if(!i.matcher||n[i.matcher](l)){r[i.name]=l;const f=t[c+1],u=a[c+1];f&&!f.rest&&f.optional&&u&&i.chained&&(o=0),!f&&!u&&Object.keys(r).length===s.length&&(o=0);continue}if(i.optional&&i.chained){o++;continue}return}if(!o)return r}function ve(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Ot({nodes:e,server_loads:t,dictionary:n,matchers:r}){const a=new Set(t);return Object.entries(n).map(([c,[i,l,f]])=>{const{pattern:u,params:_}=jt(c),p={id:c,exec:d=>{const h=u.exec(d);if(h)return Ct(h,_,r)},errors:[1,...f||[]].map(d=>e[d]),layouts:[0,...l||[]].map(o),leaf:s(i)};return p.errors.length=p.layouts.length=Math.max(p.errors.length,p.layouts.length),p});function s(c){const i=c<0;return i&&(c=~c),[i,e[c]]}function o(c){return c===void 0?c:[a.has(c),e[c]]}}function Ze(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function Me(e,t,n=JSON.stringify){const r=n(t);try{sessionStorage[e]=r}catch{}}const T=globalThis.__sveltekit_xrs63j?.base??"",Nt=globalThis.__sveltekit_xrs63j?.assets??T??"",$t="1776393329149",Qe="sveltekit:snapshot",et="sveltekit:scroll",tt="sveltekit:states",Dt="sveltekit:pageurl",q="sveltekit:history",Q="sveltekit:navigation",B={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},re=location.origin;function Pe(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function V(){return{x:pageXOffset,y:pageYOffset}}function M(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const qe={...B,"":B.hover};function nt(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function rt(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=nt(e)}}function Ee(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const c=location.hash.split("#")[1]||"/";r.hash=`#${c}${r.hash}`}}catch{}const a=e instanceof SVGAElement?e.target.baseVal:e.target,s=!r||!!a||_e(r,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),o=r?.origin===re&&e.hasAttribute("download");return{url:r,external:s,target:a,download:o}}function se(e){let t=null,n=null,r=null,a=null,s=null,o=null,c=e;for(;c&&c!==document.documentElement;)r===null&&(r=M(c,"preload-code")),a===null&&(a=M(c,"preload-data")),t===null&&(t=M(c,"keepfocus")),n===null&&(n=M(c,"noscroll")),s===null&&(s=M(c,"reload")),o===null&&(o=M(c,"replacestate")),c=nt(c);function i(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:qe[r??"off"],preload_data:qe[a??"off"],keepfocus:i(t),noscroll:i(n),reload:i(s),replace_state:i(o)}}function Ge(e){const t=Te(e);let n=!0;function r(){n=!0,t.update(o=>o)}function a(o){n=!1,t.set(o)}function s(o){let c;return t.subscribe(i=>{(c===void 0||n&&i!==c)&&o(c=i)})}return{notify:r,set:a,subscribe:s}}const at={v:()=>{}};function Bt(){const{set:e,subscribe:t}=Te(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${Nt}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const o=(await a.json()).version!==$t;return o&&(e(!0),at.v(),clearTimeout(n)),o}catch{return!1}}return{subscribe:t,check:r}}function _e(e,t,n){return e.origin!==re||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Sn(e){}function Ft(e){const t=Mt(e),n=new ArrayBuffer(t.length),r=new DataView(n);for(let a=0;a<n.byteLength;a++)r.setUint8(a,t.charCodeAt(a));return n}const Vt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Mt(e){e.length%4===0&&(e=e.replace(/==?$/,""));let t="",n=0,r=0;for(let a=0;a<e.length;a++)n<<=6,n|=Vt.indexOf(e[a]),r+=6,r===24&&(t+=String.fromCharCode((n&16711680)>>16),t+=String.fromCharCode((n&65280)>>8),t+=String.fromCharCode(n&255),n=r=0);return r===12?(n>>=4,t+=String.fromCharCode(n)):r===18&&(n>>=2,t+=String.fromCharCode((n&65280)>>8),t+=String.fromCharCode(n&255)),t}const qt=-1,Gt=-2,Kt=-3,Yt=-4,Wt=-5,Ht=-6,zt=-7;function Jt(e,t){if(typeof e=="number")return s(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const n=e,r=Array(n.length);let a=null;function s(o,c=!1){if(o===qt)return;if(o===Kt)return NaN;if(o===Yt)return 1/0;if(o===Wt)return-1/0;if(o===Ht)return-0;if(c||typeof o!="number")throw new Error("Invalid input");if(o in r)return r[o];const i=n[o];if(!i||typeof i!="object")r[o]=i;else if(Array.isArray(i))if(typeof i[0]=="string"){const l=i[0],f=t&&Object.hasOwn(t,l)?t[l]:void 0;if(f){let u=i[1];if(typeof u!="number"&&(u=n.push(i[1])-1),a??=new Set,a.has(u))throw new Error("Invalid circular reference");return a.add(u),r[o]=f(s(u)),a.delete(u),r[o]}switch(l){case"Date":r[o]=new Date(i[1]);break;case"Set":const u=new Set;r[o]=u;for(let h=1;h<i.length;h+=1)u.add(s(i[h]));break;case"Map":const _=new Map;r[o]=_;for(let h=1;h<i.length;h+=2)_.set(s(i[h]),s(i[h+1]));break;case"RegExp":r[o]=new RegExp(i[1],i[2]);break;case"Object":const p=Object(i[1]);if(Object.hasOwn(p,"__proto__"))throw new Error("Cannot parse an object with a `__proto__` property");r[o]=p;break;case"BigInt":r[o]=BigInt(i[1]);break;case"null":const d=Object.create(null);r[o]=d;for(let h=1;h<i.length;h+=2){if(i[h]==="__proto__")throw new Error("Cannot parse an object with a `__proto__` property");d[i[h]]=s(i[h+1])}break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":{if(n[i[1]][0]!=="ArrayBuffer")throw new Error("Invalid data");const h=globalThis[l],w=s(i[1]),g=new h(w);r[o]=i[2]!==void 0?g.subarray(i[2],i[3]):g;break}case"ArrayBuffer":{const h=i[1];if(typeof h!="string")throw new Error("Invalid ArrayBuffer encoding");const w=Ft(h);r[o]=w;break}case"Temporal.Duration":case"Temporal.Instant":case"Temporal.PlainDate":case"Temporal.PlainTime":case"Temporal.PlainDateTime":case"Temporal.PlainMonthDay":case"Temporal.PlainYearMonth":case"Temporal.ZonedDateTime":{const h=l.slice(9);r[o]=Temporal[h].from(i[1]);break}case"URL":{const h=new URL(i[1]);r[o]=h;break}case"URLSearchParams":{const h=new URLSearchParams(i[1]);r[o]=h;break}default:throw new Error(`Unknown type ${l}`)}}else if(i[0]===zt){const l=i[1];if(!Number.isInteger(l)||l<0)throw new Error("Invalid input");const f=new Array(l);r[o]=f;for(let u=2;u<i.length;u+=2){const _=i[u];if(!Number.isInteger(_)||_<0||_>=l)throw new Error("Invalid input");f[_]=s(i[u+1])}}else{const l=new Array(i.length);r[o]=l;for(let f=0;f<i.length;f+=1){const u=i[f];u!==Gt&&(l[f]=s(u))}}else{const l={};r[o]=l;for(const f of Object.keys(i)){if(f==="__proto__")throw new Error("Cannot parse an object with a `__proto__` property");const u=i[f];l[f]=s(u)}}return r[o]}return s(0)}const ot=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...ot];const Xt=new Set([...ot]);[...Xt];function Zt(e){return e.filter(t=>t!=null)}const Qt="x-sveltekit-invalidated",en="x-sveltekit-trailing-slash";function ie(e){return e instanceof pe||e instanceof Le?e.status:500}function tn(e){return e instanceof Le?e.text:"Internal Error"}let R,ee,be;const nn=Ve.toString().includes("$$")||/function \w+\(\) \{\}/.test(Ve.toString()),Ke="a:";nn?(R={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Ke)},ee={current:null},be={current:!1}):(R=new class{#e=j({});get data(){return P(this.#e)}set data(t){x(this.#e,t)}#t=j(null);get form(){return P(this.#t)}set form(t){x(this.#t,t)}#n=j(null);get error(){return P(this.#n)}set error(t){x(this.#n,t)}#r=j({});get params(){return P(this.#r)}set params(t){x(this.#r,t)}#a=j({id:null});get route(){return P(this.#a)}set route(t){x(this.#a,t)}#o=j({});get state(){return P(this.#o)}set state(t){x(this.#o,t)}#s=j(-1);get status(){return P(this.#s)}set status(t){x(this.#s,t)}#i=j(new URL(Ke));get url(){return P(this.#i)}set url(t){x(this.#i,t)}},ee=new class{#e=j(null);get current(){return P(this.#e)}set current(t){x(this.#e,t)}},be=new class{#e=j(!1);get current(){return P(this.#e)}set current(t){x(this.#e,t)}},at.v=()=>be.current=!0);function rn(e){Object.assign(R,e)}const an="/__data.json",on=".html__data.json";function sn(e){return e.endsWith(".html")?e.replace(/\.html$/,on):e.replace(/\/$/,"")+an}const cn=new Set(["icon","shortcut icon","apple-touch-icon"]);let H=null;const $=Ze(et)??{},te=Ze(Qe)??{},N={url:Ge({}),page:Ge({}),navigating:Te(null),updated:Bt()};function xe(e){$[e]=V()}function ln(e,t){let n=e+1;for(;$[n];)delete $[n],n+=1;for(n=t+1;te[n];)delete te[n],n+=1}function Y(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(()=>{})}async function st(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(T||"/");e&&await e.update()}}function Ye(){}let Ce,Ae,ce,O,Se,k;const le=[],fe=[];let L=null;function Re(){L?.fork?.then(e=>e?.discard()),L=null}const ae=new Map,it=new Set,fn=new Set,X=new Set;let y={branch:[],error:null,url:null},Oe=!1,ue=!1,We=!0,ne=!1,z=!1,ct=!1,Ne=!1,lt,S,I,F;const Z=new Set,He=new Map;async function Un(e,t,n){globalThis.__sveltekit_xrs63j?.data&&globalThis.__sveltekit_xrs63j.data,document.URL!==location.href&&(location.href=location.href),k=e,await e.hooks.init?.(),Ce=Ot(e),O=document.documentElement,Se=t,Ae=e.nodes[0],ce=e.nodes[1],Ae(),ce(),S=history.state?.[q],I=history.state?.[Q],S||(S=I=Date.now(),history.replaceState({...history.state,[q]:S,[Q]:I},""));const r=$[S];function a(){r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y))}n?(a(),await bn(Se,n)):(await G({type:"enter",url:Pe(k.hash?En(new URL(location.href)):location.href),replace_state:!0}),a()),vn()}function un(){le.length=0,Ne=!1}function ft(e){fe.some(t=>t?.snapshot)&&(te[e]=fe.map(t=>t?.snapshot?.capture()))}function ut(e){te[e]?.forEach((t,n)=>{fe[n]?.snapshot?.restore(t)})}function ze(){xe(S),Me(et,$),ft(I),Me(Qe,te)}async function dt(e,t,n,r){let a;t.invalidateAll&&Re(),await G({type:"goto",url:Pe(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{t.invalidateAll&&(Ne=!0,a=[...He.keys()]),t.invalidate&&t.invalidate.forEach(yn)}}),t.invalidateAll&&oe().then(oe).then(()=>{He.forEach(({resource:s},o)=>{a?.includes(o)&&s.refresh?.()})})}async function dn(e){if(e.id!==L?.id){Re();const t={};Z.add(t),L={id:e.id,token:t,promise:pt({...e,preload:t}).then(n=>(Z.delete(t),n.type==="loaded"&&n.state.error&&Re(),n)),fork:null}}return L.promise}async function ke(e){const t=(await me(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(n=>n[1]()))}async function ht(e,t,n){const r={params:y.params,route:{id:y.route?.id??null},url:new URL(location.href)};y={...e.state,nav:r};const a=document.querySelector("style[data-sveltekit]");if(a&&a.remove(),Object.assign(R,e.props.page),lt=new k.root({target:t,props:{...e.props,stores:N,components:fe},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),ut(I),n){const s={from:null,to:{...r,scroll:$[S]??V()},willUnload:!1,type:"enter",complete:Promise.resolve()};X.forEach(o=>o(s))}ue=!0}async function de({url:e,params:t,branch:n,errors:r,status:a,error:s,route:o,form:c}){let i="never";if(T&&(e.pathname===T||e.pathname===T+"/"))i="always";else for(const d of n)d?.slash!==void 0&&(i=d.slash);e.pathname=bt(e.pathname,i),e.search=e.search;const l={type:"loaded",state:{url:e,params:t,branch:n,error:s,route:o},props:{constructors:Zt(n).map(d=>d.node.component),page:Fe(R)}};c!==void 0&&(l.props.form=c);let f={},u=!R,_=0;for(let d=0;d<Math.max(n.length,y.branch.length);d+=1){const h=n[d],w=y.branch[d];h?.data!==w?.data&&(u=!0),h&&(f={...f,...h.data},u&&(l.props[`data_${_}`]=f),_+=1)}return(!y.url||e.href!==y.url.href||y.error!==s||c!==void 0&&c!==R.form||u)&&(l.props.page={error:s,params:t,route:{id:o?.id??null},state:{},status:a,url:new URL(e),form:c??null,data:u?f:R.data}),l}async function $e({loader:e,parent:t,url:n,params:r,route:a,server_data_node:s}){let o=null;const c={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},i=await e();return{node:i,loader:e,server:s,universal:i.universal?.load?{type:"data",data:o,uses:c}:null,data:o??s?.data??null,slash:i.universal?.trailingSlash??s?.slash}}function hn(e,t,n){let r=e instanceof Request?e.url:e;const a=new URL(r,n);a.origin===n.origin&&(r=a.href.slice(n.origin.length));const s=ue?Ut(r,a.href,t):Tt(r,t);return{resolved:a,promise:s}}function Je(e,t,n,r,a,s){if(Ne)return!0;if(!a)return!1;if(a.parent&&e||a.route&&t||a.url&&n)return!0;for(const o of a.search_params)if(r.has(o))return!0;for(const o of a.params)if(s[o]!==y.params[o])return!0;for(const o of a.dependencies)if(le.some(c=>c(new URL(o))))return!0;return!1}function De(e,t){return e?.type==="data"?e:e?.type==="skip"?t??null:null}function pn(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const r of n){const a=e.searchParams.getAll(r),s=t.searchParams.getAll(r);a.every(o=>s.includes(o))&&s.every(o=>a.includes(o))&&n.delete(r)}return n}function Xe({error:e,url:t,route:n,params:r}){return{type:"loaded",state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Fe(R),constructors:[]}}}async function pt({id:e,invalidating:t,url:n,params:r,route:a,preload:s}){if(L?.id===e)return Z.delete(L.token),L.promise;const{errors:o,layouts:c,leaf:i}=a,l=[...c,i];o.forEach(m=>m?.().catch(()=>{})),l.forEach(m=>m?.[1]().catch(()=>{}));let f=null;const u=y.url?e!==he(y.url):!1,_=y.route?a.id!==y.route.id:!1,p=pn(y.url,n);let d=!1;{const m=l.map((v,E)=>{const A=y.branch[E],b=!!v?.[0]&&(A?.loader!==v[1]||Je(d,_,u,p,A.server?.uses,r));return b&&(d=!0),b});if(m.some(Boolean)){try{f=await mt(n,m)}catch(v){const E=await K(v,{url:n,params:r,route:{id:e}});return Z.has(s)?Xe({error:E,url:n,params:r,route:a}):ge({status:ie(v),error:E,url:n,route:a})}if(f.type==="redirect")return f}}const h=f?.nodes;let w=!1;const g=l.map(async(m,v)=>{if(!m)return;const E=y.branch[v],A=h?.[v];if((!A||A.type==="skip")&&m[1]===E?.loader&&!Je(w,_,u,p,E.universal?.uses,r))return E;if(w=!0,A?.type==="error")throw A;return $e({loader:m[1],url:n,params:r,route:a,parent:async()=>{const C={};for(let D=0;D<v;D+=1)Object.assign(C,(await g[D])?.data);return C},server_data_node:De(A===void 0&&m[0]?{type:"skip"}:A??null,m[0]?E?.server:void 0)})});for(const m of g)m.catch(()=>{});const U=[];for(let m=0;m<l.length;m+=1)if(l[m])try{U.push(await g[m])}catch(v){if(v instanceof Ue)return{type:"redirect",location:v.location};if(Z.has(s))return Xe({error:await K(v,{params:r,url:n,route:{id:a.id}}),url:n,params:r,route:a});let E=ie(v),A;if(h?.includes(v))E=v.status??E,A=v.error;else if(v instanceof pe)A=v.body;else{if(await N.updated.check())return await st(),await Y(n);A=await K(v,{params:r,url:n,route:{id:a.id}})}const b=await _n(m,U,o);return b?de({url:n,params:r,branch:U.slice(0,b.idx).concat(b.node),errors:o,status:E,error:A,route:a}):await gt(n,{id:a.id},A,E)}else U.push(void 0);return de({url:n,params:r,branch:U,errors:o,status:200,error:null,route:a,form:t?void 0:null})}async function _n(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)r-=1;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function ge({status:e,error:t,url:n,route:r}){const a={};let s=null;if(k.server_loads[0]===0)try{const c=await mt(n,[!0]);if(c.type!=="data"||c.nodes[0]&&c.nodes[0].type!=="data")throw 0;s=c.nodes[0]??null}catch{(n.origin!==re||n.pathname!==location.pathname||Oe)&&await Y(n)}try{const o=await $e({loader:Ae,url:n,params:a,route:r,parent:()=>Promise.resolve({}),server_data_node:De(s)}),c={node:await ce(),loader:ce,universal:null,server:null,data:null};return de({url:n,params:a,branch:[o,c],status:e,error:t,errors:[],route:null})}catch(o){if(o instanceof Ue)return dt(new URL(o.location,location.href),{},0);throw o}}async function gn(e){const t=e.href;if(ae.has(t))return ae.get(t);let n;try{const r=(async()=>{let a=await k.hooks.reroute({url:new URL(e),fetch:async(s,o)=>hn(s,o,e).promise})??e;if(typeof a=="string"){const s=new URL(e);k.hash?s.hash=a:s.pathname=a,a=s}return a})();ae.set(t,r),n=await r}catch{ae.delete(t);return}return n}async function me(e,t){if(e&&!_e(e,T,k.hash)){const n=await gn(e);if(!n)return;const r=mn(n);for(const a of Ce){const s=a.exec(r);if(s)return{id:he(e),invalidating:t,route:a,params:Et(s),url:e}}}}function mn(e){return kt(k.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(T.length))||"/"}function he(e){return(k.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function _t({url:e,type:t,intent:n,delta:r,event:a,scroll:s}){let o=!1;const c=Be(y,n,e,t,s??null);r!==void 0&&(c.navigation.delta=r),a!==void 0&&(c.navigation.event=a);const i={...c.navigation,cancel:()=>{o=!0,c.reject(new Error("navigation cancelled"))}};return ne||it.forEach(l=>l(i)),o?null:c}async function G({type:e,url:t,popped:n,keepfocus:r,noscroll:a,replace_state:s,state:o={},redirect_count:c=0,nav_token:i={},accept:l=Ye,block:f=Ye,event:u}){const _=F;F=i;const p=await me(t,!1),d=e==="enter"?Be(y,p,t,e):_t({url:t,type:e,delta:n?.delta,intent:p,scroll:n?.scroll,event:u});if(!d){f(),F===i&&(F=_);return}const h=S,w=I;l(),ne=!0,ue&&d.navigation.type!=="enter"&&N.navigating.set(ee.current=d.navigation);let g=p&&await pt(p);if(!g){if(_e(t,T,k.hash))return await Y(t,s);g=await gt(t,{id:null},await K(new Le(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,s)}if(t=p?.url||t,F!==i)return d.reject(new Error("navigation aborted")),!1;if(g.type==="redirect"){if(c<20){await G({type:e,url:new URL(g.location,t),popped:n,keepfocus:r,noscroll:a,replace_state:s,state:o,redirect_count:c+1,nav_token:i}),d.fulfil(void 0);return}g=await ge({status:500,error:await K(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else g.props.page.status>=400&&await N.updated.check()&&(await st(),await Y(t,s));if(un(),xe(h),ft(w),g.props.page.url.pathname!==t.pathname&&(t.pathname=g.props.page.url.pathname),o=n?n.state:o,!n){const b=s?0:1,C={[q]:S+=b,[Q]:I+=b,[tt]:o};(s?history.replaceState:history.pushState).call(history,C,"",t),s||ln(S,I)}const U=p&&L?.id===p.id?L.fork:null;L=null,g.props.page.state=o;let m;if(ue){const b=(await Promise.all(Array.from(fn,W=>W(d.navigation)))).filter(W=>typeof W=="function");if(b.length>0){let W=function(){b.forEach(we=>{X.delete(we)})};b.push(W),b.forEach(we=>{X.add(we)})}const C=d.navigation.to;y={...g.state,nav:{params:C.params,route:C.route,url:C.url}},g.props.page&&(g.props.page.url=t);const D=U&&await U;D?m=D.commit():(H=null,lt.$set(g.props),H&&Object.assign(g.props.page,H),rn(g.props.page),m=vt?.()),ct=!0}else await ht(g,Se,!1);const{activeElement:v}=document;await m,await oe(),await oe();let E=null;if(We){const b=n?n.scroll:a?V():null;b?scrollTo(b.x,b.y):(E=t.hash&&document.getElementById(yt(t)))?E.scrollIntoView():scrollTo(0,0)}const A=document.activeElement!==v&&document.activeElement!==document.body;!r&&!A&&kn(t,!E),We=!0,g.props.page&&(H&&Object.assign(g.props.page,H),Object.assign(R,g.props.page)),ne=!1,e==="popstate"&&ut(I),d.fulfil(void 0),d.navigation.to&&(d.navigation.to.scroll=V()),X.forEach(b=>b(d.navigation)),N.navigating.set(ee.current=null)}async function gt(e,t,n,r,a){return e.origin===re&&e.pathname===location.pathname&&!Oe?await ge({status:r,error:n,url:e,route:t}):await Y(e,a)}function wn(){let e,t={element:void 0,href:void 0},n;O.addEventListener("mousemove",c=>{const i=c.target;clearTimeout(e),e=setTimeout(()=>{s(i,B.hover)},20)});function r(c){c.defaultPrevented||s(c.composedPath()[0],B.tap)}O.addEventListener("mousedown",r),O.addEventListener("touchstart",r,{passive:!0});const a=new IntersectionObserver(c=>{for(const i of c)i.isIntersecting&&(ke(new URL(i.target.href)),a.unobserve(i.target))},{threshold:0});async function s(c,i){const l=rt(c,O),f=l===t.element&&l?.href===t.href&&i>=n;if(!l||f)return;const{url:u,external:_,download:p}=Ee(l,T,k.hash);if(_||p)return;const d=se(l),h=u&&he(y.url)===he(u);if(!(d.reload||h))if(i<=d.preload_data){t={element:l,href:l.href},n=B.tap;const w=await me(u,!1);if(!w)return;dn(w)}else i<=d.preload_code&&(t={element:l,href:l.href},n=i,ke(u))}function o(){a.disconnect();for(const c of O.querySelectorAll("a")){const{url:i,external:l,download:f}=Ee(c,T,k.hash);if(l||f)continue;const u=se(c);u.reload||(u.preload_code===B.viewport&&a.observe(c),u.preload_code===B.eager&&ke(i))}}X.add(o),o()}function K(e,t){if(e instanceof pe)return e.body;const n=ie(e),r=tn(e);return k.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Ln(e,t={}){return e=new URL(Pe(e)),e.origin!==re?Promise.reject(new Error("goto: invalid URL")):dt(e,t,0)}function yn(e){if(typeof e=="function")le.push(e);else{const{href:t}=new URL(e,location.href);le.push(n=>n.href===t)}}function vn(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(ze(),!ne){const r=Be(y,void 0,null,"leave"),a={...r.navigation,cancel:()=>{n=!0,r.reject(new Error("navigation cancelled"))}};it.forEach(s=>s(a))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&ze()}),navigator.connection?.saveData||wn(),O.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=rt(t.composedPath()[0],O);if(!n)return;const{url:r,external:a,target:s,download:o}=Ee(n,T,k.hash);if(!r)return;if(s==="_parent"||s==="_top"){if(window.parent!==window)return}else if(s&&s!=="_self")return;const c=se(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||o)return;const[l,f]=(k.hash?r.hash.replace(/^#/,""):r.href).split("#"),u=l===ye(location);if(a||c.reload&&(!u||!f)){_t({url:r,type:"link",event:t})?ne=!0:t.preventDefault();return}if(f!==void 0&&u){const[,_]=y.url.href.split("#");if(_===f){if(t.preventDefault(),f===""||f==="top"&&n.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const p=n.ownerDocument.getElementById(decodeURIComponent(f));p&&(p.scrollIntoView(),p.focus())}return}if(z=!0,xe(S),e(r),!c.replace_state)return;z=!1}t.preventDefault(),await new Promise(_=>{requestAnimationFrame(()=>{setTimeout(_,0)}),setTimeout(_,100)}),await G({type:"link",url:r,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??r.href===location.href,event:t})}),O.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),r=t.submitter;if((r?.formTarget||n.target)==="_blank"||(r?.formMethod||n.method)!=="get")return;const o=new URL(r?.hasAttribute("formaction")&&r?.formAction||n.action);if(_e(o,T,!1))return;const c=t.target,i=se(c);if(i.reload)return;t.preventDefault(),t.stopPropagation();const l=new FormData(c,r);o.search=new URLSearchParams(l).toString(),G({type:"form",url:o,keepfocus:i.keepfocus,noscroll:i.noscroll,replace_state:i.replace_state??o.href===location.href,event:t})}),addEventListener("popstate",async t=>{if(!Ie){if(t.state?.[q]){const n=t.state[q];if(F={},n===S)return;const r=$[n],a=t.state[tt]??{},s=new URL(t.state[Dt]??location.href),o=t.state[Q],c=y.url?ye(location)===ye(y.url):!1;if(o===I&&(ct||c)){a!==R.state&&(R.state=a),e(s),$[S]=V(),r&&scrollTo(r.x,r.y),S=n;return}const l=n-S;await G({type:"popstate",url:s,popped:{state:a,scroll:r,delta:l},accept:()=>{S=n,I=o},block:()=>{history.go(-l)},nav_token:F,event:t})}else if(!z){const n=new URL(location.href);e(n),k.hash&&location.reload()}}}),addEventListener("hashchange",()=>{z&&(z=!1,history.replaceState({...history.state,[q]:++S,[Q]:I},"",location.href))});for(const t of document.querySelectorAll("link"))cn.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&N.navigating.set(ee.current=null)});function e(t){y.url=R.url=t,N.page.set(Fe(R)),N.page.notify()}}async function bn(e,{status:t=200,error:n,node_ids:r,params:a,route:s,server_route:o,data:c,form:i}){Oe=!0;const l=new URL(location.href);let f;({params:a={},route:s={id:null}}=await me(l,!1)||{}),f=Ce.find(({id:p})=>p===s.id);let u,_=!0;try{const p=r.map(async(h,w)=>{const g=c[w];return g?.uses&&(g.uses=wt(g.uses)),$e({loader:k.nodes[h],url:l,params:a,route:s,parent:async()=>{const U={};for(let m=0;m<w;m+=1)Object.assign(U,(await p[m]).data);return U},server_data_node:De(g)})}),d=await Promise.all(p);if(f){const h=f.layouts;for(let w=0;w<h.length;w++)h[w]||d.splice(w,0,void 0)}u=await de({url:l,params:a,branch:d,status:t,error:n,errors:f?.errors,form:i,route:f??null})}catch(p){if(p instanceof Ue){await Y(new URL(p.location,location.href));return}u=await ge({status:ie(p),error:await K(p,{url:l,params:a,route:s}),url:l,route:s}),e.textContent="",_=!1}u.props.page&&(u.props.page.state={}),await ht(u,e,_)}async function mt(e,t){const n=new URL(e);n.pathname=sn(e.pathname),e.pathname.endsWith("/")&&n.searchParams.append(en,"1"),n.searchParams.append(Qt,t.map(s=>s?"1":"0").join(""));const r=window.fetch,a=await r(n.href,{});if(!a.ok){let s;throw a.headers.get("content-type")?.includes("application/json")?s=await a.json():a.status===404?s="Not Found":a.status===500&&(s="Internal Error"),new pe(a.status,s)}return new Promise(async s=>{const o=new Map,c=a.body.getReader();function i(f){return Jt(f,{...k.decoders,Promise:u=>new Promise((_,p)=>{o.set(u,{fulfil:_,reject:p})})})}let l="";for(;;){const{done:f,value:u}=await c.read();if(f&&!l)break;for(l+=!u&&l?`
1
+ import{bq as Te,X as Fe,s as P,g as j,b as C,aa as oe,br as vt}from"./CJFjKwJ7.js";class pe{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Ue{constructor(t,n){this.status=t,this.location=n}}class Le extends Error{constructor(t,n,r){super(r),this.status=t,this.text=n}}new URL("sveltekit-internal://");function bt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function kt(e){return e.split("%25").map(decodeURI).join("%25")}function Et(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function ye({href:e}){return e.split("#")[0]}function At(...e){let t=5381;for(const n of e)if(typeof n=="string"){let r=n.length;for(;r;)t=t*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)t=t*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;const St=new TextDecoder;function Rt(e){const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}const It=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||"GET")!=="GET"&&J.delete(Pe(e)),It(e,t));const J=new Map;function Tt(e,t){const n=Pe(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:a,...s}=JSON.parse(r.textContent);const o=r.getAttribute("data-ttl");return o&&J.set(n,{body:a,init:s,ttl:1e3*Number(o)}),r.getAttribute("data-b64")!==null&&(a=Rt(a)),Promise.resolve(new Response(a,s))}return window.fetch(e,t)}function Ut(e,t,n){if(J.size>0){const r=Pe(e,n),a=J.get(r);if(a){if(performance.now()<a.ttl&&["default","force-cache","only-if-cached",void 0].includes(n?.cache))return new Response(a.body,a.init);J.delete(r)}}return window.fetch(t,n)}function Pe(e,t){let r=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){const a=[];t.headers&&a.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&a.push(t.body),r+=`[data-hash="${At(...a)}"]`}return r}const Lt=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function Pt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${Ct(e).map(r=>{const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return t.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const s=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(s)return t.push({name:s[1],matcher:s[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const o=r.split(/\[(.+?)\](?!\])/);return"/"+o.map((i,l)=>{if(l%2){if(i.startsWith("x+"))return ve(String.fromCharCode(parseInt(i.slice(2),16)));if(i.startsWith("u+"))return ve(String.fromCharCode(...i.slice(2).split("-").map(h=>parseInt(h,16))));const f=Lt.exec(i),[,u,_,p,d]=f;return t.push({name:p,matcher:d,optional:!!u,rest:!!_,chained:_?l===1&&o[0]==="":!1}),_?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return ve(i)}).join("")}).join("")}/?$`),params:t}}function jt(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Ct(e){return e.slice(1).split("/").filter(jt)}function Ot(e,t,n){const r={},a=e.slice(1),s=a.filter(c=>c!==void 0);let o=0;for(let c=0;c<t.length;c+=1){const i=t[c];let l=a[c-o];if(i.chained&&i.rest&&o&&(l=a.slice(c-o,c+1).filter(f=>f).join("/"),o=0),l===void 0)if(i.rest)l="";else continue;if(!i.matcher||n[i.matcher](l)){r[i.name]=l;const f=t[c+1],u=a[c+1];f&&!f.rest&&f.optional&&u&&i.chained&&(o=0),!f&&!u&&Object.keys(r).length===s.length&&(o=0);continue}if(i.optional&&i.chained){o++;continue}return}if(!o)return r}function ve(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Nt({nodes:e,server_loads:t,dictionary:n,matchers:r}){const a=new Set(t);return Object.entries(n).map(([c,[i,l,f]])=>{const{pattern:u,params:_}=Pt(c),p={id:c,exec:d=>{const h=u.exec(d);if(h)return Ot(h,_,r)},errors:[1,...f||[]].map(d=>e[d]),layouts:[0,...l||[]].map(o),leaf:s(i)};return p.errors.length=p.layouts.length=Math.max(p.errors.length,p.layouts.length),p});function s(c){const i=c<0;return i&&(c=~c),[i,e[c]]}function o(c){return c===void 0?c:[a.has(c),e[c]]}}function Ze(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function Ve(e,t,n=JSON.stringify){const r=n(t);try{sessionStorage[e]=r}catch{}}const T=globalThis.__sveltekit_vwctq3?.base??"",xt=globalThis.__sveltekit_vwctq3?.assets??T??"",$t="1776405040729",Qe="sveltekit:snapshot",et="sveltekit:scroll",tt="sveltekit:states",Dt="sveltekit:pageurl",M="sveltekit:history",Q="sveltekit:navigation",B={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},re=location.origin;function je(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function F(){return{x:pageXOffset,y:pageYOffset}}function V(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const Me={...B,"":B.hover};function nt(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function rt(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=nt(e)}}function Ee(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const c=location.hash.split("#")[1]||"/";r.hash=`#${c}${r.hash}`}}catch{}const a=e instanceof SVGAElement?e.target.baseVal:e.target,s=!r||!!a||_e(r,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),o=r?.origin===re&&e.hasAttribute("download");return{url:r,external:s,target:a,download:o}}function se(e){let t=null,n=null,r=null,a=null,s=null,o=null,c=e;for(;c&&c!==document.documentElement;)r===null&&(r=V(c,"preload-code")),a===null&&(a=V(c,"preload-data")),t===null&&(t=V(c,"keepfocus")),n===null&&(n=V(c,"noscroll")),s===null&&(s=V(c,"reload")),o===null&&(o=V(c,"replacestate")),c=nt(c);function i(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Me[r??"off"],preload_data:Me[a??"off"],keepfocus:i(t),noscroll:i(n),reload:i(s),replace_state:i(o)}}function Ge(e){const t=Te(e);let n=!0;function r(){n=!0,t.update(o=>o)}function a(o){n=!1,t.set(o)}function s(o){let c;return t.subscribe(i=>{(c===void 0||n&&i!==c)&&o(c=i)})}return{notify:r,set:a,subscribe:s}}const at={v:()=>{}};function Bt(){const{set:e,subscribe:t}=Te(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${xt}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const o=(await a.json()).version!==$t;return o&&(e(!0),at.v(),clearTimeout(n)),o}catch{return!1}}return{subscribe:t,check:r}}function _e(e,t,n){return e.origin!==re||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Sn(e){}function qt(e){const t=Vt(e),n=new ArrayBuffer(t.length),r=new DataView(n);for(let a=0;a<n.byteLength;a++)r.setUint8(a,t.charCodeAt(a));return n}const Ft="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Vt(e){e.length%4===0&&(e=e.replace(/==?$/,""));let t="",n=0,r=0;for(let a=0;a<e.length;a++)n<<=6,n|=Ft.indexOf(e[a]),r+=6,r===24&&(t+=String.fromCharCode((n&16711680)>>16),t+=String.fromCharCode((n&65280)>>8),t+=String.fromCharCode(n&255),n=r=0);return r===12?(n>>=4,t+=String.fromCharCode(n)):r===18&&(n>>=2,t+=String.fromCharCode((n&65280)>>8),t+=String.fromCharCode(n&255)),t}const Mt=-1,Gt=-2,Kt=-3,Yt=-4,Wt=-5,Ht=-6,zt=-7;function Jt(e,t){if(typeof e=="number")return s(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const n=e,r=Array(n.length);let a=null;function s(o,c=!1){if(o===Mt)return;if(o===Kt)return NaN;if(o===Yt)return 1/0;if(o===Wt)return-1/0;if(o===Ht)return-0;if(c||typeof o!="number")throw new Error("Invalid input");if(o in r)return r[o];const i=n[o];if(!i||typeof i!="object")r[o]=i;else if(Array.isArray(i))if(typeof i[0]=="string"){const l=i[0],f=t&&Object.hasOwn(t,l)?t[l]:void 0;if(f){let u=i[1];if(typeof u!="number"&&(u=n.push(i[1])-1),a??=new Set,a.has(u))throw new Error("Invalid circular reference");return a.add(u),r[o]=f(s(u)),a.delete(u),r[o]}switch(l){case"Date":r[o]=new Date(i[1]);break;case"Set":const u=new Set;r[o]=u;for(let h=1;h<i.length;h+=1)u.add(s(i[h]));break;case"Map":const _=new Map;r[o]=_;for(let h=1;h<i.length;h+=2)_.set(s(i[h]),s(i[h+1]));break;case"RegExp":r[o]=new RegExp(i[1],i[2]);break;case"Object":const p=Object(i[1]);if(Object.hasOwn(p,"__proto__"))throw new Error("Cannot parse an object with a `__proto__` property");r[o]=p;break;case"BigInt":r[o]=BigInt(i[1]);break;case"null":const d=Object.create(null);r[o]=d;for(let h=1;h<i.length;h+=2){if(i[h]==="__proto__")throw new Error("Cannot parse an object with a `__proto__` property");d[i[h]]=s(i[h+1])}break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":{if(n[i[1]][0]!=="ArrayBuffer")throw new Error("Invalid data");const h=globalThis[l],w=s(i[1]),g=new h(w);r[o]=i[2]!==void 0?g.subarray(i[2],i[3]):g;break}case"ArrayBuffer":{const h=i[1];if(typeof h!="string")throw new Error("Invalid ArrayBuffer encoding");const w=qt(h);r[o]=w;break}case"Temporal.Duration":case"Temporal.Instant":case"Temporal.PlainDate":case"Temporal.PlainTime":case"Temporal.PlainDateTime":case"Temporal.PlainMonthDay":case"Temporal.PlainYearMonth":case"Temporal.ZonedDateTime":{const h=l.slice(9);r[o]=Temporal[h].from(i[1]);break}case"URL":{const h=new URL(i[1]);r[o]=h;break}case"URLSearchParams":{const h=new URLSearchParams(i[1]);r[o]=h;break}default:throw new Error(`Unknown type ${l}`)}}else if(i[0]===zt){const l=i[1];if(!Number.isInteger(l)||l<0)throw new Error("Invalid input");const f=new Array(l);r[o]=f;for(let u=2;u<i.length;u+=2){const _=i[u];if(!Number.isInteger(_)||_<0||_>=l)throw new Error("Invalid input");f[_]=s(i[u+1])}}else{const l=new Array(i.length);r[o]=l;for(let f=0;f<i.length;f+=1){const u=i[f];u!==Gt&&(l[f]=s(u))}}else{const l={};r[o]=l;for(const f of Object.keys(i)){if(f==="__proto__")throw new Error("Cannot parse an object with a `__proto__` property");const u=i[f];l[f]=s(u)}}return r[o]}return s(0)}const ot=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...ot];const Xt=new Set([...ot]);[...Xt];function Zt(e){return e.filter(t=>t!=null)}const Qt="x-sveltekit-invalidated",en="x-sveltekit-trailing-slash";function ie(e){return e instanceof pe||e instanceof Le?e.status:500}function tn(e){return e instanceof Le?e.text:"Internal Error"}let R,ee,be;const nn=Fe.toString().includes("$$")||/function \w+\(\) \{\}/.test(Fe.toString()),Ke="a:";nn?(R={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Ke)},ee={current:null},be={current:!1}):(R=new class{#e=P({});get data(){return j(this.#e)}set data(t){C(this.#e,t)}#t=P(null);get form(){return j(this.#t)}set form(t){C(this.#t,t)}#n=P(null);get error(){return j(this.#n)}set error(t){C(this.#n,t)}#r=P({});get params(){return j(this.#r)}set params(t){C(this.#r,t)}#a=P({id:null});get route(){return j(this.#a)}set route(t){C(this.#a,t)}#o=P({});get state(){return j(this.#o)}set state(t){C(this.#o,t)}#s=P(-1);get status(){return j(this.#s)}set status(t){C(this.#s,t)}#i=P(new URL(Ke));get url(){return j(this.#i)}set url(t){C(this.#i,t)}},ee=new class{#e=P(null);get current(){return j(this.#e)}set current(t){C(this.#e,t)}},be=new class{#e=P(!1);get current(){return j(this.#e)}set current(t){C(this.#e,t)}},at.v=()=>be.current=!0);function rn(e){Object.assign(R,e)}const an="/__data.json",on=".html__data.json";function sn(e){return e.endsWith(".html")?e.replace(/\.html$/,on):e.replace(/\/$/,"")+an}const cn=new Set(["icon","shortcut icon","apple-touch-icon"]);let H=null;const $=Ze(et)??{},te=Ze(Qe)??{},x={url:Ge({}),page:Ge({}),navigating:Te(null),updated:Bt()};function Ce(e){$[e]=F()}function ln(e,t){let n=e+1;for(;$[n];)delete $[n],n+=1;for(n=t+1;te[n];)delete te[n],n+=1}function Y(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(()=>{})}async function st(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(T||"/");e&&await e.update()}}function Ye(){}let Oe,Ae,ce,N,Se,k;const le=[],fe=[];let L=null;function Re(){L?.fork?.then(e=>e?.discard()),L=null}const ae=new Map,it=new Set,fn=new Set,X=new Set;let y={branch:[],error:null,url:null},Ne=!1,ue=!1,We=!0,ne=!1,z=!1,ct=!1,xe=!1,lt,S,I,q;const Z=new Set,He=new Map;async function Un(e,t,n){globalThis.__sveltekit_vwctq3?.data&&globalThis.__sveltekit_vwctq3.data,document.URL!==location.href&&(location.href=location.href),k=e,await e.hooks.init?.(),Oe=Nt(e),N=document.documentElement,Se=t,Ae=e.nodes[0],ce=e.nodes[1],Ae(),ce(),S=history.state?.[M],I=history.state?.[Q],S||(S=I=Date.now(),history.replaceState({...history.state,[M]:S,[Q]:I},""));const r=$[S];function a(){r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y))}n?(a(),await bn(Se,n)):(await G({type:"enter",url:je(k.hash?En(new URL(location.href)):location.href),replace_state:!0}),a()),vn()}function un(){le.length=0,xe=!1}function ft(e){fe.some(t=>t?.snapshot)&&(te[e]=fe.map(t=>t?.snapshot?.capture()))}function ut(e){te[e]?.forEach((t,n)=>{fe[n]?.snapshot?.restore(t)})}function ze(){Ce(S),Ve(et,$),ft(I),Ve(Qe,te)}async function dt(e,t,n,r){let a;t.invalidateAll&&Re(),await G({type:"goto",url:je(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{t.invalidateAll&&(xe=!0,a=[...He.keys()]),t.invalidate&&t.invalidate.forEach(yn)}}),t.invalidateAll&&oe().then(oe).then(()=>{He.forEach(({resource:s},o)=>{a?.includes(o)&&s.refresh?.()})})}async function dn(e){if(e.id!==L?.id){Re();const t={};Z.add(t),L={id:e.id,token:t,promise:pt({...e,preload:t}).then(n=>(Z.delete(t),n.type==="loaded"&&n.state.error&&Re(),n)),fork:null}}return L.promise}async function ke(e){const t=(await me(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(n=>n[1]()))}async function ht(e,t,n){const r={params:y.params,route:{id:y.route?.id??null},url:new URL(location.href)};y={...e.state,nav:r};const a=document.querySelector("style[data-sveltekit]");if(a&&a.remove(),Object.assign(R,e.props.page),lt=new k.root({target:t,props:{...e.props,stores:x,components:fe},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),ut(I),n){const s={from:null,to:{...r,scroll:$[S]??F()},willUnload:!1,type:"enter",complete:Promise.resolve()};X.forEach(o=>o(s))}ue=!0}async function de({url:e,params:t,branch:n,errors:r,status:a,error:s,route:o,form:c}){let i="never";if(T&&(e.pathname===T||e.pathname===T+"/"))i="always";else for(const d of n)d?.slash!==void 0&&(i=d.slash);e.pathname=bt(e.pathname,i),e.search=e.search;const l={type:"loaded",state:{url:e,params:t,branch:n,error:s,route:o},props:{constructors:Zt(n).map(d=>d.node.component),page:qe(R)}};c!==void 0&&(l.props.form=c);let f={},u=!R,_=0;for(let d=0;d<Math.max(n.length,y.branch.length);d+=1){const h=n[d],w=y.branch[d];h?.data!==w?.data&&(u=!0),h&&(f={...f,...h.data},u&&(l.props[`data_${_}`]=f),_+=1)}return(!y.url||e.href!==y.url.href||y.error!==s||c!==void 0&&c!==R.form||u)&&(l.props.page={error:s,params:t,route:{id:o?.id??null},state:{},status:a,url:new URL(e),form:c??null,data:u?f:R.data}),l}async function $e({loader:e,parent:t,url:n,params:r,route:a,server_data_node:s}){let o=null;const c={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},i=await e();return{node:i,loader:e,server:s,universal:i.universal?.load?{type:"data",data:o,uses:c}:null,data:o??s?.data??null,slash:i.universal?.trailingSlash??s?.slash}}function hn(e,t,n){let r=e instanceof Request?e.url:e;const a=new URL(r,n);a.origin===n.origin&&(r=a.href.slice(n.origin.length));const s=ue?Ut(r,a.href,t):Tt(r,t);return{resolved:a,promise:s}}function Je(e,t,n,r,a,s){if(xe)return!0;if(!a)return!1;if(a.parent&&e||a.route&&t||a.url&&n)return!0;for(const o of a.search_params)if(r.has(o))return!0;for(const o of a.params)if(s[o]!==y.params[o])return!0;for(const o of a.dependencies)if(le.some(c=>c(new URL(o))))return!0;return!1}function De(e,t){return e?.type==="data"?e:e?.type==="skip"?t??null:null}function pn(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const r of n){const a=e.searchParams.getAll(r),s=t.searchParams.getAll(r);a.every(o=>s.includes(o))&&s.every(o=>a.includes(o))&&n.delete(r)}return n}function Xe({error:e,url:t,route:n,params:r}){return{type:"loaded",state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:qe(R),constructors:[]}}}async function pt({id:e,invalidating:t,url:n,params:r,route:a,preload:s}){if(L?.id===e)return Z.delete(L.token),L.promise;const{errors:o,layouts:c,leaf:i}=a,l=[...c,i];o.forEach(m=>m?.().catch(()=>{})),l.forEach(m=>m?.[1]().catch(()=>{}));let f=null;const u=y.url?e!==he(y.url):!1,_=y.route?a.id!==y.route.id:!1,p=pn(y.url,n);let d=!1;{const m=l.map((v,E)=>{const A=y.branch[E],b=!!v?.[0]&&(A?.loader!==v[1]||Je(d,_,u,p,A.server?.uses,r));return b&&(d=!0),b});if(m.some(Boolean)){try{f=await mt(n,m)}catch(v){const E=await K(v,{url:n,params:r,route:{id:e}});return Z.has(s)?Xe({error:E,url:n,params:r,route:a}):ge({status:ie(v),error:E,url:n,route:a})}if(f.type==="redirect")return f}}const h=f?.nodes;let w=!1;const g=l.map(async(m,v)=>{if(!m)return;const E=y.branch[v],A=h?.[v];if((!A||A.type==="skip")&&m[1]===E?.loader&&!Je(w,_,u,p,E.universal?.uses,r))return E;if(w=!0,A?.type==="error")throw A;return $e({loader:m[1],url:n,params:r,route:a,parent:async()=>{const O={};for(let D=0;D<v;D+=1)Object.assign(O,(await g[D])?.data);return O},server_data_node:De(A===void 0&&m[0]?{type:"skip"}:A??null,m[0]?E?.server:void 0)})});for(const m of g)m.catch(()=>{});const U=[];for(let m=0;m<l.length;m+=1)if(l[m])try{U.push(await g[m])}catch(v){if(v instanceof Ue)return{type:"redirect",location:v.location};if(Z.has(s))return Xe({error:await K(v,{params:r,url:n,route:{id:a.id}}),url:n,params:r,route:a});let E=ie(v),A;if(h?.includes(v))E=v.status??E,A=v.error;else if(v instanceof pe)A=v.body;else{if(await x.updated.check())return await st(),await Y(n);A=await K(v,{params:r,url:n,route:{id:a.id}})}const b=await _n(m,U,o);return b?de({url:n,params:r,branch:U.slice(0,b.idx).concat(b.node),errors:o,status:E,error:A,route:a}):await gt(n,{id:a.id},A,E)}else U.push(void 0);return de({url:n,params:r,branch:U,errors:o,status:200,error:null,route:a,form:t?void 0:null})}async function _n(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)r-=1;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function ge({status:e,error:t,url:n,route:r}){const a={};let s=null;if(k.server_loads[0]===0)try{const c=await mt(n,[!0]);if(c.type!=="data"||c.nodes[0]&&c.nodes[0].type!=="data")throw 0;s=c.nodes[0]??null}catch{(n.origin!==re||n.pathname!==location.pathname||Ne)&&await Y(n)}try{const o=await $e({loader:Ae,url:n,params:a,route:r,parent:()=>Promise.resolve({}),server_data_node:De(s)}),c={node:await ce(),loader:ce,universal:null,server:null,data:null};return de({url:n,params:a,branch:[o,c],status:e,error:t,errors:[],route:null})}catch(o){if(o instanceof Ue)return dt(new URL(o.location,location.href),{},0);throw o}}async function gn(e){const t=e.href;if(ae.has(t))return ae.get(t);let n;try{const r=(async()=>{let a=await k.hooks.reroute({url:new URL(e),fetch:async(s,o)=>hn(s,o,e).promise})??e;if(typeof a=="string"){const s=new URL(e);k.hash?s.hash=a:s.pathname=a,a=s}return a})();ae.set(t,r),n=await r}catch{ae.delete(t);return}return n}async function me(e,t){if(e&&!_e(e,T,k.hash)){const n=await gn(e);if(!n)return;const r=mn(n);for(const a of Oe){const s=a.exec(r);if(s)return{id:he(e),invalidating:t,route:a,params:Et(s),url:e}}}}function mn(e){return kt(k.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(T.length))||"/"}function he(e){return(k.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function _t({url:e,type:t,intent:n,delta:r,event:a,scroll:s}){let o=!1;const c=Be(y,n,e,t,s??null);r!==void 0&&(c.navigation.delta=r),a!==void 0&&(c.navigation.event=a);const i={...c.navigation,cancel:()=>{o=!0,c.reject(new Error("navigation cancelled"))}};return ne||it.forEach(l=>l(i)),o?null:c}async function G({type:e,url:t,popped:n,keepfocus:r,noscroll:a,replace_state:s,state:o={},redirect_count:c=0,nav_token:i={},accept:l=Ye,block:f=Ye,event:u}){const _=q;q=i;const p=await me(t,!1),d=e==="enter"?Be(y,p,t,e):_t({url:t,type:e,delta:n?.delta,intent:p,scroll:n?.scroll,event:u});if(!d){f(),q===i&&(q=_);return}const h=S,w=I;l(),ne=!0,ue&&d.navigation.type!=="enter"&&x.navigating.set(ee.current=d.navigation);let g=p&&await pt(p);if(!g){if(_e(t,T,k.hash))return await Y(t,s);g=await gt(t,{id:null},await K(new Le(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,s)}if(t=p?.url||t,q!==i)return d.reject(new Error("navigation aborted")),!1;if(g.type==="redirect"){if(c<20){await G({type:e,url:new URL(g.location,t),popped:n,keepfocus:r,noscroll:a,replace_state:s,state:o,redirect_count:c+1,nav_token:i}),d.fulfil(void 0);return}g=await ge({status:500,error:await K(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else g.props.page.status>=400&&await x.updated.check()&&(await st(),await Y(t,s));if(un(),Ce(h),ft(w),g.props.page.url.pathname!==t.pathname&&(t.pathname=g.props.page.url.pathname),o=n?n.state:o,!n){const b=s?0:1,O={[M]:S+=b,[Q]:I+=b,[tt]:o};(s?history.replaceState:history.pushState).call(history,O,"",t),s||ln(S,I)}const U=p&&L?.id===p.id?L.fork:null;L=null,g.props.page.state=o;let m;if(ue){const b=(await Promise.all(Array.from(fn,W=>W(d.navigation)))).filter(W=>typeof W=="function");if(b.length>0){let W=function(){b.forEach(we=>{X.delete(we)})};b.push(W),b.forEach(we=>{X.add(we)})}const O=d.navigation.to;y={...g.state,nav:{params:O.params,route:O.route,url:O.url}},g.props.page&&(g.props.page.url=t);const D=U&&await U;D?m=D.commit():(H=null,lt.$set(g.props),H&&Object.assign(g.props.page,H),rn(g.props.page),m=vt?.()),ct=!0}else await ht(g,Se,!1);const{activeElement:v}=document;await m,await oe(),await oe();let E=null;if(We){const b=n?n.scroll:a?F():null;b?scrollTo(b.x,b.y):(E=t.hash&&document.getElementById(yt(t)))?E.scrollIntoView():scrollTo(0,0)}const A=document.activeElement!==v&&document.activeElement!==document.body;!r&&!A&&kn(t,!E),We=!0,g.props.page&&(H&&Object.assign(g.props.page,H),Object.assign(R,g.props.page)),ne=!1,e==="popstate"&&ut(I),d.fulfil(void 0),d.navigation.to&&(d.navigation.to.scroll=F()),X.forEach(b=>b(d.navigation)),x.navigating.set(ee.current=null)}async function gt(e,t,n,r,a){return e.origin===re&&e.pathname===location.pathname&&!Ne?await ge({status:r,error:n,url:e,route:t}):await Y(e,a)}function wn(){let e,t={element:void 0,href:void 0},n;N.addEventListener("mousemove",c=>{const i=c.target;clearTimeout(e),e=setTimeout(()=>{s(i,B.hover)},20)});function r(c){c.defaultPrevented||s(c.composedPath()[0],B.tap)}N.addEventListener("mousedown",r),N.addEventListener("touchstart",r,{passive:!0});const a=new IntersectionObserver(c=>{for(const i of c)i.isIntersecting&&(ke(new URL(i.target.href)),a.unobserve(i.target))},{threshold:0});async function s(c,i){const l=rt(c,N),f=l===t.element&&l?.href===t.href&&i>=n;if(!l||f)return;const{url:u,external:_,download:p}=Ee(l,T,k.hash);if(_||p)return;const d=se(l),h=u&&he(y.url)===he(u);if(!(d.reload||h))if(i<=d.preload_data){t={element:l,href:l.href},n=B.tap;const w=await me(u,!1);if(!w)return;dn(w)}else i<=d.preload_code&&(t={element:l,href:l.href},n=i,ke(u))}function o(){a.disconnect();for(const c of N.querySelectorAll("a")){const{url:i,external:l,download:f}=Ee(c,T,k.hash);if(l||f)continue;const u=se(c);u.reload||(u.preload_code===B.viewport&&a.observe(c),u.preload_code===B.eager&&ke(i))}}X.add(o),o()}function K(e,t){if(e instanceof pe)return e.body;const n=ie(e),r=tn(e);return k.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Ln(e,t={}){return e=new URL(je(e)),e.origin!==re?Promise.reject(new Error("goto: invalid URL")):dt(e,t,0)}function yn(e){if(typeof e=="function")le.push(e);else{const{href:t}=new URL(e,location.href);le.push(n=>n.href===t)}}function vn(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(ze(),!ne){const r=Be(y,void 0,null,"leave"),a={...r.navigation,cancel:()=>{n=!0,r.reject(new Error("navigation cancelled"))}};it.forEach(s=>s(a))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&ze()}),navigator.connection?.saveData||wn(),N.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=rt(t.composedPath()[0],N);if(!n)return;const{url:r,external:a,target:s,download:o}=Ee(n,T,k.hash);if(!r)return;if(s==="_parent"||s==="_top"){if(window.parent!==window)return}else if(s&&s!=="_self")return;const c=se(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||o)return;const[l,f]=(k.hash?r.hash.replace(/^#/,""):r.href).split("#"),u=l===ye(location);if(a||c.reload&&(!u||!f)){_t({url:r,type:"link",event:t})?ne=!0:t.preventDefault();return}if(f!==void 0&&u){const[,_]=y.url.href.split("#");if(_===f){if(t.preventDefault(),f===""||f==="top"&&n.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const p=n.ownerDocument.getElementById(decodeURIComponent(f));p&&(p.scrollIntoView(),p.focus())}return}if(z=!0,Ce(S),e(r),!c.replace_state)return;z=!1}t.preventDefault(),await new Promise(_=>{requestAnimationFrame(()=>{setTimeout(_,0)}),setTimeout(_,100)}),await G({type:"link",url:r,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??r.href===location.href,event:t})}),N.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),r=t.submitter;if((r?.formTarget||n.target)==="_blank"||(r?.formMethod||n.method)!=="get")return;const o=new URL(r?.hasAttribute("formaction")&&r?.formAction||n.action);if(_e(o,T,!1))return;const c=t.target,i=se(c);if(i.reload)return;t.preventDefault(),t.stopPropagation();const l=new FormData(c,r);o.search=new URLSearchParams(l).toString(),G({type:"form",url:o,keepfocus:i.keepfocus,noscroll:i.noscroll,replace_state:i.replace_state??o.href===location.href,event:t})}),addEventListener("popstate",async t=>{if(!Ie){if(t.state?.[M]){const n=t.state[M];if(q={},n===S)return;const r=$[n],a=t.state[tt]??{},s=new URL(t.state[Dt]??location.href),o=t.state[Q],c=y.url?ye(location)===ye(y.url):!1;if(o===I&&(ct||c)){a!==R.state&&(R.state=a),e(s),$[S]=F(),r&&scrollTo(r.x,r.y),S=n;return}const l=n-S;await G({type:"popstate",url:s,popped:{state:a,scroll:r,delta:l},accept:()=>{S=n,I=o},block:()=>{history.go(-l)},nav_token:q,event:t})}else if(!z){const n=new URL(location.href);e(n),k.hash&&location.reload()}}}),addEventListener("hashchange",()=>{z&&(z=!1,history.replaceState({...history.state,[M]:++S,[Q]:I},"",location.href))});for(const t of document.querySelectorAll("link"))cn.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&x.navigating.set(ee.current=null)});function e(t){y.url=R.url=t,x.page.set(qe(R)),x.page.notify()}}async function bn(e,{status:t=200,error:n,node_ids:r,params:a,route:s,server_route:o,data:c,form:i}){Ne=!0;const l=new URL(location.href);let f;({params:a={},route:s={id:null}}=await me(l,!1)||{}),f=Oe.find(({id:p})=>p===s.id);let u,_=!0;try{const p=r.map(async(h,w)=>{const g=c[w];return g?.uses&&(g.uses=wt(g.uses)),$e({loader:k.nodes[h],url:l,params:a,route:s,parent:async()=>{const U={};for(let m=0;m<w;m+=1)Object.assign(U,(await p[m]).data);return U},server_data_node:De(g)})}),d=await Promise.all(p);if(f){const h=f.layouts;for(let w=0;w<h.length;w++)h[w]||d.splice(w,0,void 0)}u=await de({url:l,params:a,branch:d,status:t,error:n,errors:f?.errors,form:i,route:f??null})}catch(p){if(p instanceof Ue){await Y(new URL(p.location,location.href));return}u=await ge({status:ie(p),error:await K(p,{url:l,params:a,route:s}),url:l,route:s}),e.textContent="",_=!1}u.props.page&&(u.props.page.state={}),await ht(u,e,_)}async function mt(e,t){const n=new URL(e);n.pathname=sn(e.pathname),e.pathname.endsWith("/")&&n.searchParams.append(en,"1"),n.searchParams.append(Qt,t.map(s=>s?"1":"0").join(""));const r=window.fetch,a=await r(n.href,{});if(!a.ok){let s;throw a.headers.get("content-type")?.includes("application/json")?s=await a.json():a.status===404?s="Not Found":a.status===500&&(s="Internal Error"),new pe(a.status,s)}return new Promise(async s=>{const o=new Map,c=a.body.getReader();function i(f){return Jt(f,{...k.decoders,Promise:u=>new Promise((_,p)=>{o.set(u,{fulfil:_,reject:p})})})}let l="";for(;;){const{done:f,value:u}=await c.read();if(f&&!l)break;for(l+=!u&&l?`
2
2
  `:St.decode(u,{stream:!0});;){const _=l.indexOf(`
3
- `);if(_===-1)break;const p=JSON.parse(l.slice(0,_));if(l=l.slice(_+1),p.type==="redirect")return s(p);if(p.type==="data")p.nodes?.forEach(d=>{d?.type==="data"&&(d.uses=wt(d.uses),d.data=i(d.data))}),s(p);else if(p.type==="chunk"){const{id:d,data:h,error:w}=p,g=o.get(d);o.delete(d),w?g.reject(i(w)):g.fulfil(i(h))}}}})}function wt(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}let Ie=!1;function kn(e,t=!0){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const r=yt(e);if(r&&document.getElementById(r)){const{x:s,y:o}=V();setTimeout(()=>{const c=history.state;Ie=!0,location.replace(new URL(`#${r}`,location.href)),history.replaceState(c,"",e),t&&scrollTo(s,o),Ie=!1})}else{const s=document.body,o=s.getAttribute("tabindex");s.tabIndex=-1,s.focus({preventScroll:!0,focusVisible:!1}),o!==null?s.setAttribute("tabindex",o):s.removeAttribute("tabindex")}const a=getSelection();if(a&&a.type!=="None"){const s=[];for(let o=0;o<a.rangeCount;o+=1)s.push(a.getRangeAt(o));setTimeout(()=>{if(a.rangeCount===s.length){for(let o=0;o<a.rangeCount;o+=1){const c=s[o],i=a.getRangeAt(o);if(c.commonAncestorContainer!==i.commonAncestorContainer||c.startContainer!==i.startContainer||c.endContainer!==i.endContainer||c.startOffset!==i.startOffset||c.endOffset!==i.endOffset)return}a.removeAllRanges()}})}}}function Be(e,t,n,r,a=null){let s,o;const c=new Promise((l,f)=>{s=l,o=f});return c.catch(()=>{}),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:V()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:a},willUnload:!t,type:r,complete:c},fulfil:s,reject:o}}function Fe(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function En(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function yt(e){let t;if(k.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Un as a,Ln as g,Sn as l,R as p,N as s};
3
+ `);if(_===-1)break;const p=JSON.parse(l.slice(0,_));if(l=l.slice(_+1),p.type==="redirect")return s(p);if(p.type==="data")p.nodes?.forEach(d=>{d?.type==="data"&&(d.uses=wt(d.uses),d.data=i(d.data))}),s(p);else if(p.type==="chunk"){const{id:d,data:h,error:w}=p,g=o.get(d);o.delete(d),w?g.reject(i(w)):g.fulfil(i(h))}}}})}function wt(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}let Ie=!1;function kn(e,t=!0){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const r=yt(e);if(r&&document.getElementById(r)){const{x:s,y:o}=F();setTimeout(()=>{const c=history.state;Ie=!0,location.replace(new URL(`#${r}`,location.href)),history.replaceState(c,"",e),t&&scrollTo(s,o),Ie=!1})}else{const s=document.body,o=s.getAttribute("tabindex");s.tabIndex=-1,s.focus({preventScroll:!0,focusVisible:!1}),o!==null?s.setAttribute("tabindex",o):s.removeAttribute("tabindex")}const a=getSelection();if(a&&a.type!=="None"){const s=[];for(let o=0;o<a.rangeCount;o+=1)s.push(a.getRangeAt(o));setTimeout(()=>{if(a.rangeCount===s.length){for(let o=0;o<a.rangeCount;o+=1){const c=s[o],i=a.getRangeAt(o);if(c.commonAncestorContainer!==i.commonAncestorContainer||c.startContainer!==i.startContainer||c.endContainer!==i.endContainer||c.startOffset!==i.startOffset||c.endOffset!==i.endOffset)return}a.removeAllRanges()}})}}}function Be(e,t,n,r,a=null){let s,o;const c=new Promise((l,f)=>{s=l,o=f});return c.catch(()=>{}),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:F()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:a},willUnload:!t,type:r,complete:c},fulfil:s,reject:o}}function qe(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function En(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function yt(e){let t;if(k.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Un as a,Ln as g,Sn as l,R as p,x as s};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.DR-BBF5r.js","../chunks/DVl0sebP.js","../chunks/CJFjKwJ7.js","../chunks/DDiOVAd8.js","../assets/markdown.Dc-OSJWY.css","../chunks/YKoRJzXZ.js","../chunks/Dc_Gg2H6.js","../chunks/CmczWE_d.js","../chunks/B7X-vhXI.js","../assets/0.BhZOCxO4.css","../nodes/1.CNm6rAwf.js","../chunks/BfJ-f-Tu.js","../chunks/CsgHjHGZ.js","../assets/1.BYutk3aU.css","../nodes/2.B08usYzr.js","../chunks/CNH2HlKj.js","../chunks/1mEchsPO.js","../assets/Phone.FQEfwCX2.css","../chunks/CtrCjGZT.js","../chunks/gQJcRhou.js","../chunks/CaiJSUi3.js","../chunks/BLszSzTT.js","../chunks/CGMJxf7r.js","../chunks/BRkqKgVG.js","../chunks/pRcLbE0d.js","../assets/2.Dk9NfqnS.css","../nodes/3.CsY6J5HS.js","../assets/3.DHxQoulp.css","../nodes/4.B_pbOZoD.js","../assets/4.D5l1JxgO.css","../nodes/5.CdLPNo5-.js","../assets/5.C5qz-NeI.css","../nodes/6.CbQQ3FtZ.js","../chunks/DlnAjkg1.js","../assets/6.BFUut--w.css","../nodes/7.CCKgiNNk.js","../chunks/CVtJ6yRM.js","../assets/ChatView.CwWbzIL-.css","../assets/7.BTOx7yt7.css","../nodes/8.C7AaheUD.js","../assets/8.eZGZN-BF.css","../nodes/9.DfL9kMC4.js","../chunks/PPVm8Dsz.js","../assets/9.DwS5ZHBh.css"])))=>i.map(i=>d[i]);
2
- import{_}from"../chunks/PPVm8Dsz.js";import{j as V,R as H,h as U,T as W,U as X,V as Z,m as q,l as j,ab as z,n as J,b as R,O as K,g as u,ac as Q,ad as $,ae as tt,W as et,a2 as rt,a3 as at,X as st,aa as ot,f as b,d as nt,Y as it,s as O,c as ct,r as _t,t as ut,Z as P}from"../chunks/CJFjKwJ7.js";import{B as mt,j as dt,m as lt,u as ft,a as v,c as T,f as k,t as ht,s as vt}from"../chunks/DVl0sebP.js";import{i as A}from"../chunks/BfJ-f-Tu.js";import{b as x}from"../chunks/1mEchsPO.js";import{p as D}from"../chunks/B7X-vhXI.js";function I(s,t,a){var n;V&&(n=J,H());var o=new mt(s);U(()=>{var e=t()??null;if(V){var r=X(n),c=r===z,p=e!==null;if(c!==p){var g=Z();q(g),o.anchor=g,j(!1),o.ensure(e,e&&(f=>a(f,e))),j(!0);return}}o.ensure(e,e&&(f=>a(f,e)))},W)}function gt(s){return class extends Et{constructor(t){super({component:s,...t})}}}class Et{#e;#t;constructor(t){var a=new Map,n=(e,r)=>{var c=tt(r,!1,!1);return a.set(e,c),c};const o=new Proxy({...t.props||{},$$events:{}},{get(e,r){return u(a.get(r)??n(r,Reflect.get(e,r)))},has(e,r){return r===K?!0:(u(a.get(r)??n(r,Reflect.get(e,r))),Reflect.has(e,r))},set(e,r,c){return R(a.get(r)??n(r,c),c),Reflect.set(e,r,c)}});this.#t=(t.hydrate?dt:lt)(t.component,{target:t.target,anchor:t.anchor,props:o,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError}),(!t?.props?.$$host||t.sync===!1)&&Q(),this.#e=o.$$events;for(const e of Object.keys(this.#t))e==="$set"||e==="$destroy"||e==="$on"||$(this,e,{get(){return this.#t[e]},set(r){this.#t[e]=r},enumerable:!0});this.#t.$set=e=>{Object.assign(o,e)},this.#t.$destroy=()=>{ft(this.#t)}}$set(t){this.#t.$set(t)}$on(t,a){this.#e[t]=this.#e[t]||[];const n=(...o)=>a.call(this,...o);return this.#e[t].push(n),()=>{this.#e[t]=this.#e[t].filter(o=>o!==n)}}$destroy(){this.#t.$destroy()}}const Lt={};var yt=k('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),bt=k("<!> <!>",1);function Rt(s,t){et(t,!0);let a=D(t,"components",23,()=>[]),n=D(t,"data_0",3,null),o=D(t,"data_1",3,null);rt(()=>t.stores.page.set(t.page)),at(()=>{t.stores,t.page,t.constructors,a(),t.form,n(),o(),t.stores.page.notify()});let e=O(!1),r=O(!1),c=O(null);st(()=>{const i=t.stores.page.subscribe(()=>{u(e)&&(R(r,!0),ot().then(()=>{R(c,document.title||"untitled page",!0)}))});return R(e,!0),i});const p=P(()=>t.constructors[1]);var g=bt(),f=b(g);{var C=i=>{const m=P(()=>t.constructors[0]);var d=T(),E=b(d);I(E,()=>u(m),(l,h)=>{x(h(l,{get data(){return n()},get form(){return t.form},get params(){return t.page.params},children:(y,Ot)=>{var L=T(),Y=b(L);I(Y,()=>u(p),(B,F)=>{x(F(B,{get data(){return o()},get form(){return t.form},get params(){return t.page.params}}),G=>a()[1]=G,()=>a()?.[1])}),v(y,L)},$$slots:{default:!0}}),y=>a()[0]=y,()=>a()?.[0])}),v(i,d)},S=i=>{const m=P(()=>t.constructors[0]);var d=T(),E=b(d);I(E,()=>u(m),(l,h)=>{x(h(l,{get data(){return n()},get form(){return t.form},get params(){return t.page.params}}),y=>a()[0]=y,()=>a()?.[0])}),v(i,d)};A(f,i=>{t.constructors[1]?i(C):i(S,-1)})}var M=nt(f,2);{var N=i=>{var m=yt(),d=ct(m);{var E=l=>{var h=ht();ut(()=>vt(h,u(c))),v(l,h)};A(d,l=>{u(r)&&l(E)})}_t(m),v(i,m)};A(M,i=>{u(e)&&i(N)})}v(s,g),it()}const Vt=gt(Rt),jt=[()=>_(()=>import("../nodes/0.DR-BBF5r.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]),import.meta.url),()=>_(()=>import("../nodes/1.CNm6rAwf.js"),__vite__mapDeps([10,1,2,11,12,5,6,13]),import.meta.url),()=>_(()=>import("../nodes/2.B08usYzr.js"),__vite__mapDeps([14,1,2,11,15,3,4,16,8,17,12,5,18,19,20,7,21,22,23,24,25]),import.meta.url),()=>_(()=>import("../nodes/3.CsY6J5HS.js"),__vite__mapDeps([26,1,2,11,12,5,15,3,4,16,8,17,19,21,22,23,24,27]),import.meta.url),()=>_(()=>import("../nodes/4.B_pbOZoD.js"),__vite__mapDeps([28,1,2,11,15,3,4,16,8,17,12,19,7,24,29]),import.meta.url),()=>_(()=>import("../nodes/5.CdLPNo5-.js"),__vite__mapDeps([30,1,2,11,15,3,4,16,8,17,23,19,24,31]),import.meta.url),()=>_(()=>import("../nodes/6.CbQQ3FtZ.js"),__vite__mapDeps([32,1,2,11,15,3,4,16,8,17,12,5,33,18,19,20,7,21,34]),import.meta.url),()=>_(()=>import("../nodes/7.CCKgiNNk.js"),__vite__mapDeps([35,1,2,11,12,15,3,4,16,8,17,33,5,18,36,22,37,38]),import.meta.url),()=>_(()=>import("../nodes/8.C7AaheUD.js"),__vite__mapDeps([39,1,2,11,15,3,4,16,8,17,12,5,18,19,20,7,21,40]),import.meta.url),()=>_(()=>import("../nodes/9.DfL9kMC4.js"),__vite__mapDeps([41,42,1,2,11,12,15,3,4,16,8,17,5,6,20,7,36,22,37,43]),import.meta.url)],kt=[0],wt={"/":[-3],"/activity":[-4],"/config":[-5],"/neurolink":[-6],"/project":[6],"/session/[id]":[7],"/terminals":[8],"/terminals/[id]":[9]},w={handleError:(({error:s})=>{console.error(s)}),reroute:(()=>{}),transport:{}},pt=Object.fromEntries(Object.entries(w.transport).map(([s,t])=>[s,t.decode])),Ct=Object.fromEntries(Object.entries(w.transport).map(([s,t])=>[s,t.encode])),St=!1,Mt=(s,t)=>pt[s](t);export{Mt as decode,pt as decoders,wt as dictionary,Ct as encoders,St as hash,w as hooks,Lt as matchers,jt as nodes,Vt as root,kt as server_loads};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.B76xpgU3.js","../chunks/DVl0sebP.js","../chunks/CJFjKwJ7.js","../chunks/DDiOVAd8.js","../assets/markdown.Dc-OSJWY.css","../chunks/DMGoTOyn.js","../chunks/B7UYUXav.js","../chunks/CmczWE_d.js","../chunks/B7X-vhXI.js","../assets/0.BXHU1bFd.css","../nodes/1.C8HQaM7E.js","../chunks/BfJ-f-Tu.js","../chunks/CsgHjHGZ.js","../assets/1.BYutk3aU.css","../nodes/2.BAtXcLWF.js","../chunks/CNH2HlKj.js","../chunks/1mEchsPO.js","../assets/Phone.FQEfwCX2.css","../chunks/CtrCjGZT.js","../chunks/gQJcRhou.js","../chunks/CaiJSUi3.js","../chunks/BLszSzTT.js","../chunks/CGMJxf7r.js","../chunks/BRkqKgVG.js","../chunks/pRcLbE0d.js","../assets/2.Bxu934IC.css","../nodes/3.CYU2wJvk.js","../assets/3.DHxQoulp.css","../nodes/4.B_pbOZoD.js","../assets/4.D5l1JxgO.css","../nodes/5.CdLPNo5-.js","../assets/5.C5qz-NeI.css","../nodes/6.C_uZdnK8.js","../chunks/CAWtH3Iy.js","../assets/6.BFUut--w.css","../nodes/7.Cuv-AoHz.js","../chunks/CVtJ6yRM.js","../assets/ChatView.CwWbzIL-.css","../assets/7.BTOx7yt7.css","../nodes/8.jzwOIQUM.js","../assets/8.eZGZN-BF.css","../nodes/9.BDETv_rs.js","../chunks/PPVm8Dsz.js","../assets/9.DwS5ZHBh.css"])))=>i.map(i=>d[i]);
2
+ import{_}from"../chunks/PPVm8Dsz.js";import{j as V,R as H,h as U,T as W,U as X,V as Z,m as q,l as j,ab as z,n as J,b as R,O as K,g as u,ac as Q,ad as $,ae as tt,W as et,a2 as rt,a3 as at,X as st,aa as ot,f as b,d as nt,Y as it,s as O,c as ct,r as _t,t as ut,Z as P}from"../chunks/CJFjKwJ7.js";import{B as mt,j as dt,m as lt,u as ft,a as v,c as T,f as k,t as ht,s as vt}from"../chunks/DVl0sebP.js";import{i as A}from"../chunks/BfJ-f-Tu.js";import{b as x}from"../chunks/1mEchsPO.js";import{p as D}from"../chunks/B7X-vhXI.js";function I(s,t,a){var n;V&&(n=J,H());var o=new mt(s);U(()=>{var e=t()??null;if(V){var r=X(n),c=r===z,p=e!==null;if(c!==p){var g=Z();q(g),o.anchor=g,j(!1),o.ensure(e,e&&(f=>a(f,e))),j(!0);return}}o.ensure(e,e&&(f=>a(f,e)))},W)}function gt(s){return class extends Et{constructor(t){super({component:s,...t})}}}class Et{#e;#t;constructor(t){var a=new Map,n=(e,r)=>{var c=tt(r,!1,!1);return a.set(e,c),c};const o=new Proxy({...t.props||{},$$events:{}},{get(e,r){return u(a.get(r)??n(r,Reflect.get(e,r)))},has(e,r){return r===K?!0:(u(a.get(r)??n(r,Reflect.get(e,r))),Reflect.has(e,r))},set(e,r,c){return R(a.get(r)??n(r,c),c),Reflect.set(e,r,c)}});this.#t=(t.hydrate?dt:lt)(t.component,{target:t.target,anchor:t.anchor,props:o,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError}),(!t?.props?.$$host||t.sync===!1)&&Q(),this.#e=o.$$events;for(const e of Object.keys(this.#t))e==="$set"||e==="$destroy"||e==="$on"||$(this,e,{get(){return this.#t[e]},set(r){this.#t[e]=r},enumerable:!0});this.#t.$set=e=>{Object.assign(o,e)},this.#t.$destroy=()=>{ft(this.#t)}}$set(t){this.#t.$set(t)}$on(t,a){this.#e[t]=this.#e[t]||[];const n=(...o)=>a.call(this,...o);return this.#e[t].push(n),()=>{this.#e[t]=this.#e[t].filter(o=>o!==n)}}$destroy(){this.#t.$destroy()}}const Lt={};var yt=k('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),bt=k("<!> <!>",1);function Rt(s,t){et(t,!0);let a=D(t,"components",23,()=>[]),n=D(t,"data_0",3,null),o=D(t,"data_1",3,null);rt(()=>t.stores.page.set(t.page)),at(()=>{t.stores,t.page,t.constructors,a(),t.form,n(),o(),t.stores.page.notify()});let e=O(!1),r=O(!1),c=O(null);st(()=>{const i=t.stores.page.subscribe(()=>{u(e)&&(R(r,!0),ot().then(()=>{R(c,document.title||"untitled page",!0)}))});return R(e,!0),i});const p=P(()=>t.constructors[1]);var g=bt(),f=b(g);{var C=i=>{const m=P(()=>t.constructors[0]);var d=T(),E=b(d);I(E,()=>u(m),(l,h)=>{x(h(l,{get data(){return n()},get form(){return t.form},get params(){return t.page.params},children:(y,Ot)=>{var L=T(),Y=b(L);I(Y,()=>u(p),(B,F)=>{x(F(B,{get data(){return o()},get form(){return t.form},get params(){return t.page.params}}),G=>a()[1]=G,()=>a()?.[1])}),v(y,L)},$$slots:{default:!0}}),y=>a()[0]=y,()=>a()?.[0])}),v(i,d)},S=i=>{const m=P(()=>t.constructors[0]);var d=T(),E=b(d);I(E,()=>u(m),(l,h)=>{x(h(l,{get data(){return n()},get form(){return t.form},get params(){return t.page.params}}),y=>a()[0]=y,()=>a()?.[0])}),v(i,d)};A(f,i=>{t.constructors[1]?i(C):i(S,-1)})}var M=nt(f,2);{var N=i=>{var m=yt(),d=ct(m);{var E=l=>{var h=ht();ut(()=>vt(h,u(c))),v(l,h)};A(d,l=>{u(r)&&l(E)})}_t(m),v(i,m)};A(M,i=>{u(e)&&i(N)})}v(s,g),it()}const Vt=gt(Rt),jt=[()=>_(()=>import("../nodes/0.B76xpgU3.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]),import.meta.url),()=>_(()=>import("../nodes/1.C8HQaM7E.js"),__vite__mapDeps([10,1,2,11,12,5,6,13]),import.meta.url),()=>_(()=>import("../nodes/2.BAtXcLWF.js"),__vite__mapDeps([14,1,2,11,15,3,4,16,8,17,12,5,18,19,20,7,21,22,23,24,25]),import.meta.url),()=>_(()=>import("../nodes/3.CYU2wJvk.js"),__vite__mapDeps([26,1,2,11,12,5,15,3,4,16,8,17,19,21,22,23,24,27]),import.meta.url),()=>_(()=>import("../nodes/4.B_pbOZoD.js"),__vite__mapDeps([28,1,2,11,15,3,4,16,8,17,12,19,7,24,29]),import.meta.url),()=>_(()=>import("../nodes/5.CdLPNo5-.js"),__vite__mapDeps([30,1,2,11,15,3,4,16,8,17,23,19,24,31]),import.meta.url),()=>_(()=>import("../nodes/6.C_uZdnK8.js"),__vite__mapDeps([32,1,2,11,15,3,4,16,8,17,12,5,33,18,19,20,7,21,34]),import.meta.url),()=>_(()=>import("../nodes/7.Cuv-AoHz.js"),__vite__mapDeps([35,1,2,11,12,15,3,4,16,8,17,33,5,18,36,22,37,38]),import.meta.url),()=>_(()=>import("../nodes/8.jzwOIQUM.js"),__vite__mapDeps([39,1,2,11,15,3,4,16,8,17,12,5,18,19,20,7,21,40]),import.meta.url),()=>_(()=>import("../nodes/9.BDETv_rs.js"),__vite__mapDeps([41,42,1,2,11,12,15,3,4,16,8,17,5,6,20,7,36,22,37,43]),import.meta.url)],kt=[0],wt={"/":[-3],"/activity":[-4],"/config":[-5],"/neurolink":[-6],"/project":[6],"/session/[id]":[7],"/terminals":[8],"/terminals/[id]":[9]},w={handleError:(({error:s})=>{console.error(s)}),reroute:(()=>{}),transport:{}},pt=Object.fromEntries(Object.entries(w.transport).map(([s,t])=>[s,t.decode])),Ct=Object.fromEntries(Object.entries(w.transport).map(([s,t])=>[s,t.encode])),St=!1,Mt=(s,t)=>pt[s](t);export{Mt as decode,pt as decoders,wt as dictionary,Ct as encoders,St as hash,w as hooks,Lt as matchers,jt as nodes,Vt as root,kt as server_loads};
@@ -0,0 +1 @@
1
+ import{l as o,a as r}from"../chunks/DMGoTOyn.js";export{o as load_css,r as start};
@@ -0,0 +1,2 @@
1
+ )�import{l as o,a as r}from"../chunks/DMGoTOyn.js";export{o as load_css,r as start};
2
+ 
@@ -1 +1 @@
1
- import{a as P,f as j,s as R,d as V,e as z,g as E,h as H}from"../chunks/DVl0sebP.js";import{t as C,d as o,c as t,r as e,W as L,a3 as M,X as N,Y as K,b as m,g as T,a1 as U,s as X}from"../chunks/CJFjKwJ7.js";import{a as h,s as Y}from"../chunks/DDiOVAd8.js";import{g as F}from"../chunks/YKoRJzXZ.js";import{p as G}from"../chunks/Dc_Gg2H6.js";import{I as J}from"../chunks/CmczWE_d.js";var Q=j('<div><span class="status-dot"></span> <span> </span></div>');function Z(p,a){function n(s){switch(s){case"degraded":return"Degraded";case"error":return"Offline";case"healthy":return"Online";default:return"Checking"}}function g(s){switch(s){case"degraded":return"degraded";case"error":return"offline";case"healthy":return"online";default:return""}}var l=Q(),i=o(t(l),2),v=t(i,!0);e(i),e(l),C((s,d)=>{h(l,1,`status-badge ${s??""}`),R(v,d)},[()=>g(a.status),()=>n(a.status)]),P(p,l)}var $=j('<div class="app"><header class="header"><div class="header-content"><a href="/" class="logo"><img src="/app-icon.png" alt="Shooter" class="logo-icon" width="24" height="24"/> <span class="logo-text">Shooter</span></a> <div class="nav-right svelte-12qhfyh"><!> <button aria-label="Settings"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg></button></div></div></header> <div class="content-area svelte-12qhfyh"><!></div> <nav class="bottom-tabs svelte-12qhfyh"><div class="bottom-tabs-inner svelte-12qhfyh"><a href="/"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7"></rect><rect x="14" y="3" width="7" height="7"></rect><rect x="3" y="14" width="7" height="7"></rect><rect x="14" y="14" width="7" height="7"></rect></svg> <span>Dashboard</span></a> <a href="/activity"><!> <span>Activity</span></a> <a href="/terminals"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><polyline points="4 17 10 11 4 5"></polyline><line x1="12" y1="19" x2="20" y2="19"></line></svg> <span>Terminals</span></a></div></nav></div>');function it(p,a){L(a,!0);const n=()=>H(G,"$page",g),[g,l]=E();M(()=>{if(a.data?.aiProviders&&(window.__aiProviders=a.data.aiProviders,a.data.neurolinkProvider)){const r=window.process;r?.env&&(r.env.NEUROLINK_PROVIDER=a.data.neurolinkProvider)}});let i=X("unknown");N(()=>{v();const r=setInterval(()=>{v()},3e4);return()=>{clearInterval(r)}});async function v(){try{const r=await fetch("/api/health");if(!r.ok){m(i,"error");return}const c=await r.json();m(i,c.status==="healthy"||c.status==="degraded"||c.status==="error"?c.status:"unknown",!0)}catch{m(i,"error")}}var s=$(),d=t(s),y=t(d),w=o(t(y),2),k=t(w);Z(k,{get status(){return T(i)}});var _=o(k,2);e(w),e(y),e(d);var f=o(d,2),W=t(f);Y(W,()=>a.children),e(f);var b=o(f,2),x=t(b),S=t(x);let q;var u=o(S,2);let A;var B=t(u);J(B,{name:"bell",size:26}),U(2),e(u);var O=o(u,2);let I;e(x),e(b),e(s),C((r,c,D)=>{h(_,1,`btn-gear ${n().url.pathname==="/config"?"btn-gear-active":""}`,"svelte-12qhfyh"),q=h(S,1,"tab-item svelte-12qhfyh",null,q,r),A=h(u,1,"tab-item svelte-12qhfyh",null,A,c),I=h(O,1,"tab-item svelte-12qhfyh",null,I,D)},[()=>({active:n().url.pathname==="/"||n().url.pathname.startsWith("/project")||n().url.pathname.startsWith("/session")}),()=>({active:n().url.pathname.startsWith("/activity")}),()=>({active:n().url.pathname.startsWith("/terminals")})]),z("click",_,()=>{F("/config")}),P(p,s),K(),l()}V(["click"]);export{it as component};
1
+ import{a as P,f as j,s as R,d as V,e as z,g as E,h as H}from"../chunks/DVl0sebP.js";import{t as C,d as o,c as t,r as e,W as L,a3 as M,X as N,Y as K,b as m,g as T,a1 as U,s as X}from"../chunks/CJFjKwJ7.js";import{a as h,s as Y}from"../chunks/DDiOVAd8.js";import{g as F}from"../chunks/DMGoTOyn.js";import{p as G}from"../chunks/B7UYUXav.js";import{I as J}from"../chunks/CmczWE_d.js";var Q=j('<div><span class="status-dot"></span> <span> </span></div>');function Z(p,a){function n(s){switch(s){case"degraded":return"Degraded";case"error":return"Offline";case"healthy":return"Online";default:return"Checking"}}function g(s){switch(s){case"degraded":return"degraded";case"error":return"offline";case"healthy":return"online";default:return""}}var l=Q(),i=o(t(l),2),v=t(i,!0);e(i),e(l),C((s,d)=>{h(l,1,`status-badge ${s??""}`),R(v,d)},[()=>g(a.status),()=>n(a.status)]),P(p,l)}var $=j('<div class="app"><header class="header"><div class="header-content"><a href="/" class="logo"><img src="/app-icon.png" alt="Shooter" class="logo-icon" width="24" height="24"/> <span class="logo-text">Shooter</span></a> <div class="nav-right svelte-12qhfyh"><!> <button aria-label="Settings"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg></button></div></div></header> <div class="content-area svelte-12qhfyh"><!></div> <nav class="bottom-tabs svelte-12qhfyh"><div class="bottom-tabs-inner svelte-12qhfyh"><a href="/"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7"></rect><rect x="14" y="3" width="7" height="7"></rect><rect x="3" y="14" width="7" height="7"></rect><rect x="14" y="14" width="7" height="7"></rect></svg> <span>Dashboard</span></a> <a href="/activity"><!> <span>Activity</span></a> <a href="/terminals"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><polyline points="4 17 10 11 4 5"></polyline><line x1="12" y1="19" x2="20" y2="19"></line></svg> <span>Terminals</span></a></div></nav></div>');function it(p,a){L(a,!0);const n=()=>H(G,"$page",g),[g,l]=E();M(()=>{if(a.data?.aiProviders&&(window.__aiProviders=a.data.aiProviders,a.data.neurolinkProvider)){const r=window.process;r?.env&&(r.env.NEUROLINK_PROVIDER=a.data.neurolinkProvider)}});let i=X("unknown");N(()=>{v();const r=setInterval(()=>{v()},3e4);return()=>{clearInterval(r)}});async function v(){try{const r=await fetch("/api/health");if(!r.ok){m(i,"error");return}const c=await r.json();m(i,c.status==="healthy"||c.status==="degraded"||c.status==="error"?c.status:"unknown",!0)}catch{m(i,"error")}}var s=$(),d=t(s),y=t(d),w=o(t(y),2),k=t(w);Z(k,{get status(){return T(i)}});var _=o(k,2);e(w),e(y),e(d);var f=o(d,2),W=t(f);Y(W,()=>a.children),e(f);var b=o(f,2),x=t(b),S=t(x);let q;var u=o(S,2);let A;var B=t(u);J(B,{name:"bell",size:26}),U(2),e(u);var O=o(u,2);let I;e(x),e(b),e(s),C((r,c,D)=>{h(_,1,`btn-gear ${n().url.pathname==="/config"?"btn-gear-active":""}`,"svelte-12qhfyh"),q=h(S,1,"tab-item svelte-12qhfyh",null,q,r),A=h(u,1,"tab-item svelte-12qhfyh",null,A,c),I=h(O,1,"tab-item svelte-12qhfyh",null,I,D)},[()=>({active:n().url.pathname==="/"||n().url.pathname.startsWith("/project")||n().url.pathname.startsWith("/session")}),()=>({active:n().url.pathname.startsWith("/activity")}),()=>({active:n().url.pathname.startsWith("/terminals")})]),z("click",_,()=>{F("/config")}),P(p,s),K(),l()}V(["click"]);export{it as component};
@@ -1 +1 @@
1
- import{d as W,e as w,a as c,g as Y,f as z,s as x,h as C,t as u}from"../chunks/DVl0sebP.js";import{p as D,a2 as F,a3 as k,w as I,a4 as j,a5 as J,g as S,a6 as K,L as M,a7 as N,W as O,t as y,Y as Q,c as f,d as m,q as R,a0 as U,r as v}from"../chunks/CJFjKwJ7.js";import{i as $}from"../chunks/BfJ-f-Tu.js";import{h as V}from"../chunks/CsgHjHGZ.js";import{g as X}from"../chunks/YKoRJzXZ.js";import{p as Z}from"../chunks/Dc_Gg2H6.js";function ee(n=!1){const a=D,t=a.l.u;if(!t)return;let p=()=>K(a.s);if(n){let l=0,s={};const g=M(()=>{let i=!1;const d=a.s;for(const o in d)d[o]!==s[o]&&(s[o]=d[o],i=!0);return i&&l++,l});p=()=>S(g)}t.b.length&&F(()=>{G(a,p),j(t.b)}),k(()=>{const l=I(()=>t.m.map(J));return()=>{for(const s of l)typeof s=="function"&&s()}}),t.a.length&&k(()=>{G(a,p),j(t.a)})}function G(n,a){if(n.l.s)for(const t of n.l.s)S(t);a()}N();var te=z('<main class="error-page svelte-1j96wlh"><div class="error-content svelte-1j96wlh"><div class="error-code svelte-1j96wlh"> </div> <h1 class="error-title svelte-1j96wlh"><!></h1> <p class="error-message svelte-1j96wlh"><!></p> <div class="error-actions svelte-1j96wlh"><button class="error-btn svelte-1j96wlh">Go Home</button> <button class="error-btn error-btn-secondary svelte-1j96wlh">Go Back</button></div></div></main>');function ie(n,a){O(a,!1);const t=()=>C(Z,"$page",p),[p,l]=Y();ee();var s=te();V("1j96wlh",e=>{R(()=>{U.title="Error - Shooter"})});var g=f(s),i=f(g),d=f(i,!0);v(i);var o=m(i,2),T=f(o);{var q=e=>{var r=u("Page not found");c(e,r)},A=e=>{var r=u("Something went wrong");c(e,r)};$(T,e=>{t().status===404?e(q):e(A,-1)})}v(o);var h=m(o,2),B=f(h);{var E=e=>{var r=u();y(()=>x(r,t().error.message)),c(e,r)},H=e=>{var r=u("The page you're looking for doesn't exist or has been moved.");c(e,r)},L=e=>{var r=u("An unexpected error occurred. Try refreshing or going back.");c(e,r)};$(B,e=>{t().error?.message?e(E):t().status===404?e(H,1):e(L,-1)})}v(h);var _=m(h,2),b=f(_),P=m(b,2);v(_),v(g),v(s),y(()=>x(d,t().status)),w("click",b,()=>{X("/")}),w("click",P,()=>{history.back()}),c(n,s),Q(),l()}W(["click"]);export{ie as component};
1
+ import{d as W,e as w,a as c,g as Y,f as z,s as x,h as C,t as u}from"../chunks/DVl0sebP.js";import{p as D,a2 as F,a3 as k,w as I,a4 as j,a5 as J,g as S,a6 as K,L as M,a7 as N,W as O,t as y,Y as Q,c as f,d as m,q as R,a0 as U,r as v}from"../chunks/CJFjKwJ7.js";import{i as $}from"../chunks/BfJ-f-Tu.js";import{h as V}from"../chunks/CsgHjHGZ.js";import{g as X}from"../chunks/DMGoTOyn.js";import{p as Z}from"../chunks/B7UYUXav.js";function ee(n=!1){const a=D,t=a.l.u;if(!t)return;let p=()=>K(a.s);if(n){let l=0,s={};const g=M(()=>{let i=!1;const d=a.s;for(const o in d)d[o]!==s[o]&&(s[o]=d[o],i=!0);return i&&l++,l});p=()=>S(g)}t.b.length&&F(()=>{G(a,p),j(t.b)}),k(()=>{const l=I(()=>t.m.map(J));return()=>{for(const s of l)typeof s=="function"&&s()}}),t.a.length&&k(()=>{G(a,p),j(t.a)})}function G(n,a){if(n.l.s)for(const t of n.l.s)S(t);a()}N();var te=z('<main class="error-page svelte-1j96wlh"><div class="error-content svelte-1j96wlh"><div class="error-code svelte-1j96wlh"> </div> <h1 class="error-title svelte-1j96wlh"><!></h1> <p class="error-message svelte-1j96wlh"><!></p> <div class="error-actions svelte-1j96wlh"><button class="error-btn svelte-1j96wlh">Go Home</button> <button class="error-btn error-btn-secondary svelte-1j96wlh">Go Back</button></div></div></main>');function ie(n,a){O(a,!1);const t=()=>C(Z,"$page",p),[p,l]=Y();ee();var s=te();V("1j96wlh",e=>{R(()=>{U.title="Error - Shooter"})});var g=f(s),i=f(g),d=f(i,!0);v(i);var o=m(i,2),T=f(o);{var q=e=>{var r=u("Page not found");c(e,r)},A=e=>{var r=u("Something went wrong");c(e,r)};$(T,e=>{t().status===404?e(q):e(A,-1)})}v(o);var h=m(o,2),B=f(h);{var E=e=>{var r=u();y(()=>x(r,t().error.message)),c(e,r)},H=e=>{var r=u("The page you're looking for doesn't exist or has been moved.");c(e,r)},L=e=>{var r=u("An unexpected error occurred. Try refreshing or going back.");c(e,r)};$(B,e=>{t().error?.message?e(E):t().status===404?e(H,1):e(L,-1)})}v(h);var _=m(h,2),b=f(_),P=m(b,2);v(_),v(g),v(s),y(()=>x(d,t().status)),w("click",b,()=>{X("/")}),w("click",P,()=>{history.back()}),c(n,s),Q(),l()}W(["click"]);export{ie as component};
@@ -0,0 +1,13 @@
1
+ import{d as ut,s as w,e as Ye,a as h,f as p}from"../chunks/DVl0sebP.js";import{W as ze,c,r as l,d as v,g as r,t as B,Y as Re,Z as L,f as ge,s as q,A as $e,b as _,X as vt,_ as ft,q as mt,a0 as gt,a1 as Fe}from"../chunks/CJFjKwJ7.js";import{i as D}from"../chunks/BfJ-f-Tu.js";import{P as et,s as Oe,e as de,b as je,B as Te,a as ht,i as Ge}from"../chunks/CNH2HlKj.js";import{h as pt}from"../chunks/CsgHjHGZ.js";import{g as We}from"../chunks/DMGoTOyn.js";import{g as _t,s as St,c as yt,S as Ue}from"../chunks/CtrCjGZT.js";import{i as bt}from"../chunks/gQJcRhou.js";import{E as Ve}from"../chunks/CaiJSUi3.js";import{I as wt}from"../chunks/CmczWE_d.js";import{b as Ct,a as kt,c as xt}from"../chunks/DDiOVAd8.js";import{f as At}from"../chunks/BLszSzTT.js";import{S as Et}from"../chunks/CGMJxf7r.js";import{i as Nt}from"../chunks/BRkqKgVG.js";import{d as It}from"../chunks/pRcLbE0d.js";var Pt=p('<p class="goal-text svelte-1qbe2oo"> </p>'),Tt=p('<span class="summarizing svelte-1qbe2oo">Analyzing…</span>'),Dt=p('<span class="summary-text svelte-1qbe2oo"> </span>'),Ot=p('<span class="summary-fallback svelte-1qbe2oo"> </span>'),zt=p('<span class="stat stat-error svelte-1qbe2oo"> </span>'),Rt=p('<div class="card svelte-1qbe2oo" role="button" tabindex="0"><div class="card-header svelte-1qbe2oo"><span class="project-name svelte-1qbe2oo"> </span> <!></div> <!> <div class="summary-row svelte-1qbe2oo"><!></div> <div class="stats-row svelte-1qbe2oo"><span class="stat svelte-1qbe2oo"><span></span> </span> <span class="stat svelte-1qbe2oo"> </span> <!> <span class="stat stat-path svelte-1qbe2oo"> </span></div></div>');function He(t,e){ze(e,!0);function s(d){const u=Math.floor(d/1e3);if(u<60)return`${u}s`;const i=Math.floor(u/60);return i<60?`${i}m ${u%60}s`:`${Math.floor(i/60)}h ${i%60}m`}function n(d){const u=d.replace(/\/$/,"").split("/");return u.length<=2?d:u.slice(-2).join("/")}const a=L(()=>e.card.status==="running"&&e.card.isActive?"var(--ds-green-700)":e.card.status==="running"?"var(--ds-blue-700)":e.card.status==="idle"?"var(--ds-amber-700)":e.card.status==="error"?"var(--ds-red-700)":"var(--ds-gray-600)"),o=L(()=>e.card.status==="running"&&e.card.isActive||e.card.status==="running"?"● Running":e.card.status==="idle"?"◎ Idle":e.card.status==="exited"?"○ Done":e.card.status==="error"?"✕ Error":e.card.status),S=L(()=>e.card.status==="running"&&e.card.isActive?"status-pill status-pill--running-active":e.card.status==="running"?"status-pill status-pill--running":e.card.status==="idle"?"status-pill status-pill--idle":e.card.status==="exited"?"status-pill status-pill--exited":e.card.status==="error"?"status-pill status-pill--error":"status-pill"),y=L(()=>e.card.toolCallCount===0?"Waiting for activity…":e.card.toolCallCount===1?"1 tool call so far":`${e.card.toolCallCount} tool calls so far`);function A(d){(d.key==="Enter"||d.key===" ")&&(d.key===" "&&d.preventDefault(),e.onclick?.())}var b=Rt(),m=c(b),f=c(m),C=c(f,!0);l(f);var k=v(f,2);et(k,{get text(){return r(o)},get classes(){return r(S)}}),l(m);var P=v(m,2);{var Se=d=>{var u=Pt(),i=c(u,!0);l(u),B(()=>w(i,e.card.goal)),h(d,u)};D(P,d=>{e.card.goal&&d(Se)})}var $=v(P,2),ye=c($);{var be=d=>{var u=Tt();h(d,u)},ee=d=>{var u=Dt(),i=c(u,!0);l(u),B(()=>w(i,e.card.summary)),h(d,u)},te=d=>{var u=Ot(),i=c(u,!0);l(u),B(()=>w(i,r(y))),h(d,u)};D(ye,d=>{e.card.isSummarizing?d(be):e.card.summary?d(ee,1):e.card.status==="running"&&d(te,2)})}l($);var V=v($,2),F=c(V),ae=c(F),we=v(ae);l(F);var se=v(F,2),Ce=c(se);l(se);var re=v(se,2);{var ke=d=>{var u=zt(),i=c(u);l(u),B(()=>w(i,`${e.card.errorCount??""} errors`)),h(d,u)};D(re,d=>{e.card.errorCount>0&&d(ke)})}var oe=v(re,2),xe=c(oe,!0);l(oe),l(V),l(b),B((d,u)=>{Ct(b,`--status-color: ${r(a)??""}`),Oe(b,"aria-label",`Open ${e.card.projectName??""} session`),w(C,e.card.projectName),kt(ae,1,xt(e.card.status==="running"&&e.card.isActive?"status-dot-active":"status-dot-static"),"svelte-1qbe2oo"),w(we,` ${d??""}`),w(Ce,`${e.card.toolCallCount??""} tools`),Oe(oe,"title",e.card.cwd),w(xe,u)},[()=>s(e.card.duration),()=>n(e.card.cwd)]),Ye("click",b,function(...d){e.onclick?.apply(this,d)}),Ye("keydown",b,A),h(t,b),Re()}ut(["click","keydown"]);var jt=p('<div class="section svelte-14sxgtb"><h3 class="section-label svelte-14sxgtb">Active</h3> <!></div>'),Lt=p('<div class="section svelte-14sxgtb"><h3 class="section-label svelte-14sxgtb">Recent</h3> <!></div>'),Mt=p("<!> <!>",1);function qt(t,e){ze(e,!0);const s=L(()=>e.cards.filter(m=>m.status==="running")),n=L(()=>e.cards.filter(m=>m.status!=="running"));function a(m){e.onCardClick?.(m)}var o=Mt(),S=ge(o);{var y=m=>{var f=jt(),C=v(c(f),2);de(C,17,()=>r(s),k=>k.terminalId,(k,P)=>{He(k,{get card(){return r(P)},onclick:()=>{a(r(P))}})}),l(f),h(m,f)};D(S,m=>{r(s).length>0&&m(y)})}var A=v(S,2);{var b=m=>{var f=Lt(),C=v(c(f),2);de(C,17,()=>r(n),k=>k.terminalId,(k,P)=>{He(k,{get card(){return r(P)},onclick:()=>{a(r(P))}})}),l(f),h(m,f)};D(A,m=>{r(n).length>0&&m(b)})}h(t,o),Re()}const Bt="https://unpkg.com/@juspay/neurolink/dist/browser/neurolink.min.js",Kt=new Set(["agent-question","terminal-exited","tool-failed"]);let fe=null,me=null,he=null;class Yt{async summarize(e){const s=this.chooseTone(e),n=s==="conversational"?this.buildConversationalPrompt(e):this.buildStatusReportPrompt(e);try{const a=await Ft();if(!a)return console.log("[SessionSummarizer] NeuroLink not available, using fallback."),{generatedAt:new Date().toISOString(),text:this.fallbackText(e),tone:s};const o=await a.generate({input:{text:n},...he?{model:he.model,provider:he.provider}:{}}),S=Wt(o.content??"").trim()||this.fallbackText(e);return{generatedAt:new Date().toISOString(),text:S,tone:s}}catch(a){return console.warn("[SessionSummarizer] summarize failed:",a instanceof Error?a.message:String(a)),{generatedAt:new Date().toISOString(),text:this.fallbackText(e),tone:s}}}buildConversationalPrompt(e){const s=e.goal??"unknown",n=e.recentEvents.map(a=>{const o=[a.type];return a.tool&&o.push(`tool=${a.tool}`),a.error&&o.push(`error=${a.error}`),a.command&&o.push(`command=${a.command}`),o.join(" ")}).join(", ");return`You are monitoring a coding session. Based on the context below, write ONE sentence (max 100 chars) describing what's happening in plain English. Be specific about what Claude did or is doing.
2
+
3
+ Goal: ${s}
4
+ Recent events: ${n}
5
+ Conversation excerpt: ${e.conversationExcerpt}
6
+ Status: ${e.status}
7
+
8
+ One sentence only, no quotes, no markdown.`}buildStatusReportPrompt(e){return`You are monitoring a coding session. Write a brief status update (max 60 chars) in the format "Doing X, Y done". Focus on the action.
9
+
10
+ Recent tool calls: ${e.recentEvents.flatMap(n=>n.tool?[n.tool]:[]).join(", ")||"none"}
11
+ Status: ${e.status}
12
+
13
+ Short phrase only, no quotes.`}chooseTone(e){return e.status==="error"||e.errorCount>0||e.recentEvents.some(n=>Kt.has(n.type))?"conversational":"status-report"}fallbackText(e){const s=e.recentEvents.flatMap(a=>a.tool?[a.tool]:[]),n=[...new Set(s)];return n.length>0?`Running: ${n.join(", ")} (${e.toolCallCount} tools)`:`Status: ${e.status} — ${e.toolCallCount} tool calls`}}async function Ft(){if(me)return me;Nt();const e=(await Gt()).NeuroLink;if(!e)return null;const s=window.__aiProviders,n=window.process?.env?.NEUROLINK_PROVIDER,a=It(s,n);if(!a)return console.warn("[SessionSummarizer] No AI provider configured"),null;const o=window.process;return o?.env&&s&&(s["google-ai"]&&!o.env.GOOGLE_AI_API_KEY&&(o.env.GOOGLE_AI_API_KEY="proxy-via-server"),s.anthropic&&!o.env.ANTHROPIC_API_KEY&&(o.env.ANTHROPIC_API_KEY="proxy-via-server"),s.openai&&!o.env.OPENAI_API_KEY&&(o.env.OPENAI_API_KEY="proxy-via-server"),s.mistral&&!o.env.MISTRAL_API_KEY&&(o.env.MISTRAL_API_KEY="proxy-via-server")),me=new e({provider:a.provider}),he=a,console.log(`[SessionSummarizer] Using provider: ${a.provider}/${a.model}`),me}function Gt(){return fe||(fe=import(Bt).catch(t=>{throw console.warn("[SessionSummarizer] Failed to load NeuroLink SDK:",t),fe=null,t})),fe}function Wt(t){return typeof t=="string"?t:typeof t=="number"||typeof t=="boolean"?String(t):""}function Le(){return new Date(Date.now()).toISOString()}const Ut=100,Vt=15e3,Ht=3e4,tt=2e3,Jt=3e4;let R=q($e([])),ce=q(!1),O=null,Z=null,Q=null,pe=tt,Xt=0,K="";const ve=new je,Y=new je,_e=new Et;async function Zt(t){K=t||ta(),K&&(await Ze(K),await st(K),Z&&clearInterval(Z),Z=setInterval(()=>{Ze(K)},Vt))}function Qt(){O&&(O.onclose=null,O.close(),O=null),Z&&(clearInterval(Z),Z=null),Q&&(clearTimeout(Q),Q=null);for(const[,t]of Y)t.onclose=null,t.close();Y.clear(),_e.clear(),ve.clear(),_(ce,!1),K=""}function $t(){const t=Date.now();return Me(r(R)).map(e=>{const s=Date.parse(e.createdAt),n=e.events.length>0?Date.parse(e.events[e.events.length-1].timestamp):0;return{...e,duration:t-s,goal:e.goal,isActive:n>0&&t-n<Ht,isSummarizing:e.isSummarizing,summary:e.summary}})}function Je(t,e){const s=r(R).find(n=>n.terminalId===t);s&&(s.goal=e)}function ea(t,e){const s=r(R).find(n=>n.terminalId===t);s&&(s.summary=e,s.summaryUpdatedAt=Le(),s.isSummarizing=!1)}function X(t,e,s){const n={data:s,id:`evt-${++Xt}`,summarized:!1,terminalId:t.terminalId,timestamp:s.timestamp??Le(),type:e},a=t.events.length>=Ut?[...t.events.slice(1),n]:[...t.events,n];t.events=a,t.eventCount+=1}function at(t){return t.split("/").filter(Boolean).pop()??t}function ue(t){const e=Y.get(t);e&&(e.onclose=null,e.close(),Y.delete(t))}async function st(t){if(!(O&&O.readyState<=1))try{const e=await fetch("/api/ws-ticket",{headers:{Authorization:`Bearer ${t}`},method:"POST"});if(!e.ok){De(t);return}const{ticket:s}=await e.json(),n=window.location.origin.replace(/^http/,"ws");O=new WebSocket(`${n}/ws/events?ticket=${s}`),O.onopen=()=>{_(ce,!0),pe=tt},O.onmessage=a=>{try{const o=JSON.parse(a.data);o&&typeof o=="object"&&aa(o)}catch{}},O.onclose=()=>{_(ce,!1),O=null,De(t)},O.onerror=()=>{_(ce,!1)}}catch{_(ce,!1),De(t)}}function Xe(t){let e="";return typeof t=="string"?e=t:Array.isArray(t)&&(e=t.find(n=>n.type==="text")?.content??""),e.slice(0,200).trim()}async function Ze(t){if(t)try{const e=await fetch("/api/terminals",{headers:{Authorization:`Bearer ${t}`}});if(!e.ok)return;const n=(await e.json()).terminals??[];_(R,Me(ra(r(R),n)),!0)}catch{}}function ta(){try{const t=localStorage.getItem("shooter_config");if(!t)return"";const e=JSON.parse(t);if(e&&typeof e=="object"){const s=e;if(typeof s.apiKey=="string")return s.apiKey}}catch{}return""}function aa(t){const e=t.type;if(!e||e==="welcome")return;const s=t.terminalId??null;if(!s)return;const n=r(R).findIndex(S=>S.terminalId===s);if(n===-1)return;const a=r(R)[n];switch(e){case"agent-idle":case"agent-question":{a.status="idle",X(a,e,t);break}case"terminal-exited":{a.status="exited",a.exitedAt=t.exitedAt??Le(),X(a,e,t),ue(s),ve.delete(s);break}case"tool-completed":{X(a,e,t);break}case"tool-failed":{a.errorCount+=1,X(a,e,t);break}case"tool-started":{a.toolCallCount+=1,a.status="running",X(a,e,t);break}default:{X(a,e,t);break}}(e==="tool-failed"||e==="agent-question"||a.errorCount>=3||a.eventCount>0&&a.eventCount%20===0)&&!a.isSummarizing&&oa(a),_(R,Me(r(R)),!0)}function sa(t){return{command:t.command,createdAt:t.createdAt,cwd:t.cwd,errorCount:0,eventCount:0,events:[],exitedAt:t.exitedAt,goal:"",isSummarizing:!1,projectName:at(t.cwd),projectPath:t.cwd,status:rt(t.status),summary:"",summaryUpdatedAt:"",terminalId:t.id,toolCallCount:0}}function rt(t){return t==="running"?"running":t==="idle"?"idle":t==="exited"?"exited":"error"}function ra(t,e){const s=new Set(e.map(a=>a.id));for(const a of t)s.has(a.terminalId)||(ue(a.terminalId),ve.delete(a.terminalId));const n=new je;for(const a of t)s.has(a.terminalId)&&n.set(a.terminalId,a);for(const a of e){const o=n.get(a.id);o?(o.command=a.command,o.cwd=a.cwd,o.projectName=at(a.cwd),o.projectPath=a.cwd,o.exitedAt=a.exitedAt,o.status!=="error"&&(o.status=rt(a.status)),o.goal||Qe(a.id)):(n.set(a.id,sa(a)),Qe(a.id))}return Array.from(n.values())}async function Qe(t){if(K&&!(Y.has(t)||_e.has(t))){_e.add(t),console.log(`[DashboardStore] Opening session socket for ${t}`);try{const e=await fetch("/api/ws-ticket",{headers:{Authorization:`Bearer ${K}`},method:"POST"});if(!e.ok){console.warn(`[DashboardStore] Failed to get WS ticket for ${t}:`,e.status);return}const{ticket:s}=await e.json(),a=`${window.location.origin.replace(/^http/,"ws")}/ws/session/${t}?ticket=${s}`;console.log(`[DashboardStore] Connecting session socket for ${t}`);const o=new WebSocket(a);Y.set(t,o),o.onopen=()=>{console.log(`[DashboardStore] Session socket opened for ${t}`)},o.onmessage=S=>{try{const y=JSON.parse(S.data);if(!y||typeof y!="object")return;const A=y,b=r(R).find(f=>f.terminalId===t),m=b?.goal&&b.goal.length>0;if(A.type==="history"){console.log(`[DashboardStore] Received history for ${t}, extracting goal...`);const f=A.messages;if(!Array.isArray(f)){console.warn(`[DashboardStore] No messages array in history for ${t}`);return}console.log(`[DashboardStore] Found ${f.length} messages, looking for first user message...`);for(const C of f)if(C.role==="user"){const k=Xe(C.content);console.log(`[DashboardStore] Extracted goal for ${t}: "${k.substring(0,50)}..."`),k&&Je(t,k),ue(t);return}console.log(`[DashboardStore] No user message found in history for ${t}`);return}if(A.type==="message"&&A.role==="user"&&!m){const f=Xe(A.content);f&&(console.log(`[DashboardStore] Extracted goal from message for ${t}: "${f.substring(0,50)}..."`),Je(t,f),ue(t));return}if(!m)return;ue(t)}catch(y){console.warn("[DashboardStore] Error processing session message:",y)}},o.onclose=()=>{console.log(`[DashboardStore] Session socket closed for ${t}`),Y.delete(t)},o.onerror=S=>{console.warn(`[DashboardStore] Session socket error for ${t}:`,S),Y.delete(t)}}catch(e){console.warn("[DashboardStore] Failed to open session socket:",e)}finally{_e.delete(t)}}}function De(t){Q||(Q=setTimeout(()=>{Q=null,st(t)},pe),pe=Math.min(pe*2,Jt))}function Me(t){return[...t].sort((e,s)=>{const n={error:2,exited:3,idle:1,running:0},a=n[e.status],o=n[s.status];if(a!==o)return a-o;if(e.status!=="exited"&&s.status!=="exited")return s.createdAt.localeCompare(e.createdAt);const S=e.exitedAt??e.createdAt;return(s.exitedAt??s.createdAt).localeCompare(S)})}function oa(t){t.isSummarizing=!0;let e=ve.get(t.terminalId);e||(e=new Yt,ve.set(t.terminalId,e));const s=t.events.slice(-10).map(a=>({command:typeof a.data.command=="string"?a.data.command:null,error:typeof a.data.error=="string"?a.data.error:null,tool:typeof a.data.tool=="string"?a.data.tool:null,type:a.type})),n={conversationExcerpt:t.goal??"",errorCount:t.errorCount,goal:t.goal,recentEvents:s,status:t.status,toolCallCount:t.toolCallCount};(async()=>{try{const a=await e.summarize(n);ea(t.terminalId,a.text)}catch(a){console.error(`[dashboard] Summarization failed for ${t.terminalId}:`,a)}finally{t.isSummarizing=!1}})()}var na=p('<meta name="description" content="Active terminals and Claude Code sessions"/>'),ia=p("<!> Refresh",1),la=p('<div class="stat-chip stat-chip-active svelte-1uha8ag"><span class="stat-value svelte-1uha8ag"> </span> <span class="stat-label svelte-1uha8ag">active</span></div>'),ca=p('<div class="stats-bar svelte-1uha8ag"><div class="stat-chip svelte-1uha8ag"><span class="stat-value svelte-1uha8ag"> </span> <span class="stat-label svelte-1uha8ag"> </span></div> <div class="stat-chip svelte-1uha8ag"><span class="stat-value svelte-1uha8ag"> </span> <span class="stat-label svelte-1uha8ag"> </span></div> <!></div>'),da=p('<div class="loading-container"></div>'),ua=p('<div class="dashboard-section svelte-1uha8ag"><!></div>'),va=p('<div class="loading-container"></div>'),fa=p('<h3 class="section-label svelte-1uha8ag">Sessions</h3>'),ma=p('<a class="session-card"><div class="session-card-header"><div><h3 class="session-card-title"> </h3> <div class="session-card-subtitle"> </div></div> <!></div> <div class="session-stats"><span><strong> </strong> </span></div></a>'),ga=p('<div style="text-align: center; padding: 1rem;"><!></div>'),ha=p('<!> <div class="projects-container svelte-1uha8ag"></div> <!>',1),pa=p("<!> <!>",1),_a=p('<main class="main"><div class="page-header svelte-1uha8ag"><div class="page-header-content svelte-1uha8ag"><div><h1 class="page-title svelte-1uha8ag">Dashboard</h1> <p class="page-description svelte-1uha8ag">Active terminals and Claude Code sessions</p></div> <div class="page-actions svelte-1uha8ag"><!></div></div> <!></div> <!> <!></main>');function za(t,e){ze(e,!0);const s=1e4,n=20;let a=q($e([])),o=q(!1),S=!1,y=q(null),A=null,b=q(null),m=q(!1),f=q(0);const C=L($t);vt(()=>{k();const i=_t("shooter_projects");i&&(_(a,i,!0),_(o,!1)),P(),A=setInterval(()=>{r(y)?.apiKey&&r(f)<=n&&P()},s)}),ft(()=>{A&&(clearInterval(A),A=null),Qt()});function k(){try{const i=localStorage.getItem("shooter_config");if(i){const g=JSON.parse(i);bt(g)?(_(y,g,!0),Zt(r(y).apiKey)):(localStorage.removeItem("shooter_config"),_(y,null))}}catch{}}async function P(i=!1,g=!1){if(!r(y)?.apiKey||S)return;S=!0,r(a).length===0&&_(o,!0);const E=i?r(f):0;try{const G=await fetch(`${g?"/api/sessions?refresh=true&":"/api/sessions?"}limit=${n}&offset=${E}`,{headers:{Authorization:`Bearer ${r(y).apiKey}`}});if(!G.ok){_(b,`Failed to load projects (HTTP ${G.status})`);return}_(b,null);const j=await G.json();i?_(a,[...r(a),...j.projects],!0):_(a,j.projects,!0),_(f,r(a).length,!0),_(m,j.total!==void 0?r(a).length<j.total:!1,!0),St("shooter_projects",r(a))}catch(z){_(b,"Failed to load projects"),console.error("Failed to fetch sessions:",z)}finally{_(o,!1),S=!1}}async function Se(){await P(!0)}async function $(){_(o,!0),yt("shooter_projects"),await P(!1,!0)}function ye(){We("/config")}function be(i){We(`/terminals/${i}`)}function ee(){return r(a).reduce((i,g)=>i+g.sessionCount,0)}var te=_a();pt("1uha8ag",i=>{var g=na();mt(()=>{gt.title="Dashboard - Shooter"}),h(i,g)});var V=c(te),F=c(V),ae=v(c(F),2),we=c(ae);Te(we,{classes:"btn-secondary",onclick:$,get disabled(){return r(o)},children:(i,g)=>{var E=ia(),z=ge(E);wt(z,{name:"refresh",size:14}),Fe(),h(i,E)},$$slots:{default:!0}}),l(ae),l(F);var se=v(F,2);{var Ce=i=>{var g=ca(),E=c(g),z=c(E),G=c(z,!0);l(z);var j=v(z,2),Ae=c(j,!0);l(j),l(E);var ne=v(E,2),ie=c(ne),x=c(ie,!0);l(ie);var T=v(ie,2),M=c(T,!0);l(T),l(ne);var H=v(ne,2);{var le=W=>{var U=la(),N=c(U),I=c(N,!0);l(N),Fe(2),l(U),B(()=>w(I,r(C).length)),h(W,U)};D(H,W=>{r(C).length>0&&W(le)})}l(g),B((W,U)=>{w(G,r(a).length),w(Ae,r(a).length===1?"project":"projects"),w(x,W),w(M,U)},[()=>ee(),()=>ee()===1?"session":"sessions"]),h(i,g)};D(se,i=>{r(a).length>0&&i(Ce)})}l(V);var re=v(V,2);{var ke=i=>{ht(i,{get text(){return r(b)},classes:"banner-error"})};D(re,i=>{r(b)&&i(ke)})}var oe=v(re,2);{var xe=i=>{var g=da();de(g,20,()=>Array(3),Ge,(E,z)=>{Ue(E,{classes:"shimmer-card"})}),l(g),h(i,g)},d=i=>{Ve(i,{icon:"settings",title:"Configuration Required",description:"Set up your API credentials to start tracking sessions",children:(g,E)=>{Te(g,{classes:"btn-primary",onclick:ye,text:"Configure Settings"})}})},u=i=>{var g=pa(),E=ge(g);{var z=x=>{var T=ua(),M=c(T);qt(M,{get cards(){return r(C)},onCardClick:H=>{be(H.terminalId)}}),l(T),h(x,T)};D(E,x=>{r(C).length>0&&x(z)})}var G=v(E,2);{var j=x=>{var T=va();de(T,20,()=>Array(3),Ge,(M,H)=>{Ue(M,{classes:"shimmer-card"})}),l(T),h(x,T)},Ae=x=>{Ve(x,{icon:"bell",title:"No sessions yet",description:"Claude Code sessions will appear here once JSONL files are found"})},ne=L(()=>ee()===0&&r(C).length===0),ie=x=>{var T=ha(),M=ge(T);{var H=N=>{var I=fa();h(N,I)};D(M,N=>{r(C).length>0&&N(H)})}var le=v(M,2);de(le,21,()=>r(a),N=>N.id,(N,I)=>{var J=ma(),Ee=c(J),Ne=c(Ee),Ie=c(Ne),ot=c(Ie,!0);l(Ie);var qe=v(Ie,2),nt=c(qe,!0);l(qe),l(Ne);var it=v(Ne,2);{let dt=L(()=>At(r(I).lastModified));et(it,{get text(){return`Last updated ${r(dt)??""}`},classes:"pill-session-time"})}l(Ee);var Be=v(Ee,2),Ke=c(Be),Pe=c(Ke),lt=c(Pe,!0);l(Pe);var ct=v(Pe);l(Ke),l(Be),l(J),B(()=>{Oe(J,"href",`/project?id=${r(I).id??""}`),w(ot,r(I).name),w(nt,r(I).fullPath),w(lt,r(I).sessionCount),w(ct,` ${r(I).sessionCount===1?"session":"sessions"}`)}),h(N,J)}),l(le);var W=v(le,2);{var U=N=>{var I=ga(),J=c(I);Te(J,{classes:"btn-secondary",onclick:Se,text:"Load More"}),l(I),h(N,I)};D(W,N=>{r(m)&&N(U)})}h(x,T)};D(G,x=>{r(o)&&r(a).length===0?x(j):r(ne)?x(Ae,1):r(a).length>0&&x(ie,2)})}h(i,g)};D(oe,i=>{r(o)&&r(a).length===0&&r(C).length===0?i(xe):r(y)?.apiKey?i(u,-1):i(d,1)})}l(te),h(t,te),Re()}export{za as component};
@@ -1,4 +1,4 @@
1
- import{s as h,a as g,t as Be,f as A}from"../chunks/DVl0sebP.js";import{s as O,A as ke,b as _,g as n,W as Ee,X as Pe,_ as Ge,c as u,d as p,r as d,t as E,a1 as He,Y as Ne,Z as N,q as We,a0 as Ve}from"../chunks/CJFjKwJ7.js";import{i as P}from"../chunks/BfJ-f-Tu.js";import{h as Je}from"../chunks/CsgHjHGZ.js";import{g as ce}from"../chunks/YKoRJzXZ.js";import{b as ue,e as le,B as Xe,a as qe}from"../chunks/CNH2HlKj.js";import{a as Ae}from"../chunks/DDiOVAd8.js";import{g as je,i as Ze}from"../chunks/gQJcRhou.js";import{f as we}from"../chunks/BLszSzTT.js";import{S as Qe}from"../chunks/CGMJxf7r.js";import{i as et}from"../chunks/BRkqKgVG.js";import{d as tt}from"../chunks/pRcLbE0d.js";const ot="https://unpkg.com/@juspay/neurolink/dist/browser/neurolink.min.js",rt=6e4,Se=3;let Q=null,Y=null,L=0,$e=0;async function st(e,t){if(e.length===0)return{error:null,text:""};let i;try{i=await it()}catch{const o=e.map(x=>w(x.data.tool)||x.type),l=Array.from(new Set(o));return{error:"AI SDK failed to load",text:`${e.length} events: ${l.join(", ")}`}}if(!i){const o=e.map(x=>w(x.data.tool)||x.type),l=Array.from(new Set(o));return{error:"No AI provider configured",text:`${e.length} events: ${l.join(", ")}`}}const s=at(e),a=`You are a coding activity summarizer. Given these events from active Claude Code sessions, write a 1-2 sentence summary (max 150 chars) of what's happening. Be specific — mention tool names, file names, and what's being accomplished.
1
+ import{s as h,a as g,t as Be,f as A}from"../chunks/DVl0sebP.js";import{s as O,A as ke,b as _,g as n,W as Ee,X as Pe,_ as Ge,c as u,d as p,r as d,t as E,a1 as He,Y as Ne,Z as N,q as We,a0 as Ve}from"../chunks/CJFjKwJ7.js";import{i as P}from"../chunks/BfJ-f-Tu.js";import{h as Je}from"../chunks/CsgHjHGZ.js";import{g as ce}from"../chunks/DMGoTOyn.js";import{b as ue,e as le,B as Xe,a as qe}from"../chunks/CNH2HlKj.js";import{a as Ae}from"../chunks/DDiOVAd8.js";import{g as je,i as Ze}from"../chunks/gQJcRhou.js";import{f as we}from"../chunks/BLszSzTT.js";import{S as Qe}from"../chunks/CGMJxf7r.js";import{i as et}from"../chunks/BRkqKgVG.js";import{d as tt}from"../chunks/pRcLbE0d.js";const ot="https://unpkg.com/@juspay/neurolink/dist/browser/neurolink.min.js",rt=6e4,Se=3;let Q=null,Y=null,L=0,$e=0;async function st(e,t){if(e.length===0)return{error:null,text:""};let i;try{i=await it()}catch{const o=e.map(x=>w(x.data.tool)||x.type),l=Array.from(new Set(o));return{error:"AI SDK failed to load",text:`${e.length} events: ${l.join(", ")}`}}if(!i){const o=e.map(x=>w(x.data.tool)||x.type),l=Array.from(new Set(o));return{error:"No AI provider configured",text:`${e.length} events: ${l.join(", ")}`}}const s=at(e),a=`You are a coding activity summarizer. Given these events from active Claude Code sessions, write a 1-2 sentence summary (max 150 chars) of what's happening. Be specific — mention tool names, file names, and what's being accomplished.
2
2
 
3
3
  ${t?`Project: ${t}
4
4
  `:""}Events: