O.G.A.S. English

Методы служб платформы

Методы служб платформы: настройки, языки, наблюдение и журнал, источники, вход для программ, помощник и профиль.

Введение

Документ — часть договора Обмен с ядром: методы функций платформы, которыми пользуются мастерская и другие части. Уровни настроек и языки — Настройки, сведения, которые платформа записывает о себе, — Устройство платформы, 3.8. Коды отказов — Коды ошибок.

1 Настройки

Файлы уровней принадлежат функции настроек (Настройки, раздел 1). Уровень session — только память функции, не файл.

2 Локализация

При знакомстве (handshake) функция может объявить locales — относительные папки (functions/<id>/locales, modules/<id>/locales). Ядро отдаёт их запросом core.locales. Функция i18n не обходит папки соседей сама.

3 Наблюдаемость

4 Источники

Функция sources (Мастерская, 5.6; угрозы — Защита, 3.14). В сеть она ходит программой curl системы, с прокси и сертификатами, которые видит система, и только когда её просят. Витрину ogas.space она читает только вместе с подписью ключом сайта (Форматы файлов, 21.5): подпись не сходится или её нет — отказ source_signature_bad у sources.search, sources.item и sources.platform.

5 Вход для программ человека

Функция gate — вход, через который программа человека (сценарий OGAS SDK, редактор) говорит с платформой. Вход закрыт, пока настройка gate.door не равна open; закрытие рвёт все соединения через него. Функция слушает TCP только на 127.0.0.1, порт — настройка gate.port (0 — свободный), сразу — не больше gate.clients программ. Где вход и его ключ, функция пишет в документ data/gate.json (ogas.gate/1): { format, port, key }, port — null, пока вход закрыт. Ключ — 32 случайных байта в шестнадцатеричном виде; он живёт, пока его не заменят.

Первое сообщение соединения — gate.hello { key, client? }: верный ключ — ответ { status: "ready" }, неверный или другое первое сообщение — отказ gate_unauthorized и закрытое соединение; молчание дольше 10 секунд закрывает соединение; программ уже столько, сколько пускает вход, — gate_busy. Дальше запросы программы идут ядру, как запросы окна, а события ядра приходят ей уведомлением event. Нельзя — отказ gate_not_allowed: методы ядра, кроме core.status, core.health и core.event.subscribe; методы gate.* и методы функций окна — тех, что в core.status названы interactive; settings.set ключа gate.*; settings.reset без ключа или ключа gate.*.

Методы функции для окна:

6 Помощник

Функция assistant — помощник мастерской: человек пишет задачу словами, а сеть, которую он подключил, собирает программы и модули инструментами платформы, проверяет и пробует их и говорит, что сделала. Сеть — модуль с "role": "assistant_network" (вход request, выход reply); готовые сети приходят с OGAS SDK в sdk/networks, ключ сети лежит в .env её модуля и в функцию помощника не попадает.

Доступ задачи — draft или extended. С draft помощник меняет только черновики и модули, которые сам создал (их список — data/assistant/own.json, ogas.assistant-own/1), и не включает программы. С extended — любые программы и модули человека, кроме сетей помощника, и включает программы. Ни в каком доступе у помощника нет инструментов, которые читают секреты, меняют настройки или удаляют.

Задача идёт в своём потоке: сеть отвечает, функция выполняет инструменты, которые она позвала, и отдаёт ей их ответы, пока сеть не ответит без инструментов. Задача останавливается, когда израсходовала assistant.max_steps обращений к сети или assistant.task_budget токенов, и ждёт assistant.task.go_on. Задача пишется после каждого шага в data/assistant/tasks/<task_id>.json (ogas.assistant-task/1) и говорит о себе событием assistant.task.changed.

7 Профиль

Функция profile — профиль человека на ogas.space, его посылки, отправки и письма, и что сайт говорит о людях: доска обращений, отзывы, известные ошибки, профили. Что от чего защищает — Защита, раздел 8; документы — Форматы файлов, раздел 21. В сеть функция ходит программой curl системы: отправляет — только по команде человека, читает — по команде или при запуске, если включена настройка profile.check_on_start. Всё, что она читает с сайта, принимается только с верной подписью ключом сайта; иначе — site_signature_bad.

Главный ключ приходит в вызов кодом (code) или файлом ключа (file — путь, password?) и забывается, как только вызов кончился.