thronglets 0.7.3 → 0.7.4
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 +12 -2
- package/bin/thronglets.js +0 -61
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,14 +12,24 @@ thronglets version --json
|
|
|
12
12
|
thronglets start
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
That is the whole
|
|
15
|
+
That is the whole normal first-device path.
|
|
16
|
+
|
|
17
|
+
For day-to-day use, the user path stays:
|
|
18
|
+
- first device: `thronglets start`
|
|
19
|
+
- primary device shares: `thronglets share`
|
|
20
|
+
- second device joins: `thronglets join`
|
|
21
|
+
- status page: `thronglets status`
|
|
16
22
|
|
|
17
23
|
`thronglets start` now:
|
|
18
24
|
- configures known local adapters for Claude Code, Codex, and OpenClaw
|
|
19
25
|
- runs the same bootstrap health pass used by the machine-facing flow
|
|
20
26
|
- reports `restart required` and `next steps` directly
|
|
21
27
|
|
|
22
|
-
|
|
28
|
+
The installed `thronglets` command now always runs the installed release binary. If you are developing Thronglets itself, use the explicit source path instead:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
cargo run --quiet -- start
|
|
32
|
+
```
|
|
23
33
|
|
|
24
34
|
## What The Agent Gets
|
|
25
35
|
|
package/bin/thronglets.js
CHANGED
|
@@ -18,68 +18,7 @@ if (!binPath) {
|
|
|
18
18
|
process.exit(1);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
function looksLikeRepoRoot(dir) {
|
|
22
|
-
const cargoToml = path.join(dir, "Cargo.toml");
|
|
23
|
-
const mainRs = path.join(dir, "src", "main.rs");
|
|
24
|
-
if (!fs.existsSync(cargoToml) || !fs.existsSync(mainRs)) {
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
try {
|
|
28
|
-
return fs.readFileSync(cargoToml, "utf8").includes('name = "thronglets"');
|
|
29
|
-
} catch {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function findRepoRoot() {
|
|
35
|
-
const envRoot = process.env.THRONGLETS_REPO_ROOT;
|
|
36
|
-
if (envRoot && looksLikeRepoRoot(envRoot)) {
|
|
37
|
-
return envRoot;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
let current = process.cwd();
|
|
41
|
-
while (true) {
|
|
42
|
-
if (looksLikeRepoRoot(current)) {
|
|
43
|
-
return current;
|
|
44
|
-
}
|
|
45
|
-
const parent = path.dirname(current);
|
|
46
|
-
if (parent === current) {
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
current = parent;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
function tryRepoLocal(repoRoot) {
|
|
54
|
-
const cargo = process.platform === "win32" ? "cargo.exe" : "cargo";
|
|
55
|
-
const builtBinary =
|
|
56
|
-
process.platform === "win32"
|
|
57
|
-
? path.join(repoRoot, "target", "debug", "thronglets.exe")
|
|
58
|
-
: path.join(repoRoot, "target", "debug", "thronglets");
|
|
59
|
-
|
|
60
|
-
try {
|
|
61
|
-
execFileSync(cargo, ["run", "--quiet", "--manifest-path", path.join(repoRoot, "Cargo.toml"), "--", ...process.argv.slice(2)], {
|
|
62
|
-
stdio: "inherit",
|
|
63
|
-
});
|
|
64
|
-
return true;
|
|
65
|
-
} catch (err) {
|
|
66
|
-
if (err.code === "ENOENT" && fs.existsSync(builtBinary)) {
|
|
67
|
-
execFileSync(builtBinary, process.argv.slice(2), { stdio: "inherit" });
|
|
68
|
-
return true;
|
|
69
|
-
}
|
|
70
|
-
if (typeof err.status === "number") {
|
|
71
|
-
process.exit(err.status || 1);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return false;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
21
|
try {
|
|
79
|
-
const repoRoot = findRepoRoot();
|
|
80
|
-
if (repoRoot && tryRepoLocal(repoRoot)) {
|
|
81
|
-
process.exit(0);
|
|
82
|
-
}
|
|
83
22
|
execFileSync(binPath, process.argv.slice(2), { stdio: "inherit" });
|
|
84
23
|
} catch (err) {
|
|
85
24
|
process.exit(err.status || 1);
|