Initial project import

This commit is contained in:
2026-08-14 09:40:51 +03:00
parent 00040e5ce4
commit d7099bf80d
146 changed files with 30509 additions and 1055 deletions
+4 -3
View File
@@ -26,10 +26,10 @@ docs/runbooks/adapter-1c-mcp.md
core/deploy/docker/adapter-1c-mcp/compose.yaml
```
1C REST adapter on GPU host:
1C REST SQL adapter on `docker.cin.su`:
```text
core/deploy/docker-gpu/adapter-1c/compose.yaml
core/deploy/docker/adapter-1c/compose.yaml
```
1C agent service (подпроект):
@@ -40,6 +40,7 @@ docs/runbooks/1c-agent.md
```
The current container is read-first and route-index backed. It serves
`http://docker-gpu.cin.su:8011`, keeps the route index in the
`http://docker.cin.su:8011` by default (the host port is configurable through
`ADAPTER_1C_HOST_PORT`), keeps the route index in the
`adapter-1c_adapter-1c-data` Docker volume, and is used by
`adapter-1c-mcp` through `ONEC_ADAPTER_URL`.
+21
View File
@@ -5,3 +5,24 @@
Здесь будут находиться compose-файлы, env-шаблоны и инструкции для запуска GPU-сервисов.
Секреты должны передаваться через окружение, секрет-хранилище или настройки хоста, но не через git.
Для 1C-адаптера `adapter-1c-audit` запускается рядом с REST-сервисом и раз в
15 минут записывает безопасную сводку журнала в том `adapter-1c-data`:
`/data/adapter-audit-reports/latest.json`. Период задаётся
`ONEC_ADAPTER_AUDIT_INTERVAL_SECONDS`; журнал не содержит BSL-текстов,
SQL-полезной нагрузки или секретов.
Безопасное обновление полного 1C-стека выполняется из корня репозитория:
```powershell
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\deploy_1c_adapter_stack.ps1 -SkipVerify
```
Этот каталог предназначен только для GPU-нагрузок. SQL-адаптер 1С и MCP
разворачиваются на `docker.cin.su` из `core/deploy/docker/adapter-1c/` и
`core/deploy/docker/adapter-1c-mcp/`. После обновления проверьте REST
`http://docker.cin.su:8011/health?base_id=upo_test` и MCP
`http://docker.cin.su:8021/health`.
CPU-only endpoint эмбеддингов для актуального поиска по коду 1С находится в
`embeddings/`; он разворачивается на GPU-хосте, но намеренно не резервирует GPU.
@@ -1,3 +1,5 @@
# Legacy location. Deploy the REST SQL adapter from
# core/deploy/docker/adapter-1c/compose.yaml to docker.cin.su.
name: adapter-1c
services:
@@ -8,6 +10,7 @@ services:
image: ${ADAPTER_1C_IMAGE:-adapter-1c-rest:latest}
container_name: ${ADAPTER_1C_CONTAINER_NAME:-adapter-1c-rest}
restart: unless-stopped
stop_grace_period: 5m
ports:
- "${ADAPTER_1C_HOST_PORT:-8011}:8011"
volumes:
@@ -19,6 +22,20 @@ services:
ONEC_ADAPTER_ALLOW_UNAUTHENTICATED_ADMIN: ${ONEC_ADAPTER_ALLOW_UNAUTHENTICATED_ADMIN:-true}
ONEC_SQL_BASES_JSON: ${ONEC_SQL_BASES_JSON:-}
ONEC_SQL_BASES_JSON_FILE: ${ONEC_SQL_BASES_JSON_FILE:-/data/onec-sql-bases.json}
ONEC_ADAPTER_CACHE_DB: ${ONEC_ADAPTER_CACHE_DB:-/data/adapter-cache.sqlite}
ONEC_ADAPTER_STATE_DB: ${ONEC_ADAPTER_STATE_DB:-/data/adapter-cache.sqlite}
ONEC_ADAPTER_JOB_STORE: ${ONEC_ADAPTER_JOB_STORE:-/data/adapter-jobs.json}
ONEC_REPOSITORY_STATE_FILE: ${ONEC_REPOSITORY_STATE_FILE:-/data/onec-repository-locks.json}
ONEC_ADAPTER_BACKUP_DIR: ${ONEC_ADAPTER_BACKUP_DIR:-/data/adapter-apply-backups}
ONEC_CONFIGURATION_ACTIVATION_STATE_FILE: ${ONEC_CONFIGURATION_ACTIVATION_STATE_FILE:-/data/onec-configuration-activation-requests.json}
ONEC_CONFIGURATION_ACTIVATION_REQUEST_TTL_SECONDS: ${ONEC_CONFIGURATION_ACTIVATION_REQUEST_TTL_SECONDS:-1800}
ONEC_ADAPTER_JOB_TIMEOUT_SECONDS: ${ONEC_ADAPTER_JOB_TIMEOUT_SECONDS:-240}
ONEC_ADAPTER_FULL_TIMEOUT_SECONDS: ${ONEC_ADAPTER_FULL_TIMEOUT_SECONDS:-600}
ONEC_ADAPTER_SECTION_TIMEOUT_SECONDS: ${ONEC_ADAPTER_SECTION_TIMEOUT_SECONDS:-180}
ONEC_ADAPTER_JOB_PROCESS_ISOLATION: ${ONEC_ADAPTER_JOB_PROCESS_ISOLATION:-true}
ONEC_ADAPTER_JOB_MEMORY_LIMIT_MB: ${ONEC_ADAPTER_JOB_MEMORY_LIMIT_MB:-0}
ONEC_ADAPTER_JOB_CPU_LIMIT_SECONDS: ${ONEC_ADAPTER_JOB_CPU_LIMIT_SECONDS:-0}
ONEC_ADAPTER_DEBUG_DIAGNOSTICS: ${ONEC_ADAPTER_DEBUG_DIAGNOSTICS:-false}
ONEC_INFOBASE_USER_ADMIN_BASES_JSON: ${ONEC_INFOBASE_USER_ADMIN_BASES_JSON:-}
ONEC_INFOBASE_USER_ADMIN_BASES_JSON_FILE: ${ONEC_INFOBASE_USER_ADMIN_BASES_JSON_FILE:-/data/onec-infobase-user-admin.json}
ONEC_INFOBASE_USER_ADMIN_TOKEN_UPO_TEST: ${ONEC_INFOBASE_USER_ADMIN_TOKEN_UPO_TEST:-}
@@ -28,5 +45,21 @@ services:
ONEC_REPOSITORY_REQUEST_TTL_SECONDS: ${ONEC_REPOSITORY_REQUEST_TTL_SECONDS:-86400}
ONEC_REPOSITORY_CONFIRMATION_TTL_SECONDS: ${ONEC_REPOSITORY_CONFIRMATION_TTL_SECONDS:-7200}
adapter-1c-audit:
image: ${ADAPTER_1C_IMAGE:-adapter-1c-rest:latest}
container_name: ${ADAPTER_1C_AUDIT_CONTAINER_NAME:-adapter-1c-audit}
restart: unless-stopped
depends_on:
- adapter-1c-rest
volumes:
- adapter-1c-data:/data
environment:
ONEC_ADAPTER_AUDIT_INTERVAL_SECONDS: ${ONEC_ADAPTER_AUDIT_INTERVAL_SECONDS:-900}
command: >-
sh -c 'mkdir -p /data/adapter-audit-reports;
while true; do python /app/analyze_audit.py --log /data/adapter-audit.jsonl > /data/adapter-audit-reports/latest.json.tmp
&& mv /data/adapter-audit-reports/latest.json.tmp /data/adapter-audit-reports/latest.json;
sleep "$${ONEC_ADAPTER_AUDIT_INTERVAL_SECONDS}"; done'
volumes:
adapter-1c-data:
@@ -0,0 +1,18 @@
# CPU-only OpenAI-compatible embedding endpoint for 1C code search.
# The model cache is persistent on docker-gpu; no credentials are required.
EMBEDDING_CONTAINER_NAME=llm-qwen3-embedding
EMBEDDING_IMAGE=ghcr.io/ggml-org/llama.cpp@sha256:3e8914c1aab600a330ada97c10fb5fb02ff1c15ac39f2ece218db125cf54594e
EMBEDDING_HOST_PORT=8082
EMBEDDING_HF_REPO=Qwen/Qwen3-Embedding-0.6B-GGUF:Q8_0
EMBEDDING_SERVED_MODEL_NAME=qwen3-embedding-0.6b
EMBEDDING_CTX_SIZE=8192
EMBEDDING_BATCH_SIZE=1024
EMBEDDING_UBATCH_SIZE=1024
EMBEDDING_THREADS=12
EMBEDDING_PARALLEL=1
EMBEDDING_CPU_LIMIT=8.0
EMBEDDING_MEMORY_LIMIT=4G
# Windows path on docker-gpu.cin.su, mounted into the Linux container.
HOST_LLAMA_CACHE_DIR=Z:/LLM/models/cache/llama.cpp
@@ -0,0 +1,51 @@
name: llm-embeddings
services:
qwen3-embedding:
image: ${EMBEDDING_IMAGE:-ghcr.io/ggml-org/llama.cpp@sha256:3e8914c1aab600a330ada97c10fb5fb02ff1c15ac39f2ece218db125cf54594e}
container_name: ${EMBEDDING_CONTAINER_NAME:-llm-qwen3-embedding}
restart: unless-stopped
ports:
- "${EMBEDDING_HOST_PORT:-8082}:8080"
volumes:
- ${HOST_LLAMA_CACHE_DIR:-Z:/LLM/models/cache/llama.cpp}:/root/.cache/llama.cpp
command:
- --host
- 0.0.0.0
- --port
- "8080"
- --hf-repo
- ${EMBEDDING_HF_REPO:-Qwen/Qwen3-Embedding-0.6B-GGUF:Q8_0}
- --alias
- ${EMBEDDING_SERVED_MODEL_NAME:-qwen3-embedding-0.6b}
- --embedding
- --pooling
- last
- --ctx-size
- ${EMBEDDING_CTX_SIZE:-8192}
- --batch-size
- ${EMBEDDING_BATCH_SIZE:-1024}
- --ubatch-size
- ${EMBEDDING_UBATCH_SIZE:-1024}
- --threads
- ${EMBEDDING_THREADS:-12}
- --parallel
- ${EMBEDDING_PARALLEL:-1}
- --n-gpu-layers
- "0"
healthcheck:
test:
- CMD
- curl
- --fail
- --silent
- http://localhost:8080/health
interval: 10s
timeout: 5s
retries: 30
start_period: 10m
deploy:
resources:
limits:
cpus: ${EMBEDDING_CPU_LIMIT:-8.0}
memory: ${EMBEDDING_MEMORY_LIMIT:-4G}
@@ -3,7 +3,11 @@ ONEC_AGENT_CONTAINER_NAME=onec-agent
ONEC_AGENT_HOST_PORT=8090
ONEC_AGENT_DEFAULT_BASE_URL=http://docker-gpu.cin.su:8000
ONEC_AGENT_DEFAULT_MODEL=qwen3-4b-instruct-2507
ONEC_ADAPTER_URL=http://docker-gpu.cin.su:8011
ONEC_MCP_URL=http://docker.cin.su:8021
# Keep false for ordinary coding agents; diagnostic storage routes stay in the
# developer adapter/MCP surface.
ONEC_AGENT_ALLOW_DIAGNOSTIC=false
# Для интеграции с несколькими ИИ провайдерскими конечными точками
# Формат JSON:
+2 -2
View File
@@ -18,8 +18,8 @@ services:
ONEC_AGENT_DB_PATH: /app/data/onec-agent.db
ONEC_AGENT_DEFAULT_BASE_URL: ${ONEC_AGENT_DEFAULT_BASE_URL:-http://docker-gpu.cin.su:8000}
ONEC_AGENT_DEFAULT_MODEL: ${ONEC_AGENT_DEFAULT_MODEL:-qwen3-4b-instruct-2507}
ONEC_ADAPTER_URL: ${ONEC_ADAPTER_URL:-http://docker-gpu.cin.su:8011}
ONEC_ADAPTER_TOKEN: ${ONEC_ADAPTER_TOKEN:-}
ONEC_MCP_URL: ${ONEC_MCP_URL:-http://docker.cin.su:8021}
ONEC_AGENT_ALLOW_DIAGNOSTIC: ${ONEC_AGENT_ALLOW_DIAGNOSTIC:-false}
ONEC_AGENT_PROVIDERS: ${ONEC_AGENT_PROVIDERS:-}
volumes:
@@ -4,8 +4,12 @@ ADAPTER_1C_MCP_HOST_PORT=8021
# REST 1C adapter endpoint. The MCP proxy forwards onec_request(method,payload)
# to this service. Change it when the real adapter container is deployed.
ONEC_ADAPTER_URL=http://docker-gpu.cin.su:8011
ONEC_ADAPTER_URL=http://docker.cin.su:8011
ONEC_ADAPTER_TIMEOUT_SECONDS=120
# Keep false for ordinary coding agents. Enable only in a developer-only MCP
# deployment that is allowed to expose storage diagnostics.
ONEC_MCP_ALLOW_DIAGNOSTIC=false
# Optional bearer token for the REST adapter. Do not commit real secrets.
ONEC_ADAPTER_TOKEN=
+24 -1
View File
@@ -12,6 +12,29 @@ services:
- "${ADAPTER_1C_MCP_HOST_PORT:-8021}:8021"
environment:
PORT: "8021"
ONEC_ADAPTER_URL: ${ONEC_ADAPTER_URL:-http://docker-gpu.cin.su:8011}
ONEC_ADAPTER_URL: ${ONEC_ADAPTER_URL:-http://docker.cin.su:8011}
ONEC_ADAPTER_TOKEN: ${ONEC_ADAPTER_TOKEN:-}
ONEC_ADAPTER_TIMEOUT_SECONDS: ${ONEC_ADAPTER_TIMEOUT_SECONDS:-240}
ONEC_MCP_ALLOW_DIAGNOSTIC: ${ONEC_MCP_ALLOW_DIAGNOSTIC:-false}
ONEC_MCP_DEBUG_DIAGNOSTICS: ${ONEC_MCP_DEBUG_DIAGNOSTICS:-false}
volumes:
- adapter-1c-mcp-data:/data
adapter-1c-mcp-audit:
image: ${ADAPTER_1C_MCP_IMAGE:-adapter-1c-mcp:latest}
container_name: ${ADAPTER_1C_MCP_AUDIT_CONTAINER_NAME:-adapter-1c-mcp-audit}
restart: unless-stopped
depends_on:
- adapter-1c-mcp
volumes:
- adapter-1c-mcp-data:/data
environment:
ONEC_MCP_AUDIT_INTERVAL_SECONDS: ${ONEC_MCP_AUDIT_INTERVAL_SECONDS:-900}
command: >-
sh -c 'mkdir -p /data/adapter-audit-reports;
while true; do python /app/analyze_audit.py > /data/adapter-audit-reports/latest.json.tmp
&& mv /data/adapter-audit-reports/latest.json.tmp /data/adapter-audit-reports/latest.json;
sleep "$${ONEC_MCP_AUDIT_INTERVAL_SECONDS}"; done'
volumes:
adapter-1c-mcp-data:
@@ -0,0 +1,20 @@
ADAPTER_1C_IMAGE=adapter-1c-rest:latest
ADAPTER_1C_CONTAINER_NAME=adapter-1c-rest
# Public REST port on docker.cin.su. Change it if 8011 is occupied, then use
# the same value in ONEC_ADAPTER_URL for MCP and the 1C agent.
ADAPTER_1C_HOST_PORT=8011
# Live SQL connections. Keep real credentials outside git.
# Example:
# ONEC_SQL_BASES_JSON={"upo_test":{"server":"sql-host","database":"upo_test","user":"configured_login","password_env":"ONEC_SQL_PASSWORD_UPO_TEST"}}
# ONEC_SQL_PASSWORD_UPO_TEST=put-this-only-in-a-real-non-committed-env-file
ONEC_SQL_BASES_JSON=
# Optional path inside the container to a JSON file with the same shape as ONEC_SQL_BASES_JSON.
ONEC_SQL_BASES_JSON_FILE=/data/onec-sql-bases.json
# Adapter-owned local SQLite state. Never point this at the 1C database.
ONEC_ADAPTER_STATE_DB=/data/adapter-cache.sqlite
ONEC_ADAPTER_JOB_PROCESS_ISOLATION=true
ONEC_ADAPTER_JOB_MEMORY_LIMIT_MB=0
ONEC_ADAPTER_JOB_CPU_LIMIT_SECONDS=0
@@ -0,0 +1,63 @@
name: adapter-1c
services:
adapter-1c-rest:
build:
context: ../../../../plugins/1c
dockerfile: connector/Dockerfile
image: ${ADAPTER_1C_IMAGE:-adapter-1c-rest:latest}
container_name: ${ADAPTER_1C_CONTAINER_NAME:-adapter-1c-rest}
restart: unless-stopped
stop_grace_period: 5m
ports:
- "${ADAPTER_1C_HOST_PORT:-8011}:8011"
volumes:
- adapter-1c-data:/data
environment:
ONEC_ADAPTER_HOST: 0.0.0.0
ONEC_ADAPTER_PORT: 8011
ONEC_ADAPTER_SERVICE_TOKEN: ${ONEC_ADAPTER_SERVICE_TOKEN:-}
ONEC_ADAPTER_ALLOW_UNAUTHENTICATED_ADMIN: ${ONEC_ADAPTER_ALLOW_UNAUTHENTICATED_ADMIN:-true}
ONEC_SQL_BASES_JSON: ${ONEC_SQL_BASES_JSON:-}
ONEC_SQL_BASES_JSON_FILE: ${ONEC_SQL_BASES_JSON_FILE:-/data/onec-sql-bases.json}
ONEC_ADAPTER_CACHE_DB: ${ONEC_ADAPTER_CACHE_DB:-/data/adapter-cache.sqlite}
ONEC_ADAPTER_STATE_DB: ${ONEC_ADAPTER_STATE_DB:-/data/adapter-cache.sqlite}
ONEC_ADAPTER_JOB_STORE: ${ONEC_ADAPTER_JOB_STORE:-/data/adapter-jobs.json}
ONEC_REPOSITORY_STATE_FILE: ${ONEC_REPOSITORY_STATE_FILE:-/data/onec-repository-locks.json}
ONEC_ADAPTER_BACKUP_DIR: ${ONEC_ADAPTER_BACKUP_DIR:-/data/adapter-apply-backups}
ONEC_CONFIGURATION_ACTIVATION_STATE_FILE: ${ONEC_CONFIGURATION_ACTIVATION_STATE_FILE:-/data/onec-configuration-activation-requests.json}
ONEC_CONFIGURATION_ACTIVATION_REQUEST_TTL_SECONDS: ${ONEC_CONFIGURATION_ACTIVATION_REQUEST_TTL_SECONDS:-1800}
ONEC_ADAPTER_JOB_TIMEOUT_SECONDS: ${ONEC_ADAPTER_JOB_TIMEOUT_SECONDS:-240}
ONEC_ADAPTER_FULL_TIMEOUT_SECONDS: ${ONEC_ADAPTER_FULL_TIMEOUT_SECONDS:-600}
ONEC_ADAPTER_SECTION_TIMEOUT_SECONDS: ${ONEC_ADAPTER_SECTION_TIMEOUT_SECONDS:-180}
ONEC_ADAPTER_JOB_PROCESS_ISOLATION: ${ONEC_ADAPTER_JOB_PROCESS_ISOLATION:-true}
ONEC_ADAPTER_JOB_MEMORY_LIMIT_MB: ${ONEC_ADAPTER_JOB_MEMORY_LIMIT_MB:-0}
ONEC_ADAPTER_JOB_CPU_LIMIT_SECONDS: ${ONEC_ADAPTER_JOB_CPU_LIMIT_SECONDS:-0}
ONEC_ADAPTER_DEBUG_DIAGNOSTICS: ${ONEC_ADAPTER_DEBUG_DIAGNOSTICS:-false}
ONEC_INFOBASE_USER_ADMIN_BASES_JSON: ${ONEC_INFOBASE_USER_ADMIN_BASES_JSON:-}
ONEC_INFOBASE_USER_ADMIN_BASES_JSON_FILE: ${ONEC_INFOBASE_USER_ADMIN_BASES_JSON_FILE:-/data/onec-infobase-user-admin.json}
ONEC_INFOBASE_USER_ADMIN_TOKEN_UPO_TEST: ${ONEC_INFOBASE_USER_ADMIN_TOKEN_UPO_TEST:-}
ONEC_INFOBASE_USER_ADMIN_ALLOW_UNAUTHENTICATED: ${ONEC_INFOBASE_USER_ADMIN_ALLOW_UNAUTHENTICATED:-false}
ONEC_REPOSITORY_RUNNER_TOKEN: ${ONEC_REPOSITORY_RUNNER_TOKEN:-}
ONEC_ADAPTER_ENABLE_EXTERNAL_1C: ${ONEC_ADAPTER_ENABLE_EXTERNAL_1C:-false}
ONEC_REPOSITORY_REQUEST_TTL_SECONDS: ${ONEC_REPOSITORY_REQUEST_TTL_SECONDS:-86400}
ONEC_REPOSITORY_CONFIRMATION_TTL_SECONDS: ${ONEC_REPOSITORY_CONFIRMATION_TTL_SECONDS:-7200}
adapter-1c-audit:
image: ${ADAPTER_1C_IMAGE:-adapter-1c-rest:latest}
container_name: ${ADAPTER_1C_AUDIT_CONTAINER_NAME:-adapter-1c-audit}
restart: unless-stopped
depends_on:
- adapter-1c-rest
volumes:
- adapter-1c-data:/data
environment:
ONEC_ADAPTER_AUDIT_INTERVAL_SECONDS: ${ONEC_ADAPTER_AUDIT_INTERVAL_SECONDS:-900}
command: >-
sh -c 'mkdir -p /data/adapter-audit-reports;
while true; do python /app/analyze_audit.py --log /data/adapter-audit.jsonl > /data/adapter-audit-reports/latest.json.tmp
&& mv /data/adapter-audit-reports/latest.json.tmp /data/adapter-audit-reports/latest.json;
sleep "$${ONEC_ADAPTER_AUDIT_INTERVAL_SECONDS}"; done'
volumes:
adapter-1c-data:
@@ -0,0 +1,12 @@
ADAPTER_OBSERVER_IMAGE=adapter-observer:latest
ADAPTER_OBSERVER_CONTAINER_NAME=adapter-observer
ADAPTER_OBSERVER_HOST_PORT=8031
# Only needed for a copied deployment package; repository deployment uses default.
# ADAPTER_OBSERVER_BUILD_CONTEXT=./observer
# Existing adapter volume: mount is read-only in this service.
ADAPTER_OBSERVER_AUDIT_VOLUME=adapter-1c_adapter-1c-data
ADAPTER_OBSERVER_MCP_AUDIT_VOLUME=adapter-1c-mcp_adapter-1c-mcp-data
ADAPTER_OBSERVER_ADAPTER_NETWORK=adapter-1c_default
ONEC_OBSERVER_ADAPTER_URL=http://adapter-1c-rest:8011
ONEC_OBSERVER_COVERAGE_BASE_ID=upo_test
ONEC_OBSERVER_COVERAGE_INTERVAL_SECONDS=900
@@ -0,0 +1,42 @@
name: adapter-observer
services:
adapter-observer:
build:
context: ${ADAPTER_OBSERVER_BUILD_CONTEXT:-../../../../plugins/1c/observer}
dockerfile: Dockerfile
image: ${ADAPTER_OBSERVER_IMAGE:-adapter-observer:latest}
container_name: ${ADAPTER_OBSERVER_CONTAINER_NAME:-adapter-observer}
restart: unless-stopped
ports:
- "${ADAPTER_OBSERVER_HOST_PORT:-8031}:8031"
volumes:
- adapter-1c-data:/audit:ro
- adapter-1c-mcp-data:/mcp-audit:ro
- adapter-observer-state:/state
environment:
ONEC_OBSERVER_HOST: 0.0.0.0
ONEC_OBSERVER_PORT: 8031
ONEC_OBSERVER_AUDIT_DIR: /audit
ONEC_OBSERVER_MCP_AUDIT_DIR: /mcp-audit
ONEC_OBSERVER_STATE_DIR: /state
ONEC_OBSERVER_ADAPTER_URL: ${ONEC_OBSERVER_ADAPTER_URL:-http://adapter-1c-rest:8011}
ONEC_OBSERVER_COVERAGE_BASE_ID: ${ONEC_OBSERVER_COVERAGE_BASE_ID:-upo_test}
ONEC_OBSERVER_COVERAGE_INTERVAL_SECONDS: ${ONEC_OBSERVER_COVERAGE_INTERVAL_SECONDS:-900}
networks:
- default
- adapter-1c
volumes:
adapter-1c-data:
external: true
name: ${ADAPTER_OBSERVER_AUDIT_VOLUME:-adapter-1c_adapter-1c-data}
adapter-1c-mcp-data:
external: true
name: ${ADAPTER_OBSERVER_MCP_AUDIT_VOLUME:-adapter-1c-mcp_adapter-1c-mcp-data}
adapter-observer-state:
networks:
adapter-1c:
external: true
name: ${ADAPTER_OBSERVER_ADAPTER_NETWORK:-adapter-1c_default}