cerebras_coderindex.html3 matches
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<title>CerebrasCoder</title>
7<link rel="preconnect" href="https://fonts.googleapis.com" />
8<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9<link
10href="https://fonts.googleapis.com/css2?family=DM+Mono:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&display=swap"
11rel="stylesheet"
12/>
21<meta property="og:description" content="Turn your ideas into fully functional apps in less than a second โ powered by Llama3.3-70b on Cerebras's super-fast wafer chips. Code is 100% open-source, hosted on Val Town."">
22<meta property="og:type" content="website">
23<meta property="og:image" content="https://stevekrouse-blob_admin.web.val.run/api/public/CerebrasCoderOG.jpg">
24
25
16};
17} else {
18const client = new Cerebras({ apiKey: Deno.env.get("CEREBRAS_API_KEY") });
19const completion = await client.chat.completions.create({
20messages: [
therundownmain.tsx16 matches
157isDirect = false;
158} else if (marketConfig.provider === "manifold") {
159fetchUrl = `https://api.manifold.markets/v0/slug/${marketConfig.slug}`;
160isDirect = true;
161} else { return { ...marketConfig, q: "Unknown", prob: null }; }
325<span
326className="text-xs sm:text-sm text-stone-500 mt-1"
327title="30d change not available from this API endpoint"
328>
32930d N/A
425}
426427/*โโโโโโโโโโโโโโโโโโ API HELPER FUNCTIONS โโโโโโโโโโโโโโโโโ*/
428// (extractProbability remains same as v12)
429function extractProbability(provider: string, jsonData: any): number | null {
499}
500const slug = decodeURIComponent(parts[3]);
501const targetUrl = `https://gamma-api.polymarket.com/markets?slug=${slug}`;
502const headers: HeadersInit = { "Accept": "application/json", "User-Agent": "ValTownDashboardProxy/1.1" };
503try {
504const apiResponse = await fetch(targetUrl, { headers: headers });
505if (!apiResponse.ok) {
506let errorBody = `Upstream API Error ${apiResponse.status}`;
507let responseText = "";
508try {
509responseText = await apiResponse.clone().text();
510errorBody = responseText || errorBody;
511} catch (e) {}
515if (!structuredError.error) structuredError.error = responseText;
516} catch (_) {}
517console.error(`Proxy error Polymarket/${slug}: ${apiResponse.status}`, structuredError);
518return new Response(JSON.stringify(structuredError), {
519status: apiResponse.status,
520headers: { "Content-Type": "application/json", "Access-Control-Allow-Origin": "*" },
521});
522}
523const contentType = apiResponse.headers.get("content-type");
524if (!contentType || !contentType.includes("application/json")) {
525let responseText = "";
526try {
527responseText = await apiResponse.text();
528} catch (e) {}
529console.warn(`Unexpected Content-Type '${contentType}' from Polymarket. Body:`, responseText);
530return new Response(JSON.stringify({ error: `Unexpected Content-Type from upstream API: ${contentType}` }), {
531status: 502,
532headers: { "Content-Type": "application/json", "Access-Control-Allow-Origin": "*" },
533});
534}
535return new Response(apiResponse.body, {
536status: apiResponse.status,
537headers: {
538"Content-Type": "application/json",
553const moduleUrl = selfUrl.toString();
554const html =
555`<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Market Dashboard</title><meta name="description" content="Customizable live prediction market odds"><link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>๐</text></svg>"><script src="https://cdn.tailwindcss.com"></script><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Inter:wght@400;500;700&family=Playfair+Display:ital,wght@0,400..900;1,400..900&display=swap" rel="stylesheet"><style>html, body, #root { height: 100%; margin: 0; } body { background-color: #171717; color: #e5e5e5; font-family: 'Inter', sans-serif; } #root { display: flex; flex-direction: column; } .font-percentage { font-family: "Bebas Neue", sans-serif; } .font-serif { font-family: 'Playfair Display', serif; } *:focus-visible { outline: 2px solid #6ee7b7; outline-offset: 2px; }</style></head><body><div id="root"><noscript><div style="padding: 20px; text-align: center; color: #e5e5e5;">JavaScript is required.</div></noscript></div><script type="module" src="${moduleUrl}"></script></body></html>`;
556return new Response(html, { status: 200, headers: { "Content-Type": "text/html", "Cache-Control": "no-cache" } });
557}
willikinssendDailyBrief.ts8 matches
9798export async function sendDailyBriefing(chatId?: string, today?: DateTime) {
99// Get API keys from environment
100const apiKey = Deno.env.get("ANTHROPIC_API_KEY");
101const telegramToken = Deno.env.get("TELEGRAM_TOKEN");
102106}
107108if (!apiKey) {
109console.error("Anthropic API key is not configured.");
110return;
111}
122123// Initialize Anthropic client
124const anthropic = new Anthropic({ apiKey });
125126// Initialize Telegram bot
162163// disabled title for now, it seemes unnecessary...
164// await bot.api.sendMessage(chatId, `*${title}*`, { parse_mode: "Markdown" });
165166// Then send the main content
169170if (content.length <= MAX_LENGTH) {
171await bot.api.sendMessage(chatId, content, { parse_mode: "Markdown" });
172// Store the briefing in chat history
173await storeChatMessage(
198// Send each chunk as a separate message and store in chat history
199for (const chunk of chunks) {
200await bot.api.sendMessage(chatId, chunk, { parse_mode: "Markdown" });
201// Store each chunk in chat history
202await storeChatMessage(
53You'll need to set up some environment variables to make it run.
5455- `ANTHROPIC_API_KEY` for LLM calls
56- You'll need to follow [these instructions](https://docs.val.town/integrations/telegram/) to make a telegram bot, and set `TELEGRAM_TOKEN`. You'll also need to get a `TELEGRAM_CHAT_ID` in order to have the bot remember chat contents.
57- For the Google Calendar integration you'll need `GOOGLE_CALENDAR_ACCOUNT_ID` and `GOOGLE_CALENDAR_CALENDAR_ID`. See [these instuctions](https://www.val.town/v/stevekrouse/pipedream) for details.
8## Hono
910This app uses [Hono](https://hono.dev/) as the API framework. You can think of Hono as a replacement for [ExpressJS](https://expressjs.com/) that works in serverless environments like Val Town or Cloudflare Workers. If you come from Python or Ruby, Hono is also a lot like [Flask](https://github.com/pallets/flask) or [Sinatra](https://github.com/sinatra/sinatra), respectively.
1112## Serving assets to the frontend
20### `index.html`
2122The most complicated part of this backend API is serving index.html. In this app (like most apps) we serve it at the root, ie `GET /`.
2324We *bootstrap* `index.html` with some initial data from the server, so that it gets dynamically injected JSON data without having to make another round-trip request to the server to get that data on the frontend. This is a common pattern for client-side rendered apps.
2526## CRUD API Routes
2728This app has two CRUD API routes: for reading and inserting into the messages table. They both speak JSON, which is standard. They import their functions from `/backend/database/queries.ts`. These routes are called from the React app to refresh and update data.
2930## Errors
3132Hono and other API frameworks have a habit of swallowing up Errors. We turn off this default behavior by re-throwing errors, because we think most of the time you'll want to see the full stack trace instead of merely "Internal Server Error". You can customize how you want errors to appear.
willikinsNotebookView.tsx5 matches
8import { type Memory } from "../../shared/types.ts";
910const API_BASE = "/api/memories";
11const MEMORIES_PER_PAGE = 20;
1271setError(null);
72try {
73const response = await fetch(API_BASE);
74if (!response.ok) {
75throw new Error(`HTTP error! status: ${response.status}`);
100101try {
102const response = await fetch(API_BASE, {
103method: "POST",
104headers: { "Content-Type": "application/json" },
123124try {
125const response = await fetch(`${API_BASE}/${id}`, {
126method: "DELETE",
127});
155156try {
157const response = await fetch(`${API_BASE}/${editingMemory.id}`, {
158method: "PUT",
159headers: { "Content-Type": "application/json" },
18});
1920// --- API Routes for Memories ---
2122// GET /api/memories - Retrieve all memories
23app.get("/api/memories", async (c) => {
24const memories = await getAllMemories();
25return c.json(memories);
26});
2728// POST /api/memories - Create a new memory
29app.post("/api/memories", async (c) => {
30const body = await c.req.json<Omit<Memory, "id">>();
31if (!body.text) {
36});
3738// PUT /api/memories/:id - Update an existing memory
39app.put("/api/memories/:id", async (c) => {
40const id = c.req.param("id");
41const body = await c.req.json<Partial<Omit<Memory, "id">>>();
58});
5960// DELETE /api/memories/:id - Delete a memory
61app.delete("/api/memories/:id", async (c) => {
62const id = c.req.param("id");
63try {
75// --- Blob Image Serving Routes ---
7677// GET /api/images/:filename - Serve images from blob storage
78app.get("/api/images/:filename", async (c) => {
79const filename = c.req.param("filename");
80
willikinsindex.html2 matches
12type="image/svg+xml"
13/>
14<link rel="preconnect" href="https://fonts.googleapis.com" />
15<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
16<link
17href="https://fonts.googleapis.com/css2?family=Pixelify+Sans:wght@400..700&display=swap"
18rel="stylesheet"
19/>
willikinshandleUSPSEmail.ts5 matches
85console.log(e.text);
8687// Get Anthropic API key from environment
88const apiKey = Deno.env.get("ANTHROPIC_API_KEY");
89if (!apiKey) {
90console.error("Anthropic API key is not configured for this val.");
91return;
92}
9394// Initialize Anthropic client
95const anthropic = new Anthropic({ apiKey });
9697// Process each image attachment serially