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 CHANGED
@@ -12,14 +12,24 @@ thronglets version --json
12
12
  thronglets start
13
13
  ```
14
14
 
15
- That is the whole local bootstrap path.
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
- If you invoke `thronglets` from inside a local Thronglets repo checkout, the wrapper now prefers the repo-local source path before it falls back to the installed release binary. That keeps local AI sessions from accidentally using a stale global binary while they work inside the repo.
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);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thronglets",
3
- "version": "0.7.3",
3
+ "version": "0.7.4",
4
4
  "description": "Local AI substrate for agents — pheromone field, Hebbian co-excitation, overlay effect signals",
5
5
  "keywords": [
6
6
  "ai-agents",