- Extend parse_json_response() to support both flat and Claude CLI formats - Extract result, sessionId, and metadata fields - Support metadata.files_changed, metadata.has_errors, completion_status - Parse progress_indicators array for confidence boosting - Add session management functions for continuity tracking: - store_session_id(): Persist session with ISO timestamp - get_last_session_id(): Retrieve stored session ID - should_resume_session(): Check session validity (24-hour expiration) - Add get_epoch_seconds() to date_utils.sh for cross-platform epoch time - Auto-persist sessionId to .session_id file during response analysis - Add 16 new TDD tests for Claude CLI format and session management - Update documentation for v0.9.6 (239 tests total) Test count: 239 (up from 223)
53 lines
1.4 KiB
Bash
53 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# date_utils.sh - Cross-platform date utility functions
|
|
# Provides consistent date formatting and arithmetic across GNU (Linux) and BSD (macOS) systems
|
|
|
|
# Get current timestamp in ISO 8601 format with seconds precision
|
|
# Returns: YYYY-MM-DDTHH:MM:SS+00:00 format
|
|
get_iso_timestamp() {
|
|
local os_type
|
|
os_type=$(uname)
|
|
|
|
if [[ "$os_type" == "Darwin" ]]; then
|
|
# macOS (BSD date)
|
|
# Use manual formatting and add colon to timezone offset
|
|
date -u +"%Y-%m-%dT%H:%M:%S%z" | sed 's/\(..\)$/:\1/'
|
|
else
|
|
# Linux (GNU date) - use -u flag for UTC
|
|
date -u -Iseconds
|
|
fi
|
|
}
|
|
|
|
# Get time component (HH:MM:SS) for one hour from now
|
|
# Returns: HH:MM:SS format
|
|
get_next_hour_time() {
|
|
local os_type
|
|
os_type=$(uname)
|
|
|
|
if [[ "$os_type" == "Darwin" ]]; then
|
|
# macOS (BSD date) - use -v flag for date arithmetic
|
|
date -v+1H '+%H:%M:%S'
|
|
else
|
|
# Linux (GNU date) - use -d flag for date arithmetic
|
|
date -d '+1 hour' '+%H:%M:%S'
|
|
fi
|
|
}
|
|
|
|
# Get current timestamp in a basic format (fallback)
|
|
# Returns: YYYY-MM-DD HH:MM:SS format
|
|
get_basic_timestamp() {
|
|
date '+%Y-%m-%d %H:%M:%S'
|
|
}
|
|
|
|
# Get current Unix epoch time in seconds
|
|
# Returns: Integer seconds since 1970-01-01 00:00:00 UTC
|
|
get_epoch_seconds() {
|
|
date +%s
|
|
}
|
|
|
|
# Export functions for use in other scripts
|
|
export -f get_iso_timestamp
|
|
export -f get_next_hour_time
|
|
export -f get_basic_timestamp
|
|
export -f get_epoch_seconds
|