Add SessionStop hook and session-events.tsv duration tracking
- session-audit.json: add SessionStop entry pointing to new end-of-session scripts - report-hook-event-end.sh/.ps1: log payload to hook-events.log and write TSV row to session-events.tsv - report-hook-event.sh/.ps1: also write SessionStart TSV row to session-events.tsv so start/end pairs are queryable for duration
This commit is contained in:
@@ -7,6 +7,14 @@
|
|||||||
"linux": "bash ~/.copilot-resources/resources/scripts/report-hook-event.sh",
|
"linux": "bash ~/.copilot-resources/resources/scripts/report-hook-event.sh",
|
||||||
"windows": "powershell -NoProfile -File \"$HOME/.copilot-resources/resources/scripts/report-hook-event.ps1\""
|
"windows": "powershell -NoProfile -File \"$HOME/.copilot-resources/resources/scripts/report-hook-event.ps1\""
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"SessionStop": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"osx": "bash ~/.copilot-resources/resources/scripts/report-hook-event-end.sh",
|
||||||
|
"linux": "bash ~/.copilot-resources/resources/scripts/report-hook-event-end.sh",
|
||||||
|
"windows": "powershell -NoProfile -File \"$HOME/.copilot-resources/resources/scripts/report-hook-event-end.ps1\""
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
$ErrorActionPreference = 'Stop'
|
||||||
|
|
||||||
|
$StateDir = if ($env:COPILOT_RESOURCES_STATE_DIR) { $env:COPILOT_RESOURCES_STATE_DIR } else { Join-Path $HOME '.copilot-resources-state' }
|
||||||
|
New-Item -ItemType Directory -Path $StateDir -Force | Out-Null
|
||||||
|
|
||||||
|
$Payload = [Console]::In.ReadToEnd()
|
||||||
|
$Payload | Add-Content -LiteralPath (Join-Path $StateDir 'hook-events.log')
|
||||||
|
|
||||||
|
# Append a TSV row to session-events.tsv for duration tracking.
|
||||||
|
"$(Get-Date -AsUTC -Format o)`tSessionEnd" | Add-Content -LiteralPath (Join-Path $StateDir 'session-events.tsv')
|
||||||
|
|
||||||
|
'{"continue": true}'
|
||||||
Executable
+14
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
state_dir="${COPILOT_RESOURCES_STATE_DIR:-$HOME/.copilot-resources-state}"
|
||||||
|
mkdir -p -- "$state_dir"
|
||||||
|
|
||||||
|
event_payload="$(cat)"
|
||||||
|
printf '%s\n' "$event_payload" >> "$state_dir/hook-events.log"
|
||||||
|
|
||||||
|
# Append a TSV row to session-events.tsv for duration tracking.
|
||||||
|
printf '%s\tSessionEnd\n' "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" >> "$state_dir/session-events.tsv"
|
||||||
|
|
||||||
|
printf '{"continue": true}\n'
|
||||||
@@ -6,6 +6,9 @@ New-Item -ItemType Directory -Path $StateDir -Force | Out-Null
|
|||||||
$Payload = [Console]::In.ReadToEnd()
|
$Payload = [Console]::In.ReadToEnd()
|
||||||
$Payload | Add-Content -LiteralPath (Join-Path $StateDir 'hook-events.log')
|
$Payload | Add-Content -LiteralPath (Join-Path $StateDir 'hook-events.log')
|
||||||
|
|
||||||
|
# Append a TSV row to session-events.tsv for duration tracking.
|
||||||
|
"$(Get-Date -AsUTC -Format o)`tSessionStart" | Add-Content -LiteralPath (Join-Path $StateDir 'session-events.tsv')
|
||||||
|
|
||||||
$PortRegistryScript = Join-Path $PSScriptRoot 'update-port-registry.mjs'
|
$PortRegistryScript = Join-Path $PSScriptRoot 'update-port-registry.mjs'
|
||||||
$NodeCommand = Get-Command node -ErrorAction SilentlyContinue
|
$NodeCommand = Get-Command node -ErrorAction SilentlyContinue
|
||||||
if ($NodeCommand -and (Test-Path -LiteralPath $PortRegistryScript)) {
|
if ($NodeCommand -and (Test-Path -LiteralPath $PortRegistryScript)) {
|
||||||
|
|||||||
@@ -10,6 +10,9 @@ mkdir -p -- "$state_dir"
|
|||||||
event_payload="$(cat)"
|
event_payload="$(cat)"
|
||||||
printf '%s\n' "$event_payload" >> "$state_dir/hook-events.log"
|
printf '%s\n' "$event_payload" >> "$state_dir/hook-events.log"
|
||||||
|
|
||||||
|
# Append a TSV row to session-events.tsv for duration tracking.
|
||||||
|
printf '%s\tSessionStart\n' "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" >> "$state_dir/session-events.tsv"
|
||||||
|
|
||||||
if command -v node >/dev/null 2>&1 && [[ -f "$port_registry_script" ]]; then
|
if command -v node >/dev/null 2>&1 && [[ -f "$port_registry_script" ]]; then
|
||||||
if ! printf '%s' "$event_payload" | node "$port_registry_script"; then
|
if ! printf '%s' "$event_payload" | node "$port_registry_script"; then
|
||||||
printf '%s update-port-registry failed\n' "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" >> "$state_dir/project-ports-errors.log"
|
printf '%s update-port-registry failed\n' "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" >> "$state_dir/project-ports-errors.log"
|
||||||
|
|||||||
Reference in New Issue
Block a user