Project created from basic template

This commit is contained in:
Quests Agent
2025-09-29 17:56:30 +02:00
commit a4ecf845bf
26 changed files with 3887 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
import { createStorage, StorageValue, WatchEvent } from "unstorage";
import fsDriver from "unstorage/drivers/fs";
const STORAGE_PATH = "./.storage"; // It is .gitignored
export function createKV<T extends StorageValue>(name: string) {
const storage = createStorage<T>({
driver: fsDriver({ base: `${STORAGE_PATH}/${name}` }),
});
// Async generator to play work well with oRPC live queries
async function* subscribe() {
let resolve: (value: { event: WatchEvent; key: string }) => void;
let promise = new Promise<{ event: WatchEvent; key: string }>(
(r) => (resolve = r)
);
const unwatch = await storage.watch((event, key) => {
resolve({ event, key });
promise = new Promise<{ event: WatchEvent; key: string }>(
(r) => (resolve = r)
);
});
try {
while (true) yield await promise;
} finally {
await unwatch();
}
}
return {
...storage,
getAllItems: async () => {
const keys = await storage.getKeys();
const values = await storage.getItems(keys);
return values.map(({ value }) => value);
},
subscribe,
};
}

28
src/server/lib/openai.ts Normal file
View File

@@ -0,0 +1,28 @@
import { jsonrepair } from "jsonrepair";
import { z } from "zod";
import { makeParseableResponseFormat } from "openai/lib/parser";
import type { AutoParseableResponseFormat } from "openai/lib/parser";
import type { ResponseFormatJSONSchema } from "openai/resources";
export function zodResponseFormat<ZodInput extends z.ZodType>(
zodObject: ZodInput,
name: string,
props?: Omit<
ResponseFormatJSONSchema.JSONSchema,
"schema" | "strict" | "name"
>
): AutoParseableResponseFormat<z.infer<ZodInput>> {
return makeParseableResponseFormat(
{
type: "json_schema",
json_schema: {
...props,
name,
strict: true,
schema: z.toJSONSchema(zodObject, { target: "draft-7" }),
},
},
(content) => zodObject.parse(JSON.parse(jsonrepair(content)))
);
}