fix(cli): mem0 init --agent now triggers bootstrap (Node) + created_via parity
External sandbox audit (Sandbox E2E Test Report 2026-05-13) surfaced two CLI issues. 1. Node — `mem0 init --agent` silently falls through to the non-TTY error when no agent env var is set. Commander resolves the program-level `--agent` alias (for --json) before init's own `--agent`; init's opts.agent stays false. Fix: enable Commander's positional options so flags AFTER a subcommand belong to that subcommand. Now `mem0 --agent <cmd>` is the JSON-output alias and `mem0 init --agent` is the Agent Mode bootstrap flag. The Python side already had an argv preprocessor doing the equivalent; this brings Node to parity using Commander's built-in mechanism (cleaner than mirroring the preprocessor). Verified: `mem0 init --agent` with bogus MEM0_BASE_URL now hits the bootstrap fetch and surfaces a network error (proving it reached bootstrap_via_backend), where before it printed "Non-interactive terminal detected" and never made an HTTP call. 2. Both — `config.platform.created_via` was inconsistent: set to "agent_mode" / "email" on the agent/claim paths but left empty on normal email signup and api-key paths. Now all four paths set it: "agent_mode" (bootstrap), "email" (OTP signup or claim), "api_key" (--api-key flag or interactive prompt). Downstream consumers can reliably filter on created_via==value.
This commit is contained in:
@@ -284,6 +284,7 @@ def run_init(
|
||||
config.platform.api_key = api_key_val
|
||||
config.platform.base_url = base_url
|
||||
config.platform.user_email = email
|
||||
config.platform.created_via = "email"
|
||||
config.defaults.user_id = (
|
||||
user_id or os.environ.get("USER") or os.environ.get("USERNAME") or "mem0-cli"
|
||||
)
|
||||
@@ -325,6 +326,7 @@ def run_init(
|
||||
# Fully non-interactive when both flags provided
|
||||
if api_key and user_id:
|
||||
config.platform.api_key = api_key
|
||||
config.platform.created_via = "api_key"
|
||||
config.defaults.user_id = user_id
|
||||
_validate_platform(config)
|
||||
save_config(config)
|
||||
@@ -365,6 +367,7 @@ def run_init(
|
||||
config.platform.api_key = api_key_val
|
||||
config.platform.base_url = base_url
|
||||
config.platform.user_email = email_addr
|
||||
config.platform.created_via = "email"
|
||||
config.defaults.user_id = (
|
||||
user_id or os.environ.get("USER") or os.environ.get("USERNAME") or "mem0-cli"
|
||||
)
|
||||
@@ -383,6 +386,7 @@ def run_init(
|
||||
# API key flow
|
||||
if api_key:
|
||||
config.platform.api_key = api_key
|
||||
config.platform.created_via = "api_key"
|
||||
else:
|
||||
_setup_platform(config)
|
||||
|
||||
@@ -422,6 +426,7 @@ def _setup_platform(config: Mem0Config) -> None:
|
||||
raise typer.Exit(1)
|
||||
|
||||
config.platform.api_key = api_key
|
||||
config.platform.created_via = "api_key"
|
||||
|
||||
|
||||
def _setup_defaults(config: Mem0Config) -> None:
|
||||
|
||||
Reference in New Issue
Block a user