{
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/scripts\/pipeline\/db.py",
"content": "\n try:\n conn = mysql.connector.connect(**DB_CONFIG)\n cursor = conn.cursor(dictionary=True)\n cursor.execute(\"SELECT status FROM pipeline_runs WHERE id = %s\", (self.run_id,))\n result = cursor.fetchone()\n cursor.close()\n conn.close()\n return result and result[\"status\"] == \"cancelled\"\n except Exception:\n return False\n\n\n # Provenance Logging\n def log_provenance(\n self,\n artifact_type: str,\n artifact_id: int,\n source_type: str,\n source_id: int = None,\n pipeline_run_id: int = None,\n pipeline_step: str = None,\n model_used: str = None,\n prompt_version: str = None,\n ) -> int:\n \"\"\"\n Log artifact provenance for traceability.\n\n Args:\n artifact_type: Type of artifact (document, chunk, entity, relation, statement, embedding)\n artifact_id: ID of the artifact\n source_type: How it was created (file, extraction, analysis, merge, manual)\n source_id: Optional source artifact ID\n pipeline_run_id: Optional pipeline run ID\n pipeline_step: Optional step name (e.g., 'entity_extract')\n model_used: Optional model name (e.g., 'claude-opus-4-5-20251101')\n prompt_version: Optional prompt version\n\n Returns:\n Provenance record ID\n \"\"\"\n try:\n cursor = self.execute(\n \"\"\"INSERT INTO provenance\n (artifact_type, artifact_id, source_type, source_id,\n pipeline_run_id, pipeline_step, model_used, prompt_version, created_at)\n VALUES (%s, %s, %s, %s, %s, %s, %s, %s, NOW())\"\"\",\n (\n artifact_type,\n artifact_id,\n source_type,\n source_id,\n pipeline_run_id,\n pipeline_step,\n model_used,\n prompt_version,\n ),\n )\n self.commit()\n provenance_id = cursor.lastrowid\n cursor.close()\n return provenance_id\n except Exception as e:\n self.log(\"WARNING\", f\"Failed to log provenance: {e}\")\n return None\n\n\n# Global database instance\ndb = Database()\n",
"numLines": 70,
"startLine": 410,
"totalLines": 479
}
}
}