Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
67977c0
fix: resolve pre-existing TS errors and install RAG dependencies
kkartunov Aug 19, 2026
f376c77
feat: add lazy RAG config and embedding factory (Phase 1)
kkartunov Aug 19, 2026
759f5b3
feat: add challenge vector store with lazy singleton and dimension guard
kkartunov Aug 20, 2026
5cc0d40
feat: add pure RAG library (content, chunking, ingestion utils) with …
kkartunov Aug 20, 2026
64aacd4
feat: add projectId and groups to fetchChallengeTool output schema
kkartunov Aug 20, 2026
877473f
feat: add searchChallengesTool wrapping M2M GET /v6/challenges with f…
kkartunov Aug 20, 2026
33f2c9b
feat: add challenge-ingestion-workflow with 3-step pipeline and unit …
kkartunov Aug 20, 2026
038473f
feat: add challenge-bulk-ingestion workflow with paginated search fan…
kkartunov Aug 21, 2026
75d5a37
docs: add ADR 0001 for challenges vector RAG integration
kkartunov Aug 24, 2026
e9b6fac
feat: add challenge-search retrieval — shared tool, agent, determinis…
kkartunov Aug 24, 2026
8d743c2
feat: add CSV backfill and sync CLIs sharing the ingestion workflows
kkartunov Aug 24, 2026
b6dfdd7
docs: document challenges vector RAG in README and .env.sample
kkartunov Aug 24, 2026
7fb91b2
clean up wipro provider
kkartunov Aug 24, 2026
7cc8ec5
adds chat history memory to tc challenge assistant
kkartunov Aug 24, 2026
f403e0e
Merge pull request #20 from topcoder-platform/challenges-rag
kkartunov Aug 24, 2026
bd06d9a
docs: sync README Agents/Tools with the current codebase
kkartunov Aug 24, 2026
5ca6e1f
Fixed auth and per-user resource isolation & enable chat routes
kkartunov Aug 25, 2026
ebc4139
Merge pull request #21 from topcoder-platform/challenges-rag
kkartunov Aug 25, 2026
a806173
add auth logs
kkartunov Aug 25, 2026
56fba54
Merge pull request #22 from topcoder-platform/challenges-rag
kkartunov Aug 25, 2026
f900d02
dump only resourceId on auth resolve
kkartunov Aug 25, 2026
60f6065
Merge pull request #23 from topcoder-platform/challenges-rag
kkartunov Aug 25, 2026
e0de281
fix tests for auth breaking the build
kkartunov Aug 25, 2026
4ff1d6e
Merge pull request #24 from topcoder-platform/challenges-rag
kkartunov Aug 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion .env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,15 @@ M2M_AUTH_AUDIENCE="[M2M_AUTH_AUDIENCE]"
WORKSPACE_PATH="[ABS PATH_TO_WORKSPACE_FOLDER]"
WIPRO_API_KEY="[WIPRO_API_KEY]"
LOG_LEVEL="[LOG_LEVEL]"
MASTRA_STUDIO_PATH="[ABS PATH_TO_MASTRA_STUDIO_OUTPUT_FOLDER]"
MASTRA_STUDIO_PATH="[ABS PATH_TO_MASTRA_STUDIO_OUTPUT_FOLDER]"

# ============== Challenges Vector RAG (all optional, defaults shown) ==============
RAG_EMBEDDING_PROVIDER="[TC-Ollama|AWSBedrock — default TC-Ollama]"
RAG_EMBEDDING_MODEL_ID="[nomic-embed-text|amazon.titan-embed-text-v2:0 — default nomic-embed-text]"
VECTOR_INDEX_NAME="[SQL identifier — default challenge_embeddings]"
VECTOR_SEARCH_THRESHOLD="[0-1 — default 0.5]"
RAG_CHUNK_MAX_SIZE="[characters — default 512]"
RAG_CHUNK_OVERLAP="[characters — default 50]"
RAG_TOP_K="[default 10]"
CHALLENGE_SEARCH_AI_PROVIDER="[TC-Ollama|WiproAI|AWSBedrock|OpenAI — default AWSBedrock]"
CHALLENGE_SEARCH_AI_MODEL_ID="[default us.anthropic.claude-haiku-4-5]"
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ dist
*.db-*
.vscode
test-data
.env.sh
.env.sh
logs/
212 changes: 206 additions & 6 deletions README.md

Large diffs are not rendered by default.

793 changes: 793 additions & 0 deletions docs/adr/0001-integrate-challenges-vector-rag.md

Large diffs are not rendered by default.

28 changes: 18 additions & 10 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@
"format": "prettier . --write",
"format:check": "prettier . --check",
"studio": "mastra studio",
"test:watch": "vitest"
"test:watch": "vitest",
"ingest": "tsx --env-file=.env src/scripts/ingest-challenges.ts",
"sync": "tsx --env-file=.env src/scripts/sync-challenges.ts"
},
"keywords": [],
"author": "Kiril Kartunov",
Expand All @@ -28,28 +30,34 @@
"@ai-sdk/amazon-bedrock": "^4.0.121",
"@ai-sdk/openai": "^3.0.74",
"@aws-sdk/credential-providers": "^3.1075.0",
"@mastra/auth-auth0": "^1.2.1",
"@mastra/core": "^1.57.0",
"@mastra/evals": "^1.7.0",
"@mastra/libsql": "^1.19.0",
"@mastra/ai-sdk": "^1.9.1",
"@mastra/auth-auth0": "^1.2.2",
"@mastra/core": "^1.61.0",
"@mastra/evals": "^1.9.0",
"@mastra/libsql": "^1.21.1",
"@mastra/loggers": "^1.2.0",
"@mastra/memory": "^1.26.0",
"@mastra/observability": "^1.16.5",
"@mastra/pg": "^1.19.0",
"@mastra/memory": "^1.27.0",
"@mastra/observability": "^1.17.1",
"@mastra/pg": "^1.21.1",
"@mastra/rag": "^2.6.0",
"@opentelemetry/exporter-logs-otlp-proto": "^0.221.0",
"@opentelemetry/exporter-trace-otlp-proto": "^0.221.0",
"@topcoder/wipro-ai-sdk-provider": "git+https://git.topcoder.com/Topcoder-Platform/Wipro-Provider-AI-SDK.git",
"ai": "^6.0.209",
"ai-sdk-ollama": "^3.8.8",
"csv-parse": "^7.0.2",
"js-tiktoken": "^1.0.21",
"tc-core-library-js": "^2.4.1",
"turndown": "^7.2.4",
"zod": "^4.4.3"
},
"devDependencies": {
"@eslint/js": "^10.0.1",
"@types/node": "^26.0.1",
"@types/turndown": "^5.0.6",
"eslint": "^10.5.0",
"mastra": "^1.23.0",
"mastra": "^1.26.0",
"prettier": "^3.8.4",
"tsx": "^4.23.12",
"typescript": "^6.0.3",
"typescript-eslint": "^8.62.0",
"vitest": "^4.1.9"
Expand Down
Loading