2526try {
27const response = await fetch(window.location.href, {
28method: "POST",
29body: formData,
sqliteExplorerAppmain.tsx4 matches
1/** @jsxImportSource npm:hono/jsx **/
23import { modifyFetchHandler } from "https://esm.town/v/andreterron/codeOnValTown?v=50";
4import { iframeHandler } from "https://esm.town/v/nbbaier/iframeHandler";
5import { resetStyle } from "https://esm.town/v/nbbaier/resetStyle";
16import { verifyToken } from "https://esm.town/v/pomdtr/verifyToken";
17import { ResultSet, sqlite } from "https://esm.town/v/std/sqlite";
18import { reloadOnSaveFetchMiddleware } from "https://esm.town/v/stevekrouse/reloadOnSave";
19import { Hono } from "npm:hono";
20import type { FC } from "npm:hono/jsx";
175});
176177export const handler = app.fetch;
178export default iframeHandler(modifyFetchHandler(passwordAuth(handler, { verifyPassword: verifyToken })));
2// A more declarative and extensible multi-agent platform structure.
34import { fetch } from "https://esm.town/v/std/fetch"; // Assuming Val Town environment
56// --- Core Interfaces ---
296}
297298// Agent 2: Fetch External Data (modified for new signature)
299async function fetchAgent(
300input: AgentInput<{ url?: string }>, // Optionally allow URL via input
301context: AgentContext,
305const url = payload?.url || "https://jsonplaceholder.typicode.com/todos/1"; // Default URL
306307log('INFO', 'FetchAgent', `Start fetching data from ${url}`);
308try {
309const resp = await fetch(url);
310if (!resp.ok) {
311throw new Error(`Workspace failed: Server responded with status ${resp.status} ${resp.statusText}`);
313const data = await resp.json();
314315log('SUCCESS', 'FetchAgent', `Data fetched successfully`, { url, responseStatus: resp.status });
316return { mandateId, correlationId: taskId, payload: { data } };
317} catch (e: any) {
318log('ERROR', 'FetchAgent', `Workspaceing failed`, e);
319return { mandateId, correlationId: taskId, payload: { data: null }, error: e.message };
320}
325const analysisWorkflow: WorkflowDefinition = {
326id: "basicAnalysis",
327description: "Summarizes user text and fetches placeholder data.",
328steps: [
329{
335},
336{
337id: "step2_fetchData",
338agent: "fetcher",
339// No input mapping needed if the agent uses defaults or doesn't require specific input from workflow state
340input: {} // Explicitly empty
345outputMapping: { // Define the final output structure
346finalSummary: { source: "step1_summarize", field: "summary" },
347externalData: { source: "step2_fetchData", field: "data"},
348}
349};
358// Register agents
359agentRegistry.register("summarizer", summarizerAgent);
360agentRegistry.register("fetcher", fetchAgent);
361// Register more agents...
362// agentRegistry.register("sentimentAnalyzer", sentimentAgent);
410411try {
412const res = await fetch(window.location.pathname, {
413method: 'POST',
414headers: { 'Content-Type': 'application/json' },
430431} catch (err) {
432resultBox.textContent = 'Fetch Error: ' + err.message;
433resultBox.className = 'error';
434logBox.textContent = 'Failed to communicate with the backend.';
ca_highlightsmain.tsx2 matches
4// 1. if we've never queued for *today*, build queue via selectHighlights().
5// ‑ if no highlights, insert sentinel row into posted_tweets (tweet_id = "dummy‑YYYY‑MM‑DD").
6// 2. fetch any queued tweets scheduled within the next 15 min window and post them.
7// -----------------------------------------------------------------------------
8// env secrets:
74),
75);
76const res = await fetch(url, {
77method: "POST",
78headers: { "content-type": "application/json", ...authHeader },
hn_job_analyzerhnService.ts30 matches
1export async function fetchHiringPosts(postId?: number): Promise<any[]> {
2try {
3// If no post ID is provided, find the latest "Who is hiring" post
6}
7
8// Fetch the post data
9const post = await fetchItem(postId);
10
11// Fetch all comments
12const comments = await Promise.all(
13(post.kids || []).map(async (commentId: number) => {
14return await fetchItem(commentId);
15})
16);
19return comments.filter(comment => !comment.deleted && !comment.dead);
20} catch (error) {
21console.error('Error fetching hiring posts:', error);
22throw error;
23}
24}
2526export async function fetchWantToBeHiredPosts(postId?: number): Promise<any[]> {
27try {
28// If no post ID is provided, find the latest "Who wants to be hired" post
31}
32
33// Fetch the post data
34const post = await fetchItem(postId);
35
36// Fetch all comments
37const comments = await Promise.all(
38(post.kids || []).map(async (commentId: number) => {
39return await fetchItem(commentId);
40})
41);
44return comments.filter(comment => !comment.deleted && !comment.dead);
45} catch (error) {
46console.error('Error fetching want to be hired posts:', error);
47throw error;
48}
49}
5051export async function fetchFreelancerPosts(postId?: number): Promise<any[]> {
52try {
53// If no post ID is provided, find the latest "Freelancer? Seeking Freelancer?" post
56}
57
58// Fetch the post data
59const post = await fetchItem(postId);
60
61// Fetch all comments
62const comments = await Promise.all(
63(post.kids || []).map(async (commentId: number) => {
64return await fetchItem(commentId);
65})
66);
69return comments.filter(comment => !comment.deleted && !comment.dead);
70} catch (error) {
71console.error('Error fetching freelancer posts:', error);
72throw error;
73}
74}
7576// Helper function to fetch an item from the HN API
77async function fetchItem(id: number): Promise<any> {
78const response = await fetch(`https://hacker-news.firebaseio.com/v0/item/${id}.json`);
79return await response.json();
80}
84try {
85// First, get the latest stories
86const response = await fetch('https://hacker-news.firebaseio.com/v0/askstories.json');
87const storyIds = await response.json();
88
89// Fetch the latest 50 stories to find the most recent "Who is hiring" post
90const stories = await Promise.all(
91storyIds.slice(0, 50).map(async (id: number) => {
92return await fetchItem(id);
93})
94);
116try {
117// First, get the latest stories
118const response = await fetch('https://hacker-news.firebaseio.com/v0/askstories.json');
119const storyIds = await response.json();
120
121// Fetch the latest 50 stories to find the most recent "Who wants to be hired" post
122const stories = await Promise.all(
123storyIds.slice(0, 50).map(async (id: number) => {
124return await fetchItem(id);
125})
126);
148try {
149// First, get the latest stories
150const response = await fetch('https://hacker-news.firebaseio.com/v0/askstories.json');
151const storyIds = await response.json();
152
153// Fetch the latest 50 stories to find the most recent "Freelancer? Seeking Freelancer?" post
154const stories = await Promise.all(
155storyIds.slice(0, 50).map(async (id: number) => {
156return await fetchItem(id);
157})
158);
discord-botapi-server.js3 matches
73res.json({ success: true, data: messages });
74} catch (error) {
75console.error('Error fetching messages:', error);
76res.status(500).json({ success: false, error: error.message });
77}
92res.json({ success: true, data: links });
93} catch (error) {
94console.error('Error fetching links:', error);
95res.status(500).json({ success: false, error: error.message });
96}
103res.json({ success: true, data: categories });
104} catch (error) {
105console.error('Error fetching categories:', error);
106res.status(500).json({ success: false, error: error.message });
107}
discord-botval-town-cron.js4 matches
1import { fetchAndStoreDMs } from './discord-client.js';
2import 'dotenv/config';
311*/
12export default async function cronHandler() {
13console.log('Starting scheduled Discord DM fetch...');
14try {
15await fetchAndStoreDMs();
16return { success: true, message: 'Successfully fetched and stored DMs' };
17} catch (error) {
18console.error('Error in cron job:', error);
discord-botdiscord-client.js22 matches
45/**
6* Discord client that fetches direct messages between users
7*/
8export class DiscordClient {
2829/**
30* Fetch DMs between the user and their spouse
31* @returns {Promise<Array>} - Array of message objects
32*/
33async fetchDMsBetweenUsers() {
34try {
35const myUserId = process.env.DISCORD_USER_ID;
4142// Get the DM channel with spouse
43const spouse = await this.client.users.fetch(spouseUserId);
44const dmChannel = await spouse.createDM();
45
46// Fetch messages from the DM channel
47const messages = [];
48let lastId;
49let keepFetching = true;
50
51// Fetch messages in batches of 100 (Discord API limit)
52while (keepFetching) {
53const options = { limit: 100 };
54if (lastId) {
56}
57
58const fetchedMessages = await dmChannel.messages.fetch(options);
59
60if (fetchedMessages.size === 0) {
61keepFetching = false;
62break;
63}
64
65// Process and store fetched messages
66fetchedMessages.forEach(msg => {
67// Only store messages from the two users we care about
68if (msg.author.id === myUserId || msg.author.id === spouseUserId) {
79
80// Get the ID of the last message for pagination
81lastId = fetchedMessages.last().id;
82
83// If we got fewer messages than requested, we've reached the end
84if (fetchedMessages.size < 100) {
85keepFetching = false;
86}
87}
88
89console.log(`Fetched ${messages.length} messages`);
90
91// Save messages to database
94return messages;
95} catch (error) {
96console.error('Error fetching DMs:', error);
97throw error;
98}
108109/**
110* Function to run the message fetching process
111*/
112export async function fetchAndStoreDMs() {
113const client = new DiscordClient();
114try {
115await client.login();
116await client.fetchDMsBetweenUsers();
117} catch (error) {
118console.error('Error in fetch and store process:', error);
119} finally {
120client.disconnect();
discord-botinteractions-endpoint.js2 matches
140});
141} catch (error) {
142console.error('Error fetching categories:', error);
143return res.json({
144type: 4,
145data: { content: 'Sorry, I encountered an error fetching categories.' }
146});
147}
discord-botpackage.json1 match
8"start": "node index.js",
9"dev": "node index.js",
10"fetch": "node val-town-cron.js",
11"register": "node discord-commands.js",
12"interactions": "node interactions-endpoint.js",