feat(box): passkey fetch, agent key-approval flow, unified lookups, tmux agent UX

- box passkey [show|fetch] (+ muse passkey): documents VM-only passkey
  (/srv/box/passkey.txt, fallback /etc/netvm/passkey.txt on 34.139.37.135),
  probes VM over SSH with graceful fallback; --json supported. No secrets on bl.
- approvals: request_key_approval / check_node_key_request; KEY_APPROVAL status
  surfaced in `box approvals check`; allow/deny resolve + audit to box-ctl.jsonl;
  never auto-approved. New `box approvals request-key <node> --reason`.
- box lookup (summary|fleet|threads|unread|approvals|key|docs) and docs-lookup
  engine with lookup_internal/ database (docs_internal symlink).
- muse-tmux: non-TTY attach falls back to scrollback capture; prune NameError fix.
- box/muse passthrough for tmux/muse/docs; thread list/view alias + prefix resolve.
- Docs: AGENTS.md, AGENT-TOOLING.md, BOX-WEB-SURFACE-GUIDE.md, README.
- Tests: key-approval + passkey tests; sync stale sidechat UUIDs and manifest name.
- .gitignore runtime trackers (subagent-sessions, conversation-nudge-tracker).
This commit is contained in:
operator
2026-10-05 20:18:47 +00:00
parent 59c9965791
commit adfcd2e602
38 changed files with 5948 additions and 168 deletions
+47 -5
View File
@@ -16,20 +16,28 @@ VALID_ACCOUNTS=("muse" "pip" "646" "opm" "def" "dev")
show_usage() {
echo "Usage: muse <account> <command> [arguments...]"
echo " muse -a <account> <command> [arguments...]"
echo " muse <global-command> [arguments...]"
echo ""
echo "Available accounts:"
for acct in "${VALID_ACCOUNTS[@]}"; do
echo " • $acct"
done
echo ""
echo "Common commands:"
echo "Global lookups & tools:"
echo " tmux [args...] Manage shared Muse tmux sessions (new, send, capture, ls, kill, prune)"
echo " status Fleet overview & node vitality"
echo " threads List registered threads and sidechats across fleet"
echo " unread View unread counts across all agents"
echo " lookup [subcommand] Unified lookup (fleet, threads, unread, approvals, key)"
echo " passkey (or key) View passkey location (VM-only), PIN, & agent approval protocol"
echo ""
echo "Per-account commands:"
echo " chat [--thread <id>] Launch interactive conversational shell / REPL"
echo " tmux <cmd> [args...] Manage shared Muse tmux sessions (new, send, capture, ls, kill)"
echo " status Check agent status, sessions, and unread"
echo " threads List active threads and sidechats"
echo " status Check account status, sessions, and unread"
echo " threads List active threads and sidechats for account"
echo " history --thread <id> View message history"
echo " send --thread <id> msg Send message to an agent"
echo " unread View unread counts"
echo " unread View unread counts for account"
echo ""
echo "Authentication & Cookie Management:"
echo " Cookies are isolated per-node in ~/.config/muse-cli/<account>/"
@@ -37,6 +45,40 @@ show_usage() {
echo ""
}
# Direct top-level global actions that do not require an account
if [[ $# -gt 0 ]]; then
case "$1" in
tmux)
shift
exec python3 "$NETVM_BIN/muse-tmux.py" "$@"
;;
passkey|key)
shift
exec python3 "$NETVM_BIN/super-cli.py" passkey "$@"
;;
lookup|lookups)
shift
exec python3 "$NETVM_BIN/super-cli.py" lookup "$@"
;;
fleet)
shift
exec python3 "$NETVM_BIN/super-cli.py" fleet "$@"
;;
threads)
shift
exec python3 "$NETVM_BIN/super-cli.py" thread list "$@"
;;
unread)
shift
exec python3 "$NETVM_BIN/super-cli.py" lookup unread "$@"
;;
status)
shift
exec python3 "$NETVM_BIN/super-cli.py" fleet status "$@"
;;
esac
fi
ACCOUNT=""
POSITIONAL=()