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.
Files changed (42) hide show
  1. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/PKG-INFO +1 -1
  2. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/__init__.py +1 -1
  3. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/ingest.py +22 -0
  4. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/pyproject.toml +1 -1
  5. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/vrex_flow_engine.egg-info/PKG-INFO +1 -1
  6. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/PYPI_README.md +0 -0
  7. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/README.md +0 -0
  8. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/bridge/__init__.py +0 -0
  9. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/bridge/flow_client.py +0 -0
  10. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/bridge/flow_sdk.py +0 -0
  11. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/bridge/ws_server.py +0 -0
  12. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/catalog.py +0 -0
  13. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/cli/__init__.py +0 -0
  14. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/cli/app.py +0 -0
  15. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/cli/config.py +0 -0
  16. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/cli/dashboard.py +0 -0
  17. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/cli/health.py +0 -0
  18. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/cli/processes.py +0 -0
  19. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/cli/supervisor.py +0 -0
  20. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/config.py +0 -0
  21. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/job_store.py +0 -0
  22. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/jobs.py +0 -0
  23. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/main.py +0 -0
  24. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/media.py +0 -0
  25. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/media_store.py +0 -0
  26. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/openai/__init__.py +0 -0
  27. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/openai/_util.py +0 -0
  28. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/openai/images.py +0 -0
  29. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/openai/models.py +0 -0
  30. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/openai/uploads.py +0 -0
  31. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/openai/videos.py +0 -0
  32. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/pool.py +0 -0
  33. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/posthog_client.py +0 -0
  34. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/session.py +0 -0
  35. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/video_context.py +0 -0
  36. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/flow_engine/video_context_store.py +0 -0
  37. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/setup.cfg +0 -0
  38. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/vrex_flow_engine.egg-info/SOURCES.txt +0 -0
  39. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/vrex_flow_engine.egg-info/dependency_links.txt +0 -0
  40. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/vrex_flow_engine.egg-info/entry_points.txt +0 -0
  41. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/vrex_flow_engine.egg-info/requires.txt +0 -0
  42. {vrex_flow_engine-0.2.4 → vrex_flow_engine-0.2.5}/vrex_flow_engine.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vrex-flow-engine
3
- Version: 0.2.4
3
+ Version: 0.2.5
4
4
  Summary: Launcher + supervisor and OpenAI-compatible image/video generation service (Vrex Flow Engine).
5
5
  Author: Vrex
6
6
  License: Proprietary
@@ -1,4 +1,4 @@
1
1
  """flow_engine — host a Flowboard browser-extension instance and expose
2
2
  OpenAI-compatible image/video generation endpoints over Google Flow."""
3
3
 
4
- __version__ = "0.2.4"
4
+ __version__ = "0.2.5"
@@ -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.4"
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"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vrex-flow-engine
3
- Version: 0.2.4
3
+ Version: 0.2.5
4
4
  Summary: Launcher + supervisor and OpenAI-compatible image/video generation service (Vrex Flow Engine).
5
5
  Author: Vrex
6
6
  License: Proprietary