Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions ax_cli/commands/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
token_app = typer.Typer(name="token", help="Token management", no_args_is_help=True)
app.add_typer(token_app, name="token")

DEFAULT_LOGIN_BASE_URL = "https://next.paxai.app"
DEFAULT_LOGIN_BASE_URL = "https://paxai.app"


def _mask_token_prefix(token: str) -> str:
Expand Down Expand Up @@ -258,7 +258,7 @@ def init(

\b
axctl login
axctl login --url https://next.paxai.app
axctl login --url https://paxai.app

The CLI will:
1. Verify the token works (exchange it for a JWT)
Expand Down Expand Up @@ -508,7 +508,7 @@ def exchange(
),
agent_id: str = typer.Option(None, "--agent", "-a", help="Agent ID (required for agent_access)"),
audience: str = typer.Option("ax-api", "--audience", help="Target audience: ax-api or ax-mcp"),
resource: str = typer.Option(None, "--resource", help="RFC 8707 resource URI (e.g. https://next.paxai.app/mcp)"),
resource: str = typer.Option(None, "--resource", help="RFC 8707 resource URI (e.g. https://paxai.app/mcp)"),
as_json: bool = JSON_OPTION,
):
"""Exchange PAT for a short-lived JWT (AUTH-SPEC-001 §9).
Expand Down
2 changes: 1 addition & 1 deletion ax_cli/commands/profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ def _register_fingerprint(profile: dict) -> str | None:
@app.command("add")
def add(
name: str = typer.Argument(..., help="Profile name (e.g. next-orion)"),
url: str = typer.Option(..., "--url", help="Base URL (e.g. https://next.paxai.app)"),
url: str = typer.Option(..., "--url", help="Base URL (e.g. https://paxai.app)"),
token_file: str = typer.Option(..., "--token-file", help="Path to token file"),
agent_name: str = typer.Option(..., "--agent-name", help="Agent name"),
agent_id: Optional[str] = typer.Option(None, "--agent-id", help="Agent UUID"),
Expand Down
4 changes: 2 additions & 2 deletions channel/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
/**
* aX Channel for Claude Code.
*
* Bridges @mentions from the aX platform (next.paxai.app) into a running
* Bridges @mentions from the aX platform (paxai.app) into a running
* Claude Code session via the MCP channel protocol.
*
* Modeled on fakechat — uses the official MCP SDK with StdioServerTransport.
Expand Down Expand Up @@ -84,7 +84,7 @@ function cfg(key: string, fallback: string, axKey?: string): string {
}

// --- Config: explicit env > AX_CONFIG_FILE/local .ax/config.toml > .env fallback > defaults ---
const BASE_URL = cfg("AX_BASE_URL", "https://next.paxai.app", "base_url");
const BASE_URL = cfg("AX_BASE_URL", "https://paxai.app", "base_url");
const AGENT_NAME = cfg("AX_AGENT_NAME", "", "agent_name");
const AGENT_ID = cfg("AX_AGENT_ID", "", "agent_id");
const SPACE_ID = cfg("AX_SPACE_ID", "", "space_id");
Expand Down
4 changes: 2 additions & 2 deletions channel/skills/configure/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ Read `~/.claude/channels/ax-channel/.env` and show the user their current config

1. **Config** — `AX_CONFIG_FILE` or `AX_TOKEN_FILE`. Prefer `AX_CONFIG_FILE`
from `axctl token mint --save-to`.
2. **API URL** — `AX_BASE_URL` (default: `https://next.paxai.app`)
2. **API URL** — `AX_BASE_URL` (default: `https://paxai.app`)
3. **Agent** — `AX_AGENT_NAME` (who the channel listens as)
4. **Agent ID** — `AX_AGENT_ID` (for reply identity)
5. **Space** — `AX_SPACE_ID` (which space to bridge)
Expand Down Expand Up @@ -61,7 +61,7 @@ Update `AX_SPACE_ID` in `.env`.

### `url <base_url>` — set API URL

Update `AX_BASE_URL` in `.env`. Default is `https://next.paxai.app`.
Update `AX_BASE_URL` in `.env`. Default is `https://paxai.app`.

### `clear` — remove all config

Expand Down
4 changes: 2 additions & 2 deletions channel/test-channel.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ function liveEnv() {
return env;
}
env.AX_TOKEN_FILE = process.env.AX_TOKEN_FILE || `${homedir()}/.ax/user_token`;
env.AX_BASE_URL = process.env.AX_BASE_URL || 'https://next.paxai.app';
env.AX_BASE_URL = process.env.AX_BASE_URL || 'https://paxai.app';
env.AX_AGENT_NAME = process.env.AX_AGENT_NAME || 'test_echo';
env.AX_SPACE_ID = process.env.AX_SPACE_ID || '';
return env;
Expand All @@ -74,7 +74,7 @@ const config = {
...process.env,
// Use a fake token for protocol tests — SSE will fail but MCP works
AX_TOKEN: process.env.AX_TOKEN || 'test-token-for-protocol-only',
AX_BASE_URL: process.env.AX_BASE_URL || 'https://next.paxai.app',
AX_BASE_URL: process.env.AX_BASE_URL || 'https://paxai.app',
AX_AGENT_NAME: process.env.AX_AGENT_NAME || 'test_agent',
AX_SPACE_ID: process.env.AX_SPACE_ID || 'test-space',
}
Expand Down
2 changes: 1 addition & 1 deletion channel/test-headless-mcp.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ if (!configPath) {
}

const config = parseFlatToml(readFileSync(expandHome(configPath), "utf-8"));
const baseUrl = process.env.AX_BASE_URL || config.base_url || "https://next.paxai.app";
const baseUrl = process.env.AX_BASE_URL || config.base_url || "https://paxai.app";
const agentName = process.env.AX_AGENT_NAME || config.agent_name;
const agentId = process.env.AX_AGENT_ID || config.agent_id;
const spaceId = process.env.AX_SPACE_ID || config.space_id;
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ dependencies = [
]

[project.urls]
Homepage = "https://next.paxai.app"
Homepage = "https://paxai.app"
Repository = "https://github.com/ax-platform/ax-cli"
Documentation = "https://github.com/ax-platform/ax-cli#readme"

Expand Down
2 changes: 1 addition & 1 deletion specs/RUNTIME-CONFIG-001/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ client can consume:

```toml
token_file = "/home/ax-agent/agents/orion/.ax/orion_token"
base_url = "https://next.paxai.app"
base_url = "https://paxai.app"
agent_name = "orion"
agent_id = "agent-uuid"
space_id = "optional-default-space-uuid"
Expand Down
10 changes: 5 additions & 5 deletions tests/test_auth_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def fake_login_user(token, *, base_url, agent, space_id, env_name):
"--token",
"axp_u_test.token",
"--url",
"https://next.paxai.app",
"https://paxai.app",
"--env",
"next",
"--agent",
Expand All @@ -46,7 +46,7 @@ def fake_login_user(token, *, base_url, agent, space_id, env_name):
assert result.exit_code == 0
assert called == {
"token": "axp_u_test.token",
"base_url": "https://next.paxai.app",
"base_url": "https://paxai.app",
"agent": "anvil",
"space_id": "space-123",
"env_name": "next",
Expand Down Expand Up @@ -75,7 +75,7 @@ def fake_login_user(token, *, base_url, agent, space_id, env_name):
assert result.exit_code == 0
assert called == {
"token": "axp_u_test.token",
"base_url": "https://next.paxai.app",
"base_url": "https://paxai.app",
"agent": None,
"space_id": None,
"env_name": None,
Expand Down Expand Up @@ -136,7 +136,7 @@ def __init__(self, base_url, token):
self.token = token

def get_token(self, token_class, *, scope, force_refresh):
assert self.base_url == "https://next.paxai.app"
assert self.base_url == "https://paxai.app"
assert self.token == "axp_u_new.secret"
assert token_class == "user_access"
assert scope == "messages tasks context agents spaces search"
Expand Down Expand Up @@ -174,7 +174,7 @@ def list_agents(self):
user_cfg = tomllib.loads((config_dir.parent / "_global_config" / "user.toml").read_text())
assert user_cfg == {
"token": "axp_u_new.secret",
"base_url": "https://next.paxai.app",
"base_url": "https://paxai.app",
"principal_type": "user",
"space_id": "space-current",
}
Expand Down
4 changes: 2 additions & 2 deletions tests/test_bootstrap_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ def get(self, url, params=None, headers=None, **kw):


class _FakeClient:
base_url = "https://next.paxai.app"
base_url = "https://paxai.app"

def __init__(self, http: _FakeHttp):
self._http = http
Expand Down Expand Up @@ -129,7 +129,7 @@ def user_pat(monkeypatch):
monkeypatch.setattr(
bootstrap_cmd, "resolve_user_token", lambda: "axp_u_test1234567890abcd.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
)
monkeypatch.setattr(bootstrap_cmd, "resolve_user_base_url", lambda: "https://next.paxai.app")
monkeypatch.setattr(bootstrap_cmd, "resolve_user_base_url", lambda: "https://paxai.app")
monkeypatch.setattr(bootstrap_cmd, "_resolve_user_env", lambda: "default")
monkeypatch.setattr(bootstrap_cmd, "_user_config_path", lambda: Path("/tmp/nope-not-real.toml"))

Expand Down
24 changes: 12 additions & 12 deletions tests/test_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def _write_active_profile(global_dir: Path, *, name: str = "next-orion") -> Path
token_file.write_text("axp_a_agent.secret")
(global_dir / "profiles" / ".active").write_text(f"{name}\n")
(global_dir / "profiles" / name / "profile.toml").write_text(
f'base_url = "https://next.paxai.app"\n'
f'base_url = "https://paxai.app"\n'
f'agent_name = "orion"\n'
f'agent_id = "agent-orion"\n'
f'space_id = "next-space"\n'
Expand Down Expand Up @@ -132,7 +132,7 @@ def test_ax_config_file_overrides_local_runtime_config(self, tmp_path, monkeypat
runtime_config = runtime_dir / "config.toml"
runtime_config.write_text(
f'token_file = "{token_file.name}"\n'
'base_url = "https://next.paxai.app"\n'
'base_url = "https://paxai.app"\n'
'agent_name = "orion"\n'
'agent_id = "agent-orion"\n'
'space_id = "space-next"\n'
Expand All @@ -143,7 +143,7 @@ def test_ax_config_file_overrides_local_runtime_config(self, tmp_path, monkeypat
cfg = _load_config()

assert cfg["token"] == "axp_a_runtime.secret"
assert cfg["base_url"] == "https://next.paxai.app"
assert cfg["base_url"] == "https://paxai.app"
assert cfg["agent_name"] == "orion"
assert cfg["agent_id"] == "agent-orion"
assert cfg["space_id"] == "space-next"
Expand All @@ -156,7 +156,7 @@ def test_user_login_config_is_fallback_without_local_config(self, tmp_path, monk
_save_user_config(
{
"token": "axp_u_user.secret",
"base_url": "https://next.paxai.app",
"base_url": "https://paxai.app",
"principal_type": "user",
}
)
Expand All @@ -176,15 +176,15 @@ def test_local_agent_config_overrides_user_login_principal(self, tmp_path, monke
_save_user_config(
{
"token": "axp_u_user.secret",
"base_url": "https://next.paxai.app",
"base_url": "https://paxai.app",
"principal_type": "user",
}
)
local_ax = tmp_path / ".ax"
local_ax.mkdir()
(local_ax / "config.toml").write_text(
'token = "axp_a_agent.secret"\n'
'base_url = "https://next.paxai.app"\n'
'base_url = "https://paxai.app"\n'
'agent_name = "orion"\n'
'agent_id = "agent-orion"\n'
)
Expand All @@ -209,7 +209,7 @@ def test_unsafe_local_user_pat_agent_config_does_not_override_active_profile(
token_file.write_text("axp_a_agent.secret")
(global_dir / "profiles" / ".active").write_text("next-orion\n")
(global_dir / "profiles" / "next-orion" / "profile.toml").write_text(
f'base_url = "https://next.paxai.app"\n'
f'base_url = "https://paxai.app"\n'
f'agent_name = "orion"\n'
f'agent_id = "agent-orion"\n'
f'space_id = "next-space"\n'
Expand All @@ -230,7 +230,7 @@ def test_unsafe_local_user_pat_agent_config_does_not_override_active_profile(
cfg = _load_config()

assert cfg["token"] == "axp_a_agent.secret"
assert cfg["base_url"] == "https://next.paxai.app"
assert cfg["base_url"] == "https://paxai.app"
assert cfg["agent_name"] == "orion"
assert cfg["agent_id"] == "agent-orion"
assert cfg["space_id"] == "next-space"
Expand Down Expand Up @@ -300,7 +300,7 @@ def test_default_env_alias_reports_default_user_login(self, tmp_path, monkeypatc
_save_user_config(
{
"token": "axp_u_next.secret",
"base_url": "https://next.paxai.app",
"base_url": "https://paxai.app",
"principal_type": "user",
"space_id": "next-space",
},
Expand All @@ -313,7 +313,7 @@ def test_default_env_alias_reports_default_user_login(self, tmp_path, monkeypatc
assert diagnostic["ok"] is True
assert diagnostic["selected_env"] == "default"
assert diagnostic["effective"]["auth_source"] == "user_login:default"
assert diagnostic["effective"]["base_url"] == "https://next.paxai.app"
assert diagnostic["effective"]["base_url"] == "https://paxai.app"
assert diagnostic["effective"]["space_id"] == "next-space"
assert diagnostic["effective"]["principal_intent"] == "user"

Expand Down Expand Up @@ -479,7 +479,7 @@ def test_resolve_user_token_uses_user_login_even_with_local_agent(self, tmp_path
_save_user_config(
{
"token": "axp_u_user.secret",
"base_url": "https://next.paxai.app",
"base_url": "https://paxai.app",
"principal_type": "user",
}
)
Expand All @@ -500,7 +500,7 @@ def test_named_user_env_selects_matching_user_login(self, tmp_path, monkeypatch)
_save_user_config(
{
"token": "axp_u_next.secret",
"base_url": "https://next.paxai.app",
"base_url": "https://paxai.app",
"principal_type": "user",
},
env_name="next",
Expand Down
10 changes: 5 additions & 5 deletions tests/test_context_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def test_context_download_uses_base_url_and_auth_headers(monkeypatch, tmp_path):
calls = {}

class FakeClient:
base_url = "https://next.paxai.app"
base_url = "https://paxai.app"

def get_context(self, key, *, space_id=None):
assert key == "image.png"
Expand Down Expand Up @@ -68,7 +68,7 @@ def get(self, url, params=None):
assert "Downloaded:" in result.output
assert "[green]" not in result.output
assert output.read_bytes() == b"png-bytes"
assert calls["url"] == "https://next.paxai.app/api/v1/uploads/files/image.png"
assert calls["url"] == "https://paxai.app/api/v1/uploads/files/image.png"
assert calls["params"] == {"space_id": "space-1"}
assert calls["headers"] == {
"Authorization": "Bearer exchanged.jwt",
Expand All @@ -81,7 +81,7 @@ def test_context_load_fetches_to_preview_cache(monkeypatch, tmp_path):
calls = {}

class FakeClient:
base_url = "https://next.paxai.app"
base_url = "https://paxai.app"

def get_context(self, key, *, space_id=None):
assert key == "upload-key"
Expand Down Expand Up @@ -142,15 +142,15 @@ def get(self, url, params=None):
preview_files = list(tmp_path.glob("*/image.png"))
assert len(preview_files) == 1
assert preview_files[0].read_bytes() == b"png-bytes"
assert calls["url"] == "https://next.paxai.app/api/v1/uploads/files/image.png"
assert calls["url"] == "https://paxai.app/api/v1/uploads/files/image.png"
assert calls["params"] == {"space_id": "space-1"}
assert calls["headers"] == {"Authorization": "Bearer exchanged.jwt"}
assert '"text_like": false' in result.output


def test_context_load_can_include_text_content(monkeypatch, tmp_path):
class FakeClient:
base_url = "https://next.paxai.app"
base_url = "https://paxai.app"

def get_context(self, key, *, space_id=None):
return {
Expand Down
Loading