Compare commits
6 Commits
fix/issue-
...
v0.2.4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
91b51f62c0 | ||
| 7234837284 | |||
|
|
59f6a4883e | ||
| 9667c3e800 | |||
|
|
796e1fe454 | ||
| 84c59a3b64 |
@@ -6,6 +6,25 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [v0.2.4] - 2026-04-06
|
||||
|
||||
### Fixed
|
||||
- Queue daemon: Locking to prevent daemon vs manual conflicts
|
||||
- Queue daemon: Proper error handling for failed tasks
|
||||
- Queue daemon: Fix GITEA_TOKEN loading from pm-agent.env
|
||||
- cmd_delegate: Enqueue tasks instead of bypassing queue
|
||||
- Notifications: Call kugetsu_add_notification from bash instead of os.system()
|
||||
- kugetsu: Remove duplicate update_queue_item_state that overwrote fixed version
|
||||
|
||||
### Added
|
||||
- Queue functions moved to kugetsu-index.sh for daemon access
|
||||
- kugetsu-session.sh sources required modules for daemon use
|
||||
|
||||
## [v0.2.3] - 2026-04-06
|
||||
|
||||
### Fixed
|
||||
- get_pending_tasks() returns proper JSON array instead of concatenated JSON objects
|
||||
|
||||
## [v0.2.1] - 2026-04-03
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -361,55 +361,6 @@ get_queue_stats() {
|
||||
echo "{\"total\": $total, \"pending\": $pending, \"notified\": $notified, \"completed\": $completed, \"error\": $error}"
|
||||
}
|
||||
|
||||
update_queue_item_state() {
|
||||
local queue_id="$1"
|
||||
local new_state="$2"
|
||||
local session_id="${3:-}"
|
||||
local pid="${4:-}"
|
||||
|
||||
local item_file="$QUEUE_ITEMS_DIR/${queue_id}.json"
|
||||
if [ ! -f "$item_file" ]; then
|
||||
echo "Error: Queue item not found: $queue_id" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
python3 << PYEOF
|
||||
import json
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
item_file = "$item_file"
|
||||
new_state = "$new_state"
|
||||
session_id = "$session_id"
|
||||
pid = "$pid"
|
||||
|
||||
with open(item_file, 'r') as f:
|
||||
item = json.load(f)
|
||||
|
||||
issue_ref = item.get('issue_ref', '')
|
||||
|
||||
item['state'] = new_state
|
||||
|
||||
if new_state == "notified":
|
||||
item['notified_at'] = datetime.now().isoformat() + "Z"
|
||||
if session_id:
|
||||
item['opencode_session_id'] = session_id
|
||||
if pid:
|
||||
item['pid'] = int(pid) if pid.isdigit() else None
|
||||
elif new_state == "completed":
|
||||
item['completed_at'] = datetime.now().isoformat() + "Z"
|
||||
os.system(f"kugetsu_add_notification 'task_completed' 'Task completed: {issue_ref}' '{issue_ref}'")
|
||||
elif new_state == "error":
|
||||
item['error'] = datetime.now().isoformat() + "Z"
|
||||
os.system(f"kugetsu_add_notification 'task_error' 'Task error: {issue_ref}' '{issue_ref}'")
|
||||
|
||||
with open(item_file, 'w') as f:
|
||||
json.dump(item, f, indent=2)
|
||||
|
||||
print(f"Updated $queue_id to state: $new_state")
|
||||
PYEOF
|
||||
}
|
||||
|
||||
check_task_timeouts() {
|
||||
if [ ! -d "$QUEUE_ITEMS_DIR" ]; then
|
||||
return
|
||||
|
||||
@@ -202,9 +202,10 @@ update_queue_item_state() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
local issue_ref=$(python3 -c "import json; print(json.load(open('$item_file')).get('issue_ref', ''))" 2>/dev/null || echo "")
|
||||
|
||||
python3 << PYEOF
|
||||
import json
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
item_file = "$item_file"
|
||||
@@ -215,8 +216,6 @@ pid = "$pid"
|
||||
with open(item_file, 'r') as f:
|
||||
item = json.load(f)
|
||||
|
||||
issue_ref = item.get('issue_ref', '')
|
||||
|
||||
item['state'] = new_state
|
||||
|
||||
if new_state == "notified":
|
||||
@@ -227,14 +226,18 @@ if new_state == "notified":
|
||||
item['pid'] = int(pid) if pid.isdigit() else None
|
||||
elif new_state == "completed":
|
||||
item['completed_at'] = datetime.now().isoformat() + "Z"
|
||||
os.system(f"kugetsu_add_notification 'task_completed' 'Task completed: {issue_ref}' '{issue_ref}'")
|
||||
elif new_state == "error":
|
||||
item['error'] = datetime.now().isoformat() + "Z"
|
||||
os.system(f"kugetsu_add_notification 'task_error' 'Task error: {issue_ref}' '{issue_ref}'")
|
||||
|
||||
with open(item_file, 'w') as f:
|
||||
json.dump(item, f, indent=2)
|
||||
|
||||
print(f"Updated $queue_id to state: $new_state")
|
||||
PYEOF
|
||||
|
||||
if [ "$new_state" = "completed" ]; then
|
||||
kugetsu_add_notification "task_completed" "Task completed: $issue_ref" "$issue_ref"
|
||||
elif [ "$new_state" = "error" ]; then
|
||||
kugetsu_add_notification "task_error" "Task error: $issue_ref" "$issue_ref"
|
||||
fi
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user