Commit graph

748 commits

Author SHA1 Message Date
Ajax Davis
de26322e18 fix: exclude existing collection tools from search results
- Pass excludeIds param to search API to filter out already-added tools
- Increase search limit to 50 (was 10) for large packages
- Increase max API limit to 100 (was 50)
- Add notIn filter to database query for efficient exclusion
2026-01-17 02:52:30 +10:00
Ajax Davis
cdadbc86d3 fix: improve collection tool search and dropdown UX
- Add package name match boost to search ranking (50 points for package name matches)
- Keep dropdown open when adding tools for faster bulk additions
- Close dropdown only when all results have been added
2026-01-17 02:40:15 +10:00
Ajax Davis
77204577c1 feat(web): redesign agent API reference with design system
- Replace minimal tabs with comprehensive API documentation
- Add fieldset-style containers with dashed borders per design system
- Document all 4 endpoints: send message, list, get, delete conversations
- Add authentication section with clear instructions
- Add parameter tables with types, defaults, and descriptions
- Document SSE event types for streaming responses
- Add conversation ID explanation section
- Use lowercase headings and monospace fonts per design guide
- Code examples in cURL, TypeScript, and Python
2026-01-17 01:39:53 +10:00
Ajax Davis
a7a0cbb988 fix(sprites-list): add 'warm' to valid sprite statuses
The Sprites API can return 'warm' status for sprites that are warming up.
This was causing sprites-list to throw 'Invalid sprite status: warm' error.
2026-01-16 18:00:58 +10:00
Ajax Davis
839e1b3bef feat: show MCP URLs and API access info on public collection/agent pages
- Always show McpUrlSection on public collection pages (not just owners)
- Add note for non-owners about providing their own credentials
- Add API usage example for non-owners on collections
- Add AgentApiSection component for public agent pages
- Show conversation API endpoint and usage example
- Make Chat button available to everyone on public agent pages
2026-01-16 16:57:50 +10:00
Ajax Davis
23d5159b28 refactor: replace raw HTML elements with design system components
- Replace <select>, <input>, <label>, <textarea> with UI components
- Update various dashboard and docs pages
- Simplify unsandbox package.json
- Add DESIGN_SYSTEM.md documentation
- Add Claude skills configuration
2026-01-16 16:52:44 +10:00
Ajax Davis
7d9321d9c6 feat: allow public access to agents and collections with caller credentials
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
2026-01-16 14:59:00 +10:00
Ajax Davis
fdb61ed010 docs(web): add viewing parent updates documentation
Document how users can view the parent agent/collection to see:
- Current tools and collections the parent has
- How to manually update fork with parent changes
- API endpoint for fetching parent data programmatically
2026-01-16 14:06:36 +10:00
Ajax Davis
82a734b3bd docs(web): add API access model documentation to Platform Guide
Add comprehensive documentation explaining:
- Fork-to-use access model for agents and collections
- API access behavior for agents (403 errors, owner pays for LLM)
- MCP access behavior for collections (403 errors, caller pays)
- Common access error codes (401, 403, 400, 429)
- Environment variable and API key requirements
2026-01-16 13:41:31 +10:00
Ajax Davis
fd87edd9e9 docs(web): add comprehensive Platform Guide documentation
Add new /docs/platform-guide page covering all platform features:
- User accounts: authentication, profiles, usernames
- Collections: creation, tools, MCP integration, env vars
- Agents: configuration, LLM providers, chat interface
- Forking: how to fork agents and collections
- API keys: scopes, rate limits, usage tracking
- Reference: platform limits and URL patterns
2026-01-16 13:22:31 +10:00
Ajax Davis
baea035adc fix: correct component API usage in SectionComponents
- Fix Drawer, Modal, Popover, Tooltip, DropdownMenu imports and usage
- Use controlled component pattern with open/onClose props
- Fix Breadcrumbs to use BreadcrumbItem children instead of items prop
- Fix Slider onChange to handle ChangeEvent properly
- Fix Pagination prop name from currentPage to page
- Fix EmptyState icon from invalid "inbox" to valid "box"
- Fix StatCard props to use value (number), label, and subtext
2026-01-16 12:06:27 +10:00
Ajax Davis
0489f5cfdb feat(web): implement SWR for instant data fetching
- Add SWR package and global SWRProvider
- Create reusable hooks: useTools, useAgents, useCollections,
  useStats, useLikeStatus, useBundleSize, useActivity
- Update tool-search page to use useTools hook
- Update agents page to use useAgents hook
- Update BundleSize component to use useBundleSize hook
- Update LikeButton with optimistic updates via useLikeStatus
- Add simple about page with creator info
2026-01-16 11:42:55 +10:00
Ajax Davis
7483e697fc feat(web): enhance style guide with left nav and all components
- Add sticky left-hand navigation with scroll-spy for active section
- Add 20+ missing UI components to style guide showcase
- Include Accordion, Breadcrumbs, Drawer, Modal, Pagination, etc.
- Add state components: EmptyState, ErrorState, LoadingState
- Remove Playground link from header and mobile menu
- Comment out Architecture Diagram on homepage temporarily
2026-01-16 11:04:08 +10:00
Ajax Davis
76955bde18 refactor(web): replace inline SVGs with Icon components
- changelog: Replace puzzle and github SVGs with Icon, use Button for CTA
- sdk: Replace 4 github SVGs with Icon component
- Use design system tokens for version badge colors
2026-01-16 09:43:42 +10:00
Ajax Davis
0770d88815 refactor(web): replace raw HTML with design system components
- Replace raw <label> with Label component in auth pages, profile settings, tool-ideas
- Replace raw <button> with Button in CopyButton, CopyDropdown, ExecutorConfigPanel, PackageManagerSelector, ToolPlayground
- Replace raw <textarea> with Textarea in ToolPlayground
- Replace inline SVG with Icon component in error.tsx
2026-01-16 08:51:31 +10:00
Ajax Davis
144f07ea75 fix(ui): use tsc for declarations to avoid memory issues in CI
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
2026-01-16 08:21:41 +10:00
Ajax Davis
f0d271720c feat(ui): add state components and apply design system compliance
Add new reusable components:
- EmptyState: for empty list/search states with icon, title, description
- ErrorState: for error displays with optional retry button
- LoadingState: for loading states with Spinner and message
- PageHeader: for consistent page headers with title, description, actions

Apply components across pages:
- agents, collections, tool-search pages use new state components
- stats page uses LoadingState and ErrorState
- faq page uses Icon for chevrons
- health page uses Table components
- dashboard agent forms use Input, Select, Textarea, Label
- Replace custom div spinners with Spinner component
2026-01-16 08:16:05 +10:00
Ajax Davis
499a38ce1b refactor: apply style guide compliance across auth, dashboard, and tool pages
- Replace hardcoded color classes with design system tokens (error, success, warning, info)
- Replace raw HTML inputs with Input component from @tpmjs/ui
- Replace raw HTML buttons with Button component
- Add eye/eyeOff icons for password visibility toggle
- Add mail icon for verify-email page
- Fix text colors to use semantic tokens (text-error, text-success, text-warning)
- Fix background colors to use opacity tokens (bg-error/10, bg-success/10)
- All pages now properly support dark mode through CSS custom properties
2026-01-16 06:49:47 +10:00
Ajax Davis
066e599293 feat(ui): add comprehensive design system with 14 new components
New UI Components:
- Modal/Dialog with sizes, focus trap, backdrop
- Toast/Notification with variants, stacking, actions
- Drawer/Sheet with directions and widths
- Popover with triggers and positioning
- Tooltip with delays and placements
- DropdownMenu with items, dividers, keyboard nav
- Breadcrumbs with separators and collapsing
- Pagination with full/simple/minimal variants
- Accordion with single/multi expand modes
- Skeleton with text/avatar/card/table variants
- InstallSnippet with package manager toggle
- QualityScore with tier badges
- ToolCard for registry display

Design System Enhancements:
- Complete token specification (shadows, radius, z-index, opacity)
- Full dark mode palette in globals.css
- Updated component variants for dark mode support

Style Guide Expansion:
- Split into 21 modular section files
- Pattern library: navigation, forms, feedback, tables, search
- Governance: a11y checklists, content guidelines, icon system
- Interactive examples throughout
2026-01-16 05:51:12 +10:00
Ajax Davis
46b212e65a fix(mcp): shorten tool names to stay under 64 character limit
Claude Desktop enforces a 64 character limit on MCP tool names.
- Remove 'tpmjs-tools-' and 'tpmjs-' prefixes from package names
- Remove 'Tool' suffix from tool names
- Add fallback truncation if still too long
- Update parser to try all possible package/tool name combinations
2026-01-16 05:12:10 +10:00
Ajax Davis
3324034e6f fix(integration-tests): handle missing usage:read scope in usage test 2026-01-16 04:12:47 +10:00
Ajax Davis
68480758f7 fix(integration-tests): don't compare username to stale env var
The test was comparing the returned username to ctx.auth.username from
env vars, which may be stale. Now just verifies username is defined.
2026-01-16 03:59:38 +10:00
Ajax Davis
f0b247f449 fix(integration-tests): use actual username from API in MCP tests
The test was using ctx.auth.username from env vars, which may not match
the actual username of the API key owner. Now fetches the real username
via /api/user/profile endpoint before running MCP tests.
2026-01-16 03:49:04 +10:00
Ajax Davis
55bd27a504 fix: escape quotes in UseCasesSection 2026-01-16 02:59:21 +10:00
Ajax Davis
3b5bc83c52 fix(create-basic-tools): fix clack select types 2026-01-16 02:46:07 +10:00
Ajax Davis
3456b26c9d feat(collections): add AI-generated use cases
Add "Example Use Cases" section to collection pages that generates
practical workflow examples showing how tools can work together.

- Add useCases and useCasesGeneratedAt fields to Collection model
- Create use-cases-generator.ts using Vercel AI SDK with gpt-4.1-mini
- Add POST /api/collections/[id]/use-cases/generate endpoint
- Add AI_GENERATION_RATE_LIMIT (5 req/hour per IP)
- Create UseCasesSection component with generate/regenerate UI
- Generate 6 use cases: 3 simple (1-2 tools) + 3 complex (3-5 tools)
- Include useCases in public collection API response
2026-01-16 02:33:57 +10:00
Ajax Davis
c21ed5b41e feat(exe-dev): add exe.dev VM management tools v0.2.3
Add 15 MCP tools for managing exe.dev virtual machines:
- list, create, deleteVm, restart - VM lifecycle management
- exec - execute commands on VMs via SSH
- shareShow, shareSetPublic, shareSetPrivate - visibility control
- sharePort - configure HTTP proxy port
- shareAddUser, shareRemoveUser - user access management
- shareAddLink, shareRemoveLink - shareable link management
- whoami - user account info
- shelleyInstall - install Shelley agent

Key fixes in v0.2.3:
- Properly quote SSH args to prevent local shell interpretation
- Add -- separator for commands to prevent flag parsing issues
- Support base64-encoded SSH key via EXE_DEV_SSH_KEY env var
2026-01-15 09:49:08 +10:00
Ajax Davis
cae05f1504 fix(executor): use ephemeral cache dir instead of volume
Switch from /data volume to /tmp/deno-cache to avoid persistent permission issues.
2026-01-15 09:30:02 +10:00
Ajax Davis
44606e2b78 fix(executor): fix volume permissions on startup
Adds startup script that fixes /data volume ownership before starting Deno.
This resolves permission errors after cache clear operations.
2026-01-15 09:25:00 +10:00
Ajax Davis
045ad36d14 feat(executor): install openssh-client for SSH-based tools
Tools like exe-dev require SSH to communicate with external services.
Installs openssh-client in the Deno container.
2026-01-15 08:47:57 +10:00
Ajax Davis
c5eca8fdeb feat(executor): add --allow-run flag to Deno executor
Enables tools like exe-dev that require shell execution (SSH commands) to work in the sandbox environment.
2026-01-15 08:42:46 +10:00
Ajax Davis
ad46943270 feat(unsandbox): add 3 more tools - runAsync, listJobs, deleteJob
Complete unsandbox API coverage with 7 total tools:
- executeCodeAsync: async code execution
- execute: sync code execution
- run: sync with shebang auto-detect
- runAsync: async with shebang auto-detect
- getJob: get job status/results
- listJobs: list all active jobs
- deleteJob: cancel a job
2026-01-15 06:43:40 +10:00
Ajax Davis
4461bf70c8 feat(unsandbox): add code execution tools for unsandbox API
- Add 4 new tools: executeCodeAsync, getJob, execute, run
- Support 42+ programming languages
- Features: network isolation modes, input files, compiled artifacts, WASM
- Add entity definitions for code execution results
- All tools pass schema and shape validation
2026-01-15 06:38:45 +10:00
Ajax Davis
54d39c38fa docs(sprites-exec): add port 8080 convention note to description
Updated tool description to mention that web servers must listen on
port 8080 as per Sprites convention for public URLs.
2026-01-15 06:17:37 +10:00
Ajax Davis
4d265cd24d fix: improve text readability for user messages in chat
User messages now use plain text rendering instead of prose classes
to ensure proper contrast on the primary (blue) background. Assistant
messages continue using Streamdown with prose styling for markdown.
2026-01-15 05:39:31 +10:00
Ajax Davis
1c903cd26e feat(chat): use Streamdown for markdown rendering in chat messages
- Add streamdown package for AI-optimized markdown streaming
- Update dashboard and public agent chat pages to render messages with Streamdown
- Enables proper markdown formatting (code blocks, lists, etc.) in chat responses
2026-01-15 05:28:38 +10:00
Ajax Davis
27e7d45646 feat(sprites): add sprites-url-get and sprites-url-set tools
New tools for managing sprite URL access settings:
- sprites-url-get: Get the public URL and auth settings for a sprite
- sprites-url-set: Set URL auth to 'public' or 'sprite' (private)

Both published as @tpmjs/tools-sprites-url-get and @tpmjs/tools-sprites-url-set v0.1.0
2026-01-15 04:56:52 +10:00
Ajax Davis
e4c09a475f fix: correct API endpoints for sprites tools v0.1.3/v0.1.4
Fixed URL endpoints based on Sprites API documentation:
- sprites-sessions: /exec/sessions -> /exec (v0.1.3)
- sprites-policy-get: /policies -> /policy/network (v0.1.3)
- sprites-policy-set: /policies -> /policy/network with rules[] body (v0.1.3)
- sprites-checkpoint-create: /checkpoints -> /checkpoint singular (v0.1.4)

Also fixed checkpoint-create to properly parse NDJSON streaming
response format with type/data/time fields.
2026-01-15 04:30:52 +10:00
Ajax Davis
e6857e245e fix: wrap shell operators in sh -c for sprites-exec v0.1.5
Commands containing shell operators (&&, ||, |, ;, >, etc.) were being
parsed incorrectly, causing errors like "The update command takes no
arguments". Now detects shell operators and wraps the entire command
in `sh -c "..."` for proper execution.
2026-01-15 03:57:40 +10:00
Ajax Davis
a548edc0db chore: bump sprites-list to 0.1.3 (add cold status support) 2026-01-15 01:06:38 +10:00
Ajax Davis
c1655dd318 fix: pass explicit version to executor to avoid Deno cache issues
The executor was using version: 'latest' which caused Deno to cache
old versions of packages. Now we pass the explicit version from the
database to ensure the correct version is always loaded.

Also fixed sprites-list to recognize 'cold' as a valid sprite status.
2026-01-15 00:59:05 +10:00
Ajax Davis
2c3cea8730 fix: include envVars in collection GET and PATCH responses 2026-01-15 00:11:29 +10:00
Ajax Davis
66670bc9fb fix: add error handling for collection env vars save 2026-01-15 00:01:05 +10:00
Ajax Davis
69ae0dda2f fix: add error handling for agent env vars save and sprites-exec JSON errors
- Agent env vars: auto-save now awaits response and shows alert on failure
- sprites-exec v0.1.4: detect JSON error responses (e.g., auth failures) before binary parsing
2026-01-14 23:48:43 +10:00
Ajax Davis
b5fa46f6be fix: sprites-exec tool to use correct API format
- Use query parameters instead of JSON body for cmd
- Parse command string into repeatable cmd params
- Handle binary response format (stdout=0x01, stderr=0x02, exit=0x03)
- Add shell command documentation to README
2026-01-14 17:13:58 +10:00
Ajax Davis
ce3596ea22 feat: add READMEs to sprites packages and fix blocks.yml schema
- Add README documentation for all 11 sprites packages
- Fix blocks.yml to be compatible with blocks CLI validator
- Add project wrapper and type fields to blocks.yml
- Bump sprites packages to v0.1.2
2026-01-14 16:22:39 +10:00
Ajax Davis
0c78c1bf1f fix: auto-save env vars on agent page 2026-01-14 15:19:51 +10:00
Ajax Davis
2cd2b10cd0 refactor: replace exportName with name throughout codebase
- Update TpmjsToolDefinitionSchema to only use 'name' field
- Add 'sandbox' as valid category for sprites tools
- Update all package.json files to use 'name' instead of 'exportName'
- Update documentation and source files accordingly
- Add 11 new sprites tools for sandbox/code-execution
2026-01-14 14:18:36 +10:00
Ajax Davis
b1dd3371cd feat: add social proof features and comprehensive documentation
Priority 2 - Social Proof:
- Add ToolRating and ToolReview models to Prisma schema
- Add rating aggregates (averageRating, ratingCount, reviewCount) to Tool model
- Create /api/tools/[id]/rate endpoint for tool ratings
- Create /api/tools/[id]/reviews endpoint for tool reviews
- Create /api/tools/trending endpoint for trending tools
- Add Rating component with interactive star rating
- Add ReviewCard component with user avatars and review display
- Add star and starFilled icons to UI package
- Update ToolDetailClient to show ratings

Priority 3 - Documentation:
- Create /docs/api/tools API documentation page
- Create /docs/api/agents API documentation page
- Create /docs/api/collections API documentation page
- Create /docs/api/authentication documentation page
- Create /docs/quickstart getting started tutorial
- Create /docs/sdk SDK reference documentation
2026-01-14 12:11:47 +10:00
Ajax Davis
d22d0e6f59 style: format agent page and api keys page 2026-01-14 09:54:50 +10:00