- Make evaluator field nullable in TypeScript interface
- Add optional chaining for run.evaluator?.verdict
- Add optional chaining for run.evaluator?.model
- Prevents TypeError when evaluator object is missing
- Make usage field nullable in TypeScript interface
- Add optional chaining for run.usage?.executionTimeMs
- Add optional chaining for run.usage?.totalTokens
- Prevents TypeError when usage object is missing
- Add optional chaining for run.timestamps?.createdAt
- Make timestamps.createdAt optional in interface
- Add null check for evaluator.reason
- Prevents TypeError when accessing undefined properties
- Add AGENTS.md with comprehensive project rules and guidelines
- Add opencode.json with model configuration (Sonnet 4.5 + Haiku 4.5)
- Add .ignore to exclude build artifacts and generated files
- Enable AI-assisted development with proper monorepo context
- Add ShareButton component for Twitter/X sharing
- Refactor collection page to server component with generateMetadata
- Add proper OpenGraph and Twitter Card meta tags for social sharing
- Extract client-side logic to CollectionDetailClient component
- Add global scenarios explorer page at /scenarios
- Add scenario detail page with run history at /scenarios/[id]
- Add collection-scoped scenario detail page
- Add featured scenarios section to homepage
- Add useScenarios hook for data fetching
- Regenerate CLI manifest
- Create ScenariosSection component with scenario list, status badges, and metrics
- Allow generating new scenarios with AI (owner only)
- Allow running scenarios and showing run progress
- Display quality scores and pass/fail streaks
- Link to scenario detail pages for run history
- Replace simulated execution with real AI SDK generateText() calls
- Build tools from collection with executor config cascade
- Support multi-step tool execution with MAX_TOOL_STEPS limit
- Capture full conversation history, token usage, and execution time
- Use gpt-4.1-mini for consistent execution model
- Add /docs/scenarios page with comprehensive user guide
- Overview of what scenarios are
- Common archetypes for different tool types
- CLI commands: generate, list, run, test, info
- Quality scoring explanation
- CI/CD integration examples
- Rate limits documentation
- Add /docs/api/scenarios page with API reference
- List scenarios endpoint
- Get scenario details
- List collection scenarios
- Create scenario
- Generate scenarios with AI
- Run scenario
- Get run history
- Check prompt similarity
- Featured scenarios
- Error responses
- Update Table component to use bg-surface instead of hardcoded bg-white
- Fix TableRow hover and selected states to use design system tokens
- Update virtualized tables in agents, collections, and tool-search pages
- Use authClient.forgetPassword() instead of raw fetch
- Use authClient.resetPassword() instead of raw fetch
- Fixes 404 error on /api/auth/forget-password
- Add sendResetPasswordEmail function to email.ts
- Configure sendResetPassword in better-auth config
- Create /reset-password page to handle password reset after email link click
- Evaluates conversations across 10 metrics:
taskCompletion, accuracy, relevance, clarity, efficiency,
userIntentAlignment, actionability, progress, errorHandling, completeness
- Returns weighted overall score (0-10)
- Provides verdict (pass/retry/fail) with reasons
- Detects conversation loops and stuck states
- Lists must-dos, suggestions, and next steps
- Designed for frequent use in agentic loops
The tool name shortening logic was correctly finding the tool in the
database but then passing the reconstructed parsed.toolName (which may
have an incorrect 'Tool' suffix) to the executor instead of using the
actual tool name from the database record.
This caused 'tool not found' errors when executing tools via MCP SSE
even though the tools were listed correctly.
- Updated deleteApiKey description from 'Delete an API key.' (18 chars)
to 'Delete an existing API key from the account.' (44 chars)
- Bumped version to 0.1.1
- Add parameters to tool API responses (agents + collections)
- Update ToolInfo interface to include parameters
- Render parameters grouped by required/optional
- Show parameter name, type, description, and default value
- Style with design system patterns (fieldsets, badges, etc.)
- Add GPT-4.1 and GPT-4.1-mini to OpenAI provider models
- Set gpt-4.1-mini as default model for new agents
- Make collections in chat tools panel expandable/clickable
- Fix type error in ChatToolsPanel
AI SDK requires every tool call to have a matching tool result.
When a tool call's result is missing (e.g., due to network error or
interrupted execution), the conversation would break and users couldn't
send new messages.
This fix:
- Builds a set of tool call IDs that have corresponding tool results
- Only includes tool calls in assistant messages that have matching results
- Falls back to text-only content if all tool calls are missing results