Files
scud_ai/scripts/init_tool_registry.py

105 lines
4.1 KiB
Python

"""
Скрипт инициализации таблицы tool_action_registry в SQLite БД.
"""
import os
import sys
import json
import sqlite3
BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
DB_PATH = os.path.join(BASE_DIR, "data", "scud_orion_ai.db")
def init_tool_action_registry():
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
# 1. Создаем таблицу
cursor.execute("""
CREATE TABLE IF NOT EXISTS tool_action_registry (
id INTEGER PRIMARY KEY AUTOINCREMENT,
tool_name TEXT UNIQUE NOT NULL,
category TEXT DEFAULT 'general',
bypass_llm INTEGER DEFAULT 1,
success_template TEXT NOT NULL,
follow_up_question TEXT,
action_type TEXT DEFAULT 'BUTTONS',
buttons_json TEXT,
is_active INTEGER DEFAULT 1,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
""")
# 2. Начальное наполнение базовыми сценариями
seed_tools = [
(
"db_confirm_prompt_preview",
"prompt",
1,
"✅ Системный промпт успешно сохранен и применен в базе данных.",
"Желаете продолжить работу с системным промптом?",
"FOLLOW_UP_ACTION",
json.dumps([
{"label": "Показать промпт", "value": "покажи системный промпт"},
{"label": "Готово", "value": "нет, спасибо"}
], ensure_ascii=False)
),
(
"db_cancel_prompt_preview",
"prompt",
1,
"❌ Изменения системного промпта отменены.",
"Желаете продолжить работу с системным промптом?",
"FOLLOW_UP_ACTION",
json.dumps([
{"label": "Показать промпт", "value": "покажи системный промпт"},
{"label": "Готово", "value": "нет, спасибо"}
], ensure_ascii=False)
),
(
"db_delete_task",
"tasks",
1,
"🗑 Задача успешно удалена из вашего реестра.",
"Хотите посмотреть обновленный список задач?",
"FOLLOW_UP_ACTION",
json.dumps([
{"label": "Показать задачи", "value": "покажи список задач"},
{"label": "Готово", "value": "нет"}
], ensure_ascii=False)
),
(
"db_delete_snapshots",
"snapshots",
1,
"🗑 Выбранные снапшоты успешно удалены из базы данных.",
"Вывести актуальный список снапшотов?",
"FOLLOW_UP_ACTION",
json.dumps([
{"label": "Показать снапшоты", "value": "покажи список снапшотов"},
{"label": "Готово", "value": "нет"}
], ensure_ascii=False)
)
]
for item in seed_tools:
cursor.execute("""
INSERT INTO tool_action_registry (
tool_name, category, bypass_llm, success_template, follow_up_question, action_type, buttons_json
) VALUES (?, ?, ?, ?, ?, ?, ?)
ON CONFLICT(tool_name) DO UPDATE SET
category = excluded.category,
bypass_llm = excluded.bypass_llm,
success_template = excluded.success_template,
follow_up_question = excluded.follow_up_question,
action_type = excluded.action_type,
buttons_json = excluded.buttons_json,
updated_at = CURRENT_TIMESTAMP
""", item)
conn.commit()
conn.close()
print("[✓] Таблица tool_action_registry успешно создана и наполнена!")
if __name__ == "__main__":
init_tool_action_registry()