own-rag-cli 0.0.1-snapshot → 0.0.2-snapshot
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -3
- package/bin/indexer_full.py +189 -43
- package/bin/mcp_server.py +163 -18
- package/bin/postinstall.sh +28 -0
- package/bin/rag-remove.sh +3 -0
- package/chroma_monitor.sh +92 -18
- package/package.json +1 -1
- package/rag-setup-macos.run +295 -71
- package/rag-setup.run +295 -73
package/chroma_monitor.sh
CHANGED
|
@@ -25,8 +25,10 @@ BOLD='\033[1m'; DIM='\033[2m'; NC='\033[0m'
|
|
|
25
25
|
# ---------------------------------------------------------------------------
|
|
26
26
|
# Configuração
|
|
27
27
|
# ---------------------------------------------------------------------------
|
|
28
|
+
CHROMA_SCHEME="http"
|
|
28
29
|
CHROMA_HOST="localhost"
|
|
29
30
|
CHROMA_PORT="8000"
|
|
31
|
+
OWN_RAG_CONFIG_FILE="${OWN_RAG_CLI_CONFIG_FILE:-${HOME}/.own-rag-cli.json}"
|
|
30
32
|
RAG_DB_DIR="${HOME}/.rag_db"
|
|
31
33
|
VENV_DIR="${HOME}/.rag_venv"
|
|
32
34
|
VENV_PYTHON="${VENV_DIR}/bin/python3"
|
|
@@ -219,6 +221,57 @@ log_info() { echo -e "${GREEN}[+]${NC} $*"; }
|
|
|
219
221
|
log_warn() { echo -e "${YELLOW}[!]${NC} $*"; }
|
|
220
222
|
log_error() { echo -e "${RED}[$(t err_prefix)]${NC} $*" >&2; }
|
|
221
223
|
|
|
224
|
+
load_chroma_endpoint_config() {
|
|
225
|
+
local parsed=""
|
|
226
|
+
if parsed="$(python3 - "${OWN_RAG_CONFIG_FILE}" <<'PYEOF'
|
|
227
|
+
import json
|
|
228
|
+
import sys
|
|
229
|
+
from pathlib import Path
|
|
230
|
+
from urllib.parse import urlparse
|
|
231
|
+
|
|
232
|
+
cfg = Path(sys.argv[1]).expanduser()
|
|
233
|
+
scheme = "http"
|
|
234
|
+
host = "localhost"
|
|
235
|
+
port = 8000
|
|
236
|
+
|
|
237
|
+
if cfg.exists():
|
|
238
|
+
try:
|
|
239
|
+
payload = json.loads(cfg.read_text(encoding="utf-8"))
|
|
240
|
+
except Exception:
|
|
241
|
+
payload = {}
|
|
242
|
+
if isinstance(payload, dict):
|
|
243
|
+
chroma = payload.get("chroma")
|
|
244
|
+
if isinstance(chroma, dict):
|
|
245
|
+
raw_scheme = chroma.get("scheme")
|
|
246
|
+
if isinstance(raw_scheme, str) and raw_scheme.strip().lower() in {"http", "https"}:
|
|
247
|
+
scheme = raw_scheme.strip().lower()
|
|
248
|
+
raw_host = chroma.get("host")
|
|
249
|
+
if isinstance(raw_host, str) and raw_host.strip():
|
|
250
|
+
candidate = raw_host.strip()
|
|
251
|
+
parsed = urlparse(candidate if "://" in candidate else f"//{candidate}")
|
|
252
|
+
if parsed.scheme in {"http", "https"}:
|
|
253
|
+
scheme = parsed.scheme
|
|
254
|
+
if parsed.hostname:
|
|
255
|
+
host = parsed.hostname
|
|
256
|
+
elif "://" not in candidate:
|
|
257
|
+
host = candidate.strip().strip("/")
|
|
258
|
+
if parsed.port and 1 <= parsed.port <= 65535:
|
|
259
|
+
port = parsed.port
|
|
260
|
+
raw_port = chroma.get("port")
|
|
261
|
+
try:
|
|
262
|
+
parsed_port = int(str(raw_port).strip())
|
|
263
|
+
if 1 <= parsed_port <= 65535:
|
|
264
|
+
port = parsed_port
|
|
265
|
+
except Exception:
|
|
266
|
+
pass
|
|
267
|
+
|
|
268
|
+
print(f"{scheme}|{host}|{port}")
|
|
269
|
+
PYEOF
|
|
270
|
+
)"; then
|
|
271
|
+
IFS='|' read -r CHROMA_SCHEME CHROMA_HOST CHROMA_PORT <<< "${parsed}"
|
|
272
|
+
fi
|
|
273
|
+
}
|
|
274
|
+
|
|
222
275
|
# ---------------------------------------------------------------------------
|
|
223
276
|
# Funções: venv e dependências
|
|
224
277
|
# ---------------------------------------------------------------------------
|
|
@@ -253,10 +306,12 @@ ensure_venv() {
|
|
|
253
306
|
# ---------------------------------------------------------------------------
|
|
254
307
|
|
|
255
308
|
is_chroma_running() {
|
|
256
|
-
"${VENV_PYTHON}" -c "
|
|
257
|
-
import chromadb, sys
|
|
309
|
+
CHROMA_SCHEME="${CHROMA_SCHEME}" "${VENV_PYTHON}" -c "
|
|
310
|
+
import chromadb, os, sys
|
|
311
|
+
scheme = os.environ.get('CHROMA_SCHEME', 'http').strip().lower()
|
|
312
|
+
ssl = scheme == 'https'
|
|
258
313
|
try:
|
|
259
|
-
chromadb.HttpClient(host='${CHROMA_HOST}', port=${CHROMA_PORT}).heartbeat()
|
|
314
|
+
chromadb.HttpClient(host='${CHROMA_HOST}', port=${CHROMA_PORT}, ssl=ssl).heartbeat()
|
|
260
315
|
sys.exit(0)
|
|
261
316
|
except:
|
|
262
317
|
sys.exit(1)
|
|
@@ -270,7 +325,7 @@ print_header() {
|
|
|
270
325
|
printf " ║ %-44s║\n" "$(t header_title)"
|
|
271
326
|
echo " ╚══════════════════════════════════════════════════════╝"
|
|
272
327
|
echo -e "${NC}"
|
|
273
|
-
echo -e " ${DIM}$(t db_label): ${CHROMA_HOST}:${CHROMA_PORT} | $(t data_label): ${RAG_DB_DIR}${NC}"
|
|
328
|
+
echo -e " ${DIM}$(t db_label): ${CHROMA_SCHEME}://${CHROMA_HOST}:${CHROMA_PORT} | $(t data_label): ${RAG_DB_DIR}${NC}"
|
|
274
329
|
echo ""
|
|
275
330
|
}
|
|
276
331
|
|
|
@@ -281,16 +336,21 @@ cmd_chunks() {
|
|
|
281
336
|
ensure_venv
|
|
282
337
|
|
|
283
338
|
echo ""
|
|
284
|
-
echo -e "${BOLD}${CYAN} $(t querying_chroma) ${CHROMA_HOST}:${CHROMA_PORT}...${NC}"
|
|
339
|
+
echo -e "${BOLD}${CYAN} $(t querying_chroma) ${CHROMA_SCHEME}://${CHROMA_HOST}:${CHROMA_PORT}...${NC}"
|
|
285
340
|
echo ""
|
|
286
341
|
|
|
287
|
-
MONITOR_LANG="${UI_LANG}" "${VENV_PYTHON}" - << 'PYEOF'
|
|
342
|
+
MONITOR_LANG="${UI_LANG}" CHROMA_SCHEME="${CHROMA_SCHEME}" CHROMA_HOST="${CHROMA_HOST}" CHROMA_PORT="${CHROMA_PORT}" "${VENV_PYTHON}" - << 'PYEOF'
|
|
288
343
|
import os
|
|
289
344
|
import sys
|
|
290
345
|
import chromadb
|
|
291
346
|
|
|
292
|
-
|
|
293
|
-
|
|
347
|
+
CHROMA_SCHEME = os.getenv("CHROMA_SCHEME", "http").strip().lower()
|
|
348
|
+
CHROMA_HOST = os.getenv("CHROMA_HOST", "localhost").strip() or "localhost"
|
|
349
|
+
try:
|
|
350
|
+
CHROMA_PORT = int(os.getenv("CHROMA_PORT", "8000"))
|
|
351
|
+
except Exception:
|
|
352
|
+
CHROMA_PORT = 8000
|
|
353
|
+
CHROMA_SSL = CHROMA_SCHEME == "https"
|
|
294
354
|
LANG = os.getenv("MONITOR_LANG", "pt-br").lower()
|
|
295
355
|
IS_EN = LANG == "en-us"
|
|
296
356
|
|
|
@@ -303,7 +363,7 @@ DIM = "\033[2m"
|
|
|
303
363
|
NC = "\033[0m"
|
|
304
364
|
|
|
305
365
|
try:
|
|
306
|
-
client = chromadb.HttpClient(host=CHROMA_HOST, port=CHROMA_PORT)
|
|
366
|
+
client = chromadb.HttpClient(host=CHROMA_HOST, port=CHROMA_PORT, ssl=CHROMA_SSL)
|
|
307
367
|
client.heartbeat()
|
|
308
368
|
except Exception as e:
|
|
309
369
|
if IS_EN:
|
|
@@ -374,11 +434,15 @@ cmd_watch() {
|
|
|
374
434
|
LAST_COUNT=-1
|
|
375
435
|
|
|
376
436
|
while true; do
|
|
377
|
-
RESULT=$("${VENV_PYTHON}" - 2>/dev/null << 'PYEOF'
|
|
378
|
-
import chromadb, sys
|
|
437
|
+
RESULT=$(CHROMA_SCHEME="${CHROMA_SCHEME}" CHROMA_HOST="${CHROMA_HOST}" CHROMA_PORT="${CHROMA_PORT}" "${VENV_PYTHON}" - 2>/dev/null << 'PYEOF'
|
|
438
|
+
import chromadb, os, sys
|
|
379
439
|
|
|
380
440
|
try:
|
|
381
|
-
|
|
441
|
+
scheme = os.getenv("CHROMA_SCHEME", "http").strip().lower()
|
|
442
|
+
ssl = scheme == "https"
|
|
443
|
+
host = os.getenv("CHROMA_HOST", "localhost").strip() or "localhost"
|
|
444
|
+
port = int(os.getenv("CHROMA_PORT", "8000"))
|
|
445
|
+
client = chromadb.HttpClient(host=host, port=port, ssl=ssl)
|
|
382
446
|
client.heartbeat()
|
|
383
447
|
cols = client.list_collections()
|
|
384
448
|
total = sum(c.count() for c in cols)
|
|
@@ -669,7 +733,7 @@ cmd_full() {
|
|
|
669
733
|
|
|
670
734
|
# Coleções e chunks
|
|
671
735
|
echo -e " ${BOLD}$(t collections_chunks)${NC}"
|
|
672
|
-
MONITOR_LANG="${UI_LANG}" "${VENV_PYTHON}" - 2>/dev/null << 'PYEOF'
|
|
736
|
+
MONITOR_LANG="${UI_LANG}" CHROMA_SCHEME="${CHROMA_SCHEME}" CHROMA_HOST="${CHROMA_HOST}" CHROMA_PORT="${CHROMA_PORT}" "${VENV_PYTHON}" - 2>/dev/null << 'PYEOF'
|
|
673
737
|
import chromadb, os, sys
|
|
674
738
|
|
|
675
739
|
GREEN = "\033[0;32m"; CYAN = "\033[0;36m"
|
|
@@ -679,7 +743,11 @@ LANG = os.getenv("MONITOR_LANG", "pt-br").lower()
|
|
|
679
743
|
IS_EN = LANG == "en-us"
|
|
680
744
|
|
|
681
745
|
try:
|
|
682
|
-
|
|
746
|
+
scheme = os.getenv("CHROMA_SCHEME", "http").strip().lower()
|
|
747
|
+
ssl = scheme == "https"
|
|
748
|
+
host = os.getenv("CHROMA_HOST", "localhost").strip() or "localhost"
|
|
749
|
+
port = int(os.getenv("CHROMA_PORT", "8000"))
|
|
750
|
+
client = chromadb.HttpClient(host=host, port=port, ssl=ssl)
|
|
683
751
|
client.heartbeat()
|
|
684
752
|
except Exception as e:
|
|
685
753
|
msg = "ChromaDB unreachable" if IS_EN else "ChromaDB inacessível"
|
|
@@ -759,18 +827,23 @@ cmd_reset() {
|
|
|
759
827
|
exit 0
|
|
760
828
|
fi
|
|
761
829
|
|
|
762
|
-
MONITOR_LANG="${UI_LANG}" "${VENV_PYTHON}" - << 'PYEOF'
|
|
830
|
+
MONITOR_LANG="${UI_LANG}" CHROMA_SCHEME="${CHROMA_SCHEME}" CHROMA_HOST="${CHROMA_HOST}" CHROMA_PORT="${CHROMA_PORT}" "${VENV_PYTHON}" - << 'PYEOF'
|
|
763
831
|
import os
|
|
764
832
|
import sys
|
|
765
833
|
import chromadb
|
|
766
834
|
|
|
767
|
-
|
|
768
|
-
|
|
835
|
+
CHROMA_SCHEME = os.getenv("CHROMA_SCHEME", "http").strip().lower()
|
|
836
|
+
CHROMA_HOST = os.getenv("CHROMA_HOST", "localhost").strip() or "localhost"
|
|
837
|
+
try:
|
|
838
|
+
CHROMA_PORT = int(os.getenv("CHROMA_PORT", "8000"))
|
|
839
|
+
except Exception:
|
|
840
|
+
CHROMA_PORT = 8000
|
|
841
|
+
CHROMA_SSL = CHROMA_SCHEME == "https"
|
|
769
842
|
LANG = os.getenv("MONITOR_LANG", "pt-br").lower()
|
|
770
843
|
IS_EN = LANG == "en-us"
|
|
771
844
|
|
|
772
845
|
try:
|
|
773
|
-
client = chromadb.HttpClient(host=CHROMA_HOST, port=CHROMA_PORT)
|
|
846
|
+
client = chromadb.HttpClient(host=CHROMA_HOST, port=CHROMA_PORT, ssl=CHROMA_SSL)
|
|
774
847
|
client.heartbeat()
|
|
775
848
|
except Exception as e:
|
|
776
849
|
if IS_EN:
|
|
@@ -839,6 +912,7 @@ cmd_menu() {
|
|
|
839
912
|
# Dispatcher
|
|
840
913
|
# ---------------------------------------------------------------------------
|
|
841
914
|
select_ui_language
|
|
915
|
+
load_chroma_endpoint_config
|
|
842
916
|
case "${1:-menu}" in
|
|
843
917
|
chunks) cmd_chunks ;;
|
|
844
918
|
watch) cmd_watch ;;
|