Files
hakorune/tools/archive/codex-async-notify-improved.sh
Tomoaki 7d88c04c0e wip(phase15): AOT修正作業中 - Nyプラグインと標準ライブラリ実装
Phase 15のAOT/ネイティブビルド修正作業を継続中。
ChatGPTによるstd実装とプラグインシステムの改修を含む。

主な変更点:
- apps/std/: string.nyashとarray.nyashの標準ライブラリ追加
- apps/smokes/: stdライブラリのスモークテスト追加
- プラグインローダーv2の実装改修
- BoxCallのハンドル管理改善
- JIT hostcall registryの更新
- ビルドスクリプト(build_aot.sh, build_llvm.sh)の調整

まだ修正作業中のため、一部の機能は不完全な状態。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-06 06:24:08 +09:00

129 lines
4.4 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# codex-async-notify-improved.sh - tmux send-keys の信頼性向上版
# 使い方を表示
if [ $# -eq 0 ]; then
echo "Usage: $0 <task description> [tmux_session]"
echo "Examples:"
echo " $0 'Refactor MIR builder to 13 instructions'"
echo " $0 'Write paper introduction' gemini-session"
echo " $0 'Review code quality' chatgpt"
echo ""
echo "Default tmux session: codex (override with CODEX_DEFAULT_SESSION env or 2nd arg)"
exit 1
fi
# 引数解析
TASK="$1"
# デフォルトは env `CODEX_DEFAULT_SESSION`、なければ "codex"
TARGET_SESSION="${2:-${CODEX_DEFAULT_SESSION:-codex}}"
# 設定
WORK_DIR="$HOME/.codex-async-work"
LOG_DIR="$WORK_DIR/logs"
WORK_ID=$(date +%s%N)
LOG_FILE="$LOG_DIR/codex-${WORK_ID}.log"
# 作業ディレクトリ準備
mkdir -p "$LOG_DIR"
# tmux send-keys with delay
send_keys_safe() {
local session="$1"
local text="$2"
# Send text without Enter first
tmux send-keys -t "$session" "$text"
# Small delay before Enter
sleep 0.05
# Send Enter
tmux send-keys -t "$session" Enter
# Small delay after Enter
sleep 0.05
}
# 非同期実行関数
run_codex_async() {
{
# Detach: silence this background subshell's stdout/stderr while still tee-ing to log
if [ "${CODEX_ASYNC_DETACH:-0}" = "1" ]; then
exec >/dev/null 2>&1
fi
echo "=====================================" | tee "$LOG_FILE"
echo "🚀 Codex Task Started" | tee -a "$LOG_FILE"
echo "Work ID: $WORK_ID" | tee -a "$LOG_FILE"
echo "Task: $TASK" | tee -a "$LOG_FILE"
echo "Start: $(date)" | tee -a "$LOG_FILE"
echo "=====================================" | tee -a "$LOG_FILE"
echo "" | tee -a "$LOG_FILE"
# Codex実行
START_TIME=$(date +%s)
codex exec "$TASK" 2>&1 | tee -a "$LOG_FILE"
EXIT_CODE=${PIPESTATUS[0]}
END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))
echo "" | tee -a "$LOG_FILE"
echo "=====================================" | tee -a "$LOG_FILE"
echo "✅ Codex Task Completed" | tee -a "$LOG_FILE"
echo "Exit Code: $EXIT_CODE" | tee -a "$LOG_FILE"
echo "Duration: ${DURATION}s" | tee -a "$LOG_FILE"
echo "End: $(date)" | tee -a "$LOG_FILE"
echo "=====================================" | tee -a "$LOG_FILE"
# 最後の15行を取得もう少し多めに
LAST_OUTPUT=$(tail -15 "$LOG_FILE" | head -10)
# ターゲットセッションに通知
if tmux has-session -t "$TARGET_SESSION" 2>/dev/null; then
# 通知メッセージを送信
send_keys_safe "$TARGET_SESSION" ""
send_keys_safe "$TARGET_SESSION" "# 🤖 Codex作業完了通知 [$(date +%H:%M:%S)]"
send_keys_safe "$TARGET_SESSION" "# Work ID: $WORK_ID"
send_keys_safe "$TARGET_SESSION" "# Task: $TASK"
send_keys_safe "$TARGET_SESSION" "# Status: $([ $EXIT_CODE -eq 0 ] && echo '✅ Success' || echo '❌ Failed')"
send_keys_safe "$TARGET_SESSION" "# Duration: ${DURATION}"
send_keys_safe "$TARGET_SESSION" "# Log: $LOG_FILE"
send_keys_safe "$TARGET_SESSION" "# === 最後の出力 ==="
# 最後の出力を送信
echo "$LAST_OUTPUT" | while IFS= read -r line; do
# 空行をスキップ
[ -z "$line" ] && continue
send_keys_safe "$TARGET_SESSION" "# > $line"
done
send_keys_safe "$TARGET_SESSION" "# =================="
send_keys_safe "$TARGET_SESSION" ""
else
echo "⚠️ Target tmux session '$TARGET_SESSION' not found"
echo " Notification was not sent, but work completed."
echo " Available sessions:"
tmux list-sessions 2>/dev/null || echo " No tmux sessions running"
fi
} &
}
# バックグラウンドで実行
run_codex_async
ASYNC_PID=$!
# 実行開始メッセージ
echo ""
echo "✅ Codex started asynchronously!"
echo " PID: $ASYNC_PID"
echo " Work ID: $WORK_ID"
echo " Log file: $LOG_FILE"
echo ""
echo "📝 Monitor progress:"
echo " tail -f $LOG_FILE"
echo ""
echo "🔍 Check status:"
echo " ps -p $ASYNC_PID"
echo ""
echo "Codex is now working in the background..."