Commit Graph

45 Commits

Author SHA1 Message Date
Vectry
b21d8fe52c fix: add lightweight migrate Dockerfile target to avoid tsup build failure in CI
Some checks failed
Deploy AgentLens / deploy (push) Failing after 9s
The migrate service only needs Prisma CLI to run 'prisma db push'. Previously
it used the 'builder' target which runs 'npx turbo build' (including sdk-ts
needing tsup), causing failures in fresh CI builds over TCP where Docker cache
is unavailable. New 'migrate' target copies only node_modules and prisma schema.
v0.2.3
2026-02-10 23:56:09 +00:00
Vectry
c6fa25ed47 fix: skip Docker install, use pre-installed CLI from runner image
Some checks failed
Deploy AgentLens / deploy (push) Failing after 6s
v0.2.2
2026-02-10 23:38:45 +00:00
Vectry
0e97c23579 fix: use TCP docker host, fix heredoc whitespace, fix health checks in deploy workflow 2026-02-10 23:31:18 +00:00
Vectry
865a1b0081 Fix deploy workflow: use ubuntu-latest with Docker CLI install 2026-02-10 23:22:06 +00:00
Vectry
b3e5119568 Add Gitea Actions deploy-on-tag workflow 2026-02-10 23:18:53 +00:00
Vectry
2ac5fdca30 feat: add favicon, apple icon, og image and icons metadata
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-Claude)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-10 19:25:17 +00:00
Vectry
64c827ee84 feat: add command palette, accessibility, scroll animations, demo workspace, and keyboard navigation
- COMP-139: Command palette for quick navigation
- COMP-140: Accessibility improvements
- COMP-141: Scroll animations with animate-on-scroll component
- COMP-143: Demo workspace with seed data and demo banner
- COMP-145: Keyboard navigation and shortcuts help

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-Claude)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-10 18:06:36 +00:00
Vectry
f9e7956e6f feat: add shared design tokens, JetBrains Mono font, and fix cn() utility
- Add CSS custom properties for surfaces, text, borders, accent, radius, font stacks
- Add JetBrains Mono via next/font/google alongside Inter (both as CSS variables)
- Upgrade cn() from naive filter/join to twMerge(clsx()) for proper Tailwind class merging
- Standardize marketing section containers from max-w-7xl to max-w-6xl
- Install tailwind-merge and clsx dependencies
2026-02-10 17:22:45 +00:00
Vectry
cccb3123ed security: P1/P2 hardening — rate limiting, CORS, Redis auth, network isolation
- Add Redis-based sliding window rate limiting on login, register, forgot-password, reset-password
- Fix user enumeration: register returns generic 200 for both new and existing emails
- Add Redis authentication (requirepass) and password in .env
- Docker network isolation: postgres/redis on internal-only network
- Whitelist Stripe redirect origins (prevent open redirect)
- Add 10MB request size limit on trace ingestion
- Limit API keys to 10 per user
- Add CORS headers via middleware (whitelist agentlens.vectry.tech + localhost)
- Reduce JWT max age from 30 days to 7 days
2026-02-10 17:03:48 +00:00
Vectry
e9cd11735c security: fix trace ownership bypass and externalize secrets to .env
- Add userId guard in trace upsert to prevent cross-user overwrites
- Move AUTH_SECRET, STRIPE_WEBHOOK_SECRET, POSTGRES_PASSWORD to .env
- docker-compose.yml now references env vars instead of hardcoded secrets
- Add .env.example with placeholder values for documentation
2026-02-10 16:53:57 +00:00
Vectry
539d35b649 feat: password reset flow and email verification
- Add forgot-password and reset-password pages and API routes
- Add email verification with token generation on registration
- Add resend-verification endpoint with 60s rate limit
- Add shared email utility (nodemailer, Migadu SMTP)
- Add VerificationBanner in dashboard layout
- Add PasswordResetToken and EmailVerificationToken models
- Add emailVerified field to User model
- Extend NextAuth session with isEmailVerified
- Add forgot-password link to login page
- Wire EMAIL_PASSWORD env var in docker-compose
2026-02-10 16:47:06 +00:00
Vectry
0e4ffce4fa chore: bump SDK versions, add pricing section to landing page 2026-02-10 16:27:32 +00:00
Vectry
1f2484a0bb chore: add Stripe price IDs and webhook secret to docker-compose 2026-02-10 16:19:59 +00:00
Vectry
61268f870f feat: user auth, API keys, Stripe billing, and dashboard scoping
- NextAuth v5 credentials auth with registration/login pages
- API key CRUD (create, list, revoke) with secure hashing
- Stripe checkout, webhooks, and customer portal integration
- Rate limiting per subscription tier
- All dashboard API endpoints scoped to authenticated user
- Prisma schema: User, Account, Session, ApiKey, plus Stripe fields
- Auth middleware protecting dashboard and API routes

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-Claude)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
v0.2.0
2026-02-10 15:37:49 +00:00
Vectry
07cf717c15 fix: remove all console.log/warn to avoid breaking TUI 2026-02-10 13:46:55 +00:00
Vectry
638a5d2640 fix: complete traces on idle, improve dashboard span/event/analytics views 2026-02-10 13:25:19 +00:00
Vectry
7534c709f5 fix: guard span name to always be a non-empty string 2026-02-10 12:35:31 +00:00
Vectry
7e44ccb9e7 fix: optional chaining on chat.params provider/model access 2026-02-10 11:49:17 +00:00
Vectry
bdd6362c1a fix: upsert traces to handle duplicate IDs from intermediate flushes
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-Claude)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-10 11:41:49 +00:00
Vectry
ff5bf05a47 chore: bump Python SDK to 0.1.1 for release 2026-02-10 11:26:02 +00:00
Vectry
dcc32f36d3 fix: plugin event shape mismatches, nav highlight bug, and README update
- Fix session.created/deleted reading props.info.id instead of props.id
- Fix session.diff reading FileDiff[] array instead of string
- Fix file.edited reading props.file instead of props.filePath
- Add auto-session creation fallback from tool/chat hooks
- Add flushSession() for intermediate trace sends on session.idle
- Fix dashboard nav: /dashboard exact match prevents false active state
- Update README with TypeScript SDK and OpenCode plugin sections
2026-02-10 11:23:33 +00:00
Vectry
5b388484f8 feat: syntax highlighting with shiki and copy-to-clipboard for all docs code blocks 2026-02-10 04:01:59 +00:00
Vectry
42b5379ce1 feat: coding agent tab in trace detail view
- Add conditional 'Agent' tab for traces tagged 'opencode'
- Tool usage breakdown: horizontal bar chart by tool category (file/search/shell/LSP)
- File changes timeline: chronological view of file reads, edits, and creates
- Pure CSS charts, no external dependencies
2026-02-10 03:49:12 +00:00
Vectry
f0ce0f7884 feat: SEO improvements and npm publish prep
- Expand sitemap from 2 to 13 URLs (all docs pages)
- Update JSON-LD featureList with Anthropic, OpenCode, TypeScript SDK
- Update llms.txt with docs links, TS SDK, OpenCode plugin sections
- Add READMEs for agentlens-sdk and opencode-agentlens packages
- Add repository, homepage, author, bugs fields to both package.json
2026-02-10 03:43:04 +00:00
Vectry
434e68991d fix: include SDK and plugin workspace packages in Docker deps stage 2026-02-10 03:30:34 +00:00
Vectry
5256bf005b feat: documentation pages and updated model pricing
- Add 13 documentation pages under /docs (getting-started, concepts, SDK refs, integrations, API reference, self-hosting, OpenCode plugin)
- Shared docs layout with collapsible sidebar navigation
- Update model pricing across all SDKs: add GPT-5.x, GPT-4.1, o3/o4-mini, Claude 4.5 series, claude-opus-4-6
- Update trace-analytics context window lookup with current models
2026-02-10 03:27:11 +00:00
Vectry
6bed493275 feat: TypeScript SDK (agentlens-sdk) and OpenCode plugin (opencode-agentlens)
- packages/sdk-ts: BatchTransport, TraceBuilder, models, decision helpers
  Zero external deps, native fetch, ESM+CJS output
- packages/opencode-plugin: OpenCode plugin with hooks for:
  - Session lifecycle (create/idle/error/delete/diff)
  - Tool execution capture (before/after -> TOOL_CALL spans + TOOL_SELECTION decisions)
  - LLM call tracking (chat.message -> LLM_CALL spans with model/provider)
  - Permission flow (permission.ask -> ESCALATION decisions)
  - File edit events
  - Model cost estimation (Claude, GPT-4o, o3-mini pricing)
2026-02-10 03:08:51 +00:00
Vectry
0149e0a6f4 feat: Settings page, DELETE traces endpoint, Anthropic SDK, dashboard bug fixes
- Add /dashboard/settings with SDK connection details, data stats, purge
- Add DELETE /api/traces/[id] with cascade deletion
- Add Anthropic integration (wrap_anthropic) for Python SDK
- Fix missing root duration (totalDuration -> durationMs mapping)
- Fix truncated JSON in decision tree nodes (extract readable labels)
- Fix hardcoded 128K maxTokens in token gauge (model-aware context windows)
- Enable Settings nav item in sidebar
2026-02-10 02:35:50 +00:00
Vectry
4f7719eace fix: copy public dir in Dockerfile for llms.txt and static assets 2026-02-10 02:26:20 +00:00
Vectry
92b98f2d6f feat: Decisions page — aggregated view of all decision points across traces
Adds /dashboard/decisions page with colored type badges, search,
filters (by type), sort (newest/oldest/costliest), pagination,
and links to parent traces. New /api/decisions endpoint with
Prisma queries. Removes 'Soon' badge from sidebar nav.
2026-02-10 02:24:00 +00:00
Vectry
145b1669e7 feat: comprehensive SEO — meta tags, OG, Twitter cards, JSON-LD, sitemap, robots, llms.txt
Adds metadataBase, full OpenGraph + Twitter card tags, keywords,
JSON-LD structured data (SoftwareApplication + Organization),
sitemap.ts, robots.ts with AI crawler directives, and llms.txt
for AI agent discoverability.
2026-02-10 02:21:16 +00:00
Vectry
d91fdfc81a fix: trace ingest FK violation on tool-call decisions
Spans must be inserted before decision points due to
DecisionPoint.parentSpanId FK referencing Span.id. Switched from
nested Prisma create to interactive transaction with topological
span ordering. Also adds real MoonshotAI LLM test script.
2026-02-10 02:16:10 +00:00
Vectry
98bfa968ce feat: Day 13 - root README, example agent scripts, and demo seed script 2026-02-10 01:48:47 +00:00
Vectry
e0f13cdaa6 fix: healthcheck uses 127.0.0.1 instead of localhost to avoid IPv6 resolution issue 2026-02-10 01:36:42 +00:00
Vectry
3163deb0c9 chore: harden docker-compose with healthchecks, memory limits, and log rotation 2026-02-10 01:31:47 +00:00
Vectry
0cd242447c feat: Day 11 - landing page polish, SDK README, PyPI publish as vectry-agentlens
- Landing page: pip install snippet, How it Works section, dual code examples (decorator + OpenAI wrapper), Integrations section, Open Source badge
- SDK README: quickstart, OpenAI/LangChain/Custom integrations, API reference, architecture diagram
- Published vectry-agentlens v0.1.0 to PyPI (import as agentlens)
- Fixed pyproject.toml: hatchling.build backend, wheel package mapping
2026-02-10 01:27:00 +00:00
Vectry
93e69105ea fix: wrap TraceList in Suspense boundary and mark dashboard as dynamic route
Next.js 15 requires useSearchParams() to be within a Suspense boundary for production builds
2026-02-10 00:51:22 +00:00
Vectry
1989366844 fix: OpenAI wrapper - remove duplicate span block, fix tool call extraction, fix cost model matching
- Remove duplicate span append + tool call decision logging block (lines 328-426)
- Fix _extract_tool_calls_from_response to use getattr() instead of .get() on objects
- Fix _calculate_cost to use exact match first, then longest-prefix match (prevents gpt-4o-mini matching gpt-4 pricing)
- Fix test mock setup: set return_value BEFORE wrap_openai() so wrapper captures correct original
- All 11 OpenAI integration tests + 8 SDK tests passing (19/19)
2026-02-10 00:48:48 +00:00
Vectry
47ef3dcbe6 feat: SSE real-time trace streaming + advanced search/filter with URL sync 2026-02-10 00:12:32 +00:00
Vectry
5bb75433aa feat: analytics tab with timeline waterfall, cost breakdown, token gauge 2026-02-10 00:06:01 +00:00
Vectry
867e1e9eb1 feat: decision tree visualization with React Flow + Dagre auto-layout 2026-02-09 23:58:41 +00:00
Vectry
21b4f9f316 feat: LangChain auto-instrumentation + dashboard UI
- LangChain: AgentLensCallbackHandler with auto-span creation for
  LLM calls, tool calls, chains, and agent decision logging
- Dashboard: trace list with search, status filters, pagination
- Dashboard: trace detail with Decision/Span/Event tabs
- Dashboard: sidebar layout, responsive design, dark theme
2026-02-09 23:36:28 +00:00
Vectry
3fe9013838 feat: Python SDK real implementation + API ingestion routes
- SDK: client with BatchTransport, trace decorator/context manager,
  log_decision, thread-local context stack, nested trace→span support
- API: POST /api/traces (batch ingest), GET /api/traces (paginated list),
  GET /api/traces/[id] (full trace with relations), GET /api/health
- Tests: 8 unit tests for SDK (all passing)
- Transport: thread-safe buffer with background flush thread
2026-02-09 23:25:34 +00:00
Vectry
9264866d1f feat: initial monorepo scaffold - Next.js 15 + Prisma + Python SDK stubs
- Turborepo monorepo with apps/web and packages/database, sdk-python
- Next.js 15 app with professional landing page (dark theme, emerald accent)
- Prisma schema: Trace, DecisionPoint, Span, Event models with full indexing
- Docker Compose: web (port 4200), postgres:16, redis:7, migrate service
- Python SDK package stubs: init, trace decorator, log_decision, integrations
- Multi-stage Dockerfile for standalone Next.js production build
2026-02-09 22:46:16 +00:00
repi
572fd7e234 Initial commit 2026-02-09 22:27:42 +00:00