@dst-justin/relay 2.5.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +6 -0
  2. package/package.json +1 -1
  3. package/relay +41 -5
package/README.md CHANGED
@@ -288,6 +288,12 @@ Sessions live in `~/.claude/projects/` and are shared across all accounts — af
288
288
 
289
289
  ## Changelog
290
290
 
291
+ ### v2.7.0 — 2026-09-04
292
+ - `relay provider add` now turns on gateway model discovery by default (previously required `--discover-models`); opt out with `--no-discover-models`.
293
+
294
+ ### v2.6.0 — 2026-09-04
295
+ - Add `relay run -c`/`--continue`/`-r`/`--resume` — replays the last account/provider `relay run` used in the current directory, so a crashed or Ctrl-C'd one-off provider session can resume without retyping the provider name.
296
+
291
297
  ### v2.5.0 — 2026-08-12
292
298
  - Add `--subagent-model` to `relay provider add`, storing a `subagent_model` field that `relay provider use`/`relay run` inject as `CLAUDE_CODE_SUBAGENT_MODEL` — lets a LiteLLM provider pin the subagent model independently of the main `ANTHROPIC_MODEL`.
293
299
  - `relay provider list` now also shows `subagent_model` when set.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dst-justin/relay",
3
- "version": "2.5.0",
3
+ "version": "2.7.0",
4
4
  "description": "Multi-account switcher for Claude Code — instant credential swap across macOS, Linux, and Windows",
5
5
  "bin": {
6
6
  "relay": "./relay.js"
package/relay CHANGED
@@ -966,7 +966,7 @@ PYEOF
966
966
 
967
967
  cmd_provider_add() {
968
968
  local name="${1:-}"
969
- [[ -z "${name}" ]] && { err "usage: relay provider add <name> --base-url <url> --token <token> [--model <model>] [--subagent-model <model>] [--discover-models]"; exit 1; }
969
+ [[ -z "${name}" ]] && { err "usage: relay provider add <name> --base-url <url> --token <token> [--model <model>] [--subagent-model <model>] [--no-discover-models]"; exit 1; }
970
970
  shift
971
971
  case "${name}" in
972
972
  *[!a-zA-Z0-9_-]*) err "name must contain only letters, numbers, underscores, or hyphens"; exit 1 ;;
@@ -981,7 +981,10 @@ cmd_provider_add() {
981
981
  return 0
982
982
  fi
983
983
 
984
- local base_url="" token="" model="" subagent_model="" discover=0
984
+ # Discovery defaults on: without a pinned --model there's nothing else to
985
+ # route with, and with one it's still useful for `relay provider list` /
986
+ # future switches, so opt-out (--no-discover-models) rather than opt-in.
987
+ local base_url="" token="" model="" subagent_model="" discover=1
985
988
  while [[ $# -gt 0 ]]; do
986
989
  case "$1" in
987
990
  --base-url) base_url="${2:-}"; shift 2 ;;
@@ -989,6 +992,7 @@ cmd_provider_add() {
989
992
  --model) model="${2:-}"; shift 2 ;;
990
993
  --subagent-model) subagent_model="${2:-}"; shift 2 ;;
991
994
  --discover-models) discover=1; shift ;;
995
+ --no-discover-models) discover=0; shift ;;
992
996
  *) err "unknown option: $1"; exit 1 ;;
993
997
  esac
994
998
  done
@@ -1103,18 +1107,49 @@ cmd_provider_remove() {
1103
1107
  ok "Deleted provider '${name}'"
1104
1108
  }
1105
1109
 
1110
+ _run_history_dir() { printf '%s/run-history' "${RELAY_DIR}"; }
1111
+
1112
+ # Per-directory "last name run here" pointer so `relay run -c`/`--resume` can
1113
+ # replay the same account/provider without retyping it — a crashed or
1114
+ # Ctrl-C'd `relay run <provider>` has no other record of what backend that
1115
+ # session used, since exec replaces the process before any trap could fire.
1116
+ _run_history_key() { printf '%s' "${PWD}" | cksum | awk '{print $1}'; }
1117
+
1118
+ _run_record_last() {
1119
+ mkdir -p "$(_run_history_dir)"
1120
+ printf '%s' "$1" > "$(_run_history_dir)/$(_run_history_key)"
1121
+ }
1122
+
1123
+ _run_last_name_for_cwd() {
1124
+ local f; f="$(_run_history_dir)/$(_run_history_key)"
1125
+ [[ -f "${f}" ]] && cat "${f}"
1126
+ }
1127
+
1106
1128
  cmd_run() {
1107
1129
  local name="${1:-}"
1108
1130
  [[ -z "${name}" ]] && { err "usage: relay run <name> [-- <claude args...>]"; exit 1; }
1109
- shift
1110
- [[ "${1:-}" == "--" ]] && shift
1111
1131
 
1112
1132
  require_claude
1113
1133
 
1134
+ case "${name}" in
1135
+ -c|--continue|-r|--resume)
1136
+ # Reuse the last account/provider run from this directory; leave "$@"
1137
+ # untouched so -c/--resume (and any session id after it) still reach claude.
1138
+ name=$(_run_last_name_for_cwd)
1139
+ [[ -z "${name}" ]] && { err "No previous 'relay run <name>' recorded for this directory — run 'relay run <name>' once first"; exit 1; }
1140
+ ;;
1141
+ *)
1142
+ shift
1143
+ [[ "${1:-}" == "--" ]] && shift
1144
+ ;;
1145
+ esac
1146
+
1114
1147
  if account_exists "${name}"; then
1148
+ _run_record_last "${name}"
1115
1149
  do_switch "${name}"
1116
1150
  exec "${REAL_CLAUDE}" "$@"
1117
1151
  elif provider_exists "${name}"; then
1152
+ _run_record_last "${name}"
1118
1153
  local base_url token model subagent_model discover settings_file
1119
1154
  base_url=$(_provider_field "${name}" base_url)
1120
1155
  token=$(_provider_field "${name}" auth_token)
@@ -2771,6 +2806,7 @@ cmd_help() {
2771
2806
  printf " ${B}One-off runs${R}\n"
2772
2807
  printf " %-42s %s\n" " relay run <name>" "one-off session on an account or provider, then exec claude"
2773
2808
  printf " %-42s %s\n" " relay run <name> -- <args>" "forward extra args to claude itself, e.g. -- --resume"
2809
+ printf " %-42s %s\n" " relay run -c|--resume" "replay last account/provider used by 'relay run' in this dir"
2774
2810
  printf " %-42s %s\n" " (leaves global switch/provider state untouched — safe for concurrent sessions)"
2775
2811
  echo ""
2776
2812
 
@@ -2781,7 +2817,7 @@ cmd_help() {
2781
2817
  printf " %-42s %s\n" " --model <model>" "optional: pin ANTHROPIC_MODEL to this alias"
2782
2818
  printf " %-42s %s\n" " --subagent-model <model>" "optional: pin CLAUDE_CODE_SUBAGENT_MODEL"
2783
2819
  printf " %-42s %s\n" " " "(overrides every subagent's own model: frontmatter)"
2784
- printf " %-42s %s\n" " --discover-models" "optional: enable gateway model discovery instead of pinning"
2820
+ printf " %-42s %s\n" " --no-discover-models" "opt out: gateway model discovery is on by default"
2785
2821
  printf " %-42s %s\n" " relay provider list" "list configured providers + their settings"
2786
2822
  printf " %-42s %s\n" " relay provider use <name>" "route all future sessions through this provider"
2787
2823
  printf " %-42s %s\n" " relay provider off" "stop routing through a provider, resume subscription account"