Commit graph

748 commits

Author SHA1 Message Date
Ajax Davis
ae0d5e37cf docs: rewrite CLAUDE.md — concise, focused on production debugging
Remove verbose case studies, sync system docs, and redundant examples.
Add Vercel/Railway/GitHub CLI debugging instructions and direct DB access guide.
2026-02-10 02:47:13 +10:00
Ajax Davis
4fa8344b34 feat: replace hardcoded stats with real DB data and add view tracking
- Add PageView model for daily-bucketed view tracking
- Add viewCount fields to Tool, Collection, Agent models
- Add social proof fields to StatsSnapshot
- Add POST /api/track/view endpoint with IP-based dedup
- Add GET /api/activity/public endpoint for real activity stream
- Add /api/sync/view-rollup daily cron for aggregating views
- Expand stats-snapshot cron with new social proof queries
- Replace hardcoded homepage stats with real DB-driven props
- Add downloads to hero metrics strip
- Add PublicActivityStream component fetching real UserActivity
- Add useTrackView hook for tool, collection, agent detail pages
- Add forkCount column to collections and agents listings
- Add views/reviews to tool detail statistics sidebar
- Remove deprecated hardcoded statistics and categories from homePageData
2026-02-10 02:27:14 +10:00
Thomas Davis
66fb7ef226 fix(omega): pass tool inputSchema to LLM for proper parameter generation
The search API wasn't returning inputSchema, so dynamic tools were created
with empty schemas. The LLM saw tools with no parameters and called them
with {}. Now the search API returns inputSchema, and if it's null in the
database, we fetch it from the executor's loadAndDescribe endpoint.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 01:38:12 +10:00
Ajax Davis
5ac3beab37 fix(omega-mac): fix enter-to-send, duplicate messages, search parsing + new features
- Replace TextEditor+onKeyPress with NSTextView that properly intercepts
  Return (send) vs Shift+Return (newline)
- Only show streaming content and live tool calls while isStreaming is true,
  preventing duplicate rendering after messages are persisted
- Fix registry search JSON parsing: API returns env as [String] not objects
- Add importUrl from search API response instead of constructing it
- Add message count badge to sidebar conversation rows
- Add "Copy JSON" toolbar button (Cmd+Shift+C) to export full conversation
  with all messages and tool call results as JSON
2026-02-09 22:48:13 +10:00
Ajax Davis
894f9842d1 fix(omega-mac): support macOS 14 by replacing macOS 15-only APIs
- Add `indirect` to recursive JSONSchemaAdditional enum
- Replace `.accent` ShapeStyle (macOS 15+) with `Color.accentColor`
- Add .gitignore for .build directory
2026-02-09 22:32:37 +10:00
Ajax Davis
dda28d642c ci: add GitHub Actions workflow to build Omega Mac app
Adds a manually-triggered workflow that builds the SwiftUI app on a
macOS 15 runner with Xcode 16, packages it as a .app bundle, and
uploads it as a downloadable artifact. Also lowers the deployment
target to macOS 14 so it runs on Sonoma.
2026-02-09 22:27:21 +10:00
Thomas Davis
e42bbdff34 feat(supabase): add Supabase REST API tool package with 10 tools
Query, insert, update, delete, upsert rows, call RPC functions,
count rows, list tables, and search with ilike pattern matching
via the PostgREST API.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 22:09:27 +10:00
Thomas Davis
1cd44b4e97 feat: add Omega Mac native macOS SwiftUI chat app
Native macOS counterpart to the web Omega agent, connecting directly
to the OpenAI API and TPMJS tool registry (1M+ AI-ready tools).

- SwiftUI app targeting macOS 15+ with dark theme
- Full agentic loop: auto-discover tools via BM25, stream OpenAI
  responses, execute tools via remote sandbox, loop up to 10x
- SwiftData persistence for conversations, messages, tool runs
- Keychain storage for API keys and environment variables
- SSE streaming via URLSession.bytes with custom parser
- Actor-based services (OpenAIService, TPMJSRegistryService)
- NavigationSplitView layout with sidebar + chat detail
- MarkdownUI for rendering assistant responses
- Settings: API key, model picker, env vars, custom system prompt
- Keyboard shortcuts: Cmd+N new chat, Cmd+, settings, Enter send

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 21:29:39 +10:00
Thomas Davis
c8e8a7d9b4 fix: update pnpm lockfile for new slack/discord packages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 20:44:35 +10:00
Thomas Davis
cc69d98b6f feat: add Slack + Discord tool packages and fix 50 skipped sync packages
Add @tpmjs/tools-slack (10 tools) and @tpmjs/tools-discord (15 tools)
with full API coverage, typed outputs, and domain-validated blocks.

Add 7 missing business categories (finance, legal, hr, marketing, cx,
edu, sales) to TPMJS_CATEGORIES so 50 previously skipped packages
can sync to tpmjs.com.

Fix lefthook secrets hook to skip gracefully when git-secrets is not
installed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 20:41:51 +10:00
Thomas Davis
7327992a9d fix(tech): auto zoom in after fitToView for readable labels
Programmatically click the zoom-in button 4 times after Isoflow renders
to increase the default zoom from ~56% to ~90-100%, making node labels
clearly readable without manual interaction.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 19:54:29 +10:00
Thomas Davis
6eb0ce7e23 fix(tech): compact Isoflow grid layout for readable labels at 92% zoom
Reduced tile grid from 14x13 to 7x7 with 2-tile spacing. This increases
the default fitToView zoom from 38% to ~92%, making all node labels
clearly readable. Removed GitHub and bridge nodes to reduce clutter,
fixed @tpmjs/npm-client naming.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 19:43:51 +10:00
Thomas Davis
022ecda6bf fix: render Isoflow in iframe to avoid React 19 incompatibility
Isoflow bundles React 18 internally and crashes with React 19's changed
internals (ReactCurrentOwner). Solved by loading Isoflow in a standalone
HTML page via esm.sh (React 18) and embedding it as an iframe. Also
simplified the diagram to 16 key nodes for better readability.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 19:17:21 +10:00
Thomas Davis
7dca00b5da feat: add /tech page with Isoflow isometric architecture diagram
Interactive isometric visualization of the TPMJS ecosystem showing external
services, applications, published packages, internal packages, and official
tools with their interconnections.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 19:00:45 +10:00
Thomas Davis
2a2f0f487d fix(railway): remove startCommand and invalid maxRetries from railway.toml
startCommand overrides Dockerfile CMD causing build failure. Removed
restartPolicyMaxRetries=-1 which is not a valid Railway value.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 04:55:04 +10:00
Thomas Davis
198f9f7d1e fix: separate sync discovery from enrichment and harden Railway executor
Sync system was timing out because discovery endpoints (keyword, changes)
also ran schema extraction (~10-15s per tool). Now discovery is fast
(npm metadata + DB writes only) and a new /api/sync/enrich endpoint
handles schema extraction in time-budgeted chunks.

Railway executor was crashing without restarting due to unhandled promise
rejections, no restart policy, and no health checks. Added crash
protection, graceful shutdown, cache size limits, railway.toml with
ALWAYS restart policy, and upgraded Deno from 1.39 to 2.1.9.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 04:49:54 +10:00
Ajax Davis
9ec8bf2454 fix(mcp): handle invalid type values and conflicting type+oneOf schemas
Extend schema sanitizer to handle two more invalid patterns found in
production: TypeScript-style type values like "string[]" and
"'markdown' | 'mdx'" (not valid JSON Schema), and properties with
conflicting type:"object" alongside oneOf containing string/array
types (e.g. resend sendEmail cc/to/bcc fields).
2026-02-07 21:24:30 +10:00
Ajax Davis
293fe08910 fix(mcp): sanitize tool inputSchema to prevent client crashes
Tool schemas from the database can contain JSON Schema keywords that
Claude's API rejects (minimum, maxLength, top-level oneOf, old $schema
drafts, etc.), causing a 400 error that crashes the entire client
session. Add sanitizeInputSchema() that recursively strips unsupported
keywords before returning tools via MCP tools/list.
2026-02-07 21:12:39 +10:00
Ajax Davis
15fc413f9c fix(mcp): sanitize tool inputSchema to prevent client crashes
Tool schemas from the database can contain JSON Schema keywords that
Claude's API rejects (minimum, maxLength, top-level oneOf, old $schema
drafts, etc.), causing a 400 error that crashes the entire client
session. Add sanitizeInputSchema() that recursively strips unsupported
keywords before returning tools via MCP tools/list.
2026-02-07 21:11:12 +10:00
Ajax Davis
a9e01fe772 fix: correct claude mcp add arg order in all docs and UI
The -H/--header flag is variadic and swallows subsequent positional
args when placed before them. Move name and URL before flags so the
CLI parses correctly. Also update docs from npx mcp-remote to native
HTTP transport.
2026-02-07 20:53:01 +10:00
Ajax Davis
36598fec61 feat: update MCP config to native HTTP transport and add moltbook tool
Switch collection MCP configs from npx mcp-remote to native HTTP
transport, fix Claude Code CLI arg order (options before name/url),
rename API key placeholder to YOUR_TPMJS_API_KEY, and add moltbook
social network tool to official blocks.
2026-02-07 19:40:54 +10:00
Ajax Davis
99017322ba fix(web): restore all collections features deleted in a52d32c
Restores Collections nav link in AppHeader, full collections/[id] detail
page with MCP URLs, dashboard collections Connect tab with McpUrlDisplay,
and CollectionDetailClient with ForkButton, CodeBlock, UseCases, and
Scenarios sections.
2026-02-07 03:41:06 +10:00
Ajax Davis
bd232a3407 fix(web): restore public collections listing page
The /collections page was incorrectly replaced with a redirect to /
in a previous commit. This restores the full public collections
listing with search, sorting, virtualized table, likes, and copy.
2026-02-07 02:36:47 +10:00
Ajax Davis
727a44af63 chore: gitignore symlinked skill dirs and update oclif manifest 2026-02-07 01:01:06 +10:00
Ajax Davis
4bcdab09f2 chore(cli): update oclif manifest after build 2026-02-07 00:58:18 +10:00
Ajax Davis
a52d32c367 feat: add resend tools, MCP collection endpoint, and UI refinements
- 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
2026-02-07 00:49:40 +10:00
Ajax Davis
f3a46045ba feat(web): add llms.txt for LLM-friendly site documentation
Follows the llmstxt.org specification to provide structured context
about TPMJS for AI assistants and language models.
2026-02-07 00:09:06 +10:00
Ajax Davis
54bfbff71c fix(tools-postmark): fix short description for registry validation
Lengthen deleteWebhook description to meet 20-char minimum required
by tpmjs field validator. Bump to 0.2.1.
2026-02-06 22:42:59 +10:00
Ajax Davis
90d575797f chore(release): @tpmjs/tools-postmark@0.2.0 2026-02-06 22:30:07 +10:00
Ajax Davis
0d30a9cabb feat(tools): add @tpmjs/tools-postmark with 82 Postmark API tools
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).
2026-02-06 22:14:37 +10:00
Ajax Davis
86e523f3dc Revert "feat(homepage): update positioning to "Infinite Toolspace""
This reverts commit ce44aeab3a.
2026-02-04 04:12:04 +10:00
Ajax Davis
ce44aeab3a feat(homepage): update positioning to "Infinite Toolspace"
Rebrand homepage messaging around toolspace virtualization concept:
- Hero: "INFINITE TOOLSPACE" with "A million tools. Zero configuration."
- New ToolspaceSection explaining the three-stage pipeline
- FeaturesSection emphasizes retrieval layer and selection at scale
- Integration section: "MCP is the socket, TPMJS is the OS"
- Publish section: "Join the Infinite Toolspace"
2026-02-04 03:45:50 +10:00
Ajax Davis
1675e6ce6c fix(ui): resolve lint errors to enable CI deployment
- 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.
2026-02-04 02:52:05 +10:00
Ajax Davis
0f7e5a3ace chore: trigger CI for dark mode fix 2026-02-04 02:28:47 +10:00
Ajax Davis
fa4e7754e6 fix: improve dark mode text readability in chat interface
Add explicit text-foreground class to assistant message bubbles
to ensure proper contrast in dark mode.
2026-02-04 02:17:50 +10:00
Ajax Davis
32c6e097ed feat(executor): formalize Executor Protocol v1.0 with compliance testing
- Add EXECUTOR_SPECIFICATION.md with formal v1.0 protocol spec
- Add executor-openapi.yaml (OpenAPI 3.0 specification)
- Create @tpmjs/executor-test compliance test package (15 tests)
- Update Railway executor to v1.0 compliance (15/15 tests pass)
- Update Unsandbox executor to v1.0 compliance (15/15 tests pass)
- Update Vercel executor to v1.0 compliance
- Add /info endpoint with capability advertisement to all executors
- Add structured error codes (PACKAGE_NOT_FOUND, TOOL_NOT_FOUND, etc.)
- Add protocolVersion and implementationVersion to /health responses
- Add X-TPMJS-Protocol-Version header support
- Add EXECUTOR_COMPLIANCE.md with test results documentation
2026-02-04 02:09:08 +10:00
Ajax Davis
760cc4b77e chore: remove temporary admin endpoints 2026-02-04 00:32:21 +10:00
Ajax Davis
b092ca490b chore: add temporary admin endpoint for user analysis 2026-02-03 23:58:39 +10:00
Ajax Davis
ffc6ddcdbb feat(executors): add Railway executor template and documentation
- Add Railway executor template with one-click deploy support
- Create Railway documentation page at /docs/executors/railway
- Update main executors page with Railway as official recommendation
- Add Railway to platform comparison table with new columns
- Update inter-page navigation for Railway → Unsandbox → Vercel flow
- Update FAQ to recommend Railway for most use cases

Railway executor features:
- Zero-dependency Node.js HTTP server
- Docker support via included Dockerfile
- Health check endpoint at /health
- Tool execution at /execute-tool
- API key authentication support
- Auto-restart on failure via railway.json
2026-02-03 22:19:41 +10:00
Ajax Davis
3f62228c56 docs(executors): add Unsandbox and Vercel deployment guides
Restructure executor documentation to support multiple platforms:
- Main /docs/executors page now serves as overview with platform selector
- Add dedicated /docs/executors/unsandbox guide with CLI deployment
- Add dedicated /docs/executors/vercel guide with one-click deploy
- Include platform comparison table and shared API specification
2026-02-03 21:47:13 +10:00
Ajax Davis
ee066a20ca Add Unsandbox executor template
Adds a new executor template for deploying TPMJS tools on Unsandbox,
providing an alternative to the Vercel executor.

Features:
- One-command deploy via `un` CLI
- API-compatible with Vercel executor
- Standalone bootstrap script (no network required during bootstrap)
- Full documentation with examples
2026-02-03 21:29:22 +10:00
Ajax Davis
f9c5d903a1 fix(registry-search): remove category filter that causes missed results 2026-01-31 01:37:13 +10:00
Ajax Davis
211be5d197 chore: bump registry-search to 0.1.4 and registry-execute to 0.1.5 2026-01-31 00:39:19 +10:00
Ajax Davis
59eefe8d55 docs(sdk): use openai gpt-4.1-mini in examples 2026-01-30 23:53:58 +10:00
Ajax Davis
0e5815e4ce docs(sdk): add MCP server, REST API, and agent building documentation
- Add MCP Server Integration section with Claude Desktop, Cursor, VS Code config examples
- Add REST API Reference documenting /api/tools, /api/tools/search, /api/tools/execute endpoints
- Add "Building an Agent Like Omega" section with complete implementation examples
- Include SSE streaming patterns for real-time tool execution UI
- Update .gitignore to exclude .env*.local files
2026-01-30 23:41:03 +10:00
Ajax Davis
2df4b53354 feat(scenarios): complete scenario evaluation system with JSON Schema validation
- Add JSON Schema validation using Ajv for structured output assertions
- Add extractJsonFromOutput() to parse JSON from various formats (direct, markdown, embedded)
- Add validateJsonSchema() for proper schema validation with error messages
- Implement structured error handling with ScenarioExecutionError class
- Add 8 error categories: COLLECTION_NOT_FOUND, NO_COLLECTION, NO_TOOLS, etc.
- Add comprehensive unit tests for execute.ts (16 tests)
- Expand evaluate.test.ts with JSON Schema validation tests (36 tests total)
- Refactor ExpandedRunDetails.tsx into smaller components for assertions and conversation display
2026-01-27 05:22:34 +10:00
Ajax Davis
13e4fd954d chore(web): remove react-grab dev tooling 2026-01-26 02:59:18 +10:00
Ajax Davis
19417964de wip 2026-01-26 02:41:45 +10:00
Ajax Davis
8542e3d7d5 feat(homepage): add features section highlighting platform capabilities
- Redesigned FeaturesSection with 9 key platform features
- Tool Registry, Omega Agent, Collections, Custom Agents
- MCP Protocol, Secure Execution, Test Scenarios
- Living Skills, Developer SDK
- Each feature card links to relevant section
- Clean, consistent design with existing brutalist style
2026-01-25 18:29:27 +10:00
Ajax Davis
16c7b8155e fix(omega): fix tool discovery on custom ports and OpenAI tool name limit
- Extract port from request URL instead of relying on PORT env var
- Truncate sanitized tool names to 64 chars (OpenAI API limit)
2026-01-25 16:59:33 +10:00