gateway/modules/serviceCenter/services/serviceAgent/coreTools
Ida dff3d41845 fix(rag): stable ingestion idempotency across re-extractions (AC4)
Re-indexing the same file always triggered a full embedding run —
ingestion.skipped.duplicate never fired. Two independent causes:

1. _computeIngestionHash included contentObjectId in its payload, but
   extractors generate fresh uuid4() per run, making the hash a
   per-run nonce. Now hashed over (contentType, data) in extractor
   order — stable across re-extractions, sensitive to content,
   ordering, and type changes.
2. _autoIndexFile upserted the fresh pre-scan FileContentIndex before
   requestIngestion's duplicate check, wiping structure._ingestion
   and status=indexed from the prior run. The pre-upsert now merges
   the existing _ingestion metadata and preserves the indexed status.

Verified end-to-end: second PATCH /scope on an already-indexed file
logs  and returns in ~2s
with zero embedding API calls.

Adds test_ingestion_hash_stability.py (5 cases).
2026-04-29 14:39:40 +02:00
..
__init__.py automation unification implemented 2026-04-07 00:49:08 +02:00
_connectionTools.py fix:merge conflicts clickup branch 2026-04-17 13:31:38 +02:00
_crossWorkflowTools.py automation unification implemented 2026-04-07 00:49:08 +02:00
_dataSourceTools.py wired infomaniac to ai adapters and tools 2026-04-29 01:52:47 +02:00
_documentTools.py fix(rag): stable ingestion idempotency across re-extractions (AC4) 2026-04-29 14:39:40 +02:00
_emailTools.py fixes udb, outlook, workflow 2026-04-21 23:49:46 +02:00
_featureSubAgentTools.py fixed trustee 2026-04-26 23:59:09 +02:00
_helpers.py wired infomaniac to ai adapters and tools 2026-04-29 01:52:47 +02:00
_mediaTools.py wired infomaniac to ai adapters and tools 2026-04-29 01:52:47 +02:00
_workspaceTools.py fix(rag): stable ingestion idempotency across re-extractions (AC4) 2026-04-29 14:39:40 +02:00
registerCore.py fixes udb, outlook, workflow 2026-04-21 23:49:46 +02:00