Files
paseo/packages/website/public/schemas/paseo.config.v1.json
T
Mohamed BoudraGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
a854096c35 feat: ACP base provider, Copilot integration, eliminate hardcoded provider unions (#170)
* feat(server): add ACP base provider with Claude ACP integration

Implement a generic Agent Client Protocol (ACP) base provider that any
ACP-compatible agent can extend with minimal code. Includes a concrete
Claude ACP implementation via @agentclientprotocol/claude-agent-acp
with full parity to the existing Claude Code provider.

The base handles subprocess lifecycle, streaming translation, permission
bridging, terminal/fs callbacks, listModels, loadSession/resume, and
mode/model management. The concrete class only specifies the command,
modes, and availability check.

* fix: update lockfile signatures and Nix hash

* feat: add Copilot ACP provider, eliminate hardcoded provider unions, fix ACP streaming bugs

Add Copilot as an ACP provider (copilot --acp), with real modes and models
discovered from the ACP server. Fix two ACP base bugs: duplicate assistant
text (emit deltas not cumulative) and idle→running→stuck (fire-and-return
startTurn). Replace all hardcoded provider string unions with string/manifest-
derived values so adding a provider only requires: impl class, manifest entry,
registry factory, icon, and E2E config. Add provider docs and Copilot icon.

* fix: update lockfile signatures and Nix hash

* feat(app): add OpenCode provider icon

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-02 23:20:01 +08:00

336 lines
10 KiB
JSON

{
"$ref": "#/definitions/PaseoConfigV1",
"definitions": {
"PaseoConfigV1": {
"type": "object",
"properties": {
"version": {
"type": "number",
"const": 1
},
"daemon": {
"type": "object",
"properties": {
"listen": {
"type": "string"
},
"allowedHosts": {
"anyOf": [
{
"type": "boolean",
"const": true
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"mcp": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
}
},
"additionalProperties": false
},
"cors": {
"type": "object",
"properties": {
"allowedOrigins": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"relay": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"endpoint": {
"type": "string"
},
"publicEndpoint": {
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"app": {
"type": "object",
"properties": {
"baseUrl": {
"type": "string"
}
},
"additionalProperties": false
},
"providers": {
"type": "object",
"properties": {
"openai": {
"type": "object",
"properties": {
"apiKey": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"local": {
"type": "object",
"properties": {
"modelsDir": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"agents": {
"type": "object",
"properties": {
"providers": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"command": {
"anyOf": [
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"const": "default"
}
},
"required": ["mode"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"const": "append"
},
"args": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["mode"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"const": "replace"
},
"argv": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1
}
},
"required": ["mode", "argv"],
"additionalProperties": false
}
]
},
"env": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"additionalProperties": false
},
"propertyNames": {
"type": "string"
}
}
},
"additionalProperties": false
},
"features": {
"type": "object",
"properties": {
"dictation": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"stt": {
"type": "object",
"properties": {
"provider": {
"allOf": [
{
"type": "string"
},
{
"type": "string",
"enum": ["openai", "local"]
}
]
},
"model": {
"type": "string",
"minLength": 1
},
"confidenceThreshold": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"voiceMode": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"llm": {
"type": "object",
"properties": {
"provider": {
"type": "string"
},
"model": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"stt": {
"type": "object",
"properties": {
"provider": {
"$ref": "#/definitions/PaseoConfigV1/properties/features/properties/dictation/properties/stt/properties/provider"
},
"model": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"tts": {
"type": "object",
"properties": {
"provider": {
"$ref": "#/definitions/PaseoConfigV1/properties/features/properties/dictation/properties/stt/properties/provider"
},
"model": {
"type": "string",
"minLength": 1
},
"voice": {
"type": "string",
"enum": ["alloy", "echo", "fable", "onyx", "nova", "shimmer"]
},
"speakerId": {
"type": "integer"
},
"speed": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"log": {
"type": "object",
"properties": {
"level": {
"type": "string",
"enum": ["trace", "debug", "info", "warn", "error", "fatal"]
},
"format": {
"type": "string",
"enum": ["pretty", "json"]
},
"console": {
"type": "object",
"properties": {
"level": {
"$ref": "#/definitions/PaseoConfigV1/properties/log/properties/level"
},
"format": {
"$ref": "#/definitions/PaseoConfigV1/properties/log/properties/format"
}
},
"additionalProperties": false
},
"file": {
"type": "object",
"properties": {
"level": {
"$ref": "#/definitions/PaseoConfigV1/properties/log/properties/level"
},
"path": {
"type": "string",
"minLength": 1
},
"rotate": {
"type": "object",
"properties": {
"maxSize": {
"type": "string",
"minLength": 1
},
"maxFiles": {
"type": "integer",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}