46 lines
1.3 KiB
Bash
Executable File
46 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# Explain - Ask ollie to explain the selected code in acme
|
|
#
|
|
# Usage: Select code, then middle-click Explain in the tag
|
|
|
|
set -euo pipefail
|
|
|
|
if [[ -z "${winid:-}" ]]; then
|
|
echo "Explain must be run from within acme" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Get the window name (filename) from the tag
|
|
filename=$(9p read acme/$winid/tag | awk '{print $1}')
|
|
|
|
# Read the current selection
|
|
echo 'addr=dot' | 9p write acme/$winid/ctl
|
|
selection=$(9p read acme/$winid/xdata 2>/dev/null || true)
|
|
|
|
if [[ -z "$selection" ]]; then
|
|
echo "No selection. Select some code first." >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Ensure acme session/agent exists
|
|
eval $(acme-ollie-ensure)
|
|
|
|
# Build context string
|
|
context=""
|
|
if [[ -n "$filename" && "$filename" != *"+Errors" && "$filename" != "+*" ]]; then
|
|
context=" (from $filename)"
|
|
fi
|
|
|
|
# Build and send the prompt
|
|
prompt="Read-only task. Inspect the actual file $filename and explain the selected code below. Do not edit files. Explain what it does, how it works, important inputs and outputs, and any risks or edge cases. The selection is the target, not necessarily the complete context.
|
|
|
|
File: $filename
|
|
Selected code:
|
|
|
|
a code selection follows:
|
|
$selection
|
|
|
|
Give a concise explanation. Do not propose or apply a patch."
|
|
|
|
echo "$prompt" | o "$OLLIE_SESSION/$OLLIE_AGENT" prompt
|