- Use accountId directly instead of stripping email prefix, so
notifications match on atxp_acct_* rather than agent_* identities
- Fix heartbeat instruction: use 'message' field (not 'text'),
reference /hooks/agent endpoint, add sender name
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- sendHeartbeatInstruction now warns on non-OK responses instead of
silently treating them as success
- Guard webhook.eventTypes with optional chaining to prevent TypeError
- Replace Record<string, unknown> casts with typed EnableResponse interface
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Only show "try logging in again" for 401, not network errors
- Show HTTP status code for non-401 failures, "network error" otherwise
- Guard res.json() with .catch() for non-JSON responses
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add fetchAccountInfo() that returns HTTP status on failure so
whoamiCommand can distinguish 401 from other errors
- Keep getAccountInfo() as simple null-returning wrapper for callers
that don't need status details (e.g. notifications getEmailUserId)
- Document sendHeartbeatInstruction trust boundary for maintainers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- getMachineId: only fall back to hostname if it matches Fly machine
ID pattern (hex, 10+ chars), preventing accidental registration
from developer machines
- Validate API response shape before accessing nested properties
- Remove unused positionalArg parameter and 'add' alias
- Remove os import (now require'd inline in getMachineId)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove ~200 lines of non-functional code (list, remove, test,
re-enable, rotate-secret, failures, replay) that depend on broken
OAuth auth. Simplify help text to only show `enable`. Improve
whoami error message to mention token may be invalid/expired.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Only `notifications enable` works currently. The other commands
(list, remove, test, re-enable, rotate-secret, failures, replay)
require OAuth auth that isn't wired up yet.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extract getAccountInfo() as shared export from whoami.ts and use it
in webhook.ts to resolve the email local part (e.g. agent_xyz) for
cross-system event matching between email-mcp and atxp account IDs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fly sets FLY_MACHINE_ID on the VM but nested shells may not inherit it.
The hostname is also set to the machine ID, so use it as fallback.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Simplified flow: CLI posts machine_id to /notifications/enable,
no OAuth required. Includes enable, list, remove, test, re-enable,
rotate-secret, failures, and replay subcommands.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The previous fix only passed -y to npx (to auto-install the skills
package) but not to the skills add command itself, which has its own
interactive confirmation prompts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
OpenClaw's exec tool in allowlist mode blocks shell builtins like
`source` and command substitution `$()`. The CLI already reads
credentials from ~/.atxp/config directly via getConnection() — this
commit removes the shell-sourcing path entirely:
- Config format changed from `export ATXP_CONNECTION="value"` to plain
`ATXP_CONNECTION=value` (backward-compatible regex parses both)
- Deleted getShellProfile() and updateShellProfile() — no more shell
profile modification on login
- Login output now says "npx atxp whoami" instead of "source ~/.atxp/config"
- SKILL.md: removed grep/cut/source patterns, added OpenClaw Integration section
- README.md: replaced source instruction with whoami verification
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Agents couldn't find or use claim-username because the parameter was
documented as <n> (looks numeric) instead of <username>. Expanded the
description to explain what the command does and valid username format.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The topup command has been removed from the CLI. The fund command
now handles both Stripe payment links and USDC deposit addresses.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace hardcoded 'cli/1.19.1' with dynamic version from package.json
so the header stays in sync across releases
- Add X-ATXP-Client header to GET /agents (listAgents) for consistent
traffic attribution across all agent endpoints
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sends cli/1.19.1 identifier on POST /agents/register and POST /agents
so the server can distinguish CLI traffic from direct API bot calls.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The video MCP server expects `userPrompt` but the CLI was sending `prompt`,
causing the positional argument to arrive as undefined.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fail explicitly with error codes (E_REG_001, E_REG_002) and support
contact when device context is unavailable or the server rejects the
request, instead of silently omitting the context parameter.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add local contacts database (add/list/show/edit/remove/search) stored
in ~/.atxp/contacts.json with cloud push/pull backup. Add --unread-only
and --direction filters to phone sms/calls commands, and update
direction labels from inbound/outbound to incoming/sent.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fetches phone number from phone.mcp.atxp.ai in parallel with the
account info request and displays it when present.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* ci: add AI code review workflow
Adds a self-contained AI code review workflow using
anthropics/claude-code-action@v1. Reviews PR changes and posts
structured feedback. Self-contained because this repo is in a
different org from the reusable workflow.
Part of ATXP-1602.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* ci: trigger fresh workflow run with secret
* ci: re-trigger with API key
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Exposes phone.mcp.atxp.ai MCP server with 11 subcommands: register,
release, configure-voice, sms, read-sms, send-sms, get-attachment,
call, calls, read-call, and search. Updates skill documentation with
phone command reference, security boundaries, and pricing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>