feat(FN-003): add tool manifest registry with FastAPI CRUD and built-in manifests
- Add ToolManifest Pydantic models with validators for ports, mounts, health checks, and traefik config - Implement in-memory ToolRegistry with YAML loading and built-in manifest scanning - Add FastAPI CRUD routes for listing, retrieving, and creating tool manifests - Include built-in manifests for runfusion and code-server - Harden web Dockerfile with unprivileged nginx and port 8080 - Add tool manifest specification documentation and architecture updates Fusion-Task-Id: FN-003
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
id: code-server
|
||||
name: code-server
|
||||
description: VS Code in the browser.
|
||||
version: "1.0.0"
|
||||
image: codercom/code-server:latest
|
||||
runtime_working_dir: /workspace
|
||||
ports:
|
||||
- container_port: 8080
|
||||
protocol: tcp
|
||||
name: http
|
||||
primary: true
|
||||
workspace_mounts:
|
||||
- type: volume
|
||||
source_pattern: "{project_repo}"
|
||||
target: /workspace
|
||||
read_only: false
|
||||
config_mounts:
|
||||
- type: volume
|
||||
source_pattern: "{user_config}/code-server"
|
||||
target: /home/coder/.config/code-server
|
||||
read_only: false
|
||||
env: {}
|
||||
secrets:
|
||||
- name: code-server-password
|
||||
env_var: PASSWORD
|
||||
required: false
|
||||
health_check:
|
||||
type: http
|
||||
path: /healthz
|
||||
port: 8080
|
||||
interval_seconds: 10
|
||||
timeout_seconds: 5
|
||||
retries: 3
|
||||
start_period_seconds: 5
|
||||
resource_limits:
|
||||
cpus: 2.0
|
||||
memory_mb: 4096
|
||||
memory_swap_mb: -1
|
||||
traefik:
|
||||
enabled: true
|
||||
subdomain_prefix: code
|
||||
port: 8080
|
||||
middlewares: []
|
||||
strip_prefix: false
|
||||
@@ -0,0 +1,46 @@
|
||||
id: runfusion
|
||||
name: RunFusion
|
||||
description: Executable Node.js environment for running and developing applications.
|
||||
version: "1.0.0"
|
||||
image: node:22-slim
|
||||
runtime_working_dir: /workspace
|
||||
ports:
|
||||
- container_port: 8080
|
||||
protocol: tcp
|
||||
name: http
|
||||
primary: true
|
||||
workspace_mounts:
|
||||
- type: volume
|
||||
source_pattern: "{project_repo}"
|
||||
target: /workspace
|
||||
read_only: false
|
||||
config_mounts:
|
||||
- type: volume
|
||||
source_pattern: "{user_config}/runfusion"
|
||||
target: /home/node/.config
|
||||
read_only: false
|
||||
env:
|
||||
NODE_ENV: development
|
||||
health_check:
|
||||
type: http
|
||||
path: /
|
||||
port: 8080
|
||||
interval_seconds: 10
|
||||
timeout_seconds: 5
|
||||
retries: 3
|
||||
start_period_seconds: 10
|
||||
resource_limits:
|
||||
cpus: 2.0
|
||||
memory_mb: 2048
|
||||
memory_swap_mb: -1
|
||||
executable:
|
||||
node_version: "22"
|
||||
package_manager: npm
|
||||
bootstrap_commands: []
|
||||
install_commands: []
|
||||
traefik:
|
||||
enabled: true
|
||||
subdomain_prefix: runfusion
|
||||
port: 8080
|
||||
middlewares: []
|
||||
strip_prefix: false
|
||||
Reference in New Issue
Block a user