diff --git a/frontend/package.json b/frontend/package.json
index 633ef73254..6ab1a25e65 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -116,6 +116,7 @@
"react": "^19.1.1",
"react-day-picker": "8.10.1",
"react-dom": "^19.1.1",
+ "react-error-boundary": "^6.0.3",
"react-hook-form": "^7.62.0",
"react-inspector": "^6.0.2",
"react-resizable-panels": "^2.1.9",
diff --git a/frontend/src/app/data-providers/engine-data-provider.tsx b/frontend/src/app/data-providers/engine-data-provider.tsx
index 1cb3095eb5..8f6f4e8cc8 100644
--- a/frontend/src/app/data-providers/engine-data-provider.tsx
+++ b/frontend/src/app/data-providers/engine-data-provider.tsx
@@ -646,7 +646,10 @@ export const createNamespaceContext = ({
const config = response.runnerConfigs[opts.name!];
if (!config) {
- throw new Error("Runner config not found");
+ throw new FetchError(
+ "Provider Config not found",
+ "The specified provider configuration could not be found.",
+ );
}
return config;
@@ -674,6 +677,15 @@ export const createNamespaceContext = ({
};
};
+class FetchError extends Error {
+ constructor(
+ message: string,
+ public description: string,
+ ) {
+ super(message);
+ }
+}
+
function transformActor(a: Rivet.Actor): Actor {
return {
id: a.actorId as ActorId,
diff --git a/frontend/src/app/dialogs/connect-manual-frame.tsx b/frontend/src/app/dialogs/connect-manual-frame.tsx
index 50f352c86c..6f18666815 100644
--- a/frontend/src/app/dialogs/connect-manual-frame.tsx
+++ b/frontend/src/app/dialogs/connect-manual-frame.tsx
@@ -7,6 +7,7 @@ import {
ToggleGroup,
ToggleGroupItem,
} from "@/components";
+import { RunnerConfigToggleGroup } from "../runner-config-toggle-group";
import ConnectManualServerlfullFrameContent from "./connect-manual-serverfull-frame";
import ConnectManualServerlessFrameContent from "./connect-manual-serverless-frame";
@@ -27,33 +28,7 @@ export default function CreateProjectFrameContent({
-
- {
- if (!mode) {
- return;
- }
- setMode(mode);
- }}
- >
-
- Serverless
-
-
- Server
-
-
-
+
{mode === "serverless" ? (
) : null}
diff --git a/frontend/src/app/dialogs/edit-runner-config.tsx b/frontend/src/app/dialogs/edit-runner-config.tsx
index 9063a89d4e..61b33a4b0d 100644
--- a/frontend/src/app/dialogs/edit-runner-config.tsx
+++ b/frontend/src/app/dialogs/edit-runner-config.tsx
@@ -1,12 +1,40 @@
-import { useMutation, useSuspenseQuery } from "@tanstack/react-query";
-import * as EditRunnerConfigForm from "@/app/forms/edit-runner-config-form";
-import { type DialogContentProps, Frame } from "@/components";
-import { useEngineCompatDataProvider } from "@/components/actors";
+import type { Rivet } from "@rivetkit/engine-api-full";
+import {
+ useMutation,
+ useSuspenseInfiniteQuery,
+ useSuspenseQuery,
+} from "@tanstack/react-query";
+import { useMemo, useState } from "react";
+import { useFormContext } from "react-hook-form";
+import * as EditRunnerConfigForm from "@/app/forms/edit-shared-runner-config-form";
+import * as EditSingleRunnerConfigForm from "@/app/forms/edit-single-runner-config-form";
+import {
+ Accordion,
+ AccordionContent,
+ AccordionItem,
+ AccordionTrigger,
+ Combobox,
+ type DialogContentProps,
+ Frame,
+ ToggleGroup,
+ ToggleGroupItem,
+} from "@/components";
+import { ActorRegion, useEngineCompatDataProvider } from "@/components/actors";
import { queryClient } from "@/queries/global";
+const defaultServerlessConfig: Rivet.RunnerConfigServerless = {
+ url: "",
+ maxRunners: 10,
+ minRunners: 0,
+ requestLifespan: 300,
+ runnersMargin: 2,
+ slotsPerRunner: 1,
+ headers: {},
+};
+
interface EditRunnerConfigFrameContentProps extends DialogContentProps {
name: string;
- dc: string;
+ dc?: string;
}
export default function EditRunnerConfigFrameContent({
@@ -20,6 +48,92 @@ export default function EditRunnerConfigFrameContent({
...provider.runnerConfigQueryOptions({ name }),
});
+ const isSharedSettings = useMemo(() => {
+ const configs = Object.values(data.datacenters).map((dc) =>
+ JSON.stringify(dc.serverless || {}),
+ );
+ return configs.every((config) => config === configs[0]);
+ }, [data.datacenters]);
+
+ const [settingsMode, setSettingsMode] = useState(
+ isSharedSettings ? "shared" : "datacenter",
+ );
+
+ return (
+
+
+
+ Edit '{name}' Provider
+
+
+
+
+
+
+
+
+ {settingsMode === "shared" ? (
+ <>
+
+ These settings will apply to all datacenters.
+
+
+ >
+ ) : null}
+
+ {settingsMode === "datacenter" ? (
+
+ ) : null}
+
+
+ );
+}
+
+function SharedSettingsToggleGroup({
+ value,
+ onChange,
+}: {
+ value: string;
+ onChange: (mode: string) => void;
+}) {
+ return (
+ {
+ if (!mode) {
+ return;
+ }
+ onChange(mode);
+ }}
+ >
+
+ Global Settings
+
+
+ Per Datacenter Settings
+
+
+ );
+}
+
+function SharedSettingsForm({
+ onClose,
+ name,
+}: {
+ onClose?: () => void;
+ name: string;
+}) {
+ const provider = useEngineCompatDataProvider();
+
const { mutateAsync } = useMutation({
...provider.upsertRunnerConfigMutationOptions(),
onSuccess: () => {
@@ -27,40 +141,42 @@ export default function EditRunnerConfigFrameContent({
},
});
- const datacenters = data.datacenters;
- const config = datacenters?.[dc].serverless;
+ const { data } = useSuspenseQuery({
+ ...provider.runnerConfigQueryOptions({ name }),
+ });
- if (!config) {
- return (
-
- Selected provider config is not available in this datacenter.
-
- );
- }
+ const currentConfig = Object.values(data.datacenters).find(
+ (dc): dc is { serverless: Rivet.RunnerConfigServerless } =>
+ !!dc.serverless,
+ ) || {
+ serverless: defaultServerlessConfig,
+ };
return (
{
+ onSubmit={async ({ regions, ...values }) => {
const config = {
- ...(datacenters[dc] || {}),
+ ...(currentConfig || {}),
serverless: {
...values,
headers: Object.fromEntries(values.headers || []),
},
};
- const otherDcs = Object.entries(datacenters)
- .filter(([k]) => k !== dc)
- .filter(([k, v]) => v.serverless)
- .map(([k, v]) => [k, config]);
+ const providerConfig: Record = {};
+
+ const selectedRegions = regions || {};
+ for (const [regionId, isSelected] of Object.entries(
+ selectedRegions,
+ )) {
+ if (isSelected) {
+ providerConfig[regionId] = config;
+ }
+ }
await mutateAsync({
name,
- config: {
- ...(datacenters || {}),
- [dc]: config,
- ...Object.fromEntries(otherDcs),
- },
+ config: providerConfig,
});
await queryClient.invalidateQueries(
@@ -72,38 +188,242 @@ export default function EditRunnerConfigFrameContent({
onClose?.();
}}
defaultValues={{
- url: config.url,
- maxRunners: config.maxRunners,
- minRunners: config.minRunners,
- requestLifespan: config.requestLifespan,
- runnersMargin: config.runnersMargin,
- slotsPerRunner: config.slotsPerRunner,
+ url: currentConfig.serverless.url,
+ maxRunners: currentConfig.serverless.maxRunners,
+ minRunners: currentConfig.serverless.minRunners,
+ requestLifespan: currentConfig.serverless.requestLifespan,
+ runnersMargin: currentConfig.serverless.runnersMargin,
+ slotsPerRunner: currentConfig.serverless.slotsPerRunner,
+ headers: Object.entries(
+ currentConfig.serverless.headers || {},
+ ).map(([key, value]) => [key, value]),
+ regions: Object.fromEntries(
+ Object.keys(data.datacenters).map((dcId) => [
+ dcId,
+ !!data.datacenters[dcId],
+ ]),
+ ),
}}
>
-
-
- Edit {name} Provider
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Save
+
+
+ );
+}
+
+function DatacenterSettingsForm({
+ onClose,
+ name,
+}: {
+ onClose?: () => void;
+ name: string;
+}) {
+ const provider = useEngineCompatDataProvider();
+
+ const { data: datacenters } = useSuspenseInfiniteQuery({
+ ...provider.regionsQueryOptions(),
+ maxPages: Infinity,
+ });
+
+ const { mutateAsync } = useMutation({
+ ...provider.upsertRunnerConfigMutationOptions(),
+ onSuccess: () => {
+ onClose?.();
+ },
+ });
+
+ const { data } = useSuspenseQuery({
+ ...provider.runnerConfigQueryOptions({ name }),
+ });
+
+ return (
+ [
+ dc.id,
+ {
+ ...(data.datacenters[dc.id]?.serverless ||
+ defaultServerlessConfig),
+ enable: !!data.datacenters[dc.id]?.serverless,
+ headers: Object.entries(
+ data.datacenters[dc.id]?.serverless?.headers ||
+ {},
+ ).map(([key, value]) => [key, value]),
+ },
+ ]),
+ ),
+ }}
+ onSubmit={async (values) => {
+ const providerConfig: Record<
+ string,
+ { serverless: Rivet.RunnerConfigServerless }
+ > = {};
+
+ for (const [dcId, dcConfig] of Object.entries(
+ values.datacenters || {},
+ )) {
+ if (dcConfig?.enable) {
+ const { enable, headers, ...rest } = dcConfig;
+ providerConfig[dcId] = {
+ ...(data.datacenters[dcId] || {}),
+ serverless: {
+ ...rest,
+ headers: Object.fromEntries(headers || []),
+ },
+ };
+ }
+ }
+
+ await mutateAsync({
+ name,
+ config: providerConfig,
+ });
+
+ await queryClient.invalidateQueries(
+ provider.runnerConfigsQueryOptions(),
+ );
+ await queryClient.invalidateQueries(
+ provider.runnerConfigQueryOptions({ name }),
+ );
+ onClose?.();
+ }}
+ >
+
+ {datacenters.map((dc) => (
+
+ ))}
+
+
+
+
+
+
+ Save
+
+
+
+ );
+}
+
+function DatacenterAccordion({
+ regionId,
+ name,
+}: {
+ regionId: string;
+ name: string;
+}) {
+ return (
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
-
- Save
-
-
-
-
+
+
+
+
+ );
+}
+
+function SelectDatacenterSettingsSource({
+ currentRegionId,
+ name,
+}: {
+ currentRegionId: string;
+ name: string;
+}) {
+ const form = useFormContext();
+ const provider = useEngineCompatDataProvider();
+
+ const { data: datacenters } = useSuspenseInfiniteQuery({
+ ...provider.regionsQueryOptions(),
+ maxPages: Infinity,
+ });
+
+ const { data: runnerConfig } = useSuspenseQuery({
+ ...provider.runnerConfigQueryOptions({ name }),
+ });
+
+ const availableDatacenters = datacenters.filter(
+ (dc) => dc.id !== currentRegionId && runnerConfig.datacenters[dc.id],
+ );
+
+ if (availableDatacenters.length === 0) {
+ return null;
+ }
+
+ return (
+
+ Copy settings from
+
{
+ form.setValue(
+ `datacenters.${currentRegionId}`,
+ form.getValues(`datacenters.${selectedRegionId}`),
+ { shouldDirty: true, shouldTouch: true },
+ );
+ }}
+ value={undefined}
+ placeholder="Select datacenter"
+ className="w-auto min-w-[200px]"
+ options={availableDatacenters.map((dc) => ({
+ value: dc.id,
+ label: ,
+ }))}
+ />
+
);
}
diff --git a/frontend/src/app/forms/edit-runner-config-form.tsx b/frontend/src/app/forms/edit-shared-runner-config-form.tsx
similarity index 59%
rename from frontend/src/app/forms/edit-runner-config-form.tsx
rename to frontend/src/app/forms/edit-shared-runner-config-form.tsx
index e7fdba064a..143958f165 100644
--- a/frontend/src/app/forms/edit-runner-config-form.tsx
+++ b/frontend/src/app/forms/edit-shared-runner-config-form.tsx
@@ -1,5 +1,10 @@
import { faTrash, Icon } from "@rivet-gg/icons";
+import { useInfiniteQuery } from "@tanstack/react-query";
import {
+ type FieldArrayPath,
+ type FieldPath,
+ type Path,
+ type PathValue,
type UseFormReturn,
useFieldArray,
useFormContext,
@@ -7,6 +12,7 @@ import {
import z from "zod";
import {
Button,
+ Checkbox,
createSchemaForm,
FormControl,
FormDescription,
@@ -18,6 +24,8 @@ import {
Input,
Label,
} from "@/components";
+import { ActorRegion, useEngineCompatDataProvider } from "@/components/actors";
+import { VisibilitySensor } from "@/components/visibility-sensor";
export const formSchema = z.object({
url: z.string().url(),
@@ -27,6 +35,12 @@ export const formSchema = z.object({
runnersMargin: z.coerce.number().min(0),
slotsPerRunner: z.coerce.number().positive(),
headers: z.array(z.array(z.string())).default([]),
+ regions: z
+ .record(z.string(), z.boolean().optional())
+ .optional()
+ .refine((obj) => {
+ return Object.values(obj || {}).some((v) => v);
+ }, "At least one region must be selected."),
});
export type FormValues = z.infer;
@@ -38,12 +52,18 @@ export type SubmitHandler = (
const { Form, Submit, SetValue } = createSchemaForm(formSchema);
export { Form, Submit, SetValue };
-export const Url = ({ className }: { className?: string }) => {
- const { control } = useFormContext();
+export const Url = = FormValues>({
+ name = "url" as FieldPath,
+ className,
+}: {
+ name?: FieldPath;
+ className?: string;
+}) => {
+ const { control } = useFormContext();
return (
(
Endpoint
@@ -60,12 +80,18 @@ export const Url = ({ className }: { className?: string }) => {
);
};
-export const MinRunners = ({ className }: { className?: string }) => {
- const { control } = useFormContext();
+export const MinRunners = = FormValues>({
+ name = "minRunners" as FieldPath,
+ className,
+}: {
+ name?: FieldPath;
+ className?: string;
+}) => {
+ const { control } = useFormContext();
return (
(
Min Runners
@@ -82,12 +108,18 @@ export const MinRunners = ({ className }: { className?: string }) => {
);
};
-export const MaxRunners = ({ className }: { className?: string }) => {
- const { control } = useFormContext();
+export const MaxRunners = = FormValues>({
+ name = "maxRunners" as FieldPath,
+ className,
+}: {
+ name?: FieldPath;
+ className?: string;
+}) => {
+ const { control } = useFormContext();
return (
(
Max Runners
@@ -106,12 +138,20 @@ export const MaxRunners = ({ className }: { className?: string }) => {
);
};
-export const RequestLifespan = ({ className }: { className?: string }) => {
- const { control } = useFormContext();
+export const RequestLifespan = <
+ TValues extends Record = FormValues,
+>({
+ name = "requestLifespan" as FieldPath,
+ className,
+}: {
+ name?: FieldPath;
+ className?: string;
+}) => {
+ const { control } = useFormContext();
return (
(
@@ -131,12 +171,20 @@ export const RequestLifespan = ({ className }: { className?: string }) => {
);
};
-export const RunnersMargin = ({ className }: { className?: string }) => {
- const { control } = useFormContext();
+export const RunnersMargin = <
+ TValues extends Record = FormValues,
+>({
+ name = "runnersMargin" as FieldPath,
+ className,
+}: {
+ name?: FieldPath;
+ className?: string;
+}) => {
+ const { control } = useFormContext();
return (
(
Runners Margin
@@ -154,12 +202,20 @@ export const RunnersMargin = ({ className }: { className?: string }) => {
);
};
-export const SlotsPerRunner = ({ className }: { className?: string }) => {
- const { control } = useFormContext();
+export const SlotsPerRunner = <
+ TValues extends Record = FormValues,
+>({
+ name = "slotsPerRunner" as FieldPath,
+ className,
+}: {
+ name?: FieldPath;
+ className?: string;
+}) => {
+ const { control } = useFormContext();
return (
(
@@ -178,10 +234,14 @@ export const SlotsPerRunner = ({ className }: { className?: string }) => {
);
};
-export const Headers = function Headers() {
- const { control, setValue, watch } = useFormContext();
- const { fields, append, remove } = useFieldArray({
- name: "headers",
+export const Headers = = FormValues>({
+ name = "headers" as FieldArrayPath,
+}: {
+ name?: FieldArrayPath;
+}) => {
+ const { control, setValue, watch } = useFormContext();
+ const { fields, append, remove } = useFieldArray({
+ name,
control,
});
@@ -213,7 +273,7 @@ export const Headers = function Headers() {
col-span-full flex-1"
>
,
+ )}
onChange={(e) => {
setValue(
- `headers.${index}.0`,
- e.target.value,
+ `${name}.${index}.0` as Path,
+ e.target.value as PathValue<
+ TValues,
+ Path
+ >,
{
shouldDirty: true,
shouldTouch: true,
@@ -245,7 +310,7 @@ col-span-full flex-1"
,
+ )}
onChange={(e) => {
setValue(
- `headers.${index}.1`,
- e.target.value,
+ `${name}.${index}.1` as Path,
+ e.target.value as PathValue<
+ TValues,
+ Path
+ >,
{
shouldDirty: true,
shouldTouch: true,
@@ -292,10 +362,69 @@ col-span-full flex-1"
variant="secondary"
size="sm"
type="button"
- onClick={() => append([["", ""]])}
+ onClick={() =>
+ append([["", ""]] as PathValue>)
+ }
>
Add a header
);
};
+
+export const Regions = () => {
+ const { control } = useFormContext();
+ const { data, hasNextPage, fetchNextPage } = useInfiniteQuery({
+ ...useEngineCompatDataProvider().regionsQueryOptions(),
+ maxPages: Infinity,
+ });
+
+ return (
+
+
+ Datacenters
+
+
+ Datacenters where this provider can deploy actors.
+
+
+ {data?.map((region) => (
+
(
+ <>
+
+
+ >
+ )}
+ />
+ ))}
+ {hasNextPage ? (
+
+ ) : null}
+ {" "}
+
}
+ />
+
+ );
+};
diff --git a/frontend/src/app/forms/edit-single-runner-config-form.tsx b/frontend/src/app/forms/edit-single-runner-config-form.tsx
new file mode 100644
index 0000000000..ddad5410b3
--- /dev/null
+++ b/frontend/src/app/forms/edit-single-runner-config-form.tsx
@@ -0,0 +1,61 @@
+import { FieldPath, useFormContext, type UseFormReturn } from "react-hook-form";
+import z from "zod";
+import { Checkbox, createSchemaForm, FormField, FormMessage } from "@/components";
+import * as SingleRunnerConfigForm from "./edit-shared-runner-config-form";
+
+export const formSchema = z.object({
+ datacenters: z
+ .record(
+ z.string(),
+ SingleRunnerConfigForm.formSchema.omit({ regions: true }).and(z.object({enable: z.boolean().optional()})).optional(),
+ )
+ .optional()
+ .refine((obj) => {
+ return Object.values(obj || {}).some((dcConfig) => dcConfig?.enable);
+ }, "At least one datacenter must be enabled."),
+});
+
+export type FormValues = z.infer;
+export type SubmitHandler = (
+ values: FormValues,
+ form: UseFormReturn,
+) => Promise;
+
+const { Form, Submit, SetValue } = createSchemaForm(formSchema);
+export { Form, Submit, SetValue };
+
+export const Enable = = FormValues>({name}: {name: FieldPath;}) => {
+ const { control } = useFormContext();
+ return }
+ render={({ field }) => (
+ {
+ e.stopPropagation()
+ }}
+ checked={field.value as unknown as boolean ?? false}
+ name={field.name}
+ onCheckedChange={field.onChange}
+ />
+ )}
+ />;
+}
+
+export const Datacenters = () => {
+ const { control } = useFormContext();
+ return }
+ />
+}
+
+export const Url = SingleRunnerConfigForm.Url;
+export const MaxRunners = SingleRunnerConfigForm.MaxRunners;
+export const MinRunners = SingleRunnerConfigForm.MinRunners;
+export const RequestLifespan =
+ SingleRunnerConfigForm.RequestLifespan;
+export const RunnersMargin = SingleRunnerConfigForm.RunnersMargin;
+export const SlotsPerRunner = SingleRunnerConfigForm.SlotsPerRunner;
+export const Headers = SingleRunnerConfigForm.Headers;
diff --git a/frontend/src/app/runner-config-table.tsx b/frontend/src/app/runner-config-table.tsx
index 1c3d4cfb23..7e4c301b5e 100644
--- a/frontend/src/app/runner-config-table.tsx
+++ b/frontend/src/app/runner-config-table.tsx
@@ -1,9 +1,9 @@
import {
- faChevronDown,
- faChevronRight,
faCog,
faCogs,
+ faEllipsisVertical,
faNextjs,
+ faPencil,
faRailway,
faTrash,
faTriangleExclamation,
@@ -11,12 +11,16 @@ import {
Icon,
} from "@rivet-gg/icons";
import type { Rivet } from "@rivetkit/engine-api-full";
-import { Link } from "@tanstack/react-router";
-import { useMemo, useState } from "react";
-import { match, P } from "ts-pattern";
+import { Link, useNavigate } from "@tanstack/react-router";
+import { useMemo } from "react";
import {
Button,
+ CopyArea,
DiscreteCopyButton,
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuTrigger,
Ping,
Skeleton,
Table,
@@ -53,8 +57,8 @@ export function RunnerConfigsTable({
Name
- Provider
- Endpoint
+ Provider
+ Endpoint
Datacenter
@@ -136,136 +140,90 @@ function RowSkeleton() {
);
}
-type DatacenterConfig = {
- datacenterId: string;
- config: Rivet.RunnerConfigResponse;
-};
-
-type GroupedConfig = {
- provider: string;
- endpoint: string;
- metadata: unknown;
- datacenters: string[];
- runnerPoolErrors: Record;
-};
-
function Row({
name,
...value
}: { name: string } & Rivet.RunnerConfigsListResponseRunnerConfigsValue) {
- const [isExpanded, setIsExpanded] = useState(true);
-
- const groupedConfigs = useMemo(() => {
- const datacenterEntries: DatacenterConfig[] = Object.entries(
- value.datacenters,
- ).map(([datacenterId, config]) => ({ datacenterId, config }));
+ const navigate = useNavigate();
- const groupedConfigs: GroupedConfig[] = [];
-
- for (const { datacenterId, config } of datacenterEntries) {
- const provider = getProviderName(config.metadata);
- const endpoint = config.serverless?.url || "";
- const runnerPoolError = config.runnerPoolError;
-
- const existingGroup = groupedConfigs.find(
- (g) => g.provider === provider && g.endpoint === endpoint,
- );
-
- if (existingGroup) {
- existingGroup.datacenters.push(datacenterId);
- existingGroup.runnerPoolErrors[datacenterId] = runnerPoolError;
- } else {
- groupedConfigs.push({
- provider,
- endpoint,
- metadata: config.metadata,
- datacenters: [datacenterId],
- runnerPoolErrors: { [datacenterId]: runnerPoolError },
- });
- }
- }
- return groupedConfigs;
- }, [value.datacenters]);
-
- const hasMultipleConfigs = groupedConfigs.length > 1;
-
- if (!hasMultipleConfigs) {
- return ;
- }
-
- const hasAtLeastOneError = groupedConfigs.some(
- (g) => Object.keys(g.runnerPoolErrors).length > 0,
- );
+ const datacenters = Object.entries(value.datacenters);
return (
- <>
- setIsExpanded(!isExpanded)}
- >
-
-
-
-
-
- {name}
-
-
-
-
-
- {groupedConfigs.length}{" "}
- {groupedConfigs.length === 1 ? "provider" : "providers"}
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ {name}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ }
+ onSelect={() =>
+ navigate({
+ to: ".",
+ search: {
+ modal: "edit-provider-config",
+ config: name,
+ },
+ })
}
- />
-
-
-
-
- {isExpanded &&
- groupedConfigs.map((groupedConfig, idx) => (
-
- ))}
- >
+ >
+ Edit
+
+ }
+ onSelect={() =>
+ navigate({
+ to: ".",
+ search: {
+ modal: "delete-provider-config",
+ config: name,
+ },
+ })
+ }
+ >
+ Delete
+
+
+
+
+
);
}
-
-
function StatusCell({
- errors,
+ datacenters,
}: {
- errors: Record | string;
+ datacenters: Record;
}) {
- const hasErrors = typeof errors !== "string" ? Object.values(errors).some((err) => err !== undefined) : !!errors;
+ const errors = useMemo(() => {
+ const errorMap: Record = {};
+ let hasErrors = false;
+ for (const [dc, config] of Object.entries(datacenters)) {
+ if (config.runnerPoolError) {
+ errorMap[dc] = config.runnerPoolError;
+ hasErrors = true;
+ }
+ }
+ return hasErrors ? errorMap : null;
+ }, [datacenters]);
- if (!hasErrors) {
+ if (!errors) {
return (
@@ -277,21 +235,33 @@ function StatusCell({
- {typeof errors !== "string" ? Object.entries(errors).map(([dc, error]) => {
- if (!error) return null;
- return (
-
- );
- }) : errors}
-
+ <>
+ Some providers are experiencing errors:
+
+ {typeof errors !== "string"
+ ? Object.entries(errors).map(([dc, error]) => {
+ if (!error) return null;
+ return (
+ -
+
+
+
+
+
+ );
+ })
+ : errors}
+
+ >
}
trigger={
@@ -303,84 +273,85 @@ function StatusCell({
);
}
-function ProviderRow({
- name,
- metadata,
- endpoint,
- runnerPoolErrors,
+function Providers({
datacenters,
-}: GroupedConfig & { name: string }) {
+}: {
+ datacenters: [string, Rivet.RunnerConfigResponse][];
+}) {
+ const providers = useMemo(() => {
+ const providerSet = new Set();
+ for (const [, config] of datacenters) {
+ const providerName = getProviderName(config.metadata);
+ providerSet.add(providerName);
+ }
+ return Array.from(providerSet);
+ }, [datacenters]);
+
+ if (providers.length === 1) {
+ return ;
+ }
+
return (
-
-
-
- {name}
-
-
-
-
-
-
-
- {endpoint && endpoint.length > 32
- ? `${endpoint.slice(0, 16)}...${endpoint.slice(-16)}`
- : endpoint || "-"}
-
-
- }
- />
-
-
-
-
-
-
- {endpoint && hasMetadataProvider(metadata) ? (
-
-
-
-
-
- }
- />
- ) : null}
-
-
-
-
-
- }
- />
-
-
-
+ Multiple providers}
+ />
);
}
-function getModal(metadata: unknown) {
- return "edit-provider-config";
+function Endpoints({
+ datacenters,
+}: {
+ datacenters: [string, Rivet.RunnerConfigResponse][];
+}) {
+ const endpoints = useMemo(() => {
+ const endpointSet = new Set();
+ for (const [, config] of datacenters) {
+ if (config.serverless?.url) {
+ endpointSet.add(config.serverless.url);
+ }
+ }
+ return Array.from(endpointSet);
+ }, [datacenters]);
+
+ if (endpoints.length === 1) {
+ const endpoint = endpoints[0];
+ return (
+
+ {endpoint && endpoint.length > 32
+ ? `${endpoint.slice(0, 16)}...${endpoint.slice(-16)}`
+ : endpoint || "-"}
+
+ );
+ }
+
+ return (
+
+ Endpoints:
+
+ {endpoints.map((endpoint) => (
+ -
+
+
+ {endpoint && endpoint.length > 32
+ ? `${endpoint.slice(0, 16)}...${endpoint.slice(-16)}`
+ : endpoint || "-"}
+
+
+
+ ))}
+
+ >
+ }
+ trigger={Multiple endpoints}
+ />
+ );
}
function getProviderName(metadata: unknown): string {
@@ -400,35 +371,35 @@ function Provider({ metadata }: { metadata: unknown }) {
if ("provider" in metadata && typeof metadata.provider === "string") {
if (metadata.provider === "vercel") {
return (
-
+
Vercel
);
}
if (metadata.provider === "next-js") {
return (
-
+
Next.js
);
}
if (metadata.provider === "railway") {
return (
-
+
Railway
);
}
if (metadata.provider === "hetzner") {
return (
-
+
Hetzner
);
}
if (metadata.provider === "gcp") {
return (
-
+
Google Cloud Run
);
@@ -455,9 +426,7 @@ function Regions({ regions }: { regions: string[] }) {
.map((region) => REGION_LABEL[region] ?? REGION_LABEL.unknown)
.join(" and ")}
trigger={
-
- {regions.length} regions
-
+
Multiple regions
}
/>
);
diff --git a/frontend/src/app/runner-config-toggle-group.tsx b/frontend/src/app/runner-config-toggle-group.tsx
new file mode 100644
index 0000000000..9be9752cf6
--- /dev/null
+++ b/frontend/src/app/runner-config-toggle-group.tsx
@@ -0,0 +1,49 @@
+import { cn, ToggleGroup, ToggleGroupItem } from "@/components";
+
+export function RunnerConfigToggleGroup({
+ mode,
+ id,
+ onChange,
+ className,
+}: {
+ id?: string;
+ mode: string;
+ onChange: (mode: string) => void;
+ className?: string;
+}) {
+ return (
+
+ {
+ if (!mode) {
+ return;
+ }
+ onChange(mode);
+ }}
+ >
+
+ Serverless
+
+
+ Dedicated
+
+
+
+ );
+}
diff --git a/frontend/src/app/runners-table.tsx b/frontend/src/app/runners-table.tsx
index 19b27c5a88..8964abd127 100644
--- a/frontend/src/app/runners-table.tsx
+++ b/frontend/src/app/runners-table.tsx
@@ -1,5 +1,5 @@
import {
- faExclamationTriangle,
+ faHourglassEnd,
faPlus,
faSignalAlt,
faSignalAlt2,
@@ -7,6 +7,7 @@ import {
faSignalAlt4,
Icon,
} from "@rivet-gg/icons";
+
import type { Rivet } from "@rivetkit/engine-api-full";
import { useInfiniteQuery } from "@tanstack/react-query";
import { Link } from "@tanstack/react-router";
@@ -24,7 +25,7 @@ import {
Text,
WithTooltip,
} from "@/components";
-import { useEngineCompatDataProvider } from "@/components/actors";
+import { ActorRegion, useEngineCompatDataProvider } from "@/components/actors";
interface RunnersTableProps {
isLoading?: boolean;
@@ -147,7 +148,9 @@ function Row(runner: Rivet.Runner) {
{runner.name}
-
{runner.datacenter}
+
+
+
{runner.remainingSlots}/{runner.totalSlots}
@@ -189,7 +192,7 @@ function RunnerStatusBadge(runner: Rivet.Runner) {
trigger={
diff --git a/frontend/src/components/actors/actor-status-label.tsx b/frontend/src/components/actors/actor-status-label.tsx
index 25047cb655..2bbc64f801 100644
--- a/frontend/src/components/actors/actor-status-label.tsx
+++ b/frontend/src/components/actors/actor-status-label.tsx
@@ -78,21 +78,21 @@ export function ActorError({ error }: { error: Rivet.ActorError }) {
.with(P.string, (errMsg) =>
match(errMsg)
.with("no_capacity", () => (
- No capacity available to start Actor.
+ No capacity available to start Actor.
))
- .exhaustive(),
+ .otherwise(() => Unknown error: {errMsg}
),
)
.with(P.shape({ runnerPoolError: P.any }), (err) => (
-
+
Runner Pool Error:{" "}
-
+
))
.with(P.shape({ runnerNoResponse: P.any }), (err) => (
-
+
Runner ({err.runnerNoResponse.runnerId}) was allocated but Actor
did not respond.
-
+
))
.exhaustive();
}
diff --git a/frontend/src/components/actors/dialogs/create-actor-dialog.tsx b/frontend/src/components/actors/dialogs/create-actor-dialog.tsx
index c35e5d40c3..2c78f0e2f3 100644
--- a/frontend/src/components/actors/dialogs/create-actor-dialog.tsx
+++ b/frontend/src/components/actors/dialogs/create-actor-dialog.tsx
@@ -41,7 +41,7 @@ export default function CreateActorDialog({ onClose }: ContentProps) {
input: values.input ? JSON.parse(values.input) : undefined,
key: values.key,
datacenter: values.datacenter,
- crashPolicy: values.crashPolicy || CrashPolicy.Restart,
+ crashPolicy: values.crashPolicy || CrashPolicy.Sleep,
runnerNameSelector: values.runnerNameSelector || "default",
});
onClose?.();
@@ -49,7 +49,7 @@ export default function CreateActorDialog({ onClose }: ContentProps) {
defaultValues={{
name,
key: getRandomKey(),
- crashPolicy: CrashPolicy.Restart,
+ crashPolicy: CrashPolicy.Sleep,
}}
>
diff --git a/frontend/src/components/actors/guard-connectable-inspector.tsx b/frontend/src/components/actors/guard-connectable-inspector.tsx
index dcfbf0f98f..84378a277d 100644
--- a/frontend/src/components/actors/guard-connectable-inspector.tsx
+++ b/frontend/src/components/actors/guard-connectable-inspector.tsx
@@ -77,9 +77,8 @@ function UnavailableInfo({
className="text-4xl text-destructive"
/>
Actor is unavailable.
-
-
-
+
+
))
.with("pending", () => )
diff --git a/frontend/src/components/actors/region-select.tsx b/frontend/src/components/actors/region-select.tsx
index bb8dee1831..9d85e6a35a 100644
--- a/frontend/src/components/actors/region-select.tsx
+++ b/frontend/src/components/actors/region-select.tsx
@@ -3,17 +3,22 @@ import { Combobox } from "@/components";
import { ActorRegion } from "./actor-region";
import { useDataProvider } from "./data-provider";
-interface RegionSelectProps {
- onValueChange: (value: string) => void;
- value: string | undefined;
+type RegionSelectProps = {
showAuto?: boolean;
-}
+} & (
+ | {
+ onValueChange: (value: string) => void;
+ value: string | undefined;
+ multiple?: false;
+ }
+ | {
+ onValueChange: (value: string[]) => void;
+ value: string[] | undefined;
+ multiple: true;
+ }
+);
-export function RegionSelect({
- onValueChange,
- value,
- showAuto = true,
-}: RegionSelectProps) {
+export function RegionSelect({ showAuto = true, ...props }: RegionSelectProps) {
const {
data = [],
fetchNextPage,
@@ -44,8 +49,7 @@ export function RegionSelect({
{
diff --git a/frontend/src/components/copy-area.tsx b/frontend/src/components/copy-area.tsx
index 5f297cadf7..4e8396c02a 100644
--- a/frontend/src/components/copy-area.tsx
+++ b/frontend/src/components/copy-area.tsx
@@ -123,36 +123,37 @@ export const CopyButton = forwardRef(
},
);
-export type DiscreteCopyButtonProps = CopyButtonProps &
- ComponentProps;
+export type DiscreteCopyButtonProps = CopyButtonProps & {
+ tooltip?: boolean;
+} & ComponentProps;
export const DiscreteCopyButton = forwardRef<
HTMLElement,
DiscreteCopyButtonProps
->(({ children, value, ...props }, ref) => {
- return (
-
-
- }
- >
- {children}
-
-
- }
- />
+>(({ children, value, tooltip = true, ...props }, ref) => {
+ const content = (
+
+
+ }
+ >
+ {children}
+
+
);
+
+ if (tooltip) {
+ return ;
+ }
+ return content;
});
interface ClickToCopyProps {
diff --git a/frontend/src/components/hooks/use-dialog.tsx b/frontend/src/components/hooks/use-dialog.tsx
index 1bdf56f401..056faee95e 100644
--- a/frontend/src/components/hooks/use-dialog.tsx
+++ b/frontend/src/components/hooks/use-dialog.tsx
@@ -1,5 +1,6 @@
"use client";
import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
+import { QueryErrorResetBoundary } from "@tanstack/react-query";
import {
type ComponentProps,
type ComponentType,
@@ -9,14 +10,22 @@ import {
useMemo,
useState,
} from "react";
+import { ErrorBoundary } from "react-error-boundary";
import { Skeleton } from "@/components/ui/skeleton";
+import { Button } from "../ui/button";
import {
Dialog,
DialogContent,
type DialogProps,
DialogTitle,
} from "../ui/dialog";
-import { IsInModalContext } from "./isomorphic-frame";
+import {
+ Content,
+ Footer,
+ Header,
+ IsInModalContext,
+ Title,
+} from "./isomorphic-frame";
export interface DialogContentProps {
onClose?: () => void;
@@ -70,47 +79,68 @@ export const createDialogHook = <
}
}}
>
-
-
- Loading...
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- }
- >
-
- dialogProps?.onOpenChange?.(false)
- }
- />
-
+
+ {({ reset }) => (
+ (
+
+ )}
+ >
+
+
+
+ Loading...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ }
+ >
+
+ dialogProps?.onOpenChange?.(
+ false,
+ )
+ }
+ />
+
+
+ )}
+
@@ -233,3 +263,38 @@ useDialog.Feedback = createDialogHook(
useDialog.CreateActor = createDialogHook(
() => import("../actors/dialogs/create-actor-dialog"),
);
+
+function DialogErrorFallback({
+ resetError,
+ error,
+}: {
+ resetError: () => void;
+ error: Error;
+}) {
+ return (
+ <>
+
+
+ {"statusCode" in error && error.statusCode === 404
+ ? "Resource not found"
+ : "body" in error &&
+ error.body &&
+ typeof error.body === "object" &&
+ "message" in error.body
+ ? String(error.body.message)
+ : error.message}
+
+
+
+ {"statusCode" in error && error.statusCode === 404
+ ? "The resource you are looking for does not exist or you do not have access to it."
+ : 'description' in error ? <>{String(error.description)}> : "An unexpected error occurred. Please try again later."}
+
+
+ >
+ );
+}
diff --git a/frontend/src/components/ui/typography.tsx b/frontend/src/components/ui/typography.tsx
index 1de778d88e..d03418fcd7 100644
--- a/frontend/src/components/ui/typography.tsx
+++ b/frontend/src/components/ui/typography.tsx
@@ -112,9 +112,9 @@ const Ul = ({ className, asChild, ...props }: TypographyElementProps<"ul">) => {
return (
li]:mt-2",
getCommonHelperClass(props),
+ className,
)}
{...omitCommonHelperProps(props)}
/>
diff --git a/frontend/src/routes/_context/_cloud.tsx b/frontend/src/routes/_context/_cloud.tsx
index d9779d4d27..c790546123 100644
--- a/frontend/src/routes/_context/_cloud.tsx
+++ b/frontend/src/routes/_context/_cloud.tsx
@@ -5,6 +5,7 @@ import {
useNavigate,
useSearch,
} from "@tanstack/react-router";
+import { config } from "process";
import { match } from "ts-pattern";
import { useDialog } from "@/app/use-dialog";
import { waitForClerk } from "@/lib/waitForClerk";
@@ -260,6 +261,8 @@ function CloudModals() {
search: (old) => ({
...old,
modal: undefined,
+ dc: undefined,
+ config: undefined,
}),
});
}
@@ -278,6 +281,7 @@ function CloudModals() {
search: (old) => ({
...old,
modal: undefined,
+ config: undefined,
}),
});
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e070b1d162..f0a480da67 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -252,9 +252,18 @@ importers:
examples/actor-actions:
dependencies:
+ '@hono/node-server':
+ specifier: ^1.19.7
+ version: 1.19.7(hono@4.11.3)
+ '@hono/node-ws':
+ specifier: ^1.2.0
+ version: 1.2.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@rivetkit/react':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/react
+ hono:
+ specifier: ^4.7.10
+ version: 4.11.3
react:
specifier: ^18.2.0
version: 18.3.1
@@ -264,13 +273,10 @@ importers:
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.11.3)
- '@hono/node-ws':
- specifier: ^1.2.0
- version: 1.2.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@types/node':
specifier: ^22.13.9
version: 22.19.1
@@ -286,9 +292,6 @@ importers:
concurrently:
specifier: ^8.2.2
version: 8.2.2
- srvx:
- specifier: ^0.10.0
- version: 0.10.0
tsup:
specifier: ^8.5.1
version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.3)(yaml@2.8.2)
@@ -310,12 +313,21 @@ importers:
'@ai-sdk/openai':
specifier: ^0.0.66
version: 0.0.66(zod@3.25.76)
+ '@hono/node-server':
+ specifier: ^1.19.7
+ version: 1.19.7(hono@4.11.3)
+ '@hono/node-ws':
+ specifier: ^1.3.0
+ version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@rivetkit/react':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/react
ai:
specifier: ^4.0.38
version: 4.3.19(react@18.3.1)(zod@3.25.76)
+ hono:
+ specifier: ^4.0.0
+ version: 4.11.3
react:
specifier: ^18.2.0
version: 18.3.1
@@ -325,16 +337,13 @@ importers:
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
zod:
specifier: ^3.25.69
version: 3.25.76
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.11.3)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@types/node':
specifier: ^22.13.9
version: 22.18.1
@@ -350,9 +359,6 @@ importers:
concurrently:
specifier: ^8.2.2
version: 8.2.2
- srvx:
- specifier: ^0.10.0
- version: 0.10.0
tsup:
specifier: ^8.5.1
version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.2)
@@ -371,6 +377,12 @@ importers:
examples/ai-and-user-generated-actors-freestyle:
dependencies:
+ '@hono/node-server':
+ specifier: ^1.19.1
+ version: 1.19.1(hono@4.9.8)
+ '@hono/node-ws':
+ specifier: ^1.3.0
+ version: 1.3.0(@hono/node-server@1.19.1(hono@4.9.8))(hono@4.9.8)
'@monaco-editor/react':
specifier: ^4.7.0
version: 4.7.0(monaco-editor@0.55.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -399,12 +411,6 @@ importers:
specifier: ^18.2.0
version: 18.3.1(react@18.3.1)
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.1
- version: 1.19.1(hono@4.9.8)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.1(hono@4.9.8))(hono@4.9.8)
'@types/node':
specifier: ^22.13.9
version: 22.19.1
@@ -435,6 +441,12 @@ importers:
examples/chat-room:
dependencies:
+ '@hono/node-server':
+ specifier: ^1.19.7
+ version: 1.19.7(hono@4.11.3)
+ '@hono/node-ws':
+ specifier: ^1.3.0
+ version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@rivetkit/react':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/react
@@ -450,19 +462,13 @@ importers:
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.11.3)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@types/node':
specifier: ^22.13.9
version: 22.18.1
- '@types/prompts':
- specifier: ^2
- version: 2.4.9
'@types/react':
specifier: ^19
version: 19.2.2
@@ -475,15 +481,6 @@ importers:
concurrently:
specifier: ^8.2.2
version: 8.2.2
- prompts:
- specifier: ^2.4.2
- version: 2.4.2
- srvx:
- specifier: ^0.10.0
- version: 0.10.0
- tsup:
- specifier: ^8.5.1
- version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.2)
tsx:
specifier: ^3.12.7
version: 3.14.0
@@ -493,6 +490,9 @@ importers:
vite:
specifier: ^5.0.0
version: 5.4.20(@types/node@22.18.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.1)
+ vite-plugin-srvx:
+ specifier: ^0.1.0
+ version: 0.1.0(srvx@0.10.0)(vite@5.4.20(@types/node@22.18.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.1))
vitest:
specifier: ^3.1.1
version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(@vitest/ui@3.1.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.1)
@@ -608,9 +608,18 @@ importers:
examples/cross-actor-actions:
dependencies:
+ '@hono/node-server':
+ specifier: ^1.19.7
+ version: 1.19.7(hono@4.11.3)
+ '@hono/node-ws':
+ specifier: ^1.3.0
+ version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@rivetkit/react':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/react
+ hono:
+ specifier: ^4.0.0
+ version: 4.11.3
react:
specifier: ^18.2.0
version: 18.3.1
@@ -620,13 +629,10 @@ importers:
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.11.3)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@types/node':
specifier: ^22.13.9
version: 22.19.1
@@ -642,9 +648,6 @@ importers:
concurrently:
specifier: ^8.2.2
version: 8.2.2
- srvx:
- specifier: ^0.10.0
- version: 0.10.0
tsup:
specifier: ^8.5.1
version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.3)(yaml@2.8.2)
@@ -663,9 +666,18 @@ importers:
examples/cursors:
dependencies:
+ '@hono/node-server':
+ specifier: ^1.19.7
+ version: 1.19.7(hono@4.11.3)
+ '@hono/node-ws':
+ specifier: ^1.3.0
+ version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@rivetkit/react':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/react
+ hono:
+ specifier: ^4
+ version: 4.11.3
react:
specifier: ^18.2.0
version: 18.3.1
@@ -675,19 +687,13 @@ importers:
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.11.3)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@types/node':
specifier: ^22.13.9
version: 22.18.1
- '@types/prompts':
- specifier: ^2
- version: 2.4.9
'@types/react':
specifier: ^19
version: 19.2.2
@@ -700,12 +706,6 @@ importers:
concurrently:
specifier: ^8.2.2
version: 8.2.2
- prompts:
- specifier: ^2.4.2
- version: 2.4.2
- srvx:
- specifier: ^0.10.0
- version: 0.10.0
tsup:
specifier: ^8.5.1
version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.2)
@@ -724,9 +724,18 @@ importers:
examples/cursors-raw-websocket:
dependencies:
+ '@hono/node-server':
+ specifier: ^1.19.7
+ version: 1.19.7(hono@4.11.3)
+ '@hono/node-ws':
+ specifier: ^1.3.0
+ version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@rivetkit/react':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/react
+ hono:
+ specifier: ^4.0.0
+ version: 4.11.3
react:
specifier: ^18.2.0
version: 18.3.1
@@ -736,19 +745,13 @@ importers:
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.11.3)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@types/node':
specifier: ^22.13.9
version: 22.18.1
- '@types/prompts':
- specifier: ^2
- version: 2.4.9
'@types/react':
specifier: ^19
version: 19.2.2
@@ -761,12 +764,6 @@ importers:
concurrently:
specifier: ^8.2.2
version: 8.2.2
- prompts:
- specifier: ^2.4.2
- version: 2.4.2
- srvx:
- specifier: ^0.10.0
- version: 0.10.0
tsup:
specifier: ^8.5.1
version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.2)
@@ -785,22 +782,28 @@ importers:
examples/custom-serverless:
dependencies:
- rivetkit:
- specifier: workspace:*
- version: link:../../rivetkit-typescript/packages/rivetkit
- devDependencies:
'@hono/node-server':
specifier: ^1.19.7
version: 1.19.7(hono@4.11.3)
'@hono/node-ws':
specifier: ^1.3.0
version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
- '@types/node':
- specifier: ^22.13.9
- version: 22.19.1
+ hono:
+ specifier: ^4.0.0
+ version: 4.11.3
+ rivetkit:
+ specifier: workspace:*
+ version: link:../../rivetkit-typescript/packages/rivetkit
srvx:
specifier: ^0.10.0
version: 0.10.0
+ devDependencies:
+ '@types/node':
+ specifier: ^22.13.9
+ version: 22.19.1
+ tsup:
+ specifier: ^8.0.0
+ version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.3)(yaml@2.8.2)
tsx:
specifier: ^3.12.7
version: 3.14.0
@@ -811,30 +814,14 @@ importers:
specifier: ^3.1.1
version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.1)
- examples/deno:
+ examples/drizzle:
dependencies:
- hono:
- specifier: 4.9.8
- version: 4.9.8
- rivetkit:
- specifier: workspace:*
- version: link:../../rivetkit-typescript/packages/rivetkit
- devDependencies:
'@hono/node-server':
specifier: ^1.19.7
- version: 1.19.7(hono@4.9.8)
+ version: 1.19.7(hono@4.11.3)
'@hono/node-ws':
specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.9.8))(hono@4.9.8)
- '@types/deno':
- specifier: ^2.3.0
- version: 2.5.0
- '@types/node':
- specifier: ^24.5.2
- version: 24.7.1
-
- examples/drizzle:
- dependencies:
+ version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@rivetkit/db':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/db
@@ -844,19 +831,22 @@ importers:
drizzle-orm:
specifier: ^0.44.2
version: 0.44.6(@cloudflare/workers-types@4.20251014.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.0(@types/react@19.2.2))(kysely@0.28.8)
+ hono:
+ specifier: ^4.0.0
+ version: 4.11.3
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.11.3)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@types/node':
specifier: ^22.13.9
version: 22.18.1
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ tsup:
+ specifier: ^8.0.0
+ version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.2)
tsx:
specifier: ^3.12.7
version: 3.14.0
@@ -866,34 +856,28 @@ importers:
examples/elysia:
dependencies:
- '@rivetkit/react':
- specifier: workspace:*
- version: link:../../rivetkit-typescript/packages/react
- '@sinclair/typebox':
- specifier: ^0.34.15
- version: 0.34.41
- elysia:
- specifier: ^1.3.5
- version: 1.4.12(@sinclair/typebox@0.34.41)(exact-mirror@0.2.2(@sinclair/typebox@0.34.41))(file-type@21.0.0)(openapi-types@12.1.3)(typescript@5.9.2)
- react:
- specifier: ^18.2.0
- version: 18.3.1
- react-dom:
- specifier: ^18.2.0
- version: 18.3.1(react@18.3.1)
- devDependencies:
'@hono/node-server':
specifier: ^1.19.7
version: 1.19.7(hono@4.11.3)
'@hono/node-ws':
specifier: ^1.3.0
version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
- '@types/node':
- specifier: ^22.13.9
- version: 22.18.1
+ elysia:
+ specifier: ^1.4.0
+ version: 1.4.12(@sinclair/typebox@0.34.41)(exact-mirror@0.2.2(@sinclair/typebox@0.34.41))(file-type@21.0.0)(openapi-types@12.1.3)(typescript@5.9.2)
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
+ devDependencies:
+ '@types/node':
+ specifier: ^22.13.9
+ version: 22.18.1
+ tsx:
+ specifier: ^3.12.7
+ version: 3.14.0
typescript:
specifier: ^5.5.2
version: 5.9.2
@@ -912,12 +896,21 @@ importers:
'@durable-streams/writer':
specifier: https://pkg.pr.new/rivet-dev/durable-streams/@durable-streams/writer@0323b8b
version: https://pkg.pr.new/rivet-dev/durable-streams/@durable-streams/writer@0323b8b
+ '@hono/node-server':
+ specifier: ^1.19.7
+ version: 1.19.7(hono@4.11.3)
+ '@hono/node-ws':
+ specifier: ^1.3.0
+ version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@rivetkit/react':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/react
ai:
specifier: ^4.0.38
version: 4.3.19(react@18.3.1)(zod@4.1.13)
+ hono:
+ specifier: ^4.0.0
+ version: 4.11.3
react:
specifier: ^18.2.0
version: 18.3.1
@@ -927,16 +920,13 @@ importers:
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
zod:
specifier: ^4.1.0
version: 4.1.13
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.11.3)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@types/node':
specifier: ^22.13.9
version: 22.19.1
@@ -952,9 +942,6 @@ importers:
concurrently:
specifier: ^8.2.2
version: 8.2.2
- srvx:
- specifier: ^0.10.0
- version: 0.10.0
tsup:
specifier: ^8.5.1
version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.3)(yaml@2.8.2)
@@ -971,125 +958,42 @@ importers:
specifier: ^3.1.1
version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.1)
- examples/express:
- dependencies:
- '@rivetkit/react':
- specifier: workspace:*
- version: link:../../rivetkit-typescript/packages/react
- express:
- specifier: ^5.1.0
- version: 5.1.0
- react:
- specifier: ^18.2.0
- version: 18.3.1
- react-dom:
- specifier: ^18.2.0
- version: 18.3.1(react@18.3.1)
- devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.11.3)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
- '@types/express':
- specifier: ^4.17.21
- version: 4.17.23
- '@types/node':
- specifier: ^22.13.9
- version: 22.18.1
- rivetkit:
- specifier: workspace:*
- version: link:../../rivetkit-typescript/packages/rivetkit
- tsx:
- specifier: ^3.12.7
- version: 3.14.0
- typescript:
- specifier: ^5.5.2
- version: 5.9.2
-
examples/hono:
dependencies:
- hono:
- specifier: ^4.7.0
- version: 4.9.8
- devDependencies:
'@hono/node-server':
specifier: ^1.19.1
version: 1.19.1(hono@4.9.8)
'@hono/node-ws':
specifier: ^1.3.0
version: 1.3.0(@hono/node-server@1.19.1(hono@4.9.8))(hono@4.9.8)
- '@types/node':
- specifier: ^22.13.9
- version: 22.18.1
- rivetkit:
- specifier: workspace:*
- version: link:../../rivetkit-typescript/packages/rivetkit
- tsx:
- specifier: ^3.12.7
- version: 3.14.0
- typescript:
- specifier: ^5.5.2
- version: 5.9.2
-
- examples/hono-bun:
- dependencies:
- '@rivetkit/react':
- specifier: workspace:*
- version: link:../../rivetkit-typescript/packages/react
hono:
specifier: ^4.7.0
version: 4.9.8
- react:
- specifier: ^18.2.0
- version: 18.3.1
- react-dom:
- specifier: ^18.2.0
- version: 18.3.1(react@18.3.1)
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
- devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.9.8)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.9.8))(hono@4.9.8)
- '@types/bun':
- specifier: ^1.1.15
- version: 1.3.0(@types/react@19.2.2)
- '@types/react':
- specifier: ^19
- version: 19.2.2
- '@types/react-dom':
- specifier: ^19
- version: 19.2.2(@types/react@19.2.2)
- '@vitejs/plugin-react':
- specifier: ^4.2.0
- version: 4.7.0(vite@5.4.20(@types/node@25.0.3)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.1))
- concurrently:
- specifier: ^8.2.2
- version: 8.2.2
srvx:
specifier: ^0.10.0
version: 0.10.0
- tsup:
- specifier: ^8.5.1
- version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@25.0.3))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.2)
+ devDependencies:
+ '@types/node':
+ specifier: ^22.13.9
+ version: 22.18.1
tsx:
specifier: ^3.12.7
version: 3.14.0
typescript:
specifier: ^5.5.2
version: 5.9.2
- vite:
- specifier: ^5.0.0
- version: 5.4.20(@types/node@25.0.3)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.1)
examples/hono-react:
dependencies:
+ '@hono/node-server':
+ specifier: ^1.19.1
+ version: 1.19.1(hono@4.9.8)
+ '@hono/node-ws':
+ specifier: ^1.3.0
+ version: 1.3.0(@hono/node-server@1.19.1(hono@4.9.8))(hono@4.9.8)
'@rivetkit/react':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/react
@@ -1104,14 +1008,11 @@ importers:
version: 18.3.1(react@18.3.1)
rivetkit:
specifier: workspace:*
- version: link:../../rivetkit-typescript/packages/rivetkit
- devDependencies:
- '@hono/node-server':
- specifier: ^1.19.1
- version: 1.19.1(hono@4.9.8)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.1(hono@4.9.8))(hono@4.9.8)
+ version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
+ devDependencies:
'@types/node':
specifier: ^22.13.9
version: 22.18.1
@@ -1127,9 +1028,6 @@ importers:
concurrently:
specifier: ^8.2.2
version: 8.2.2
- srvx:
- specifier: ^0.10.0
- version: 0.10.0
tsup:
specifier: ^8.5.1
version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.2)
@@ -1148,9 +1046,18 @@ importers:
examples/kitchen-sink:
dependencies:
+ '@hono/node-server':
+ specifier: ^1.19.7
+ version: 1.19.7(hono@4.11.3)
+ '@hono/node-ws':
+ specifier: ^1.3.0
+ version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@rivetkit/react':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/react
+ hono:
+ specifier: ^4.7.4
+ version: 4.11.3
react:
specifier: ^18.2.0
version: 18.3.1
@@ -1160,13 +1067,10 @@ importers:
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.11.3)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@types/node':
specifier: ^22.13.9
version: 22.19.3
@@ -1182,9 +1086,6 @@ importers:
concurrently:
specifier: ^8.2.2
version: 8.2.2
- srvx:
- specifier: ^0.10.0
- version: 0.10.0
tsup:
specifier: ^8.5.1
version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.3))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.2)
@@ -1200,9 +1101,18 @@ importers:
examples/multi-region:
dependencies:
+ '@hono/node-server':
+ specifier: ^1.19.7
+ version: 1.19.7(hono@4.11.3)
+ '@hono/node-ws':
+ specifier: ^1.3.0
+ version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@rivetkit/react':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/react
+ hono:
+ specifier: ^4.7.4
+ version: 4.11.3
react:
specifier: ^18.2.0
version: 18.3.1
@@ -1212,13 +1122,10 @@ importers:
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.11.3)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@types/node':
specifier: ^22.13.9
version: 22.19.1
@@ -1234,9 +1141,6 @@ importers:
concurrently:
specifier: ^8.2.2
version: 8.2.2
- srvx:
- specifier: ^0.10.0
- version: 0.10.0
tsup:
specifier: ^8.5.1
version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.3)(yaml@2.8.2)
@@ -1255,9 +1159,18 @@ importers:
examples/native-websockets:
dependencies:
+ '@hono/node-server':
+ specifier: ^1.19.7
+ version: 1.19.7(hono@4.11.3)
+ '@hono/node-ws':
+ specifier: ^1.3.0
+ version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@rivetkit/react':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/react
+ hono:
+ specifier: ^4.0.0
+ version: 4.11.3
react:
specifier: ^18.2.0
version: 18.3.1
@@ -1267,13 +1180,10 @@ importers:
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.11.3)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@types/node':
specifier: ^22.13.9
version: 22.19.1
@@ -1292,9 +1202,6 @@ importers:
concurrently:
specifier: ^8.2.2
version: 8.2.2
- srvx:
- specifier: ^0.10.0
- version: 0.10.0
tsup:
specifier: ^8.5.1
version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.3)(yaml@2.8.2)
@@ -1350,22 +1257,25 @@ importers:
examples/node:
dependencies:
- rivetkit:
- specifier: workspace:*
- version: link:../../rivetkit-typescript/packages/rivetkit
- devDependencies:
'@hono/node-server':
specifier: ^1.19.7
version: 1.19.7(hono@4.11.3)
'@hono/node-ws':
specifier: ^1.3.0
version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
- '@types/node':
- specifier: ^22.13.9
- version: 22.19.1
+ hono:
+ specifier: ^4.0.0
+ version: 4.11.3
+ rivetkit:
+ specifier: workspace:*
+ version: link:../../rivetkit-typescript/packages/rivetkit
srvx:
specifier: ^0.10.0
version: 0.10.0
+ devDependencies:
+ '@types/node':
+ specifier: ^22.13.9
+ version: 22.19.1
tsx:
specifier: ^3.12.7
version: 3.14.0
@@ -1375,6 +1285,12 @@ importers:
examples/raw-fetch-handler:
dependencies:
+ '@hono/node-server':
+ specifier: ^1.19.1
+ version: 1.19.1(hono@4.9.8)
+ '@hono/node-ws':
+ specifier: ^1.3.0
+ version: 1.3.0(@hono/node-server@1.19.1(hono@4.9.8))(hono@4.9.8)
'@rivetkit/react':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/react
@@ -1390,13 +1306,10 @@ importers:
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.1
- version: 1.19.1(hono@4.9.8)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.1(hono@4.9.8))(hono@4.9.8)
'@types/node':
specifier: ^22.10.6
version: 22.18.1
@@ -1412,9 +1325,6 @@ importers:
concurrently:
specifier: ^9.1.2
version: 9.2.1
- srvx:
- specifier: ^0.10.0
- version: 0.10.0
tsup:
specifier: ^8.5.1
version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.2)
@@ -1433,6 +1343,12 @@ importers:
examples/raw-websocket-handler:
dependencies:
+ '@hono/node-server':
+ specifier: ^1.19.7
+ version: 1.19.7(hono@4.9.8)
+ '@hono/node-ws':
+ specifier: ^1.3.0
+ version: 1.3.0(@hono/node-server@1.19.7(hono@4.9.8))(hono@4.9.8)
'@rivetkit/react':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/react
@@ -1448,13 +1364,10 @@ importers:
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.9.8)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.9.8))(hono@4.9.8)
'@types/node':
specifier: ^22.10.2
version: 22.18.1
@@ -1470,9 +1383,6 @@ importers:
concurrently:
specifier: ^9.1.0
version: 9.2.1
- srvx:
- specifier: ^0.10.0
- version: 0.10.0
tsup:
specifier: ^8.5.1
version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.2)
@@ -1491,6 +1401,12 @@ importers:
examples/raw-websocket-handler-proxy:
dependencies:
+ '@hono/node-server':
+ specifier: ^1.19.1
+ version: 1.19.1(hono@4.9.8)
+ '@hono/node-ws':
+ specifier: ^1.2.0
+ version: 1.2.0(@hono/node-server@1.19.1(hono@4.9.8))(hono@4.9.8)
'@rivetkit/react':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/react
@@ -1506,16 +1422,13 @@ importers:
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
ws:
specifier: ^8.18.0
version: 8.18.3
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.1
- version: 1.19.1(hono@4.9.8)
- '@hono/node-ws':
- specifier: ^1.2.0
- version: 1.2.0(@hono/node-server@1.19.1(hono@4.9.8))(hono@4.9.8)
'@types/node':
specifier: ^22.10.2
version: 22.18.1
@@ -1534,9 +1447,6 @@ importers:
concurrently:
specifier: ^9.1.0
version: 9.2.1
- srvx:
- specifier: ^0.10.0
- version: 0.10.0
tsup:
specifier: ^8.5.1
version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.2)
@@ -1555,9 +1465,18 @@ importers:
examples/react:
dependencies:
+ '@hono/node-server':
+ specifier: ^1.19.7
+ version: 1.19.7(hono@4.11.3)
+ '@hono/node-ws':
+ specifier: ^1.3.0
+ version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@rivetkit/react':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/react
+ hono:
+ specifier: ^4.7.0
+ version: 4.11.3
react:
specifier: ^18.2.0
version: 18.3.1
@@ -1567,13 +1486,10 @@ importers:
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.11.3)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@types/node':
specifier: ^22.13.9
version: 22.18.1
@@ -1589,9 +1505,6 @@ importers:
concurrently:
specifier: ^8.2.2
version: 8.2.2
- srvx:
- specifier: ^0.10.0
- version: 0.10.0
tsup:
specifier: ^8.5.1
version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.2)
@@ -1610,9 +1523,18 @@ importers:
examples/scheduling:
dependencies:
+ '@hono/node-server':
+ specifier: ^1.19.7
+ version: 1.19.7(hono@4.11.3)
+ '@hono/node-ws':
+ specifier: ^1.3.0
+ version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@rivetkit/react':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/react
+ hono:
+ specifier: ^4.0.0
+ version: 4.11.3
react:
specifier: ^18.2.0
version: 18.3.1
@@ -1622,13 +1544,10 @@ importers:
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.11.3)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@types/node':
specifier: ^22.13.9
version: 22.19.1
@@ -1644,9 +1563,6 @@ importers:
concurrently:
specifier: ^8.2.2
version: 8.2.2
- srvx:
- specifier: ^0.10.0
- version: 0.10.0
tsup:
specifier: ^8.5.1
version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.3)(yaml@2.8.2)
@@ -1665,9 +1581,18 @@ importers:
examples/state:
dependencies:
+ '@hono/node-server':
+ specifier: ^1.19.7
+ version: 1.19.7(hono@4.11.3)
+ '@hono/node-ws':
+ specifier: ^1.3.0
+ version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@rivetkit/react':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/react
+ hono:
+ specifier: ^4.0.0
+ version: 4.11.3
react:
specifier: ^18.2.0
version: 18.3.1
@@ -1677,13 +1602,10 @@ importers:
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.11.3)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@types/node':
specifier: ^22.13.9
version: 22.19.1
@@ -1699,9 +1621,6 @@ importers:
concurrently:
specifier: ^8.2.2
version: 8.2.2
- srvx:
- specifier: ^0.10.0
- version: 0.10.0
tsup:
specifier: ^8.5.1
version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.19.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.3)(yaml@2.8.2)
@@ -1720,9 +1639,18 @@ importers:
examples/stream:
dependencies:
+ '@hono/node-server':
+ specifier: ^1.19.7
+ version: 1.19.7(hono@4.11.3)
+ '@hono/node-ws':
+ specifier: ^1.3.0
+ version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@rivetkit/react':
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/react
+ hono:
+ specifier: ^4.0.0
+ version: 4.11.3
react:
specifier: ^18.2.0
version: 18.3.1
@@ -1732,13 +1660,10 @@ importers:
rivetkit:
specifier: workspace:*
version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.11.3)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@types/node':
specifier: ^20.0.0
version: 20.19.13
@@ -1754,9 +1679,6 @@ importers:
concurrently:
specifier: ^8.2.0
version: 8.2.2
- srvx:
- specifier: ^0.10.0
- version: 0.10.0
tsup:
specifier: ^8.5.1
version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@20.19.13))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.2)
@@ -1775,28 +1697,40 @@ importers:
examples/trpc:
dependencies:
+ '@hono/node-server':
+ specifier: ^1.19.7
+ version: 1.19.7(hono@4.11.3)
+ '@hono/node-ws':
+ specifier: ^1.3.0
+ version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
+ '@hono/trpc-server':
+ specifier: ^0.3.0
+ version: 0.3.4(@trpc/server@11.6.0(typescript@5.9.2))(hono@4.11.3)
'@trpc/client':
specifier: ^11.3.1
version: 11.6.0(@trpc/server@11.6.0(typescript@5.9.2))(typescript@5.9.2)
'@trpc/server':
specifier: ^11.4.2
version: 11.6.0(typescript@5.9.2)
+ hono:
+ specifier: ^4.7.11
+ version: 4.11.3
+ rivetkit:
+ specifier: workspace:*
+ version: link:../../rivetkit-typescript/packages/rivetkit
+ srvx:
+ specifier: ^0.10.0
+ version: 0.10.0
zod:
specifier: ^3.25.76
version: 3.25.76
devDependencies:
- '@hono/node-server':
- specifier: ^1.19.7
- version: 1.19.7(hono@4.11.3)
- '@hono/node-ws':
- specifier: ^1.3.0
- version: 1.3.0(@hono/node-server@1.19.7(hono@4.11.3))(hono@4.11.3)
'@types/node':
specifier: ^22.13.9
version: 22.18.1
- rivetkit:
- specifier: workspace:*
- version: link:../../rivetkit-typescript/packages/rivetkit
+ tsup:
+ specifier: ^8.4.0
+ version: 8.5.1(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.2)
tsx:
specifier: ^3.12.7
version: 3.14.0
@@ -2103,6 +2037,9 @@ importers:
react-dom:
specifier: ^19.1.1
version: 19.1.1(react@19.1.1)
+ react-error-boundary:
+ specifier: ^6.0.3
+ version: 6.0.3(react@19.1.1)
react-hook-form:
specifier: ^7.62.0
version: 7.62.0(react@19.1.1)
@@ -2267,7 +2204,7 @@ importers:
version: 3.13.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
'@uiw/codemirror-extensions-basic-setup':
specifier: ^4.25.1
- version: 4.25.1(@codemirror/autocomplete@6.19.0)(@codemirror/commands@6.8.1)(@codemirror/language@6.11.3)(@codemirror/lint@6.9.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.2)
+ version: 4.25.1(@codemirror/autocomplete@6.19.0)(@codemirror/commands@6.9.0)(@codemirror/language@6.11.3)(@codemirror/lint@6.9.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.2)
'@uiw/codemirror-theme-github':
specifier: ^4.25.1
version: 4.25.1(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.2)
@@ -2657,6 +2594,9 @@ importers:
eventsource:
specifier: ^4.0.0
version: 4.0.0
+ local-pkg:
+ specifier: ^0.5.1
+ version: 0.5.1
tsup:
specifier: ^8.4.0
version: 8.5.0(@microsoft/api-extractor@7.53.2(@types/node@22.18.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.2)
@@ -5353,6 +5293,13 @@ packages:
'@standard-schema/spec': 1.0.0
hono: '>=3.9.0'
+ '@hono/trpc-server@0.3.4':
+ resolution: {integrity: sha512-xFOPjUPnII70FgicDzOJy1ufIoBTu8eF578zGiDOrYOrYN8CJe140s9buzuPkX+SwJRYK8LjEBHywqZtxdm8aA==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ '@trpc/server': ^10.10.0 || >11.0.0-rc
+ hono: '>=4.*'
+
'@hono/zod-openapi@1.1.5':
resolution: {integrity: sha512-EAnY6ad4yt/MUKHx716BEGGOXSl5d0/FOLozOYB/pmSEFq07qrzefKFtBEMAgd3hlpJXjH+4lwgTtlAo+BGBgQ==}
engines: {node: '>=16.0.0'}
@@ -7724,21 +7671,12 @@ packages:
'@types/better-sqlite3@7.6.13':
resolution: {integrity: sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==}
- '@types/body-parser@1.19.6':
- resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==}
-
- '@types/bun@1.3.0':
- resolution: {integrity: sha512-+lAGCYjXjip2qY375xX/scJeVRmZ5cY0wyHYyCYxNcdEXrQ4AOe3gACgd4iQ8ksOslJtW4VNxBJ8llUwc3a6AA==}
-
'@types/canvas-confetti@1.9.0':
resolution: {integrity: sha512-aBGj/dULrimR1XDZLtG9JwxX1b4HPRF6CX9Yfwh3NvstZEm1ZL7RBnel4keCPSqs1ANRu1u2Aoz9R+VmtjYuTg==}
'@types/chai@5.2.3':
resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==}
- '@types/connect@3.4.38':
- resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
-
'@types/cors@2.8.19':
resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==}
@@ -7775,9 +7713,6 @@ packages:
'@types/deep-eql@4.0.2':
resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
- '@types/deno@2.5.0':
- resolution: {integrity: sha512-g8JS38vmc0S87jKsFzre+0ZyMOUDHPVokEJymSCRlL57h6f/FdKPWBXgdFh3Z8Ees9sz11qt9VWELU9Y9ZkiVw==}
-
'@types/diff-match-patch@1.0.36':
resolution: {integrity: sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==}
@@ -7796,12 +7731,6 @@ packages:
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
- '@types/express-serve-static-core@4.19.7':
- resolution: {integrity: sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==}
-
- '@types/express@4.17.23':
- resolution: {integrity: sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==}
-
'@types/file-saver@2.0.7':
resolution: {integrity: sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A==}
@@ -7811,9 +7740,6 @@ packages:
'@types/hast@3.0.4':
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
- '@types/http-errors@2.0.5':
- resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==}
-
'@types/invariant@2.2.37':
resolution: {integrity: sha512-IwpIMieE55oGWiXkQPSBY1nw1nFs6bsKXTFskNY8sdS17K24vyEBRQZEwlRS7ZmXCWnJcQtbxWzly+cODWGs2A==}
@@ -7850,9 +7776,6 @@ packages:
'@types/mdx@2.0.13':
resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==}
- '@types/mime@1.3.5':
- resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==}
-
'@types/mime@4.0.0':
resolution: {integrity: sha512-5eEkJZ/BLvTE3vXGKkWlyTSUVZuzj23Wj8PoyOq2lt5I3CYbiLBOPb3XmCW6QcuOibIUE6emHXHt9E/F/rCa6w==}
deprecated: This is a stub types definition. mime provides its own type definitions, so you do not need this installed.
@@ -7899,15 +7822,9 @@ packages:
'@types/postcss-modules-scope@3.0.4':
resolution: {integrity: sha512-//ygSisVq9kVI0sqx3UPLzWIMCmtSVrzdljtuaAEJtGoGnpjBikZ2sXO5MpH9SnWX9HRfXxHifDAXcQjupWnIQ==}
- '@types/prompts@2.4.9':
- resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==}
-
'@types/qs@6.9.8':
resolution: {integrity: sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==}
- '@types/range-parser@1.2.7':
- resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==}
-
'@types/react-dom@19.2.2':
resolution: {integrity: sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==}
peerDependencies:
@@ -7925,15 +7842,6 @@ packages:
'@types/semver@7.7.1':
resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==}
- '@types/send@0.17.5':
- resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==}
-
- '@types/send@1.2.0':
- resolution: {integrity: sha512-zBF6vZJn1IaMpg3xUF25VK3gd3l8zwE0ZLRX7dsQyQi+jp4E8mMDJNGDYnYse+bQhYwWERTxVwHpi3dMOq7RKQ==}
-
- '@types/serve-static@1.15.9':
- resolution: {integrity: sha512-dOTIuqpWLyl3BBXU3maNQsS4A3zuuoYRNIvYSxxhebPfXg2mzWQEPne/nlJ37yOse6uGgR386uTpdsx4D0QZWA==}
-
'@types/stack-utils@2.0.3':
resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
@@ -8382,10 +8290,6 @@ packages:
resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
engines: {node: '>= 0.6'}
- accepts@2.0.0:
- resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
- engines: {node: '>= 0.6'}
-
acorn-import-phases@1.0.4:
resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==}
engines: {node: '>=10.13.0'}
@@ -8836,10 +8740,6 @@ packages:
blake3-wasm@2.1.5:
resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==}
- body-parser@2.2.0:
- resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==}
- engines: {node: '>=18'}
-
bplist-creator@0.1.0:
resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==}
@@ -9208,14 +9108,6 @@ packages:
constant-case@3.0.4:
resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==}
- content-disposition@1.0.0:
- resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==}
- engines: {node: '>= 0.6'}
-
- content-type@1.0.5:
- resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
- engines: {node: '>= 0.6'}
-
convert-source-map@1.9.0:
resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
@@ -9225,10 +9117,6 @@ packages:
cookie-es@1.2.2:
resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==}
- cookie-signature@1.2.2:
- resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==}
- engines: {node: '>=6.6.0'}
-
cookie@0.7.2:
resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
engines: {node: '>= 0.6'}
@@ -10196,10 +10084,6 @@ packages:
exponential-backoff@3.1.3:
resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==}
- express@5.1.0:
- resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==}
- engines: {node: '>= 18'}
-
exsolve@1.0.7:
resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==}
@@ -10355,10 +10239,6 @@ packages:
resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==}
engines: {node: '>= 0.8'}
- finalhandler@2.1.0:
- resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==}
- engines: {node: '>= 0.8'}
-
find-root@1.1.0:
resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==}
@@ -10421,10 +10301,6 @@ packages:
resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==}
engines: {node: '>= 12.20'}
- forwarded@0.2.0:
- resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
- engines: {node: '>= 0.6'}
-
fraction.js@4.3.7:
resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
@@ -10473,10 +10349,6 @@ packages:
resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
engines: {node: '>= 0.6'}
- fresh@2.0.0:
- resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==}
- engines: {node: '>= 0.8'}
-
fs-constants@1.0.0:
resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
@@ -10802,10 +10674,6 @@ packages:
html-void-elements@3.0.0:
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
- http-errors@2.0.0:
- resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
- engines: {node: '>= 0.8'}
-
http-errors@2.0.1:
resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==}
engines: {node: '>= 0.8'}
@@ -10923,10 +10791,6 @@ packages:
resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==}
engines: {node: '>= 12'}
- ipaddr.js@1.9.1:
- resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
- engines: {node: '>= 0.10'}
-
is-alphabetical@2.0.1:
resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
@@ -11033,9 +10897,6 @@ packages:
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
engines: {node: '>=12'}
- is-promise@4.0.0:
- resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}
-
is-regex@1.2.1:
resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
engines: {node: '>= 0.4'}
@@ -11695,20 +11556,12 @@ packages:
mdx-annotations@0.1.4:
resolution: {integrity: sha512-SUYBUXP1qbgr0nRFFnUBg4HxxTbYyl5rE38fLTaIm0naPK+EhmKa0wRlUdgTMlMBj5gdCMwP1n7+L47JIHHWUQ==}
- media-typer@1.1.0:
- resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
- engines: {node: '>= 0.8'}
-
memoize-one@4.0.3:
resolution: {integrity: sha512-QmpUu4KqDmX0plH4u+tf0riMc1KHE1+lw95cMrLlXQAFOx/xnBtwhZ52XJxd9X2O6kwKBqX32kmhbhlobD0cuw==}
memoize-one@5.2.1:
resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==}
- merge-descriptors@2.0.0:
- resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==}
- engines: {node: '>=18'}
-
merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
@@ -11953,10 +11806,6 @@ packages:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
- mime-types@3.0.1:
- resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==}
- engines: {node: '>= 0.6'}
-
mime@1.6.0:
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
engines: {node: '>=4'}
@@ -12124,10 +11973,6 @@ packages:
resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==}
engines: {node: '>= 0.6'}
- negotiator@1.0.0:
- resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
- engines: {node: '>= 0.6'}
-
neo-async@2.6.2:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
@@ -12540,9 +12385,6 @@ packages:
path-to-regexp@6.3.0:
resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==}
- path-to-regexp@8.3.0:
- resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==}
-
path-type@4.0.0:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
@@ -12880,10 +12722,6 @@ packages:
property-information@7.1.0:
resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
- proxy-addr@2.0.7:
- resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
- engines: {node: '>= 0.10'}
-
proxy-agent@6.5.0:
resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==}
engines: {node: '>= 14'}
@@ -12951,10 +12789,6 @@ packages:
resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
engines: {node: '>= 0.6'}
- raw-body@3.0.1:
- resolution: {integrity: sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==}
- engines: {node: '>= 0.10'}
-
rc@1.2.8:
resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
hasBin: true
@@ -12994,6 +12828,11 @@ packages:
peerDependencies:
react: ^19.2.0
+ react-error-boundary@6.0.3:
+ resolution: {integrity: sha512-5guqn2UYpCFjE8UDMA8J7Kke+YSGBFrKQRJb3XdcaGZXYINZfQXgBt3ifY6MvjkN7QROc5A8zclyoSCwrcRUKw==}
+ peerDependencies:
+ react: ^18.0.0 || ^19.0.0
+
react-fast-compare@3.2.2:
resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==}
@@ -13372,10 +13211,6 @@ packages:
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
- router@2.2.0:
- resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==}
- engines: {node: '>= 18'}
-
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
@@ -13477,10 +13312,6 @@ packages:
resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==}
engines: {node: '>= 0.8.0'}
- send@1.2.0:
- resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==}
- engines: {node: '>= 18'}
-
sentence-case@3.0.4:
resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==}
@@ -13505,10 +13336,6 @@ packages:
resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==}
engines: {node: '>= 0.8.0'}
- serve-static@2.2.0:
- resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==}
- engines: {node: '>= 18'}
-
server-only@0.0.1:
resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==}
@@ -13724,10 +13551,6 @@ packages:
resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
engines: {node: '>= 0.6'}
- statuses@2.0.1:
- resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
- engines: {node: '>= 0.8'}
-
statuses@2.0.2:
resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
engines: {node: '>= 0.8'}
@@ -14263,10 +14086,6 @@ packages:
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
engines: {node: '>=16'}
- type-is@2.0.1:
- resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==}
- engines: {node: '>= 0.6'}
-
typed-array-buffer@1.0.3:
resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
engines: {node: '>= 0.4'}
@@ -14635,6 +14454,12 @@ packages:
vite-plugin-favicons-inject@2.2.0:
resolution: {integrity: sha512-MaqZE3IjwFffIED38yKcI5BKGkV039N6ilhPeOfW4TILzSKMBNd8Q0ehu0mwbl1emWH2tGcuwV3ZIzDKfb0vIQ==}
+ vite-plugin-srvx@0.1.0:
+ resolution: {integrity: sha512-1jUz/BsHD4MY2QwexIk00fjZPzi4ldEQGjzPrFPyWaALZAF1RoWazG5SJZbcJf2YdBwFOsvf6AfX/dkcT5dA1g==}
+ peerDependencies:
+ srvx: '>=0.9.0'
+ vite: ^5.0.0 || ^6.0.0
+
vite-tsconfig-paths@5.1.4:
resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==}
peerDependencies:
@@ -17658,6 +17483,11 @@ snapshots:
'@standard-schema/spec': 1.0.0
hono: 4.9.8
+ '@hono/trpc-server@0.3.4(@trpc/server@11.6.0(typescript@5.9.2))(hono@4.11.3)':
+ dependencies:
+ '@trpc/server': 11.6.0(typescript@5.9.2)
+ hono: 4.11.3
+
'@hono/zod-openapi@1.1.5(hono@4.9.8)(zod@4.1.13)':
dependencies:
'@asteasolutions/zod-to-openapi': 8.2.0(zod@4.1.13)
@@ -20527,17 +20357,6 @@ snapshots:
dependencies:
'@types/node': 22.19.3
- '@types/body-parser@1.19.6':
- dependencies:
- '@types/connect': 3.4.38
- '@types/node': 22.19.3
-
- '@types/bun@1.3.0(@types/react@19.2.2)':
- dependencies:
- bun-types: 1.3.0(@types/react@19.2.2)
- transitivePeerDependencies:
- - '@types/react'
-
'@types/canvas-confetti@1.9.0': {}
'@types/chai@5.2.3':
@@ -20545,10 +20364,6 @@ snapshots:
'@types/deep-eql': 4.0.2
assertion-error: 2.0.1
- '@types/connect@3.4.38':
- dependencies:
- '@types/node': 22.19.3
-
'@types/cors@2.8.19':
dependencies:
'@types/node': 22.19.3
@@ -20583,8 +20398,6 @@ snapshots:
'@types/deep-eql@4.0.2': {}
- '@types/deno@2.5.0': {}
-
'@types/diff-match-patch@1.0.36': {}
'@types/escape-html@1.0.4': {}
@@ -20605,20 +20418,6 @@ snapshots:
'@types/estree@1.0.8': {}
- '@types/express-serve-static-core@4.19.7':
- dependencies:
- '@types/node': 22.19.3
- '@types/qs': 6.9.8
- '@types/range-parser': 1.2.7
- '@types/send': 1.2.0
-
- '@types/express@4.17.23':
- dependencies:
- '@types/body-parser': 1.19.6
- '@types/express-serve-static-core': 4.19.7
- '@types/qs': 6.9.8
- '@types/serve-static': 1.15.9
-
'@types/file-saver@2.0.7': {}
'@types/graceful-fs@4.1.9':
@@ -20629,8 +20428,6 @@ snapshots:
dependencies:
'@types/unist': 3.0.3
- '@types/http-errors@2.0.5': {}
-
'@types/invariant@2.2.37': {}
'@types/istanbul-lib-coverage@2.0.6': {}
@@ -20664,8 +20461,6 @@ snapshots:
'@types/mdx@2.0.13': {}
- '@types/mime@1.3.5': {}
-
'@types/mime@4.0.0':
dependencies:
mime: 4.0.7
@@ -20722,15 +20517,8 @@ snapshots:
dependencies:
postcss: 8.5.6
- '@types/prompts@2.4.9':
- dependencies:
- '@types/node': 22.19.1
- kleur: 3.0.3
-
'@types/qs@6.9.8': {}
- '@types/range-parser@1.2.7': {}
-
'@types/react-dom@19.2.2(@types/react@19.2.2)':
dependencies:
'@types/react': 19.2.2
@@ -20747,21 +20535,6 @@ snapshots:
'@types/semver@7.7.1': {}
- '@types/send@0.17.5':
- dependencies:
- '@types/mime': 1.3.5
- '@types/node': 22.19.3
-
- '@types/send@1.2.0':
- dependencies:
- '@types/node': 22.19.3
-
- '@types/serve-static@1.15.9':
- dependencies:
- '@types/http-errors': 2.0.5
- '@types/node': 22.19.3
- '@types/send': 0.17.5
-
'@types/stack-utils@2.0.3': {}
'@types/trusted-types@2.0.7': {}
@@ -20904,6 +20677,16 @@ snapshots:
'@codemirror/state': 6.5.2
'@codemirror/view': 6.38.2
+ '@uiw/codemirror-extensions-basic-setup@4.25.1(@codemirror/autocomplete@6.19.0)(@codemirror/commands@6.9.0)(@codemirror/language@6.11.3)(@codemirror/lint@6.9.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.2)':
+ dependencies:
+ '@codemirror/autocomplete': 6.19.0
+ '@codemirror/commands': 6.9.0
+ '@codemirror/language': 6.11.3
+ '@codemirror/lint': 6.9.0
+ '@codemirror/search': 6.5.11
+ '@codemirror/state': 6.5.2
+ '@codemirror/view': 6.38.2
+
'@uiw/codemirror-theme-github@4.25.1(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.2)':
dependencies:
'@uiw/codemirror-themes': 4.25.1(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.2)
@@ -21073,18 +20856,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@vitejs/plugin-react@4.7.0(vite@5.4.20(@types/node@25.0.3)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.1))':
- dependencies:
- '@babel/core': 7.28.4
- '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4)
- '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4)
- '@rolldown/pluginutils': 1.0.0-beta.27
- '@types/babel__core': 7.20.5
- react-refresh: 0.17.0
- vite: 5.4.20(@types/node@25.0.3)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.1)
- transitivePeerDependencies:
- - supports-color
-
'@vitejs/plugin-react@4.7.0(vite@6.4.1(@types/node@22.18.1)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.1)(tsx@4.20.5)(yaml@2.8.2))':
dependencies:
'@babel/core': 7.28.4
@@ -21414,11 +21185,6 @@ snapshots:
mime-types: 2.1.35
negotiator: 0.6.3
- accepts@2.0.0:
- dependencies:
- mime-types: 3.0.1
- negotiator: 1.0.0
-
acorn-import-phases@1.0.4(acorn@8.15.0):
dependencies:
acorn: 8.15.0
@@ -21440,7 +21206,7 @@ snapshots:
actor-core@0.6.3(ws@8.18.3):
dependencies:
cbor-x: 1.6.0
- hono: 4.9.8
+ hono: 4.11.3
on-change: 5.0.1
p-retry: 6.2.1
zod: 3.25.76
@@ -21942,20 +21708,6 @@ snapshots:
blake3-wasm@2.1.5: {}
- body-parser@2.2.0:
- dependencies:
- bytes: 3.1.2
- content-type: 1.0.5
- debug: 4.4.1
- http-errors: 2.0.0
- iconv-lite: 0.6.3
- on-finished: 2.4.1
- qs: 6.14.0
- raw-body: 3.0.1
- type-is: 2.0.1
- transitivePeerDependencies:
- - supports-color
-
bplist-creator@0.1.0:
dependencies:
stream-buffers: 2.2.0
@@ -22030,6 +21782,7 @@ snapshots:
dependencies:
'@types/node': 22.19.3
'@types/react': 19.2.2
+ optional: true
bundle-require@5.1.0(esbuild@0.25.9):
dependencies:
@@ -22387,20 +22140,12 @@ snapshots:
tslib: 2.8.1
upper-case: 2.0.2
- content-disposition@1.0.0:
- dependencies:
- safe-buffer: 5.2.1
-
- content-type@1.0.5: {}
-
convert-source-map@1.9.0: {}
convert-source-map@2.0.0: {}
cookie-es@1.2.2: {}
- cookie-signature@1.2.2: {}
-
cookie@0.7.2: {}
cookie@1.0.2: {}
@@ -23145,7 +22890,7 @@ snapshots:
eslint: 9.39.1(jiti@1.21.7)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7))
eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.1(jiti@1.21.7))
eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@1.21.7))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@1.21.7))
@@ -23178,7 +22923,7 @@ snapshots:
tinyglobby: 0.2.15
unrs-resolver: 1.11.1
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7))
transitivePeerDependencies:
- supports-color
@@ -23193,7 +22938,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -23619,38 +23364,6 @@ snapshots:
exponential-backoff@3.1.3: {}
- express@5.1.0:
- dependencies:
- accepts: 2.0.0
- body-parser: 2.2.0
- content-disposition: 1.0.0
- content-type: 1.0.5
- cookie: 0.7.2
- cookie-signature: 1.2.2
- debug: 4.4.1
- encodeurl: 2.0.0
- escape-html: 1.0.3
- etag: 1.8.1
- finalhandler: 2.1.0
- fresh: 2.0.0
- http-errors: 2.0.0
- merge-descriptors: 2.0.0
- mime-types: 3.0.1
- on-finished: 2.4.1
- once: 1.4.0
- parseurl: 1.3.3
- proxy-addr: 2.0.7
- qs: 6.14.0
- range-parser: 1.2.1
- router: 2.2.0
- send: 1.2.0
- serve-static: 2.2.0
- statuses: 2.0.2
- type-is: 2.0.1
- vary: 1.1.2
- transitivePeerDependencies:
- - supports-color
-
exsolve@1.0.7: {}
extend@3.0.2: {}
@@ -23799,17 +23512,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- finalhandler@2.1.0:
- dependencies:
- debug: 4.4.1
- encodeurl: 2.0.0
- escape-html: 1.0.3
- on-finished: 2.4.1
- parseurl: 1.3.3
- statuses: 2.0.2
- transitivePeerDependencies:
- - supports-color
-
find-root@1.1.0: {}
find-up@4.1.0:
@@ -23875,8 +23577,6 @@ snapshots:
node-domexception: 1.0.0
web-streams-polyfill: 4.0.0-beta.3
- forwarded@0.2.0: {}
-
fraction.js@4.3.7: {}
fraction.js@5.3.4: {}
@@ -23907,7 +23607,7 @@ snapshots:
'@tanstack/react-query': 5.87.1(react@19.2.0)
expo-router: 4.0.21(expo-constants@18.0.13)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0)
glob: 11.0.3
- hono: 4.9.8
+ hono: 4.11.3
openai: 4.104.0(ws@8.19.0)(zod@3.25.76)
openapi: 1.0.1
react: 19.2.0
@@ -23936,7 +23636,7 @@ snapshots:
expo-router: 4.0.21(expo-constants@18.0.13)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@19.2.0)
freestyle-sandboxes: 0.0.66(expo-constants@18.0.13)(expo-linking@7.0.5)(expo@54.0.18)(react-dom@18.3.1(react@18.3.1))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1))(react-native@0.82.1(@babel/core@7.28.5)(@types/react@19.2.2)(react@18.3.1))(ws@8.19.0)
glob: 11.0.3
- hono: 4.9.8
+ hono: 4.11.3
openai: 4.104.0(ws@8.19.0)(zod@3.25.76)
openapi: 1.0.1
react: 19.2.0
@@ -23959,8 +23659,6 @@ snapshots:
fresh@0.5.2: {}
- fresh@2.0.0: {}
-
fs-constants@1.0.0: {}
fs-extra@11.3.3:
@@ -24386,14 +24084,6 @@ snapshots:
html-void-elements@3.0.0: {}
- http-errors@2.0.0:
- dependencies:
- depd: 2.0.0
- inherits: 2.0.4
- setprototypeof: 1.2.0
- statuses: 2.0.1
- toidentifier: 1.0.1
-
http-errors@2.0.1:
dependencies:
depd: 2.0.0
@@ -24434,6 +24124,7 @@ snapshots:
iconv-lite@0.6.3:
dependencies:
safer-buffer: 2.1.2
+ optional: true
iconv-lite@0.7.0:
dependencies:
@@ -24501,8 +24192,6 @@ snapshots:
ip-address@10.1.0: {}
- ipaddr.js@1.9.1: {}
-
is-alphabetical@2.0.1: {}
is-alphanumerical@2.0.1:
@@ -24603,8 +24292,6 @@ snapshots:
is-plain-obj@4.1.0: {}
- is-promise@4.0.0: {}
-
is-regex@1.2.1:
dependencies:
call-bound: 1.0.4
@@ -25363,14 +25050,10 @@ snapshots:
estree-util-visit: 1.2.1
unist-util-visit: 4.1.2
- media-typer@1.1.0: {}
-
memoize-one@4.0.3: {}
memoize-one@5.2.1: {}
- merge-descriptors@2.0.0: {}
-
merge-stream@2.0.0: {}
merge2@1.4.1: {}
@@ -26002,10 +25685,6 @@ snapshots:
dependencies:
mime-db: 1.52.0
- mime-types@3.0.1:
- dependencies:
- mime-db: 1.54.0
-
mime@1.6.0: {}
mime@3.0.0: {}
@@ -26157,8 +25836,6 @@ snapshots:
negotiator@0.6.4: {}
- negotiator@1.0.0: {}
-
neo-async@2.6.2: {}
nested-error-stacks@2.0.1: {}
@@ -26642,8 +26319,6 @@ snapshots:
path-to-regexp@6.3.0: {}
- path-to-regexp@8.3.0: {}
-
path-type@4.0.0: {}
pathe@1.1.2: {}
@@ -26944,11 +26619,6 @@ snapshots:
property-information@7.1.0: {}
- proxy-addr@2.0.7:
- dependencies:
- forwarded: 0.2.0
- ipaddr.js: 1.9.1
-
proxy-agent@6.5.0:
dependencies:
agent-base: 7.1.4
@@ -27042,13 +26712,6 @@ snapshots:
range-parser@1.2.1: {}
- raw-body@3.0.1:
- dependencies:
- bytes: 3.1.2
- http-errors: 2.0.0
- iconv-lite: 0.7.0
- unpipe: 1.0.0
-
rc@1.2.8:
dependencies:
deep-extend: 0.6.0
@@ -27095,6 +26758,10 @@ snapshots:
react: 19.2.0
scheduler: 0.27.0
+ react-error-boundary@6.0.3(react@19.1.1):
+ dependencies:
+ react: 19.1.1
+
react-fast-compare@3.2.2: {}
react-freeze@1.0.4(react@18.3.1):
@@ -27678,16 +27345,6 @@ snapshots:
'@rollup/rollup-win32-x64-msvc': 4.53.3
fsevents: 2.3.3
- router@2.2.0:
- dependencies:
- debug: 4.4.1
- depd: 2.0.0
- is-promise: 4.0.0
- parseurl: 1.3.3
- path-to-regexp: 8.3.0
- transitivePeerDependencies:
- - supports-color
-
run-parallel@1.2.0:
dependencies:
queue-microtask: 1.2.3
@@ -27796,22 +27453,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- send@1.2.0:
- dependencies:
- debug: 4.4.1
- encodeurl: 2.0.0
- escape-html: 1.0.3
- etag: 1.8.1
- fresh: 2.0.0
- http-errors: 2.0.0
- mime-types: 3.0.1
- ms: 2.1.3
- on-finished: 2.4.1
- range-parser: 1.2.1
- statuses: 2.0.2
- transitivePeerDependencies:
- - supports-color
-
sentence-case@3.0.4:
dependencies:
no-case: 3.0.4
@@ -27839,15 +27480,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- serve-static@2.2.0:
- dependencies:
- encodeurl: 2.0.0
- escape-html: 1.0.3
- parseurl: 1.3.3
- send: 1.2.0
- transitivePeerDependencies:
- - supports-color
-
server-only@0.0.1: {}
set-function-length@1.2.2:
@@ -28152,8 +27784,6 @@ snapshots:
statuses@1.5.0: {}
- statuses@2.0.1: {}
-
statuses@2.0.2: {}
std-env@3.9.0: {}
@@ -28987,35 +28617,6 @@ snapshots:
- tsx
- yaml
- tsup@8.5.1(@microsoft/api-extractor@7.53.2(@types/node@25.0.3))(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(typescript@5.9.2)(yaml@2.8.2):
- dependencies:
- bundle-require: 5.1.0(esbuild@0.27.2)
- cac: 6.7.14
- chokidar: 4.0.3
- consola: 3.4.2
- debug: 4.4.3
- esbuild: 0.27.2
- fix-dts-default-cjs-exports: 1.0.1
- joycon: 3.1.1
- picocolors: 1.1.1
- postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@3.14.0)(yaml@2.8.2)
- resolve-from: 5.0.0
- rollup: 4.53.3
- source-map: 0.7.6
- sucrase: 3.35.1
- tinyexec: 0.3.2
- tinyglobby: 0.2.15
- tree-kill: 1.2.2
- optionalDependencies:
- '@microsoft/api-extractor': 7.53.2(@types/node@25.0.3)
- postcss: 8.5.6
- typescript: 5.9.2
- transitivePeerDependencies:
- - jiti
- - supports-color
- - tsx
- - yaml
-
tsx@3.14.0:
dependencies:
esbuild: 0.18.20
@@ -29083,12 +28684,6 @@ snapshots:
type-fest@4.41.0: {}
- type-is@2.0.1:
- dependencies:
- content-type: 1.0.5
- media-typer: 1.1.0
- mime-types: 3.0.1
-
typed-array-buffer@1.0.3:
dependencies:
call-bound: 1.0.4
@@ -29675,6 +29270,11 @@ snapshots:
dependencies:
favicons: 7.2.0
+ vite-plugin-srvx@0.1.0(srvx@0.10.0)(vite@5.4.20(@types/node@22.18.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.1)):
+ dependencies:
+ srvx: 0.10.0
+ vite: 5.4.20(@types/node@22.18.1)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.1)
+
vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@5.4.20(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.30.2)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.1)):
dependencies:
debug: 4.4.1