Find a file
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
.changeset chore: version packages 2025-12-31 19:52:33 +10:00
.claude refactor: replace raw HTML elements with design system components 2026-01-16 16:52:44 +10:00
.github/workflows fix: resolve GitHub Actions workflow failures 2026-01-14 05:16:26 +10:00
.vscode feat: add complete monorepo structure and all packages 2025-11-25 21:59:40 +10:00
apps feat(web): redesign agent API reference with design system 2026-01-17 01:39:53 +10:00
docs refactor: replace exportName with name throughout codebase 2026-01-14 14:18:36 +10:00
packages fix(sprites-list): add 'warm' to valid sprite statuses 2026-01-16 18:00:58 +10:00
scripts refactor: replace exportName with name throughout codebase 2026-01-14 14:18:36 +10:00
services/sandbox-executor feat: add Railway-based sandbox executor microservice 2025-11-30 01:07:24 +10:00
supabase feat(sync): implement Phase 3 Sync Workers with Vercel Cron integration 2025-11-28 02:57:54 +10:00
templates/vercel-executor fix: correct test package/tool name in executor verification 2026-01-11 01:36:26 +10:00
.dependency-cruiser.js fix(ci): resolve lint and architecture errors blocking Vercel deploy 2025-12-11 09:46:27 +10:00
.gitignore fix: improve auth error logging and display 2026-01-01 22:46:47 +10:00
.npmrc feat: add complete monorepo structure and all packages 2025-11-25 21:59:40 +10:00
.nvmrc feat: add quality gate tools and Node 22 setup 2025-11-26 17:33:45 +10:00
.vercelignore chore: add Vercel config for tutorial deployment 2025-12-29 00:34:00 +10:00
alien.sh fix: use gpt-image-1-mini model for OG image generation 2025-12-28 19:13:23 +10:00
ARCHITECTURE.md docs: update all URL references to new username/slug format 2026-01-13 23:14:36 +10:00
beast.sh fix: use gpt-image-1-mini model for OG image generation 2025-12-28 19:13:23 +10:00
biome.json chore: update dependencies with compatibility fixes 2026-01-09 22:49:41 +10:00
CLAUDE.md refactor: replace raw HTML elements with design system components 2026-01-16 16:52:44 +10:00
convert-label-tests.py refactor(ui): convert all remaining components from createElement to JSX syntax 2025-11-26 03:14:34 +10:00
DEPLOYMENT.md chore: prepare for Hacker News launch 2025-12-28 11:46:59 +10:00
DESIGN_SYSTEM.md refactor: replace raw HTML elements with design system components 2026-01-16 16:52:44 +10:00
hotel.sh fix: use gpt-image-1-mini model for OG image generation 2025-12-28 19:13:23 +10:00
HOW_TO_PUBLISH_A_TOOL.md feat: add API key authentication system and update documentation 2026-01-13 04:45:52 +10:00
knight.sh fix: use gpt-image-1-mini model for OG image generation 2025-12-28 19:13:23 +10:00
knip.json fix(lint): configure Biome to properly ignore build directories 2025-11-26 22:49:45 +10:00
LAUNCH_REVIEW.md refactor: replace exportName with name throughout codebase 2026-01-14 14:18:36 +10:00
lefthook.yml perf: only type-check changed packages in pre-commit hook 2025-12-04 17:16:42 +10:00
LICENSE chore: prepare for Hacker News launch 2025-12-28 11:46:59 +10:00
manual-tools.ts feat: redesign public pages with virtualized tables 2026-01-07 21:55:13 +10:00
MANUAL_TOOLS.md refactor: replace exportName with name throughout codebase 2026-01-14 14:18:36 +10:00
package.json fix: add playground vercel.json and fix build scripts 2026-01-14 04:41:47 +10:00
pnpm-lock.yaml feat(web): implement SWR for instant data fetching 2026-01-16 11:42:55 +10:00
pnpm-workspace.yaml feat: add 5 research tools and blocks framework setup 2025-12-31 19:47:02 +10:00
QUALITY-GATES.md feat: add quality gate tools and Node 22 setup 2025-11-26 17:33:45 +10:00
README.md feat: add npm-like features to tool detail page and update keyword to tpmjs 2025-12-29 21:30:42 +10:00
reptile1_halfblock.sh fix: use gpt-image-1-mini model for OG image generation 2025-12-28 19:13:23 +10:00
reptile2_quadrant.sh fix: use gpt-image-1-mini model for OG image generation 2025-12-28 19:13:23 +10:00
reptile3_braille.sh fix: use gpt-image-1-mini model for OG image generation 2025-12-28 19:13:23 +10:00
reset.d.ts fix(lint): configure Biome to properly ignore build directories 2025-11-26 22:49:45 +10:00
robot.sh fix: use gpt-image-1-mini model for OG image generation 2025-12-28 19:13:23 +10:00
robot2.sh fix: use gpt-image-1-mini model for OG image generation 2025-12-28 19:13:23 +10:00
robot3.sh fix: use gpt-image-1-mini model for OG image generation 2025-12-28 19:13:23 +10:00
sprite.sh fix: use gpt-image-1-mini model for OG image generation 2025-12-28 19:13:23 +10:00
sprites_skill.md feat(chat): use Streamdown for markdown rendering in chat messages 2026-01-15 05:28:38 +10:00
sync-hello.ts refactor: rename exportName to name across entire codebase 2025-12-17 17:19:21 +10:00
sync-manual-tools.ts fix: add schema extraction to manual tools sync 2025-12-17 20:52:19 +10:00
sync-vercel-registry.ts refactor: rename exportName to name in ManualTool interface 2025-12-17 16:43:15 +10:00
test-db.mjs fix(ci): skip lefthook install when .git directory missing 2025-11-29 13:51:05 +10:00
test-schema.ts refactor: rename exportName to name across entire codebase 2025-12-17 17:19:21 +10:00
TOP_5_PRIORITIES.md refactor: replace exportName with name throughout codebase 2026-01-14 14:18:36 +10:00
TPMJS_FEATURES.md feat: improve homepage marketing and add integrations section 2026-01-14 06:43:15 +10:00
TPMJS_TALK.md feat: add npm-like features to tool detail page and update keyword to tpmjs 2025-12-29 21:30:42 +10:00
tsconfig.json feat: add complete monorepo structure and all packages 2025-11-25 21:59:40 +10:00
turbo.json fix(ci): ensure type-check runs after build to generate Prisma client 2025-11-28 04:09:07 +10:00
vercel.json feat: add environment variables support for agents and collections 2026-01-12 01:35:29 +10:00

TPMJS

CI

TPMJS is a registry for discovering AI tools published to npm.

Browse, search, and find tools at tpmjs.com. Publish your tool by adding the tpmjs keyword to your package.json—it appears in the registry within 15 minutes.

Why TPMJS?

  • Discover tools - Search and browse AI tools by category, quality score, and popularity
  • Publish easily - Add one keyword to package.json, publish to npm, done
  • Quality metrics - Tools are scored based on documentation, downloads, and metadata completeness
  • Agent integration - Optional SDK for agents to search and execute tools at runtime

Quick Start

Publishing a Tool

npx @tpmjs/create-basic-tools

Or add manually to your package.json:

{
  "keywords": ["tpmjs"],
  "tpmjs": {
    "category": "text-analysis"
  }
}

Publish to npm and your tool appears on tpmjs.com within 15 minutes.

See HOW_TO_PUBLISH_A_TOOL.md for the full guide.

For AI Agents (Optional)

Agents can search and execute tools from the registry:

npm install @tpmjs/registry-search @tpmjs/registry-execute
import { registrySearchTool } from '@tpmjs/registry-search';
import { registryExecuteTool } from '@tpmjs/registry-execute';

// Add to your agent's tools
const tools = [registrySearchTool, registryExecuteTool];

Monorepo Structure

apps/
  web/          - Next.js 16 App Router application
packages/
  config/       - Shared configurations (Biome, ESLint, Tailwind, TypeScript)
  ui/           - React component library (.ts-only, no barrels)
  utils/        - Utility functions
  types/        - Shared TypeScript types
  env/          - Zod environment schema loader
  test/         - Vitest shared configuration
  mocks/        - MSW mock server
  storybook/    - Storybook documentation

Getting Started

Prerequisites

  • Node.js >= 22 (LTS)
  • pnpm >= 8
  • nvm (recommended for Node version management)

Installation

pnpm install

Development

# Run all apps in development mode
pnpm dev

# Run specific app
pnpm --filter @tpmjs/web dev
pnpm --filter @tpmjs/storybook dev

Building

# Build all packages and apps
pnpm build

# Build specific package
pnpm --filter @tpmjs/ui build

Testing

# Run all tests
pnpm test

# Run tests in watch mode with UI
pnpm test:ui

Linting & Formatting

# Lint all packages
pnpm lint

# Format all files
pnpm format

# Check formatting
pnpm format:check

Quality Gates

# Check architecture/dependency rules
pnpm check-architecture

# Find unused code and dependencies
pnpm find-deadcode

# Check type coverage
pnpm type-coverage

See QUALITY-GATES.md for details.

Component Usage

Components are imported directly without barrel exports:

import { Button } from '@tpmjs/ui/Button/Button';
import { Card, CardHeader } from '@tpmjs/ui/Card/Card';

Important: All UI components use .ts extension (not .tsx) and use createElement instead of JSX.

Publishing Workflow

1. Create Changesets

After making changes to publishable packages:

pnpm changeset

Follow the prompts to describe your changes and select which packages are affected.

2. Version Packages

When ready to release:

pnpm changeset:version

This updates package versions and generates CHANGELOGs.

3. Publish to npm

pnpm changeset:publish

This builds and publishes all packages with changesets to npm.

4. Push to GitHub

git push --follow-tags

Published Packages

  • @tpmjs/ui - React component library
  • @tpmjs/utils - Utility functions
  • @tpmjs/types - TypeScript types
  • @tpmjs/env - Environment schema loader

Deployment

The project is configured to only deploy to Vercel when all CI checks pass. This ensures production always has high-quality, tested code.

CI Checks:

  • Linting & formatting
  • Type checking
  • Tests
  • Production build
  • Architecture validation
  • Dead code detection

See DEPLOYMENT.md for full configuration details.

Module Boundaries

ESLint enforces module boundaries:

  • Apps can import from published packages only
  • Packages cannot import from apps
  • No barrel exports (index.ts) allowed
  • Direct imports required: @tpmjs/ui/Button/Button

Architecture Decisions

Why .ts-only Components?

Using .ts instead of .tsx for React components:

  • Enforces explicit createElement calls
  • Makes React's runtime nature more visible
  • Prevents JSX spreading anti-patterns
  • Better for code generation and tooling

Why No Barrel Exports?

  • Clearer dependency graphs
  • Better tree-shaking
  • Explicit imports show what's actually used
  • Prevents circular dependencies

Why Biome + ESLint?

  • Biome: Fast formatting and basic linting
  • ESLint: Semantic rules (module boundaries, TypeScript strictness)
  • Each tool focuses on what it does best

Scripts Reference

  • dev - Start development servers
  • build - Build all packages
  • test - Run tests
  • test:ui - Run tests with UI
  • lint - Lint code
  • format - Format code with Biome
  • format:check - Check formatting
  • type-check - TypeScript type checking
  • type-coverage - Check type coverage (no implicit any)
  • check-architecture - Validate dependency rules
  • find-deadcode - Find unused code/dependencies
  • clean - Remove build artifacts
  • changeset - Create a changeset
  • changeset:version - Version packages
  • changeset:publish - Publish to npm

License

MIT