193 Commits

Author SHA1 Message Date
R-M-Naveen 446717349a Merge pull request #56 from atxp-dev/naveen/agent-push-notifications
fix: update heartbeat instruction to /hooks/wake payload format
v1.23.2
2026-03-05 23:09:17 -06:00
R-M-Naveen 6fa6966f36 fix: update heartbeat instruction to /hooks/wake payload format
Send { text, mode } instead of { message, name } to match the
/hooks/wake endpoint which injects into the main session.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 22:59:58 -06:00
GitHub Action 2d6652aeaa bump version to 1.23.1 [skip ci] 2026-03-06 03:00:17 +00:00
R-M-Naveen 417e2a814a Merge pull request #55 from atxp-dev/naveen/agent-push-notifications
fix(atxp): send account_id for notification matching, fix heartbeat p…
v1.23.1
2026-03-05 20:57:17 -06:00
R-M-Naveen 465c908647 refactor(atxp): rename email_user_id to account_id in notifications request
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 18:04:01 -06:00
R-M-Naveen 95694c9f61 fix(atxp): send account_id for notification matching, fix heartbeat payload
- 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>
2026-03-05 17:53:24 -06:00
GitHub Action 7b94def4db bump version to 1.23.0 [skip ci] 2026-03-05 18:18:15 +00:00
R-M-Naveen 5a20b5f297 Merge pull request #54 from atxp-dev/naveen/agent-push-notifications
Naveen/agent push notifications
v1.23.0
2026-03-05 10:31:51 -06:00
R-M-Naveen d71050e3a9 fix(atxp): remove unused PhoneOptions and ContactsOptions type imports
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 10:29:13 -06:00
R-M-Naveen c25821db35 fix(atxp): help text says 'enable' not 'manage' for notifications
Only the enable subcommand exists, so don't imply broader management.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 10:22:28 -06:00
R-M-Naveen 043ba5df85 fix(atxp): log non-OK heartbeat response, guard eventTypes, type response
- 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>
2026-03-05 10:17:28 -06:00
R-M-Naveen 6805b57c47 fix(atxp): scope login hint to 401, show status codes, guard res.json
- 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>
2026-03-05 10:12:50 -06:00
R-M-Naveen ab74f76ecd fix(atxp): restore 401-specific error in whoami, add trust boundary doc
- 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>
2026-03-05 10:07:21 -06:00
R-M-Naveen e859d4eedf fix(atxp): use es module import for os to fix lint error
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 10:00:44 -06:00
R-M-Naveen c56d4bba25 fix(atxp): address code review feedback on notifications
- 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>
2026-03-05 09:58:10 -06:00
R-M-Naveen 2a3addf0d9 refactor(atxp): rename webhook.ts to notifications.ts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 09:56:31 -06:00
R-M-Naveen 080b17ffa0 refactor(atxp): strip dead notification commands, improve error msg
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>
2026-03-05 09:53:09 -06:00
R-M-Naveen 4771d9d528 chore: remove unsupported notification commands from help and SKILL.md
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>
2026-03-05 09:44:20 -06:00
R-M-Naveen 66b5f581ad chore: fix package-lock.json peer dep changes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 09:39:53 -06:00
R-M-Naveen 92e5e6cc09 feat(atxp): pass email_user_id during notifications enable
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>
2026-03-05 08:50:14 -06:00
R-M-Naveen 3445df30f0 fix(atxp): fall back to os.hostname() for machine ID detection
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>
2026-03-04 20:24:10 -06:00
R-M-Naveen 87ca4709fa feat(atxp): add notifications command with machine-ID based auth
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>
2026-03-04 20:14:42 -06:00
GitHub Action 9ad73a748a bump version to 1.22.1 [skip ci] 2026-03-03 18:29:26 +00:00
David Noël-Romas ecbcd1a944 fix(atxp): pass -y to skills add command to skip interactive prompts
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>
v1.22.1
2026-03-03 12:28:40 -06:00
GitHub Action c919848ee2 bump version to 1.22.0 [skip ci] 2026-03-03 15:52:00 +00:00
David Noël-Romas 3d1cd2d212 fix(atxp): remove shell sourcing dependency for OpenClaw compatibility
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>
v1.22.0
2026-03-03 09:51:19 -06:00
David Noël-Romas 2b7c424f6b fix(atxp): fix misleading <n> param for claim-username in SKILL.md
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>
2026-03-02 21:33:17 -06:00
GitHub Action 1c28a7e7c5 bump version to 1.21.2 [skip ci] 2026-03-02 22:23:38 +00:00
David Noël-Romas 4ceb47036b fix(atxp): pass -y to npx skills to skip interactive prompt
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v1.21.2
2026-03-02 16:22:57 -06:00
GitHub Action 5fe2ce86c8 bump version to 1.21.1 [skip ci] 2026-02-25 23:12:02 +00:00
R-M-Naveen fc795ac857 chore: add mcpName for official MCP registry publishing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v1.21.1
2026-02-25 17:07:06 -06:00
GitHub Action 5b0444adf5 bump version to 1.21.0 [skip ci] 2026-02-25 19:29:52 +00:00
R-M-Naveen 7e3f973592 fix(atxp): replace no-explicit-any with Record<string, unknown> in polling
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v1.21.0
2026-02-25 13:27:30 -06:00
R-M-Naveen 51771ce54d Merge pull request #53 from atxp-dev/naveen/agent-register-cli-added
fix(skill): replace all topup references with fund in SKILL.md
2026-02-25 13:24:57 -06:00
R-M-Naveen fde24b0fd4 fix(skill): replace all topup references with fund in SKILL.md
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>
2026-02-25 13:23:39 -06:00
GitHub Action 54798f3f13 bump version to 1.20.0 [skip ci] 2026-02-25 18:02:10 +00:00
David Noël-Romas 3464db95c2 feat(atxp): use async polling for image, music, and video generation
Switch from synchronous blocking MCP calls to async initiate+poll
pattern for slow generation tools, avoiding timeout issues and showing
a spinner during generation.

- image: image_create_image_async + image_get_image_async (3s poll)
- music: music_create_async + music_get_async (5s poll)
- video: create_video + wait_for_video (10s poll)
- Extract getClient() and extractResult() from call-tool.ts for reuse

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v1.20.0
2026-02-25 12:01:23 -06:00
GitHub Action 8d80edfe92 bump version to 1.19.2 [skip ci] 2026-02-25 04:30:15 +00:00
R-M-Naveen b6df0ff2ec Merge pull request #52 from atxp-dev/naveen/agent-register-cli-added
feat(atxp): add X-ATXP-Client header to agent registration requests
v1.19.2
2026-02-24 22:25:56 -06:00
R-M-Naveen 029cf85707 fix(atxp): read X-ATXP-Client version from package.json, add to list endpoint
- 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>
2026-02-24 22:22:03 -06:00
R-M-Naveen 4aae0d649e feat(atxp): add X-ATXP-Client header to agent registration requests
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>
2026-02-24 22:14:49 -06:00
GitHub Action 60a0b9ec26 bump version to 1.19.1 [skip ci] 2026-02-24 17:58:39 +00:00
David Noël-Romas 80416f31f8 fix(atxp): pass userPrompt parameter to video MCP tool
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>
v1.19.1
2026-02-24 11:57:25 -06:00
GitHub Action 214073cb65 bump version to 1.19.0 [skip ci] 2026-02-24 17:50:34 +00:00
R-M-Naveen bad0065c87 Merge pull request #51 from atxp-dev/naveen/agent-register-cli-added
feat(atxp): require device context for agent registration and creation
v1.19.0
2026-02-24 11:45:59 -06:00
R-M-Naveen b8c0a90bc6 feat(atxp): require device context for agent registration and creation
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>
2026-02-24 11:40:56 -06:00
GitHub Action ac4625bbf3 bump version to 1.18.0 [skip ci] 2026-02-24 17:20:41 +00:00
David Noël-Romas e0e04e11e8 feat(atxp): add contacts command and phone filter options
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>
v1.18.0
2026-02-24 11:19:27 -06:00
GitHub Action 3ad158c5c5 bump version to 1.17.0 [skip ci] 2026-02-24 16:19:04 +00:00
David Noël-Romas 760b5690ad feat(atxp): show registered phone number in whoami output
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>
v1.17.0
2026-02-24 10:17:39 -06:00