controller.yaml yaml
150 lines 4.6 KB
Raw
sha256:41d741fb345c4abdb640838aa3d847de02ccffd7a39fce04894e743e683b50d0 fix(security): pin patched transitive deps to clear Dependa… Human minor ⚠ breaking 7 days ago
1 name: controller
2 title: Project content controller
3 description: |
4 Orchestrates the 6 conveyor-belt agents per project (script-writer, social-poster,
5 thumbnail-brief, clip-factory, blog-seo, newsletter) plus the 3 SaaS bridges
6 (heygen-render, elevenlabs-tts, descript-import). Watches budgets, surfaces drafts
7 in the Hub UI for human approval. One run produces a complete content package
8 (1 long-form + 5 shorts + blog + newsletter + 5 social captions + 1 thumbnail).
9
10 # Controller is a deterministic pipeline runner, not an LLM. It uses no model.
11 # It reads the per-project config, kicks off the 6 conveyor agents in parallel
12 # (where dependencies allow), then chains the bridges sequentially.
13 type: pipeline
14
15 inputs:
16 project:
17 type: enum
18 values: [born-free, store-free, knowtation]
19 required: true
20 topic:
21 type: string
22 required: true
23 max_length: 200
24 dry_run:
25 type: boolean
26 default: false
27 kinds:
28 type: array
29 items:
30 enum: [script, social, thumbnail, clip, blog, newsletter]
31 default: [script, social, thumbnail, clip, blog, newsletter]
32
33 # Dependency graph — each step lists its prerequisites.
34 # Paperclip topologically sorts and runs independent steps in parallel.
35 steps:
36 - id: research
37 skill: search-vault
38 args:
39 project: "{{project}}"
40 query: "{{topic}}"
41 limit: 8
42 outputs: [research_results]
43
44 - id: write_script
45 agent: script-writer
46 needs: [research]
47 when: "{{ 'script' in kinds }}"
48 inputs:
49 project: "{{project}}"
50 topic: "{{topic}}"
51 research: "{{research_results}}"
52 outputs: [script_path]
53
54 - id: render_video
55 agent: heygen-render
56 needs: [write_script]
57 when: "{{ 'script' in kinds and not dry_run }}"
58 inputs:
59 project: "{{project}}"
60 script_path: "{{script_path}}"
61 outputs: [video_url]
62 timeout_seconds: 1200 # HeyGen Avatar IV can take 5-10 min for 5 min content
63
64 - id: import_to_descript
65 agent: descript-import
66 needs: [render_video]
67 when: "{{ 'clip' in kinds and not dry_run }}"
68 inputs:
69 project: "{{project}}"
70 video_url: "{{video_url}}"
71 outputs: [descript_project_id]
72
73 - id: write_social
74 agent: social-poster
75 needs: [write_script]
76 when: "{{ 'social' in kinds }}"
77 inputs:
78 project: "{{project}}"
79 topic: "{{topic}}"
80 script_path: "{{script_path}}"
81 outputs: [social_path]
82
83 - id: write_thumbnail_brief
84 agent: thumbnail-brief
85 needs: [write_script]
86 when: "{{ 'thumbnail' in kinds }}"
87 inputs:
88 project: "{{project}}"
89 topic: "{{topic}}"
90 script_path: "{{script_path}}"
91 outputs: [thumbnail_path]
92
93 - id: write_clips
94 agent: clip-factory
95 needs: [write_script]
96 when: "{{ 'clip' in kinds }}"
97 inputs:
98 project: "{{project}}"
99 topic: "{{topic}}"
100 script_path: "{{script_path}}"
101 outputs: [clips_path]
102
103 - id: write_blog
104 agent: blog-seo
105 needs: [write_script]
106 when: "{{ 'blog' in kinds }}"
107 inputs:
108 project: "{{project}}"
109 topic: "{{topic}}"
110 script_path: "{{script_path}}"
111 outputs: [blog_path]
112
113 - id: write_newsletter
114 agent: newsletter
115 needs: [write_script]
116 when: "{{ 'newsletter' in kinds }}"
117 inputs:
118 project: "{{project}}"
119 topic: "{{topic}}"
120 script_path: "{{script_path}}"
121 outputs: [newsletter_path]
122
123 # Budget guards. Hard stop the controller (and therefore all agents) before this.
124 # Reset monthly. Visible in the Hub UI.
125 budgets:
126 per_run:
127 deepinfra_usd: 2.00 # one full content package across 6 agents @ Qwen 2.5-72B
128 heygen_credits: 100 # one Avatar IV render of ~5 min
129 elevenlabs_credits: 5000 # one ~5-min voice gen
130 descript_minutes: 30 # one media file imported
131 per_month_per_project:
132 deepinfra_usd: 80.00
133 heygen_credits: 800 # ~40 min/mo of Avatar IV per project
134 elevenlabs_credits: 30000 # ~30 min/mo per project (90 min/mo across 3 projects vs 100 min Creator quota)
135 descript_minutes: 600 # ~10 hrs/mo per project (3.3 hrs/mo each on 10-hr plan)
136
137 # What a successful run produces.
138 expected_artifacts:
139 - kind: script
140 path_pattern: "projects/{{project}}/drafts/{{date}}-script-*.md"
141 - kind: social
142 path_pattern: "projects/{{project}}/drafts/{{date}}-social-*.md"
143 - kind: thumbnail
144 path_pattern: "projects/{{project}}/drafts/{{date}}-thumbnail-*.md"
145 - kind: clip
146 path_pattern: "projects/{{project}}/drafts/{{date}}-clip-*.md"
147 - kind: blog
148 path_pattern: "projects/{{project}}/drafts/{{date}}-blog-*.md"
149 - kind: newsletter
150 path_pattern: "projects/{{project}}/drafts/{{date}}-newsletter-*.md"
File History 1 commit
sha256:41d741fb345c4abdb640838aa3d847de02ccffd7a39fce04894e743e683b50d0 fix(security): pin patched transitive deps to clear Dependa… Human minor 7 days ago