- Add @tpmjs/tools-resend with email API tools and blocks.yml entries
- Add MCP route for collection skill discovery
- Add InstallationSection component for collections
- Refactor collection pages to use shared components and simplify layouts
- Update skills questions API, rate limiting, and API key handling
- Add tpmjs-tool-creator skill for Claude
- Update video feature scenes and fix lint issues
- Update .gitignore with IDE and temp file exclusions
Full Postmark email API coverage: send emails, manage templates,
bounces, domains, webhooks, message streams, stats, suppressions,
inbound rules, sender signatures, and data removals. Dual auth
with server token (60 tools) and account token (22 tools).
- Fix react-hooks warnings in Tooltip, Popover, DropdownMenu
- Fix react-hooks/static-components in ToolRenderer
- Fix useEffect/useCallback issues in useCountUp/useControlled
- Fix jsx-a11y warnings in Modal, Drawer
- Fix empty interface and type errors
- Add biome-ignore for semantic element warnings
These fixes enable CI to pass so dark mode text fix can deploy.
All tool executions now return error objects instead of throwing exceptions.
This allows the AI model to see errors and respond appropriately instead of
causing the entire stream to fail silently.
All sprites tools require a SPRITES_TOKEN to authenticate with sprites.dev.
This adds the env field to the tpmjs metadata so Omega can warn users
about missing API keys.
- Changed @tpmjs/registry-execute and @tpmjs/registry-search to workspace:*
- This allows the web app to use local workspace versions
- Published npm packages still available for external users
- Updated all packages from ai@6.0.23 to ai@6.0.49
- Added pnpm override to ensure consistent version
- Created changeset for publishing affected packages
Implements a skills endpoint that evolves through agent conversations:
- GET /:username/collections/:slug/skills - Returns markdown skill summary
- POST /:username/collections/:slug/skills - Ask questions, get RAG+LLM responses
Features:
- OpenAI text-embedding-3-large (3072 dims) for semantic similarity
- GPT-4.1-mini for response generation with RAG context
- Lazy seeding of synthetic questions on first access
- Cache hits for >95% similar questions
- Real-time skill graph updates (emergent skill taxonomy)
- Session support for multi-turn conversations
- Activity feed and stats APIs for UI
Database models: SkillQuestion, Skill, SkillSession, SkillQuestionSkill, SkillQuestionTool
Add abstract tool rendering infrastructure to @tpmjs/ui:
- ToolRenderer component with registry-based renderer lookup
- DefaultJsonRenderer as fallback with collapsible JSON display
- RegistrySearchRenderer for registrySearchTool results
- RegistryExecuteRenderer for registryExecuteTool results
- registerBuiltInRenderers() for idempotent initialization
Update Omega chat page to use new ToolRenderer:
- Replace inline ToolCallCard with ToolRenderer component
- Add helper functions to convert between ToolCall and ToolPart
- Remove unused expandedToolCalls state (managed internally)
Also add video file extensions to .gitignore
- Add Prisma models for conversations, messages, participants, tool runs, and user settings
- Create API endpoints for conversation CRUD and SSE message streaming
- Build landing page with sample prompts at /omega
- Build chat interface with real-time streaming at /omega/[conversationId]
- Integrate @tpmjs/registry-search and @tpmjs/registry-execute packages
- Use OpenAI GPT-4.1 Mini as the default model
- Add `tpm collection info <collection>` command to list all tools in a collection
- Update `run` command examples to show workflow of listing tools first
- Fix unsandbox healthCheck tool to use /cluster endpoint instead of /health
- Update create-basic-tools template with correct tpmjs field format docs
- Change default category from 'ai-ml' to 'utilities' in generator
Published:
- @tpmjs/cli@0.1.5
- @tpmjs/create-basic-tools@1.0.7
- @tpmjs/tools-unsandbox@0.1.3
Implements batched generation to avoid Vercel 120s timeout for collections
with 60+ tools. Uses per-tool caching and recursive serverless invocations.
- Add ToolSkillsCache and SkillsGenerationJob models to schema
- Create tool-skills-generator.ts for per-tool markdown generation
- Create skills-summary-generator.ts for final pass summary/intro
- Update route handler with chunked generation logic
- Small collections (<20 tools) use original monolithic approach
- Large collections use 10-tool batches with progress tracking
Transform qualifying scenarios into marketing-ready use cases with:
- AI-generated titles, descriptions, ROI estimates, business value
- Persona/industry/category taxonomy for targeting
- Browseable feed with filtering and ranking
- SEO-optimized case study pages
- Daily cron job for generation and ranking
Database:
- Add Persona, Industry, Category lookup tables
- Add UseCase model with marketing content fields
- Add junction tables for personas/industries/categories
- Add SocialProof model for cached metrics
API:
- GET /api/use-cases - Global directory with filtering
- GET /api/use-cases/[id] - Individual use case details
- GET /api/public/users/[username]/collections/[slug]/use-cases
- POST /api/cron/use-cases - Nightly generation job
Frontend:
- /use-cases - Global feed with persona dropdown
- /use-cases/[slug] - SEO case study page
- /[username]/collections/[slug]/use-cases - Collection feed
- UseCasesFeed component - Sortable table component
- UseCaseCaseStudy component - Full case study layout
- Inline tailwind config to resolve Turbopack import issues with @tpmjs/config
- Add exports field to @tpmjs/config package.json for proper module resolution
- Add @tpmjs/config to transpilePackages in Next.js config
Note: page.tsx has a pre-existing Turbopack parsing error at line 604
that needs to be addressed separately (it existed before these changes).
- 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
- 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
- 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
- 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
Users can now access other users' PUBLIC agents and collections by providing
their own credentials in the request:
For agents:
- Provide `providerApiKey` for LLM access
- Provide `env` object with tool environment variables
- Owner's stored credentials are never shared
For collections (MCP):
- Provide `env` in params for tool environment variables
- Owner's stored credentials are never shared
Returns clear errors listing missing required env vars if not provided.
Files changed:
- packages/types/src/agent.ts: Add providerApiKey to SendMessageSchema
- apps/web/src/lib/agents/env-helpers.ts: New helper functions for env vars
- apps/web/src/lib/agents/build-tools.ts: Accept callerEnvVars parameter
- apps/web/src/app/api/agents/[id]/conversation/[conversationId]/route.ts:
Allow public agent access with caller credentials
- apps/web/src/lib/mcp/handlers.ts: Accept callerEnvVars, validate requirements
- apps/web/src/app/api/mcp/[username]/[slug]/[transport]/route.ts:
Allow public collection access, pass isOwner flag
- apps/web/src/app/docs/platform-guide/page.tsx: Update access model docs
The rollup-plugin-dts used by tsup runs out of memory with 54 entry points.
Split build into two steps:
1. tsup for ESM bundles
2. tsc --emitDeclarationOnly for .d.ts files