aboutsummaryrefslogtreecommitdiff
path: root/claude-templates/bin
diff options
context:
space:
mode:
Diffstat (limited to 'claude-templates/bin')
-rwxr-xr-xclaude-templates/bin/agent-page57
-rwxr-xr-xclaude-templates/bin/agent-text57
-rwxr-xr-xclaude-templates/bin/install-ai2
3 files changed, 65 insertions, 51 deletions
diff --git a/claude-templates/bin/agent-page b/claude-templates/bin/agent-page
index 8e9b23c..728ee78 100755
--- a/claude-templates/bin/agent-page
+++ b/claude-templates/bin/agent-page
@@ -1,55 +1,12 @@
#!/bin/bash
-# agent-page — page Craig's phone over Signal, from any machine or agent runtime.
+# agent-page — deprecated alias for agent-text.
#
-# Usage: agent-page <message...>
-#
-# The pager identity (+15045173983) is registered in velox's signal-cli, and
-# any daily driver linked as a device of that account (ratio, 2026-07-20) can
-# send directly too. So the dispatch is: if the pager account is registered in
-# the local signal-cli, send directly; otherwise ssh-relay the send to velox
-# over the tailnet. A direct send from a linked device still lands when velox
-# is down — the reason ratio was linked. The recipient is Craig's Signal
-# account UUID — his phone number reads as unregistered in Signal's directory,
-# so never page the number. Verified end to end 2026-07-13 (velox) and
-# 2026-07-20 (ratio, direct).
-#
-# This is the AWAY channel. At his desk, use the desktop channel instead:
-# notify info "Title" "Message" --persist
-# See protocols.org "Paging Craig" for choosing between them.
-#
-# Known caveats (tracked on the rulesets Signal-pager task, full runbook in
-# rulesets docs/design/): a relay from a non-linked machine needs velox up on
-# the tailnet, and each device holding the account wants a periodic `receive`
-# (staleness warnings appear otherwise) — the signal-receive timer handles that.
+# The Signal phone tool was renamed agent-text on 2026-07-20, when the
+# notification vocabulary split into "text me" (Signal) and "page me" (desktop).
+# This shim keeps old callers and other machines working until they re-install
+# and pick up agent-text directly. Remove it in a later cleanup once nothing
+# references agent-page.
#
# Source: ~/code/rulesets/claude-templates/bin/agent-page
-# Install: make -C ~/code/rulesets install
-
-PAGER_ACCOUNT="+15045173983"
-CRAIG_UUID="b1b5601e-6126-47f8-afaa-0a59f5188fde"
-VELOX_HOST="velox.tailf3bb8c.ts.net"
-
-if [ $# -eq 0 ]; then
- echo "usage: agent-page <message...>" >&2
- exit 2
-fi
-
-msg="$*"
-
-# The pager account is local if this machine's signal-cli holds it — the
-# registered primary (velox) or any linked device. Those send directly.
-if signal-cli listAccounts 2>/dev/null | grep -q "$PAGER_ACCOUNT"; then
- signal-cli -a "$PAGER_ACCOUNT" send -m "$msg" "$CRAIG_UUID"
- rc=$?
-else
- # printf %q hardens the message for the remote shell.
- ssh -o BatchMode=yes -o ConnectTimeout=10 -o StrictHostKeyChecking=accept-new \
- "$VELOX_HOST" \
- "signal-cli -a $PAGER_ACCOUNT send -m $(printf '%q' "$msg") $CRAIG_UUID"
- rc=$?
-fi
-if [ "$rc" -ne 0 ]; then
- echo "agent-page: phone page failed (velox down or unreachable?) — fall back to the desktop channel: notify info 'Page' '<message>' --persist" >&2
-fi
-exit "$rc"
+exec "$(dirname "$(readlink -f "$0")")/agent-text" "$@"
diff --git a/claude-templates/bin/agent-text b/claude-templates/bin/agent-text
new file mode 100755
index 0000000..86aa933
--- /dev/null
+++ b/claude-templates/bin/agent-text
@@ -0,0 +1,57 @@
+#!/bin/bash
+# agent-text — text Craig's phone over Signal, from any machine or agent runtime.
+# The Signal half of the notification vocabulary: "text me" reaches the phone,
+# "page me" is the desktop channel (notify). See protocols.org "Reaching Craig".
+#
+# Usage: agent-text <message...>
+#
+# The Signal identity (+15045173983) is registered in velox's signal-cli, and
+# any daily driver linked as a device of that account (ratio, 2026-07-20) can
+# send directly too. So the dispatch is: if the account is registered in the
+# local signal-cli, send directly; otherwise ssh-relay the send to velox over
+# the tailnet. A direct send from a linked device still lands when velox is
+# down (the reason ratio was linked). The recipient is Craig's Signal account
+# UUID; his phone number reads as unregistered in Signal's directory, so never
+# target the number. Verified end to end 2026-07-13 (velox) and 2026-07-20
+# (ratio, direct).
+#
+# This is the AWAY channel. At his desk, use the desktop channel instead:
+# notify info "Title" "Message" --persist
+# See protocols.org "Reaching Craig" for choosing between them.
+#
+# Known caveats (full runbook in rulesets docs/design/): a relay from a
+# non-linked machine needs velox up on the tailnet, and each device holding the
+# account wants a periodic `receive` (staleness warnings appear otherwise); the
+# signal-receive timer handles that.
+#
+# Source: ~/code/rulesets/claude-templates/bin/agent-text
+# Install: make -C ~/code/rulesets install
+
+SIGNAL_ACCOUNT="+15045173983"
+CRAIG_UUID="b1b5601e-6126-47f8-afaa-0a59f5188fde"
+VELOX_HOST="velox.tailf3bb8c.ts.net"
+
+if [ $# -eq 0 ]; then
+ echo "usage: agent-text <message...>" >&2
+ exit 2
+fi
+
+msg="$*"
+
+# The account is local if this machine's signal-cli holds it: the registered
+# primary (velox) or any linked device. Those send directly.
+if signal-cli listAccounts 2>/dev/null | grep -q "$SIGNAL_ACCOUNT"; then
+ signal-cli -a "$SIGNAL_ACCOUNT" send -m "$msg" "$CRAIG_UUID"
+ rc=$?
+else
+ # printf %q hardens the message for the remote shell.
+ ssh -o BatchMode=yes -o ConnectTimeout=10 -o StrictHostKeyChecking=accept-new \
+ "$VELOX_HOST" \
+ "signal-cli -a $SIGNAL_ACCOUNT send -m $(printf '%q' "$msg") $CRAIG_UUID"
+ rc=$?
+fi
+
+if [ "$rc" -ne 0 ]; then
+ echo "agent-text: phone message failed (velox down or unreachable?); fall back to the desktop channel: notify info 'Message' '<message>' --persist" >&2
+fi
+exit "$rc"
diff --git a/claude-templates/bin/install-ai b/claude-templates/bin/install-ai
index 88cb8e5..3283c4a 100755
--- a/claude-templates/bin/install-ai
+++ b/claude-templates/bin/install-ai
@@ -2,7 +2,7 @@
# install-ai — PATH-facing launcher for the fresh-project bootstrapper.
#
# make install symlinks this into ~/.local/bin/install-ai (same bin loop that
-# links `ai` and `agent-page`), so `install-ai [--track|--gitignore] [PROJECT]`
+# links `ai` and `agent-text`), so `install-ai [--track|--gitignore] [PROJECT]`
# runs from anywhere. The real logic lives in scripts/install-ai.sh; this
# resolves its own location through the ~/.local/bin symlink and execs that
# script by its true repo path, so the script's own repo-root computation