Sanitize text fields in create_task to prevent NUL byte DataErrors (#4677)
This commit is contained in:
@@ -112,6 +112,7 @@ from skyvern.forge.sdk.schemas.workflow_copilot import (
|
|||||||
WorkflowCopilotChatSender,
|
WorkflowCopilotChatSender,
|
||||||
)
|
)
|
||||||
from skyvern.forge.sdk.schemas.workflow_runs import WorkflowRunBlock
|
from skyvern.forge.sdk.schemas.workflow_runs import WorkflowRunBlock
|
||||||
|
from skyvern.forge.sdk.utils.sanitization import sanitize_postgres_text
|
||||||
from skyvern.forge.sdk.workflow.models.parameter import (
|
from skyvern.forge.sdk.workflow.models.parameter import (
|
||||||
PARAMETER_TYPE,
|
PARAMETER_TYPE,
|
||||||
AWSSecretParameter,
|
AWSSecretParameter,
|
||||||
@@ -227,6 +228,18 @@ class AgentDB(BaseAlchemyDB):
|
|||||||
download_timeout: float | None = None,
|
download_timeout: float | None = None,
|
||||||
) -> Task:
|
) -> Task:
|
||||||
try:
|
try:
|
||||||
|
# Sanitize text fields to remove NUL bytes and control characters
|
||||||
|
# that PostgreSQL cannot store in text columns
|
||||||
|
def _sanitize(v: str | None) -> str | None:
|
||||||
|
return sanitize_postgres_text(v) if isinstance(v, str) else v
|
||||||
|
|
||||||
|
navigation_goal = _sanitize(navigation_goal)
|
||||||
|
data_extraction_goal = _sanitize(data_extraction_goal)
|
||||||
|
title = _sanitize(title)
|
||||||
|
url = sanitize_postgres_text(url)
|
||||||
|
complete_criterion = _sanitize(complete_criterion)
|
||||||
|
terminate_criterion = _sanitize(terminate_criterion)
|
||||||
|
|
||||||
async with self.Session() as session:
|
async with self.Session() as session:
|
||||||
new_task = TaskModel(
|
new_task = TaskModel(
|
||||||
status=status,
|
status=status,
|
||||||
|
|||||||
Reference in New Issue
Block a user