@tyhld/conductor 0.12.25 → 0.12.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tyhld/conductor",
3
- "version": "0.12.25",
3
+ "version": "0.12.27",
4
4
  "description": "采配くん管制の見守りアプリ(conductor-agent)。各PCで常駐し、中央(devlog-tracker)へ定期的に生存報告(heartbeat)を送る常駐CLI。",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env bash
2
2
  #
3
- # conductor-run — 常駐(conductor@*.service)と耳(conductor-ear.service)の入口(★便 81a08d58)。
3
+ # conductor-run — 常駐(conductor@*.service)・耳(conductor-ear.service)・司令塔
4
+ # (conductor-build-runner.service)の入口(★便 81a08d58・司令塔は便 17da4322 で同じ入口へ)。
4
5
  #
5
6
  # 【なぜ要るか(実測 2026-09-16・開発履歴 4061dd71 の発見5)】
6
7
  # この機(開発機)の常駐と耳は、職人の【作業ツリー】の build を動かしていた。
@@ -53,7 +54,7 @@ runtime_record() {
53
54
  fi
54
55
  }
55
56
 
56
- # 役(start / ear)を記録に載せる(どのサービスが止まったかを外から分かるように)。
57
+ # 役(start / ear / build-runner)を記録に載せる(どのサービスが止まったかを外から分かるように)。
57
58
  ROLE="${1:-unknown}"
58
59
 
59
60
  if ! dist_runtime_resolve; then
@@ -80,27 +80,40 @@ if [[ ${#missing[@]} -gt 0 ]]; then
80
80
  fi
81
81
 
82
82
  # --- 4) 司令塔を動かすコマンドを決める ----------------------------------------
83
- # ★systemd ユーザーサービスはシェルの PATH を継承しないので、ここでフルパスに解決する。
84
- # ★リポジトリが在る機体ではリポジトリを正とする(耳の導入処理と同じ順番)。
83
+ # ★2026-09-19(えふさん確定・便 17da4322)に決め方を変えた。常駐・耳(便 81a08d58)と同じ入口へそろえる。
84
+ # 【旧】このスクリプトの隣に dist/cli.js が在る開発機では、そのリポジトリ(作業ツリー)を焼き込んでいた。
85
+ # =職人がブランチを切り替えて build した瞬間、試作の段取りが作りかけで動く。さらに node の置き場を
86
+ # ExecStart に焼き込むので、node の版を変えると司令塔だけ 203/EXEC を繰り返す(便 81a08d58 発見3)。
87
+ # 【新】既定は「入っている配布物」だけを動かす。ExecStart には動かない入口
88
+ # (/bin/bash %h/.tyhld/bin/conductor-run build-runner)だけを書き、配布物と node は起動のたびに探す。
89
+ # ★開発機でもお客さま機でも同じ。作業ツリーは選ばない。探し方は常駐・耳と共用(2つ作らない)。
90
+ # 【作業ツリーを試したいとき】引数で起動コマンドを明示したときだけ、それをそのまま使う(人が打った物に限る)。
91
+ # 作業ツリーを指していれば★警告を出す。ふだんの試し方は端末で直接動かすこと(残らない試し方)。
92
+ . "$SCRIPT_DIR/../scripts/dist-source.sh"
85
93
  BIN="${1:-}"
86
94
  BIN_SRC="引数で指定"
87
- if [[ -z "$BIN" ]]; then
88
- CLI_JS="$(cd "$SCRIPT_DIR/.." && pwd)/dist/cli.js"
89
- if [[ -f "$CLI_JS" ]]; then
90
- NODE_BIN="$(command -v node || true)"
91
- [[ -n "$NODE_BIN" && -L "$NODE_BIN" ]] && NODE_BIN="$(readlink -f "$NODE_BIN")"
92
- [[ -n "$NODE_BIN" ]] || NODE_BIN="/usr/bin/env node"
93
- BIN="$NODE_BIN $CLI_JS"
94
- BIN_SRC="この機体のリポジトリ(開発機)"
95
+
96
+ if [[ -n "$BIN" ]]; then
97
+ if dist_runtime_bin_is_worktree "$BIN"; then
98
+ warn "★明示された起動コマンドは作業ツリーを指しています: $BIN"
99
+ warn " 作りかけの build が司令塔として動きます。試し終わったら、引数なしでこの台本を流し直してください。"
95
100
  fi
101
+ else
102
+ # 入口の一式を写す元=公開済みの正規版(作業ツリーからは写さない・便 4061dd71 と同じ判定)。
103
+ if ! dist_source_for_setup "$(cd "$SCRIPT_DIR/.." && pwd)"; then
104
+ die "司令塔を動かす采配くんを確かめられません(${DIST_REASON})。
105
+ 人の手番: npm install -g @tyhld/conductor --@tyhld:registry=https://registry.npmjs.org"
106
+ fi
107
+ if ! dist_runtime_bundle_install "$DIST_ROOT"; then
108
+ die "司令塔の入口を置けませんでした: $DIST_RUNTIME_BIN_DIR"
109
+ fi
110
+ # 導入処理が確かめた置き場を控えに残す(systemd の中ではまずこれを見る)。
111
+ dist_runtime_hint_write "$DIST_ROOT"
112
+ # ★ユニットの正本も配り元から取る(作業ツリーの写しを配らない)。
113
+ [[ -f "$DIST_ROOT/systemd/$UNIT_NAME" ]] && UNIT_SRC="$DIST_ROOT/systemd/$UNIT_NAME"
114
+ BIN="$DIST_RUNTIME_EXEC"
115
+ BIN_SRC="入っている配布物(起動のたびに探す・版 ${DIST_VERSION:-不明})"
96
116
  fi
97
- if [[ -z "$BIN" ]] && command -v conductor >/dev/null 2>&1; then
98
- resolved="$(command -v conductor)"
99
- [[ -L "$resolved" ]] && resolved="$(readlink -f "$resolved")"
100
- BIN="$resolved"
101
- BIN_SRC="npm で入れた全体版"
102
- fi
103
- [[ -n "$BIN" ]] || die "司令塔を動かすコマンドが見つかりません(conductor も dist/cli.js も不在)。"
104
117
 
105
118
  info "司令塔が使う采配くん: ${BIN_SRC}"
106
119
  info "司令塔の起動コマンド: $BIN build-runner"
@@ -114,9 +127,23 @@ fi
114
127
  mv -f "$UNIT_DST.tmp" "$UNIT_DST" # 置換は原子的=壊れかけのユニットを残さない
115
128
  info "配置: $UNIT_DST"
116
129
 
130
+ # ★ExecStart を上書きしている drop-in を退ける(便 81a08d58 と同じ・作業ツリーを動かし続けないため)。
131
+ if retired="$(dist_runtime_retire_exec_dropins "$UNIT_DIR/$UNIT_NAME.d")"; then
132
+ if [[ -n "$retired" ]]; then
133
+ while IFS= read -r line; do
134
+ info "起動方法を上書きしていた drop-in を控えへ退けました: $line"
135
+ done <<< "$retired"
136
+ fi
137
+ else
138
+ die "起動方法を上書きしている drop-in を退けられませんでした: $UNIT_DIR/$UNIT_NAME.d"
139
+ fi
140
+
117
141
  # --- 6) 反映して起動 ----------------------------------------------------------
118
142
  systemctl --user daemon-reload || die "daemon-reload に失敗しました。"
119
143
 
144
+ # ★動いている司令塔は、再起動するまで古い起動方法のまま。ここでは再起動しない
145
+ # (動いている試作の段取りを途中で切らないため・人が頃合いを見て再起動する)。
146
+ # enable --now は、まだ動いていなければ新しい起動方法で起動し、動いていれば何もしない。
120
147
  if systemctl --user enable --now "$UNIT_NAME"; then
121
148
  info "有効化: $UNIT_NAME(このPCに1本・試作の段取りを進めます)"
122
149
  ledger_add "$UNIT_NAME"
@@ -127,6 +154,8 @@ fi
127
154
  loginctl enable-linger "$USER" >/dev/null 2>&1 || true
128
155
 
129
156
  echo
157
+ echo "★新しい起動方法は、司令塔を再起動したときから効きます:"
158
+ echo " systemctl --user restart conductor-build-runner"
130
159
  echo "ログ確認: journalctl --user -u conductor-build-runner -f"
131
160
  echo "停止: systemctl --user disable --now conductor-build-runner"
132
161
  systemctl --user --no-pager status "$UNIT_NAME" 2>/dev/null || true