← 活動記録一覧

FACTUAL ACTIVITY RECORD · 実際の作業をもとにした活動記録

ConnectorとRunnerのlocal service lifecycleを実装する

固定LaunchAgentをowner-onlyでinstall・起動・停止し、失敗時に復元する

対象期間:

目的

ConnectorとRunnerは、terminalでplistやlaunchctlを手動管理せず、Control Centerから状態と自動起動を安全に操作できる必要があった。任意commandやpathを受け付けず、現在のMac userの固定serviceだけを扱う境界を目指した。

実装

command入口へ常駐用serveを追加し、同期runtimeとowner-only IPCを起動・停止できるようにした。日次実行入口には毎時起動可能なrun-dueを設け、この段階ではEditorial処理を行わずNO_WORKで終了する。

ControlCenterCore/local service lifecycle controllerで固定templateからowner-only plistをatomic installし、install/update/uninstall、start/stop/restart、Auto Startを管理する。未知のplist、unsafe link、owner/mode不正、固定値と異なるcommandを拒否し、update失敗時は以前のplistと起動状態へrollbackする。

Services画面は2つのcomponentを別cardで表示し、状態に応じた操作とnative confirmationを出す。Swift IPCは実時間timeout付きPOSIX Unix socketへ変え、応答待ちが無期限にならないようにした。

Control CenterからConnectorとRunnerを管理するlocal service lifecycle

図を描画しています…

確認したこと

確認結果

TypeScript 43件、Swift 15件、repository全体の検証が成功した。

実LaunchAgent smokeでRunnerのinstall、manual run、NO_WORK、uninstallと、Connectorのinstall、manual start、IPC status、stop、uninstallを確認した。InstallだけではstartもAuto Startも有効にならなかった。

Test後に管理対象plist、LaunchAgent、一時dataが残っていないことを確認した。Services画面のhuman操作とConnector起動後の同期候補表示は未確認だった。

完了とした根拠

固定対象だけを安全に管理するlifecycleとrollbackを実装し、実LaunchAgentで往復操作とcleanupまで確認したことを完了条件とした。