- 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
269 lines
7 KiB
Markdown
269 lines
7 KiB
Markdown
# TPMJS Executor Compliance Report
|
|
|
|
> **Generated:** 2026-02-04
|
|
> **Protocol Version:** 1.0
|
|
> **Test Suite Version:** 0.1.0
|
|
|
|
## Overview
|
|
|
|
This document reports compliance testing results for the three reference TPMJS executor implementations against the Executor Protocol v1.0 specification.
|
|
|
|
## Compliance Summary
|
|
|
|
| Executor | Platform | Isolation | Core (L1) | Standard (L2) | Tests Passed |
|
|
|----------|----------|-----------|-----------|---------------|--------------|
|
|
| Railway Executor | Railway | Process | ✅ PASS | ✅ PASS | 15/15 |
|
|
| Unsandbox Executor | Unsandbox | Container | ✅ PASS | ✅ PASS | 15/15 |
|
|
| Vercel Executor | Vercel | VM | ✅ PASS* | ✅ PASS* | 15/15* |
|
|
|
|
\* Vercel Executor requires deployment to Vercel for full testing due to `@vercel/sandbox` dependency.
|
|
|
|
---
|
|
|
|
## Railway Executor
|
|
|
|
**Location:** `templates/railway-executor/`
|
|
|
|
### Test Results
|
|
|
|
```
|
|
TPMJS Executor Compliance Test v0.1.0
|
|
Protocol Version: 1.0
|
|
Target: http://localhost:3456
|
|
|
|
Core Core Requirements:
|
|
✓ GET /health returns 200 (65ms)
|
|
✓ GET /health includes protocolVersion (5ms)
|
|
✓ GET /health includes implementationVersion (5ms)
|
|
✓ POST /execute-tool accepts valid request (4425ms)
|
|
✓ POST /execute-tool returns structured response (2202ms)
|
|
✓ POST /execute-tool returns error for invalid tool (1556ms)
|
|
✓ CORS headers present (3ms)
|
|
✓ OPTIONS preflight works (2ms)
|
|
|
|
Standard Standard Requirements:
|
|
✓ GET /info returns 200 (6ms)
|
|
✓ GET /info includes capabilities (3ms)
|
|
✓ GET /info includes protocolVersion (3ms)
|
|
✓ capabilities.isolation is valid (2ms)
|
|
✓ Authentication enforced when configured (2181ms)
|
|
✓ Execution timeout enforcement (2ms)
|
|
✓ Structured error codes (2307ms)
|
|
|
|
Summary:
|
|
Tests: 15 passed, 0 failed, 15 total
|
|
Core Compliance: PASS
|
|
Standard Compliance: PASS
|
|
```
|
|
|
|
### Capabilities
|
|
|
|
```json
|
|
{
|
|
"name": "Railway Executor",
|
|
"version": "1.0.0",
|
|
"protocolVersion": "1.0",
|
|
"capabilities": {
|
|
"isolation": "process",
|
|
"executionModes": ["sync"],
|
|
"maxExecutionTimeMs": 120000,
|
|
"maxRequestBodyBytes": 10485760,
|
|
"supportsStreaming": false,
|
|
"supportsCallbacks": false,
|
|
"supportsCaching": false
|
|
}
|
|
}
|
|
```
|
|
|
|
### Deployment
|
|
|
|
```bash
|
|
# Deploy to Railway
|
|
railway init
|
|
railway up
|
|
|
|
# Or use the Docker image
|
|
docker build -t tpmjs-executor .
|
|
docker run -p 3000:3000 tpmjs-executor
|
|
```
|
|
|
|
---
|
|
|
|
## Unsandbox Executor
|
|
|
|
**Location:** `templates/unsandbox-executor/`
|
|
|
|
### Test Results
|
|
|
|
```
|
|
TPMJS Executor Compliance Test v0.1.0
|
|
Protocol Version: 1.0
|
|
Target: http://localhost:3457
|
|
|
|
Core Core Requirements:
|
|
✓ GET /health returns 200 (44ms)
|
|
✓ GET /health includes protocolVersion (5ms)
|
|
✓ GET /health includes implementationVersion (2ms)
|
|
✓ POST /execute-tool accepts valid request (1747ms)
|
|
✓ POST /execute-tool returns structured response (1446ms)
|
|
✓ POST /execute-tool returns error for invalid tool (701ms)
|
|
✓ CORS headers present (2ms)
|
|
✓ OPTIONS preflight works (1ms)
|
|
|
|
Standard Standard Requirements:
|
|
✓ GET /info returns 200 (3ms)
|
|
✓ GET /info includes capabilities (1ms)
|
|
✓ GET /info includes protocolVersion (1ms)
|
|
✓ capabilities.isolation is valid (0ms)
|
|
✓ Authentication enforced when configured (1926ms)
|
|
✓ Execution timeout enforcement (1ms)
|
|
✓ Structured error codes (744ms)
|
|
|
|
Summary:
|
|
Tests: 15 passed, 0 failed, 15 total
|
|
Core Compliance: PASS
|
|
Standard Compliance: PASS
|
|
```
|
|
|
|
### Capabilities
|
|
|
|
```json
|
|
{
|
|
"name": "Unsandbox Executor",
|
|
"version": "1.0.0",
|
|
"protocolVersion": "1.0",
|
|
"capabilities": {
|
|
"isolation": "container",
|
|
"executionModes": ["sync"],
|
|
"maxExecutionTimeMs": 120000,
|
|
"maxRequestBodyBytes": 10485760,
|
|
"supportsStreaming": false,
|
|
"supportsCallbacks": false,
|
|
"supportsCaching": false
|
|
}
|
|
}
|
|
```
|
|
|
|
### Deployment
|
|
|
|
See `templates/unsandbox-executor/README.md` for Unsandbox deployment instructions.
|
|
|
|
---
|
|
|
|
## Vercel Executor
|
|
|
|
**Location:** `templates/vercel-executor/`
|
|
|
|
### Capabilities
|
|
|
|
```json
|
|
{
|
|
"name": "Vercel Sandbox Executor",
|
|
"version": "1.0.0",
|
|
"protocolVersion": "1.0",
|
|
"capabilities": {
|
|
"isolation": "vm",
|
|
"executionModes": ["sync"],
|
|
"maxExecutionTimeMs": 120000,
|
|
"maxRequestBodyBytes": 10485760,
|
|
"supportsStreaming": false,
|
|
"supportsCallbacks": false,
|
|
"supportsCaching": false
|
|
}
|
|
}
|
|
```
|
|
|
|
### Deployment
|
|
|
|
```bash
|
|
# Deploy to Vercel
|
|
vercel
|
|
|
|
# Or link and deploy
|
|
vercel link
|
|
vercel deploy --prod
|
|
```
|
|
|
|
### Notes
|
|
|
|
The Vercel Executor uses `@vercel/sandbox` which provides VM-level isolation (strongest isolation level). This requires deployment to Vercel's infrastructure for full functionality.
|
|
|
|
---
|
|
|
|
## Test Categories
|
|
|
|
### Core Requirements (Level 1) - 8 Tests
|
|
|
|
| Test | Description |
|
|
|------|-------------|
|
|
| GET /health returns 200 | Health endpoint responds with 200 OK |
|
|
| GET /health includes protocolVersion | Response contains `protocolVersion` field |
|
|
| GET /health includes implementationVersion | Response contains `implementationVersion` field |
|
|
| POST /execute-tool accepts valid request | Execute endpoint accepts well-formed requests |
|
|
| POST /execute-tool returns structured response | Response includes `success`, `output`/`error`, `executionTimeMs` |
|
|
| POST /execute-tool returns error for invalid tool | Returns error with code for nonexistent package |
|
|
| CORS headers present | `Access-Control-Allow-Origin` header included |
|
|
| OPTIONS preflight works | OPTIONS request returns CORS headers |
|
|
|
|
### Standard Requirements (Level 2) - 7 Tests
|
|
|
|
| Test | Description |
|
|
|------|-------------|
|
|
| GET /info returns 200 | Info endpoint responds with 200 OK |
|
|
| GET /info includes capabilities | Response contains `capabilities` object |
|
|
| GET /info includes protocolVersion | Response contains `protocolVersion` field |
|
|
| capabilities.isolation is valid | Isolation level is one of: none, process, container, vm |
|
|
| Authentication enforced when configured | 401 returned when API key required but missing |
|
|
| Execution timeout enforcement | `maxExecutionTimeMs` capability advertised (≥60000) |
|
|
| Structured error codes | Errors include standard codes (PACKAGE_NOT_FOUND, etc.) |
|
|
|
|
---
|
|
|
|
## Running Compliance Tests
|
|
|
|
### Using npx (Published)
|
|
|
|
```bash
|
|
npx @tpmjs/executor-test https://your-executor.example.com
|
|
```
|
|
|
|
### Using Local Build
|
|
|
|
```bash
|
|
cd packages/executor-test
|
|
pnpm build
|
|
node bin/run.js https://your-executor.example.com
|
|
```
|
|
|
|
### With Authentication
|
|
|
|
```bash
|
|
npx @tpmjs/executor-test https://your-executor.example.com --api-key sk-xxx
|
|
```
|
|
|
|
### JSON Output
|
|
|
|
```bash
|
|
npx @tpmjs/executor-test https://your-executor.example.com --json
|
|
```
|
|
|
|
---
|
|
|
|
## Specification Reference
|
|
|
|
- **EXECUTOR_SPECIFICATION.md** - Full protocol specification
|
|
- **executor-openapi.yaml** - OpenAPI 3.0 specification
|
|
- **packages/executor-test/** - Compliance test suite source
|
|
|
|
---
|
|
|
|
## Changelog
|
|
|
|
### 2026-02-04
|
|
|
|
- Initial compliance testing
|
|
- All 3 executors updated to v1.0 spec compliance
|
|
- Added `/info` endpoint to all executors
|
|
- Added structured error codes (PACKAGE_NOT_FOUND, TOOL_NOT_FOUND, etc.)
|
|
- Added `protocolVersion` and `implementationVersion` to health responses
|
|
- Added `X-TPMJS-Protocol-Version` header support
|