@chrysb/alphaclaw 0.9.27 → 0.9.28
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 +11 -4
- package/bin/alphaclaw.js +59 -0
- package/lib/public/dist/app.bundle.js +641 -632
- package/lib/public/js/components/doctor/findings-list.js +18 -1
- package/lib/public/js/components/doctor/fix-card-modal.js +8 -17
- package/lib/public/js/components/doctor/helpers.js +7 -1
- package/lib/public/js/components/doctor/index.js +1 -1
- package/lib/public/js/lib/api.js +2 -2
- package/lib/server/db/doctor/index.js +94 -5
- package/lib/server/db/doctor/schema.js +4 -0
- package/lib/server/doctor/constants.js +1 -0
- package/lib/server/doctor/fix-completion.js +6 -0
- package/lib/server/doctor/service.js +93 -14
- package/lib/server/routes/doctor.js +5 -2
- package/lib/server.js +5 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -18,11 +18,13 @@
|
|
|
18
18
|
<p align="center"><em>First deploy to first message in under five minutes.</em></p>
|
|
19
19
|
|
|
20
20
|
<p align="center">
|
|
21
|
+
<a href="https://render.com/templates/alphaclaw"><img height="40" src="https://render.com/images/deploy-to-render-button.svg" alt="Deploy to Render" /></a>
|
|
21
22
|
<a href="https://railway.com/deploy/openclaw-fast-start?referralCode=jcFhp_&utm_medium=integration&utm_source=template&utm_campaign=generic"><img height="40" src="https://railway.com/button.svg" alt="Deploy on Railway" /></a>
|
|
22
|
-
<a href="https://render.com/deploy?repo=https://github.com/chrysb/openclaw-render-template"><img height="40" src="https://render.com/images/deploy-to-render-button.svg" alt="Deploy to Render" /></a>
|
|
23
23
|
<a href="https://updates.alphaclaw.md/desktop/prod/alphaclaw-mac-latest.dmg"><img height="40" src="https://img.shields.io/badge/Download%20for%20macOS-000000?style=for-the-badge&logo=apple&logoColor=white" alt="Download for macOS" /></a>
|
|
24
24
|
</p>
|
|
25
25
|
|
|
26
|
+
<p align="center"><strong>Render sponsors AlphaClaw.</strong> Redeem $50 in Render credits with code <code>RENDER-ALPHACLAW</code>.</p>
|
|
27
|
+
|
|
26
28
|
> **Platform:** AlphaClaw currently targets Docker/Linux deployments. macOS local development is not yet supported.
|
|
27
29
|
|
|
28
30
|
## Features
|
|
@@ -45,7 +47,7 @@
|
|
|
45
47
|
|
|
46
48
|
## Why AlphaClaw
|
|
47
49
|
|
|
48
|
-
- **Zero to production in one deploy:** Railway
|
|
50
|
+
- **Zero to production in one deploy:** Render/Railway templates ship a complete stack — no manual gateway setup.
|
|
49
51
|
- **Self-healing:** Watchdog detects crashes, enters repair mode, relaunches the gateway, and notifies you.
|
|
50
52
|
- **Everything in the browser:** No SSH, no config files to hand-edit, no CLI required after first deploy.
|
|
51
53
|
- **Stays out of the way:** AlphaClaw manages infrastructure; OpenClaw handles the AI.
|
|
@@ -56,10 +58,15 @@ AlphaClaw simply wraps OpenClaw, it's not a dependency. Remove AlphaClaw and you
|
|
|
56
58
|
|
|
57
59
|
## Quick Start
|
|
58
60
|
|
|
59
|
-
### Deploy (recommended)
|
|
61
|
+
### Deploy on Render (recommended)
|
|
62
|
+
|
|
63
|
+
[](https://render.com/templates/alphaclaw)
|
|
64
|
+
|
|
65
|
+
Render sponsors AlphaClaw. Use code **`RENDER-ALPHACLAW`** to redeem **$50 in Render credits**. The deployment is maintained in Render's [official AlphaClaw template repository](https://github.com/render-examples/openclaw-render-template).
|
|
66
|
+
|
|
67
|
+
### Other deployment options
|
|
60
68
|
|
|
61
69
|
[](https://railway.com/deploy/openclaw-fast-start?referralCode=jcFhp_&utm_medium=integration&utm_source=template&utm_campaign=generic)
|
|
62
|
-
[](https://render.com/deploy?repo=https://github.com/chrysb/openclaw-render-template)
|
|
63
70
|
|
|
64
71
|
Set `SETUP_PASSWORD` at deploy time and visit your deployment URL. The welcome wizard handles the rest.
|
|
65
72
|
|
package/bin/alphaclaw.js
CHANGED
|
@@ -99,6 +99,7 @@ Usage: alphaclaw <command> [options]
|
|
|
99
99
|
Commands:
|
|
100
100
|
start Start the AlphaClaw server (Setup UI + gateway manager)
|
|
101
101
|
git-sync Commit and push /data/.openclaw safely using GITHUB_TOKEN
|
|
102
|
+
doctor finding complete Mark a queued Doctor finding fixed after verification
|
|
102
103
|
telegram topic add Add/update Telegram topic mapping by thread ID
|
|
103
104
|
version Print version
|
|
104
105
|
|
|
@@ -121,6 +122,11 @@ telegram topic add options:
|
|
|
121
122
|
--agent <id> Optional agent ID for per-topic routing
|
|
122
123
|
--group <id> Optional group ID override (auto-resolves when one group exists)
|
|
123
124
|
|
|
125
|
+
doctor finding complete options:
|
|
126
|
+
--id <id> Doctor finding ID
|
|
127
|
+
--run <run-id> Queued fix run ID
|
|
128
|
+
--token <token> One-time completion token
|
|
129
|
+
|
|
124
130
|
Examples:
|
|
125
131
|
alphaclaw git-sync --message "sync workspace"
|
|
126
132
|
alphaclaw git-sync --message "update config" --file "workspace/app/config.json"
|
|
@@ -394,6 +400,59 @@ if (command === "git-sync") {
|
|
|
394
400
|
process.exit(runGitSync());
|
|
395
401
|
}
|
|
396
402
|
|
|
403
|
+
const runDoctorFindingComplete = () => {
|
|
404
|
+
const cardId = Number.parseInt(
|
|
405
|
+
String(flagValue(commandArgs, "--id") || ""),
|
|
406
|
+
10,
|
|
407
|
+
);
|
|
408
|
+
const runId = String(flagValue(commandArgs, "--run") || "").trim();
|
|
409
|
+
const token = String(flagValue(commandArgs, "--token") || "").trim();
|
|
410
|
+
if (!Number.isInteger(cardId) || cardId <= 0 || !runId || !token) {
|
|
411
|
+
console.error(
|
|
412
|
+
"[alphaclaw] doctor finding complete requires --id, --run, and --token",
|
|
413
|
+
);
|
|
414
|
+
return 1;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
const {
|
|
418
|
+
closeDoctorDb,
|
|
419
|
+
completeDoctorCardFix,
|
|
420
|
+
initDoctorDb,
|
|
421
|
+
} = require("../lib/server/db/doctor");
|
|
422
|
+
const {
|
|
423
|
+
hashDoctorFixToken,
|
|
424
|
+
} = require("../lib/server/doctor/fix-completion");
|
|
425
|
+
try {
|
|
426
|
+
initDoctorDb({ rootDir, markInterruptedRuns: false });
|
|
427
|
+
const card = completeDoctorCardFix({
|
|
428
|
+
id: cardId,
|
|
429
|
+
runId,
|
|
430
|
+
tokenHash: hashDoctorFixToken(token),
|
|
431
|
+
});
|
|
432
|
+
if (!card) {
|
|
433
|
+
console.error("[alphaclaw] Doctor fix completion was not accepted");
|
|
434
|
+
return 1;
|
|
435
|
+
}
|
|
436
|
+
console.log(`[alphaclaw] Doctor finding ${cardId} marked fixed`);
|
|
437
|
+
return 0;
|
|
438
|
+
} catch (error) {
|
|
439
|
+
console.error(
|
|
440
|
+
`[alphaclaw] Doctor fix completion failed: ${error.message || "Unknown error"}`,
|
|
441
|
+
);
|
|
442
|
+
return 1;
|
|
443
|
+
} finally {
|
|
444
|
+
closeDoctorDb();
|
|
445
|
+
}
|
|
446
|
+
};
|
|
447
|
+
|
|
448
|
+
if (
|
|
449
|
+
command === "doctor" &&
|
|
450
|
+
commandScope === "finding" &&
|
|
451
|
+
commandAction === "complete"
|
|
452
|
+
) {
|
|
453
|
+
process.exit(runDoctorFindingComplete());
|
|
454
|
+
}
|
|
455
|
+
|
|
397
456
|
const runTelegramTopicAdd = () => {
|
|
398
457
|
const topicName = String(flagValue(commandArgs, "--name") || "").trim();
|
|
399
458
|
const threadId = String(flagValue(commandArgs, "--thread") || "").trim();
|