@mestreyoda/fabrica 0.2.41 → 0.2.43
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 +23 -0
- package/dist/index.js +22 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -148,6 +148,8 @@ At minimum, when DM bootstrap is enabled, set:
|
|
|
148
148
|
|
|
149
149
|
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.
|
|
150
150
|
|
|
151
|
+
Tip: if you export `FABRICA_PROJECTS_CHANNEL_ID` before running `openclaw fabrica setup`, Fabrica now copies that value into `plugins.entries.fabrica.config.telegram.projectsForumChatId` automatically during setup.
|
|
152
|
+
|
|
151
153
|
**6. Validate operational readiness**:
|
|
152
154
|
|
|
153
155
|
```bash
|
|
@@ -203,6 +205,27 @@ tail -f ~/.openclaw/workspace/logs/genesis.log
|
|
|
203
205
|
openclaw fabrica metrics
|
|
204
206
|
```
|
|
205
207
|
|
|
208
|
+
This command now includes convergence-oriented telemetry such as:
|
|
209
|
+
- cause counts (for example `qa_missing_required_gates`, `qa_sanitization_failed`)
|
|
210
|
+
- human escalations
|
|
211
|
+
- average dispatch → first PR timing
|
|
212
|
+
- per-stack breakdowns
|
|
213
|
+
|
|
214
|
+
**11. Inspect a live issue/run**:
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
openclaw fabrica doctor issue --project <slug> --issue <id>
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
Use this when a project is looping or stuck. It shows:
|
|
221
|
+
- current PR / artifact state
|
|
222
|
+
- progress state
|
|
223
|
+
- convergence cause + QA subcause
|
|
224
|
+
- missing QA gates, when applicable
|
|
225
|
+
- recommended next action
|
|
226
|
+
|
|
227
|
+
For deferred, non-blocking ideas after this milestone, see `FUTURE_IMPROVEMENTS.md`.
|
|
228
|
+
|
|
206
229
|
## Configuration
|
|
207
230
|
|
|
208
231
|
### Minimal (gh CLI only)
|
package/dist/index.js
CHANGED
|
@@ -113905,8 +113905,8 @@ import fsSync from "node:fs";
|
|
|
113905
113905
|
import path5 from "node:path";
|
|
113906
113906
|
import { fileURLToPath as fileURLToPath3 } from "node:url";
|
|
113907
113907
|
function getCurrentVersion() {
|
|
113908
|
-
if ("0.2.
|
|
113909
|
-
return "0.2.
|
|
113908
|
+
if ("0.2.43") {
|
|
113909
|
+
return "0.2.43";
|
|
113910
113910
|
}
|
|
113911
113911
|
try {
|
|
113912
113912
|
const pkgPath = path5.join(THIS_DIR, "..", "..", "package.json");
|
|
@@ -147275,6 +147275,7 @@ async function writePluginConfig(runtime, agentId, projectExecution) {
|
|
|
147275
147275
|
ensurePluginAllowed(config2);
|
|
147276
147276
|
ensureInternalHooks(config2);
|
|
147277
147277
|
ensureHeartbeatDefaults(config2);
|
|
147278
|
+
ensureTelegramDefaults(config2);
|
|
147278
147279
|
configureSubagentCleanup(config2);
|
|
147279
147280
|
ensureTelegramLinkPreviewDisabled(config2);
|
|
147280
147281
|
if (agentId) {
|
|
@@ -147326,6 +147327,23 @@ function ensureHeartbeatDefaults(config2) {
|
|
|
147326
147327
|
fabrica.work_heartbeat = { ...HEARTBEAT_DEFAULTS };
|
|
147327
147328
|
}
|
|
147328
147329
|
}
|
|
147330
|
+
function ensureTelegramDefaults(config2) {
|
|
147331
|
+
const fabrica = config2.plugins.entries.fabrica.config;
|
|
147332
|
+
if (!fabrica.telegram) fabrica.telegram = {};
|
|
147333
|
+
const telegram = fabrica.telegram;
|
|
147334
|
+
if (telegram.bootstrapDmEnabled === void 0) {
|
|
147335
|
+
telegram.bootstrapDmEnabled = true;
|
|
147336
|
+
}
|
|
147337
|
+
if (telegram.projectsForumChatId === void 0 && process.env.FABRICA_PROJECTS_CHANNEL_ID) {
|
|
147338
|
+
telegram.projectsForumChatId = process.env.FABRICA_PROJECTS_CHANNEL_ID;
|
|
147339
|
+
}
|
|
147340
|
+
if (telegram.projectsForumAccountId === void 0 && process.env.FABRICA_PROJECTS_CHANNEL_ACCOUNT_ID) {
|
|
147341
|
+
telegram.projectsForumAccountId = process.env.FABRICA_PROJECTS_CHANNEL_ACCOUNT_ID;
|
|
147342
|
+
}
|
|
147343
|
+
if (telegram.opsChatId === void 0 && process.env.TELEGRAM_CHAT_ID) {
|
|
147344
|
+
telegram.opsChatId = process.env.TELEGRAM_CHAT_ID;
|
|
147345
|
+
}
|
|
147346
|
+
}
|
|
147329
147347
|
function ensureTelegramLinkPreviewDisabled(config2) {
|
|
147330
147348
|
const channels = config2.channels;
|
|
147331
147349
|
if (!channels) return;
|
|
@@ -150062,7 +150080,8 @@ function registerCli(program, ctx) {
|
|
|
150062
150080
|
} else {
|
|
150063
150081
|
console.log(" 1. Run `openclaw fabrica doctor workspace --workspace <path>` to confirm workspace readiness");
|
|
150064
150082
|
console.log(" 2. If you want the official Telegram DM \u2192 topic flow, set plugins.entries.fabrica.config.telegram.projectsForumChatId");
|
|
150065
|
-
console.log(" 3.
|
|
150083
|
+
console.log(" 3. You can also export FABRICA_PROJECTS_CHANNEL_ID before running setup to prefill that value automatically");
|
|
150084
|
+
console.log(" 4. Re-run `openclaw fabrica setup` after the Telegram forum config is in place");
|
|
150066
150085
|
}
|
|
150067
150086
|
});
|
|
150068
150087
|
const doctor = fabrica.command("doctor").description("Diagnose workspace integrity and optionally auto-fix issues");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mestreyoda/fabrica",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.43",
|
|
4
4
|
"description": "Autonomous software engineering pipeline for OpenClaw. Turns ideas into deployed code via intake, dispatch, review, test, and merge.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|