sibyl-memory-cli 0.3.1__tar.gz → 0.3.3__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sibyl-memory-cli
3
- Version: 0.3.1
3
+ Version: 0.3.3
4
4
  Summary: Command-line interface for the Sibyl Memory Plugin. `sibyl init` activates, `sibyl upgrade` runs the staker / subscription flow, `sibyl status` shows current tier and DB stats, `sibyl whoami` gives a one-line account summary, `sibyl devices` lists active devices and supports per-device revoke.
5
5
  Author-email: "SIBYL, Sibyl Labs LLC" <sibyl@sibyllabs.org>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "sibyl-memory-cli"
7
- version = "0.3.1"
7
+ version = "0.3.3"
8
8
  description = "Command-line interface for the Sibyl Memory Plugin. `sibyl init` activates, `sibyl upgrade` runs the staker / subscription flow, `sibyl status` shows current tier and DB stats, `sibyl whoami` gives a one-line account summary, `sibyl devices` lists active devices and supports per-device revoke."
9
9
  authors = [{ name = "SIBYL, Sibyl Labs LLC", email = "sibyl@sibyllabs.org" }]
10
10
  license = { text = "MIT" }
@@ -45,6 +45,7 @@ _GRADIENT = (
45
45
  )
46
46
 
47
47
  _TAGLINE = "memory you can hold in your hand"
48
+ _ATTRIBUTION = "a Sibyl Labs LLC Product. Agentic Infrastructure and Memory Products"
48
49
 
49
50
 
50
51
  def _supports_truecolor() -> bool:
@@ -97,8 +98,9 @@ def render_banner(*, force_color: bool | None = None) -> str:
97
98
  if not use_truecolor:
98
99
  # Plain text — still visually clean, just no color.
99
100
  body = "\n".join(" " + line for line in _LINES)
100
- tagline = f"\n {_TAGLINE}\n"
101
- return body + tagline
101
+ tagline = f"\n {_TAGLINE}"
102
+ attribution = f"\n {_ATTRIBUTION}\n"
103
+ return body + tagline + attribution
102
104
 
103
105
  # Colored — apply per-row gradient.
104
106
  colored_lines = []
@@ -106,10 +108,14 @@ def render_banner(*, force_color: bool | None = None) -> str:
106
108
  colored_lines.append(f" {_rgb(r, g, b)}{line}{_RESET}")
107
109
 
108
110
  body = "\n".join(colored_lines)
109
- # Tagline in dim italic-feeling color (the deepest gold)
111
+ # Tagline in the deepest gold — present, but not competing with the wordmark.
110
112
  r, g, b = _GRADIENT[-1]
111
- tagline = f"\n {_rgb(r, g, b)}{_TAGLINE}{_RESET}\n"
112
- return body + tagline
113
+ tagline = f"\n {_rgb(r, g, b)}{_TAGLINE}{_RESET}"
114
+ # Attribution dimmer still — a half-step below the tagline so the hierarchy
115
+ # reads SIBYL > tagline > attribution at a glance. ANSI dim (\033[2m) gives
116
+ # ~55% perceived opacity across the supported terminals.
117
+ attribution = f"\n \033[2m{_rgb(r, g, b)}{_ATTRIBUTION}{_RESET}\n"
118
+ return body + tagline + attribution
113
119
 
114
120
 
115
121
  def print_banner(*, force_color: bool | None = None) -> None:
@@ -46,7 +46,11 @@ def _client_version() -> str:
46
46
  # ---- Defaults ----------------------------------------------------------
47
47
 
48
48
  API_BASE = os.environ.get("SIBYL_API_BASE", "https://api.sibyllabs.org")
49
- ACTIVATE_BASE = os.environ.get("SIBYL_ACTIVATE_BASE", "https://sibyllabs.org/plugin/activate")
49
+ # Dedicated short-URL auth subdomain (2026-05-20). Trust + phishing resistance:
50
+ # the URL the user sees in their terminal + browser is purpose-specific and
51
+ # short enough to read at a glance. Legacy URL `sibyllabs.org/plugin/activate
52
+ # ?session=<uuid>` still resolves so older CLI installs continue to work.
53
+ ACTIVATE_BASE = os.environ.get("SIBYL_ACTIVATE_BASE", "https://auth.sibyllabs.org")
50
54
  UPGRADE_BASE = os.environ.get("SIBYL_UPGRADE_BASE", "https://sibyllabs.org/plugin/upgrade")
51
55
 
52
56
  DEFAULT_CRED_PATH = Path("~/.sibyl-memory/credentials.json").expanduser()
@@ -236,7 +240,16 @@ def cmd_init(args: argparse.Namespace) -> int:
236
240
  session_id = str(uuid.uuid4())
237
241
  pairing_code = _gen_pairing_code()
238
242
  code_hash = _hash_pairing_code(pairing_code, session_id)
239
- activate_url = f"{ACTIVATE_BASE}?session={session_id}"
243
+ # Path-based URL on the dedicated auth subdomain (2026-05-20).
244
+ # auth.sibyllabs.org/<uuid> reads cleaner in the terminal than the old
245
+ # query-string form and aligns the wallet popup's "X wants you to sign in"
246
+ # header with the browser URL bar.
247
+ if ACTIVATE_BASE.rstrip("/").endswith(".sibyllabs.org") or ACTIVATE_BASE.rstrip("/").endswith("/auth"):
248
+ activate_url = f"{ACTIVATE_BASE.rstrip('/')}/{session_id}"
249
+ else:
250
+ # Legacy fallback: anyone with SIBYL_ACTIVATE_BASE pointing at the old
251
+ # /plugin/activate path keeps the query-string shape.
252
+ activate_url = f"{ACTIVATE_BASE}?session={session_id}"
240
253
 
241
254
  # Pre-register the session + pairing code hash with the server.
242
255
  # The code itself never leaves the user's machine until they type it
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sibyl-memory-cli
3
- Version: 0.3.1
3
+ Version: 0.3.3
4
4
  Summary: Command-line interface for the Sibyl Memory Plugin. `sibyl init` activates, `sibyl upgrade` runs the staker / subscription flow, `sibyl status` shows current tier and DB stats, `sibyl whoami` gives a one-line account summary, `sibyl devices` lists active devices and supports per-device revoke.
5
5
  Author-email: "SIBYL, Sibyl Labs LLC" <sibyl@sibyllabs.org>
6
6
  License: MIT