tongflow 0.0.1__py3-none-any.whl

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 (61) hide show
  1. tongflow/__init__.py +3 -0
  2. tongflow/__main__.py +6 -0
  3. tongflow/abi.py +33 -0
  4. tongflow/gen_models.py +109 -0
  5. tongflow/gen_node_slots.py +86 -0
  6. tongflow/models/__init__.py +1 -0
  7. tongflow/models/arrange_group.py +13 -0
  8. tongflow/models/asset.py +9 -0
  9. tongflow/models/audio_image_gen_video.py +13 -0
  10. tongflow/models/combine_text.py +13 -0
  11. tongflow/models/concat_videos.py +13 -0
  12. tongflow/models/drop_video.py +13 -0
  13. tongflow/models/extract_audio.py +13 -0
  14. tongflow/models/gen_music.py +13 -0
  15. tongflow/models/gen_speech.py +13 -0
  16. tongflow/models/gen_text.py +13 -0
  17. tongflow/models/gen_text_gemini.py +13 -0
  18. tongflow/models/gen_text_openai.py +13 -0
  19. tongflow/models/gen_video.py +13 -0
  20. tongflow/models/get_first_frame.py +13 -0
  21. tongflow/models/get_last_frame.py +13 -0
  22. tongflow/models/image_describe.py +13 -0
  23. tongflow/models/image_edit.py +13 -0
  24. tongflow/models/image_fusion.py +13 -0
  25. tongflow/models/image_gen.py +13 -0
  26. tongflow/models/image_gen_model.py +13 -0
  27. tongflow/models/image_gen_text.py +13 -0
  28. tongflow/models/image_gen_video.py +13 -0
  29. tongflow/models/image_image_gen_video.py +13 -0
  30. tongflow/models/image_upscale.py +13 -0
  31. tongflow/models/link.py +13 -0
  32. tongflow/models/merge_video_audio.py +13 -0
  33. tongflow/models/parse_document.py +13 -0
  34. tongflow/models/speech_image_video_gen_video.py +13 -0
  35. tongflow/models/speech_text_gen_video.py +13 -0
  36. tongflow/models/speech_video_gen_video.py +13 -0
  37. tongflow/models/split_text.py +13 -0
  38. tongflow/models/split_video.py +13 -0
  39. tongflow/models/text_gen_speech_clone.py +13 -0
  40. tongflow/models/text_gen_speech_emotion.py +13 -0
  41. tongflow/models/text_gen_speech_instruct.py +13 -0
  42. tongflow/models/text_gen_speech_style.py +13 -0
  43. tongflow/models/text_gen_video.py +13 -0
  44. tongflow/models/transcribe.py +17 -0
  45. tongflow/models/transcribe_timestamp.py +17 -0
  46. tongflow/models/video_describe.py +13 -0
  47. tongflow/models/video_gen_text.py +13 -0
  48. tongflow/models/video_image_gen_video_mix.py +13 -0
  49. tongflow/models/video_image_gen_video_move.py +13 -0
  50. tongflow/models/video_image_move_animal.py +13 -0
  51. tongflow/models/video_upscale.py +13 -0
  52. tongflow/models/wan_animate_mix.py +13 -0
  53. tongflow/node_slots.py +115 -0
  54. tongflow/parse_deploy.py +288 -0
  55. tongflow/protocol.py +29 -0
  56. tongflow/scan.py +335 -0
  57. tongflow/slots.py +17 -0
  58. tongflow-0.0.1.dist-info/METADATA +46 -0
  59. tongflow-0.0.1.dist-info/RECORD +61 -0
  60. tongflow-0.0.1.dist-info/WHEEL +5 -0
  61. tongflow-0.0.1.dist-info/top_level.txt +1 -0
tongflow/__init__.py ADDED
@@ -0,0 +1,3 @@
1
+ """Tongflow: Openflow plugin convention + deploy scan (no per-repo JSON)."""
2
+
3
+ __version__ = "0.0.1"
tongflow/__main__.py ADDED
@@ -0,0 +1,6 @@
1
+ from __future__ import annotations
2
+
3
+ from .scan import main
4
+
5
+ if __name__ == "__main__":
6
+ main()
tongflow/abi.py ADDED
@@ -0,0 +1,33 @@
1
+ from __future__ import annotations
2
+
3
+ import json
4
+ from dataclasses import dataclass
5
+ from pathlib import Path
6
+ from typing import Any, FrozenSet
7
+
8
+
9
+ @dataclass(frozen=True)
10
+ class Abi:
11
+ version: int
12
+ node_slots: FrozenSet[str]
13
+ path: Path
14
+
15
+
16
+ def load_abi(path: Path) -> Abi:
17
+ raw: dict[str, Any] = json.loads(path.read_text(encoding="utf-8"))
18
+ v = int(raw.get("version", 0))
19
+ if v != 1:
20
+ raise ValueError(f"Unsupported ABI version {v} in {path}")
21
+ nodes = raw.get("nodes")
22
+ if not isinstance(nodes, list) or not nodes:
23
+ raise ValueError("ABI 'nodes' must be a non-empty list")
24
+ slots: set[str] = set()
25
+ for n in nodes:
26
+ if not isinstance(n, dict):
27
+ continue
28
+ s = n.get("nodeSlot")
29
+ if isinstance(s, str) and s:
30
+ slots.add(s)
31
+ if not slots:
32
+ raise ValueError("No nodeSlot entries in ABI")
33
+ return Abi(version=1, node_slots=frozenset(slots), path=path)
tongflow/gen_models.py ADDED
@@ -0,0 +1,109 @@
1
+ from __future__ import annotations
2
+
3
+ import argparse
4
+ import json
5
+ import re
6
+ from pathlib import Path
7
+ from typing import Any
8
+
9
+
10
+ def slot_to_ident(slot: str) -> str:
11
+ s = slot.upper()
12
+ s = re.sub(r"[^A-Z0-9]+", "_", s).strip("_")
13
+ if not s:
14
+ return "UNKNOWN"
15
+ if s[0].isdigit():
16
+ s = f"S_{s}"
17
+ return s
18
+
19
+
20
+ def slot_to_module(slot: str) -> str:
21
+ # python module name
22
+ s = slot.lower()
23
+ s = re.sub(r"[^a-z0-9]+", "_", s).strip("_")
24
+ if not s:
25
+ return "unknown"
26
+ if s[0].isdigit():
27
+ s = f"s_{s}"
28
+ return s
29
+
30
+
31
+ def read_abi_nodes(abi_path: Path) -> list[dict[str, Any]]:
32
+ raw: dict[str, Any] = json.loads(abi_path.read_text(encoding="utf-8"))
33
+ nodes = raw.get("nodes")
34
+ if not isinstance(nodes, list):
35
+ raise ValueError("ABI missing nodes[]")
36
+ out: list[dict[str, Any]] = []
37
+ for n in nodes:
38
+ if isinstance(n, dict) and isinstance(n.get("nodeSlot"), str):
39
+ out.append(n)
40
+ return out
41
+
42
+
43
+ def write_models(out_dir: Path, nodes: list[dict[str, Any]]) -> None:
44
+ out_dir.mkdir(parents=True, exist_ok=True)
45
+ (out_dir / "__init__.py").write_text(
46
+ "\"\"\"Generated models from tongflow ABI.\"\"\"\n",
47
+ encoding="utf-8",
48
+ )
49
+
50
+ asset_py = (
51
+ "from __future__ import annotations\n\n"
52
+ "from typing import TypedDict\n\n\n"
53
+ "class Asset(TypedDict, total=False):\n"
54
+ " bytesBase64: str\n"
55
+ " filename: str\n"
56
+ " mime: str\n"
57
+ )
58
+ (out_dir / "asset.py").write_text(asset_py, encoding="utf-8")
59
+
60
+ for n in nodes:
61
+ slot = str(n["nodeSlot"])
62
+ mod = slot_to_module(slot)
63
+ cls = slot_to_ident(slot).title().replace("_", "")
64
+ input_name = f"{cls}Input"
65
+ output_name = f"{cls}Output"
66
+
67
+ # Only transcribe is strongly modeled for now.
68
+ if slot in ("transcribe", "transcribe_timestamp"):
69
+ text = (
70
+ "from __future__ import annotations\n\n"
71
+ "from typing import TypedDict\n"
72
+ "from .asset import Asset\n\n\n"
73
+ f"class {input_name}(TypedDict, total=False):\n"
74
+ " audio: Asset\n"
75
+ " context: str\n"
76
+ " language: str\n"
77
+ " max_new_tokens: float\n\n\n"
78
+ f"class {output_name}(TypedDict, total=False):\n"
79
+ " text: str\n"
80
+ " language: str\n"
81
+ " time_stamps: list[dict[str, float | str]]\n"
82
+ )
83
+ else:
84
+ text = (
85
+ "from __future__ import annotations\n\n"
86
+ "from typing import Any, TypedDict\n\n\n"
87
+ f"class {input_name}(TypedDict, total=False):\n"
88
+ " \"\"\"Fallback generic input. Tighten via ABI later.\"\"\"\n"
89
+ " _data: dict[str, Any]\n\n\n"
90
+ f"class {output_name}(TypedDict, total=False):\n"
91
+ " \"\"\"Fallback generic output. Tighten via ABI later.\"\"\"\n"
92
+ " _data: dict[str, Any]\n"
93
+ )
94
+ (out_dir / f"{mod}.py").write_text(text, encoding="utf-8")
95
+
96
+
97
+ def main() -> int:
98
+ ap = argparse.ArgumentParser()
99
+ ap.add_argument("--abi", type=Path, required=True)
100
+ ap.add_argument("--out-dir", type=Path, required=True)
101
+ ns = ap.parse_args()
102
+ nodes = read_abi_nodes(ns.abi)
103
+ write_models(ns.out_dir, nodes)
104
+ return 0
105
+
106
+
107
+ if __name__ == "__main__":
108
+ raise SystemExit(main())
109
+
@@ -0,0 +1,86 @@
1
+ from __future__ import annotations
2
+
3
+ import argparse
4
+ import json
5
+ import re
6
+ from pathlib import Path
7
+ from typing import Any
8
+
9
+
10
+ def slot_to_ident(slot: str) -> str:
11
+ s = slot.upper()
12
+ s = re.sub(r"[^A-Z0-9]+", "_", s).strip("_")
13
+ if not s:
14
+ return "UNKNOWN"
15
+ if s[0].isdigit():
16
+ s = f"S_{s}"
17
+ return s
18
+
19
+
20
+ def load_slots(abi_path: Path) -> list[str]:
21
+ raw: dict[str, Any] = json.loads(abi_path.read_text(encoding="utf-8"))
22
+ nodes = raw.get("nodes")
23
+ if not isinstance(nodes, list):
24
+ raise ValueError("ABI missing nodes[]")
25
+ out: list[str] = []
26
+ seen: set[str] = set()
27
+ for n in nodes:
28
+ if not isinstance(n, dict):
29
+ continue
30
+ s = n.get("nodeSlot")
31
+ if isinstance(s, str) and s and s not in seen:
32
+ seen.add(s)
33
+ out.append(s)
34
+ return out
35
+
36
+
37
+ def generate_node_slots_py(slots: list[str]) -> str:
38
+ lines: list[str] = []
39
+ lines.append('"""Generated from config/tongflow.abi.json. DO NOT EDIT."""')
40
+ lines.append("")
41
+ lines.append("from __future__ import annotations")
42
+ lines.append("")
43
+ lines.append("import re")
44
+ lines.append("from typing import Final")
45
+ lines.append("")
46
+ lines.append("")
47
+ lines.append("def _slot_to_ident(slot: str) -> str:")
48
+ lines.append(" s = slot.upper()")
49
+ lines.append(" s = re.sub(r\"[^A-Z0-9]+\", \"_\", s).strip(\"_\")")
50
+ lines.append(" if not s:")
51
+ lines.append(" return \"UNKNOWN\"")
52
+ lines.append(" if s[0].isdigit():")
53
+ lines.append(" s = f\"S_{s}\"")
54
+ lines.append(" return s")
55
+ lines.append("")
56
+ lines.append("")
57
+ lines.append("class NodeSlots:")
58
+ lines.append(" \"\"\"ABI nodeSlot constants. Use these in @node_slot(...)\"\"\"")
59
+ for slot in slots:
60
+ ident = slot_to_ident(slot)
61
+ lines.append(f" {ident}: Final[str] = {slot!r}")
62
+ lines.append("")
63
+ lines.append("")
64
+ lines.append("ALL_NODE_SLOTS: Final[tuple[str, ...]] = (")
65
+ for slot in slots:
66
+ lines.append(f" {slot!r},")
67
+ lines.append(")")
68
+ lines.append("")
69
+ return "\n".join(lines) + "\n"
70
+
71
+
72
+ def main() -> int:
73
+ ap = argparse.ArgumentParser()
74
+ ap.add_argument("--abi", type=Path, required=True)
75
+ ap.add_argument("--out", type=Path, required=True)
76
+ ns = ap.parse_args()
77
+
78
+ slots = load_slots(ns.abi)
79
+ text = generate_node_slots_py(slots)
80
+ ns.out.write_text(text, encoding="utf-8")
81
+ return 0
82
+
83
+
84
+ if __name__ == "__main__":
85
+ raise SystemExit(main())
86
+
@@ -0,0 +1 @@
1
+ """Generated models from tongflow ABI."""
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class ArrangeGroupInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class ArrangeGroupOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import TypedDict
4
+
5
+
6
+ class Asset(TypedDict, total=False):
7
+ bytesBase64: str
8
+ filename: str
9
+ mime: str
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class AudioImageGenVideoInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class AudioImageGenVideoOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class CombineTextInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class CombineTextOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class ConcatVideosInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class ConcatVideosOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class DropVideoInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class DropVideoOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class ExtractAudioInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class ExtractAudioOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class GenMusicInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class GenMusicOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class GenSpeechInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class GenSpeechOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class GenTextInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class GenTextOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class GenTextGeminiInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class GenTextGeminiOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class GenTextOpenaiInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class GenTextOpenaiOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class GenVideoInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class GenVideoOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class GetFirstFrameInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class GetFirstFrameOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class GetLastFrameInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class GetLastFrameOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class ImageDescribeInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class ImageDescribeOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class ImageEditInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class ImageEditOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class ImageFusionInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class ImageFusionOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class ImageGenInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class ImageGenOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class ImageGenModelInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class ImageGenModelOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class ImageGenTextInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class ImageGenTextOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class ImageGenVideoInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class ImageGenVideoOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class ImageImageGenVideoInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class ImageImageGenVideoOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class ImageUpscaleInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class ImageUpscaleOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class LinkInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class LinkOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class MergeVideoAudioInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class MergeVideoAudioOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class ParseDocumentInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class ParseDocumentOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class SpeechImageVideoGenVideoInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class SpeechImageVideoGenVideoOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TypedDict
4
+
5
+
6
+ class SpeechTextGenVideoInput(TypedDict, total=False):
7
+ """Fallback generic input. Tighten via ABI later."""
8
+ _data: dict[str, Any]
9
+
10
+
11
+ class SpeechTextGenVideoOutput(TypedDict, total=False):
12
+ """Fallback generic output. Tighten via ABI later."""
13
+ _data: dict[str, Any]