@juspay/shooter 1.7.1 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/hooks/notifier.cjs +481 -134
- package/bin/shooter.cjs +570 -12
- package/build/client/_app/immutable/assets/{0.B5tfAY8Y.css → 0.BZLcOr5z.css} +1 -1
- package/build/client/_app/immutable/assets/0.BZLcOr5z.css.br +0 -0
- package/build/client/_app/immutable/assets/0.BZLcOr5z.css.gz +0 -0
- package/build/client/_app/immutable/chunks/3EfvnCrr.js +1 -0
- package/build/client/_app/immutable/chunks/3EfvnCrr.js.br +0 -0
- package/build/client/_app/immutable/chunks/3EfvnCrr.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CBvZimn-.js → C2Qh_9aV.js} +1 -1
- package/build/client/_app/immutable/chunks/C2Qh_9aV.js.br +0 -0
- package/build/client/_app/immutable/chunks/C2Qh_9aV.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C2yx8lo8.js +3 -0
- package/build/client/_app/immutable/chunks/C2yx8lo8.js.br +0 -0
- package/build/client/_app/immutable/chunks/C2yx8lo8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DdpA9n1s.js +5 -0
- package/build/client/_app/immutable/chunks/DdpA9n1s.js.br +4 -0
- package/build/client/_app/immutable/chunks/DdpA9n1s.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{D347PuJK.js → klpn9j-A.js} +1 -1
- package/build/client/_app/immutable/chunks/klpn9j-A.js.br +0 -0
- package/build/client/_app/immutable/chunks/klpn9j-A.js.gz +0 -0
- package/build/client/_app/immutable/chunks/xs1Xl3_e.js +1 -0
- package/build/client/_app/immutable/chunks/xs1Xl3_e.js.br +0 -0
- package/build/client/_app/immutable/chunks/xs1Xl3_e.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.C_IPOstn.js → app.Bfisx3a0.js} +2 -2
- package/build/client/_app/immutable/entry/app.Bfisx3a0.js.br +0 -0
- package/build/client/_app/immutable/entry/app.Bfisx3a0.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BfgeeQYG.js +1 -0
- package/build/client/_app/immutable/entry/start.BfgeeQYG.js.br +2 -0
- package/build/client/_app/immutable/entry/start.BfgeeQYG.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.DRy3hSaJ.js → 0.Vg8bq-s8.js} +1 -1
- package/build/client/_app/immutable/nodes/0.Vg8bq-s8.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.Vg8bq-s8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.BL16K8Rb.js → 1.B7kXtFIl.js} +1 -1
- package/build/client/_app/immutable/nodes/1.B7kXtFIl.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.B7kXtFIl.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.iOKTlmTJ.js → 2.DVFe_SN2.js} +2 -2
- package/build/client/_app/immutable/nodes/2.DVFe_SN2.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.DVFe_SN2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.GuF9Fr8V.js → 3.Deb3vtJl.js} +3 -3
- package/build/client/_app/immutable/nodes/3.Deb3vtJl.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.Deb3vtJl.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.BN2SM61w.js +1 -0
- package/build/client/_app/immutable/nodes/5.BN2SM61w.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.BN2SM61w.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.DSC53pZZ.js → 6.CS_KYbQ7.js} +1 -1
- package/build/client/_app/immutable/nodes/6.CS_KYbQ7.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.CS_KYbQ7.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.CEiUUm74.js +4 -0
- package/build/client/_app/immutable/nodes/7.CEiUUm74.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.CEiUUm74.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.Dn1iVaxc.js → 8.DGStHrkF.js} +2 -2
- package/build/client/_app/immutable/nodes/8.DGStHrkF.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.DGStHrkF.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{9.D3nURtQJ.js → 9.CbIw97FV.js} +1 -1
- package/build/client/_app/immutable/nodes/9.CbIw97FV.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.CbIw97FV.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/{0-D82zFKZh.js → 0-ikRVFZQS.js} +3 -3
- package/build/server/chunks/{0-D82zFKZh.js.map → 0-ikRVFZQS.js.map} +1 -1
- package/build/server/chunks/{1-BmaGmZUH.js → 1-CG-fUUbt.js} +2 -2
- package/build/server/chunks/{1-BmaGmZUH.js.map → 1-CG-fUUbt.js.map} +1 -1
- package/build/server/chunks/{2-T5uLjTgt.js → 2-BaV1q6GP.js} +2 -2
- package/build/server/chunks/{2-T5uLjTgt.js.map → 2-BaV1q6GP.js.map} +1 -1
- package/build/server/chunks/{3-D6FHwoMf.js → 3-BpzQzk4m.js} +2 -2
- package/build/server/chunks/{3-D6FHwoMf.js.map → 3-BpzQzk4m.js.map} +1 -1
- package/build/server/chunks/{5-Bj49x3to.js → 5-DRhcUdp_.js} +2 -2
- package/build/server/chunks/{5-Bj49x3to.js.map → 5-DRhcUdp_.js.map} +1 -1
- package/build/server/chunks/{6-Yh_tXC7x.js → 6-Bx-SE48t.js} +2 -2
- package/build/server/chunks/{6-Yh_tXC7x.js.map → 6-Bx-SE48t.js.map} +1 -1
- package/build/server/chunks/{7-Dmz1unig.js → 7-LeGA4bt3.js} +3 -3
- package/build/server/chunks/{7-Dmz1unig.js.map → 7-LeGA4bt3.js.map} +1 -1
- package/build/server/chunks/{8-Bf6s5ssE.js → 8-CXwtG-B-.js} +2 -2
- package/build/server/chunks/{8-Bf6s5ssE.js.map → 8-CXwtG-B-.js.map} +1 -1
- package/build/server/chunks/{9-AHy0sACd.js → 9-DBztKl9o.js} +2 -2
- package/build/server/chunks/{9-AHy0sACd.js.map → 9-DBztKl9o.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-D1Iaycsm.js → _page.svelte-DpUVuiqQ.js} +3 -13
- package/build/server/chunks/_page.svelte-DpUVuiqQ.js.map +1 -0
- package/build/server/chunks/{_server.ts-A9_tRR-K.js → _server.ts-9P1PrkiL.js} +2 -2
- package/build/server/chunks/{_server.ts-A9_tRR-K.js.map → _server.ts-9P1PrkiL.js.map} +1 -1
- package/build/server/chunks/{_server.ts-G8OeADGj.js → _server.ts-BAPg2K8u.js} +5 -2
- package/build/server/chunks/_server.ts-BAPg2K8u.js.map +1 -0
- package/build/server/chunks/{_server.ts-BQarRaho.js → _server.ts-CilRds58.js} +14 -11
- package/build/server/chunks/_server.ts-CilRds58.js.map +1 -0
- package/build/server/chunks/{library-apns-Cf-E-DhM.js → library-apns-CUDtjHQk.js} +3 -2
- package/build/server/chunks/library-apns-CUDtjHQk.js.map +1 -0
- package/build/server/index.js +1 -1
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +13 -13
- package/build/server/manifest.js.map +1 -1
- package/package.json +1 -1
- package/scripts/update-checker.cjs +196 -0
- package/scripts/update-state.cjs +235 -0
- package/server.ts +55 -3
- package/src/lib/modules/client/activity/summarizer.ts +1 -1
- package/src/lib/modules/client/dashboard/summarizer.ts +1 -2
- package/src/lib/modules/client/neurolink/cdn.ts +6 -0
- package/src/lib/modules/client/terminal/LaunchSheet.svelte +5 -12
- package/src/lib/modules/server/apn/library-apns.ts +1 -0
- package/src/lib/modules/server/fcm/fcm-service.ts +1 -0
- package/src/lib/theme.css +33 -1
- package/src/lib/types/apn.ts +1 -0
- package/src/routes/api/notify/+server.ts +2 -0
- package/src/routes/api/sessions/+server.ts +16 -10
- package/src/routes/neurolink/+page.svelte +4 -6
- package/src/routes/session/[id]/+page.svelte +25 -14
- package/build/client/_app/immutable/assets/0.B5tfAY8Y.css.br +0 -0
- package/build/client/_app/immutable/assets/0.B5tfAY8Y.css.gz +0 -0
- package/build/client/_app/immutable/chunks/Bkcn25gz.js +0 -3
- package/build/client/_app/immutable/chunks/Bkcn25gz.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bkcn25gz.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CBvZimn-.js.br +0 -0
- package/build/client/_app/immutable/chunks/CBvZimn-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CRXYOhph.js +0 -5
- package/build/client/_app/immutable/chunks/CRXYOhph.js.br +0 -0
- package/build/client/_app/immutable/chunks/CRXYOhph.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D347PuJK.js.br +0 -0
- package/build/client/_app/immutable/chunks/D347PuJK.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DQM017d5.js +0 -1
- package/build/client/_app/immutable/chunks/DQM017d5.js.br +0 -0
- package/build/client/_app/immutable/chunks/DQM017d5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dqgg-a0I.js +0 -1
- package/build/client/_app/immutable/chunks/Dqgg-a0I.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dqgg-a0I.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.C_IPOstn.js.br +0 -0
- package/build/client/_app/immutable/entry/app.C_IPOstn.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BfrjAeOs.js +0 -1
- package/build/client/_app/immutable/entry/start.BfrjAeOs.js.br +0 -2
- package/build/client/_app/immutable/entry/start.BfrjAeOs.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.DRy3hSaJ.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.DRy3hSaJ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BL16K8Rb.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.BL16K8Rb.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.iOKTlmTJ.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.iOKTlmTJ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.GuF9Fr8V.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.GuF9Fr8V.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.DRvLQ5NR.js +0 -1
- package/build/client/_app/immutable/nodes/5.DRvLQ5NR.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.DRvLQ5NR.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.DSC53pZZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.DSC53pZZ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.C8lL01pY.js +0 -4
- package/build/client/_app/immutable/nodes/7.C8lL01pY.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.C8lL01pY.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.Dn1iVaxc.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.Dn1iVaxc.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.D3nURtQJ.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.D3nURtQJ.js.gz +0 -0
- package/build/server/chunks/_page.svelte-D1Iaycsm.js.map +0 -1
- package/build/server/chunks/_server.ts-BQarRaho.js.map +0 -1
- package/build/server/chunks/_server.ts-G8OeADGj.js.map +0 -1
- package/build/server/chunks/library-apns-Cf-E-DhM.js.map +0 -1
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Single source of truth for the NeuroLink browser bundle URL.
|
|
2
|
+
// Bump the version here to upgrade the SDK across all callers
|
|
3
|
+
// (activity summarizer, dashboard summarizer, /neurolink playground).
|
|
4
|
+
|
|
5
|
+
export const NEUROLINK_CDN_URL =
|
|
6
|
+
'https://unpkg.com/@juspay/neurolink@9.61.1/dist/browser/neurolink.min.js';
|
|
@@ -107,17 +107,9 @@
|
|
|
107
107
|
launching = false;
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
110
|
</script>
|
|
113
111
|
|
|
114
|
-
<Sheet
|
|
115
|
-
bind:open
|
|
116
|
-
side="bottom"
|
|
117
|
-
title="New Terminal"
|
|
118
|
-
onclose={onClose}
|
|
119
|
-
classes="launch-sheet"
|
|
120
|
-
>
|
|
112
|
+
<Sheet bind:open side="bottom" title="New Terminal" onclose={onClose} classes="launch-sheet">
|
|
121
113
|
{#snippet content()}
|
|
122
114
|
<div class="section">
|
|
123
115
|
<span class="section-label">Quick Launch</span>
|
|
@@ -126,7 +118,7 @@
|
|
|
126
118
|
<Choicebox
|
|
127
119
|
mode="radio"
|
|
128
120
|
selected={selectedPreset === i}
|
|
129
|
-
onclick={() => {
|
|
121
|
+
onclick={(): void => {
|
|
130
122
|
selectPreset(i);
|
|
131
123
|
}}
|
|
132
124
|
classes="preset-choice"
|
|
@@ -145,7 +137,7 @@
|
|
|
145
137
|
: [{ id: '', label: 'No recent projects' }]}
|
|
146
138
|
value={selectedCwd ? [selectedCwd] : projectPaths.length > 0 ? [projectPaths[0]] : ['']}
|
|
147
139
|
placeholder="Select a project"
|
|
148
|
-
onchange={(value) => {
|
|
140
|
+
onchange={(value: string[]): void => {
|
|
149
141
|
selectedCwd = value[0] || '';
|
|
150
142
|
}}
|
|
151
143
|
classes="launch-select"
|
|
@@ -193,7 +185,8 @@
|
|
|
193
185
|
--sheet-title-color: var(--text-primary);
|
|
194
186
|
--sheet-close-button-color: var(--text-secondary);
|
|
195
187
|
--sheet-close-button-hover-background: var(--component-bg-hover);
|
|
196
|
-
--sheet-content-padding: 0 var(--space-5)
|
|
188
|
+
--sheet-content-padding: 0 var(--space-5)
|
|
189
|
+
calc(var(--space-8, 32px) + env(safe-area-inset-bottom, 0px));
|
|
197
190
|
}
|
|
198
191
|
|
|
199
192
|
/* Desktop: override bottom sheet to appear as centered modal */
|
|
@@ -36,6 +36,7 @@ export async function sendFCMNotification(
|
|
|
36
36
|
project: typeof payload.data?.project === 'string' ? payload.data.project : '',
|
|
37
37
|
requestId: typeof payload.data?.requestId === 'string' ? payload.data.requestId : '',
|
|
38
38
|
source: typeof payload.data?.source === 'string' ? payload.data.source : '',
|
|
39
|
+
subtitle: payload.subtitle ?? '',
|
|
39
40
|
timestamp: new Date().toISOString(),
|
|
40
41
|
title: payload.title,
|
|
41
42
|
toolInput: payload.data?.toolInput ? JSON.stringify(payload.data.toolInput) : '',
|
package/src/lib/theme.css
CHANGED
|
@@ -631,7 +631,39 @@
|
|
|
631
631
|
flex-shrink: 0;
|
|
632
632
|
}
|
|
633
633
|
|
|
634
|
-
/* ===== Shimmer Variant Classes ===== */
|
|
634
|
+
/* ===== Shimmer Base + Variant Classes ===== */
|
|
635
|
+
|
|
636
|
+
.shimmer {
|
|
637
|
+
width: var(--shimmer-width, 100%);
|
|
638
|
+
height: var(--shimmer-height, 16px);
|
|
639
|
+
border-radius: var(--shimmer-border-radius, 4px);
|
|
640
|
+
background-color: var(--shimmer-background, var(--ds-gray-alpha-200, #e0e0e0));
|
|
641
|
+
opacity: var(--shimmer-opacity, 1);
|
|
642
|
+
overflow: hidden;
|
|
643
|
+
position: relative;
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
.shimmer::after {
|
|
647
|
+
content: '';
|
|
648
|
+
position: absolute;
|
|
649
|
+
inset: 0;
|
|
650
|
+
background: linear-gradient(
|
|
651
|
+
90deg,
|
|
652
|
+
transparent,
|
|
653
|
+
var(--shimmer-highlight, rgba(255, 255, 255, 0.08)),
|
|
654
|
+
transparent
|
|
655
|
+
);
|
|
656
|
+
animation: shimmer var(--shimmer-duration, 1.5s) infinite;
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
@keyframes shimmer {
|
|
660
|
+
0% {
|
|
661
|
+
transform: translateX(-100%);
|
|
662
|
+
}
|
|
663
|
+
100% {
|
|
664
|
+
transform: translateX(100%);
|
|
665
|
+
}
|
|
666
|
+
}
|
|
635
667
|
|
|
636
668
|
.shimmer-header {
|
|
637
669
|
--shimmer-height: 80px;
|
package/src/lib/types/apn.ts
CHANGED
|
@@ -289,6 +289,7 @@ export const POST: RequestHandler = async ({ request }) => {
|
|
|
289
289
|
const requestDeviceToken = body.deviceToken as string | undefined;
|
|
290
290
|
const message = body.message as string;
|
|
291
291
|
const title = body.title as string;
|
|
292
|
+
const subtitle = typeof body.subtitle === 'string' ? body.subtitle : undefined;
|
|
292
293
|
|
|
293
294
|
// Coerce skipPush and waitForResponse to booleans — string "false" would
|
|
294
295
|
// be truthy so we require an actual boolean, defaulting to false otherwise.
|
|
@@ -379,6 +380,7 @@ export const POST: RequestHandler = async ({ request }) => {
|
|
|
379
380
|
},
|
|
380
381
|
message: null,
|
|
381
382
|
sound: 'default' as const,
|
|
383
|
+
...(subtitle ? { subtitle } : {}),
|
|
382
384
|
title,
|
|
383
385
|
};
|
|
384
386
|
|
|
@@ -78,7 +78,9 @@ export const GET: RequestHandler = ({ request, url }) => {
|
|
|
78
78
|
|
|
79
79
|
// Resolve short project ID to full path for the readers
|
|
80
80
|
const allProjects = getMergedProjects();
|
|
81
|
-
const
|
|
81
|
+
const matchesProject = (p: ProjectGroup): boolean =>
|
|
82
|
+
p.id === projectId || p.fullPath === projectId;
|
|
83
|
+
const matchedProject = projectId ? allProjects.find(matchesProject) : undefined;
|
|
82
84
|
|
|
83
85
|
// Try Claude Code first (pass the encoded dir name for filesystem lookup)
|
|
84
86
|
const claudeProjectDir = matchedProject
|
|
@@ -90,15 +92,19 @@ export const GET: RequestHandler = ({ request, url }) => {
|
|
|
90
92
|
if (messages.length === 0) {
|
|
91
93
|
messages = getOpenCodeConversation(sessionId, offset, limit);
|
|
92
94
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
95
|
+
|
|
96
|
+
// Find session info — short-circuit when project is already resolved
|
|
97
|
+
let sessionInfo = matchedProject?.sessions.find((s) => s.id === sessionId) ?? null;
|
|
98
|
+
if (!sessionInfo) {
|
|
99
|
+
for (const project of allProjects) {
|
|
100
|
+
if (projectId && !matchesProject(project)) {
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const found = project.sessions.find((s) => s.id === sessionId);
|
|
104
|
+
if (found) {
|
|
105
|
+
sessionInfo = found;
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
102
108
|
}
|
|
103
109
|
}
|
|
104
110
|
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import { installFetchProxy } from '$lib/modules/client/neurolink/fetch-proxy';
|
|
3
|
-
import { Button, Input, Pill } from '@juspay/svelte-ui-components';
|
|
4
|
-
import { onMount } from 'svelte';
|
|
5
|
-
|
|
6
|
-
const NEUROLINK_CDN_URL = 'https://unpkg.com/@juspay/neurolink/dist/browser/neurolink.min.js';
|
|
7
|
-
|
|
8
2
|
import type { ProviderId } from '$lib/types';
|
|
9
3
|
|
|
4
|
+
import { NEUROLINK_CDN_URL } from '$lib/modules/client/neurolink/cdn';
|
|
5
|
+
import { installFetchProxy } from '$lib/modules/client/neurolink/fetch-proxy';
|
|
10
6
|
import { PROVIDERS } from '$lib/modules/client/neurolink/provider-config';
|
|
7
|
+
import { Button, Input, Pill } from '@juspay/svelte-ui-components';
|
|
8
|
+
import { onMount } from 'svelte';
|
|
11
9
|
|
|
12
10
|
const { data } = $props<{
|
|
13
11
|
data: {
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
import { page } from '$app/state';
|
|
13
13
|
import { getCached, setCache } from '$lib/modules/client/common';
|
|
14
14
|
import ChatView from '$lib/modules/client/terminal/ChatView.svelte';
|
|
15
|
-
import { Button
|
|
15
|
+
import { Button } from '@juspay/svelte-ui-components';
|
|
16
16
|
import { onMount } from 'svelte';
|
|
17
17
|
|
|
18
18
|
// --- State ---
|
|
@@ -382,8 +382,15 @@
|
|
|
382
382
|
return;
|
|
383
383
|
}
|
|
384
384
|
|
|
385
|
-
const sid = sessionId
|
|
386
|
-
const pid = projectId
|
|
385
|
+
const sid = sessionId ?? '';
|
|
386
|
+
const pid = projectId;
|
|
387
|
+
|
|
388
|
+
if (!sid) {
|
|
389
|
+
error = 'No session ID';
|
|
390
|
+
loading = false;
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
|
|
387
394
|
const queryStr = pid
|
|
388
395
|
? `id=${encodeURIComponent(sid)}&project=${encodeURIComponent(pid)}&limit=${currentLimit}`
|
|
389
396
|
: `id=${encodeURIComponent(sid)}&limit=${currentLimit}`;
|
|
@@ -420,13 +427,15 @@
|
|
|
420
427
|
}
|
|
421
428
|
|
|
422
429
|
const data = (await res.json()) as SessionViewResponse;
|
|
423
|
-
session = data.session as SessionInfo;
|
|
424
430
|
const rawMessages = Array.isArray(data.messages)
|
|
425
431
|
? (data.messages as unknown as ConversationMessage[])
|
|
426
432
|
: [];
|
|
433
|
+
setCache(`shooter_session_${sid}`, { messages: rawMessages, session: data.session });
|
|
434
|
+
session = data.session as SessionInfo;
|
|
427
435
|
messages = rawMessages;
|
|
428
436
|
hasMoreMessages = rawMessages.length >= currentLimit;
|
|
429
|
-
|
|
437
|
+
loading = false;
|
|
438
|
+
return;
|
|
430
439
|
} catch {
|
|
431
440
|
error = 'Failed to load session';
|
|
432
441
|
}
|
|
@@ -445,8 +454,11 @@
|
|
|
445
454
|
loadingMore = true;
|
|
446
455
|
try {
|
|
447
456
|
const newLimit = currentLimit + 200;
|
|
448
|
-
const sid = sessionId
|
|
449
|
-
const pid = projectId
|
|
457
|
+
const sid = sessionId ?? '';
|
|
458
|
+
const pid = projectId;
|
|
459
|
+
if (!sid) {
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
450
462
|
const queryParts = [`id=${encodeURIComponent(sid)}`, `limit=${newLimit}`];
|
|
451
463
|
if (pid) {
|
|
452
464
|
queryParts.push(`project=${encodeURIComponent(pid)}`);
|
|
@@ -548,13 +560,13 @@
|
|
|
548
560
|
|
|
549
561
|
<main class="main session-page-main">
|
|
550
562
|
{#if loading && messages.length === 0}
|
|
551
|
-
<div class="loading-container">
|
|
552
|
-
<
|
|
563
|
+
<div class="loading-container" aria-live="polite" aria-busy="true">
|
|
564
|
+
<div class="shimmer shimmer-header" aria-hidden="true"></div>
|
|
553
565
|
<div class="chat-container">
|
|
554
|
-
<
|
|
555
|
-
<
|
|
556
|
-
<
|
|
557
|
-
<
|
|
566
|
+
<div class="shimmer shimmer-bubble shimmer-bubble-user" aria-hidden="true"></div>
|
|
567
|
+
<div class="shimmer shimmer-bubble shimmer-bubble-assistant" aria-hidden="true"></div>
|
|
568
|
+
<div class="shimmer shimmer-bubble shimmer-bubble-user-short" aria-hidden="true"></div>
|
|
569
|
+
<div class="shimmer shimmer-bubble shimmer-bubble-assistant-wide" aria-hidden="true"></div>
|
|
558
570
|
</div>
|
|
559
571
|
</div>
|
|
560
572
|
{:else if error}
|
|
@@ -684,5 +696,4 @@
|
|
|
684
696
|
flex-shrink: 0;
|
|
685
697
|
border-bottom: 1px solid var(--border);
|
|
686
698
|
}
|
|
687
|
-
|
|
688
699
|
</style>
|
|
Binary file
|
|
Binary file
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{bq as Te,q as Ve,s as P,g as j,b as C,P as oe,br as vt}from"./Ce0VRwE1.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 Me(e,t,n=JSON.stringify){const r=n(t);try{sessionStorage[e]=r}catch{}}const T=globalThis.__sveltekit_1wldm9p?.base??"",xt=globalThis.__sveltekit_1wldm9p?.assets??T??"",$t="1777103949796",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 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 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(`${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 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=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]=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 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,F;const Z=new Set,He=new Map;async function Un(e,t,n){globalThis.__sveltekit_1wldm9p?.data&&globalThis.__sveltekit_1wldm9p.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?.[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: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),Me(et,$),ft(I),Me(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]??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(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: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 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 _=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"&&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,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 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={[q]: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?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)),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?.[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&&x.navigating.set(ee.current=null)});function e(t){y.url=R.url=t,x.page.set(Fe(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
|
-
`: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,x as s};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
const e=`<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
-
<path d="M23 4v6h-6M1 20v-6h6"/>
|
|
3
|
-
<path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"/>
|
|
4
|
-
</svg>
|
|
5
|
-
`;export{e as R};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{g as y}from"./gQJcRhou.js";import"./BCwT4WOg.js";const b={"https://api.anthropic.com/":"anthropic","https://api.mistral.ai/":"mistral","https://api.openai.com/":"openai","https://generativelanguage.googleapis.com/":"google-ai"};let p=!1;function O(){if(p||typeof globalThis>"u")return;p=!0;const r=globalThis.fetch.bind(globalThis);globalThis.fetch=async(e,o)=>{const i=typeof e=="string"?e:e instanceof URL?e.href:e.url,n=Object.entries(b).find(([t])=>i.startsWith(t))?.[1];if(!n)return r(e,o);const c={},a=o?.headers??(e instanceof Request?e.headers:{}),d=a instanceof Headers?a:Object.entries(a);for(const[t,g]of d){const f=t.toLowerCase();f!=="x-api-key"&&f!=="authorization"&&(c[t]=g)}let s;try{s=JSON.parse(o?.body??(e instanceof Request?await e.text():"{}"))}catch{s={}}const l=y(),h={"Content-Type":"application/json"};return l&&(h.Authorization=`Bearer ${l}`),r("/api/neurolink-proxy",{body:JSON.stringify({body:s,headers:c,provider:n,url:i}),headers:h,method:"POST"})}}export{O as i};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as n,f as i}from"./3MMtouT7.js";import{t as o}from"./Ce0VRwE1.js";import{s as m,d as c}from"./BTu-2gkj.js";var f=i("<div></div>");function g(t,e){var s=f();o(()=>{m(s,1,`shimmer ${e.classes??""??""}`,"svelte-v69ai"),c(s,"data-pw",typeof e.testId=="string"?e.testId:null)}),n(t,s)}const l=5e3;function p(t){try{sessionStorage.removeItem(t)}catch{}}function v(t,e=l){try{const s=sessionStorage.getItem(t);if(!s)return null;const{data:a,timestamp:r}=JSON.parse(s);return Date.now()-r>e?null:a}catch{return null}}function S(t,e){try{sessionStorage.setItem(t,JSON.stringify({data:e,timestamp:Date.now()}))}catch{}}export{g as S,p as c,v as g,S as s};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{l as o,a as r}from"../chunks/Bkcn25gz.js";export{o as load_css,r as start};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as q,i as K,b as H,a as E,f as P,s as V}from"../chunks/3MMtouT7.js";import{p as z,s as n,o as J,q as Q,v as W,g as t,b as r,w as _,d as g,c as b,r as c,t as X}from"../chunks/Ce0VRwE1.js";import{e as S,I as Z,B as ee,s as te,i as ae,P as I}from"../chunks/BTu-2gkj.js";import{i as se}from"../chunks/DQM017d5.js";import{P as O}from"../chunks/pRcLbE0d.js";var re=P('<div class="provider-bar svelte-sjabew"></div>'),ie=P("<div> </div>"),oe=P('<div class="page svelte-sjabew"><header class="svelte-sjabew"><h1 class="svelte-sjabew">NeuroLink</h1> <span class="version svelte-sjabew">new NeuroLink()</span> <!></header> <!> <div class="log svelte-sjabew" id="log"></div> <div class="input-bar svelte-sjabew"><!> <!></div></div>');function pe(M,p){z(p,!0);const N="https://unpkg.com/@juspay/neurolink/dist/browser/neurolink.min.js";let u=n(null),m=n(null),h=n(J([])),d=n(""),v=n(!1),f=n(!1),o=n("litellm");function i(e,a="info"){r(h,[...t(h),{text:e,type:a}],!0)}function R(){const e=globalThis.process;if(!e?.env)return;const a=e.env;p.data.litellmBaseUrl&&(a.LITELLM_BASE_URL=p.data.litellmBaseUrl),p.data.litellmModel&&(a.LITELLM_MODEL=p.data.litellmModel);const s=window.__aiProviders;s?.["google-ai"]&&(a.GOOGLE_AI_API_KEY="proxy-via-server"),s?.anthropic&&(a.ANTHROPIC_API_KEY="proxy-via-server"),s?.openai&&(a.OPENAI_API_KEY="proxy-via-server"),s?.mistral&&(a.MISTRAL_API_KEY="proxy-via-server")}Q(async()=>{$(),se(),R(),i("Loading NeuroLink from CDN..."),i(N,"dim");try{r(u,await import(N),!0),i(`Loaded! ${Object.keys(t(u)??{}).length} exports`,"pass"),r(m,new(t(u)).NeuroLink({provider:t(o)}),!0),i(`NeuroLink ready · provider: ${t(o)}`,"pass"),r(f,!0)}catch(e){i(`Failed to load: ${e instanceof Error?e.message:String(e)}`,"fail")}});function D(e){!t(u)||e===t(o)||(r(o,e,!0),r(m,new(t(u)).NeuroLink({provider:e}),!0),i(`Switched to provider: ${e}`,"dim"))}function $(){typeof globalThis.process>"u"&&(globalThis.process={cwd:()=>"/",env:{},platform:"browser",version:"v24.0.0"}),typeof globalThis.global>"u"&&(globalThis.global=globalThis)}async function j(){if(!t(d).trim()||!t(m)||t(v))return;const e=t(d).trim();r(d,""),r(v,!0),i(`> ${e}`,"user");const a=O.find(s=>s.id===t(o));if(!a){r(v,!1);return}try{const s=await t(m).generate({input:{text:e},model:a.model,provider:a.id}),l=typeof s.content=="string"?s.content:"(empty response)",x=s.usage;i(l,"ai"),i(`${a.id}/${a.model} | ${x?.total??"?"} tokens`,"dim")}catch(s){i(`Error: ${s instanceof Error?s.message:String(s)}`,"fail")}r(v,!1)}function B(e){e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),j())}var y=oe(),w=b(y),U=g(b(w),4);{var C=e=>{I(e,{text:"Connected",classes:"pill-connected"})},Y=e=>{I(e,{text:"Loading...",classes:"pill-loading"})};K(U,e=>{t(f)?e(C):e(Y,-1)})}c(w);var A=g(w,2);{var F=e=>{var a=re();S(a,21,()=>O,s=>s.id,(s,l)=>{{let x=_(()=>t(o)===t(l).id?"prov-pill--active":"");I(s,{get text(){return t(l).label},get classes(){return`prov-pill ${t(x)??""}`},onclick:()=>{D(t(l).id)}})}}),c(a),E(e,a)};K(A,e=>{t(f)&&e(F)})}var L=g(A,2);S(L,21,()=>t(h),ae,(e,a)=>{var s=ie(),l=b(s,!0);c(s),X(()=>{te(s,1,`log-entry ${t(a).type??""}`,"svelte-sjabew"),V(l,t(a).text)}),E(e,s)}),c(L);var k=g(L,2),T=b(k);{let e=_(()=>t(f)?`Ask anything... [${t(o)}]`:"Loading SDK...");Z(T,{name:"prompt",get placeholder(){return t(e)},classes:"input-prompt",get value(){return t(d)},set value(a){r(d,a,!0)}})}var G=g(T,2);{let e=_(()=>!t(f)||t(v)||!t(d).trim()),a=_(()=>t(v)?"...":"Send");ee(G,{classes:"btn-primary",onclick:j,get disabled(){return t(e)},get text(){return t(a)}})}c(k),c(y),H("keydown",k,B),E(M,y),W()}q(["keydown"]);export{pe as component};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{i as x,a as v,f as b,s as H}from"../chunks/3MMtouT7.js";import{p as ge,s as g,o as we,q as ye,v as be,y as _e,b as o,g as e,$ as Se,c as w,r as y,w as R,d as _,z as Q,t as X}from"../chunks/Ce0VRwE1.js";import{h as $e}from"../chunks/DFPEaIHz.js";import{d as Y,B as ke}from"../chunks/BTu-2gkj.js";import{p as L}from"../chunks/CBvZimn-.js";import{g as Ie,s as Z,S as W}from"../chunks/Dqgg-a0I.js";import"../chunks/BCwT4WOg.js";import{C as je}from"../chunks/BsNWiLas.js";var Ce=b('<meta name="description" content="Session conversation view"/>'),Oe=b('<div class="loading-container"><!> <div class="chat-container"><!> <!> <!> <!></div></div>'),Me=b('<div class="session-back-row svelte-1a2wdfb"><a class="back-link">← Back</a></div> <p class="error-text svelte-1a2wdfb"> </p>',1),Ne=b('<span class="resume-status svelte-1a2wdfb">Connecting...</span>'),Ae=b('<span class="resume-status svelte-1a2wdfb">Resuming session...</span>'),Pe=b('<span class="connection-dot connected svelte-1a2wdfb"></span>'),Te=b('<span class="connection-dot reconnecting svelte-1a2wdfb"></span>'),Re=b('<div class="load-earlier-row svelte-1a2wdfb"><!></div>'),We=b('<div class="session-header svelte-1a2wdfb"><div class="session-header-row svelte-1a2wdfb"><a class="back-link">← Back</a> <!></div> <h1 class="session-title svelte-1a2wdfb"> </h1></div> <div class="session-chat-container svelte-1a2wdfb"><!> <!></div>',1),De=b('<main class="main session-page-main svelte-1a2wdfb"><!></main>');function qe(ee,te){ge(te,!0);let p=g(null),a=g(we([])),I=g(!0),N=g(null),D=g(!1),A=g(!1),P=g(200),j=g(null),k=g("idle"),c=g("idle"),S=null,$=null,C=null,O=null,u=!1;const B=R(()=>L.params.id),M=R(()=>L.url.searchParams.get("project")||""),se=R(()=>e(c)==="connecting"||e(c)==="resuming");function T(){try{const t=localStorage.getItem("shooter_config");return t?JSON.parse(t):null}catch{return null}}async function q(){const t=T();if(!t)return null;try{const s=await fetch("/api/ws-ticket",{headers:{Authorization:`Bearer ${t.apiKey}`},method:"POST"});return s.ok?(await s.json()).ticket:null}catch{return null}}async function E(t,s){if(u||C&&(C.readyState===WebSocket.OPEN||C.readyState===WebSocket.CONNECTING))return;const n=await q();if(!n||u)return;o(k,"connecting");const i=window.location.protocol==="https:"?"wss:":"ws:",r=new WebSocket(`${i}//${window.location.host}${t}?ticket=${n}`);r.onopen=()=>{if(u){r.close();return}o(k,"connected"),r.send(JSON.stringify({sessionId:s,type:"subscribe"}))},r.onmessage=d=>{if(!u)try{const f=JSON.parse(d.data);ne(f)}catch{}},r.onclose=()=>{u||(o(k,"disconnected"),C=null,e(j)&&(O&&clearTimeout(O),O=setTimeout(()=>{O=null,!u&&e(j)&&E(`/ws/session/${e(j)}`,e(j))},2e3)))},r.onerror=()=>{u||o(k,"disconnected")},C=r}async function F(t){if(u)return;const s=await q();if(!s||u)return;const n=window.location.protocol==="https:"?"wss:":"ws:",i=new WebSocket(`${n}//${window.location.host}${t}?ticket=${s}`);i.onopen=()=>{if(u){i.close();return}$=i,e(c)==="ready"&&S&&(i.send(JSON.stringify({data:`${S}
|
|
2
|
-
`,type:"input"})),S=null)},i.onclose=()=>{$===i&&($=null)}}function ne(t){if(t.type==="history"){const s=t.messages||[];o(a,s.map(n=>({id:n.id,parts:n.content,role:n.role,timestamp:n.timestamp})),!0),o(D,!1),e(c)==="resuming"&&(o(c,"ready"),S&&$?.readyState===WebSocket.OPEN&&($.send(JSON.stringify({data:`${S}
|
|
3
|
-
`,type:"input"})),S=null))}else if(t.type==="message")o(a,[...e(a),{id:`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:t.content||[],role:t.role||"assistant",timestamp:t.timestamp||new Date().toISOString()}],!0);else if(t.type==="tool-use"){const s={id:t.id||`tool-${Date.now()}`,input:t.input||{},toolName:t.name,type:"tool_use"},n=e(a).length>0?e(a)[e(a).length-1]:null;n?.role==="assistant"?o(a,[...e(a).slice(0,-1),{...n,parts:[...n.parts,s]}],!0):o(a,[...e(a),{id:`tool-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[s],role:"assistant",timestamp:new Date().toISOString()}],!0)}else if(t.type==="tool-result"){const s={isError:t.isError||!1,output:t.output||"",toolUseId:t.id,type:"tool_result"},n=e(a).length>0?e(a)[e(a).length-1]:null;n?.role==="system"?o(a,[...e(a).slice(0,-1),{...n,parts:[...n.parts,s]}],!0):o(a,[...e(a),{id:`result-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[s],role:"system",timestamp:new Date().toISOString()}],!0)}else if(t.type==="thinking"){const s={content:t.text||"",type:"thinking"},n=e(a).length>0?e(a)[e(a).length-1]:null;n?.role==="assistant"?o(a,[...e(a).slice(0,-1),{...n,parts:[...n.parts,s]}],!0):o(a,[...e(a),{id:`think-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[s],role:"assistant",timestamp:new Date().toISOString()}],!0)}else t.type==="session-end"&&o(c,"idle")}async function oe(){if(!e(p)||u){o(c,"idle");return}const t=T();if(!t){o(c,"idle");return}o(c,"connecting");try{const s=e(p).source==="opencode"?"opencode":"claude",n=await fetch("/api/sessions/connect",{body:JSON.stringify({command:s,cwd:e(p).projectPath,sessionId:e(B)}),headers:{Authorization:`Bearer ${t.apiKey}`,"Content-Type":"application/json"},method:"POST"});if(!n.ok||u){o(c,"idle");return}const i=await n.json();o(j,i.terminalId,!0),o(c,"resuming"),E(i.sessionWs,i.terminalId),F(i.ws)}catch{o(c,"idle")}}function ae(t){if(t.trim()){if(e(c)==="ready"&&$?.readyState===WebSocket.OPEN){$.send(JSON.stringify({data:`${t}
|
|
4
|
-
`,type:"input"}));return}if(e(c)==="connecting"||e(c)==="resuming"){S=t;return}S=t,oe()}}async function ie(){e(a).length===0&&o(I,!0);try{const t=T();if(!t){o(N,"No configuration found. Please configure settings first."),o(I,!1);return}const s=e(B)||"",n=e(M)||"",i=n?`id=${encodeURIComponent(s)}&project=${encodeURIComponent(n)}&limit=${e(P)}`:`id=${encodeURIComponent(s)}&limit=${e(P)}`;let r=await fetch(`/api/sessions?${i}`,{headers:{Authorization:`Bearer ${t.apiKey}`}});if(r.status===404&&!n){const h=await fetch("/api/sessions",{headers:{Authorization:`Bearer ${t.apiKey}`}});if(h.ok){const K=await h.json();for(const U of K.projects||[])if((U.sessions||[]).find(z=>z.id===s)){r=await fetch(`/api/sessions?id=${encodeURIComponent(s)}&project=${encodeURIComponent(U.id)}`,{headers:{Authorization:`Bearer ${t.apiKey}`}});break}}}if(!r.ok){o(N,"Session not found"),o(I,!1);return}const d=await r.json();o(p,d.session,!0);const f=Array.isArray(d.messages)?d.messages:[];o(a,f,!0),o(D,f.length>=e(P)),Z(`shooter_session_${s}`,{messages:f,session:d.session})}catch{o(N,"Failed to load session")}o(I,!1)}async function re(){if(e(A))return;const t=T();if(t){o(A,!0);try{const s=e(P)+200,n=e(B)||"",i=e(M)||"",r=[`id=${encodeURIComponent(n)}`,`limit=${s}`];i&&r.push(`project=${encodeURIComponent(i)}`);const d=await fetch(`/api/sessions?${r.join("&")}`,{headers:{Authorization:`Bearer ${t.apiKey}`}});if(!d.ok)return;const f=await d.json(),h=Array.isArray(f.messages)?f.messages:[];o(a,h,!0),o(P,s),o(D,h.length>=s),Z(`shooter_session_${n}`,{messages:h,session:f.session})}catch{}finally{o(A,!1)}}}ye(()=>{const t=Ie(`shooter_session_${L.params.id}`);return t&&(o(p,t.session,!0),o(a,Array.isArray(t.messages)?t.messages:[],!0),o(I,!1)),ie().then(async()=>{if(!e(p)||u)return;const s=T();if(s)try{const n=e(p).source==="opencode"?"opencode":"claude",i=await fetch("/api/sessions/connect",{body:JSON.stringify({command:n,cwd:e(p).projectPath,noCreate:!0,sessionId:e(B)}),headers:{Authorization:`Bearer ${s.apiKey}`,"Content-Type":"application/json"},method:"POST"});if(i.ok&&!u){const r=await i.json();o(j,r.terminalId,!0),o(c,"resuming"),E(r.sessionWs,r.terminalId),F(r.ws)}}catch{}}),()=>{u=!0,O&&clearTimeout(O),C?.close(),$?.close()}});var J=De();$e("1a2wdfb",t=>{var s=Ce();_e(()=>{Se.title=`${(e(p)?.title||"Session")??""} - Shooter`}),v(t,s)});var ce=w(J);{var le=t=>{var s=Oe(),n=w(s);W(n,{classes:"shimmer-header"});var i=_(n,2),r=w(i);W(r,{classes:"shimmer-bubble shimmer-bubble-user"});var d=_(r,2);W(d,{classes:"shimmer-bubble shimmer-bubble-assistant"});var f=_(d,2);W(f,{classes:"shimmer-bubble shimmer-bubble-user-short"});var h=_(f,2);W(h,{classes:"shimmer-bubble shimmer-bubble-assistant-wide"}),y(i),y(s),v(t,s)},de=t=>{var s=Me(),n=Q(s),i=w(n);y(n);var r=_(n,2),d=w(r,!0);y(r),X(()=>{Y(i,"href",e(M)?`/project?id=${e(M)}`:"/"),H(d,e(N))}),v(t,s)},ue=t=>{var s=We(),n=Q(s),i=w(n),r=w(i),d=_(r,2);{var f=l=>{var m=Ne();v(l,m)},h=l=>{var m=Ae();v(l,m)},K=l=>{var m=Pe();v(l,m)},U=l=>{var m=Te();v(l,m)};x(d,l=>{e(c)==="connecting"?l(f):e(c)==="resuming"?l(h,1):e(k)==="connected"?l(K,2):e(k)==="reconnecting"&&l(U,3)})}y(i);var z=_(i,2),fe=w(z,!0);y(z),y(n);var G=_(n,2),V=w(G);{var pe=l=>{var m=Re(),he=w(m);{let ve=R(()=>e(A)?"Loading...":"Load earlier messages");ke(he,{get text(){return e(ve)},classes:"btn-ghost btn-sm",get disabled(){return e(A)},onclick:re})}y(m),v(l,m)};x(V,l=>{e(D)&&l(pe)})}var me=_(V,2);{let l=R(()=>[...e(a)].reverse());je(me,{get messages(){return e(l)},newestFirst:!0,get connectionState(){return e(k)},showInput:!0,get sendDisabled(){return e(se)},onSendInput:ae,sessionEnded:!1})}y(G),X(()=>{Y(r,"href",e(M)?`/project?id=${e(M)}`:"/"),H(fe,e(p).title)}),v(t,s)};x(ce,t=>{e(I)&&e(a).length===0?t(le):e(N)?t(de,1):e(p)&&t(ue,2)})}y(J),v(ee,J),be()}export{qe as component};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_page.svelte-D1Iaycsm.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/session/_id_/_page.svelte.js"],"sourcesContent":["import { h as head, e as escape_html } from \"../../../../chunks/index.js\";\nimport \"../../../../chunks/client2.js\";\nimport \"../../../../chunks/markdown.js\";\n/* empty css */\nimport { S as Shimmer } from \"../../../../chunks/Shimmer.js\";\n/* empty css */\nfunction _page($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let messages = [];\n head(\"1a2wdfb\", $$renderer2, ($$renderer3) => {\n $$renderer3.title(($$renderer4) => {\n $$renderer4.push(`<title>${escape_html(\"Session\")} - Shooter</title>`);\n });\n $$renderer3.push(`<meta name=\"description\" content=\"Session conversation view\"/>`);\n });\n $$renderer2.push(`<main class=\"main session-page-main svelte-1a2wdfb\">`);\n if (messages.length === 0) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"loading-container\">`);\n Shimmer($$renderer2, { classes: \"shimmer-header\" });\n $$renderer2.push(`<!----> <div class=\"chat-container\">`);\n Shimmer($$renderer2, { classes: \"shimmer-bubble shimmer-bubble-user\" });\n $$renderer2.push(`<!----> `);\n Shimmer($$renderer2, { classes: \"shimmer-bubble shimmer-bubble-assistant\" });\n $$renderer2.push(`<!----> `);\n Shimmer($$renderer2, { classes: \"shimmer-bubble shimmer-bubble-user-short\" });\n $$renderer2.push(`<!----> `);\n Shimmer($$renderer2, { classes: \"shimmer-bubble shimmer-bubble-assistant-wide\" });\n $$renderer2.push(`<!----></div></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></main>`);\n });\n}\nexport {\n _page as default\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAKA;AACA,SAAS,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE;AACpC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,KAAK;AACxC,IAAI,IAAI,QAAQ,GAAG,EAAE;AACrB,IAAI,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,WAAW,KAAK;AAClD,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK;AACzC,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAC9E,MAAM,CAAC,CAAC;AACR,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,8DAA8D,CAAC,CAAC;AACxF,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,oDAAoD,CAAC,CAAC;AAC5E,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AACnC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,+BAA+B,CAAC,CAAC;AACzD,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;AACzD,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,oCAAoC,CAAC,CAAC;AAC9D,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC;AAC7E,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAClC,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;AAClF,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAClC,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC;AACnF,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAClC,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,8CAA8C,EAAE,CAAC;AACvF,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAC7C,IAAI,CAAC,MAAM;AACX,MAAM,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACpC,IAAI;AACJ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;AACvC,EAAE,CAAC,CAAC;AACJ;;;;"}
|