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:
@@ -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=()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user