8
9/**
10 * Retrieves previously generated fun facts from the memories database
11 * @returns Array of previous fun facts
12 */
47
48/**
49 * Inserts a fun fact into the memories database
50 * @param date Date for the fun fact in ISO format
51 * @param factText The fun fact text
208```
209โโโ backend/
210โ โโโ database/
211โ โ โโโ migrations.ts # Schema definitions
212โ โ โโโ queries.ts # DB query functions
270- Handle API calls properly with proper error catching
271
272### Database Patterns
273- Run migrations on startup or comment out for performance
274- Change table names when modifying schemas rather than altering
11 clearCache,
12 type PlantInfo
13} from "./database/cache.ts";
14
15const app = new Hono();
38 example: "/plant/rose",
39 testPage: "/test - Simple testing interface",
40 adminPage: "/admin - Cache database admin interface",
41 cache: {
42 totalCachedPlants: stats.totalEntries,
58});
59
60// Admin page to view cache database
61app.get("/admin", async (c) => {
62 const html = await readFile("/admin.html", import.meta.url);
177});
178
179// Test database endpoint
180app.get("/test-db", async (c) => {
181 try {
182 console.log("Testing database connection...");
183
184 // Test basic SQLite functionality
199
200 return c.json({
201 message: "Database test successful",
202 testResult,
203 selectResult
204 });
205 } catch (error) {
206 console.error("Database test failed:", error);
207 return c.json({
208 error: "Database test failed",
209 details: error instanceof Error ? error.message : "Unknown error"
210 }, 500);
1// Script to set up the telegram_chats table in SQLite
2// Run this script manually to create the database table
3
4export default async function setupTelegramChatDb() {
26 console.log("telegram_chats table created successfully.");
27
28 return "Telegram chat database table created successfully.";
29 } catch (error) {
30 console.error("Error setting up telegram_chats table:", error);
385// ];
386
387// Insert memories into the database
388async function insertDemoMemories() {
389 try {
426 await insertDemoMemories();
427
428 console.log("Demo database successfully populated!");
429 return "Demo database successfully populated!";
430 } catch (error) {
431 console.error("Error populating demo database:", error);
432 throw error;
433 }
9- [ ] make it one click to branch off like old jp townie demos
10- [ ] opentownie as a pr bot
11- [ ] give it the ability to see its own client-side and server-side logs by building a middleware that shoves them into a SQL light database date and then give it a tool to access them
12- [ ] do a browser use or screenshot thing to give it access to its own visual output
13- [ ] Have it default to creating a new branch off main
7export const thinkTool = tool({
8 description:
9 "Use the tool to think about something. It will not obtain new information or change the database, but just append the thought to the log. Use it when complex reasoning or some cache memory is needed.",
10 parameters: z.object({
11 thought: z.string().describe("A thought to think about."),
174```
175โโโ backend/
176โ โโโ database/
177โ โ โโโ migrations.ts # Schema definitions
178โ โ โโโ queries.ts # DB query functions
234 ```
235
236### Database Patterns
237- Run migrations on startup or comment out for performance
238- Change table names when modifying schemas rather than altering
1import { Hono } from "npm:hono";
2import Stripe from "npm:stripe";
3import { addCredits } from "../database/queries.tsx";
4import { getEnvVarName } from "../../shared/is-prod-branch.ts";
5
13 finishTrackingUsage,
14 calculatePartialUsageFromInferenceCalls,
15} from "../database/queries.tsx";
16import { makeChangeValTypeTool, makeFetchTool, makeTextEditorTool, makeTracesTool } from "../tools/index.ts";
17import fileWithLinesNumbers from "../utils/fileWithLinesNumbers.ts";