own-rag-cli 0.0.1-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/MCP_USAGE.md +315 -0
- package/README.md +133 -0
- package/bin/docker-compose.yml +21 -0
- package/bin/download_model_from_hugginface.py +219 -0
- package/bin/download_model_from_modelscope.py +26 -0
- package/bin/indexer_full.py +1426 -0
- package/bin/mcp_server.py +1433 -0
- package/bin/postinstall.sh +102 -0
- package/bin/rag-remove.sh +198 -0
- package/bin/rag-wrapper.sh +186 -0
- package/bin/requirements.txt +21 -0
- package/chroma_monitor.sh +857 -0
- package/how-its-work.md +285 -0
- package/package.json +49 -0
- package/rag-setup-macos.run +1129 -0
- package/rag-setup.run +1179 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
PACKAGE_ROOT="$(dirname "${SCRIPT_DIR}")"
|
|
6
|
+
|
|
7
|
+
LOCAL_BIN_DIR="${HOME}/.local/bin"
|
|
8
|
+
WRAPPER_SRC="${PACKAGE_ROOT}/bin/rag-wrapper.sh"
|
|
9
|
+
WRAPPER_DEST="${LOCAL_BIN_DIR}/rag-wrapper.sh"
|
|
10
|
+
RAG_BIN_DEST="${LOCAL_BIN_DIR}/rag"
|
|
11
|
+
RAG_SETUP_SRC="${PACKAGE_ROOT}/rag-setup.run"
|
|
12
|
+
RAG_SETUP_DEST="${LOCAL_BIN_DIR}/rag-setup.run"
|
|
13
|
+
RAG_SETUP_MACOS_SRC="${PACKAGE_ROOT}/rag-setup-macos.run"
|
|
14
|
+
RAG_SETUP_MACOS_DEST="${LOCAL_BIN_DIR}/rag-setup-macos.run"
|
|
15
|
+
MONITOR_SRC="${PACKAGE_ROOT}/chroma_monitor.sh"
|
|
16
|
+
MONITOR_DEST="${LOCAL_BIN_DIR}/chroma_monitor.sh"
|
|
17
|
+
REMOVE_SRC="${PACKAGE_ROOT}/bin/rag-remove.sh"
|
|
18
|
+
REMOVE_DEST="${LOCAL_BIN_DIR}/rag-remove.sh"
|
|
19
|
+
|
|
20
|
+
COMPOSE_SOURCE="${PACKAGE_ROOT}/bin/docker-compose.yml"
|
|
21
|
+
COMPOSE_DIR="${HOME}/docker-chromadb"
|
|
22
|
+
COMPOSE_TARGET="${COMPOSE_DIR}/docker-compose.yml"
|
|
23
|
+
|
|
24
|
+
ALIAS_LINE="alias rag='~/.local/bin/rag-wrapper.sh'"
|
|
25
|
+
|
|
26
|
+
log_info() { printf "[+] %s\n" "$*"; }
|
|
27
|
+
log_warn() { printf "[!] %s\n" "$*" >&2; }
|
|
28
|
+
|
|
29
|
+
mkdir -p "${LOCAL_BIN_DIR}"
|
|
30
|
+
|
|
31
|
+
if [[ -f "${WRAPPER_SRC}" ]]; then
|
|
32
|
+
cp "${WRAPPER_SRC}" "${WRAPPER_DEST}"
|
|
33
|
+
chmod +x "${WRAPPER_DEST}"
|
|
34
|
+
ln -sf "${WRAPPER_DEST}" "${RAG_BIN_DEST}"
|
|
35
|
+
log_info "Wrapper instalado: ${WRAPPER_DEST}"
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
if [[ -f "${RAG_SETUP_SRC}" ]]; then
|
|
39
|
+
cp "${RAG_SETUP_SRC}" "${RAG_SETUP_DEST}"
|
|
40
|
+
chmod +x "${RAG_SETUP_DEST}"
|
|
41
|
+
log_info "Instalador Linux copiado: ${RAG_SETUP_DEST}"
|
|
42
|
+
fi
|
|
43
|
+
|
|
44
|
+
if [[ -f "${RAG_SETUP_MACOS_SRC}" ]]; then
|
|
45
|
+
cp "${RAG_SETUP_MACOS_SRC}" "${RAG_SETUP_MACOS_DEST}"
|
|
46
|
+
chmod +x "${RAG_SETUP_MACOS_DEST}"
|
|
47
|
+
log_info "Instalador macOS copiado: ${RAG_SETUP_MACOS_DEST}"
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
if [[ -f "${MONITOR_SRC}" ]]; then
|
|
51
|
+
cp "${MONITOR_SRC}" "${MONITOR_DEST}"
|
|
52
|
+
chmod +x "${MONITOR_DEST}"
|
|
53
|
+
log_info "Monitor copiado: ${MONITOR_DEST}"
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
if [[ -f "${REMOVE_SRC}" ]]; then
|
|
57
|
+
cp "${REMOVE_SRC}" "${REMOVE_DEST}"
|
|
58
|
+
chmod +x "${REMOVE_DEST}"
|
|
59
|
+
log_info "Remoção copiada: ${REMOVE_DEST}"
|
|
60
|
+
fi
|
|
61
|
+
|
|
62
|
+
DOCKER_COMPOSE_CMD=""
|
|
63
|
+
if command -v docker >/dev/null 2>&1; then
|
|
64
|
+
if docker compose version >/dev/null 2>&1; then
|
|
65
|
+
DOCKER_COMPOSE_CMD="docker compose"
|
|
66
|
+
elif command -v docker-compose >/dev/null 2>&1; then
|
|
67
|
+
DOCKER_COMPOSE_CMD="docker-compose"
|
|
68
|
+
fi
|
|
69
|
+
fi
|
|
70
|
+
|
|
71
|
+
if [[ -n "${DOCKER_COMPOSE_CMD}" && -f "${COMPOSE_SOURCE}" ]]; then
|
|
72
|
+
mkdir -p "${COMPOSE_DIR}"
|
|
73
|
+
cp "${COMPOSE_SOURCE}" "${COMPOSE_TARGET}"
|
|
74
|
+
if docker info >/dev/null 2>&1; then
|
|
75
|
+
${DOCKER_COMPOSE_CMD} -f "${COMPOSE_TARGET}" up -d || log_warn "Falha ao subir ChromaDB automaticamente."
|
|
76
|
+
log_info "ChromaDB iniciado com ${DOCKER_COMPOSE_CMD}."
|
|
77
|
+
else
|
|
78
|
+
log_warn "Docker instalado, mas daemon não está ativo. ChromaDB não foi iniciado."
|
|
79
|
+
fi
|
|
80
|
+
else
|
|
81
|
+
log_warn "Docker Compose não encontrado. Pulei o auto-start do ChromaDB."
|
|
82
|
+
fi
|
|
83
|
+
|
|
84
|
+
for rc_file in "${HOME}/.bashrc" "${HOME}/.profile"; do
|
|
85
|
+
touch "${rc_file}"
|
|
86
|
+
if ! grep -qF "${ALIAS_LINE}" "${rc_file}"; then
|
|
87
|
+
printf "\n# own-rag npm install\n%s\n" "${ALIAS_LINE}" >> "${rc_file}"
|
|
88
|
+
log_info "Alias adicionado em ${rc_file}"
|
|
89
|
+
fi
|
|
90
|
+
done
|
|
91
|
+
|
|
92
|
+
if [[ -f "${HOME}/.bashrc" ]]; then
|
|
93
|
+
# shellcheck disable=SC1090
|
|
94
|
+
source "${HOME}/.bashrc" || true
|
|
95
|
+
fi
|
|
96
|
+
|
|
97
|
+
if [[ -f "${HOME}/.profile" ]]; then
|
|
98
|
+
# shellcheck disable=SC1090
|
|
99
|
+
source "${HOME}/.profile" || true
|
|
100
|
+
fi
|
|
101
|
+
|
|
102
|
+
log_info "Postinstall concluído. Use: rag run [path] | rag monitor | rag remove"
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
usage() {
|
|
5
|
+
cat <<'EOF'
|
|
6
|
+
Uso:
|
|
7
|
+
rag remove
|
|
8
|
+
rag remove --force
|
|
9
|
+
|
|
10
|
+
Descrição:
|
|
11
|
+
Remove toda a instalação local do own-rag (venv, banco, docker, binários e configuração MCP).
|
|
12
|
+
|
|
13
|
+
Opções:
|
|
14
|
+
--force, -f pula a confirmação dupla.
|
|
15
|
+
EOF
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
detect_os() {
|
|
19
|
+
case "$(uname -s)" in
|
|
20
|
+
Darwin) echo "macos" ;;
|
|
21
|
+
Linux) echo "linux" ;;
|
|
22
|
+
*) echo "unknown" ;;
|
|
23
|
+
esac
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
log_info() { printf "[+] %s\n" "$*"; }
|
|
27
|
+
log_warn() { printf "[!] %s\n" "$*" >&2; }
|
|
28
|
+
|
|
29
|
+
FORCE=false
|
|
30
|
+
for arg in "$@"; do
|
|
31
|
+
case "$arg" in
|
|
32
|
+
--force|-f) FORCE=true ;;
|
|
33
|
+
--help|-h) usage; exit 0 ;;
|
|
34
|
+
*)
|
|
35
|
+
echo "Opção desconhecida: $arg" >&2
|
|
36
|
+
usage
|
|
37
|
+
exit 1
|
|
38
|
+
;;
|
|
39
|
+
esac
|
|
40
|
+
done
|
|
41
|
+
|
|
42
|
+
OS_NAME="$(detect_os)"
|
|
43
|
+
if [[ "${OS_NAME}" == "unknown" ]]; then
|
|
44
|
+
echo "[ERRO] Sistema operacional não suportado. Use Linux ou macOS." >&2
|
|
45
|
+
exit 1
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
if [[ "${FORCE}" != "true" ]]; then
|
|
49
|
+
if [[ ! -t 0 ]]; then
|
|
50
|
+
echo "[ERRO] Terminal não interativo. Use --force para continuar." >&2
|
|
51
|
+
exit 1
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
echo "[AVISO] Esta ação removerá completamente o own-rag deste computador."
|
|
55
|
+
echo " Isso inclui venv, banco local, binários e configuração MCP."
|
|
56
|
+
read -r -p "Confirma a remoção completa? [s/N] " answer
|
|
57
|
+
answer="$(echo "${answer}" | tr '[:upper:]' '[:lower:]')"
|
|
58
|
+
if [[ "${answer}" != "s" && "${answer}" != "sim" && "${answer}" != "y" && "${answer}" != "yes" ]]; then
|
|
59
|
+
echo "Remoção cancelada."
|
|
60
|
+
exit 0
|
|
61
|
+
fi
|
|
62
|
+
|
|
63
|
+
read -r -p "Digite REMOVER para confirmar definitivamente: " confirm_word
|
|
64
|
+
if [[ "${confirm_word}" != "REMOVER" ]]; then
|
|
65
|
+
echo "Confirmação inválida. Remoção cancelada."
|
|
66
|
+
exit 1
|
|
67
|
+
fi
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
log_info "Iniciando remoção completa (OS: ${OS_NAME})..."
|
|
71
|
+
|
|
72
|
+
DOCKER_COMPOSE_CMD=""
|
|
73
|
+
if command -v docker >/dev/null 2>&1; then
|
|
74
|
+
if docker compose version >/dev/null 2>&1; then
|
|
75
|
+
DOCKER_COMPOSE_CMD="docker compose"
|
|
76
|
+
elif command -v docker-compose >/dev/null 2>&1; then
|
|
77
|
+
DOCKER_COMPOSE_CMD="docker-compose"
|
|
78
|
+
fi
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
if [[ -n "${DOCKER_COMPOSE_CMD}" && -f "${HOME}/docker-chromadb/docker-compose.yml" ]]; then
|
|
82
|
+
if docker info >/dev/null 2>&1; then
|
|
83
|
+
(cd "${HOME}/docker-chromadb" && ${DOCKER_COMPOSE_CMD} down -v) || log_warn "Falha ao derrubar docker compose."
|
|
84
|
+
else
|
|
85
|
+
log_warn "Docker encontrado, mas daemon não está ativo; pulando compose down."
|
|
86
|
+
fi
|
|
87
|
+
fi
|
|
88
|
+
|
|
89
|
+
if command -v docker >/dev/null 2>&1; then
|
|
90
|
+
if docker ps -a --format '{{.Names}}' | grep -qx 'chromadb-rag'; then
|
|
91
|
+
docker rm -f chromadb-rag >/dev/null 2>&1 || log_warn "Falha ao remover container chromadb-rag."
|
|
92
|
+
fi
|
|
93
|
+
fi
|
|
94
|
+
|
|
95
|
+
declare -a REMOVE_PATHS=(
|
|
96
|
+
"${HOME}/.rag_venv"
|
|
97
|
+
"${HOME}/.rag_db"
|
|
98
|
+
"${HOME}/docker-chromadb"
|
|
99
|
+
"${HOME}/.cache/my-custom-rag-python"
|
|
100
|
+
"${HOME}/.cache/ny-custom-rag-python"
|
|
101
|
+
"${HOME}/.local/bin/mcp-rag-server"
|
|
102
|
+
"${HOME}/.local/bin/download_model_from_hugginface.py"
|
|
103
|
+
"${HOME}/.local/bin/download_model_from_modelscope.py"
|
|
104
|
+
"${HOME}/.local/bin/rag-wrapper.sh"
|
|
105
|
+
"${HOME}/.local/bin/rag-remove.sh"
|
|
106
|
+
"${HOME}/.local/bin/rag-setup.run"
|
|
107
|
+
"${HOME}/.local/bin/rag-setup-macos.run"
|
|
108
|
+
"${HOME}/.local/bin/chroma_monitor.sh"
|
|
109
|
+
"${HOME}/.local/bin/rag"
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
declare -a FAILED_PATHS=()
|
|
113
|
+
|
|
114
|
+
remove_path() {
|
|
115
|
+
local target="$1"
|
|
116
|
+
if [[ -e "${target}" || -L "${target}" ]]; then
|
|
117
|
+
if rm -rf "${target}" 2>/dev/null; then
|
|
118
|
+
log_info "Removido: ${target}"
|
|
119
|
+
else
|
|
120
|
+
FAILED_PATHS+=("${target}")
|
|
121
|
+
log_warn "Falha ao remover (permissão): ${target}"
|
|
122
|
+
fi
|
|
123
|
+
fi
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
for target in "${REMOVE_PATHS[@]}"; do
|
|
127
|
+
remove_path "${target}"
|
|
128
|
+
done
|
|
129
|
+
|
|
130
|
+
python3 - <<'PY'
|
|
131
|
+
import json
|
|
132
|
+
from pathlib import Path
|
|
133
|
+
|
|
134
|
+
home = Path.home()
|
|
135
|
+
config_paths = [
|
|
136
|
+
home / ".claude.json",
|
|
137
|
+
home / ".cursor" / "mcp.json",
|
|
138
|
+
home / "Library" / "Application Support" / "Cursor" / "User" / "mcp.json",
|
|
139
|
+
]
|
|
140
|
+
for path in config_paths:
|
|
141
|
+
if not path.exists():
|
|
142
|
+
continue
|
|
143
|
+
try:
|
|
144
|
+
data = json.loads(path.read_text(encoding="utf-8"))
|
|
145
|
+
except Exception:
|
|
146
|
+
continue
|
|
147
|
+
servers = data.get("mcpServers")
|
|
148
|
+
if isinstance(servers, dict) and "rag-codebase" in servers:
|
|
149
|
+
servers.pop("rag-codebase", None)
|
|
150
|
+
try:
|
|
151
|
+
path.write_text(json.dumps(data, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
|
|
152
|
+
print(f"[+] MCP removido de: {path}")
|
|
153
|
+
except Exception as exc:
|
|
154
|
+
print(f"[!] Não foi possível atualizar {path}: {exc}")
|
|
155
|
+
|
|
156
|
+
rc_files = [
|
|
157
|
+
home / ".bashrc",
|
|
158
|
+
home / ".profile",
|
|
159
|
+
home / ".zshrc",
|
|
160
|
+
home / ".zprofile",
|
|
161
|
+
]
|
|
162
|
+
for rc in rc_files:
|
|
163
|
+
if not rc.exists():
|
|
164
|
+
continue
|
|
165
|
+
try:
|
|
166
|
+
lines = rc.read_text(encoding="utf-8").splitlines()
|
|
167
|
+
except Exception:
|
|
168
|
+
continue
|
|
169
|
+
|
|
170
|
+
filtered = [
|
|
171
|
+
line for line in lines
|
|
172
|
+
if "alias rag=" not in line
|
|
173
|
+
and "rag-wrapper.sh" not in line
|
|
174
|
+
and "own-rag npm install" not in line
|
|
175
|
+
]
|
|
176
|
+
if filtered != lines:
|
|
177
|
+
try:
|
|
178
|
+
rc.write_text("\n".join(filtered).rstrip() + "\n", encoding="utf-8")
|
|
179
|
+
print(f"[+] Limpeza de alias em: {rc}")
|
|
180
|
+
except Exception as exc:
|
|
181
|
+
print(f"[!] Não foi possível limpar {rc}: {exc}")
|
|
182
|
+
PY
|
|
183
|
+
|
|
184
|
+
if command -v npm >/dev/null 2>&1; then
|
|
185
|
+
npm uninstall -g own-rag >/dev/null 2>&1 || true
|
|
186
|
+
fi
|
|
187
|
+
|
|
188
|
+
if [[ ${#FAILED_PATHS[@]} -gt 0 ]]; then
|
|
189
|
+
echo ""
|
|
190
|
+
log_warn "Remoção concluída com pendências de permissão:"
|
|
191
|
+
for path in "${FAILED_PATHS[@]}"; do
|
|
192
|
+
echo " - ${path}"
|
|
193
|
+
done
|
|
194
|
+
log_warn "Execute com sudo para limpar pendências, por exemplo:"
|
|
195
|
+
echo " sudo rm -rf ${FAILED_PATHS[0]}"
|
|
196
|
+
else
|
|
197
|
+
log_info "Remoção completa concluída."
|
|
198
|
+
fi
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
LOCAL_BIN_DIR="${HOME}/.local/bin"
|
|
6
|
+
LOCAL_SETUP_RUN_LINUX="${LOCAL_BIN_DIR}/rag-setup.run"
|
|
7
|
+
LOCAL_SETUP_RUN_MACOS="${LOCAL_BIN_DIR}/rag-setup-macos.run"
|
|
8
|
+
PACKAGE_SETUP_RUN_LINUX="${SCRIPT_DIR}/../rag-setup.run"
|
|
9
|
+
PACKAGE_SETUP_RUN_MACOS="${SCRIPT_DIR}/../rag-setup-macos.run"
|
|
10
|
+
LOCAL_MONITOR_SCRIPT="${LOCAL_BIN_DIR}/chroma_monitor.sh"
|
|
11
|
+
PACKAGE_MONITOR_SCRIPT="${SCRIPT_DIR}/../chroma_monitor.sh"
|
|
12
|
+
LOCAL_REMOVE_SCRIPT="${LOCAL_BIN_DIR}/rag-remove.sh"
|
|
13
|
+
PACKAGE_REMOVE_SCRIPT="${SCRIPT_DIR}/../bin/rag-remove.sh"
|
|
14
|
+
|
|
15
|
+
detect_os() {
|
|
16
|
+
case "$(uname -s)" in
|
|
17
|
+
Darwin) echo "macos" ;;
|
|
18
|
+
Linux) echo "linux" ;;
|
|
19
|
+
*) echo "unknown" ;;
|
|
20
|
+
esac
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
find_setup_runner() {
|
|
24
|
+
local os_name="$1"
|
|
25
|
+
local local_runner=""
|
|
26
|
+
local package_runner=""
|
|
27
|
+
|
|
28
|
+
case "${os_name}" in
|
|
29
|
+
macos)
|
|
30
|
+
local_runner="${LOCAL_SETUP_RUN_MACOS}"
|
|
31
|
+
package_runner="${PACKAGE_SETUP_RUN_MACOS}"
|
|
32
|
+
;;
|
|
33
|
+
linux)
|
|
34
|
+
local_runner="${LOCAL_SETUP_RUN_LINUX}"
|
|
35
|
+
package_runner="${PACKAGE_SETUP_RUN_LINUX}"
|
|
36
|
+
;;
|
|
37
|
+
*)
|
|
38
|
+
return 1
|
|
39
|
+
;;
|
|
40
|
+
esac
|
|
41
|
+
|
|
42
|
+
if [[ -x "${local_runner}" ]]; then
|
|
43
|
+
echo "${local_runner}"
|
|
44
|
+
return 0
|
|
45
|
+
fi
|
|
46
|
+
if [[ -x "${package_runner}" ]]; then
|
|
47
|
+
echo "${package_runner}"
|
|
48
|
+
return 0
|
|
49
|
+
fi
|
|
50
|
+
if [[ -f "${package_runner}" ]]; then
|
|
51
|
+
chmod +x "${package_runner}" || true
|
|
52
|
+
echo "${package_runner}"
|
|
53
|
+
return 0
|
|
54
|
+
fi
|
|
55
|
+
return 1
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
find_monitor_runner() {
|
|
59
|
+
local os_name="$1"
|
|
60
|
+
if [[ "${os_name}" == "unknown" ]]; then
|
|
61
|
+
return 1
|
|
62
|
+
fi
|
|
63
|
+
|
|
64
|
+
if [[ -x "${LOCAL_MONITOR_SCRIPT}" ]]; then
|
|
65
|
+
echo "${LOCAL_MONITOR_SCRIPT}"
|
|
66
|
+
return 0
|
|
67
|
+
fi
|
|
68
|
+
if [[ -x "${PACKAGE_MONITOR_SCRIPT}" ]]; then
|
|
69
|
+
echo "${PACKAGE_MONITOR_SCRIPT}"
|
|
70
|
+
return 0
|
|
71
|
+
fi
|
|
72
|
+
if [[ -f "${PACKAGE_MONITOR_SCRIPT}" ]]; then
|
|
73
|
+
chmod +x "${PACKAGE_MONITOR_SCRIPT}" || true
|
|
74
|
+
echo "${PACKAGE_MONITOR_SCRIPT}"
|
|
75
|
+
return 0
|
|
76
|
+
fi
|
|
77
|
+
return 1
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
find_remove_runner() {
|
|
81
|
+
local os_name="$1"
|
|
82
|
+
if [[ "${os_name}" == "unknown" ]]; then
|
|
83
|
+
return 1
|
|
84
|
+
fi
|
|
85
|
+
|
|
86
|
+
if [[ -x "${LOCAL_REMOVE_SCRIPT}" ]]; then
|
|
87
|
+
echo "${LOCAL_REMOVE_SCRIPT}"
|
|
88
|
+
return 0
|
|
89
|
+
fi
|
|
90
|
+
if [[ -x "${PACKAGE_REMOVE_SCRIPT}" ]]; then
|
|
91
|
+
echo "${PACKAGE_REMOVE_SCRIPT}"
|
|
92
|
+
return 0
|
|
93
|
+
fi
|
|
94
|
+
if [[ -f "${PACKAGE_REMOVE_SCRIPT}" ]]; then
|
|
95
|
+
chmod +x "${PACKAGE_REMOVE_SCRIPT}" || true
|
|
96
|
+
echo "${PACKAGE_REMOVE_SCRIPT}"
|
|
97
|
+
return 0
|
|
98
|
+
fi
|
|
99
|
+
return 1
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
usage() {
|
|
103
|
+
cat <<'EOF'
|
|
104
|
+
Uso:
|
|
105
|
+
rag run [path]
|
|
106
|
+
rag monitor [command]
|
|
107
|
+
rag remove
|
|
108
|
+
|
|
109
|
+
Exemplos:
|
|
110
|
+
rag run .
|
|
111
|
+
rag run /caminho/do/projeto
|
|
112
|
+
rag monitor
|
|
113
|
+
rag monitor full
|
|
114
|
+
rag remove
|
|
115
|
+
EOF
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if [[ $# -lt 1 ]]; then
|
|
119
|
+
usage
|
|
120
|
+
exit 1
|
|
121
|
+
fi
|
|
122
|
+
|
|
123
|
+
command_name="$1"
|
|
124
|
+
shift || true
|
|
125
|
+
os_name="$(detect_os)"
|
|
126
|
+
|
|
127
|
+
if [[ "${os_name}" == "unknown" ]]; then
|
|
128
|
+
echo "Erro: sistema operacional não suportado por este instalador." >&2
|
|
129
|
+
echo "Suportados: Linux e macOS." >&2
|
|
130
|
+
exit 1
|
|
131
|
+
fi
|
|
132
|
+
|
|
133
|
+
case "${command_name}" in
|
|
134
|
+
run)
|
|
135
|
+
target_path="${1:-}"
|
|
136
|
+
if [[ -z "${target_path}" ]]; then
|
|
137
|
+
printf "⚠️ Pasta não informada. Deseja usar a pasta atual: %s? (s/n)\n" "${PWD}"
|
|
138
|
+
read -r answer
|
|
139
|
+
answer="$(echo "${answer}" | tr '[:upper:]' '[:lower:]')"
|
|
140
|
+
if [[ "${answer}" == "s" || "${answer}" == "sim" || "${answer}" == "y" || "${answer}" == "yes" ]]; then
|
|
141
|
+
target_path="${PWD}"
|
|
142
|
+
else
|
|
143
|
+
echo "Dica: use 'rag run /caminho/do/projeto'."
|
|
144
|
+
exit 1
|
|
145
|
+
fi
|
|
146
|
+
fi
|
|
147
|
+
|
|
148
|
+
if [[ ! -d "${target_path}" ]]; then
|
|
149
|
+
echo "Erro: caminho não encontrado ou não é diretório: ${target_path}" >&2
|
|
150
|
+
exit 1
|
|
151
|
+
fi
|
|
152
|
+
|
|
153
|
+
if ! setup_runner="$(find_setup_runner "${os_name}")"; then
|
|
154
|
+
if [[ "${os_name}" == "macos" ]]; then
|
|
155
|
+
echo "Erro: rag-setup-macos.run não encontrado." >&2
|
|
156
|
+
echo "Esperado em: ${LOCAL_SETUP_RUN_MACOS} ou ${PACKAGE_SETUP_RUN_MACOS}" >&2
|
|
157
|
+
else
|
|
158
|
+
echo "Erro: rag-setup.run não encontrado." >&2
|
|
159
|
+
echo "Esperado em: ${LOCAL_SETUP_RUN_LINUX} ou ${PACKAGE_SETUP_RUN_LINUX}" >&2
|
|
160
|
+
fi
|
|
161
|
+
exit 1
|
|
162
|
+
fi
|
|
163
|
+
|
|
164
|
+
exec "${setup_runner}" "${target_path}"
|
|
165
|
+
;;
|
|
166
|
+
monitor)
|
|
167
|
+
if ! monitor_runner="$(find_monitor_runner "${os_name}")"; then
|
|
168
|
+
echo "Erro: chroma_monitor.sh não encontrado." >&2
|
|
169
|
+
echo "Esperado em: ${LOCAL_MONITOR_SCRIPT} ou ${PACKAGE_MONITOR_SCRIPT}" >&2
|
|
170
|
+
exit 1
|
|
171
|
+
fi
|
|
172
|
+
exec "${monitor_runner}" "$@"
|
|
173
|
+
;;
|
|
174
|
+
remove)
|
|
175
|
+
if ! remove_runner="$(find_remove_runner "${os_name}")"; then
|
|
176
|
+
echo "Erro: rag-remove.sh não encontrado." >&2
|
|
177
|
+
echo "Esperado em: ${LOCAL_REMOVE_SCRIPT} ou ${PACKAGE_REMOVE_SCRIPT}" >&2
|
|
178
|
+
exit 1
|
|
179
|
+
fi
|
|
180
|
+
exec "${remove_runner}" "$@"
|
|
181
|
+
;;
|
|
182
|
+
*)
|
|
183
|
+
usage
|
|
184
|
+
exit 1
|
|
185
|
+
;;
|
|
186
|
+
esac
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Cliente HTTP do ChromaDB (conecta ao servidor Docker)
|
|
2
|
+
chromadb>=0.5.0
|
|
3
|
+
|
|
4
|
+
# Modelo de embeddings local rodando na CPU
|
|
5
|
+
sentence-transformers>=3.0.0
|
|
6
|
+
# Dependência usada por modelos Jina v3 com código remoto
|
|
7
|
+
einops>=0.7.0
|
|
8
|
+
# Evita incompatibilidades conhecidas do Jina v3 com APIs novas do transformers 5.x
|
|
9
|
+
transformers<5
|
|
10
|
+
|
|
11
|
+
# Splitter de texto para chunking inteligente
|
|
12
|
+
langchain-text-splitters>=0.2.0
|
|
13
|
+
|
|
14
|
+
# Barra de progresso visual no terminal
|
|
15
|
+
tqdm>=4.66.0
|
|
16
|
+
|
|
17
|
+
# Monitor de memória em tempo real durante indexação
|
|
18
|
+
psutil>=5.9.0
|
|
19
|
+
|
|
20
|
+
# SDK oficial do MCP (Model Context Protocol) da Anthropic
|
|
21
|
+
mcp>=1.0.0
|