[!ABSTRACT] Epigraf
"Narzędzia LM Studio do zarządzania tabelami — tworzenie, listowanie, usuwanie i odczyt schematu. Operuje na plikach CSV i schema.json."
Pole Wartość Nazwa Table Tools Moduł src/tools/table.tool.tsWersja 1.0.0 Status Draft Zależny od Index Manager, Schema Manager, CSV Engine Używany przez LM Studio (model LLM wywołuje narzędzia)
§2. 🎯 Cel i Odpowiedzialność
§2.1 Cel
Umożliwienie modelowi LLM zarządzania tabelami (plikami CSV) wewnątrz baz danych — tworzenie, usuwanie, podgląd struktury.
§2.2 Odpowiedzialności
Tworzenie tabel: plik CSV (nagłówki) + plik schema.json
Listowanie tabel w bazie
Usuwanie tabel (CSV + schema.json)
Zwracanie definicji kolumn (schema)
Walidacja ColumnDef przed utworzeniem schematu
§3. 🛠️ Specyfikacja API/Funkcji
Pole Wartość Nazwa create_tableOpis Tworzy nową tabelę (plik .csv + schema.json) w bazie Wywołuje CSV Engine.writeCSV, Schema.saveSchema, IndexManager.updateIndex
Parametry:
Parametr Typ Wymagany Opis databasestring✅ Nazwa bazy tablestring✅ Nazwa tabeli columnsColumnDef[]✅ Definicje kolumn descriptionstring❌ Opis tabeli
Zwraca:
Pole Typ Opis successbooleanCzy operacja się powiodła databasestringNazwa bazy tablestringNazwa tabeli columnCountnumberLiczba kolumn
Błędy: DB_NOT_FOUND, DUPLICATE_TABLE, INVALID_COLUMN_DEF
Pole Wartość Nazwa list_tablesOpis Listuje tabele w bazie danych Wywołuje IndexManager.getTables(database)
Parametry:
Parametr Typ Wymagany Opis databasestringâś… Nazwa bazy
Zwraca:
Pole Typ Opis databasestringNazwa bazy tablesTableInfo[]Lista tabel totalnumberLiczba tabel
Błędy: DB_NOT_FOUND
Pole Wartość Nazwa delete_tableOpis Usuwa tabelę (CSV + schema.json + update indeksu) Wywołuje fs.unlink (CSV + schema), IndexManager.updateIndex
Parametry:
Parametr Typ Wymagany Opis databasestringâś… Nazwa bazy tablestringâś… Nazwa tabeli confirmbooleanâś… Potwierdzenie
Zwraca:
Pole Typ Opis successbooleanCzy operacja się powiodła deletedFilesstring[]Lista usuniętych plików
Błędy: DB_NOT_FOUND, TABLE_NOT_FOUND
Pole Wartość Nazwa get_table_schemaOpis Zwraca definicję kolumn tabeli Wywołuje SchemaManager.loadSchema(path)
Parametry:
Parametr Typ Wymagany Opis databasestringâś… Nazwa bazy tablestringâś… Nazwa tabeli
Zwraca:
Pole Typ Opis databasestringNazwa bazy tablestringNazwa tabeli columnsColumnDef[]Definicje kolumn createdAtstringData utworzenia descriptionstringOpis tabeli
Błędy: TABLE_NOT_FOUND, SCHEMA_NOT_FOUND
§4. 🏗️ Struktura Danych
§5. 🔗 Zależności
§5.1 Wewnętrzne
Komponent Funkcja UĹĽycie engine/index-managergetTables, updateIndex, databaseExists, tableExistsWalidacja, indeksowanie engine/schemasaveSchema, loadSchemaZarzÄ…dzanie schematem engine/csv-enginewriteCSV, readCSVHeadersOperacje na pliku CSV
§5.2 Zewnętrzne
Biblioteka Wersja Użycie @lmstudio/sdk^1.x Rejestracja narzędzi fs/promises(Node.js) Usuwanie plików
§6. 💻 Przykładowe Użycie
§7. Stany i Cykl Życia
§8. Obsługa Błędów
Scenariusz Kod Komunikat Baza nie istnieje DB_NOT_FOUND"Database '{database}' not found"Tabela już istnieje DUPLICATE_TABLE"Table '{table}' already exists in '{database}'"Tabela nie istnieje TABLE_NOT_FOUND"Table '{table}' not found in '{database}'"Nieprawidłowa definicja kolumny INVALID_COLUMN_DEF"Column definition error: {details}"Brak potwierdzenia CONFIRMATION_REQUIRED"Set confirm=true to delete table"
§9. 🧪 Testy
Jednostkowe
Given When Then Poprawne parametry istniejÄ…ca baza createTableTool.handler(...)Tworzy CSV + schema, update indeksu Baza nie istnieje createTableTool.handler(...)Zwraca DB_NOT_FOUND Tabela juĹĽ istnieje createTableTool.handler(...)Zwraca DUPLICATE_TABLE IstniejÄ…ca baza listTablesTool.handler(...)Zwraca listÄ™ tabel NieistniejÄ…ca tabela getTableSchemaTool.handler(...)Zwraca TABLE_NOT_FOUND Brak confirm deleteTableTool.handler(...)Zwraca CONFIRMATION_REQUIRED
Mocki / Fixtures
Mock IndexManager, Schema, CSV Engine
Tymczasowy katalog z bazÄ… testowÄ…
§10. Powiązane Dokumenty
TDD : ../../TDD.md — §5.2 Table Tools
Database Tools : database-tools.md — nadrzędne zarządzanie bazami
Schema Manager : schema-manager.md — definicje kolumn
CSV Engine : — zapis CSV przy create_table