7}) {
8 const code = await runVal(
9 "andreterron.generateValCodeAPI",
10 description,
11 );
12 const val = await fetchJSON(
13 `https://api.val.town/v1/vals`,
14 {
15 method: "POST",
2
3export let postWebhookTest4 = fetchJSON(
4 "https://api.val.town/express/@val.postWebhook5",
5 {
6 method: "POST",
3// Public holidays in the US in 2023
4export let holidaysUS = fetchJSON(
5 "https://date.nager.at/api/v2/publicholidays/2023/US"
6);
3// GitHub gists
4export let githubGists = fetchJSON(
5 "https://api.github.com/users/stevekrouse/gists"
6);
1export function myApi(name) {
2 return "hiyyyy " + name;
3}
2
3export function getCoolPosts() {
4 return fetch("https://hn.algolia.com/api/v1/search_by_date?tags=author_pg")
5 .then((res) => res.json())
6 .then((res) => res.hits[0].comment_text);
25`;
26
27 fetchJSON("https://api.magicthegathering.io/v1/cards?power=*")
28 .then(({ cards }) => {
29 const names = new Set();
3
4/**
5 * OpenAI text completion. https://platform.openai.com/docs/api-reference/completions
6 *
7 * val.town and rlimit.com has generously provided a free daily quota. Until the quota is met, no need to provide an API key.
8 *
9 */
10export const gpt4 = async (prompt: string, maxTokens?: number = 1000) => {
11 const parent = parentReference();
12 return await runVal("rlimit.gpt4Api", {
13 prompt,
14 valUser: parent.userHandle,
3// GitHub events
4export let githubEvents = fetchJSON(
5 "https://api.github.com/users/stevekrouse/events"
6);
2
3/**
4 * Call OpenAPI Embeddings api to vectorize a query string
5 * Returns an array of 1536 numbers
6 */
7export const getOpenapiEmbedding = async ({ openapiToken, query }: {
8 openapiToken: string;
9 query: string;
10}): Promise<number[]> =>
11 fetchJSON("https://api.openai.com/v1/embeddings", {
12 method: "POST",
13 headers: {
14 Authorization: `Bearer ${openapiToken}`,
15 "Content-Type": "application/json",
16 },