- bin/chats/ — nested Go module (как bin/kbsearch/)
- sync telegram — MCP JSON-RPC клиент, 31 личный чат, 922 сообщения
- import — конвертация JSONL → MD с YAML frontmatter
- index — делегирует bin/kb/index --corpus (132 leafs в brain)
- facts — regex extraction phone/email/linkedin с валидацией
(исключены: даты, суммы, номера карт, инвойсы)
- apply — oo CLI cross-check + dry-run
- Source interface для будущих WhatsApp/LinkedIn
- 4 system tests (import, facts, empty, roundtrip) — синтетические данные
- bin/chat — build+exec wrapper
- docs/chat-import-plan.md — прогресс, пути к env (без секретов)
Безопасность: var/ в gitignore, credentials в env, тесты без реальных данных.
30 lines
698 B
Bash
Executable File
30 lines
698 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# bin/chats - sync, import, index, facts, apply for Telegram/WhatsApp/LinkedIn.
|
|
# Builds the chats binary on first run / when source changes, then execs it.
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
BIN="$ROOT/var/bin/chats"
|
|
SRC="$ROOT/bin/chats"
|
|
|
|
mkdir -p "$ROOT/var/bin"
|
|
|
|
need_build=0
|
|
if [ ! -x "$BIN" ]; then
|
|
need_build=1
|
|
else
|
|
while IFS= read -r -d '' f; do
|
|
if [ "$f" -nt "$BIN" ]; then
|
|
need_build=1
|
|
break
|
|
fi
|
|
done < <(find "$SRC" -name '*.go' -print0 2>/dev/null)
|
|
fi
|
|
|
|
if [ "$need_build" -eq 1 ]; then
|
|
echo "Building chats..." >&2
|
|
(cd "$SRC" && go build -o "$BIN" .) || exit 1
|
|
fi
|
|
|
|
exec "$BIN" "$@"
|