@tyhld/conductor 0.11.12 → 0.11.14

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tyhld/conductor",
3
- "version": "0.11.12",
3
+ "version": "0.11.14",
4
4
  "description": "采配くん管制の見守りアプリ(conductor-agent)。各PCで常駐し、中央(devlog-tracker)へ定期的に生存報告(heartbeat)を送る常駐CLI。",
5
5
  "type": "module",
6
6
  "bin": {
@@ -840,13 +840,102 @@ else
840
840
  fi
841
841
 
842
842
  # ═════════════════════════════════════════════════════════════════════════════
843
- # ⑫ 設置(既存の setup.sh を呼ぶ)
843
+ # ⑫ 職人を呼ぶ合言葉(kc)を用意する
844
+ #
845
+ # 【なぜ要るか(実機 2026-09-08)】
846
+ # 職人を tmux で立ち上げるとき、★作業部屋(tmux セッション)の名前が現場名と違うと
847
+ # 指示の配達係(relay)がその部屋を見つけられず、指示は永遠に「待っています」のまま
848
+ # 止まる。実際 `cc2` という名前で立てて流れなかった。
849
+ # =お客さまに tmux の3行を手で打ってもらう限り、同じ事故がいつでも起きる。
850
+ # だから「kc <現場名>」の1語にまとめ、名前を間違えようがない形にする。
851
+ #
852
+ # 【この中身は手で書いたものではない】
853
+ # Fshima の ~/.bashrc に入れて、ai-saku と migakia の2現場で実際に動かして
854
+ # 確かめた現物をそのまま移す。★作り直さない・引数を増やさない。
855
+ #
856
+ # 【壊さないための決め】
857
+ # ・~/.bashrc は【追記だけ】。既存の行は1つも書き換えない。
858
+ # ・既に kc が定義されていれば何もしない(何度打っても二重にならない=冪等)。
859
+ # ・同じ名前の部屋が既にあれば【入るだけ】。動いている職人を作り直さない。
860
+ # ═════════════════════════════════════════════════════════════════════════════
861
+
862
+ step '⑫ 職人を呼ぶ合言葉(kc)を用意する'
863
+
864
+ BASHRC="$HOME/.bashrc"
865
+
866
+ # 既に kc が定義されているか(手で入れたものも含めて見る)。
867
+ # ★ここを「采配くんが書いた印」で見ると、手で入れた人の分と二重になる。定義そのものを見る。
868
+ kc_defined() {
869
+ [[ -f "$BASHRC" ]] && grep -qE '^[[:space:]]*kc\(\)[[:space:]]*\{' "$BASHRC"
870
+ }
871
+
872
+ if kc_defined; then
873
+ skip '合言葉(kc)は用意できています'
874
+ record '合言葉 kc: 済み'
875
+ elif [[ "$DRY_RUN" == "1" ]]; then
876
+ plan '職人を呼ぶ合言葉(kc)を ~/.bashrc の末尾に足します'
877
+ else
878
+ doing '職人を呼ぶ合言葉(kc)を用意します'
879
+ cat >> "$BASHRC" <<'KC_SNIPPET' || die "合言葉を書けませんでした: $HOME/.bashrc"
880
+
881
+ # ── 采配くん: 職人を呼ぶ合言葉 ────────────────────────────────────────────────
882
+ # 使い方: kc <現場名> 例) kc my-app
883
+ # その現場の作業部屋(tmux)を用意し、職人(Claude Code)を開きます。
884
+ # ★部屋の名前は必ず現場名と同じにします(違うと指示が届きません)。
885
+ kc() {
886
+ local s="$1"
887
+ if [ -n "$TMUX" ]; then echo "すでにtmuxの中です。Ctrl+b → d で一度抜けてください"; return 1; fi
888
+ if [ -z "$s" ]; then echo "使い方: kc 現場名(例 kc TYHLD-platform)"; return 1; fi
889
+ if [ ! -d "$HOME/projects/$s" ]; then echo "そんな現場はありません: $s"; ls "$HOME/projects"; return 1; fi
890
+ systemctl --user start "conductor@$s" 2>/dev/null
891
+ tmux has-session -t "$s" 2>/dev/null || tmux new -d -s "$s" -c "$HOME/projects/$s" 'unset ANTHROPIC_API_KEY; exec claude'
892
+ tmux attach -t "$s"
893
+ }
894
+ # ─────────────────────────────────────────────────────────────────────────────
895
+ KC_SNIPPET
896
+ record '合言葉 kc: 用意した'
897
+ fi
898
+
899
+ # --- ログインで開いた画面でも合言葉が使えるようにする -------------------------
900
+ # 【bash の決まり】ログインで開いた画面では ~/.bash_profile → ~/.bash_login → ~/.profile の
901
+ # 順に【最初に見つかった1つだけ】が読まれる。Ubuntu の既定の ~/.profile は ~/.bashrc を
902
+ # 読むので、~/.bash_profile が無い機体は何もしなくてよい。
903
+ # ★無い機体に ~/.bash_profile を作ってはいけない。作った瞬間 ~/.profile が読まれなくなり、
904
+ # そこにある PATH の設定(~/.local/bin など)まで消える=直しに行って壊す。
905
+ # =既に ~/.bash_profile(または ~/.bash_login)が在って、そこから ~/.bashrc を読んで
906
+ # いないときだけ、読む1行を【追記】する。既存の行は1つも書き換えない。
907
+
908
+ LOGIN_PROFILE=''
909
+ for f in "$HOME/.bash_profile" "$HOME/.bash_login"; do
910
+ if [[ -f "$f" ]]; then
911
+ LOGIN_PROFILE="$f"
912
+ break
913
+ fi
914
+ done
915
+
916
+ if [[ -z "$LOGIN_PROFILE" ]]; then
917
+ skip 'ログインで開いた画面の手当ては要りません(~/.profile から読まれます)'
918
+ elif grep -qF '.bashrc' "$LOGIN_PROFILE"; then
919
+ skip "ログインで開いた画面でも使えます(${LOGIN_PROFILE##*/})"
920
+ elif [[ "$DRY_RUN" == "1" ]]; then
921
+ plan "ログインで開いた画面でも使えるように ${LOGIN_PROFILE##*/} に1行足します"
922
+ else
923
+ doing "ログインで開いた画面でも使えるようにします(${LOGIN_PROFILE##*/})"
924
+ printf '\n%s\n%s\n' \
925
+ '# 采配くん: ログインで開いた画面でも ~/.bashrc を読む' \
926
+ '[ -f ~/.bashrc ] && . ~/.bashrc' >> "$LOGIN_PROFILE" \
927
+ || die "ログイン時の設定を書けませんでした: $LOGIN_PROFILE"
928
+ record "ログイン時の読み込み: ${LOGIN_PROFILE##*/} に足した"
929
+ fi
930
+
931
+ # ═════════════════════════════════════════════════════════════════════════════
932
+ # ⑬ 設置(既存の setup.sh を呼ぶ)
844
933
  #
845
934
  # ★ここから先は既存の設置係にそのまま任せる。番人の配置・常駐の登録・自己点検(⑦)
846
935
  # ・次にやることの案内(⑧)は、すべて setup.sh が持っている。写しを作らない。
847
936
  # ═════════════════════════════════════════════════════════════════════════════
848
937
 
849
- step '⑫ 設置する'
938
+ step '⑬ 設置する'
850
939
 
851
940
  if [[ "$DRY_RUN" == "1" ]]; then
852
941
  plan "conductor setup ${SITE} を実行します(番人の配置・常駐の登録・自己点検)"
@@ -858,10 +947,10 @@ else
858
947
  fi
859
948
 
860
949
  # ═════════════════════════════════════════════════════════════════════════════
861
- # ⑬ 締め(★自己点検の○×は、すぐ上に設置係が出しています)
950
+ # ⑭ 締め(★自己点検の○×は、すぐ上に設置係が出しています)
862
951
  # ═════════════════════════════════════════════════════════════════════════════
863
952
 
864
- step '⑬ ここまでのまとめ'
953
+ step '⑭ ここまでのまとめ'
865
954
 
866
955
  # ★空の配列を "${arr[@]}" で展開すると、古い bash では set -u に叱られる。
867
956
  # お客さまの機体の bash の版は選べないので、中身があるときだけ回す。
@@ -893,13 +982,13 @@ ${BAR}
893
982
  次にやること — 職人(Claude Code)を動かす
894
983
  ${BAR}
895
984
 
896
- 下の3行を、そのままコピーして貼ってください。
985
+ 下の2行を、そのままコピーして貼ってください。
897
986
 
898
- tmux new-session -d -s "${SITE}" -c "${PROJECT_DIR}"
899
- tmux send-keys -t "${SITE}" "unset ANTHROPIC_API_KEY && claude" C-m
900
- tmux attach -t "${SITE}"
987
+ source ~/.bashrc
988
+ kc ${SITE}
901
989
 
902
- (1行目で作業部屋を用意し、2行目で職人を呼び、3行目でその画面を開きます)
990
+ (1行目は、いま用意した合言葉をこの画面に読み込みます。
991
+ 2行目で職人が開きます。★次からは「kc ${SITE}」の1行だけで開けます)
903
992
 
904
993
  ${BAR}
905
994
  いちばん確実な「動いています」の確かめ方