omegaflow-studio 0.1.0__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 (59) hide show
  1. omegaflow_studio-0.1.0/.github/workflows/deploy-website.yml +50 -0
  2. omegaflow_studio-0.1.0/.github/workflows/publish.yml +49 -0
  3. omegaflow_studio-0.1.0/.gitignore +184 -0
  4. omegaflow_studio-0.1.0/LICENSE +21 -0
  5. omegaflow_studio-0.1.0/PKG-INFO +46 -0
  6. omegaflow_studio-0.1.0/README.md +30 -0
  7. omegaflow_studio-0.1.0/docs/future/arbiter-cleanup.md +27 -0
  8. omegaflow_studio-0.1.0/docs/future/branching-routing-design.md +300 -0
  9. omegaflow_studio-0.1.0/docs/future/ideas.md +122 -0
  10. omegaflow_studio-0.1.0/docs/future/prototype/core/pyproject.toml +26 -0
  11. omegaflow_studio-0.1.0/docs/future/prototype/core/src/omegaflow/__init__.py +7 -0
  12. omegaflow_studio-0.1.0/docs/future/prototype/core/src/omegaflow/engine.py +129 -0
  13. omegaflow_studio-0.1.0/docs/future/prototype/core/src/omegaflow/nodes.py +64 -0
  14. omegaflow_studio-0.1.0/docs/future/prototype/core/tests/test_engine.py +202 -0
  15. omegaflow_studio-0.1.0/docs/ideas.md +8 -0
  16. omegaflow_studio-0.1.0/docs/omegaflow-video-output-contract.md +21 -0
  17. omegaflow_studio-0.1.0/examples/arbiter-install/README.md +21 -0
  18. omegaflow_studio-0.1.0/examples/arbiter-install/studio/conf/config.yaml +37 -0
  19. omegaflow_studio-0.1.0/examples/arbiter-install/studio/recordings/arbiter-install.md +375 -0
  20. omegaflow_studio-0.1.0/examples/arbiter-install/studio/recordings/install-and-bootstrap/install-server.sh +17 -0
  21. omegaflow_studio-0.1.0/examples/arbiter-install/studio/recordings/install-and-bootstrap/setup-main.sh +655 -0
  22. omegaflow_studio-0.1.0/examples/arbiter-install/tools/apply_mail_lab_config.py +279 -0
  23. omegaflow_studio-0.1.0/examples/arbiter-install/tools/mail_lab.py +544 -0
  24. omegaflow_studio-0.1.0/pyproject.toml +34 -0
  25. omegaflow_studio-0.1.0/src/omegaflow_studio/__init__.py +5 -0
  26. omegaflow_studio-0.1.0/src/omegaflow_studio/align_cast.py +523 -0
  27. omegaflow_studio-0.1.0/src/omegaflow_studio/audio.py +2051 -0
  28. omegaflow_studio-0.1.0/src/omegaflow_studio/player/__init__.py +1 -0
  29. omegaflow_studio-0.1.0/src/omegaflow_studio/player/static/cast-player-core.js +78 -0
  30. omegaflow_studio-0.1.0/src/omegaflow_studio/player/static/cast-player-embed.js +105 -0
  31. omegaflow_studio-0.1.0/src/omegaflow_studio/player/static/cast-player.html +2348 -0
  32. omegaflow_studio-0.1.0/src/omegaflow_studio/record.py +3470 -0
  33. omegaflow_studio-0.1.0/src/omegaflow_studio/retime_cast.py +2585 -0
  34. omegaflow_studio-0.1.0/src/omegaflow_studio/studio.py +1744 -0
  35. omegaflow_studio-0.1.0/src/omegaflow_studio/studio_config.py +810 -0
  36. omegaflow_studio-0.1.0/src/omegaflow_studio/terminal_style.py +48 -0
  37. omegaflow_studio-0.1.0/src/omegaflow_studio/tool_progress.py +369 -0
  38. omegaflow_studio-0.1.0/studio/conf/config.yaml +37 -0
  39. omegaflow_studio-0.1.0/studio/recordings/getting-started.md +100 -0
  40. omegaflow_studio-0.1.0/tests/test_studio_cli.py +26 -0
  41. omegaflow_studio-0.1.0/website/docs/intro.md +8 -0
  42. omegaflow_studio-0.1.0/website/docs/omegaflow-studio.md +8 -0
  43. omegaflow_studio-0.1.0/website/docs/omegaflow-video.md +8 -0
  44. omegaflow_studio-0.1.0/website/docs/quick-start.md +17 -0
  45. omegaflow_studio-0.1.0/website/docusaurus.config.js +33 -0
  46. omegaflow_studio-0.1.0/website/package.json +17 -0
  47. omegaflow_studio-0.1.0/website/pnpm-lock.yaml +11820 -0
  48. omegaflow_studio-0.1.0/website/sidebars.js +8 -0
  49. omegaflow_studio-0.1.0/website/src/components/OmegaFlowVideo.js +43 -0
  50. omegaflow_studio-0.1.0/website/src/css/custom.css +9 -0
  51. omegaflow_studio-0.1.0/website/src/pages/index.js +24 -0
  52. omegaflow_studio-0.1.0/website/static/CNAME +1 -0
  53. omegaflow_studio-0.1.0/website/static/cast-player-core.js +78 -0
  54. omegaflow_studio-0.1.0/website/static/cast-player-embed.js +105 -0
  55. omegaflow_studio-0.1.0/website/static/cast-player.html +2348 -0
  56. omegaflow_studio-0.1.0/website/static/omegaflow-videos/getting-started/getting-started.cast +8 -0
  57. omegaflow_studio-0.1.0/website/static/omegaflow-videos/getting-started/getting-started.recording.json +20 -0
  58. omegaflow_studio-0.1.0/website/static/omegaflow-videos/getting-started/getting-started.retimed.cast +223 -0
  59. omegaflow_studio-0.1.0/website/static/omegaflow-videos/getting-started/getting-started.timeline.jsonl +20 -0
@@ -0,0 +1,50 @@
1
+ name: Deploy Website
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ branches:
7
+ - main
8
+ paths:
9
+ - "website/**"
10
+ - ".github/workflows/deploy-website.yml"
11
+
12
+ permissions:
13
+ contents: read
14
+ pages: write
15
+ id-token: write
16
+
17
+ concurrency:
18
+ group: pages
19
+ cancel-in-progress: false
20
+
21
+ jobs:
22
+ build:
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+ - uses: pnpm/action-setup@v4
27
+ with:
28
+ package_json_file: website/package.json
29
+ - uses: actions/setup-node@v4
30
+ with:
31
+ node-version: "22"
32
+ cache: pnpm
33
+ cache-dependency-path: website/pnpm-lock.yaml
34
+ - name: Install dependencies
35
+ run: pnpm --dir website install --frozen-lockfile
36
+ - name: Build website
37
+ run: pnpm --dir website build
38
+ - uses: actions/upload-pages-artifact@v3
39
+ with:
40
+ path: website/build
41
+
42
+ deploy:
43
+ environment:
44
+ name: github-pages
45
+ url: ${{ steps.deployment.outputs.page_url }}
46
+ needs: build
47
+ runs-on: ubuntu-latest
48
+ steps:
49
+ - id: deployment
50
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,49 @@
1
+ name: Publish Python Package
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ tags:
7
+ - "v*"
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ build:
14
+ name: Build distribution
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ with:
19
+ persist-credentials: false
20
+ - uses: actions/setup-python@v5
21
+ with:
22
+ python-version: "3.12"
23
+ - name: Install build tooling
24
+ run: python -m pip install build
25
+ - name: Build package
26
+ run: python -m build
27
+ - name: Upload distributions
28
+ uses: actions/upload-artifact@v4
29
+ with:
30
+ name: python-package-distributions
31
+ path: dist/
32
+
33
+ publish:
34
+ name: Publish distribution to PyPI
35
+ needs: build
36
+ runs-on: ubuntu-latest
37
+ environment:
38
+ name: pypi
39
+ url: https://pypi.org/p/omegaflow-studio
40
+ permissions:
41
+ id-token: write
42
+ steps:
43
+ - name: Download distributions
44
+ uses: actions/download-artifact@v4
45
+ with:
46
+ name: python-package-distributions
47
+ path: dist/
48
+ - name: Publish distribution to PyPI
49
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,184 @@
1
+ .aider*
2
+
3
+ # Byte-compiled / optimized / DLL files
4
+ __pycache__/
5
+ *.py[cod]
6
+ *$py.class
7
+
8
+ # C extensions
9
+ *.so
10
+
11
+ # Distribution / packaging
12
+ .Python
13
+ build/
14
+ develop-eggs/
15
+ dist/
16
+ downloads/
17
+ eggs/
18
+ .eggs/
19
+ lib/
20
+ lib64/
21
+ parts/
22
+ sdist/
23
+ var/
24
+ wheels/
25
+ share/python-wheels/
26
+ *.egg-info/
27
+ .installed.cfg
28
+ *.egg
29
+ MANIFEST
30
+
31
+ # PyInstaller
32
+ # Usually these files are written by a python script from a template
33
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
34
+ *.manifest
35
+ *.spec
36
+
37
+ # Installer logs
38
+ pip-log.txt
39
+ pip-delete-this-directory.txt
40
+
41
+ # Unit test / coverage reports
42
+ htmlcov/
43
+ .tox/
44
+ .nox/
45
+ .coverage
46
+ .coverage.*
47
+ .cache
48
+ nosetests.xml
49
+ coverage.xml
50
+ *.cover
51
+ *.py,cover
52
+ .hypothesis/
53
+ .pytest_cache/
54
+ cover/
55
+
56
+ # Translations
57
+ *.mo
58
+ *.pot
59
+
60
+ # Django stuff:
61
+ *.log
62
+ local_settings.py
63
+ db.sqlite3
64
+ db.sqlite3-journal
65
+
66
+ # Flask stuff:
67
+ instance/
68
+ .webassets-cache
69
+
70
+ # Scrapy stuff:
71
+ .scrapy
72
+
73
+ # Sphinx documentation
74
+ docs/_build/
75
+
76
+ # Docusaurus / website
77
+ /website/.docusaurus/
78
+ /website/build/
79
+ /website/node_modules/
80
+
81
+ # OmegaFlow Studio
82
+ /studio/cache/
83
+ /studio/runs/
84
+ /studio/studio-runs/
85
+
86
+ # PyBuilder
87
+ .pybuilder/
88
+ target/
89
+
90
+ # Jupyter Notebook
91
+ .ipynb_checkpoints
92
+
93
+ # IPython
94
+ profile_default/
95
+ ipython_config.py
96
+
97
+ # pyenv
98
+ # For a library or package, you might want to ignore these files since the code is
99
+ # intended to run in multiple environments; otherwise, check them in:
100
+ # .python-version
101
+
102
+ # pipenv
103
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
104
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
105
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
106
+ # install all needed dependencies.
107
+ #Pipfile.lock
108
+
109
+ # poetry
110
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
111
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
112
+ # commonly ignored for libraries.
113
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
114
+ #poetry.lock
115
+
116
+ # pdm
117
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
118
+ #pdm.lock
119
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
120
+ # in version control.
121
+ # https://pdm.fming.dev/#use-with-ide
122
+ .pdm.toml
123
+
124
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
125
+ __pypackages__/
126
+
127
+ # Celery stuff
128
+ celerybeat-schedule
129
+ celerybeat.pid
130
+
131
+ # SageMath parsed files
132
+ *.sage.py
133
+
134
+ # Environments
135
+ .env
136
+ .venv
137
+ env/
138
+ venv/
139
+ ENV/
140
+ env.bak/
141
+ venv.bak/
142
+
143
+ # Spyder project settings
144
+ .spyderproject
145
+ .spyproject
146
+
147
+ # Rope project settings
148
+ .ropeproject
149
+
150
+ # mkdocs documentation
151
+ /site
152
+
153
+ # mypy
154
+ .mypy_cache/
155
+ .dmypy.json
156
+ dmypy.json
157
+
158
+ # Pyre type checker
159
+ .pyre/
160
+
161
+ # pytype static type analyzer
162
+ .pytype/
163
+
164
+ # Cython debug symbols
165
+ cython_debug/
166
+
167
+ # PyCharm
168
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
169
+ # be added to the global gitignore or merged into this project gitignore. For a PyCharm
170
+ # project, it is recommended to include the following files:
171
+ # .idea/
172
+ # *.iml
173
+ # *.ipr
174
+
175
+ # VS Code
176
+ .vscode/
177
+
178
+ # macOS
179
+ .DS_Store
180
+
181
+ # Windows
182
+ Thumbs.db
183
+ ehthumbs.db
184
+ Desktop.ini
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Omry Yadan
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,46 @@
1
+ Metadata-Version: 2.4
2
+ Name: omegaflow-studio
3
+ Version: 0.1.0
4
+ Summary: Scripted terminal and video flow authoring for OmegaFlow Studio
5
+ Author: Omry Yadan
6
+ License-Expression: MIT
7
+ License-File: LICENSE
8
+ Requires-Python: >=3.11
9
+ Requires-Dist: hydra-core>=1.3
10
+ Requires-Dist: omegaconf>=2.3
11
+ Requires-Dist: pyyaml>=6.0
12
+ Provides-Extra: dev
13
+ Requires-Dist: build>=1.2; extra == 'dev'
14
+ Requires-Dist: pytest>=8.0; extra == 'dev'
15
+ Description-Content-Type: text/markdown
16
+
17
+ # OmegaFlow Studio
18
+
19
+ OmegaFlow Studio is a tool for scripted terminal and video flows. Operators
20
+ author an OmegaFlow Studio script, then build a website-ready OmegaFlow Video
21
+ from that source.
22
+
23
+ This repository is being migrated from Arbiter's media studio into a standalone
24
+ project. The initial migration target is a Python package named
25
+ `omegaflow-studio`, a `studio` CLI, a Docusaurus website for `omegaflow.dev`,
26
+ and a first getting-started recording under `studio/recordings/`.
27
+
28
+ ## Development
29
+
30
+ ```bash
31
+ python -m build
32
+ pytest
33
+ pnpm --dir website build
34
+ studio recording=getting-started action=build
35
+ ```
36
+
37
+ The current repository also preserves older OmegaFlow design work under
38
+ `docs/future/`.
39
+
40
+ ## Deployment
41
+
42
+ The website is configured for `https://omegaflow.dev` and includes a GitHub
43
+ Pages workflow at `.github/workflows/deploy-website.yml`. The workflow builds
44
+ `website/` with pnpm and deploys `website/build`; `website/static/CNAME`
45
+ contains the custom domain. GitHub Pages and DNS still need to be configured in
46
+ the `omry/omegaflow` repository before the domain is live.
@@ -0,0 +1,30 @@
1
+ # OmegaFlow Studio
2
+
3
+ OmegaFlow Studio is a tool for scripted terminal and video flows. Operators
4
+ author an OmegaFlow Studio script, then build a website-ready OmegaFlow Video
5
+ from that source.
6
+
7
+ This repository is being migrated from Arbiter's media studio into a standalone
8
+ project. The initial migration target is a Python package named
9
+ `omegaflow-studio`, a `studio` CLI, a Docusaurus website for `omegaflow.dev`,
10
+ and a first getting-started recording under `studio/recordings/`.
11
+
12
+ ## Development
13
+
14
+ ```bash
15
+ python -m build
16
+ pytest
17
+ pnpm --dir website build
18
+ studio recording=getting-started action=build
19
+ ```
20
+
21
+ The current repository also preserves older OmegaFlow design work under
22
+ `docs/future/`.
23
+
24
+ ## Deployment
25
+
26
+ The website is configured for `https://omegaflow.dev` and includes a GitHub
27
+ Pages workflow at `.github/workflows/deploy-website.yml`. The workflow builds
28
+ `website/` with pnpm and deploys `website/build`; `website/static/CNAME`
29
+ contains the custom domain. GitHub Pages and DNS still need to be configured in
30
+ the `omry/omegaflow` repository before the domain is live.
@@ -0,0 +1,27 @@
1
+ # Arbiter Cleanup Ledger
2
+
3
+ Use this ledger for Arbiter references or Arbiter-specific logic that cannot be
4
+ removed during the first OmegaFlow Studio migration pass.
5
+
6
+ Every entry should include:
7
+
8
+ - file
9
+ - reason it remains
10
+ - owner or scope
11
+ - follow-up cleanup action
12
+
13
+ ## Current Audit
14
+
15
+ - `README.md`: mentions Arbiter only as migration provenance. This is
16
+ intentionally temporary project context, not product behavior.
17
+ - `examples/arbiter-install/`: intentionally Arbiter-specific compatibility
18
+ proof. Arbiter/Reploy/mail-lab logic may remain here while proving the
19
+ extracted tool can rebuild Arbiter's install recording.
20
+
21
+ ## Deferred Cleanup
22
+
23
+ - Arbiter production rebuild: the standalone compatibility proof currently runs
24
+ `examples/arbiter-install` as a Studio dry run. A full rebuild still belongs
25
+ in Arbiter after it installs `/home/omry/dev/omegaflow` editable into the
26
+ Arbiter virtualenv, because the production recording publishes into Arbiter's
27
+ website and exercises Docker/Reploy setup.