@dalmasonto/taskflow-mcp 1.0.26 → 1.0.27
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/dist/agent-registry.js +15 -6
- package/package.json +1 -1
package/dist/agent-registry.js
CHANGED
|
@@ -26,17 +26,26 @@ function detectTmuxPane(pid) {
|
|
|
26
26
|
catch { /* tmux not available */ }
|
|
27
27
|
return null;
|
|
28
28
|
}
|
|
29
|
-
/** Generate a unique agent name from the project folder, auto-suffixing on collision
|
|
29
|
+
/** Generate a unique agent name from the project folder, auto-suffixing on collision.
|
|
30
|
+
* Cleans up dead entries it encounters so the name is available for INSERT. */
|
|
30
31
|
function generateName(folderName) {
|
|
31
32
|
const db = getDb();
|
|
32
|
-
const
|
|
33
|
-
|
|
33
|
+
const check = (name) => {
|
|
34
|
+
const row = db.prepare('SELECT * FROM agent_registry WHERE name = ?').get(name);
|
|
35
|
+
if (!row)
|
|
36
|
+
return true; // name is free
|
|
37
|
+
if (!isAlive(row.pid)) {
|
|
38
|
+
// Dead entry — remove it so the name can be reused via INSERT
|
|
39
|
+
db.prepare('DELETE FROM agent_registry WHERE id = ?').run(row.id);
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
return false; // name is taken by a live agent
|
|
43
|
+
};
|
|
44
|
+
if (check(folderName))
|
|
34
45
|
return folderName;
|
|
35
|
-
}
|
|
36
46
|
for (let i = 2; i < 100; i++) {
|
|
37
47
|
const candidate = `${folderName}:${i}`;
|
|
38
|
-
|
|
39
|
-
if (!row || !isAlive(row.pid))
|
|
48
|
+
if (check(candidate))
|
|
40
49
|
return candidate;
|
|
41
50
|
}
|
|
42
51
|
return `${folderName}:${Date.now()}`;
|