vrex-flow-engine 0.2.4__tar.gz → 0.2.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/PKG-INFO +1 -1
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/__init__.py +1 -1
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/ingest.py +22 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/pyproject.toml +1 -1
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/vrex_flow_engine.egg-info/PKG-INFO +1 -1
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/PYPI_README.md +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/README.md +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/bridge/__init__.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/bridge/flow_client.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/bridge/flow_sdk.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/bridge/ws_server.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/catalog.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/cli/__init__.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/cli/app.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/cli/config.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/cli/dashboard.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/cli/health.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/cli/processes.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/cli/supervisor.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/config.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/job_store.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/jobs.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/main.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/media.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/media_store.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/openai/__init__.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/openai/_util.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/openai/images.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/openai/models.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/openai/uploads.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/openai/videos.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/pool.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/posthog_client.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/session.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/video_context.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/video_context_store.py +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/setup.cfg +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/vrex_flow_engine.egg-info/SOURCES.txt +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/vrex_flow_engine.egg-info/dependency_links.txt +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/vrex_flow_engine.egg-info/entry_points.txt +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/vrex_flow_engine.egg-info/requires.txt +0 -0
- {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/vrex_flow_engine.egg-info/top_level.txt +0 -0
|
@@ -23,6 +23,7 @@ from fastapi import HTTPException
|
|
|
23
23
|
|
|
24
24
|
from flow_engine import media as media_service
|
|
25
25
|
from flow_engine.bridge.flow_sdk import FlowSDK
|
|
26
|
+
from flow_engine.config import PUBLIC_BASE_URL
|
|
26
27
|
|
|
27
28
|
logger = logging.getLogger(__name__)
|
|
28
29
|
|
|
@@ -57,6 +58,18 @@ async def resolve_video_inputs(
|
|
|
57
58
|
return await _resolve(sdk, project_id, inputs, want="video")
|
|
58
59
|
|
|
59
60
|
|
|
61
|
+
def _local_media_id(item: str) -> Optional[str]:
|
|
62
|
+
"""Media id from one of our own ``/media/<id>`` URLs, else None."""
|
|
63
|
+
base = (PUBLIC_BASE_URL or "").rstrip("/")
|
|
64
|
+
if not base or not item.startswith(f"{base}/media/"):
|
|
65
|
+
return None
|
|
66
|
+
tail = item[len(base) + len("/media/"):]
|
|
67
|
+
candidate = media_service.normalize_media_id(
|
|
68
|
+
tail.split("?", 1)[0].split("#", 1)[0].split("/", 1)[0]
|
|
69
|
+
)
|
|
70
|
+
return candidate if media_service.is_valid_media_id(candidate) else None
|
|
71
|
+
|
|
72
|
+
|
|
60
73
|
async def _resolve(
|
|
61
74
|
sdk: FlowSDK, project_id: str, inputs: Optional[list[str]], *, want: str
|
|
62
75
|
) -> list[str]:
|
|
@@ -65,6 +78,15 @@ async def _resolve(
|
|
|
65
78
|
if not isinstance(raw, str) or not raw.strip():
|
|
66
79
|
continue
|
|
67
80
|
item = raw.strip()
|
|
81
|
+
# A URL pointing back at our own /media/<id> route is a Flow media id
|
|
82
|
+
# wearing a URL — the id in the path IS the upstream id. Fetching it
|
|
83
|
+
# would send the engine out through its own public hostname and back,
|
|
84
|
+
# which is wasted work at best and a hang at worst when a proxy sits in
|
|
85
|
+
# front and refuses non-browser agents.
|
|
86
|
+
local = _local_media_id(item)
|
|
87
|
+
if local:
|
|
88
|
+
out.append(local)
|
|
89
|
+
continue
|
|
68
90
|
# Already a Flow media id? Pass it through. A UUID-shaped id is hex +
|
|
69
91
|
# dashes; data:/http: URLs and base64 payloads never match, so this is
|
|
70
92
|
# an unambiguous discriminator.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "vrex-flow-engine"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.5"
|
|
4
4
|
description = "Launcher + supervisor and OpenAI-compatible image/video generation service (Vrex Flow Engine)."
|
|
5
5
|
# Neutral public description (the in-repo README.md carries the full internal docs).
|
|
6
6
|
readme = "PYPI_README.md"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/vrex_flow_engine.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/vrex_flow_engine.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|