spiracha 1.0.0 → 1.1.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/AGENTS.md +28 -1
- package/README.md +47 -7
- package/apps/ui/AGENTS.md +70 -0
- package/apps/ui/README.md +72 -0
- package/apps/ui/dist/client/assets/_threadId-CAIeH5mq.js +1 -0
- package/apps/ui/dist/client/assets/analytics-BjYaHqXk.js +1 -0
- package/apps/ui/dist/client/assets/checkbox-wPoGG3of.js +1 -0
- package/apps/ui/dist/client/assets/data-table-6yDgAdtf.js +4 -0
- package/apps/ui/dist/client/assets/delete-confirm-dialog-DJUAk7ha.js +11 -0
- package/apps/ui/dist/client/assets/download-BhWd-Pm5.js +1 -0
- package/apps/ui/dist/client/assets/es2015-BlyMI4CF.js +41 -0
- package/apps/ui/dist/client/assets/formatters-BxjZwWSE.js +1 -0
- package/apps/ui/dist/client/assets/index-T01rPkb4.js +22 -0
- package/apps/ui/dist/client/assets/input-B3YN8gzg.js +1 -0
- package/apps/ui/dist/client/assets/metric-card-BWW7TWER.js +1 -0
- package/apps/ui/dist/client/assets/page-header-BZ8Gnxgs.js +1 -0
- package/apps/ui/dist/client/assets/projects._project-B7XcpoLt.js +1 -0
- package/apps/ui/dist/client/assets/projects._project-EfBhCHPY.js +1 -0
- package/apps/ui/dist/client/assets/projects.index-4vfIwLjw.js +1 -0
- package/apps/ui/dist/client/assets/projects.index-DzEZ4pAJ.js +1 -0
- package/apps/ui/dist/client/assets/routes-CWCCZykE.js +1 -0
- package/apps/ui/dist/client/assets/select-DLXGsyZ4.js +1 -0
- package/apps/ui/dist/client/assets/settings-b0Xthfae.js +1 -0
- package/apps/ui/dist/client/assets/styles-8Wtc8YJw.css +1 -0
- package/apps/ui/dist/client/assets/threads._threadId-CgtoCqTb.js +1 -0
- package/apps/ui/dist/client/assets/threads._threadId-DBiDb38K.js +7 -0
- package/apps/ui/dist/client/favicon.ico +0 -0
- package/apps/ui/dist/client/logo192.png +0 -0
- package/apps/ui/dist/client/logo512.png +0 -0
- package/apps/ui/dist/client/manifest.json +25 -0
- package/apps/ui/dist/client/robots.txt +3 -0
- package/apps/ui/dist/server/assets/__23tanstack-start-plugin-adapters-BzCA6dXo.js +5 -0
- package/apps/ui/dist/server/assets/_tanstack-start-manifest_v-BjsXNYgm.js +99 -0
- package/apps/ui/dist/server/assets/_threadId-B6SrBR9E.js +6 -0
- package/apps/ui/dist/server/assets/analytics-Br_fZB6a.js +139 -0
- package/apps/ui/dist/server/assets/button-CmTDnzOn.js +46 -0
- package/apps/ui/dist/server/assets/checkbox-C0hovF41.js +19 -0
- package/apps/ui/dist/server/assets/codex-queries-CAF6HYiG.js +109 -0
- package/apps/ui/dist/server/assets/codex-server-Cqh0hb93.js +1995 -0
- package/apps/ui/dist/server/assets/data-table-Cdct823O.js +189 -0
- package/apps/ui/dist/server/assets/delete-confirm-dialog-CWqcTXTF.js +139 -0
- package/apps/ui/dist/server/assets/download-CzHmFWGk.js +286 -0
- package/apps/ui/dist/server/assets/formatters-B6o5pTY9.js +72 -0
- package/apps/ui/dist/server/assets/input-B4tEzctc.js +46 -0
- package/apps/ui/dist/server/assets/loading-panel-DbLdvjtR.js +27 -0
- package/apps/ui/dist/server/assets/metric-card-ByEeLu0r.js +23 -0
- package/apps/ui/dist/server/assets/page-header-CxdZM86z.js +25 -0
- package/apps/ui/dist/server/assets/path-transforms-DD1e7rhY.js +31 -0
- package/apps/ui/dist/server/assets/projects._project-Bwf6iJC-.js +335 -0
- package/apps/ui/dist/server/assets/projects._project-CLSohrBp.js +26 -0
- package/apps/ui/dist/server/assets/projects._project-DdVSdfPe.js +18 -0
- package/apps/ui/dist/server/assets/projects.index-CaplpeMy.js +26 -0
- package/apps/ui/dist/server/assets/projects.index-DKeVeqUZ.js +171 -0
- package/apps/ui/dist/server/assets/router-ve2Hrl2Y.js +307 -0
- package/apps/ui/dist/server/assets/routes-BJyx5OmO.js +34 -0
- package/apps/ui/dist/server/assets/routes-pkOwjjYc.js +168 -0
- package/apps/ui/dist/server/assets/select-GW76p-ld.js +76 -0
- package/apps/ui/dist/server/assets/settings-MvWDgc1u.js +100 -0
- package/apps/ui/dist/server/assets/settings-store-DpEJEQ7M.js +52 -0
- package/apps/ui/dist/server/assets/sqlite-error-LZDrnxdd.js +13 -0
- package/apps/ui/dist/server/assets/start-BAvbjjfs.js +4 -0
- package/apps/ui/dist/server/assets/threads._threadId-BSSK4nkI.js +26 -0
- package/apps/ui/dist/server/assets/threads._threadId-D3PYZIwl.js +18 -0
- package/apps/ui/dist/server/assets/threads._threadId-D3xaWM86.js +1037 -0
- package/apps/ui/dist/server/assets/utils-C_uf36nf.js +8 -0
- package/apps/ui/dist/server/server.js +5678 -0
- package/package.json +47 -7
- package/src/export-chats.ts +1 -14
- package/src/lib/codex-analytics.ts +100 -0
- package/src/lib/codex-browser-db.ts +518 -0
- package/src/lib/codex-browser-export.ts +418 -0
- package/src/lib/codex-browser-types.ts +224 -0
- package/src/lib/codex-exporter-cli.ts +5 -0
- package/src/lib/codex-exporter-transcript.ts +143 -32
- package/src/lib/codex-exporter-types.ts +8 -0
- package/src/lib/codex-thread-cache.ts +58 -0
- package/src/lib/codex-thread-parser.ts +604 -0
- package/src/lib/interactive-cli.ts +5 -13
- package/src/lib/native-open.ts +54 -0
- package/src/lib/path-transforms.ts +45 -0
- package/src/lib/shared.ts +37 -1
- package/src/lib/sqlite-error.ts +14 -0
- package/src/lib/sqlite-retry.ts +39 -0
- package/src/lib/ui-cache.ts +96 -0
- package/src/lib/ui-export-files.ts +77 -0
- package/src/mcp-server.ts +1 -0
- package/src/spiracha.ts +14 -1
- package/src/ui-cli.ts +310 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { i as projectsQueryOptions, t as analyticsQueryOptions } from "./codex-queries-CAF6HYiG.js";
|
|
2
|
+
import { t as DataTable } from "./data-table-Cdct823O.js";
|
|
3
|
+
import { t as MetricCard } from "./metric-card-ByEeLu0r.js";
|
|
4
|
+
import { t as PageHeader } from "./page-header-CxdZM86z.js";
|
|
5
|
+
import { a as SelectValue, i as SelectTrigger, n as SelectContent, r as SelectItem, t as Select } from "./select-GW76p-ld.js";
|
|
6
|
+
import { o as formatNumber, s as formatTokens } from "./formatters-B6o5pTY9.js";
|
|
7
|
+
import { startTransition, useState } from "react";
|
|
8
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
import { useSuspenseQuery } from "@tanstack/react-query";
|
|
10
|
+
import { createColumnHelper } from "@tanstack/react-table";
|
|
11
|
+
//#region src/routes/analytics.tsx?tsr-split=component
|
|
12
|
+
var toolUsageColumnHelper = createColumnHelper();
|
|
13
|
+
var toolUsageColumns = [toolUsageColumnHelper.accessor("name", {
|
|
14
|
+
cell: (info) => /* @__PURE__ */ jsx("span", {
|
|
15
|
+
className: "font-mono text-sm",
|
|
16
|
+
children: info.getValue()
|
|
17
|
+
}),
|
|
18
|
+
header: "Tool"
|
|
19
|
+
}), toolUsageColumnHelper.accessor("count", {
|
|
20
|
+
cell: (info) => /* @__PURE__ */ jsx("span", {
|
|
21
|
+
className: "font-mono text-sm",
|
|
22
|
+
children: formatNumber(info.getValue())
|
|
23
|
+
}),
|
|
24
|
+
header: "Calls"
|
|
25
|
+
})];
|
|
26
|
+
var modelColumnHelper = createColumnHelper();
|
|
27
|
+
var modelColumns = [
|
|
28
|
+
modelColumnHelper.accessor("model", {
|
|
29
|
+
cell: (info) => /* @__PURE__ */ jsx("span", {
|
|
30
|
+
className: "font-mono text-sm",
|
|
31
|
+
children: info.getValue()
|
|
32
|
+
}),
|
|
33
|
+
header: "Model"
|
|
34
|
+
}),
|
|
35
|
+
modelColumnHelper.accessor("threadCount", {
|
|
36
|
+
cell: (info) => /* @__PURE__ */ jsx("span", {
|
|
37
|
+
className: "font-mono text-sm",
|
|
38
|
+
children: formatNumber(info.getValue())
|
|
39
|
+
}),
|
|
40
|
+
header: "Threads"
|
|
41
|
+
}),
|
|
42
|
+
modelColumnHelper.accessor("totalTokens", {
|
|
43
|
+
cell: (info) => /* @__PURE__ */ jsx("span", {
|
|
44
|
+
className: "font-mono text-sm",
|
|
45
|
+
children: formatTokens(info.getValue())
|
|
46
|
+
}),
|
|
47
|
+
header: "Tokens"
|
|
48
|
+
})
|
|
49
|
+
];
|
|
50
|
+
function AnalyticsPage() {
|
|
51
|
+
const projects = useSuspenseQuery(projectsQueryOptions()).data;
|
|
52
|
+
const [selectedProject, setSelectedProject] = useState(null);
|
|
53
|
+
const analytics = useSuspenseQuery(analyticsQueryOptions(selectedProject)).data;
|
|
54
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
55
|
+
className: "space-y-6",
|
|
56
|
+
children: [
|
|
57
|
+
/* @__PURE__ */ jsx(PageHeader, {
|
|
58
|
+
actions: /* @__PURE__ */ jsxs(Select, {
|
|
59
|
+
value: selectedProject ?? "__all__",
|
|
60
|
+
onValueChange: (value) => {
|
|
61
|
+
startTransition(() => {
|
|
62
|
+
setSelectedProject(value === "__all__" ? null : value);
|
|
63
|
+
});
|
|
64
|
+
},
|
|
65
|
+
children: [/* @__PURE__ */ jsx(SelectTrigger, {
|
|
66
|
+
className: "h-10 w-full rounded-full border-[var(--border)] bg-[var(--panel)] sm:w-[15rem]",
|
|
67
|
+
children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Filter by project" })
|
|
68
|
+
}), /* @__PURE__ */ jsxs(SelectContent, { children: [/* @__PURE__ */ jsx(SelectItem, {
|
|
69
|
+
value: "__all__",
|
|
70
|
+
children: "All projects"
|
|
71
|
+
}), projects.map((project) => /* @__PURE__ */ jsx(SelectItem, {
|
|
72
|
+
value: project.name,
|
|
73
|
+
children: project.name
|
|
74
|
+
}, project.name))] })]
|
|
75
|
+
}),
|
|
76
|
+
eyebrow: "Analytics",
|
|
77
|
+
subtitle: "Inspect token load, tool-call distribution, and project-scoped usage patterns to understand where Codex is spending effort.",
|
|
78
|
+
title: "Analytics"
|
|
79
|
+
}),
|
|
80
|
+
/* @__PURE__ */ jsxs("div", {
|
|
81
|
+
className: "grid gap-4 md:grid-cols-2 xl:grid-cols-5",
|
|
82
|
+
children: [
|
|
83
|
+
/* @__PURE__ */ jsx(MetricCard, {
|
|
84
|
+
label: "Threads",
|
|
85
|
+
value: formatNumber(analytics.summary.totalThreads)
|
|
86
|
+
}),
|
|
87
|
+
/* @__PURE__ */ jsx(MetricCard, {
|
|
88
|
+
label: "Projects",
|
|
89
|
+
value: formatNumber(analytics.summary.totalProjects)
|
|
90
|
+
}),
|
|
91
|
+
/* @__PURE__ */ jsx(MetricCard, {
|
|
92
|
+
label: "Tokens",
|
|
93
|
+
value: formatTokens(analytics.summary.totalTokens)
|
|
94
|
+
}),
|
|
95
|
+
/* @__PURE__ */ jsx(MetricCard, {
|
|
96
|
+
label: "Average per thread",
|
|
97
|
+
value: formatTokens(Math.round(analytics.summary.averageTokensPerThread))
|
|
98
|
+
}),
|
|
99
|
+
/* @__PURE__ */ jsx(MetricCard, {
|
|
100
|
+
label: "Web search threads",
|
|
101
|
+
value: formatNumber(analytics.summary.threadsWithWebSearch)
|
|
102
|
+
})
|
|
103
|
+
]
|
|
104
|
+
}),
|
|
105
|
+
/* @__PURE__ */ jsxs("div", {
|
|
106
|
+
className: "grid gap-4 xl:grid-cols-2",
|
|
107
|
+
children: [/* @__PURE__ */ jsxs("section", {
|
|
108
|
+
className: "space-y-4",
|
|
109
|
+
children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h3", {
|
|
110
|
+
className: "font-semibold text-sm",
|
|
111
|
+
children: "Most frequent tool calls"
|
|
112
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
113
|
+
className: "mt-1 text-[var(--muted-foreground)] text-sm",
|
|
114
|
+
children: "Useful for future prompt and tool optimization work."
|
|
115
|
+
})] }), /* @__PURE__ */ jsx(DataTable, {
|
|
116
|
+
columns: toolUsageColumns,
|
|
117
|
+
data: analytics.toolUsage,
|
|
118
|
+
emptyMessage: "No tool calls recorded."
|
|
119
|
+
})]
|
|
120
|
+
}), /* @__PURE__ */ jsxs("section", {
|
|
121
|
+
className: "space-y-4",
|
|
122
|
+
children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h3", {
|
|
123
|
+
className: "font-semibold text-sm",
|
|
124
|
+
children: "Model token breakdown"
|
|
125
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
126
|
+
className: "mt-1 text-[var(--muted-foreground)] text-sm",
|
|
127
|
+
children: "Compare model usage and token concentration within the current project scope."
|
|
128
|
+
})] }), /* @__PURE__ */ jsx(DataTable, {
|
|
129
|
+
columns: modelColumns,
|
|
130
|
+
data: analytics.modelsByTokens,
|
|
131
|
+
emptyMessage: "No model usage recorded."
|
|
132
|
+
})]
|
|
133
|
+
})]
|
|
134
|
+
})
|
|
135
|
+
]
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
//#endregion
|
|
139
|
+
export { AnalyticsPage as component };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { t as cn } from "./utils-C_uf36nf.js";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { cva } from "class-variance-authority";
|
|
4
|
+
import { Slot } from "radix-ui";
|
|
5
|
+
//#region src/components/ui/button.tsx
|
|
6
|
+
var buttonVariants = cva("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
|
|
7
|
+
defaultVariants: {
|
|
8
|
+
size: "default",
|
|
9
|
+
variant: "default"
|
|
10
|
+
},
|
|
11
|
+
variants: {
|
|
12
|
+
size: {
|
|
13
|
+
default: "h-9 px-4 py-2 has-[>svg]:px-3",
|
|
14
|
+
icon: "size-9",
|
|
15
|
+
"icon-lg": "size-10",
|
|
16
|
+
"icon-sm": "size-8",
|
|
17
|
+
"icon-xs": "size-6 rounded-md [&_svg:not([class*='size-'])]:size-3",
|
|
18
|
+
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
|
|
19
|
+
sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
|
|
20
|
+
xs: "h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3"
|
|
21
|
+
},
|
|
22
|
+
variant: {
|
|
23
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
24
|
+
destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
|
|
25
|
+
ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
|
|
26
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
27
|
+
outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
|
|
28
|
+
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
function Button({ className, variant = "default", size = "default", asChild = false, ...props }) {
|
|
33
|
+
return /* @__PURE__ */ jsx(asChild ? Slot.Root : "button", {
|
|
34
|
+
"data-slot": "button",
|
|
35
|
+
"data-variant": variant,
|
|
36
|
+
"data-size": size,
|
|
37
|
+
className: cn(buttonVariants({
|
|
38
|
+
className,
|
|
39
|
+
size,
|
|
40
|
+
variant
|
|
41
|
+
})),
|
|
42
|
+
...props
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
export { Button as t };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { t as cn } from "./utils-C_uf36nf.js";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { CheckIcon } from "lucide-react";
|
|
4
|
+
import { Checkbox } from "radix-ui";
|
|
5
|
+
//#region src/components/ui/checkbox.tsx
|
|
6
|
+
function Checkbox$1({ className, ...props }) {
|
|
7
|
+
return /* @__PURE__ */ jsx(Checkbox.Root, {
|
|
8
|
+
"data-slot": "checkbox",
|
|
9
|
+
className: cn("peer size-4 shrink-0 rounded-[4px] border border-input shadow-xs outline-none transition-shadow focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-white dark:bg-input/30 dark:data-[state=checked]:bg-primary dark:data-[state=checked]:text-primary-foreground dark:aria-invalid:ring-destructive/40", className),
|
|
10
|
+
...props,
|
|
11
|
+
children: /* @__PURE__ */ jsx(Checkbox.Indicator, {
|
|
12
|
+
"data-slot": "checkbox-indicator",
|
|
13
|
+
className: "grid place-content-center text-current transition-none",
|
|
14
|
+
children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5" })
|
|
15
|
+
})
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { Checkbox$1 as t };
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { n as TSS_SERVER_FUNCTION, r as getServerFnById, t as createServerFn } from "../server.js";
|
|
2
|
+
import { t as isRetryableSqliteError } from "./sqlite-error-LZDrnxdd.js";
|
|
3
|
+
import { queryOptions } from "@tanstack/react-query";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
//#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.3/node_modules/@tanstack/start-server-core/dist/esm/createSsrRpc.js
|
|
6
|
+
var createSsrRpc = (functionId) => {
|
|
7
|
+
const url = "/_serverFn/" + functionId;
|
|
8
|
+
const serverFnMeta = { id: functionId };
|
|
9
|
+
const fn = async (...args) => {
|
|
10
|
+
return (await getServerFnById(functionId, { origin: "server" }))(...args);
|
|
11
|
+
};
|
|
12
|
+
return Object.assign(fn, {
|
|
13
|
+
url,
|
|
14
|
+
serverFnMeta,
|
|
15
|
+
[TSS_SERVER_FUNCTION]: true
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
//#region src/lib/codex-server.ts
|
|
20
|
+
var projectSchema = z.object({ project: z.string().min(1) });
|
|
21
|
+
var deleteProjectSchema = z.object({
|
|
22
|
+
deleteSessionFiles: z.boolean().default(false),
|
|
23
|
+
project: z.string().min(1)
|
|
24
|
+
});
|
|
25
|
+
var threadSchema = z.object({ threadId: z.string().min(1) });
|
|
26
|
+
var deleteThreadSchema = z.object({
|
|
27
|
+
deleteSessionFiles: z.boolean().default(false),
|
|
28
|
+
threadId: z.string().min(1)
|
|
29
|
+
});
|
|
30
|
+
var deleteThreadsSchema = z.object({
|
|
31
|
+
deleteSessionFiles: z.boolean().default(false),
|
|
32
|
+
threadIds: z.array(z.string().min(1)).min(1)
|
|
33
|
+
});
|
|
34
|
+
var analyticsSchema = z.object({ project: z.string().min(1).nullable() });
|
|
35
|
+
var exportSchema = z.object({
|
|
36
|
+
convertToProjectRoot: z.boolean(),
|
|
37
|
+
includeCommentary: z.boolean(),
|
|
38
|
+
includeTools: z.boolean(),
|
|
39
|
+
optimized: z.boolean(),
|
|
40
|
+
outputFormat: z.enum(["md", "txt"]),
|
|
41
|
+
redactUsername: z.boolean(),
|
|
42
|
+
threadId: z.string().min(1)
|
|
43
|
+
});
|
|
44
|
+
var exportThreadsSchema = z.object({
|
|
45
|
+
convertToProjectRoot: z.boolean(),
|
|
46
|
+
includeCommentary: z.boolean(),
|
|
47
|
+
includeTools: z.boolean(),
|
|
48
|
+
optimized: z.boolean(),
|
|
49
|
+
outputFormat: z.enum(["md", "txt"]),
|
|
50
|
+
redactUsername: z.boolean(),
|
|
51
|
+
threadIds: z.array(z.string().min(1)).min(1)
|
|
52
|
+
});
|
|
53
|
+
var getDashboardSummaryFn = createServerFn({ method: "GET" }).handler(createSsrRpc("792690638a3b10035a5b7368c3d98bdc70cbfe1e36a4aa5f45b1c49b8b1025b0"));
|
|
54
|
+
var listProjectsFn = createServerFn({ method: "GET" }).handler(createSsrRpc("ccefccb816ba13508f23db4e31067b3403e750225257592d3ae11071ffc3fd6f"));
|
|
55
|
+
var listProjectThreadsFn = createServerFn({ method: "GET" }).inputValidator(projectSchema).handler(createSsrRpc("59fb2cb4d60c8e7d47e0afcc914ee6f9d9f4bf076c8e66eab1693066753655b3"));
|
|
56
|
+
var getThreadSnapshotFn = createServerFn({ method: "GET" }).inputValidator(threadSchema).handler(createSsrRpc("72991e2b6e0adbf8d63bb8b139dad88a00b77b7030ec28ceac36c3cce7846b4c"));
|
|
57
|
+
var getThreadTranscriptFn = createServerFn({ method: "GET" }).inputValidator(threadSchema).handler(createSsrRpc("5da27045f7e28ded6353bc16aace284af7ef1b4010ef04d0186a6feadb466497"));
|
|
58
|
+
var getAnalyticsFn = createServerFn({ method: "GET" }).inputValidator(analyticsSchema).handler(createSsrRpc("4712520da0f07bbd1f0907e5a162fe518516ff4caca3fd23876cc65539d87d7a"));
|
|
59
|
+
var exportThreadFn = createServerFn({ method: "POST" }).inputValidator(exportSchema).handler(createSsrRpc("0814663c3bdc58135f97d210d145ef0be5ca54ef9a5f1e3030be9b1bfc901e30"));
|
|
60
|
+
var exportThreadsFn = createServerFn({ method: "POST" }).inputValidator(exportThreadsSchema).handler(createSsrRpc("b4e15c006e9a277470958bb008f89b5b0acc7256109581de44cf17d587d174a5"));
|
|
61
|
+
var deleteThreadFn = createServerFn({ method: "POST" }).inputValidator(deleteThreadSchema).handler(createSsrRpc("29727b7ad5b8fe42e83817376653e064d9fe8888799f056b2e59296b3396568b"));
|
|
62
|
+
var deleteThreadsFn = createServerFn({ method: "POST" }).inputValidator(deleteThreadsSchema).handler(createSsrRpc("96aa60bf7dd9b5bde415bcf3ad6f6955a975eecd9aa0516cf401cc39bebebe6c"));
|
|
63
|
+
var deleteProjectFn = createServerFn({ method: "POST" }).inputValidator(deleteProjectSchema).handler(createSsrRpc("164ee82cdd565ed96591a64312f0f7bd961040baf066a89d9f5636330d11360b"));
|
|
64
|
+
//#endregion
|
|
65
|
+
//#region src/lib/codex-queries.ts
|
|
66
|
+
var retrySqliteQuery = (failureCount, error) => {
|
|
67
|
+
return failureCount < 3 && isRetryableSqliteError(error);
|
|
68
|
+
};
|
|
69
|
+
var retryDelay = (attemptIndex) => {
|
|
70
|
+
return [150, 400][attemptIndex] ?? 800;
|
|
71
|
+
};
|
|
72
|
+
var dashboardQueryOptions = () => queryOptions({
|
|
73
|
+
queryFn: () => getDashboardSummaryFn(),
|
|
74
|
+
queryKey: ["dashboard"],
|
|
75
|
+
retry: retrySqliteQuery,
|
|
76
|
+
retryDelay
|
|
77
|
+
});
|
|
78
|
+
var projectsQueryOptions = () => queryOptions({
|
|
79
|
+
queryFn: () => listProjectsFn(),
|
|
80
|
+
queryKey: ["projects"],
|
|
81
|
+
retry: retrySqliteQuery,
|
|
82
|
+
retryDelay
|
|
83
|
+
});
|
|
84
|
+
var projectThreadsQueryOptions = (project) => queryOptions({
|
|
85
|
+
queryFn: () => listProjectThreadsFn({ data: { project } }),
|
|
86
|
+
queryKey: ["project-threads", project],
|
|
87
|
+
retry: retrySqliteQuery,
|
|
88
|
+
retryDelay
|
|
89
|
+
});
|
|
90
|
+
var threadSnapshotQueryOptions = (threadId) => queryOptions({
|
|
91
|
+
queryFn: () => getThreadSnapshotFn({ data: { threadId } }),
|
|
92
|
+
queryKey: ["thread", threadId],
|
|
93
|
+
retry: retrySqliteQuery,
|
|
94
|
+
retryDelay
|
|
95
|
+
});
|
|
96
|
+
var threadTranscriptQueryOptions = (threadId) => queryOptions({
|
|
97
|
+
queryFn: () => getThreadTranscriptFn({ data: { threadId } }),
|
|
98
|
+
queryKey: ["thread-transcript", threadId],
|
|
99
|
+
retry: retrySqliteQuery,
|
|
100
|
+
retryDelay
|
|
101
|
+
});
|
|
102
|
+
var analyticsQueryOptions = (project) => queryOptions({
|
|
103
|
+
queryFn: () => getAnalyticsFn({ data: { project } }),
|
|
104
|
+
queryKey: ["analytics", project ?? "all"],
|
|
105
|
+
retry: retrySqliteQuery,
|
|
106
|
+
retryDelay
|
|
107
|
+
});
|
|
108
|
+
//#endregion
|
|
109
|
+
export { threadSnapshotQueryOptions as a, deleteThreadFn as c, exportThreadsFn as d, projectsQueryOptions as i, deleteThreadsFn as l, dashboardQueryOptions as n, threadTranscriptQueryOptions as o, projectThreadsQueryOptions as r, deleteProjectFn as s, analyticsQueryOptions as t, exportThreadFn as u };
|