Update plan
This commit is contained in:
parent
1c1b9c1510
commit
1f876a00c8
19
plan/done/menubar.md
Normal file
19
plan/done/menubar.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
Ganti shortcut key dan buatkan menubar untuk fitur TUI berikut:
|
||||||
|
- Session > New Session : Ctrl+N
|
||||||
|
- Session > Open Session : Ctrl+O
|
||||||
|
- Session > Rename Session : F2
|
||||||
|
- Session > Exit : Ctrl+C
|
||||||
|
- Agent > Send Prompt : Ctrl+Enter (Hanya disaat ready)
|
||||||
|
- Agent > Cancel Inference : Esc (Hanya disaat progess)
|
||||||
|
- Model > Select Model : F4
|
||||||
|
- Workspace > Change Workspace : F6
|
||||||
|
|
||||||
|
F10 untuk fokus/aktifkan menu bar.
|
||||||
|
|
||||||
|
Mnemonic:
|
||||||
|
Alt+S → [S]ession
|
||||||
|
Alt+A → [A]gent
|
||||||
|
Alt+M → [M]odel
|
||||||
|
Alt+W → [W]orkspace
|
||||||
|
|
||||||
|
Pastikan kode-nya modular, sehingga mudah di baca dan maintenance oleh developer.
|
||||||
44
plan/moop.md
Normal file
44
plan/moop.md
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
Fitur moop (Model Option) untuk TUI: Pindahkan penyimpanan model dari config yaml ke database sqlite.
|
||||||
|
db_path default "~/.config/hendrik/moop.sqlite3" dan bisa di ubah di yaml. Jika db moop tidak ada di db_path, maka create baru.
|
||||||
|
referensi query ada di `plan/moop.sql` dan referensi diagram plantuml ada di `plan/moop.puml`.
|
||||||
|
List model yang sudah ada di default-config.yaml kalau mau di bersihin silahkan aja. Default list model-nya kosong aja.
|
||||||
|
Tipe-nya untuk saat ini baru `llm`, `embedding`, `imagegen`, `imagevision` aja.
|
||||||
|
|
||||||
|
Apa aja yang di migrasikan dari config yaml ke sqlite:
|
||||||
|
- LLM
|
||||||
|
- Image Vision
|
||||||
|
- Image Generate
|
||||||
|
- RAG (Embedding)
|
||||||
|
|
||||||
|
Use case:
|
||||||
|
- Bisa setting Providers, Model name, dan API Keys yang di bundle dalam 1 set
|
||||||
|
- Bisa milih default model set pada tipe tertentu. sekarang baru ada `llm`, `embedding`, `imagegen`, `imagevision` aja. Kalau default dari type tersebut kosong, masukin set+type pertama kali artinya otomatis default, supaya ga kosong.
|
||||||
|
- Nampilin opsi model set yang ingin dipakai untuk switch model yang dipakai AI Agent
|
||||||
|
|
||||||
|
Tujuan utama:
|
||||||
|
- Bisa switch alternative API Key, Provider secara otomatis kalau gagal connect (bergantung pada priority) berdasarkan model set yang di gunakan.
|
||||||
|
|
||||||
|
Kapan itu switch?
|
||||||
|
- Koneksi gagal
|
||||||
|
- timeout
|
||||||
|
- Server error
|
||||||
|
- rate limit
|
||||||
|
- auth gagal
|
||||||
|
- 404
|
||||||
|
|
||||||
|
Apa prioritas auto switch-nya di model set:
|
||||||
|
- Key. setelah semua key gabisa baru deh:
|
||||||
|
- Model provider-nya
|
||||||
|
|
||||||
|
Aturan-aturan lainnya:
|
||||||
|
- Pengelolaan setting add edit delete untuk Providers dan Opsi model set-nya ada di TUI
|
||||||
|
- Service (XMPP, dan Telegram) pakai Default yang di sqlite itu.
|
||||||
|
- 1 set bisa multi-type (apalagi jika model-nya memungkinkan dan support banyak type)
|
||||||
|
- jika error 401/403 maka coba key berikutnya dulu (rotasi key)
|
||||||
|
- jika error lain (koneksi/timeout/5xx/429/404) maka langsung pindah ke model/provider berikutnya. skip sisa key, biar tidak timeout berulang di api yang sama.
|
||||||
|
|
||||||
|
Karena imagevision bisa termasuk di llm umum atau bisa tidak termasuk di llm umum, ekspektasi alur untuk imagevision sebagai berikut:
|
||||||
|
- pas panggil tools vision (imagevision model)
|
||||||
|
- result dapat dari tools tanpa fallback dari model imagevision
|
||||||
|
- switch ke model llm umum
|
||||||
|
- llm memberi fallback
|
||||||
73
plan/moop.sql
Normal file
73
plan/moop.sql
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
PRAGMA foreign_keys = ON;
|
||||||
|
|
||||||
|
BEGIN;
|
||||||
|
|
||||||
|
-- OPTION
|
||||||
|
|
||||||
|
CREATE TABLE moop_model_set (
|
||||||
|
id BLOB PRIMARY KEY NOT NULL,
|
||||||
|
name TEXT NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE moop_model_type (
|
||||||
|
id BLOB PRIMARY KEY NOT NULL,
|
||||||
|
type TEXT NOT NULL UNIQUE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE moop_model_set_type (
|
||||||
|
id BLOB PRIMARY KEY NOT NULL,
|
||||||
|
"set" BLOB NOT NULL,
|
||||||
|
type BLOB NOT NULL,
|
||||||
|
FOREIGN KEY ("set") REFERENCES moop_model_set(id) ON UPDATE CASCADE ON DELETE CASCADE,
|
||||||
|
FOREIGN KEY (type) REFERENCES moop_model_type(id) ON UPDATE CASCADE ON DELETE CASCADE,
|
||||||
|
UNIQUE ("set", type) -- Prevent duplicate entries
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE moop_model_type_default (
|
||||||
|
id BLOB PRIMARY KEY NOT NULL,
|
||||||
|
type BLOB NOT NULL UNIQUE,
|
||||||
|
set_type BLOB NOT NULL UNIQUE,
|
||||||
|
FOREIGN KEY (type) REFERENCES moop_model_type(id) ON UPDATE CASCADE ON DELETE CASCADE,
|
||||||
|
FOREIGN KEY (set_type) REFERENCES moop_model_set_type(id) ON UPDATE CASCADE ON DELETE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
-- PROVIDER
|
||||||
|
|
||||||
|
CREATE TABLE moop_api (
|
||||||
|
id BLOB PRIMARY KEY NOT NULL,
|
||||||
|
name TEXT NOT NULL,
|
||||||
|
baseurl TEXT NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE moop_key (
|
||||||
|
id BLOB PRIMARY KEY NOT NULL,
|
||||||
|
key TEXT NOT NULL,
|
||||||
|
priority INTEGER NULL,
|
||||||
|
api BLOB NOT NULL,
|
||||||
|
FOREIGN KEY (api) REFERENCES moop_api(id) ON UPDATE CASCADE ON DELETE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE moop_model (
|
||||||
|
id BLOB PRIMARY KEY NOT NULL,
|
||||||
|
api BLOB NOT NULL,
|
||||||
|
"set" BLOB NOT NULL,
|
||||||
|
model TEXT NOT NULL,
|
||||||
|
priority INTEGER NULL,
|
||||||
|
FOREIGN KEY (api) REFERENCES moop_api(id) ON UPDATE CASCADE ON DELETE CASCADE,
|
||||||
|
FOREIGN KEY ("set") REFERENCES moop_model_set(id) ON UPDATE CASCADE ON DELETE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
-- INDEXES
|
||||||
|
|
||||||
|
CREATE INDEX idx_moop_key_api ON moop_key(api);
|
||||||
|
CREATE INDEX idx_moop_key_api_priority ON moop_key(api, priority);
|
||||||
|
|
||||||
|
CREATE INDEX idx_moop_model_api ON moop_model(api);
|
||||||
|
CREATE INDEX idx_moop_model_set ON moop_model("set");
|
||||||
|
|
||||||
|
CREATE INDEX idx_moop_model_api_priority ON moop_model(api, priority);
|
||||||
|
|
||||||
|
CREATE INDEX idx_moop_model_set_type_set ON moop_model_set_type("set");
|
||||||
|
CREATE INDEX idx_moop_model_set_type_type ON moop_model_set_type(type);
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
@ -1,105 +0,0 @@
|
|||||||
PRAGMA foreign_keys = ON;
|
|
||||||
|
|
||||||
BEGIN;
|
|
||||||
|
|
||||||
-- OPTION
|
|
||||||
|
|
||||||
CREATE TABLE moop_model_set (
|
|
||||||
id BLOB PRIMARY KEY NOT NULL,
|
|
||||||
name TEXT NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE moop_model_type (
|
|
||||||
id BLOB PRIMARY KEY NOT NULL,
|
|
||||||
type TEXT NOT NULL UNIQUE
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE moop_model_set_type (
|
|
||||||
id BLOB PRIMARY KEY NOT NULL,
|
|
||||||
"set" BLOB NOT NULL,
|
|
||||||
type BLOB NOT NULL,
|
|
||||||
FOREIGN KEY ("set")
|
|
||||||
REFERENCES moop_model_set(id)
|
|
||||||
ON UPDATE CASCADE
|
|
||||||
ON DELETE CASCADE,
|
|
||||||
FOREIGN KEY (type)
|
|
||||||
REFERENCES moop_model_type(id)
|
|
||||||
ON UPDATE CASCADE
|
|
||||||
ON DELETE CASCADE,
|
|
||||||
UNIQUE ("set", type),
|
|
||||||
UNIQUE (id, type)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE moop_model_type_default (
|
|
||||||
id BLOB PRIMARY KEY NOT NULL,
|
|
||||||
type BLOB NOT NULL UNIQUE,
|
|
||||||
set_type BLOB NOT NULL UNIQUE,
|
|
||||||
FOREIGN KEY (type)
|
|
||||||
REFERENCES moop_model_type(id)
|
|
||||||
ON UPDATE CASCADE
|
|
||||||
ON DELETE CASCADE,
|
|
||||||
FOREIGN KEY (set_type, type)
|
|
||||||
REFERENCES moop_model_set_type(id, type)
|
|
||||||
ON UPDATE CASCADE
|
|
||||||
ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
|
|
||||||
-- PROVIDER
|
|
||||||
|
|
||||||
CREATE TABLE moop_api (
|
|
||||||
id BLOB PRIMARY KEY NOT NULL,
|
|
||||||
name TEXT NOT NULL,
|
|
||||||
baseurl TEXT NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE moop_key (
|
|
||||||
id BLOB PRIMARY KEY NOT NULL,
|
|
||||||
key TEXT NOT NULL,
|
|
||||||
priority INTEGER NULL,
|
|
||||||
api BLOB NOT NULL,
|
|
||||||
FOREIGN KEY (api)
|
|
||||||
REFERENCES moop_api(id)
|
|
||||||
ON UPDATE CASCADE
|
|
||||||
ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE moop_model (
|
|
||||||
id BLOB PRIMARY KEY NOT NULL,
|
|
||||||
api BLOB NOT NULL,
|
|
||||||
"set" BLOB NOT NULL,
|
|
||||||
model TEXT NOT NULL,
|
|
||||||
priority INTEGER NULL,
|
|
||||||
FOREIGN KEY (api)
|
|
||||||
REFERENCES moop_api(id)
|
|
||||||
ON UPDATE CASCADE
|
|
||||||
ON DELETE CASCADE,
|
|
||||||
FOREIGN KEY ("set")
|
|
||||||
REFERENCES moop_model_set(id)
|
|
||||||
ON UPDATE CASCADE
|
|
||||||
ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
|
|
||||||
-- INDEXES
|
|
||||||
|
|
||||||
CREATE INDEX idx_moop_key_api
|
|
||||||
ON moop_key(api);
|
|
||||||
|
|
||||||
CREATE INDEX idx_moop_key_api_priority
|
|
||||||
ON moop_key(api, priority);
|
|
||||||
|
|
||||||
CREATE INDEX idx_moop_model_api
|
|
||||||
ON moop_model(api);
|
|
||||||
|
|
||||||
CREATE INDEX idx_moop_model_set
|
|
||||||
ON moop_model("set");
|
|
||||||
|
|
||||||
CREATE INDEX idx_moop_model_api_priority
|
|
||||||
ON moop_model(api, priority);
|
|
||||||
|
|
||||||
CREATE INDEX idx_moop_model_set_type_set
|
|
||||||
ON moop_model_set_type("set");
|
|
||||||
|
|
||||||
CREATE INDEX idx_moop_model_set_type_type
|
|
||||||
ON moop_model_set_type(type);
|
|
||||||
|
|
||||||
COMMIT;
|
|
||||||
Loading…
Reference in New Issue
Block a user