@mestreyoda/fabrica 0.2.15 → 0.2.17

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.
package/README.md CHANGED
@@ -96,7 +96,17 @@ operational/workspace state, then tells you what is still missing.
96
96
 
97
97
  ## Quick start
98
98
 
99
- **1. Install Fabrica**:
99
+ This is the minimum recommended path to get Fabrica working end-to-end with the official product flow.
100
+
101
+ **1. Authenticate GitHub CLI**:
102
+
103
+ ```bash
104
+ gh auth status || gh auth login
105
+ ```
106
+
107
+ Fabrica uses authenticated `gh` CLI for GitHub operations in the default setup.
108
+
109
+ **2. Install Fabrica**:
100
110
 
101
111
  ```bash
102
112
  openclaw plugins install @mestreyoda/fabrica
@@ -104,37 +114,69 @@ openclaw plugins install @mestreyoda/fabrica
104
114
 
105
115
  The plugin should load immediately after install, without manual remediation.
106
116
 
107
- **2. Confirm loadability**:
117
+ **3. Confirm loadability**:
108
118
 
109
119
  ```bash
110
120
  openclaw plugins inspect fabrica
111
121
  ```
112
122
 
113
- **3. Configure operational state for a workspace**:
123
+ **4. Configure Fabrica for a workspace**:
114
124
 
115
125
  ```bash
116
126
  openclaw fabrica doctor workspace --workspace /path/to/workspace
117
127
  openclaw fabrica setup --workspace /path/to/workspace --new-agent fabrica
118
128
  ```
119
129
 
120
- Use `openclaw fabrica setup --agent <id>` if you already have an agent. GitHub,
121
- Telegram, and webhook behavior are separate operational concerns, not
122
- installation dependencies.
130
+ Use `openclaw fabrica setup --agent <id>` if you already have an agent.
131
+
132
+ When the official Telegram DM bootstrap flow is configured (`bootstrapDmEnabled=true`
133
+ plus `projectsForumChatId`), `openclaw fabrica setup` also prepares the dedicated
134
+ internal `genesis` agent automatically.
135
+
136
+ **5. Configure Telegram for the official Fabrica flow**:
137
+
138
+ The official flow is:
139
+ - Telegram DM with the bot for new-project intake
140
+ - one Telegram forum group for project topics/timelines
141
+
142
+ At minimum, when DM bootstrap is enabled, set:
143
+ - `plugins.entries.fabrica.config.telegram.bootstrapDmEnabled=true`
144
+ - `plugins.entries.fabrica.config.telegram.projectsForumChatId=<YOUR_PROJECTS_FORUM_CHAT_ID>`
145
+
146
+ If `projectsForumChatId` is missing while DM bootstrap is enabled, Fabrica can accept the DM but will fail when it needs to create the project topic.
147
+
148
+ **6. Validate operational readiness**:
149
+
150
+ ```bash
151
+ openclaw plugins inspect fabrica
152
+ openclaw fabrica doctor workspace --workspace /path/to/workspace
153
+ ```
123
154
 
124
155
  **Environment provisioning note**:
125
156
 
126
- Developer and tester pickup now pass through a stack environment gate. For
127
- supported stacks such as `python-cli`, Fabrica provisions the required toolchain
128
- and project-local environment before dispatching workers, instead of discovering
129
- missing dependencies inside a live worker run.
157
+ Developer and tester pickup pass through a stack environment gate. Fabrica
158
+ prepares the project environment before dispatching real work, instead of
159
+ finding missing dependencies inside a live worker run.
160
+
161
+ For Python projects, this includes just-in-time `uv` installation when needed,
162
+ a shared toolchain, and a project-local `.venv`.
130
163
 
131
- **4. Restart the gateway**:
164
+ For existing Node projects, Fabrica expects a reproducible lockfile
165
+ (`package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`, or `bun.lock`) before
166
+ real developer/tester dispatch. Greenfield scaffold mode can materialize the
167
+ first deterministic lockfile, but regular runtime pickup fails closed without
168
+ one.
169
+
170
+ `dryRun: true` skips environment provisioning entirely and remains side-effect
171
+ free.
172
+
173
+ **7. Restart the gateway if needed**:
132
174
 
133
175
  ```bash
134
176
  systemctl --user restart openclaw-gateway.service
135
177
  ```
136
178
 
137
- **5. Trigger a new project programmatically**:
179
+ **8. Trigger a new project programmatically**:
138
180
 
139
181
  ```bash
140
182
  cd ~/fabrica # GitHub clone install only
@@ -146,13 +188,13 @@ npx tsx scripts/genesis-trigger.ts "A CLI tool that counts words in a file" \
146
188
 
147
189
  Remove `--dry-run` to execute for real.
148
190
 
149
- **6. Watch the pipeline run**:
191
+ **9. Watch the pipeline run**:
150
192
 
151
193
  ```bash
152
194
  tail -f ~/.openclaw/workspace/logs/genesis.log
153
195
  ```
154
196
 
155
- **7. Check metrics**:
197
+ **10. Check metrics**:
156
198
 
157
199
  ```bash
158
200
  openclaw fabrica metrics
@@ -223,7 +265,11 @@ Use plugin config when you want explicit webhook behavior or provider auth profi
223
265
 
224
266
  ### With Telegram
225
267
 
226
- Telegram enables DM-based project bootstrap, per-project forum topics, and a separate ops chat for heartbeat and cron notifications.
268
+ Telegram is the primary human-facing entrypoint for Fabrica:
269
+ - DM with the bot for new-project intake and short clarifications
270
+ - one Telegram forum group where Fabrica creates one topic per project
271
+
272
+ Recommended minimum Telegram configuration:
227
273
 
228
274
  ```json
229
275
  {
@@ -243,8 +289,7 @@ Telegram enables DM-based project bootstrap, per-project forum topics, and a sep
243
289
  "telegram": {
244
290
  "bootstrapDmEnabled": true,
245
291
  "projectsForumChatId": "<YOUR_PROJECTS_FORUM_CHAT_ID>",
246
- "projectsForumAccountId": "<OPTIONAL_TELEGRAM_ACCOUNT_ID>",
247
- "opsChatId": "<YOUR_OPS_CHAT_ID>"
292
+ "projectsForumAccountId": "<OPTIONAL_TELEGRAM_ACCOUNT_ID>"
248
293
  }
249
294
  }
250
295
  }
@@ -253,7 +298,15 @@ Telegram enables DM-based project bootstrap, per-project forum topics, and a sep
253
298
  }
254
299
  ```
255
300
 
256
- With Telegram enabled, send a project idea to the bot in a DM. Fabrica will ask clarifying questions, provision the GitHub repo, create a dedicated forum topic for the project, and keep ops-only notifications on the separate `opsChatId` route.
301
+ `projectsForumChatId` is the key Fabrica-specific Telegram setting for the official DM topic flow.
302
+
303
+ When both `bootstrapDmEnabled=true` and `projectsForumChatId` are present,
304
+ `openclaw fabrica setup` automatically prepares the internal `genesis` agent used
305
+ for the DM intake path.
306
+
307
+ `opsChatId` still exists in plugin config for deployments that want a separate ops-only route, but it is not required for the core product flow.
308
+
309
+ With Telegram enabled, send a project idea to the bot in a DM. Fabrica will ask clarifying questions, provision the GitHub repo, create a dedicated forum topic for the project, and continue the project lifecycle in that topic.
257
310
 
258
311
  Project topics are event-driven timelines. Fabrica emits explicit messages for
259
312
  worker start, worker completion, review queueing, reviewer reject/approve, and