orchestrix 16.1.4 → 16.1.6

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.
@@ -45,11 +45,23 @@ if [ -z "$REPO_ID" ]; then
45
45
  fi
46
46
 
47
47
  # Generate dynamic session name and log file
48
- # If ORCHESTRIX_SESSION is pre-set (e.g., by Yuri remote orchestration), use it.
49
- # Otherwise, default to orchestrix-{REPO_ID}.
48
+ # Priority:
49
+ # 1. $ORCHESTRIX_SESSION env var (explicit override by Yuri)
50
+ # 2. .youlidao/blueprint.json → op-{blueprintName} (Blueprint mode)
51
+ # 3. orchestrix-{REPO_ID} (standalone fallback)
50
52
  if [ -n "$ORCHESTRIX_SESSION" ]; then
51
53
  SESSION_NAME="$ORCHESTRIX_SESSION"
52
54
  echo "🏷️ Using pre-set session name: $SESSION_NAME"
55
+ elif [ -f "$WORK_DIR/.youlidao/blueprint.json" ]; then
56
+ # Blueprint mode: auto-derive op-{name} from blueprint metadata
57
+ BP_NAME=$(cat "$WORK_DIR/.youlidao/blueprint.json" 2>/dev/null | grep -o '"blueprintName"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/.*: *"//;s/"$//')
58
+ if [ -n "$BP_NAME" ]; then
59
+ SESSION_NAME="op-${BP_NAME}"
60
+ echo "🏷️ Blueprint detected: $BP_NAME → session: $SESSION_NAME"
61
+ else
62
+ SESSION_NAME="orchestrix-${REPO_ID}"
63
+ echo "🏷️ Blueprint file found but no name, fallback: $SESSION_NAME"
64
+ fi
53
65
  else
54
66
  SESSION_NAME="orchestrix-${REPO_ID}"
55
67
  echo "🏷️ Repository ID: $REPO_ID"
@@ -107,7 +119,7 @@ if [ -f "$SETTINGS_LOCAL" ]; then
107
119
  if command -v jq &>/dev/null; then
108
120
  EXISTING=$(cat "$SETTINGS_LOCAL")
109
121
  echo "$EXISTING" | jq --arg cmd "$HANDOFF_HOOK_CMD" \
110
- '.hooks.Stop = (.hooks.Stop // []) + [{"hooks": [{"type": "command", "command": $cmd}]}]' \
122
+ '.hooks.Stop = (.hooks.Stop // []) + [{"matcher": "", "hooks": [{"type": "command", "command": $cmd}]}]' \
111
123
  > "$SETTINGS_LOCAL.tmp" && mv "$SETTINGS_LOCAL.tmp" "$SETTINGS_LOCAL"
112
124
  echo "✅ Handoff hook injected into existing settings.local.json"
113
125
  else
@@ -116,15 +128,18 @@ if [ -f "$SETTINGS_LOCAL" ]; then
116
128
  fi
117
129
  else
118
130
  # Create new settings.local.json with handoff hook
119
- cat > "$SETTINGS_LOCAL" << SETTINGS_EOF
131
+ # IMPORTANT: Use quoted heredoc <<'EOF' to prevent $() execution and keep \" intact.
132
+ # The command string needs JSON-escaped quotes (\") around $(git rev-parse).
133
+ cat > "$SETTINGS_LOCAL" << 'SETTINGS_EOF'
120
134
  {
121
135
  "hooks": {
122
136
  "Stop": [
123
137
  {
138
+ "matcher": "",
124
139
  "hooks": [
125
140
  {
126
141
  "type": "command",
127
- "command": "$HANDOFF_HOOK_CMD"
142
+ "command": "bash -c 'cd \"$(git rev-parse --show-toplevel)\" && .orchestrix-core/scripts/handoff-detector.sh'"
128
143
  }
129
144
  ]
130
145
  }
@@ -140,6 +140,8 @@ op-{project-name} ← separate tmux session
140
140
 
141
141
  **Key principle**: Yuri **never leaves its own window**. All agent operations happen in the `op-{name}` session via tmux commands.
142
142
 
143
+ **🚫 HARD CONSTRAINT**: NEVER run `/o {agent}`, `/clear`, or any agent activation command in YOUR OWN window. These commands replace your Yuri persona with another agent — you lose your identity and cannot coordinate anymore. Agent commands go ONLY to the `op-{name}` session via `tmux send-keys`.
144
+
143
145
  ### Phase A: Remote Planning Pipeline
144
146
 
145
147
  #### Step 1: Create op-session
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orchestrix",
3
- "version": "16.1.4",
3
+ "version": "16.1.6",
4
4
  "description": "Install Orchestrix multi-agent infrastructure into any project. One command: npx orchestrix install",
5
5
  "bin": {
6
6
  "orchestrix": "bin/o8x.js"