Summary:\n- added Codex marketplace registry plus awareness/ethics/guardrails sub-plugins\n- mirrored Claude plugin commands/scripts/hooks into codex api/ci/code/collect/coolify/core/issue/perf/qa/review/verify\n- embedded Axioms of Life ethics modal, guardrails, and kernel files under codex/ethics\n- added Codex parity report, improvements list, and MCP integration plan\n- extended Gemini MCP tools and docs for Codex awareness
100 lines
1.9 KiB
Bash
Executable file
100 lines
1.9 KiB
Bash
Executable file
#!/bin/bash
|
|
# Hook Output Policy - Expose vs Hide
|
|
#
|
|
# EXPOSE (additionalContext):
|
|
# - Errors that need fixing
|
|
# - Failures that block progress
|
|
# - Security warnings
|
|
# - Breaking changes
|
|
#
|
|
# HIDE (suppressOutput):
|
|
# - Success confirmations
|
|
# - Verbose progress output
|
|
# - Repetitive status messages
|
|
# - Debug information
|
|
#
|
|
# Usage:
|
|
# source output-policy.sh
|
|
# expose_error "Test failed: $error"
|
|
# expose_warning "Debug statements found"
|
|
# hide_success
|
|
# pass_through "$input"
|
|
|
|
# Expose an error to Claude (always visible)
|
|
expose_error() {
|
|
local message="$1"
|
|
local context="$2"
|
|
|
|
cat << EOF
|
|
{
|
|
"hookSpecificOutput": {
|
|
"additionalContext": "## ❌ Error\n\n$message${context:+\n\n$context}"
|
|
}
|
|
}
|
|
EOF
|
|
}
|
|
|
|
# Expose a warning to Claude (visible, but not blocking)
|
|
expose_warning() {
|
|
local message="$1"
|
|
local context="$2"
|
|
|
|
cat << EOF
|
|
{
|
|
"hookSpecificOutput": {
|
|
"additionalContext": "## ⚠️ Warning\n\n$message${context:+\n\n$context}"
|
|
}
|
|
}
|
|
EOF
|
|
}
|
|
|
|
# Expose informational context (visible when relevant)
|
|
expose_info() {
|
|
local message="$1"
|
|
|
|
cat << EOF
|
|
{
|
|
"hookSpecificOutput": {
|
|
"additionalContext": "$message"
|
|
}
|
|
}
|
|
EOF
|
|
}
|
|
|
|
# Hide output (success, no action needed)
|
|
hide_success() {
|
|
echo '{"suppressOutput": true}'
|
|
}
|
|
|
|
# Pass through without modification (neutral)
|
|
pass_through() {
|
|
echo "$1"
|
|
}
|
|
|
|
# Aggregate multiple issues into a summary
|
|
aggregate_issues() {
|
|
local issues=("$@")
|
|
local count=${#issues[@]}
|
|
|
|
if [[ $count -eq 0 ]]; then
|
|
hide_success
|
|
return
|
|
fi
|
|
|
|
local summary=""
|
|
local shown=0
|
|
local max_shown=5
|
|
|
|
for issue in "${issues[@]}"; do
|
|
if [[ $shown -lt $max_shown ]]; then
|
|
summary+="- $issue\n"
|
|
((shown++))
|
|
fi
|
|
done
|
|
|
|
if [[ $count -gt $max_shown ]]; then
|
|
summary+="\n... and $((count - max_shown)) more"
|
|
fi
|
|
|
|
expose_warning "$count issues found:" "$summary"
|
|
}
|