Align workflow file runtime protocols with actual httpx response behavior so strict type checks pass consistently in CI.
Changes
- Update HttpResponseProtocol.content to a read-only property, matching httpx.Response semantics.
- Relax HttpResponseProtocol.raise_for_status return type to object, compatible with httpx returning self.
- Mark _UnconfiguredWorkflowFileRuntime._raise as NoReturn to remove false positive "must return value on all code paths" errors for protocol methods.
Context
- Fixes type-check failures from basedpyright on:
- core/app/workflow/file_runtime.py
- core/workflow/file/runtime.py
Verification
- basedpyright on touched workflow-file modules reports 0 errors.
Complete phase 2 of the file module migration by replacing the remaining repository-wide legacy imports and deleting the temporary core.file compatibility package introduced in phase 1.
What this commit changes
- Replace legacy core.file.* imports with core.workflow.file.* across:
- controllers
- core app/agent/datasource/prompt/rag/tools/variables
- factories, fields, libs, models, services
- otel parser integration points
- unit and integration tests that referenced legacy paths
- Migrate residual runtime usages in app/task pipeline paths that still referenced core.file symbols.
- Update tests and model serialization helpers that relied on old module paths.
- Remove the compatibility bridge package entirely:
- delete core/file/__init__.py
- delete core/file/constants.py
- delete core/file/enums.py
- delete core/file/file_manager.py
- delete core/file/helpers.py
- delete core/file/models.py
- delete core/file/tool_file_parser.py
Verification
- No Python references to core.file remain ( -> empty).
- Targeted regression tests for migrated file primitives and factory/type flows passed:
- tests/unit_tests/core/test_file.py
- tests/unit_tests/factories/test_variable_factory.py
- tests/unit_tests/services/test_variable_truncator.py
Result
- The repository now uses core.workflow.file as the single canonical file namespace.
- The migration is fully split into two commits: phase 1 compatibility + phase 2 full cutover.
Implement phase 1 of the file module migration by moving workflow-facing file primitives to core.workflow.file while keeping core.file as a temporary compatibility layer.
What this commit changes
- Add core.workflow.file package (constants/enums/models/helpers/file_manager/tool_file_parser).
- Add protocol-based runtime binding in core.workflow.file.runtime and core.workflow.file.protocols.
- Add application adapter core.app.workflow.file_runtime and bind runtime in extensions.ext_storage.init_app.
- Bind runtime in tests via tests/conftest.py.
- Migrate workflow-only imports from core.file.* to core.workflow.file.* across workflow runtime/nodes/entry/encoder and workflow node factory.
- Update workflow unit tests to patch/import the new workflow file namespace.
- Remove workflow-external-imports ignore_imports entries related to core.file from .importlinter.
Compatibility guarantee for phase split
- Keep core.file import path available in this phase by replacing core/file/*.py with forwarding bridge modules that re-export core.workflow.file symbols.
- Preserve runtime behavior and isinstance(File) identity consistency while non-workflow modules are still on legacy import paths.
Notes
- This commit intentionally does not remove core.file. Full repository replacement and bridge removal are handled in phase 2.