Rust core: - Cap'n Proto append-only storage (nodes + relations) - Graph algorithms: clustering coefficient, community detection, schema fit, small-world metrics, interference detection - BM25 text similarity with Porter stemming - Spaced repetition replay queue - Commands: search, init, health, status, graph, categorize, link-add, link-impact, decay, consolidate-session, etc. Python scripts: - Episodic digest pipeline: daily/weekly/monthly-digest.py - retroactive-digest.py for backfilling - consolidation-agents.py: 3 parallel Sonnet agents - apply-consolidation.py: structured action extraction + apply - digest-link-parser.py: extract ~400 explicit links from digests - content-promotion-agent.py: promote episodic obs to semantic files - bulk-categorize.py: categorize all nodes via single Sonnet call - consolidation-loop.py: multi-round automated consolidation Co-Authored-By: Kent Overstreet <kent.overstreet@linux.dev>
44 lines
1.3 KiB
Bash
Executable file
44 lines
1.3 KiB
Bash
Executable file
#!/bin/bash
|
|
# call-sonnet.sh — wrapper to call Sonnet via claude CLI
|
|
# Reads prompt from a file (arg 1), writes response to stdout
|
|
#
|
|
# Debug mode: set SONNET_DEBUG=1 for verbose tracing
|
|
|
|
set -euo pipefail
|
|
|
|
PROMPT_FILE="${1:?Usage: call-sonnet.sh PROMPT_FILE}"
|
|
DEBUG="${SONNET_DEBUG:-0}"
|
|
|
|
log() { [ "$DEBUG" = "1" ] && echo "[call-sonnet] $*" >&2 || true; }
|
|
|
|
if [ ! -f "$PROMPT_FILE" ]; then
|
|
echo "Prompt file not found: $PROMPT_FILE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
log "prompt file: $PROMPT_FILE ($(wc -c < "$PROMPT_FILE") bytes)"
|
|
log "CLAUDECODE=${CLAUDECODE:-unset}"
|
|
log "PWD=$PWD"
|
|
log "which claude: $(which claude)"
|
|
|
|
unset CLAUDECODE 2>/dev/null || true
|
|
|
|
log "CLAUDECODE after unset: ${CLAUDECODE:-unset}"
|
|
log "running: claude -p --model sonnet --tools '' < $PROMPT_FILE"
|
|
log "claude PID will follow..."
|
|
|
|
# Trace: run with strace if available and debug mode
|
|
if [ "$DEBUG" = "2" ] && command -v strace &>/dev/null; then
|
|
strace -f -e trace=network,read,write -o /tmp/sonnet-strace.log \
|
|
claude -p --model sonnet --tools "" < "$PROMPT_FILE"
|
|
else
|
|
claude -p --model sonnet --tools "" \
|
|
--debug-file /tmp/sonnet-debug.log \
|
|
< "$PROMPT_FILE" &
|
|
CPID=$!
|
|
log "claude PID: $CPID"
|
|
wait $CPID
|
|
EXIT=$?
|
|
log "claude exited: $EXIT"
|
|
exit $EXIT
|
|
fi
|