{"record":{"id":"ac1737c086acf278","repo":"calesthio/OpenMontage","slug":"task-action-must-be-generate-create-query-or-ca","errorCode":null,"errorMessage":"task_action must be generate, create, query, or cancel","messagePattern":"task_action must be generate, create, query, or cancel","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"tools/video/seedance_ark.py","lineNumber":538,"sourceCode":"                            else \"estimated\"\n                        ),\n                    }\n                )\n            result[\"valid\"] = True\n        except (TypeError, ValueError, OSError) as exc:\n            result[\"valid\"] = False\n            result[\"error\"] = self._safe_error(exc)\n        return result\n\n    def execute(self, inputs: dict[str, Any]) -> ToolResult:\n        \"\"\"Create, query, cancel, or synchronously finish an Ark task.\"\"\"\n        started = time.time()\n        action = str(inputs.get(\"task_action\", \"generate\"))\n        task_id: str | None = None\n        estimated_cost_usd = 0.0\n        try:\n            if action not in {\"generate\", \"create\", \"query\", \"cancel\"}:\n                raise ValueError(\n                    \"task_action must be generate, create, query, or cancel\"\n                )\n            if action in {\"query\", \"cancel\"}:\n                self._validate_task_id(inputs.get(\"task_id\"))\n            else:\n                payload = self._build_payload(inputs)\n                # Complete all local cost/config parsing before the paid POST.\n                # A malformed exchange-rate override must never create an\n                # untracked task and then fail while constructing ToolResult.\n                estimated_cost_usd = self.estimate_cost(inputs)\n        except (TypeError, ValueError, OSError) as exc:\n            return ToolResult(success=False, error=self._safe_error(exc))\n\n        api_key = self._get_api_key()\n        if not api_key:\n            return ToolResult(\n                success=False,\n                error=\"ARK_API_KEY not set. \" + self.install_instructions,","sourceCodeStart":520,"sourceCodeEnd":556,"githubUrl":"https://github.com/calesthio/OpenMontage/blob/95e1c3d0ab93482159818560f6a8c8e866b9139f/tools/video/seedance_ark.py#L520-L556","documentation":"Raised at the top of `execute()`: `task_action` (defaulting to 'generate') must be one of generate, create, query, or cancel. The tool multiplexes four operations on one entry point and dispatches on this string — anything else means the caller's intent is unknown, so the request is rejected before any validation or paid call. `dry_run` performs the same gate.","triggerScenarios":"Passing `task_action: \"status\"`, `\"delete\"`, `\"poll\"`, or a typo like `\"creat\"`; passing None explicitly (str(None)='none'); assuming another tool's action vocabulary applies here.","commonSituations":"Porting call code from a different provider tool whose actions are named differently; LLM-generated inputs guessing action names; casing mistakes like 'Generate' (str() is compared case-sensitively against the set).","solutions":["Use one of the four accepted values: 'generate' (alias of create), 'create', 'query', or 'cancel'","Use lowercase — the comparison is case-sensitive","For checking a task use `task_action: 'query'` with `task_id`; for aborting use 'cancel'"],"exampleFix":"# before\ninputs = {\"task_action\": \"status\", \"task_id\": \"csm18k...\"}\n# after\ninputs = {\"task_action\": \"query\", \"task_id\": \"csm18k...\"}","handlingStrategy":"validation","validationCode":"action = str(inputs.get(\"task_action\", \"generate\")).lower()\nif action not in {\"generate\", \"create\", \"query\", \"cancel\"}:\n    raise ValueError(f\"unsupported task_action {action!r}\")","typeGuard":"def is_valid_action(a: object) -> bool:\n    return str(a) in {\"generate\", \"create\", \"query\", \"cancel\"}","tryCatchPattern":null,"preventionTips":["Centralize action constants in your caller instead of inline strings","Remember generate==create; use query/cancel with task_id"],"tags":["seedance","ark","input-validation","task-management"],"backgroundTag":null,"analyzedSha":"95e1c3d0ab93482159818560f6a8c8e866b9139f","analyzedAt":"2026-08-15T06:31:20.014Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}