trantor 0.18.37 → 0.18.38
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/.claude-plugin/plugin.json +1 -1
- package/bin/crew.sh +20 -3
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "trantor",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.38",
|
|
4
4
|
"description": "Trantor — the hub-world for AI agent crews: live message bus, presence, project Kanban/flow board + crew orchestration for independent AI coding agents (Claude, Codex, Gemini, Kimi, DeepSeek)",
|
|
5
5
|
"mcpServers": {
|
|
6
6
|
"relay": {
|
package/bin/crew.sh
CHANGED
|
@@ -200,12 +200,22 @@ _herdr_ws_create() { # $1=cwd $2=label → "workspace_id<TAB>root_pane_id"
|
|
|
200
200
|
let d="";process.stdin.on("data",c=>d+=c).on("end",()=>{try{const r=(JSON.parse(d.slice(d.search(/[\[{]/))).result)||{};
|
|
201
201
|
process.stdout.write((((r.workspace||{}).workspace_id)||"")+"\t"+(((r.root_pane||{}).pane_id)||""))}catch(e){}})'
|
|
202
202
|
}
|
|
203
|
-
_herdr_split() { # $1=pane id ("" = UI-focused pane) $2=right|down → new pane id
|
|
204
|
-
local a=(pane split); [ -n "$1" ] && a+=("$1"); a+=(--direction "$2" --no-focus)
|
|
203
|
+
_herdr_split() { # $1=pane id ("" = UI-focused pane) $2=right|down $3=cwd (optional) → new pane id
|
|
204
|
+
local a=(pane split); [ -n "$1" ] && a+=("$1"); a+=(--direction "$2" --no-focus); [ -n "$3" ] && a+=(--cwd "$3")
|
|
205
205
|
_herdr "${a[@]}" 2>/dev/null | node -e '
|
|
206
206
|
let d="";process.stdin.on("data",c=>d+=c).on("end",()=>{try{const r=(JSON.parse(d.slice(d.search(/[\[{]/))).result)||{};
|
|
207
207
|
process.stdout.write(((r.pane||{}).pane_id)||"")}catch(e){}})'
|
|
208
208
|
}
|
|
209
|
+
# Any live pane INSIDE a workspace (the one whose cwd is $2 first). The orchestrator pane must be
|
|
210
|
+
# hosted off a pane of ITS OWN workspace: splitting the UI-focused pane put crebral-com's
|
|
211
|
+
# orchestrator in the trantor window, in a trantor shell, twice on 2026-09-03 (the operator was
|
|
212
|
+
# looking at trantor when Wake ran) — twin bus identity, wrong checkout, crossed wires.
|
|
213
|
+
_herdr_ws_pane() { # $1=workspace id $2=preferred cwd → pane id ("" if none)
|
|
214
|
+
_herdr pane list 2>/dev/null | WS="$1" CWD="$2" node -e '
|
|
215
|
+
let d="";process.stdin.on("data",c=>d+=c).on("end",()=>{try{const o=JSON.parse(d.slice(d.search(/[\[{]/)));
|
|
216
|
+
const a=(Array.isArray(o)?o:(o.panes||((o.result||{}).panes)||[])).filter(p=>(p.workspace_id||p.workspace||"")===process.env.WS);
|
|
217
|
+
const m=a.find(p=>(p.cwd||"")===process.env.CWD)||a[0];process.stdout.write(m?(m.pane_id||m.id||""):"")}catch(e){}})'
|
|
218
|
+
}
|
|
209
219
|
_herdr_ws_live() { # workspace list → "ids<TABnewline>names" (names \x01-wrapped+joined, like cmux)
|
|
210
220
|
_herdr workspace list 2>/dev/null | node -e '
|
|
211
221
|
let d="";process.stdin.on("data",c=>d+=c).on("end",()=>{try{const o=JSON.parse(d.slice(d.search(/[\[{]/)));
|
|
@@ -731,12 +741,19 @@ open_orchestrator() {
|
|
|
731
741
|
# Host the pane: a JUST-created workspace's root pane IS the orchestrator pane (claude rides it);
|
|
732
742
|
# an existing workspace gets a split — the crew's seats tile off it on the next `up`, never
|
|
733
743
|
# replacing it (spawn_herdr's REUSE mode splits seats off their own old pane / the previous one).
|
|
744
|
+
# An EXISTING workspace hosts the split off one of ITS panes, in the project's checkout — never off
|
|
745
|
+
# the UI-focused pane, which is whatever the operator happens to be looking at (2026-09-03).
|
|
734
746
|
if [ "$DRY" = "1" ]; then
|
|
735
747
|
orch="%DRYORCH"
|
|
748
|
+
[ "$fresh" = "1" ] || echo "[dry] herdr: pane split %DRYHOST($wsid) --direction right --cwd $DIR" >&2
|
|
736
749
|
echo "[dry] herdr: ${fresh:+root pane + }pane rename $orch 'orchestrator · $PROJ' + run '$(_orch_cmd "$DIR" "$sid")'" >&2
|
|
737
750
|
else
|
|
738
751
|
if [ "$fresh" = "1" ]; then orch="${pair##*$'\t'}"
|
|
739
|
-
else
|
|
752
|
+
else
|
|
753
|
+
local host; host="$(_herdr_ws_pane "$wsid" "$DIR")"
|
|
754
|
+
[ -n "$host" ] || { echo "trantor open: workspace $wsid has no live pane to host the orchestrator" >&2; exit 1; }
|
|
755
|
+
orch="$(_herdr_split "$host" right "$DIR")"
|
|
756
|
+
fi
|
|
740
757
|
[ -n "$orch" ] || { echo "trantor open: could not create the orchestrator pane" >&2; exit 1; }
|
|
741
758
|
_herdr pane rename "$orch" "orchestrator · $PROJ" >/dev/null 2>&1
|
|
742
759
|
_herdr pane run "$orch" "$(_orch_cmd "$DIR" "$sid")" >/dev/null 2>&1
|