2 Commits

Author SHA1 Message Date
Vectry
181956384b feat: add GlitchTip error monitoring integration
All checks were successful
Publish npm packages / publish (push) Successful in 2m3s
Publish PyPI package / publish (push) Successful in 21s
Deploy AgentLens / deploy (push) Successful in 3m43s
2026-02-11 01:35:01 +00:00
Vectry
2c83b945ab feat: auto-create Gitea releases on tag push and fix PyPI publish venv
All checks were successful
Publish npm packages / publish (push) Successful in 56s
Deploy AgentLens / deploy (push) Successful in 1m50s
Publish PyPI package / publish (push) Successful in 18s
2026-02-11 00:43:36 +00:00
9 changed files with 60 additions and 2 deletions

View File

@@ -59,6 +59,19 @@ jobs:
docker compose logs web --tail 50 docker compose logs web --tail 50
exit 1 exit 1
- name: Create Gitea Release
if: startsWith(gitea.ref, 'refs/tags/')
env:
RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
run: |
TAG="${{ gitea.ref_name }}"
curl -s -X POST \
"https://gitea.vectry.tech/api/v1/repos/Vectry/agentlens/releases" \
-H "Authorization: token ${RELEASE_TOKEN}" \
-H "Content-Type: application/json" \
-d "{\"tag_name\": \"${TAG}\", \"name\": \"${TAG}\", \"body\": \"Automated release for ${TAG}\", \"draft\": false, \"prerelease\": false}" \
|| echo "Release may already exist — skipping"
- name: Cleanup - name: Cleanup
if: always() if: always()
run: docker image prune -f run: docker image prune -f

View File

@@ -27,6 +27,8 @@ jobs:
- name: Build and publish to PyPI - name: Build and publish to PyPI
run: | run: |
cd packages/sdk-python cd packages/sdk-python
python3 -m venv .venv
. .venv/bin/activate
pip install build twine pip install build twine
python -m build python -m build
twine upload dist/* twine upload dist/*

View File

@@ -1,7 +1,13 @@
import { withSentryConfig } from "@sentry/nextjs";
/** @type {import('next').NextConfig} */ /** @type {import('next').NextConfig} */
const config = { const config = {
transpilePackages: ["@agentlens/database"], transpilePackages: ["@agentlens/database"],
output: "standalone", output: "standalone",
}; };
export default config; export default withSentryConfig(config, {
silent: !process.env.CI,
disableServerWebpackPlugin: true,
disableClientWebpackPlugin: true,
});

View File

@@ -28,7 +28,8 @@
"shiki": "^3.22.0", "shiki": "^3.22.0",
"stripe": "^20.3.1", "stripe": "^20.3.1",
"tailwind-merge": "^3.4.0", "tailwind-merge": "^3.4.0",
"zod": "^4.3.6" "zod": "^4.3.6",
"@sentry/nextjs": "^8.28.0"
}, },
"devDependencies": { "devDependencies": {
"@tailwindcss/postcss": "^4.0.0", "@tailwindcss/postcss": "^4.0.0",

View File

@@ -0,0 +1,7 @@
import * as Sentry from "@sentry/nextjs";
Sentry.init({
dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
tracesSampleRate: process.env.NODE_ENV === "development" ? 1.0 : 0.1,
debug: false,
});

View File

@@ -0,0 +1,7 @@
import * as Sentry from "@sentry/nextjs";
Sentry.init({
dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
tracesSampleRate: process.env.NODE_ENV === "development" ? 1.0 : 0.1,
debug: false,
});

View File

@@ -0,0 +1,7 @@
import * as Sentry from "@sentry/nextjs";
Sentry.init({
dsn: process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN,
tracesSampleRate: process.env.NODE_ENV === "development" ? 1.0 : 0.1,
debug: false,
});

View File

@@ -0,0 +1,13 @@
import * as Sentry from "@sentry/nextjs";
export async function register() {
if (process.env.NEXT_RUNTIME === "nodejs") {
await import("../sentry.server.config");
}
if (process.env.NEXT_RUNTIME === "edge") {
await import("../sentry.edge.config");
}
}
export const onRequestError = Sentry.captureRequestError;

View File

@@ -16,6 +16,8 @@ services:
- STRIPE_STARTER_PRICE_ID=${STRIPE_STARTER_PRICE_ID:-price_1SzJUlR8i0An4Wz7gZeYgzBY} - STRIPE_STARTER_PRICE_ID=${STRIPE_STARTER_PRICE_ID:-price_1SzJUlR8i0An4Wz7gZeYgzBY}
- STRIPE_PRO_PRICE_ID=${STRIPE_PRO_PRICE_ID:-price_1SzJVWR8i0An4Wz755hBrxzn} - STRIPE_PRO_PRICE_ID=${STRIPE_PRO_PRICE_ID:-price_1SzJVWR8i0An4Wz755hBrxzn}
- EMAIL_PASSWORD=${EMAIL_PASSWORD:-} - EMAIL_PASSWORD=${EMAIL_PASSWORD:-}
- NEXT_PUBLIC_SENTRY_DSN=https://c2b8bc3cc46246b9a629fd70c0dbf8dd@glitchtip.vectry.tech/1
- SENTRY_DSN=https://c2b8bc3cc46246b9a629fd70c0dbf8dd@glitchtip.vectry.tech/1
depends_on: depends_on:
redis: redis:
condition: service_healthy condition: service_healthy