Skip to content

Commit

Permalink
Merge branch 'dev' into namesty/agent-with-inngest
Browse files Browse the repository at this point in the history
  • Loading branch information
namesty committed Jan 23, 2024
2 parents dda3047 + 1a5f466 commit 99e3c14
Show file tree
Hide file tree
Showing 27 changed files with 6,743 additions and 119 deletions.
2 changes: 1 addition & 1 deletion .env.template
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=

NEXT_PUBLIC_INFURA_PROJECT_ID=
WORKERS_URL=
79 changes: 79 additions & 0 deletions .github/workflows/cd.dev.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: CD Dev

on:
push:
branches:
- main

jobs:
Deploy-Dev:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3

- name: Set up Python 3.10
uses: actions/setup-python@v2
with:
python-version: "3.10"

- name: Install Poetry
run: |
curl -sSL https://install.python-poetry.org | python3 -
- name: Read .nvmrc
run: echo ::set-output name=NVMRC::$(cat .nvmrc)
id: nvm
working-directory: ./workers

- name: Setup Node.js
uses: actions/setup-node@master
with:
node-version: '${{ steps.nvm.outputs.NVMRC }}'

- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
working-directory: ./workers

- uses: actions/cache@v2
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install dependencies
run: (yarn install --nonInteractive --frozen-lockfile --prefer-offline || yarn install --nonInteractive --frozen-lockfile --prefer-offline)
working-directory: ./workers

- name: Deploy
run: yarn deploy:dev
working-directory: ./workers
env:
DEPLOYMENT_STAGE: dev
AWS_ACCESS_KEY_ID: ${{ secrets.DEV_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.DEV_AWS_SECRET_ACCESS_KEY }}
DEV_INNGEST_SIGNING_KEY: ${{ secrets.DEV_INNGEST_SIGNING_KEY }}
DEV_INNGEST_EVENT_KEY: ${{ secrets.DEV_INNGEST_EVENT_KEY }}
DEV_NEXT_PUBLIC_SUPABASE_URL: ${{ secrets.DEV_NEXT_PUBLIC_SUPABASE_URL }}
DEV_NEXT_PUBLIC_SUPABASE_ANON_KEY: ${{ secrets.DEV_NEXT_PUBLIC_SUPABASE_ANON_KEY }}
DEV_SUPABASE_SERVICE_ROLE_KEY: ${{ secrets.DEV_SUPABASE_SERVICE_ROLE_KEY }}

- uses: supabase/setup-cli@v1
with:
version: latest
- run: supabase link --project-ref $SUPABASE_PROJECT_ID
working-directory: ./web
env:
SUPABASE_ACCESS_TOKEN: ${{ secrets.DEV_SUPABASE_ACCESS_TOKEN }}
SUPABASE_DB_PASSWORD: ${{ secrets.DEV_SUPABASE_DB_PASSWORD }}
SUPABASE_PROJECT_ID: ${{ secrets.DEV_SUPABASE_PROJECT_ID }}

- run: supabase db push
working-directory: ./web
env:
SUPABASE_ACCESS_TOKEN: ${{ secrets.DEV_SUPABASE_ACCESS_TOKEN }}
SUPABASE_DB_PASSWORD: ${{ secrets.DEV_SUPABASE_DB_PASSWORD }}
SUPABASE_PROJECT_ID: ${{ secrets.DEV_SUPABASE_PROJECT_ID }}
- run: curl -X PUT https://api.dev.fundpublicgoods.ai/api/inngest
45 changes: 45 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: ci

on:
push:
branches:
- dev
pull_request:

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2

- name: Read .nvmrc
run: echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_OUTPUT
id: nvm

- name: Setup Node.js
uses: actions/setup-node@master
with:
node-version: '${{ steps.nvm.outputs.NVMRC }}'

- name: Set up Python 3.10
uses: actions/setup-python@v2
with:
python-version: "3.10"

- name: Install Poetry
run: |
curl -sSL https://install.python-poetry.org | python3 -
- name: Install dependencies
run: yarn

- name: Build
run: yarn build
env:
CICD: true
NEXT_PUBLIC_SUPABASE_URL: ${{ secrets.DEV_NEXT_PUBLIC_SUPABASE_URL }}
NEXT_PUBLIC_SUPABASE_ANON_KEY: ${{ secrets.DEV_NEXT_PUBLIC_SUPABASE_ANON_KEY }}
SUPABASE_SERVICE_ROLE_KEY: ${{ secrets.DEV_SUPABASE_SERVICE_ROLE_KEY }}
NEXT_PUBLIC_INFURA_PROJECT_ID: ${{ secrets.DEV_NEXT_PUBLIC_INFURA_PROJECT_ID}}
WORKERS_URL: ${{ secrets.DEV_WORKERS_URL }}
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,7 @@ next-env.d.ts
__pycache__

dist
.mypy_cache
.mypy_cache

# serverless
.serverless
8 changes: 5 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@
"postinstall": "cd workers && poetry install",
"build": "yarn web:build && yarn workers:build",
"dev": "npx concurrently \"yarn web:dev\" \"yarn workers:dev\" \"yarn events:dev\" -k -n web,workers,events",
"web:build": "cp .env ./web/.env && cd web && yarn build",
"web:dev": "cp .env ./web/.env && cd web && yarn dev",
"web:build": "yarn web:env && cd web && yarn build",
"web:dev": "yarn web:env && cd web && yarn dev",
"web:env": "if [ \"$CICD\" != \"true\" ]; then cp .env ./web/.env; fi",
"workers:build": "cd workers && poetry run build-check",
"workers:dev": "cp .env ./workers/.env && cd workers && poetry run python -m uvicorn fund_public_goods.main:app --reload",
"workers:dev": "yarn workers:env && cd workers && poetry run python -m uvicorn fund_public_goods.main:app --reload",
"workers:env": "if [ \"$CICD\" != \"true\" ]; then cp .env ./workers/.env; fi",
"events:dev": "npx inngest-cli dev"
},
"dependencies": {
Expand Down
36 changes: 36 additions & 0 deletions web/app/WalletProvider.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
"use client"

import Onboard from "@web3-onboard/core"
import { Web3OnboardProvider, init } from "@web3-onboard/react";
import injectedModule from "@web3-onboard/injected-wallets";

const chains = [
{
id: "0x1",
token: "ETH",
label: "Ethereum Mainnet",
rpcUrl: `https://mainnet.infura.io/v3/${process.env.NEXT_PUBLIC_INFURA_PROJECT_ID}`,
},
];
const wallets = [injectedModule()];
const web3Onboard = init({
wallets,
chains,
appMetadata: {
name: "Fund Public Goods",
icon: "<svg>App Icon</svg>",
description: "cool description"
},
});

export default function WalletProvider({
children,
}: {
children: React.ReactNode;
}) {
return (
<Web3OnboardProvider web3Onboard={web3Onboard}>
{children}
</Web3OnboardProvider>
);
}
35 changes: 33 additions & 2 deletions web/app/actions/startWorker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ interface StartWorkerResponse {
runId: string;
}

export const startWorker = async (prompt: string): Promise<StartWorkerResponse> => {
export const startWorker = async (
prompt: string
): Promise<StartWorkerResponse> => {
const response = await fetch(`${process.env.WORKERS_URL}/api/workers`, {
method: "POST",
body: JSON.stringify({ prompt }),
Expand All @@ -21,6 +23,35 @@ export const startWorker = async (prompt: string): Promise<StartWorkerResponse>

return {
workerId: result.worker_id,
runId: result.run_id
runId: result.run_id,
};
};

interface RegenerateRunResponse {
runId: string;
}

export const regenerateStrategy = async (
prompt: string,
workerId: string
): Promise<RegenerateRunResponse> => {
const response = await fetch(
`${process.env.WORKERS_URL}/api/workers/${workerId}/runs`,
{
method: "POST",
body: JSON.stringify({ prompt }),
headers: {
"Content-Type": "application/json",
},
}
);

const result = await response.json();
if (!result.run_id) {
throw new Error("Error starting new worker");
}

return {
runId: result.run_id,
};
};
15 changes: 15 additions & 0 deletions web/app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,18 @@ body {
)
rgb(var(--background-start-rgb));
}

.checkbox {
@apply rounded border-2 border-zinc-500 w-4 h-4 transition-colors duration-300 cursor-pointer hover:border-zinc-400;
}

.checkbox.checked {
@apply border-cyan-500 bg-cyan-500/50 text-white hover:border-cyan-400;
}

.checkmark {
@apply w-full h-full bg-no-repeat;
background-image: url('../public/checkmark.svg');
background-size: 70%;
background-position: 56% 58%;
}
27 changes: 17 additions & 10 deletions web/app/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
import type { Metadata } from "next";
import { Inter } from "next/font/google";
import { Ubuntu } from "next/font/google";

import "./globals.css";
import WalletProvider from "./WalletProvider";

const inter = Inter({ subsets: ["latin"] });
const ubuntu = Ubuntu({
subsets: ["latin"],
weight: ['300', '400', '500', '700'],
});

export const metadata: Metadata = {
title: "fundpublicgoods.ai",
Expand Down Expand Up @@ -37,14 +42,16 @@ export default function RootLayout({
}) {
return (
<html lang="en">
<body className={inter.className}>
<main className="flex h-screen flex-col items-center">
<Header />
<div className="flex flex-col w-full h-5/6 overflow-y-auto">
{children}
</div>
<Footer />
</main>
<body className={ubuntu.className}>
<WalletProvider>
<main className="flex h-screen flex-col items-center">
<Header />
<div className="flex flex-col w-full h-5/6 overflow-y-auto">
{children}
</div>
<Footer />
</main>
</WalletProvider>
</body>
</html>
);
Expand Down
Loading

0 comments on commit 99e3c14

Please sign in to comment.