Skip to content

Releases: khirotaka/restexec

v1.0.0

19 Nov 13:49
cbe3c32

Choose a tag to compare

🎉 Initial Release

restexec は、Deno のサンドボックス化されたランタイムを使用して、HTTP 経由で TypeScript コードを安全に実行する REST API サービスです。

✨ 主な機能

コア API エンドポイント

  • POST /execute - TypeScript コードの実行と結果の取得
  • POST /lint - deno lint によるコード品質チェック
  • PUT /workspace - TypeScript コードファイルの保存
  • GET /health - サーバーステータスの監視

セキュリティ機能

  • 明示的な権限システム: Deno の許可フラグによる厳格なアクセス制御
  • プロセス分離: 各実行は独立した子プロセスで実行
  • パストラバーサル防止: ../ などの攻撃パターンをブロック
  • 環境変数の分離: リクエストごとの一時的な環境変数
  • 事前キャッシュ依存関係: --cached-only フラグによる実行時ダウンロードの禁止
  • 外部ライブラリ(プリキャッシュ済み)

以下のライブラリがすぐに利用可能です:

  • es-toolkit v1.42.0 - モダンユーティリティライブラリ
  • date-fns v4.1.0 - 日付操作
  • zod v4.1.12 - スキーマバリデーション
  • nanoid v5.1.6 - ユニーク ID 生成
  • decimal.js v10.6.0 - 高精度小数演算
  • papaparse v5.5.3 - CSV パーサー

その他の機能

  • Markdown コードブロック抽出: LLM 生成レスポンスからのコード自動抽出
  • カスタム環境変数: 実行時に最大50個の環境変数を渡すことが可能
  • 設定可能なタイムアウト: 1ms〜300秒(デフォルト: 5秒)
  • 包括的なエラーハンドリング: 詳細なエラータイプとメッセージ

🛠 技術スタック

  • Runtime: Deno 2.5.6
  • Framework: Oak v17.1.6
  • Container: Alpine Linux + Docker
  • Language: TypeScript (strict mode)

📦 デプロイメント

Docker

docker compose up -d

推奨リソース

  • CPU: 500m (request) / 2 (limit)
  • Memory: 512Mi (request) / 2Gi (limit)

📚 ドキュメント

まずは、Claude Codeにオンボーディングを依頼してください。
また、詳細なドキュメントが specs/ ディレクトリに含まれています:

  • API.md - 実行 API 仕様
  • Security.md - セキュリティモデル
  • Configuration.md - 設定オプション
  • Libraries.md - ライブラリ管理

🚀 クイックスタート

# コードを保存
curl -X PUT http://localhost:3000/workspace \
  -H "Content-Type: application/json" \
  -d '{"codeId": "hello", "code": "console.log(JSON.stringify({msg: \"Hello, World!\"}));"}'
# 実行
curl -X POST http://localhost:3000/execute \
  -H "Content-Type: application/json" \
  -d '{"codeId": "hello"}'

⚠️ 既知の制限事項

  • デフォルトでネットワークアクセス・ファイル書き込みは無効
  • すべての外部ライブラリはビルド時にキャッシュが必要
  • 単一ファイル実行のみ対応(モジュールエクスポート非対応)

🎯 想定ユースケース

  • API 自動化とワークフロー
  • 分離環境でのデータ処理
  • LLM によるコード生成・実行

Full Changelog: https://github.com/khirotaka/restexec/commits/v1.0.0