ValodcronDailyBrief.ts1 match
1import { sendDailyBriefing } from "./sendDailyBrief.ts";
23export async function cronDailyBrief() {
4try {
5const chatId = Deno.env.get("TELEGRAM_CHAT_ID");
62};
6364export function App() {
65const [memories, setMemories] = useState<Memory[]>([]);
66const [loading, setLoading] = useState(true);
139const data = await response.json();
140141// Change the sorting function to show memories in chronological order
142const sortedMemories = [...data].sort((a, b) => {
143const dateA = a.createdDate || 0;
untitled-2706Booking.tsx1 match
3import type { ServiceType, TimeSlot } from "../../shared/types.ts";
45export default function Booking() {
6const [services, setServices] = useState<ServiceType[]>([]);
7const [selectedService, setSelectedService] = useState<string>('');
untitled-2706Chat.tsx1 match
3import type { ChatMessage } from "../../shared/types.ts";
45export default function Chat() {
6const [messages, setMessages] = useState<ChatMessage[]>([]);
7const [newMessage, setNewMessage] = useState('');
untitled-2706Blog.tsx1 match
3import type { BlogPost } from "../../shared/types.ts";
45export default function Blog() {
6const [posts, setPosts] = useState<BlogPost[]>([]);
7const [selectedPost, setSelectedPost] = useState<BlogPost | null>(null);
untitled-2706App.tsx2 matches
7type ActiveSection = 'home' | 'blog' | 'chat' | 'booking';
89export default function App() {
10const [activeSection, setActiveSection] = useState<ActiveSection>('home');
11106}
107108function HomePage({ setActiveSection }: { setActiveSection: (section: ActiveSection) => void }) {
109return (
110<div>
untitled-2706queries.ts10 matches
34// Blog queries
5export async function getAllBlogPosts(): Promise<BlogPost[]> {
6const rows = await sqlite.execute(
7"SELECT * FROM blog_posts ORDER BY created_at DESC"
14}
1516export async function getBlogPost(id: number): Promise<BlogPost | null> {
17const rows = await sqlite.execute(
18"SELECT * FROM blog_posts WHERE id = ?",
29}
3031export async function createBlogPost(post: Omit<BlogPost, 'id' | 'created_at' | 'updated_at'>): Promise<number> {
32const result = await sqlite.execute(
33`INSERT INTO blog_posts (title, content, excerpt, author, tags)
4041// Chat queries
42export async function getRecentChatMessages(limit: number = 50): Promise<ChatMessage[]> {
43const rows = await sqlite.execute(
44`SELECT * FROM chat_messages
51}
5253export async function addChatMessage(username: string, message: string): Promise<ChatMessage> {
54const result = await sqlite.execute(
55"INSERT INTO chat_messages (username, message) VALUES (?, ?)",
6667// Appointment queries
68export async function getAllAppointments(): Promise<Appointment[]> {
69const rows = await sqlite.execute(
70"SELECT * FROM appointments ORDER BY appointment_date, appointment_time"
74}
7576export async function createAppointment(appointment: Omit<Appointment, 'id' | 'created_at'>): Promise<number> {
77const result = await sqlite.execute(
78`INSERT INTO appointments
94}
9596export async function updateAppointmentStatus(id: number, status: string): Promise<void> {
97await sqlite.execute(
98"UPDATE appointments SET status = ? WHERE id = ?",
101}
102103export async function getAppointmentsByDate(date: string): Promise<Appointment[]> {
104const rows = await sqlite.execute(
105"SELECT * FROM appointments WHERE appointment_date = ? ORDER BY appointment_time",
110}
111112export async function isTimeSlotAvailable(date: string, time: string): Promise<boolean> {
113const rows = await sqlite.execute(
114`SELECT COUNT(*) as count FROM appointments
untitled-2706migrations.ts2 matches
1import { sqlite } from "https://esm.town/v/stevekrouse/sqlite";
23export async function runMigrations() {
4// Blog posts table
5await sqlite.execute(`
49}
5051async function seedBlogPosts() {
52const posts = [
53{
untitled-2706README.md1 match
16โ โโโ database/
17โ โ โโโ migrations.ts # Database schema setup
18โ โ โโโ queries.ts # Database query functions
19โ โโโ routes/
20โ โ โโโ blog.ts # Blog API endpoints
untitled-4336main.tsx15 matches
74`;
7576// --- Type Definitions (Simplified for Crux functionality) ---
77interface CruxPoint {
78order: number;
94}
9596// --- HTML Generation Function (Adapted for Crux UI) ---
97function generateHtmlShell(valTownUrl) {
98return `
99<!DOCTYPE html>
518519520function displayError(message) {
521errorContainer.innerHTML = \`<div class="error-message">\${message}</div>\`;
522}
523
524function renderInteractiveUIFromCruxData(data) {
525data.crux_points.sort((a, b) => a.order - b.order);
526originalInstructionSpan.textContent = data.original_instruction;
559}
560561function buildInteractiveSentenceStructure(data) {
562const instruction = data.original_instruction;
563const cruxPoints = data.crux_points;
618}
619620function populateCruxDropdown(cruxOrder, alternativesArray, originalPhrase) {
621const state = cruxElementStates[cruxOrder];
622if (!state || !state.wrapper) return;
677}
678679function handleCruxMultiSelectChange(cruxOrder, value, isChecked) {
680const state = cruxElementStates[cruxOrder];
681if (!state) return;
709}
710711function updateCruxDisplay(cruxOrder) {
712const state = cruxElementStates[cruxOrder];
713if (!state || !state.wrapper) return;
726}
727728function updateChildCruxDropdown(childCruxOrder, parentSelectedValue, data) {
729const childCruxData = data.crux_points.find(c => c.order === childCruxOrder);
730const childState = cruxElementStates[childCruxOrder];
759}
760761function updateInteractiveSentence() {
762const instruction = currentJsonData.original_instruction;
763const cruxPoints = currentJsonData.crux_points.sort((a, b) => a.order - b.order); // Ensure order
800801// --- Main Request Handler (Server Code) ---
802export default async function(req: Request) {
803// --- Dynamic Imports ---
804const { OpenAI } = await import("https://esm.town/v/std/openai"); // Updated import path
805const { z } = await import("npm:zod"); // For input validation
806807// --- Helper Function: Call OpenAI API ---
808async function callOpenAIForCrux(
809openai: OpenAI, // Instance passed in
810systemPrompt: string,
833834// --- Core Logic: Analyze Instruction for Cruxes ---
835async function analyzeInstructionForCruxes(
836userInstruction: string,
837): Promise<object | ErrorResponse>