Compare commits

...
49 Commits
Author SHA1 Message Date
Marc Klingen 7226b36d47 chore: release v2.14.2
CI/CD / lint (push) Waiting to run
CI/CD / test-docker-build (push) Waiting to run
CI/CD / tests (20) (push) Waiting to run
CI/CD / e2e-tests (push) Waiting to run
CI/CD / all-ci-passed (push) Blocked by required conditions
CI/CD / push-docker-image (push) Blocked by required conditions
release.yml / release (push) Waiting to run
2024-03-28 01:56:37 +01:00
Marc KlingenandGitHub f3515e0c9a fix(ui): environment label responsive behavior (#1520) 2024-03-28 00:49:26 +00:00
Marc KlingenandGitHub 1d0e36f2e8 feat(security): optional captcha/turnstile on sign-in (#1519) 2024-03-28 01:07:28 +01:00
6de2460e0b feat(nav): add project drop down and shift settings menu items down (#1516)
---------

Co-authored-by: Marc Klingen <git@marcklingen.com>
2024-03-27 21:51:55 +00:00
52ef6a1765 fix: column visibility state out of sync when adding new columns (#1506)
---------

Co-authored-by: Marc Klingen <git@marcklingen.com>
2024-03-27 17:44:47 +00:00
Max Deichmann 9fdc531e85 chore: release v2.14.1
CI/CD / lint (push) Waiting to run
CI/CD / test-docker-build (push) Waiting to run
CI/CD / tests (20) (push) Waiting to run
CI/CD / e2e-tests (push) Waiting to run
CI/CD / all-ci-passed (push) Blocked by required conditions
CI/CD / push-docker-image (push) Blocked by required conditions
release.yml / release (push) Waiting to run
2024-03-27 15:49:45 +01:00
Max DeichmannandGitHub 2988504d4f fix: ditch traces table API size limits by not loading i/o (#1515) 2024-03-27 15:47:09 +01:00
ClemoandGitHub 0d28053acd docs: fix typo in readme
fix typo in readme
2024-03-27 15:24:34 +01:00
Hassieb PakzadandGitHub 06fdc33627 fix: use secure cookies for chatCompletion endpoint in prod environment (#1482) 2024-03-27 13:22:48 +01:00
Max Deichmann 8feb500f85 chore: release v2.14.0
CI/CD / lint (push) Waiting to run
CI/CD / test-docker-build (push) Waiting to run
CI/CD / tests (20) (push) Waiting to run
CI/CD / e2e-tests (push) Waiting to run
CI/CD / all-ci-passed (push) Blocked by required conditions
CI/CD / push-docker-image (push) Blocked by required conditions
release.yml / release (push) Waiting to run
2024-03-27 12:26:34 +01:00
Richard KrümmelandGitHub 4b4b2989a9 feat(filter): display names in UI while keeping ID in URLs (#1440) 2024-03-27 10:40:48 +00:00
Marc Klingen 6e4c167b60 chore: release v2.13.1
CI/CD / lint (push) Waiting to run
CI/CD / test-docker-build (push) Waiting to run
CI/CD / tests (20) (push) Waiting to run
CI/CD / e2e-tests (push) Waiting to run
CI/CD / all-ci-passed (push) Blocked by required conditions
CI/CD / push-docker-image (push) Blocked by required conditions
release.yml / release (push) Waiting to run
2024-03-26 19:31:25 +01:00
Marc KlingenandGitHub cdd2765398 feat(api): order dataset items by createdAt desc (#1509) 2024-03-26 18:26:10 +00:00
Max DeichmannandGitHub 73657cde5a chore: redis version (#1507) 2024-03-26 18:08:17 +00:00
Marc KlingenandGitHub dbc90662a2 chore: add TraceView to prisma schema (#1504) 2024-03-26 16:09:25 +01:00
Max DeichmannandGitHub 85acbc8b19 chore: add docs for ingestion api (#1503)
push
2024-03-26 13:32:49 +00:00
Hassieb PakzadandGitHub e5dce9be58 refactor: makes playground components reusable (#1501) 2024-03-26 10:52:35 +00:00
Marc KlingenandGitHub d282da6186 fix(ui): encode promptName when in url (#1498) 2024-03-25 22:42:35 +00:00
Marc Klingen 00e30e474e chore: release v2.13.0
CI/CD / lint (push) Waiting to run
CI/CD / test-docker-build (push) Waiting to run
CI/CD / tests (20) (push) Waiting to run
CI/CD / e2e-tests (push) Waiting to run
CI/CD / all-ci-passed (push) Blocked by required conditions
CI/CD / push-docker-image (push) Blocked by required conditions
release.yml / release (push) Waiting to run
2024-03-25 23:28:25 +01:00
Marc KlingenandGitHub b6f41fb3cf ci: run tests on node 20 only (#1492) 2024-03-25 22:22:41 +00:00
Marc KlingenandGitHub 26377313ea feat: add optional metadata to dataset run (#1491) 2024-03-25 22:18:10 +00:00
Marc KlingenandGitHub 6d3f1cf6c1 chore: drop unused example table (#1490) 2024-03-25 21:25:54 +00:00
Marc Klingen 5c19d537c9 docs: update contributing 2024-03-25 22:19:42 +01:00
Marc KlingenandGitHub 44bc99efca chore: bump to node20 (#1489) 2024-03-25 21:18:38 +00:00
Marc KlingenandGitHub 9e7f80d0b1 feat(ui): add pagination on datasets tables (#1487)
* chore: update seeder for datasets

* chore(ui): change color of btn

* feat(ui): add pagination on datasets tables
2024-03-25 21:13:34 +00:00
Marc Klingen 4e01bf2862 fix(ui): remove unnecessary " from llamaindex quickstart 2024-03-25 19:27:08 +01:00
Max DeichmannandGitHub aa335ee528 chore: add turbo docs (#1485) 2024-03-25 18:10:24 +00:00
Max DeichmannandGitHub 41a7ee2f06 chore: improve dx for migrating models manually (#1483) 2024-03-25 16:28:19 +00:00
Max Deichmann 97c15ca003 chore: release v2.12.1
CI/CD / lint (push) Waiting to run
CI/CD / test-docker-build (push) Waiting to run
CI/CD / tests (18) (push) Waiting to run
CI/CD / tests (20) (push) Waiting to run
CI/CD / e2e-tests (push) Waiting to run
CI/CD / all-ci-passed (push) Blocked by required conditions
CI/CD / push-docker-image (push) Blocked by required conditions
release.yml / release (push) Waiting to run
2024-03-25 17:18:38 +01:00
Max DeichmannandGitHub 286a959232 fix: load traces IO individually (#1426) 2024-03-25 17:10:15 +01:00
Marc Klingen 11e966fa56 chore: add pnpm run db:seed:examples 2024-03-25 15:20:38 +01:00
Max Deichmann e8252998e1 chore: release v2.12.0
CI/CD / lint (push) Waiting to run
CI/CD / test-docker-build (push) Waiting to run
CI/CD / tests (18) (push) Waiting to run
CI/CD / tests (20) (push) Waiting to run
CI/CD / e2e-tests (push) Waiting to run
CI/CD / all-ci-passed (push) Blocked by required conditions
CI/CD / push-docker-image (push) Blocked by required conditions
release.yml / release (push) Waiting to run
2024-03-25 09:52:14 +01:00
Max DeichmannandGitHub 53e9746c78 refactor: add logging for ingesiton api (#1480) 2024-03-25 08:37:04 +00:00
Max DeichmannandGitHub 63aaa2eb13 feat(worker): add pino logger (#1478) 2024-03-24 16:53:20 +00:00
Marc KlingenandGitHub 037f878600 chore: update contributing.md to point to new prisma location (#1477) 2024-03-24 16:29:07 +01:00
Max DeichmannandGitHub daa6330098 refactor: move llm playground logic to shared package (#1476) 2024-03-24 09:00:48 +00:00
Max DeichmannandGitHub d5355cef15 chore: upgrade turbo (#1475) 2024-03-23 21:37:17 +00:00
Max DeichmannandGitHub e46652bcf8 feat: safely parse env variables in worker (#1474) 2024-03-23 21:23:13 +00:00
Max DeichmannandGitHub de9c199ade refactor: move db definition in shared package (#1473) 2024-03-23 20:57:57 +00:00
Max DeichmannandGitHub 9690314f3e feat: add sentry to worker (#1472) 2024-03-23 16:45:51 +00:00
Richard KrümmelandGitHub 07bd61798f feat(tables): add columnvisibility count (#1452) 2024-03-23 15:51:17 +01:00
Hassieb PakzadandGitHub da3eccd6ae feat: adds prompt playground (#1443) 2024-03-23 14:16:02 +00:00
Max DeichmannandGitHub bdf16a6b0c refactor: add db:generate to dev command and update docs (#1471) 2024-03-23 12:27:02 +00:00
Max DeichmannandGitHub 0a98c0c2d1 fix: build docker image (#1463) 2024-03-21 17:16:45 +00:00
ClemoandGitHub 261c5ebf97 docs: update readme, minor fixes
docs: update readme, minor fixes
2024-03-21 18:11:38 +01:00
Max DeichmannandGitHub c6555db387 refactor: add pnpm and turbo monorepo (#1401) (#1422) 2024-03-21 14:31:36 +00:00
Marc Klingen 44589f33b2 chore(ui): truncate prompt names at 50 instead of 30 characters 2024-03-20 16:08:06 +01:00
Max Deichmann f7dc43f5ba chore: release v2.11.3
CI/CD / lint (push) Waiting to run
CI/CD / test-docker-build (push) Waiting to run
CI/CD / tests (18) (push) Waiting to run
CI/CD / tests (20) (push) Waiting to run
CI/CD / e2e-tests (push) Waiting to run
CI/CD / all-ci-passed (push) Blocked by required conditions
CI/CD / push-docker-image (push) Blocked by required conditions
release.yml / release (push) Waiting to run
2024-03-18 16:56:42 +01:00
Max DeichmannandGitHub fbd11dbdee fix: fix dashboard filtering (#1433) 2024-03-18 16:56:00 +01:00
356 changed files with 22991 additions and 29661 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
[codespell]
skip = .git,*.pdf,*.svg,package-lock.json,*.prisma
skip = .git,*.pdf,*.svg,package-lock.json,*.prisma,pnpm-lock.yaml
ignore-words-list = afterall,vertx
+2 -1
View File
@@ -4,4 +4,5 @@ node_modules
npm-debug.log
README.md
.next
.git
.git
**/node_modules
+4
View File
@@ -31,6 +31,10 @@ S3_SECRET_ACCESS_KEY=
S3_BUCKET_NAME=
S3_REGION=
# Prompt playground
OPENAI_API_KEY=""
ANTHROPIC_API_KEY=""
# Set during docker build of application
# Used to disable environment verification at build time
# DOCKER_BUILD=1
+5
View File
@@ -12,3 +12,8 @@ NEXTAUTH_URL="http://localhost:3000"
# feature flag to enable experimental features locally
LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES="false"
SALT="salt"
# Prompt playground
OPENAI_API_KEY=""
ANTHROPIC_API_KEY=""
+7
View File
@@ -65,6 +65,9 @@ SALT="salt"
# DB_EXPORT_PAGE_SIZE=1000
# Prompt playground
# OPENAI_API_KEY=""
# ANTHROPIC_API_KEY=""
### START Langfuse Cloud Config
@@ -87,6 +90,10 @@ SALT="salt"
# NEXT_SENTRY_PROJECT=
# SENTRY_AUTH_TOKEN=
# Cloudflare Turnstile
# NEXT_PUBLIC_TURNSTILE_SITE_KEY=
# TURNSTILE_SECRET_KEY=
# Betterstack
# LANGFUSE_TEAM_BETTERSTACK_TOKEN=
+1
View File
@@ -1,3 +1,4 @@
node_modules
**/node_modules
build
coverage
+43 -48
View File
@@ -10,42 +10,31 @@ on:
merge_group:
pull_request:
branches:
- "main"
defaults:
run:
working-directory: web
- "*"
jobs:
lint:
defaults:
run:
working-directory: .
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v3
with:
version: 8
- uses: actions/setup-node@v3
with:
node-version: 20
cache: "npm"
cache-dependency-path: "**/package-lock.json"
cache: "pnpm"
cache-dependency-path: "pnpm-lock.yaml"
- name: install dependencies
run: |
npm ci
pnpm i
- name: Load default env
run: |
cp .env.dev.example .env
- name: lint web
working-directory: ./web
run: npm run lint
- name: lint worker
working-directory: ./worker
run: npm run lint
run: pnpm run lint
test-docker-build:
defaults:
run:
working-directory: web
runs-on: ubuntu-latest
steps:
- name: Checkout
@@ -54,23 +43,22 @@ jobs:
- name: Build Web Docker image
uses: docker/build-push-action@v4
with:
context: web
context: .
file: ./web/Dockerfile
push: false
- name: Build Worker Docker image
uses: docker/build-push-action@v4
with:
context: worker
context: .
file: ./worker/Dockerfile
push: false
tests:
defaults:
run:
working-directory: web
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20]
node-version: [20]
steps:
- name: Set Swap Space
uses: pierotofy/set-swap-space@master
@@ -78,83 +66,86 @@ jobs:
swap-size-gb: 10
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v3
with:
version: 8
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
cache-dependency-path: "**/package-lock.json"
cache: "pnpm"
cache-dependency-path: "pnpm-lock.yaml"
- name: install dependencies
run: |
npm ci
pnpm install
- name: Load default env
working-directory: .
run: |
cp .env.dev.example .env
cp .env.dev.example web/.env
- name: Run + migrate
working-directory: .
run: |
docker-compose -f docker-compose.dev.yml up -d
sleep 5 # Wait for PostgreSQL to accept connections
- name: Seed DB
run: |
npx --yes prisma migrate reset --force --skip-generate
pnpm run db:migrate
pnpm run db:seed
- name: Build
run: npm run build
run: pnpm run build
- name: Start Langfuse
run: (npm start&)
run: (pnpm run start&)
- name: run tests
run: npm run test
run: pnpm run test
e2e-tests:
defaults:
run:
working-directory: web
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v3
with:
version: 8
- uses: actions/setup-node@v3
with:
node-version: 20
cache: "npm"
cache-dependency-path: "**/package-lock.json"
cache: "pnpm"
cache-dependency-path: "pnpm-lock.yaml"
- name: install dependencies
run: |
npm ci
pnpm install
- name: Load default env
working-directory: .
run: |
cp .env.dev.example .env
cp .env.dev.example web/.env
- name: Run + migrate
working-directory: .
run: |
docker-compose -f docker-compose.dev.yml up -d
sleep 5 # Wait for PostgreSQL to accept connections
- name: Seed DB
run: |
npx --yes prisma migrate reset --force --skip-generate
pnpm run db:migrate
pnpm run db:seed
- name: Build
run: npm run build
run: pnpm run build
- name: Install playwright
run: npx playwright install
run: |
npm add --global playwright
pnpm exec playwright install
- name: Run e2e tests
run: npm run test:e2e
run: pnpm --filter=web run test:e2e
all-ci-passed:
# This allows us to have a branch protection rule for tests and deploys with matrix
@@ -184,11 +175,14 @@ jobs:
contents: read
steps:
- uses: pnpm/action-setup@v3
with:
version: 8
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 20
cache-dependency-path: "**/package-lock.json"
cache-dependency-path: "pnpm-lock.yaml"
- name: Checkout
uses: actions/checkout@v3
@@ -217,7 +211,8 @@ jobs:
- name: Build and push Docker image
uses: docker/build-push-action@v4
with:
context: web
context: .
file: ./web/Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
+9 -1
View File
@@ -52,4 +52,12 @@ yarn-error.log*
# vscode
.devcontainer
.devcontainer
node_modules
**/node_modules
**/dist
**/.next/*
**/.turbo/*
.yarn
.turbo
+1
View File
@@ -0,0 +1 @@
public-hoist-pattern[]=*prisma*
+63 -23
View File
@@ -91,9 +91,9 @@ flowchart TB
The diagram below may not show all relationships if the foreign key is not defined in the database schema. For instance, `trace_id` in the `observation` table is not defined as a foreign key to the `trace` table to allow unordered ingestion of these objects, but it is still a foreign key in the application code.
Full database schema: [web/prisma/schema.prisma](web/prisma/schema.prisma)
Full database schema: [packages/shared/prisma/schema.prisma](packages/shared/prisma/schema.prisma)
<img src="./web/prisma/database.svg">
<img src="./packages/shared/prisma/database.svg">
### Infrastructure & Network Overview
@@ -112,12 +112,15 @@ flowchart LR
## Repository Structure
This repository contains the following packages:
We built a monorepo using [pnpm](https://pnpm.io/motivation) and [turbo](https://turbo.build/repo/docs) to manage the dependencies and build process. The monorepo contains the following packages:
- `web`: is the main application package providing Frontend and Backend APIs for Langfuse
- `web`: is the main application package providing Frontend and Backend APIs for Langfuse.
- `worker` (no production yet): contains an application for asynchronous processing of tasks. This package is not yet used in production.
- `shared`: contains shared code between the above packages.
- `config-eslint`: contains eslint configurations which are shared between the above packages.
- `config-typescript`: contains typescript configurations which are shared between the above packages.
## Development Setup (web package only)
## Development Setup
Requirements
@@ -130,7 +133,7 @@ Requirements
2. Run the development database
```bash
npm run infra:dev:up
pnpm run infra:dev:up
```
3. Create an env file
@@ -139,38 +142,75 @@ Requirements
cp .env.dev.example .env
```
4. CD into the web directory
4. Install dependencies
```bash
cd web
pnpm install
```
5. Install dependencies
5. Run the migrations
All database migrations and configs are in the `shared` package.
```bash
npm install
```
6. Run the migrations
The `schema.prisma` file is in the `web` directory and hence, migrations are applied from there.
```bash
npm run db:migrate
pnpm --filter=shared run db:migrate
# Optional: seed the database
# npm run db:seed
# npm run db:seed:examples
# pnpm run db:seed
# pnpm run db:seed:examples
# pnpm --filter=shared run db:seed:load
```
7. Start the development server
6. Start the development server
```bash
npm run dev
pnpm run dev
```
## Monorepo quickstart
- Available packages and their dependencies
Packages are included in the monorepo according to the `pnpm-workspace.yaml` file. Each package maintains its own dependencies defined in the `package.json`. Internal dependencies can be added as well by adding them to the package dependencies: `"@langfuse/shared": "workspace:*"`.
- Executing commands
You can run commands in all packages at once. For example, to install all dependencies in all packages, you can execute:
```bash
pnpm install
pnpm run dev
pnpm --filter=web run dev # execute command only in one package
```
In the root `package.json`, you can find scripts which are executed with turbo e.g. `turbo run dev`. These scripts are executed with the help of Turbo. Turbo executes the commands in all packages taking care of the correct order of execution. Task definitions can be found in the `turbo.config.js` file.
- Run migrations
To run migrations, you can execute the following command.
```bash
pnpm --filter=shared run db:migrate
```
> [!NOTE]
> If you frequently switch branches, use `npm run dx` instead of `npm run dev`. This command will install dependencies, reset the database (wipe and apply all migrations), and run the database seeder with example data before starting the development server.
> If you frequently switch branches, use `pnpm run dx` instead of `pnpm run dev`. This command will install dependencies, reset the database (wipe and apply all migrations), and run the database seeder with example data before starting the development server.
> [!NOTE]
> If you find yourself stuck and want to clean the repo, execute `pnpm run nuke`. It will remove all node_modules and build files.
## System behavior
### Ingestion API `(/public/api/ingestion)`
- the ingestion API takes different event types (creation and updates of traces, generations, spans, events)
- The API loops through each event and:
- validates the event
- stores the event raw in the events table
- calculates tokens for `generations`
- matches models from the `models` table to model for `generations` events
- upserts the event in the `traces` or `observations` table
- returns a `207` HTTP status code with a list of errors if any event failed to be ingested
## Commit messages
+3 -3
View File
@@ -57,7 +57,7 @@
### Test
- **Experiments:** Track and test app behaviour before deploying a new version
- Datasets let you test expected in and output pairs and benchmark performance before deployiong ([Datasets](https://langfuse.com/docs/datasets))
- Datasets let you test expected in and output pairs and benchmark performance before deploying ([Datasets](https://langfuse.com/docs/datasets))
- Track versions and releases in your application ([Experimentation](https://langfuse.com/docs/experimentation), [Prompt Management](https://langfuse.com/docs/prompts))
### Video: Langfuse in two minutes
@@ -114,8 +114,8 @@ See our the [→ Quickstart](https://langfuse.com/docs/get-started) to get start
| ---------------------------------------------------------------- | ------------- | ---------------------------------------------------------------- |
| [**SDK** - _recommended_](https://langfuse.com/docs/sdk) | Python, JS/TS | Manual instrumentation using the SDKs for full flexibility. |
| [OpenAI SDK](https://langfuse.com/docs/integrations/openai) | Python | Automated instrumentation via drop-in replacement of OpenAI SDK. |
| [Langchain](https://langfuse.com/docs/integrations/langchain) | Python, JS/TS | Automated instrumentation via LlamaIndex callback system. |
| [LlamaIndex](https://langfuse.com/docs/integrations/llama-index) | Python, JS/TS | Automated instrumentation via LlamaIndex callback system. |
| [Langchain](https://langfuse.com/docs/integrations/langchain) | Python, JS/TS | Instrumentation via Langchain callbacks. |
| [LlamaIndex](https://langfuse.com/docs/integrations/llama-index) | Python | Automated instrumentation via LlamaIndex callback system. |
| [API](https://langfuse.com/docs/api) | | Directly call the public API. OpenAPI spec available. |
External projects/packages that integrate with Langfuse:
+5 -5
View File
@@ -3,8 +3,8 @@ version: "3.5"
services:
server:
build:
dockerfile: ./Dockerfile
context: ./web
dockerfile: ./web/Dockerfile
context: .
depends_on:
- db
- redis
@@ -25,8 +25,8 @@ services:
worker:
build:
dockerfile: ./Dockerfile
context: ./worker
dockerfile: ./worker/Dockerfile
context: .
depends_on:
- db
- redis
@@ -45,7 +45,7 @@ services:
restart: always
redis:
image: redis
image: redis:7.2.4
command: >
--requirepass ${REDIS_AUTH:-myredissecret}
restart: always
+3 -1
View File
@@ -2,8 +2,10 @@ version: "3.5"
services:
redis:
image: redis
image: redis:7.2.4
restart: always
command: >
--requirepass ${REDIS_AUTH:-myredissecret}
ports:
- 6379:6379
+1
View File
@@ -153,6 +153,7 @@ types:
properties:
id: string
name: string
metadata: optional<unknown>
datasetId: string
createdAt: datetime
updatedAt: datetime
@@ -15,5 +15,8 @@ types:
CreateDatasetRunItemRequest:
properties:
runName: string
metadata:
type: optional<unknown>
docs: Metadata of the dataset run, updates run if run already exists
datasetItemId: string
observationId: string
+1 -1
View File
@@ -137,7 +137,7 @@
"auth": null,
"body": {
"mode": "raw",
"raw": "{\n \"runName\": \"example\",\n \"datasetItemId\": \"example\",\n \"observationId\": \"example\"\n}",
"raw": "{\n \"runName\": \"example\",\n \"metadata\": \"UNKNOWN\",\n \"datasetItemId\": \"example\",\n \"observationId\": \"example\"\n}",
"options": {
"raw": {
"language": "json"
-2145
View File
File diff suppressed because it is too large Load Diff
+19 -11
View File
@@ -1,23 +1,31 @@
{
"name": "langfuse",
"version": "2.7.0",
"author": "engineering@langfuse.com",
"license": "MIT",
"engines": {
"node": ">=20"
},
"scripts": {
"preinstall": "npx only-allow pnpm",
"infra:dev:up": "docker-compose -f ./docker-compose.dev.yml up -d",
"infra:dev:down": "docker-compose -f ./docker-compose.dev.yml down",
"dev": "npm run dev --prefix worker/ & npm run dev --prefix web/",
"postinstall": "cd worker && npm install && cd ../web && npm install",
"db:generate": "turbo run db:generate",
"db:migrate": "turbo run db:migrate",
"db:seed": "turbo run db:seed",
"db:seed:examples": "turbo run db:seed:examples",
"nuke": "bash ./scripts/nuke.sh",
"dx": "dotenv -e .env -- npm i && npm run infra:dev:up && cd web && npm run db:reset && npm run db:seed:examples && cd .. && npm run dev"
"dx": "pnpm i && pnpm --filter=shared run db:reset && pnpm --filter=worker run db:seed:examples && pnpm run dev",
"build": "turbo run build",
"start": "turbo run start",
"dev": "turbo run dev",
"lint": "turbo run lint",
"test": "turbo run test",
"models:migrate": "turbo run models:migrate"
},
"author": "",
"license": "MIT",
"devDependencies": {
"@types/eslint": "^8.56.2",
"@types/jest": "^29.5.12",
"@typescript-eslint/eslint-plugin": "^7.0.2",
"@typescript-eslint/parser": "^7.0.2",
"dotenv-cli": "^7.3.0",
"eslint": "^8.56.0",
"prettier": "^3.2.5"
"prettier": "^3.2.5",
"turbo": "^1.13.0"
}
}
+39
View File
@@ -0,0 +1,39 @@
const { resolve } = require("node:path");
const project = resolve(process.cwd(), "tsconfig.json");
/** @type {import("eslint").Linter.Config} */
module.exports = {
extends: ["eslint:recommended", "prettier", "eslint-config-turbo"],
plugins: ["only-warn"],
globals: {
React: true,
JSX: true,
},
env: {
node: true,
es6: true,
},
settings: {
"import/resolver": {
typescript: {
project,
},
},
},
ignorePatterns: [
// Ignore dotfiles
".*.js",
"node_modules/",
"dist/",
],
rules: {
"no-redeclare": "off",
"import/order": "off",
},
overrides: [
{
files: ["*.js?(x)", "*.ts?(x)"],
},
],
};
+65
View File
@@ -0,0 +1,65 @@
const { resolve } = require("node:path");
const project = resolve(process.cwd(), "tsconfig.json");
/*
* This is a custom ESLint configuration for use with
* Next.js apps.
*
* This config extends the Vercel Engineering Style Guide.
* For more information, see https://github.com/vercel/style-guide
*
*/
module.exports = {
parser: "@typescript-eslint/parser", // Set the parser to @typescript-eslint/parser
extends: [
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/strict-type-checked",
"eslint-config-turbo",
],
rules: {
"@typescript-eslint/no-non-null-assertion": "off",
"@typescript-eslint/no-confusing-void-expression": "off",
},
parser: "@typescript-eslint/parser",
parserOptions: {
project,
},
globals: {
React: true,
JSX: true,
},
plugins: ["@typescript-eslint"],
extends: ["next/core-web-vitals"],
env: {
es6: true,
jest: true,
},
settings: {
"import/resolver": {
typescript: {
project,
},
},
},
ignorePatterns: ["node_modules/", "dist/"],
// add rules configurations here
rules: {
"@typescript-eslint/consistent-type-imports": [
"warn",
{
prefer: "type-imports",
fixStyle: "inline-type-imports",
},
],
"@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }],
"react/jsx-key": [
"error",
{
warnOnDuplicates: true,
},
],
},
};
+19
View File
@@ -0,0 +1,19 @@
{
"name": "@repo/eslint-config",
"version": "0.0.0",
"license": "MIT",
"private": true,
"files": [
"library.js",
"next.js"
],
"devDependencies": {
"@vercel/style-guide": "^5.2.0",
"eslint-config-turbo": "^1.12.4",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-only-warn": "^1.1.0",
"@typescript-eslint/parser": "^7.1.0",
"@typescript-eslint/eslint-plugin": "^7.1.0",
"typescript": "^5.3.3"
}
}
+22
View File
@@ -0,0 +1,22 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"display": "Default",
"compilerOptions": {
"composite": false,
"declaration": true,
"declarationMap": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"inlineSources": false,
"isolatedModules": true,
"module": "ESNext",
"noErrorTruncation": true,
"moduleResolution": "Bundler",
"noUnusedLocals": false,
"noUnusedParameters": false,
"preserveWatchOutput": true,
"skipLibCheck": true,
"strict": true
},
"exclude": ["node_modules"]
}
+25
View File
@@ -0,0 +1,25 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"display": "Next.js",
"extends": "./base.json",
"compilerOptions": {
"plugins": [{ "name": "next" }],
"target": "es2017",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"checkJs": true,
"skipLibCheck": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"incremental": true,
"esModuleInterop": true,
"module": "esnext",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
"types": ["jest", "node"],
},
"include": ["src", "next-env.d.ts"],
"exclude": ["node_modules"]
}
+9
View File
@@ -0,0 +1,9 @@
{
"name": "@repo/typescript-config",
"license": "MIT",
"version": "0.0.0",
"private": true,
"publishConfig": {
"access": "public"
}
}
+8
View File
@@ -0,0 +1,8 @@
/** @type {import("eslint").Linter.Config} */
module.exports = {
extends: ["@repo/eslint-config/library.js"],
parser: "@typescript-eslint/parser",
parserOptions: {
project: true,
},
};
+66
View File
@@ -0,0 +1,66 @@
{
"name": "@langfuse/shared",
"version": "1.0.0",
"license": "MIT",
"private": true,
"main": "./dist/src/index.js",
"types": "./dist/src/index.d.ts",
"files": [
"dist/**"
],
"engines": {
"node": ">=20"
},
"scripts": {
"build": "tsc",
"dev": "tsc --watch",
"lint": "eslint . --ext .js,.jsx,.ts,.tsx",
"lint:fix": "eslint . --ext .js,.jsx,.ts,.tsx --fix",
"db:migrate": "DISABLE_ERD=false dotenv -e ../../.env -- npx prisma migrate dev",
"db:reset": "dotenv -e ../../.env npx -- prisma migrate reset",
"db:deploy": "dotenv -e ../../.env npx -- prisma migrate deploy",
"db:seed": "dotenv -e ../../.env -- npx prisma db seed",
"db:generate": "dotenv -e ../../.env -- npx prisma generate",
"db:seed:examples": "dotenv -e ../../.env -- npx prisma db seed -- --environment examples",
"db:seed:load": "dotenv -e ../../.env -- npx prisma db seed -- --environment load"
},
"prisma": {
"seed": "ts-node -r tsconfig-paths/register -r dotenv/config --compiler-options {\"module\":\"CommonJS\"} prisma/seed.ts"
},
"dependencies": {
"@langchain/anthropic": "^0.1.8",
"@langchain/core": "^0.1.49",
"@langchain/openai": "^0.0.23",
"@prisma/client": "^5.11.0",
"@types/bcryptjs": "^2.4.6",
"bcryptjs": "^2.4.3",
"kysely": "^0.27.3",
"langchain": "^0.1.28",
"prisma-extension-kysely": "^2.1.0",
"prisma-kysely": "^1.8.0",
"zod": "^3.22.4"
},
"devDependencies": {
"@repo/eslint-config": "*",
"@repo/typescript-config": "*",
"@types/lodash": "^4.14.202",
"@types/node": "^20.11.29",
"@types/pg": "^8.11.2",
"@types/uuid": "^9.0.8",
"@typescript-eslint/parser": "^7.2.0",
"eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0",
"eslint-config-standard": "^17.1.0",
"eslint-plugin-prettier": "^5.1.3",
"kysely-codegen": "^0.11.0",
"nodemon": "^3.0.3",
"prettier": "^3.2.5",
"prisma": "^5.11.0",
"prisma-erd-generator": "^1.11.2",
"ts-node": "^10.9.2",
"tsc-watch": "^6.0.4",
"tsup": "^8.0.2",
"typescript": "^5.3.3",
"vitest": "^1.3.1"
}
}
+4
View File
@@ -0,0 +1,4 @@
{
"trailingComma": "es5",
"printWidth": 120
}

Before

Width:  |  Height:  |  Size: 194 KiB

After

Width:  |  Height:  |  Size: 194 KiB

@@ -120,6 +120,7 @@ export type DatasetRunItems = {
export type DatasetRuns = {
id: string;
name: string;
metadata: unknown | null;
dataset_id: string;
created_at: Generated<Timestamp>;
updated_at: Generated<Timestamp>;
@@ -134,11 +135,6 @@ export type Events = {
url: string | null;
method: string | null;
};
export type Example = {
id: string;
created_at: Generated<Timestamp>;
updated_at: Timestamp;
};
export type Membership = {
project_id: string;
user_id: string;
@@ -300,6 +296,24 @@ export type TraceSession = {
bookmarked: Generated<boolean>;
public: Generated<boolean>;
};
export type TraceView = {
id: string;
external_id: string | null;
timestamp: Generated<Timestamp>;
name: string | null;
user_id: string | null;
metadata: unknown | null;
release: string | null;
version: string | null;
project_id: string;
public: Generated<boolean>;
bookmarked: Generated<boolean>;
tags: Generated<string[]>;
input: unknown | null;
output: unknown | null;
session_id: string | null;
duration: number | null;
};
export type User = {
id: string;
name: string | null;
@@ -327,7 +341,6 @@ export type DB = {
dataset_runs: DatasetRuns;
datasets: Dataset;
events: Events;
Example: Example;
membership_invitations: MembershipInvitation;
memberships: Membership;
models: Model;
@@ -340,6 +353,7 @@ export type DB = {
Session: Session;
trace_sessions: TraceSession;
traces: Trace;
traces_view: TraceView;
users: User;
verification_tokens: VerificationToken;
};

Some files were not shown because too many files have changed in this diff Show More