omni-version-manager

Управление локальными сервисами OmniRoute

diegosouzapw/OmniRouteАвторский скилл
75 094звёзд10 851форковУ всего репозитория

Что получите

Сервис в запрошенном состоянии либо сведения о его работе для диагностики.

Что передать

Название сервиса, нужное действие и адрес локального OmniRoute.

Автопроверка файлов

Проверен состав файлов. Запуск не тестировался. Что проверено

Оценки пользователей

Загрузка оценок…
Ваш опыт
Обсудить →

Как использовать

Помогает пользователям OmniRoute устанавливать, запускать и обновлять встроенные сервисы 9Router, CLIProxyAPI, Mux, Bifrost и Dario. Подходит также для просмотра состояния, журналов и настройки автоматического запуска.

  1. Укажите, нужно ли установить сервис, изменить его состояние или разобраться в его работе.
  2. Для диагностики запросите текущее состояние и журнал; для настройки выберите запуск, остановку, перезапуск или обновление.
  3. При необходимости включите автоматический запуск при следующем старте OmniRoute.

Условия работы

  • Управление сервисами и чтение журналов доступны только с того же компьютера через локальное соединение.
  • Запросы требуют действительного токена Bearer или cookie сессии; для локальной разработки источник допускает отключение требования ключа через REQUIRE_API_KEY=false.
  • Обновление останавливает работающий процесс. Для добавления аккаунта через вход Dario оператор подтверждает доступ в собственном аккаунте Claude и передаёт показанный код.

Пример запроса после установки

Проверь состояние локального CLIProxyAPI в OmniRoute, покажи последние сообщения журнала и включи автоматический запуск сервиса при следующем старте OmniRoute.

Пример составлен по инструкции автора; результат запуска не проверялся.

Основание: инструкция закреплённой версии

Для установки

Node.js, npm и Git для команды выше. Подключения и инструменты для работы скилла настраиваются отдельно.

Совместимые агенты

Совместимость указана для инструкций. Запуск в каждом приложении не тестировался; для веб-чата способ подключения может отличаться.

Файлы скилла

GitHub
Читать инструкцию SKILL.md

Исходный текст закреплённой версии.

---
name: omni-version-manager
description: Install, start, stop, restart, and update embedded services (9Router, CLIProxyAPI). Monitor service status, retrieve logs, and configure auto-start for local-only service endpoints.
---
<!-- generated by src/lib/agentSkills/generator.ts; manual edits will be overwritten -->

## Overview

Install, start, stop, restart, and update embedded services (9Router, CLIProxyAPI). Monitor service status, retrieve logs, and configure auto-start for local-only service endpoints.

## Authentication

All requests require a valid Bearer token or session cookie. Obtain a token via `POST /api/auth/login` or configure `REQUIRE_API_KEY=false` for local development.

## Endpoints

### POST /api/services/9router/install

Install 9Router from npm

Installs the `9router` npm package under DATA_DIR/services/9router/. Uses execFile (no shell interpolation — hard rule #13). **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/9router/install \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/9router/start

Start 9Router

Spawns the 9Router process. Idempotent if already running. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/9router/start \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/9router/stop

Stop 9Router

Gracefully stops 9Router (SIGTERM → 15 s → SIGKILL). Idempotent. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/9router/stop \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/9router/restart

Restart 9Router

Equivalent to stop() then start() under the operation lock. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/9router/restart \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/9router/update

Update 9Router to a newer npm version

Stops the service (if running), installs the newer npm version, then restarts. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/9router/update \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/9router/rotate-key

Rotate the 9Router API key

Generates a new API key, encrypts it at-rest, and restarts the service to apply it. The plaintext key is never returned. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/9router/rotate-key \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### GET /api/services/9router/status

Get 9Router status

Returns combined live supervisor state and DB metadata. **LOCAL_ONLY** — loopback only.

```bash
curl https://localhost:20128/api/services/9router/status \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### POST /api/services/9router/auto-start

Toggle 9Router auto-start

When enabled, 9Router starts automatically on the next OmniRoute boot. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/9router/auto-start \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/9router/auto-restart-adopted

Toggle 9Router auto-restart-when-adopted

When enabled, an externally-adopted (not OmniRoute-spawned) 9Router process is restarted under OmniRoute's own supervisor on the next health-check cycle instead of being left as adopted-only. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/9router/auto-restart-adopted \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/cliproxy/install

Install CLIProxyAPI from npm

Installs the CLIProxyAPI package under DATA_DIR/services/cliproxy/. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/cliproxy/install \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/cliproxy/start

Start CLIProxyAPI

Spawns the CLIProxyAPI process. Idempotent if already running. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/cliproxy/start \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/cliproxy/stop

Stop CLIProxyAPI

Gracefully stops CLIProxyAPI. Idempotent. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/cliproxy/stop \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/cliproxy/restart

Restart CLIProxyAPI

stop() then start() under the operation lock. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/cliproxy/restart \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/cliproxy/update

Update CLIProxyAPI to a newer npm version

Stops, installs newer version, restarts. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/cliproxy/update \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### GET /api/services/cliproxy/status

Get CLIProxyAPI status

Returns live supervisor state and DB metadata (no apiKeyMasked — CLIProxyAPI does not use an injected API key). **LOCAL_ONLY** — loopback only.

```bash
curl https://localhost:20128/api/services/cliproxy/status \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### POST /api/services/cliproxy/auto-start

Toggle CLIProxyAPI auto-start

When enabled, CLIProxyAPI starts automatically on the next OmniRoute boot. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/cliproxy/auto-start \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/cliproxy/auto-restart-adopted

Toggle CLIProxyAPI auto-restart-when-adopted

When enabled, an externally-adopted (not OmniRoute-spawned) CLIProxyAPI process is restarted under OmniRoute's own supervisor on the next health-check cycle instead of being left as adopted-only. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/cliproxy/auto-restart-adopted \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/mux/install

Install Mux from npm

Installs the `mux` npm package (coder/mux — local agent-orchestration daemon) under DATA_DIR/services/mux/. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/mux/install \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/mux/start

Start Mux

Spawns `mux server --host 127.0.0.1 --port <port>`. Idempotent if already running. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/mux/start \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/mux/stop

Stop Mux

Gracefully stops Mux. Idempotent. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/mux/stop \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/mux/restart

Restart Mux

stop() then start() under the operation lock. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/mux/restart \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/mux/update

Update Mux to a newer npm version

Stops, installs newer version, restarts. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/mux/update \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### GET /api/services/mux/status

Get Mux status

Returns live supervisor state and DB metadata. **LOCAL_ONLY** — loopback only.

```bash
curl https://localhost:20128/api/services/mux/status \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### POST /api/services/mux/auto-start

Toggle Mux auto-start

When enabled, Mux starts automatically on the next OmniRoute boot. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/mux/auto-start \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/mux/auto-restart-adopted

Toggle Mux auto-restart-when-adopted

When enabled, an externally-adopted (not OmniRoute-spawned) Mux process is restarted under OmniRoute's own supervisor on the next health-check cycle instead of being left as adopted-only. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/mux/auto-restart-adopted \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/bifrost/install

Install Bifrost

Installs the `@maximhq/bifrost` npm package under DATA_DIR/services/bifrost/. The package downloads the Go binary on first run. Accepts an optional `version` field (semver or `latest`). **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/bifrost/install \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/bifrost/start

Start Bifrost

Starts the supervised Bifrost process. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/bifrost/start \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/bifrost/stop

Stop Bifrost

Stops the supervised Bifrost process. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/bifrost/stop \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/bifrost/restart

Restart Bifrost

Restarts the supervised Bifrost process. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/bifrost/restart \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/bifrost/update

Update Bifrost

Updates Bifrost to the latest npm version. Stops the running process, installs the new version, and restarts if it was previously running. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/bifrost/update \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### GET /api/services/bifrost/status

Get Bifrost status

Returns live and DB status for the supervised Bifrost service. **LOCAL_ONLY** — loopback only.

```bash
curl https://localhost:20128/api/services/bifrost/status \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### POST /api/services/bifrost/auto-start

Toggle Bifrost auto-start

When enabled, Bifrost starts automatically on the next OmniRoute boot. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/bifrost/auto-start \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/bifrost/auto-restart-adopted

Toggle Bifrost auto-restart-when-adopted

When enabled, an externally-adopted (not OmniRoute-spawned) Bifrost process is restarted under OmniRoute's own supervisor on the next health-check cycle instead of being left as adopted-only. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/bifrost/auto-restart-adopted \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/dario/install

Install Dario from npm

Installs the `@askalf/dario` npm package (Claude-account-pool proxy) under DATA_DIR/services/dario/. Uses execFile (no shell interpolation — hard rule #13). **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/dario/install \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/dario/start

Start Dario

Spawns the Dario process. Idempotent if already running. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/dario/start \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/dario/stop

Stop Dario

Gracefully stops Dario. Idempotent — returns a stopped status even if no supervisor is currently tracking the process. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/dario/stop \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/dario/restart

Restart Dario

Equivalent to stop() then start() under the operation lock. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/dario/restart \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/dario/update

Update Dario to a newer npm version

Stops the service (if running), installs the newer npm version, then restarts it if it was running before the update. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/dario/update \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### GET /api/services/dario/status

Get Dario status

Returns combined live supervisor state and DB metadata, including the auto-start / auto-restart-adopted flags and whether an update is available. **LOCAL_ONLY** — loopback only.

```bash
curl https://localhost:20128/api/services/dario/status \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### POST /api/services/dario/auto-start

Toggle Dario auto-start

When enabled, Dario starts automatically on the next OmniRoute boot. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/dario/auto-start \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/dario/auto-restart-adopted

Toggle Dario auto-restart-when-adopted

When enabled, an externally-adopted (not OmniRoute-spawned) Dario process is restarted under OmniRoute's own supervisor on the next health-check cycle instead of being left as adopted-only. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/dario/auto-restart-adopted \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/dario/admin/login-start

Start a Dario account-pool login (device-code style)

Forwards to the running Dario instance's `POST /admin/login/start` using the stored admin token. The operator opens the returned `authorize_url`, approves in their own Claude account, then posts the displayed code to `/admin/login-complete`. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/dario/admin/login-start \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/services/dario/admin/login-complete

Complete a Dario account-pool login

Forwards to the running Dario instance's `POST /admin/login/complete`. On success the account becomes routable immediately (Dario hot-reloads its pool). **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/dario/admin/login-complete \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### GET /api/services/dario/admin/accounts

List Dario account-pool accounts

Forwards to the running Dario instance's `GET /admin/accounts`. **LOCAL_ONLY** — loopback only.

```bash
curl https://localhost:20128/api/services/dario/admin/accounts \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### DELETE /api/services/dario/admin/accounts

Remove a Dario account-pool account

Forwards to the running Dario instance's `DELETE /admin/accounts/<alias>`. The alias is taken from a `?alias=` query param or a `{ alias }` JSON body. **LOCAL_ONLY** — loopback only.

```bash
curl -X DELETE https://localhost:20128/api/services/dario/admin/accounts \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### GET /api/services/dario/admin/import-from-omniroute

List OmniRoute claude connections eligible for Dario import

Returns eligible OmniRoute `claude` OAuth provider connections (metadata only — id/name/email/org tier, never tokens) so the UI can offer a picker when more than one exists. **LOCAL_ONLY** — loopback only.

```bash
curl https://localhost:20128/api/services/dario/admin/import-from-omniroute \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### POST /api/services/dario/admin/import-from-omniroute

Import an OmniRoute claude connection's OAuth tokens into Dario

Writes the source connection's access/refresh token pair directly into Dario's own account-file store (`~/.dario/accounts/<alias>.json`), reusing the shared Claude Code OAuth client_id, then restarts the Dario supervisor so it picks up the new account. **LOCAL_ONLY** — loopback only.

```bash
curl -X POST https://localhost:20128/api/services/dario/admin/import-from-omniroute \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### GET /api/services/{name}/logs

Stream service logs via SSE

Returns a Server-Sent Events stream from the service's in-memory ring buffer (5 MB, circular). Sends a `snapshot` event with historical lines first, then live `log` events, plus a `heartbeat` every 15 s. **LOCAL_ONLY** — loopback only.

```bash
curl https://localhost:20128/api/services/{name}/logs \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### GET /api/services/9router/models

GET services › 9router › models

```bash
curl https://localhost:20128/api/services/9router/models \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### POST /api/services/9router/provider-expose

POST services › 9router › provider expose

```bash
curl -X POST https://localhost:20128/api/services/9router/provider-expose \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### GET /api/services/cliproxy/accounts

GET services › cliproxy › accounts

```bash
curl https://localhost:20128/api/services/cliproxy/accounts \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### POST /api/services/cliproxy/provider-expose

POST services › cliproxy › provider expose

```bash
curl -X POST https://localhost:20128/api/services/cliproxy/provider-expose \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

## Payloads

See the full OpenAPI specification at `GET /api/openapi/spec` or `docs/openapi.yaml` for detailed request/response schemas.

Проверка и особенности

Автоматическая проверка источника и файлов

Автоматически сверены публичный репозиторий, лицензия, YAML-заголовок SKILL.md, состав папки и Git-хеш каждого файла. Исполняемые файлы и срабатывания статических правил исключены из этой партии. Ручной аудит всех инструкций и проверка работы не проводились; эта проверка не гарантирует безопасность. Команда закреплена на проверенном коммите.

Интерес к репозиторию оцениваем по звёздам и форкам GitHub. Это показатели всего репозитория, а не числа установок отдельного скилла.

Есть ссылки на внешние инструкции или инструменты: их содержимое и доступность могут изменяться отдельно от скилла.

Проверка состава
16.09.2026
Проверенная версия
a928ea876206
Файлы с кодом
Не указаны в данных проверки
Изменения на GitHub
Нужна повторная проверкаПоследняя проверка: 11.10.2026
Как мы проверяем скиллы

Репозиторий и лицензия

diegosouzapw/OmniRoute
75 094 звёзд10 851 форков

Это показатели всего репозитория, а не установки скилла. Снимок требует обновления.

Последняя активность GitHub
11.10.2026
Лицензия
MIT
Добавлен в каталог
16.09.2026
Полный текст лицензии
MIT License

Copyright (c) 2026 diegosouzapw

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Ещё в этой категории

Все в категории

Обсуждение

Правила

Пользовались этим скиллом? Делитесь опытом без регистрации. Все комментарии проверяет модератор.

Мои комментарии