vibe-aigc 0.1.0__tar.gz → 0.1.1__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.
- vibe_aigc-0.1.1/PKG-INFO +153 -0
- vibe_aigc-0.1.1/README.md +118 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/pyproject.toml +16 -3
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/vibe_aigc/__init__.py +1 -1
- vibe_aigc-0.1.1/vibe_aigc/cli.py +205 -0
- vibe_aigc-0.1.1/vibe_aigc.egg-info/PKG-INFO +153 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/vibe_aigc.egg-info/SOURCES.txt +2 -0
- vibe_aigc-0.1.1/vibe_aigc.egg-info/entry_points.txt +2 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/vibe_aigc.egg-info/requires.txt +5 -0
- vibe_aigc-0.1.0/PKG-INFO +0 -193
- vibe_aigc-0.1.0/README.md +0 -163
- vibe_aigc-0.1.0/vibe_aigc.egg-info/PKG-INFO +0 -193
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/LICENSE +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/setup.cfg +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/tests/test_adaptive_replanning.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/tests/test_auto_checkpoint.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/tests/test_automatic_checkpoints.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/tests/test_checkpoint_serialization.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/tests/test_error_handling.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/tests/test_executor.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/tests/test_feedback_system.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/tests/test_integration.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/tests/test_metaplanner_resume.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/tests/test_metaplanner_visualization.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/tests/test_models.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/tests/test_parallel_execution.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/tests/test_planner.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/tests/test_progress_callbacks.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/tests/test_visualization.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/tests/test_workflow_resume.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/vibe_aigc/executor.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/vibe_aigc/llm.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/vibe_aigc/models.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/vibe_aigc/persistence.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/vibe_aigc/planner.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/vibe_aigc/visualization.py +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/vibe_aigc.egg-info/dependency_links.txt +0 -0
- {vibe_aigc-0.1.0 → vibe_aigc-0.1.1}/vibe_aigc.egg-info/top_level.txt +0 -0
vibe_aigc-0.1.1/PKG-INFO
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vibe-aigc
|
|
3
|
+
Version: 0.1.1
|
|
4
|
+
Summary: A New Paradigm for Content Generation via Agentic Orchestration
|
|
5
|
+
Author: Vibe AIGC Contributors
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://jmanhype.github.io/vibe-aigc
|
|
8
|
+
Project-URL: Repository, https://github.com/jmanhype/vibe-aigc
|
|
9
|
+
Project-URL: Documentation, https://jmanhype.github.io/vibe-aigc
|
|
10
|
+
Project-URL: Changelog, https://jmanhype.github.io/vibe-aigc/changelog
|
|
11
|
+
Project-URL: Issues, https://github.com/jmanhype/vibe-aigc/issues
|
|
12
|
+
Keywords: ai,aigc,agents,orchestration,content-generation,llm,workflow
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
18
|
+
Classifier: Typing :: Typed
|
|
19
|
+
Requires-Python: >=3.12
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
Requires-Dist: pydantic>=2.0.0
|
|
23
|
+
Requires-Dist: openai>=1.0.0
|
|
24
|
+
Provides-Extra: dev
|
|
25
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
26
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
27
|
+
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
28
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
29
|
+
Requires-Dist: mypy>=1.0.0; extra == "dev"
|
|
30
|
+
Provides-Extra: docs
|
|
31
|
+
Requires-Dist: mkdocs-material>=9.0.0; extra == "docs"
|
|
32
|
+
Requires-Dist: mkdocstrings[python]>=0.24.0; extra == "docs"
|
|
33
|
+
Requires-Dist: pymdown-extensions>=10.0.0; extra == "docs"
|
|
34
|
+
Dynamic: license-file
|
|
35
|
+
|
|
36
|
+
# Vibe AIGC
|
|
37
|
+
|
|
38
|
+
[](https://github.com/jmanhype/vibe-aigc/actions/workflows/ci.yml)
|
|
39
|
+
[](https://codecov.io/gh/jmanhype/vibe-aigc)
|
|
40
|
+
[](https://pypi.org/project/vibe-aigc/)
|
|
41
|
+
[](https://www.python.org/downloads/)
|
|
42
|
+
[](https://opensource.org/licenses/MIT)
|
|
43
|
+
[](https://jmanhype.github.io/vibe-aigc)
|
|
44
|
+
|
|
45
|
+
**A New Paradigm for Content Generation via Agentic Orchestration**
|
|
46
|
+
|
|
47
|
+
Based on [arXiv:2602.04575](https://arxiv.org/abs/2602.04575)
|
|
48
|
+
|
|
49
|
+
📚 **[Documentation](https://jmanhype.github.io/vibe-aigc)** | 🚀 **[Quick Start](https://jmanhype.github.io/vibe-aigc/getting-started/quickstart/)** | 📖 **[API Reference](https://jmanhype.github.io/vibe-aigc/api/models/)**
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## What is Vibe AIGC?
|
|
54
|
+
|
|
55
|
+
Vibe AIGC bridges the **Intent-Execution Gap** in AI content generation. Instead of prompt engineering, you provide a **Vibe** — a high-level representation of your creative intent — and the system automatically decomposes it into executable workflows.
|
|
56
|
+
|
|
57
|
+
```python
|
|
58
|
+
from vibe_aigc import MetaPlanner, Vibe
|
|
59
|
+
|
|
60
|
+
# Express your intent
|
|
61
|
+
vibe = Vibe(
|
|
62
|
+
description="Create a cinematic sci-fi trailer",
|
|
63
|
+
style="dark, atmospheric, Blade Runner aesthetic",
|
|
64
|
+
constraints=["under 60 seconds", "no dialogue"]
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
# Let the Meta-Planner handle the rest
|
|
68
|
+
planner = MetaPlanner()
|
|
69
|
+
result = await planner.execute(vibe)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Features
|
|
73
|
+
|
|
74
|
+
- 🎯 **Vibe-based Planning** — High-level intent → executable workflows
|
|
75
|
+
- ⚡ **Parallel Execution** — Independent nodes run concurrently
|
|
76
|
+
- 🔄 **Adaptive Replanning** — Automatic recovery from failures
|
|
77
|
+
- 💾 **Checkpoint/Resume** — Save and restore workflow state
|
|
78
|
+
- 📊 **Progress Tracking** — Real-time callbacks and visualization
|
|
79
|
+
- 🎨 **Workflow Visualization** — ASCII and Mermaid diagrams
|
|
80
|
+
|
|
81
|
+
## Installation
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
pip install vibe-aigc
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## CLI Usage
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Generate a workflow plan
|
|
91
|
+
vibe-aigc plan "Create a blog post about AI" --style "informative" --format ascii
|
|
92
|
+
|
|
93
|
+
# Execute a vibe
|
|
94
|
+
vibe-aigc execute "Design a landing page" --visualize --checkpoint
|
|
95
|
+
|
|
96
|
+
# Manage checkpoints
|
|
97
|
+
vibe-aigc checkpoints --list
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Quick Example
|
|
101
|
+
|
|
102
|
+
```python
|
|
103
|
+
import asyncio
|
|
104
|
+
from vibe_aigc import Vibe, MetaPlanner
|
|
105
|
+
|
|
106
|
+
async def main():
|
|
107
|
+
vibe = Vibe(
|
|
108
|
+
description="Write a blog post about AI agents",
|
|
109
|
+
style="informative, engaging",
|
|
110
|
+
constraints=["under 1000 words"]
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
planner = MetaPlanner()
|
|
114
|
+
result = await planner.execute_with_visualization(vibe)
|
|
115
|
+
|
|
116
|
+
print(f"Status: {result.get_summary()['status']}")
|
|
117
|
+
|
|
118
|
+
asyncio.run(main())
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Architecture
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
User Vibe → MetaPlanner → Agentic Pipeline → Execution → Result
|
|
125
|
+
↑ ↓
|
|
126
|
+
└──── Feedback Loop ────────┘
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Documentation
|
|
130
|
+
|
|
131
|
+
- [Installation Guide](https://jmanhype.github.io/vibe-aigc/getting-started/installation/)
|
|
132
|
+
- [Quick Start Tutorial](https://jmanhype.github.io/vibe-aigc/getting-started/quickstart/)
|
|
133
|
+
- [Core Concepts](https://jmanhype.github.io/vibe-aigc/guide/concepts/)
|
|
134
|
+
- [API Reference](https://jmanhype.github.io/vibe-aigc/api/models/)
|
|
135
|
+
- [Examples](https://jmanhype.github.io/vibe-aigc/examples/)
|
|
136
|
+
|
|
137
|
+
## Contributing
|
|
138
|
+
|
|
139
|
+
Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
140
|
+
|
|
141
|
+
## License
|
|
142
|
+
|
|
143
|
+
MIT — see [LICENSE](LICENSE) for details.
|
|
144
|
+
|
|
145
|
+
## Citation
|
|
146
|
+
|
|
147
|
+
```bibtex
|
|
148
|
+
@article{vibe-aigc-2025,
|
|
149
|
+
title={Vibe AIGC: A New Paradigm for Content Generation via Agentic Orchestration},
|
|
150
|
+
journal={arXiv preprint arXiv:2602.04575},
|
|
151
|
+
year={2025}
|
|
152
|
+
}
|
|
153
|
+
```
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Vibe AIGC
|
|
2
|
+
|
|
3
|
+
[](https://github.com/jmanhype/vibe-aigc/actions/workflows/ci.yml)
|
|
4
|
+
[](https://codecov.io/gh/jmanhype/vibe-aigc)
|
|
5
|
+
[](https://pypi.org/project/vibe-aigc/)
|
|
6
|
+
[](https://www.python.org/downloads/)
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
[](https://jmanhype.github.io/vibe-aigc)
|
|
9
|
+
|
|
10
|
+
**A New Paradigm for Content Generation via Agentic Orchestration**
|
|
11
|
+
|
|
12
|
+
Based on [arXiv:2602.04575](https://arxiv.org/abs/2602.04575)
|
|
13
|
+
|
|
14
|
+
📚 **[Documentation](https://jmanhype.github.io/vibe-aigc)** | 🚀 **[Quick Start](https://jmanhype.github.io/vibe-aigc/getting-started/quickstart/)** | 📖 **[API Reference](https://jmanhype.github.io/vibe-aigc/api/models/)**
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## What is Vibe AIGC?
|
|
19
|
+
|
|
20
|
+
Vibe AIGC bridges the **Intent-Execution Gap** in AI content generation. Instead of prompt engineering, you provide a **Vibe** — a high-level representation of your creative intent — and the system automatically decomposes it into executable workflows.
|
|
21
|
+
|
|
22
|
+
```python
|
|
23
|
+
from vibe_aigc import MetaPlanner, Vibe
|
|
24
|
+
|
|
25
|
+
# Express your intent
|
|
26
|
+
vibe = Vibe(
|
|
27
|
+
description="Create a cinematic sci-fi trailer",
|
|
28
|
+
style="dark, atmospheric, Blade Runner aesthetic",
|
|
29
|
+
constraints=["under 60 seconds", "no dialogue"]
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
# Let the Meta-Planner handle the rest
|
|
33
|
+
planner = MetaPlanner()
|
|
34
|
+
result = await planner.execute(vibe)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Features
|
|
38
|
+
|
|
39
|
+
- 🎯 **Vibe-based Planning** — High-level intent → executable workflows
|
|
40
|
+
- ⚡ **Parallel Execution** — Independent nodes run concurrently
|
|
41
|
+
- 🔄 **Adaptive Replanning** — Automatic recovery from failures
|
|
42
|
+
- 💾 **Checkpoint/Resume** — Save and restore workflow state
|
|
43
|
+
- 📊 **Progress Tracking** — Real-time callbacks and visualization
|
|
44
|
+
- 🎨 **Workflow Visualization** — ASCII and Mermaid diagrams
|
|
45
|
+
|
|
46
|
+
## Installation
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
pip install vibe-aigc
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## CLI Usage
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Generate a workflow plan
|
|
56
|
+
vibe-aigc plan "Create a blog post about AI" --style "informative" --format ascii
|
|
57
|
+
|
|
58
|
+
# Execute a vibe
|
|
59
|
+
vibe-aigc execute "Design a landing page" --visualize --checkpoint
|
|
60
|
+
|
|
61
|
+
# Manage checkpoints
|
|
62
|
+
vibe-aigc checkpoints --list
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Quick Example
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
import asyncio
|
|
69
|
+
from vibe_aigc import Vibe, MetaPlanner
|
|
70
|
+
|
|
71
|
+
async def main():
|
|
72
|
+
vibe = Vibe(
|
|
73
|
+
description="Write a blog post about AI agents",
|
|
74
|
+
style="informative, engaging",
|
|
75
|
+
constraints=["under 1000 words"]
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
planner = MetaPlanner()
|
|
79
|
+
result = await planner.execute_with_visualization(vibe)
|
|
80
|
+
|
|
81
|
+
print(f"Status: {result.get_summary()['status']}")
|
|
82
|
+
|
|
83
|
+
asyncio.run(main())
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Architecture
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
User Vibe → MetaPlanner → Agentic Pipeline → Execution → Result
|
|
90
|
+
↑ ↓
|
|
91
|
+
└──── Feedback Loop ────────┘
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Documentation
|
|
95
|
+
|
|
96
|
+
- [Installation Guide](https://jmanhype.github.io/vibe-aigc/getting-started/installation/)
|
|
97
|
+
- [Quick Start Tutorial](https://jmanhype.github.io/vibe-aigc/getting-started/quickstart/)
|
|
98
|
+
- [Core Concepts](https://jmanhype.github.io/vibe-aigc/guide/concepts/)
|
|
99
|
+
- [API Reference](https://jmanhype.github.io/vibe-aigc/api/models/)
|
|
100
|
+
- [Examples](https://jmanhype.github.io/vibe-aigc/examples/)
|
|
101
|
+
|
|
102
|
+
## Contributing
|
|
103
|
+
|
|
104
|
+
Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
105
|
+
|
|
106
|
+
## License
|
|
107
|
+
|
|
108
|
+
MIT — see [LICENSE](LICENSE) for details.
|
|
109
|
+
|
|
110
|
+
## Citation
|
|
111
|
+
|
|
112
|
+
```bibtex
|
|
113
|
+
@article{vibe-aigc-2025,
|
|
114
|
+
title={Vibe AIGC: A New Paradigm for Content Generation via Agentic Orchestration},
|
|
115
|
+
journal={arXiv preprint arXiv:2602.04575},
|
|
116
|
+
year={2025}
|
|
117
|
+
}
|
|
118
|
+
```
|
|
@@ -2,9 +2,13 @@
|
|
|
2
2
|
requires = ["setuptools>=61.0", "wheel"]
|
|
3
3
|
build-backend = "setuptools.build_meta"
|
|
4
4
|
|
|
5
|
+
[tool.setuptools.packages.find]
|
|
6
|
+
include = ["vibe_aigc*"]
|
|
7
|
+
exclude = ["tests*", "docs*", "examples*", "landing*"]
|
|
8
|
+
|
|
5
9
|
[project]
|
|
6
10
|
name = "vibe-aigc"
|
|
7
|
-
version = "0.1.
|
|
11
|
+
version = "0.1.1"
|
|
8
12
|
description = "A New Paradigm for Content Generation via Agentic Orchestration"
|
|
9
13
|
authors = [{name = "Vibe AIGC Contributors"}]
|
|
10
14
|
license = "MIT"
|
|
@@ -32,11 +36,20 @@ dev = [
|
|
|
32
36
|
"ruff>=0.1.0",
|
|
33
37
|
"mypy>=1.0.0",
|
|
34
38
|
]
|
|
39
|
+
docs = [
|
|
40
|
+
"mkdocs-material>=9.0.0",
|
|
41
|
+
"mkdocstrings[python]>=0.24.0",
|
|
42
|
+
"pymdown-extensions>=10.0.0",
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
[project.scripts]
|
|
46
|
+
vibe-aigc = "vibe_aigc.cli:main"
|
|
35
47
|
|
|
36
48
|
[project.urls]
|
|
37
|
-
Homepage = "https://github.
|
|
49
|
+
Homepage = "https://jmanhype.github.io/vibe-aigc"
|
|
38
50
|
Repository = "https://github.com/jmanhype/vibe-aigc"
|
|
39
|
-
Documentation = "https://github.
|
|
51
|
+
Documentation = "https://jmanhype.github.io/vibe-aigc"
|
|
52
|
+
Changelog = "https://jmanhype.github.io/vibe-aigc/changelog"
|
|
40
53
|
Issues = "https://github.com/jmanhype/vibe-aigc/issues"
|
|
41
54
|
|
|
42
55
|
[tool.pytest.ini_options]
|
|
@@ -5,7 +5,7 @@ from .planner import MetaPlanner
|
|
|
5
5
|
from .llm import LLMClient, LLMConfig
|
|
6
6
|
from .executor import WorkflowExecutor, ExecutionStatus, ExecutionResult
|
|
7
7
|
|
|
8
|
-
__version__ = "0.1.
|
|
8
|
+
__version__ = "0.1.1"
|
|
9
9
|
__all__ = [
|
|
10
10
|
"Vibe", "WorkflowPlan", "WorkflowNode", "WorkflowNodeType",
|
|
11
11
|
"MetaPlanner", "LLMClient", "LLMConfig",
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"""Command-line interface for Vibe AIGC."""
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import asyncio
|
|
5
|
+
import json
|
|
6
|
+
import sys
|
|
7
|
+
from typing import Optional
|
|
8
|
+
|
|
9
|
+
from .models import Vibe
|
|
10
|
+
from .planner import MetaPlanner
|
|
11
|
+
from .visualization import WorkflowVisualizer, VisualizationFormat
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def create_parser() -> argparse.ArgumentParser:
|
|
15
|
+
"""Create argument parser for CLI."""
|
|
16
|
+
parser = argparse.ArgumentParser(
|
|
17
|
+
prog="vibe-aigc",
|
|
18
|
+
description="Vibe AIGC - Content Generation via Agentic Orchestration",
|
|
19
|
+
)
|
|
20
|
+
parser.add_argument("--version", action="version", version="%(prog)s 0.1.1")
|
|
21
|
+
|
|
22
|
+
subparsers = parser.add_subparsers(dest="command", help="Available commands")
|
|
23
|
+
|
|
24
|
+
# Plan command
|
|
25
|
+
plan_parser = subparsers.add_parser("plan", help="Generate a workflow plan from a vibe")
|
|
26
|
+
plan_parser.add_argument("description", help="Main description of what you want to create")
|
|
27
|
+
plan_parser.add_argument("--style", "-s", help="Style preferences")
|
|
28
|
+
plan_parser.add_argument("--constraints", "-c", nargs="*", default=[], help="Constraints")
|
|
29
|
+
plan_parser.add_argument("--domain", "-d", help="Domain context")
|
|
30
|
+
plan_parser.add_argument("--format", "-f", choices=["ascii", "mermaid", "json"], default="ascii")
|
|
31
|
+
plan_parser.add_argument("--output", "-o", help="Output file (default: stdout)")
|
|
32
|
+
|
|
33
|
+
# Execute command
|
|
34
|
+
exec_parser = subparsers.add_parser("execute", help="Plan and execute a vibe")
|
|
35
|
+
exec_parser.add_argument("description", help="Main description of what you want to create")
|
|
36
|
+
exec_parser.add_argument("--style", "-s", help="Style preferences")
|
|
37
|
+
exec_parser.add_argument("--constraints", "-c", nargs="*", default=[], help="Constraints")
|
|
38
|
+
exec_parser.add_argument("--domain", "-d", help="Domain context")
|
|
39
|
+
exec_parser.add_argument("--checkpoint", action="store_true", help="Enable checkpointing")
|
|
40
|
+
exec_parser.add_argument("--checkpoint-interval", type=int, default=5, help="Checkpoint interval")
|
|
41
|
+
exec_parser.add_argument("--visualize", "-v", action="store_true", help="Show visualization")
|
|
42
|
+
exec_parser.add_argument("--adapt", "-a", action="store_true", help="Enable adaptive replanning")
|
|
43
|
+
|
|
44
|
+
# Resume command
|
|
45
|
+
resume_parser = subparsers.add_parser("resume", help="Resume from a checkpoint")
|
|
46
|
+
resume_parser.add_argument("checkpoint_id", help="Checkpoint ID to resume from")
|
|
47
|
+
|
|
48
|
+
# Checkpoints command
|
|
49
|
+
cp_parser = subparsers.add_parser("checkpoints", help="List or manage checkpoints")
|
|
50
|
+
cp_parser.add_argument("--list", "-l", action="store_true", help="List all checkpoints")
|
|
51
|
+
cp_parser.add_argument("--delete", "-d", help="Delete a checkpoint by ID")
|
|
52
|
+
cp_parser.add_argument("--clear", action="store_true", help="Delete all checkpoints")
|
|
53
|
+
|
|
54
|
+
return parser
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def create_vibe(args) -> Vibe:
|
|
58
|
+
"""Create a Vibe from CLI arguments."""
|
|
59
|
+
return Vibe(
|
|
60
|
+
description=args.description,
|
|
61
|
+
style=args.style,
|
|
62
|
+
constraints=args.constraints or [],
|
|
63
|
+
domain=args.domain,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
async def cmd_plan(args) -> int:
|
|
68
|
+
"""Handle plan command."""
|
|
69
|
+
vibe = create_vibe(args)
|
|
70
|
+
planner = MetaPlanner()
|
|
71
|
+
|
|
72
|
+
print(f"Planning workflow for: {vibe.description}", file=sys.stderr)
|
|
73
|
+
plan = await planner.plan(vibe)
|
|
74
|
+
|
|
75
|
+
if args.format == "json":
|
|
76
|
+
output = plan.model_dump_json(indent=2)
|
|
77
|
+
elif args.format == "mermaid":
|
|
78
|
+
output = WorkflowVisualizer.generate_diagram(plan, format=VisualizationFormat.MERMAID)
|
|
79
|
+
else:
|
|
80
|
+
output = WorkflowVisualizer.generate_diagram(plan, format=VisualizationFormat.ASCII)
|
|
81
|
+
|
|
82
|
+
if args.output:
|
|
83
|
+
with open(args.output, "w") as f:
|
|
84
|
+
f.write(output)
|
|
85
|
+
print(f"Output written to {args.output}", file=sys.stderr)
|
|
86
|
+
else:
|
|
87
|
+
print(output)
|
|
88
|
+
|
|
89
|
+
return 0
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
async def cmd_execute(args) -> int:
|
|
93
|
+
"""Handle execute command."""
|
|
94
|
+
vibe = create_vibe(args)
|
|
95
|
+
|
|
96
|
+
checkpoint_interval = args.checkpoint_interval if args.checkpoint else None
|
|
97
|
+
planner = MetaPlanner(checkpoint_interval=checkpoint_interval)
|
|
98
|
+
|
|
99
|
+
def on_progress(event):
|
|
100
|
+
status = {"started": "🚀", "completed": "✅", "failed": "❌"}.get(event.event_type, "📍")
|
|
101
|
+
print(f"{status} [{event.node_id}] {event.message}", file=sys.stderr)
|
|
102
|
+
|
|
103
|
+
if args.visualize:
|
|
104
|
+
planner = MetaPlanner(
|
|
105
|
+
checkpoint_interval=checkpoint_interval,
|
|
106
|
+
progress_callback=on_progress
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
print(f"Executing workflow for: {vibe.description}", file=sys.stderr)
|
|
110
|
+
|
|
111
|
+
if args.adapt:
|
|
112
|
+
result = await planner.execute_with_adaptation(vibe)
|
|
113
|
+
elif args.checkpoint:
|
|
114
|
+
result = await planner.execute_with_resume(vibe)
|
|
115
|
+
elif args.visualize:
|
|
116
|
+
result = await planner.execute_with_visualization(vibe)
|
|
117
|
+
else:
|
|
118
|
+
result = await planner.execute(vibe)
|
|
119
|
+
|
|
120
|
+
summary = result.get_summary()
|
|
121
|
+
print(f"\n{'='*50}", file=sys.stderr)
|
|
122
|
+
print(f"Status: {summary['status']}", file=sys.stderr)
|
|
123
|
+
print(f"Completed: {summary['completed']}/{summary['total_nodes']} nodes", file=sys.stderr)
|
|
124
|
+
|
|
125
|
+
return 0 if summary['status'] == 'completed' else 1
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
async def cmd_checkpoints(args) -> int:
|
|
129
|
+
"""Handle checkpoints command."""
|
|
130
|
+
planner = MetaPlanner()
|
|
131
|
+
|
|
132
|
+
if args.delete:
|
|
133
|
+
planner.delete_checkpoint(args.delete)
|
|
134
|
+
print(f"Deleted checkpoint: {args.delete}")
|
|
135
|
+
elif args.clear:
|
|
136
|
+
checkpoints = planner.list_checkpoints()
|
|
137
|
+
for cp in checkpoints:
|
|
138
|
+
planner.delete_checkpoint(cp["checkpoint_id"])
|
|
139
|
+
print(f"Deleted {len(checkpoints)} checkpoint(s)")
|
|
140
|
+
else:
|
|
141
|
+
checkpoints = planner.list_checkpoints()
|
|
142
|
+
if not checkpoints:
|
|
143
|
+
print("No checkpoints found.")
|
|
144
|
+
else:
|
|
145
|
+
print(f"Found {len(checkpoints)} checkpoint(s):\n")
|
|
146
|
+
for cp in checkpoints:
|
|
147
|
+
print(f" ID: {cp['checkpoint_id']}")
|
|
148
|
+
print(f" Created: {cp.get('created_at', 'unknown')}")
|
|
149
|
+
print(f" Progress: {cp.get('completed_nodes', '?')}/{cp.get('total_nodes', '?')} nodes")
|
|
150
|
+
print()
|
|
151
|
+
|
|
152
|
+
return 0
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
async def cmd_resume(args) -> int:
|
|
156
|
+
"""Handle resume command."""
|
|
157
|
+
planner = MetaPlanner()
|
|
158
|
+
|
|
159
|
+
print(f"Resuming from checkpoint: {args.checkpoint_id}", file=sys.stderr)
|
|
160
|
+
|
|
161
|
+
# Need to get the vibe from checkpoint
|
|
162
|
+
checkpoint = planner.get_checkpoint(args.checkpoint_id)
|
|
163
|
+
if not checkpoint:
|
|
164
|
+
print(f"Checkpoint not found: {args.checkpoint_id}", file=sys.stderr)
|
|
165
|
+
return 1
|
|
166
|
+
|
|
167
|
+
vibe = Vibe(**checkpoint.get("vibe", {}))
|
|
168
|
+
result = await planner.execute_with_resume(vibe, checkpoint_id=args.checkpoint_id)
|
|
169
|
+
|
|
170
|
+
summary = result.get_summary()
|
|
171
|
+
print(f"\nStatus: {summary['status']}", file=sys.stderr)
|
|
172
|
+
print(f"Completed: {summary['completed']}/{summary['total_nodes']} nodes", file=sys.stderr)
|
|
173
|
+
|
|
174
|
+
return 0 if summary['status'] == 'completed' else 1
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
async def async_main(args) -> int:
|
|
178
|
+
"""Async main entry point."""
|
|
179
|
+
if args.command == "plan":
|
|
180
|
+
return await cmd_plan(args)
|
|
181
|
+
elif args.command == "execute":
|
|
182
|
+
return await cmd_execute(args)
|
|
183
|
+
elif args.command == "checkpoints":
|
|
184
|
+
return await cmd_checkpoints(args)
|
|
185
|
+
elif args.command == "resume":
|
|
186
|
+
return await cmd_resume(args)
|
|
187
|
+
else:
|
|
188
|
+
print("Use --help for usage information.", file=sys.stderr)
|
|
189
|
+
return 1
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
def main() -> int:
|
|
193
|
+
"""Main entry point for CLI."""
|
|
194
|
+
parser = create_parser()
|
|
195
|
+
args = parser.parse_args()
|
|
196
|
+
|
|
197
|
+
if not args.command:
|
|
198
|
+
parser.print_help()
|
|
199
|
+
return 0
|
|
200
|
+
|
|
201
|
+
return asyncio.run(async_main(args))
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
if __name__ == "__main__":
|
|
205
|
+
sys.exit(main())
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vibe-aigc
|
|
3
|
+
Version: 0.1.1
|
|
4
|
+
Summary: A New Paradigm for Content Generation via Agentic Orchestration
|
|
5
|
+
Author: Vibe AIGC Contributors
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://jmanhype.github.io/vibe-aigc
|
|
8
|
+
Project-URL: Repository, https://github.com/jmanhype/vibe-aigc
|
|
9
|
+
Project-URL: Documentation, https://jmanhype.github.io/vibe-aigc
|
|
10
|
+
Project-URL: Changelog, https://jmanhype.github.io/vibe-aigc/changelog
|
|
11
|
+
Project-URL: Issues, https://github.com/jmanhype/vibe-aigc/issues
|
|
12
|
+
Keywords: ai,aigc,agents,orchestration,content-generation,llm,workflow
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
18
|
+
Classifier: Typing :: Typed
|
|
19
|
+
Requires-Python: >=3.12
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
Requires-Dist: pydantic>=2.0.0
|
|
23
|
+
Requires-Dist: openai>=1.0.0
|
|
24
|
+
Provides-Extra: dev
|
|
25
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
26
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
27
|
+
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
28
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
29
|
+
Requires-Dist: mypy>=1.0.0; extra == "dev"
|
|
30
|
+
Provides-Extra: docs
|
|
31
|
+
Requires-Dist: mkdocs-material>=9.0.0; extra == "docs"
|
|
32
|
+
Requires-Dist: mkdocstrings[python]>=0.24.0; extra == "docs"
|
|
33
|
+
Requires-Dist: pymdown-extensions>=10.0.0; extra == "docs"
|
|
34
|
+
Dynamic: license-file
|
|
35
|
+
|
|
36
|
+
# Vibe AIGC
|
|
37
|
+
|
|
38
|
+
[](https://github.com/jmanhype/vibe-aigc/actions/workflows/ci.yml)
|
|
39
|
+
[](https://codecov.io/gh/jmanhype/vibe-aigc)
|
|
40
|
+
[](https://pypi.org/project/vibe-aigc/)
|
|
41
|
+
[](https://www.python.org/downloads/)
|
|
42
|
+
[](https://opensource.org/licenses/MIT)
|
|
43
|
+
[](https://jmanhype.github.io/vibe-aigc)
|
|
44
|
+
|
|
45
|
+
**A New Paradigm for Content Generation via Agentic Orchestration**
|
|
46
|
+
|
|
47
|
+
Based on [arXiv:2602.04575](https://arxiv.org/abs/2602.04575)
|
|
48
|
+
|
|
49
|
+
📚 **[Documentation](https://jmanhype.github.io/vibe-aigc)** | 🚀 **[Quick Start](https://jmanhype.github.io/vibe-aigc/getting-started/quickstart/)** | 📖 **[API Reference](https://jmanhype.github.io/vibe-aigc/api/models/)**
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## What is Vibe AIGC?
|
|
54
|
+
|
|
55
|
+
Vibe AIGC bridges the **Intent-Execution Gap** in AI content generation. Instead of prompt engineering, you provide a **Vibe** — a high-level representation of your creative intent — and the system automatically decomposes it into executable workflows.
|
|
56
|
+
|
|
57
|
+
```python
|
|
58
|
+
from vibe_aigc import MetaPlanner, Vibe
|
|
59
|
+
|
|
60
|
+
# Express your intent
|
|
61
|
+
vibe = Vibe(
|
|
62
|
+
description="Create a cinematic sci-fi trailer",
|
|
63
|
+
style="dark, atmospheric, Blade Runner aesthetic",
|
|
64
|
+
constraints=["under 60 seconds", "no dialogue"]
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
# Let the Meta-Planner handle the rest
|
|
68
|
+
planner = MetaPlanner()
|
|
69
|
+
result = await planner.execute(vibe)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Features
|
|
73
|
+
|
|
74
|
+
- 🎯 **Vibe-based Planning** — High-level intent → executable workflows
|
|
75
|
+
- ⚡ **Parallel Execution** — Independent nodes run concurrently
|
|
76
|
+
- 🔄 **Adaptive Replanning** — Automatic recovery from failures
|
|
77
|
+
- 💾 **Checkpoint/Resume** — Save and restore workflow state
|
|
78
|
+
- 📊 **Progress Tracking** — Real-time callbacks and visualization
|
|
79
|
+
- 🎨 **Workflow Visualization** — ASCII and Mermaid diagrams
|
|
80
|
+
|
|
81
|
+
## Installation
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
pip install vibe-aigc
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## CLI Usage
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Generate a workflow plan
|
|
91
|
+
vibe-aigc plan "Create a blog post about AI" --style "informative" --format ascii
|
|
92
|
+
|
|
93
|
+
# Execute a vibe
|
|
94
|
+
vibe-aigc execute "Design a landing page" --visualize --checkpoint
|
|
95
|
+
|
|
96
|
+
# Manage checkpoints
|
|
97
|
+
vibe-aigc checkpoints --list
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Quick Example
|
|
101
|
+
|
|
102
|
+
```python
|
|
103
|
+
import asyncio
|
|
104
|
+
from vibe_aigc import Vibe, MetaPlanner
|
|
105
|
+
|
|
106
|
+
async def main():
|
|
107
|
+
vibe = Vibe(
|
|
108
|
+
description="Write a blog post about AI agents",
|
|
109
|
+
style="informative, engaging",
|
|
110
|
+
constraints=["under 1000 words"]
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
planner = MetaPlanner()
|
|
114
|
+
result = await planner.execute_with_visualization(vibe)
|
|
115
|
+
|
|
116
|
+
print(f"Status: {result.get_summary()['status']}")
|
|
117
|
+
|
|
118
|
+
asyncio.run(main())
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Architecture
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
User Vibe → MetaPlanner → Agentic Pipeline → Execution → Result
|
|
125
|
+
↑ ↓
|
|
126
|
+
└──── Feedback Loop ────────┘
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Documentation
|
|
130
|
+
|
|
131
|
+
- [Installation Guide](https://jmanhype.github.io/vibe-aigc/getting-started/installation/)
|
|
132
|
+
- [Quick Start Tutorial](https://jmanhype.github.io/vibe-aigc/getting-started/quickstart/)
|
|
133
|
+
- [Core Concepts](https://jmanhype.github.io/vibe-aigc/guide/concepts/)
|
|
134
|
+
- [API Reference](https://jmanhype.github.io/vibe-aigc/api/models/)
|
|
135
|
+
- [Examples](https://jmanhype.github.io/vibe-aigc/examples/)
|
|
136
|
+
|
|
137
|
+
## Contributing
|
|
138
|
+
|
|
139
|
+
Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
140
|
+
|
|
141
|
+
## License
|
|
142
|
+
|
|
143
|
+
MIT — see [LICENSE](LICENSE) for details.
|
|
144
|
+
|
|
145
|
+
## Citation
|
|
146
|
+
|
|
147
|
+
```bibtex
|
|
148
|
+
@article{vibe-aigc-2025,
|
|
149
|
+
title={Vibe AIGC: A New Paradigm for Content Generation via Agentic Orchestration},
|
|
150
|
+
journal={arXiv preprint arXiv:2602.04575},
|
|
151
|
+
year={2025}
|
|
152
|
+
}
|
|
153
|
+
```
|
|
@@ -18,6 +18,7 @@ tests/test_progress_callbacks.py
|
|
|
18
18
|
tests/test_visualization.py
|
|
19
19
|
tests/test_workflow_resume.py
|
|
20
20
|
vibe_aigc/__init__.py
|
|
21
|
+
vibe_aigc/cli.py
|
|
21
22
|
vibe_aigc/executor.py
|
|
22
23
|
vibe_aigc/llm.py
|
|
23
24
|
vibe_aigc/models.py
|
|
@@ -27,5 +28,6 @@ vibe_aigc/visualization.py
|
|
|
27
28
|
vibe_aigc.egg-info/PKG-INFO
|
|
28
29
|
vibe_aigc.egg-info/SOURCES.txt
|
|
29
30
|
vibe_aigc.egg-info/dependency_links.txt
|
|
31
|
+
vibe_aigc.egg-info/entry_points.txt
|
|
30
32
|
vibe_aigc.egg-info/requires.txt
|
|
31
33
|
vibe_aigc.egg-info/top_level.txt
|
vibe_aigc-0.1.0/PKG-INFO
DELETED
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: vibe-aigc
|
|
3
|
-
Version: 0.1.0
|
|
4
|
-
Summary: A New Paradigm for Content Generation via Agentic Orchestration
|
|
5
|
-
Author: Vibe AIGC Contributors
|
|
6
|
-
License-Expression: MIT
|
|
7
|
-
Project-URL: Homepage, https://github.com/jmanhype/vibe-aigc
|
|
8
|
-
Project-URL: Repository, https://github.com/jmanhype/vibe-aigc
|
|
9
|
-
Project-URL: Documentation, https://github.com/jmanhype/vibe-aigc#readme
|
|
10
|
-
Project-URL: Issues, https://github.com/jmanhype/vibe-aigc/issues
|
|
11
|
-
Keywords: ai,aigc,agents,orchestration,content-generation,llm,workflow
|
|
12
|
-
Classifier: Development Status :: 4 - Beta
|
|
13
|
-
Classifier: Intended Audience :: Developers
|
|
14
|
-
Classifier: Programming Language :: Python :: 3
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
-
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
17
|
-
Classifier: Typing :: Typed
|
|
18
|
-
Requires-Python: >=3.12
|
|
19
|
-
Description-Content-Type: text/markdown
|
|
20
|
-
License-File: LICENSE
|
|
21
|
-
Requires-Dist: pydantic>=2.0.0
|
|
22
|
-
Requires-Dist: openai>=1.0.0
|
|
23
|
-
Provides-Extra: dev
|
|
24
|
-
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
25
|
-
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
26
|
-
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
27
|
-
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
28
|
-
Requires-Dist: mypy>=1.0.0; extra == "dev"
|
|
29
|
-
Dynamic: license-file
|
|
30
|
-
|
|
31
|
-
# Vibe AIGC
|
|
32
|
-
|
|
33
|
-
[](https://github.com/jmanhype/vibe-aigc/actions/workflows/ci.yml)
|
|
34
|
-
[](https://www.python.org/downloads/)
|
|
35
|
-
[](https://opensource.org/licenses/MIT)
|
|
36
|
-
|
|
37
|
-
**A New Paradigm for Content Generation via Agentic Orchestration**
|
|
38
|
-
|
|
39
|
-
Based on [arXiv:2602.04575](https://arxiv.org/abs/2602.04575)
|
|
40
|
-
|
|
41
|
-
## Overview
|
|
42
|
-
|
|
43
|
-
Vibe AIGC introduces a paradigm shift from model-centric to agentic orchestration for content generation. Instead of traditional prompt engineering, users provide a **Vibe** — a high-level representation encompassing aesthetic preferences, functional logic, and intent.
|
|
44
|
-
|
|
45
|
-
## Key Features
|
|
46
|
-
|
|
47
|
-
- 🎯 **Vibe-based Planning** — Decompose high-level intent into executable workflows
|
|
48
|
-
- ⚡ **Parallel Execution** — Independent nodes execute concurrently for faster results
|
|
49
|
-
- 🔄 **Adaptive Replanning** — Automatic workflow adaptation based on execution feedback
|
|
50
|
-
- 💾 **Checkpoint/Resume** — Save and restore workflow state for long-running tasks
|
|
51
|
-
- 📊 **Progress Tracking** — Real-time callbacks and visualization
|
|
52
|
-
- 🎨 **Workflow Visualization** — ASCII and Mermaid diagram generation
|
|
53
|
-
|
|
54
|
-
## Architecture
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
User Vibe → MetaPlanner → Agentic Pipeline → Execution → Result
|
|
58
|
-
↑ ↓
|
|
59
|
-
└──── Feedback Loop ────────┘
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## Installation
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
pip install -e .
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## Quick Start
|
|
69
|
-
|
|
70
|
-
```python
|
|
71
|
-
from vibe_aigc import MetaPlanner, Vibe
|
|
72
|
-
|
|
73
|
-
# Define your vibe
|
|
74
|
-
vibe = Vibe(
|
|
75
|
-
description="Create a cinematic sci-fi scene",
|
|
76
|
-
style="dark, atmospheric",
|
|
77
|
-
constraints=["no violence", "PG-13"]
|
|
78
|
-
)
|
|
79
|
-
|
|
80
|
-
# Plan and execute
|
|
81
|
-
planner = MetaPlanner()
|
|
82
|
-
result = await planner.execute(vibe)
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
## Advanced Usage
|
|
86
|
-
|
|
87
|
-
### With Progress Callbacks
|
|
88
|
-
|
|
89
|
-
```python
|
|
90
|
-
def on_progress(event):
|
|
91
|
-
print(f"[{event.event_type}] {event.message}")
|
|
92
|
-
|
|
93
|
-
planner = MetaPlanner(progress_callback=on_progress)
|
|
94
|
-
result = await planner.execute_with_visualization(vibe)
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### With Checkpoint/Resume
|
|
98
|
-
|
|
99
|
-
```python
|
|
100
|
-
# Enable automatic checkpointing
|
|
101
|
-
planner = MetaPlanner(checkpoint_interval=5)
|
|
102
|
-
|
|
103
|
-
# Execute with checkpoints
|
|
104
|
-
result = await planner.execute_with_resume(vibe)
|
|
105
|
-
|
|
106
|
-
# Resume from a checkpoint
|
|
107
|
-
checkpoints = planner.list_checkpoints()
|
|
108
|
-
result = await planner.execute_with_resume(vibe, checkpoint_id=checkpoints[0]["checkpoint_id"])
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### With Adaptive Replanning
|
|
112
|
-
|
|
113
|
-
```python
|
|
114
|
-
# Automatically adapt workflow on failures
|
|
115
|
-
result = await planner.execute_with_adaptation(vibe)
|
|
116
|
-
|
|
117
|
-
# Check adaptation history
|
|
118
|
-
print(result["adaptation_info"])
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
## API Reference
|
|
122
|
-
|
|
123
|
-
### Vibe
|
|
124
|
-
|
|
125
|
-
```python
|
|
126
|
-
Vibe(
|
|
127
|
-
description: str, # What you want to create
|
|
128
|
-
style: str = None, # Aesthetic preferences
|
|
129
|
-
constraints: list = [],# Boundaries and requirements
|
|
130
|
-
domain: str = None, # Content domain
|
|
131
|
-
metadata: dict = {} # Additional context
|
|
132
|
-
)
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
### MetaPlanner
|
|
136
|
-
|
|
137
|
-
| Method | Description |
|
|
138
|
-
|--------|-------------|
|
|
139
|
-
| `plan(vibe)` | Generate workflow plan without execution |
|
|
140
|
-
| `execute(vibe)` | Plan and execute workflow |
|
|
141
|
-
| `execute_with_adaptation(vibe)` | Execute with automatic replanning |
|
|
142
|
-
| `execute_with_visualization(vibe)` | Execute with progress visualization |
|
|
143
|
-
| `execute_with_resume(vibe, checkpoint_id)` | Execute with checkpoint support |
|
|
144
|
-
| `list_checkpoints()` | List available checkpoints |
|
|
145
|
-
| `get_checkpoint(id)` | Load a specific checkpoint |
|
|
146
|
-
| `delete_checkpoint(id)` | Remove a checkpoint |
|
|
147
|
-
|
|
148
|
-
## Testing
|
|
149
|
-
|
|
150
|
-
```bash
|
|
151
|
-
# Run all tests
|
|
152
|
-
pytest -v
|
|
153
|
-
|
|
154
|
-
# Run specific test file
|
|
155
|
-
pytest tests/test_planner.py -v
|
|
156
|
-
|
|
157
|
-
# Run with coverage
|
|
158
|
-
pytest --cov=vibe_aigc
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
## Project Structure
|
|
162
|
-
|
|
163
|
-
```
|
|
164
|
-
vibe_aigc/
|
|
165
|
-
├── __init__.py # Package exports
|
|
166
|
-
├── models.py # Vibe, WorkflowPlan, WorkflowNode
|
|
167
|
-
├── llm.py # LLM client for plan generation
|
|
168
|
-
├── planner.py # MetaPlanner orchestration
|
|
169
|
-
├── executor.py # Workflow execution engine
|
|
170
|
-
├── persistence.py # Checkpoint management
|
|
171
|
-
└── visualization.py # Diagram generation
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
## Contributing
|
|
175
|
-
|
|
176
|
-
1. Fork the repository
|
|
177
|
-
2. Create a feature branch
|
|
178
|
-
3. Make your changes with tests
|
|
179
|
-
4. Submit a pull request
|
|
180
|
-
|
|
181
|
-
## License
|
|
182
|
-
|
|
183
|
-
MIT
|
|
184
|
-
|
|
185
|
-
## Citation
|
|
186
|
-
|
|
187
|
-
```bibtex
|
|
188
|
-
@article{vibe-aigc-2025,
|
|
189
|
-
title={Vibe AIGC: A New Paradigm for Content Generation via Agentic Orchestration},
|
|
190
|
-
journal={arXiv preprint arXiv:2602.04575},
|
|
191
|
-
year={2025}
|
|
192
|
-
}
|
|
193
|
-
```
|
vibe_aigc-0.1.0/README.md
DELETED
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
# Vibe AIGC
|
|
2
|
-
|
|
3
|
-
[](https://github.com/jmanhype/vibe-aigc/actions/workflows/ci.yml)
|
|
4
|
-
[](https://www.python.org/downloads/)
|
|
5
|
-
[](https://opensource.org/licenses/MIT)
|
|
6
|
-
|
|
7
|
-
**A New Paradigm for Content Generation via Agentic Orchestration**
|
|
8
|
-
|
|
9
|
-
Based on [arXiv:2602.04575](https://arxiv.org/abs/2602.04575)
|
|
10
|
-
|
|
11
|
-
## Overview
|
|
12
|
-
|
|
13
|
-
Vibe AIGC introduces a paradigm shift from model-centric to agentic orchestration for content generation. Instead of traditional prompt engineering, users provide a **Vibe** — a high-level representation encompassing aesthetic preferences, functional logic, and intent.
|
|
14
|
-
|
|
15
|
-
## Key Features
|
|
16
|
-
|
|
17
|
-
- 🎯 **Vibe-based Planning** — Decompose high-level intent into executable workflows
|
|
18
|
-
- ⚡ **Parallel Execution** — Independent nodes execute concurrently for faster results
|
|
19
|
-
- 🔄 **Adaptive Replanning** — Automatic workflow adaptation based on execution feedback
|
|
20
|
-
- 💾 **Checkpoint/Resume** — Save and restore workflow state for long-running tasks
|
|
21
|
-
- 📊 **Progress Tracking** — Real-time callbacks and visualization
|
|
22
|
-
- 🎨 **Workflow Visualization** — ASCII and Mermaid diagram generation
|
|
23
|
-
|
|
24
|
-
## Architecture
|
|
25
|
-
|
|
26
|
-
```
|
|
27
|
-
User Vibe → MetaPlanner → Agentic Pipeline → Execution → Result
|
|
28
|
-
↑ ↓
|
|
29
|
-
└──── Feedback Loop ────────┘
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## Installation
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
pip install -e .
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Quick Start
|
|
39
|
-
|
|
40
|
-
```python
|
|
41
|
-
from vibe_aigc import MetaPlanner, Vibe
|
|
42
|
-
|
|
43
|
-
# Define your vibe
|
|
44
|
-
vibe = Vibe(
|
|
45
|
-
description="Create a cinematic sci-fi scene",
|
|
46
|
-
style="dark, atmospheric",
|
|
47
|
-
constraints=["no violence", "PG-13"]
|
|
48
|
-
)
|
|
49
|
-
|
|
50
|
-
# Plan and execute
|
|
51
|
-
planner = MetaPlanner()
|
|
52
|
-
result = await planner.execute(vibe)
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## Advanced Usage
|
|
56
|
-
|
|
57
|
-
### With Progress Callbacks
|
|
58
|
-
|
|
59
|
-
```python
|
|
60
|
-
def on_progress(event):
|
|
61
|
-
print(f"[{event.event_type}] {event.message}")
|
|
62
|
-
|
|
63
|
-
planner = MetaPlanner(progress_callback=on_progress)
|
|
64
|
-
result = await planner.execute_with_visualization(vibe)
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### With Checkpoint/Resume
|
|
68
|
-
|
|
69
|
-
```python
|
|
70
|
-
# Enable automatic checkpointing
|
|
71
|
-
planner = MetaPlanner(checkpoint_interval=5)
|
|
72
|
-
|
|
73
|
-
# Execute with checkpoints
|
|
74
|
-
result = await planner.execute_with_resume(vibe)
|
|
75
|
-
|
|
76
|
-
# Resume from a checkpoint
|
|
77
|
-
checkpoints = planner.list_checkpoints()
|
|
78
|
-
result = await planner.execute_with_resume(vibe, checkpoint_id=checkpoints[0]["checkpoint_id"])
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### With Adaptive Replanning
|
|
82
|
-
|
|
83
|
-
```python
|
|
84
|
-
# Automatically adapt workflow on failures
|
|
85
|
-
result = await planner.execute_with_adaptation(vibe)
|
|
86
|
-
|
|
87
|
-
# Check adaptation history
|
|
88
|
-
print(result["adaptation_info"])
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
## API Reference
|
|
92
|
-
|
|
93
|
-
### Vibe
|
|
94
|
-
|
|
95
|
-
```python
|
|
96
|
-
Vibe(
|
|
97
|
-
description: str, # What you want to create
|
|
98
|
-
style: str = None, # Aesthetic preferences
|
|
99
|
-
constraints: list = [],# Boundaries and requirements
|
|
100
|
-
domain: str = None, # Content domain
|
|
101
|
-
metadata: dict = {} # Additional context
|
|
102
|
-
)
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### MetaPlanner
|
|
106
|
-
|
|
107
|
-
| Method | Description |
|
|
108
|
-
|--------|-------------|
|
|
109
|
-
| `plan(vibe)` | Generate workflow plan without execution |
|
|
110
|
-
| `execute(vibe)` | Plan and execute workflow |
|
|
111
|
-
| `execute_with_adaptation(vibe)` | Execute with automatic replanning |
|
|
112
|
-
| `execute_with_visualization(vibe)` | Execute with progress visualization |
|
|
113
|
-
| `execute_with_resume(vibe, checkpoint_id)` | Execute with checkpoint support |
|
|
114
|
-
| `list_checkpoints()` | List available checkpoints |
|
|
115
|
-
| `get_checkpoint(id)` | Load a specific checkpoint |
|
|
116
|
-
| `delete_checkpoint(id)` | Remove a checkpoint |
|
|
117
|
-
|
|
118
|
-
## Testing
|
|
119
|
-
|
|
120
|
-
```bash
|
|
121
|
-
# Run all tests
|
|
122
|
-
pytest -v
|
|
123
|
-
|
|
124
|
-
# Run specific test file
|
|
125
|
-
pytest tests/test_planner.py -v
|
|
126
|
-
|
|
127
|
-
# Run with coverage
|
|
128
|
-
pytest --cov=vibe_aigc
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
## Project Structure
|
|
132
|
-
|
|
133
|
-
```
|
|
134
|
-
vibe_aigc/
|
|
135
|
-
├── __init__.py # Package exports
|
|
136
|
-
├── models.py # Vibe, WorkflowPlan, WorkflowNode
|
|
137
|
-
├── llm.py # LLM client for plan generation
|
|
138
|
-
├── planner.py # MetaPlanner orchestration
|
|
139
|
-
├── executor.py # Workflow execution engine
|
|
140
|
-
├── persistence.py # Checkpoint management
|
|
141
|
-
└── visualization.py # Diagram generation
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
## Contributing
|
|
145
|
-
|
|
146
|
-
1. Fork the repository
|
|
147
|
-
2. Create a feature branch
|
|
148
|
-
3. Make your changes with tests
|
|
149
|
-
4. Submit a pull request
|
|
150
|
-
|
|
151
|
-
## License
|
|
152
|
-
|
|
153
|
-
MIT
|
|
154
|
-
|
|
155
|
-
## Citation
|
|
156
|
-
|
|
157
|
-
```bibtex
|
|
158
|
-
@article{vibe-aigc-2025,
|
|
159
|
-
title={Vibe AIGC: A New Paradigm for Content Generation via Agentic Orchestration},
|
|
160
|
-
journal={arXiv preprint arXiv:2602.04575},
|
|
161
|
-
year={2025}
|
|
162
|
-
}
|
|
163
|
-
```
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: vibe-aigc
|
|
3
|
-
Version: 0.1.0
|
|
4
|
-
Summary: A New Paradigm for Content Generation via Agentic Orchestration
|
|
5
|
-
Author: Vibe AIGC Contributors
|
|
6
|
-
License-Expression: MIT
|
|
7
|
-
Project-URL: Homepage, https://github.com/jmanhype/vibe-aigc
|
|
8
|
-
Project-URL: Repository, https://github.com/jmanhype/vibe-aigc
|
|
9
|
-
Project-URL: Documentation, https://github.com/jmanhype/vibe-aigc#readme
|
|
10
|
-
Project-URL: Issues, https://github.com/jmanhype/vibe-aigc/issues
|
|
11
|
-
Keywords: ai,aigc,agents,orchestration,content-generation,llm,workflow
|
|
12
|
-
Classifier: Development Status :: 4 - Beta
|
|
13
|
-
Classifier: Intended Audience :: Developers
|
|
14
|
-
Classifier: Programming Language :: Python :: 3
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
-
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
17
|
-
Classifier: Typing :: Typed
|
|
18
|
-
Requires-Python: >=3.12
|
|
19
|
-
Description-Content-Type: text/markdown
|
|
20
|
-
License-File: LICENSE
|
|
21
|
-
Requires-Dist: pydantic>=2.0.0
|
|
22
|
-
Requires-Dist: openai>=1.0.0
|
|
23
|
-
Provides-Extra: dev
|
|
24
|
-
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
25
|
-
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
26
|
-
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
27
|
-
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
28
|
-
Requires-Dist: mypy>=1.0.0; extra == "dev"
|
|
29
|
-
Dynamic: license-file
|
|
30
|
-
|
|
31
|
-
# Vibe AIGC
|
|
32
|
-
|
|
33
|
-
[](https://github.com/jmanhype/vibe-aigc/actions/workflows/ci.yml)
|
|
34
|
-
[](https://www.python.org/downloads/)
|
|
35
|
-
[](https://opensource.org/licenses/MIT)
|
|
36
|
-
|
|
37
|
-
**A New Paradigm for Content Generation via Agentic Orchestration**
|
|
38
|
-
|
|
39
|
-
Based on [arXiv:2602.04575](https://arxiv.org/abs/2602.04575)
|
|
40
|
-
|
|
41
|
-
## Overview
|
|
42
|
-
|
|
43
|
-
Vibe AIGC introduces a paradigm shift from model-centric to agentic orchestration for content generation. Instead of traditional prompt engineering, users provide a **Vibe** — a high-level representation encompassing aesthetic preferences, functional logic, and intent.
|
|
44
|
-
|
|
45
|
-
## Key Features
|
|
46
|
-
|
|
47
|
-
- 🎯 **Vibe-based Planning** — Decompose high-level intent into executable workflows
|
|
48
|
-
- ⚡ **Parallel Execution** — Independent nodes execute concurrently for faster results
|
|
49
|
-
- 🔄 **Adaptive Replanning** — Automatic workflow adaptation based on execution feedback
|
|
50
|
-
- 💾 **Checkpoint/Resume** — Save and restore workflow state for long-running tasks
|
|
51
|
-
- 📊 **Progress Tracking** — Real-time callbacks and visualization
|
|
52
|
-
- 🎨 **Workflow Visualization** — ASCII and Mermaid diagram generation
|
|
53
|
-
|
|
54
|
-
## Architecture
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
User Vibe → MetaPlanner → Agentic Pipeline → Execution → Result
|
|
58
|
-
↑ ↓
|
|
59
|
-
└──── Feedback Loop ────────┘
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## Installation
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
pip install -e .
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## Quick Start
|
|
69
|
-
|
|
70
|
-
```python
|
|
71
|
-
from vibe_aigc import MetaPlanner, Vibe
|
|
72
|
-
|
|
73
|
-
# Define your vibe
|
|
74
|
-
vibe = Vibe(
|
|
75
|
-
description="Create a cinematic sci-fi scene",
|
|
76
|
-
style="dark, atmospheric",
|
|
77
|
-
constraints=["no violence", "PG-13"]
|
|
78
|
-
)
|
|
79
|
-
|
|
80
|
-
# Plan and execute
|
|
81
|
-
planner = MetaPlanner()
|
|
82
|
-
result = await planner.execute(vibe)
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
## Advanced Usage
|
|
86
|
-
|
|
87
|
-
### With Progress Callbacks
|
|
88
|
-
|
|
89
|
-
```python
|
|
90
|
-
def on_progress(event):
|
|
91
|
-
print(f"[{event.event_type}] {event.message}")
|
|
92
|
-
|
|
93
|
-
planner = MetaPlanner(progress_callback=on_progress)
|
|
94
|
-
result = await planner.execute_with_visualization(vibe)
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### With Checkpoint/Resume
|
|
98
|
-
|
|
99
|
-
```python
|
|
100
|
-
# Enable automatic checkpointing
|
|
101
|
-
planner = MetaPlanner(checkpoint_interval=5)
|
|
102
|
-
|
|
103
|
-
# Execute with checkpoints
|
|
104
|
-
result = await planner.execute_with_resume(vibe)
|
|
105
|
-
|
|
106
|
-
# Resume from a checkpoint
|
|
107
|
-
checkpoints = planner.list_checkpoints()
|
|
108
|
-
result = await planner.execute_with_resume(vibe, checkpoint_id=checkpoints[0]["checkpoint_id"])
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### With Adaptive Replanning
|
|
112
|
-
|
|
113
|
-
```python
|
|
114
|
-
# Automatically adapt workflow on failures
|
|
115
|
-
result = await planner.execute_with_adaptation(vibe)
|
|
116
|
-
|
|
117
|
-
# Check adaptation history
|
|
118
|
-
print(result["adaptation_info"])
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
## API Reference
|
|
122
|
-
|
|
123
|
-
### Vibe
|
|
124
|
-
|
|
125
|
-
```python
|
|
126
|
-
Vibe(
|
|
127
|
-
description: str, # What you want to create
|
|
128
|
-
style: str = None, # Aesthetic preferences
|
|
129
|
-
constraints: list = [],# Boundaries and requirements
|
|
130
|
-
domain: str = None, # Content domain
|
|
131
|
-
metadata: dict = {} # Additional context
|
|
132
|
-
)
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
### MetaPlanner
|
|
136
|
-
|
|
137
|
-
| Method | Description |
|
|
138
|
-
|--------|-------------|
|
|
139
|
-
| `plan(vibe)` | Generate workflow plan without execution |
|
|
140
|
-
| `execute(vibe)` | Plan and execute workflow |
|
|
141
|
-
| `execute_with_adaptation(vibe)` | Execute with automatic replanning |
|
|
142
|
-
| `execute_with_visualization(vibe)` | Execute with progress visualization |
|
|
143
|
-
| `execute_with_resume(vibe, checkpoint_id)` | Execute with checkpoint support |
|
|
144
|
-
| `list_checkpoints()` | List available checkpoints |
|
|
145
|
-
| `get_checkpoint(id)` | Load a specific checkpoint |
|
|
146
|
-
| `delete_checkpoint(id)` | Remove a checkpoint |
|
|
147
|
-
|
|
148
|
-
## Testing
|
|
149
|
-
|
|
150
|
-
```bash
|
|
151
|
-
# Run all tests
|
|
152
|
-
pytest -v
|
|
153
|
-
|
|
154
|
-
# Run specific test file
|
|
155
|
-
pytest tests/test_planner.py -v
|
|
156
|
-
|
|
157
|
-
# Run with coverage
|
|
158
|
-
pytest --cov=vibe_aigc
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
## Project Structure
|
|
162
|
-
|
|
163
|
-
```
|
|
164
|
-
vibe_aigc/
|
|
165
|
-
├── __init__.py # Package exports
|
|
166
|
-
├── models.py # Vibe, WorkflowPlan, WorkflowNode
|
|
167
|
-
├── llm.py # LLM client for plan generation
|
|
168
|
-
├── planner.py # MetaPlanner orchestration
|
|
169
|
-
├── executor.py # Workflow execution engine
|
|
170
|
-
├── persistence.py # Checkpoint management
|
|
171
|
-
└── visualization.py # Diagram generation
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
## Contributing
|
|
175
|
-
|
|
176
|
-
1. Fork the repository
|
|
177
|
-
2. Create a feature branch
|
|
178
|
-
3. Make your changes with tests
|
|
179
|
-
4. Submit a pull request
|
|
180
|
-
|
|
181
|
-
## License
|
|
182
|
-
|
|
183
|
-
MIT
|
|
184
|
-
|
|
185
|
-
## Citation
|
|
186
|
-
|
|
187
|
-
```bibtex
|
|
188
|
-
@article{vibe-aigc-2025,
|
|
189
|
-
title={Vibe AIGC: A New Paradigm for Content Generation via Agentic Orchestration},
|
|
190
|
-
journal={arXiv preprint arXiv:2602.04575},
|
|
191
|
-
year={2025}
|
|
192
|
-
}
|
|
193
|
-
```
|
|
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
|