165 lines
3.8 KiB
Bash
Executable File
165 lines
3.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
KB_URL="${NETGESCON_KB_URL:-http://192.168.0.53:3838}"
|
|
API_KEY="${NETGESCON_KB_API_KEY:-}"
|
|
ORCH_BIN="${NETGESCON_ORCHESTRATOR_BIN:-$HOME/netgescon-orchestrator/.venv/bin/agent-orchestrator}"
|
|
WORK_DIR="${NETGESCON_ORCHESTRATOR_WORKDIR:-$HOME/netgescon-orchestrator}"
|
|
ENV_FILE="${NETGESCON_KB_ENV_FILE:-$HOME/.config/netgescon/kb.env}"
|
|
MODE="analyze"
|
|
BACKLOG_FILE=""
|
|
TASK_ID=""
|
|
QUERY_TERMS=()
|
|
|
|
usage() {
|
|
cat <<'EOF'
|
|
Usage: scripts/ops/netgescon-orchestrator-kb-run.sh --backlog <file> [options]
|
|
|
|
Required:
|
|
--backlog <file> Markdown backlog file.
|
|
|
|
Options:
|
|
--query <text> KB query term. Repeatable.
|
|
--mode <analyze|execute> Default: analyze.
|
|
--task-id <id> Required with --mode execute.
|
|
--kb-url <url> Override KB URL.
|
|
--api-key <key> Override KB API key.
|
|
--orchestrator-bin <path> Override agent-orchestrator binary path.
|
|
--work-dir <path> Output directory for generated context files.
|
|
--env-file <path> Optional shell env file to source before execution.
|
|
--help Show this message.
|
|
|
|
Environment:
|
|
NETGESCON_KB_URL Default KB URL.
|
|
NETGESCON_KB_API_KEY Required for KB search.
|
|
NETGESCON_ORCHESTRATOR_BIN Default local orchestrator binary.
|
|
NETGESCON_KB_ENV_FILE Optional env file path. Default: ~/.config/netgescon/kb.env
|
|
EOF
|
|
}
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--backlog)
|
|
BACKLOG_FILE="$2"
|
|
shift 2
|
|
;;
|
|
--query)
|
|
QUERY_TERMS+=("$2")
|
|
shift 2
|
|
;;
|
|
--mode)
|
|
MODE="$2"
|
|
shift 2
|
|
;;
|
|
--task-id)
|
|
TASK_ID="$2"
|
|
shift 2
|
|
;;
|
|
--kb-url)
|
|
KB_URL="$2"
|
|
shift 2
|
|
;;
|
|
--api-key)
|
|
API_KEY="$2"
|
|
shift 2
|
|
;;
|
|
--orchestrator-bin)
|
|
ORCH_BIN="$2"
|
|
shift 2
|
|
;;
|
|
--work-dir)
|
|
WORK_DIR="$2"
|
|
shift 2
|
|
;;
|
|
--env-file)
|
|
ENV_FILE="$2"
|
|
shift 2
|
|
;;
|
|
--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1"
|
|
usage
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [[ -f "$ENV_FILE" ]]; then
|
|
# shellcheck disable=SC1090
|
|
source "$ENV_FILE"
|
|
KB_URL="${NETGESCON_KB_URL:-$KB_URL}"
|
|
API_KEY="${NETGESCON_KB_API_KEY:-$API_KEY}"
|
|
ORCH_BIN="${NETGESCON_ORCHESTRATOR_BIN:-$ORCH_BIN}"
|
|
WORK_DIR="${NETGESCON_ORCHESTRATOR_WORKDIR:-$WORK_DIR}"
|
|
fi
|
|
|
|
if [[ -z "$BACKLOG_FILE" || ! -f "$BACKLOG_FILE" ]]; then
|
|
echo "Backlog file not found: $BACKLOG_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "$MODE" == "execute" && -z "$TASK_ID" ]]; then
|
|
echo "--task-id is required when --mode execute"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -z "$API_KEY" ]]; then
|
|
echo "NETGESCON_KB_API_KEY is required"
|
|
echo "Hint: export it in the shell or put it into $ENV_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -x "$ORCH_BIN" ]]; then
|
|
echo "agent-orchestrator binary not found or not executable: $ORCH_BIN"
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$WORK_DIR"
|
|
|
|
if [[ ${#QUERY_TERMS[@]} -eq 0 ]]; then
|
|
QUERY_TERMS=("anagrafica unica" "ticket operativita" "integrazione contabile")
|
|
fi
|
|
|
|
timestamp="$(date +%Y%m%d-%H%M%S)"
|
|
brief_file="$WORK_DIR/kb-brief-$timestamp.md"
|
|
merged_file="$WORK_DIR/backlog-with-kb-$timestamp.md"
|
|
|
|
curl -fsS "$KB_URL/api/v1/health" >/dev/null
|
|
|
|
{
|
|
echo "# KB Briefing"
|
|
echo
|
|
echo "Generato: $(date '+%Y-%m-%d %H:%M:%S')"
|
|
echo "KB URL: $KB_URL"
|
|
echo
|
|
for query in "${QUERY_TERMS[@]}"; do
|
|
echo "## Query: $query"
|
|
echo
|
|
curl -fsS -H "X-API-Key: $API_KEY" \
|
|
--get \
|
|
--data-urlencode "q=$query" \
|
|
"$KB_URL/api/v1/search"
|
|
echo
|
|
echo
|
|
done
|
|
} > "$brief_file"
|
|
|
|
{
|
|
cat "$brief_file"
|
|
echo
|
|
echo "---"
|
|
echo
|
|
cat "$BACKLOG_FILE"
|
|
} > "$merged_file"
|
|
|
|
echo "KB brief written to: $brief_file"
|
|
echo "Merged backlog written to: $merged_file"
|
|
|
|
if [[ "$MODE" == "analyze" ]]; then
|
|
exec "$ORCH_BIN" analyze-backlog "$merged_file"
|
|
fi
|
|
|
|
exec "$ORCH_BIN" execute-task "$TASK_ID" --agent auto |