#!/usr/bin/env bash # Writes docs/output/12-api-facts.txt: the public API of every Spring AI class this repository # relies on, read from the jars the build resolves (not from documentation). set -euo pipefail cd "$(dirname "$0")/.." mkdir -p docs/output target mvn -B -q dependency:build-classpath -Dmdep.outputFile=target/classpath.txt >/dev/null CP="$(cat target/classpath.txt)" OUT=docs/output/12-api-facts.txt jar_of() { tr ':' '\n' < target/classpath.txt | grep "/$1-[0-9]" | head -1; } jp() { echo "## $1"; javap -cp "$CP" -public "$1" | grep -v '^Compiled' | sed 's/java\.util\.//g; s/java\.lang\.//g'; echo; } { echo "# Spring AI API facts, read with javap from the jars this build resolves" echo echo "spring-ai.version: $(grep -m1 -o '[^<]*' pom.xml | sed 's/.*>//')" echo echo "## classes in org/springframework/ai/rag (top level, from spring-ai-rag)" unzip -Z1 "$(jar_of spring-ai-rag)" | grep '\.class$' | grep -v '\$' | sed 's|org/springframework/ai/rag/||; s|\.class||' | sort echo echo "## classes anywhere in spring-ai-rag whose name contains \"rerank\": $(unzip -Z1 "$(jar_of spring-ai-rag)" | grep -ic rerank || true)" echo echo "## classes in any jar on this project's classpath whose name contains \"SemanticSearchCache\" or \"SemanticCache\": $(for j in $(tr ':' '\n' < target/classpath.txt); do unzip -Z1 "$j" 2>/dev/null; done | grep -Eic 'SemanticSearchCache|SemanticCache' || true)" echo jp org.springframework.ai.transformer.splitter.TokenTextSplitter jp 'org.springframework.ai.transformer.splitter.TokenTextSplitter$Builder' jp org.springframework.ai.reader.pdf.PagePdfDocumentReader jp 'org.springframework.ai.reader.pdf.config.PdfDocumentReaderConfig$Builder' jp org.springframework.ai.rag.postretrieval.document.DocumentPostProcessor jp org.springframework.ai.rag.retrieval.search.VectorStoreDocumentRetriever jp 'org.springframework.ai.rag.retrieval.search.VectorStoreDocumentRetriever$Builder' jp 'org.springframework.ai.rag.generation.augmentation.ContextualQueryAugmenter$Builder' jp 'org.springframework.ai.rag.advisor.RetrievalAugmentationAdvisor$Builder' jp 'org.springframework.ai.chat.client.advisor.vectorstore.QuestionAnswerAdvisor$Builder' jp org.springframework.ai.chat.evaluation.FactCheckingEvaluator jp org.springframework.ai.vectorstore.VectorStore jp 'org.springframework.ai.vectorstore.SearchRequest$Builder' } > "$OUT" echo "wrote $OUT"