Commit History
-
[NOTICKET][AI] feat(chat): wire Orchestrator -> slow path at the endpoint (env-gated)
Rifqi Hafizuddin +1: Claude Opus 4.8The slow path (Planner -> TaskRunner -> Assembler) was reachable in ChatHandler but never enabled from the live endpoint. Wire it so the team can test end-to-end from /chat/stream, behind an env flag so it stays opt-in until the lead's real BusinessContext lands (it's still a stub). - settings.enable_slow_path (env ENABLE_SLOW_PATH, default False). - api/v1/chat.py passes it to the shared ChatHandler. - ENABLE_SLOW_PATH=true → structured intents route through the slow path and stream status progress + the assembled answer; default keeps the single-query QueryService path. Fast/unstructured paths unchanged. Verified: toggle flips handler._enable_slow_path; wiring tests pass; live run through ChatHandler.handle confirmed earlier this session. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>636290e -
[NOTICKET][AI] Planner: drop parallelizable_with from Task
Rifqi Hafizuddin +1: Claude Opus 4.8Remove the unused parallelizable_with field and its validator check (5). TaskRunner derives parallelism from depends_on alone, so the field was redundant. Strips it from schema, validator, all few-shots (A-D), and the planner prompt. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>272a186
-
[KM-626][AI] Slow-path agent: Assembler + Coordinator
Rifqi Hafizuddin +1: Claude Opus 4.8The write-up half of the slow path (AGENT_ARCHITECTURE_CONTEXT_new.md §7.5, §8.3). - assembler.py + prompt.py + config/prompts/assembler.md: single LLM call -> AssemblerNarrative; code merges it with the RunState to build the AnalysisRecord (results_snapshot / tasks_run / metadata copied from RunState, never re-authored by the model, so the record stays a faithful source of truth). chat_answer is the first output field so it streams via SSE. Chain construction mirrors the planner service. - coordinator.py: SlowPathCoordinator wires Planner -> TaskRunner -> Assembler. Built and tested, but NOT yet wired into the live ChatHandler. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>e4337a8 -
[KM-624][AI] Planner: realign stub registry + examples to composite analyze_* tools
Rifqi Hafizuddin +1: Claude Opus 4.8Team decision: v1 uses composite "family" tools (analyze_*), not the atomic compute_* set. Realign the planner-facing stub to the real KM-624 inventory so the Planner plans against tools that exist. - registry.py: replace the 9 atomic entries (compute_median/stddev/percentile/ mode, date_trunc, ...) with 12 composite entries -- 4 data-access (query_structured, retrieve_documents, list_sources, describe_source) + 8 analyze_* (descriptive, aggregate, comparison, contribution, profile, correlation, segment, trend). Each analyze_* takes a `data` "${t<id>}" placeholder (Pattern A, assumed pending the tool team). - examples.py: Example A -> analyze_contribution; Example B -> analyze_trend (drops the removed date_trunc/compute_stddev chain). - planner.md: rewrite the "compute_* tools" bullet as data-access vs analytics. Validator/prompt/service unchanged (generic over the registry). Planner tests updated locally (tests/ is gitignored): 32 passing + 1 gated, ruff clean. Co-Autho…93a24da
-
[KM-567][AI] Planner agent: prompt + few-shot examples
Rifqi Hafizuddin +1: Claude Opus 4.8- prompt.py: build_planner_prompt assembles per-call human content (business context + condensed catalog + tool list + constraints + examples + question, plus prior error on retry). - config/prompts/planner.md: system prompt encoding INV-1/6/7 and the planning principles. - examples.py: two few-shot TaskLists (A exploratory revenue-by-category; B descriptive monthly-trend-by-region with date_trunc), built from the real TaskList schema so they cannot drift from the output contract. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>83ba6b1
-
[KM-582][DED][AI] Fix Retrieval in Agentic Service
ticket: https://bukittechnology.atlassian.net/browse/KM-582 fix: replace LangChain ORM retrieval with raw SQL and fix pgvector collection name - Rewrite DocumentRetriever.retrieve() using raw SQL cosine/manhattan queries instead of LangChain PGVector ORM, bypassing asyncpg type-mapping issues (id String vs UUID column, jsonb_path_match binding quirks) - Fix _COLLECTION_NAME from "document_embeddings" to "documents" to match the collection name set by the Golang ingestion service - Fix collection_name in vector_store.py to match consistently - Fix Redis chat cache to store {response, sources} dict so cached replies also populate message_sources table - Add cache management endpoints: DELETE /chat/cache, /chat/cache/room/{id}, /retrieval/cache/{user_id} - Invalidate retrieval cache automatically after document processing - Update intent_router prompt: route topical/knowledge questions to unstructured even without explicit document mention; prefer unstructured when ambiguous…61c746f
-
[NOTICKET] fix: add SKIP_INIT_DB flag and remove pymongo dependency
- Add SKIP_INIT_DB env variable to skip database initialization on startup, useful for local dev when DB is not available - Remove pymongo dependency (unused, replaced by PostgreSQL-based user storage) - Comment out unused MongoDB settings in Settings class - Update .gitignore: add API_CONTRACT_AGENT*.md and migratego/ - Remove .vscode/launch.json (superseded by uv run fastapi dev)19bd037
-
feat/Catalog Retrieval System (#1)
- initial commit (8557a2045ca2c0873e07efdf6227064b83e4a1e5) - initial structure (efc0c0a8b2444014cbe74f04617c3c974d9915be) - [KM-553] initialize shared contract (f31f6731692b0199d8cb5c5d29dffa466d6d4ca0) - [KM-553] migrate retrieval layer and remove obsolete rag/tools modules (df220ea47c96eb8a1efa07c6eebef4604fc308d6) - [NOTICKET] catalog enricher + structured pipeline + on_db_registered (77ea82d29d86400c5ed30ac154be8df6a7e897eb) - Merge commit 'refs/pr/1' of https://huggingface.co/spaces/DataEyond/Agentic-Service-Data-Eyond-Catalog into pr/1 (0ae8717c7efce2cda14fe4b8caecd774459b1f6e) - [NOTICKET] SqlCompiler (Postgres) + DbExecutor (212dad360714508c1aa607995039e6818fa40f78) - Merge commit 'refs/pr/1' of https://huggingface.co/spaces/DataEyond/Agentic-Service-Data-Eyond-Catalog into pr/1 (faf8a4f6d7e06ccf1ce84c2e7f4990c79f27f843) - TabularIntrospector + on_tabular_uploaded trigger + 31 tests (ca425208969b72a20ed76f86ef0faa1a0e912339) - [KM 556] add columns field to QueryResult + update…6bff5d9
-
[KM-496] [DED][AI] Fix Response data structure for field sources (db flow)
5c4067e -
[NOTICKET][DB] add endpoints for dbtypes (#6)
- [noticket] add gitignore (c87f27f458854787102eebc110b178c2572ef8a6) - [NOTICKET]: add document pipeline, simplify document API (fb871f3d7db9c5a9c95a012761c4180a432e7e4b) - [NOTICKET]: update folder document_pipelines after pipelines (a4cf97ab3890e35831c0043a1d411c17d84f374b) - [NOTICKET][DB] refactor code to new repo (7f3bb9782bb9b6ace69e6be35377c12757a2f81d) - [KM-441] add mean and median (9b5933420821187e73bb72a896e28d7adf6d6137) - [NOTICKET] new metadata format for cleaner code (6b590d94c398ac4966a0e376f2809aa52c5ba022) - update document (5a69e0eecf80dd807565dbc369374e41450c37fc) - delete duplicate file (3848d7b262745b758069e3ab8089437ced42a45f) - edit document for new pipeline (425e021053c4de65e2598b0f5554b7c1044a904c) - [NOTICKET]: add CSV and XLSX file type (31920c3bc6f9faf9e07095a02fc1faf08adc246e) - [DB] fix/rename db_pipeline.py (d913315c356d741cc7a5a5b1f8e36ba41397f2ab) - [NOTICKET][DB] menyesuaikan format struktur db_pipeline sesuai dengan file lain (e13a9017e0f7fd26ef9b8a…c7d59cf
-
[KM-436][KM-437] add and modify for database and document pipeline (#3)
- [noticket] add gitignore (c87f27f458854787102eebc110b178c2572ef8a6) - [NOTICKET]: add document pipeline, simplify document API (fb871f3d7db9c5a9c95a012761c4180a432e7e4b) - [NOTICKET]: update folder document_pipelines after pipelines (a4cf97ab3890e35831c0043a1d411c17d84f374b) - [NOTICKET][DB] refactor code to new repo (7f3bb9782bb9b6ace69e6be35377c12757a2f81d) - [KM-441] add mean and median (9b5933420821187e73bb72a896e28d7adf6d6137) - [NOTICKET] new metadata format for cleaner code (6b590d94c398ac4966a0e376f2809aa52c5ba022) - update document (5a69e0eecf80dd807565dbc369374e41450c37fc) - delete duplicate file (3848d7b262745b758069e3ab8089437ced42a45f) - edit document for new pipeline (425e021053c4de65e2598b0f5554b7c1044a904c) - [NOTICKET]: add CSV and XLSX file type (31920c3bc6f9faf9e07095a02fc1faf08adc246e) - [DB] fix/rename db_pipeline.py (d913315c356d741cc7a5a5b1f8e36ba41397f2ab) - [NOTICKET][DB] menyesuaikan format struktur db_pipeline sesuai dengan file lain (e13a9017e0f7fd26ef9b8a…2ba0613
-
[KM-467] [DED][AI] Orchestration Agent - Init
- https://bukittechnology.atlassian.net/browse/KM-467027123c