84 Commits

Author SHA1 Message Date
David Noël-Romas 7f86b2163b feat: Display agent email address in read and send responses
The email MCP server now returns inboxAddress in every response.
Updated readMessage and sendEmail to display this information.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v1.8.2
2026-02-01 00:20:41 -06:00
GitHub Action 13e981d6c1 bump version to 1.8.1 [skip ci] 2026-01-31 08:25:43 +00:00
David Noël-Romas 674056d6d1 feat: Add email read command for fetching full message content
- Add `npx atxp email read <messageId>` command to read full message body
- Update inbox display to show message IDs
- Integrate with new `email_get_message` MCP tool
- Update skill documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v1.8.1
2026-01-31 02:25:05 -06:00
GitHub Action a28b673bf8 bump version to 1.8.0 [skip ci] 2026-01-31 08:08:06 +00:00
David Noël-Romas 52cc48fb19 feat: Add email service support to CLI
- Add `npx atxp email inbox` command to check inbox (free)
- Add `npx atxp email send` command with --to, --subject, --body options ($0.01/email)
- Integrate with email.mcp.atxp.ai MCP server
- Update help to include email commands
- Update atxp skill documentation with email usage

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v1.8.0
2026-01-31 02:06:51 -06:00
GitHub Action bae8f11b94 bump version to 1.7.0 [skip ci] 2026-01-28 21:38:12 +00:00
emilioacc 64a15133fe feat: Add worker info command to display worker details (#31)
* feat: Add worker info command to display worker details

- Add workerInfoCommand() function that calls get_worker_info tool
- Display worker name, URL, creation/modification timestamps
- Format bindings output: databases, storage, analytics, env vars, secrets
- Add 'info' case to handleWorkerCommand() switch
- Update help text and error messages to include info command

ATXP-1430

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* chore: trigger CI

* test: add tests for workerInfoCommand

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: correct process.exit mocking in workerInfoCommand tests

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* chore: trigger CI

* chore: trigger CI build

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
v1.7.0
2026-01-28 16:36:24 -05:00
emilioacc 39b440334b feat: Add comprehensive tests for env vars and secrets (ATXP-1436) (#36)
- Add unit tests for parseEnvArg(), parseEnvFile(), validateEnvVarName()
- Add tests for SENSITIVE_PATTERNS and getReservedEnvNames()
- Add tests for --env flag precedence over --env-file
- Add tests for sensitive pattern warnings
- Create secrets.test.ts with tests for parseKeyValue(), isValidSecretKey()
- Add tests for secretsSetCommand, secretsListCommand, secretsDeleteCommand
- Export helper functions for direct unit testing

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 16:22:54 -05:00
emilioacc 049d5ede0e feat(paas): add real-time log streaming with --follow flag (#34)
Add --follow (-f) flag to `npx atxp paas worker logs` command for
continuous log streaming via client-side polling.

Features:
- Stream logs continuously with Ctrl+C to stop
- Configurable polling interval via --interval flag (default: 2000ms)
- Color-coded log output by level (error, warn, info, debug)
- Deduplication to prevent duplicate log entries
- Automatic retry logic (3 attempts with 5s delay)
- Memory-bounded deduplication set (max 10k entries)
- Works with existing filters (--level, --since)

Usage:
  npx atxp paas worker logs my-api --follow
  npx atxp paas worker logs my-api -f --interval 500
  npx atxp paas worker logs my-api --follow --level error

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 16:00:21 -05:00
emilioacc 0c42583cf4 feat(cli): make OAuth debug logs opt-in via --verbose flag (#35)
Suppress [atxp] OAuth debug logs by default. Enable them via:
- --verbose or -v flag
- DEBUG=atxp, DEBUG=1, or DEBUG=true environment variable

Changes:
- Add verbose.ts utility with isVerboseMode() and getCliLogger()
- Update atxpClient() to use LogLevel.WARN by default
- Add Global Options section to help output
- Add unit tests for verbose mode detection

Fixes: ATXP-1428

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 15:56:50 -05:00
emilioacc 9929d0b00a feat(paas): implement consistent --help at all PAAS command levels (#33)
* feat(paas): implement consistent --help at all PAAS command levels

- Stop global --help interception for paas commands in index.ts
- Create centralized help registry with data-driven definitions in help.ts
- Handle --help at category, command, and subcommand levels
- Add CI test coverage to ensure help documentation for all commands

Closes ATXP-1426

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(paas): fix test to handle multi-word related commands

Use replaceAll instead of replace to convert all spaces to dots
for nested commands like "dns record create" -> "dns.record.create"

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 13:05:14 -05:00
emilioacc 0e1114c5a9 feat(cli): cache OAuth tokens between CLI invocations (#32)
Add FileOAuthDb class that persists OAuth tokens to disk at
~/.atxp/oauth-cache.json. This eliminates the need for a fresh
OAuth flow on every paas command.

- Create FileOAuthDb implementing OAuthDb interface
- Store tokens with 0o600 permissions (owner read/write only)
- Check token expiration on retrieval
- Add unit tests for token persistence and expiration

Fixes ATXP-1427

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 12:59:08 -05:00
emilioacc 9345d02d0f feat(paas): add analytics list and schema commands (#30)
* feat(paas): add analytics list and schema commands

Add two new CLI commands for analytics:
- `npx atxp paas analytics list` - List all available analytics datasets
- `npx atxp paas analytics schema <dataset>` - Show column names for a dataset

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* test: add integration tests for analytics list and schema commands

- Update analytics subcommands list to include 'list' and 'schema'
- Add test for parsing analytics schema dataset argument
- Add test for identifying analytics list command

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 12:51:25 -05:00
GitHub Action 0fc9bf74a7 bump version to 1.6.0 [skip ci] 2026-01-28 17:35:21 +00:00
emilioacc a40a518b3d feat(paas): add secrets management CLI commands (#29)
Add CLI commands for managing encrypted worker secrets:
- npx atxp paas secrets set <worker> KEY=VALUE
- npx atxp paas secrets list <worker>
- npx atxp paas secrets delete <worker> <key>

Secrets are encrypted at rest and update immediately without redeployment.
Secret keys must be UPPER_SNAKE_CASE (e.g., API_KEY, DATABASE_URL).

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
v1.6.0
2026-01-28 12:22:05 -05:00
emilioacc 98455843b6 feat(paas): allow configurable Analytics Engine binding name (#28)
* feat(paas): allow configurable Analytics Engine binding name

- Update --enable-analytics to accept optional binding name
- Default to 'ANALYTICS' when no name is specified
- Dynamically update reserved env var names based on binding name
- Update help text to document new [NAME] syntax

Closes ATXP-1423

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* test: add tests for custom analytics binding name

- Test custom binding name passed to enable_analytics
- Test reserved env var validation with default ANALYTICS binding
- Test reserved env var validation with custom binding name
- Test that ANALYTICS env var is allowed when using different custom binding

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Emilio Amaya <emilioamaya99@gmail.com>
2026-01-28 10:51:59 -05:00
GitHub Action c1496c1399 bump version to 1.5.0 [skip ci] 2026-01-28 15:37:03 +00:00
emilioacc 44e20ca116 feat(paas): add --env and --env-file flags for worker deploy (#27)
Add support for setting environment variables when deploying workers:
- --env KEY=VALUE flag (repeatable) for individual env vars
- --env-file <path> flag to load from a .env file
- --env takes precedence over --env-file for duplicate keys
- Validation for reserved names (DB, BUCKET, ANALYTICS, USER_NAMESPACE)
- Warning for sensitive-looking variables (SECRET, PASSWORD, KEY, etc.)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
v1.5.0
2026-01-28 10:31:28 -05:00
emilioacc 3e475e613a docs(analytics): Update CLI help text for query command (#26)
Add notes explaining:
- Use "analytics_data" as table name (auto-replaced)
- Time filtering is applied automatically unless query has "timestamp"

Related to ATXP-1424

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 10:13:34 -05:00
GitHub Action 6f9c2b4665 bump version to 1.4.0 [skip ci] 2026-01-27 23:13:07 +00:00
emilioacc 1cc01c88ae feat: add PAAS CLI commands for workers, databases, storage, DNS, and analytics (#25)
Add 24 PAAS tools from paas.mcp.atxp.ai under the `atxp paas` namespace:

Worker commands:
- atxp paas worker deploy/list/logs/delete

Database commands:
- atxp paas db create/list/query/delete

Storage commands:
- atxp paas storage create/list/upload/download/files/delete-bucket/delete-file

DNS commands:
- atxp paas dns add/list/record create/list/delete/connect

Analytics commands:
- atxp paas analytics query/events/stats

Includes comprehensive tests for all commands (59 new tests).

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
v1.4.0
2026-01-27 18:11:26 -05:00
GitHub Action 4329ee50d3 bump version to 1.3.1 [skip ci] 2026-01-27 22:10:16 +00:00
emilioacc fc129ab16e Simplify PaaS section in atxp SKILL.md (#24)
Remove detailed tool enumeration to avoid sync issues with atxp-paas skill.
Use generic terminology instead of Cloudflare-specific references.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
v1.3.1
2026-01-27 17:09:24 -05:00
Emilio Amaya 0d38ab92c1 docs: add CLAUDE.md with release process guidelines 2026-01-27 16:35:04 -05:00
GitHub Action 9b9be3fe42 bump version to 1.3.0 [skip ci] 2026-01-27 21:33:36 +00:00
emilioacc 83d7a4c7ae feat: include atxp-paas tools in atxp skill (#23)
* feat: include atxp-paas tools in atxp skill

- Add PaaS section to SKILL.md with Workers, D1, and R2 tool documentation
- Add paas.mcp.atxp.ai to MCP Servers table
- Update description to include cloud deployment capabilities
- Bump version to 1.3.0 (minor release for new feature)

Fixes ATXP-1418

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* chore: update package-lock.json after version bump

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
v1.3.0
2026-01-27 16:31:53 -05:00
GitHub Action c5fb991134 bump version to 1.2.7 [skip ci] 2026-01-27 15:57:42 +00:00
emilioacc 2eaa4182a7 feat: auto-update shell profile on login and read config file directly (#22)
- Add config.ts with centralized config handling:
  - getConnection() checks env var first, falls back to ~/.atxp/config
  - saveConnection() writes connection string to config file
  - getShellProfile() detects user's shell profile path
  - updateShellProfile() adds source line to shell profile

- Update call-tool.ts to use getConnection() so CLI works even
  without ATXP_CONNECTION env var set (reads from config file)

- Update login.ts to auto-update shell profile after saving config,
  eliminating the need for users to manually edit their shell profile

This improves the login UX - users no longer need to manually update
their ~/.zshrc or ~/.bashrc after running `npx atxp login`.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
v1.2.7
2026-01-27 10:52:03 -05:00
GitHub Action c908827d52 bump version to 1.2.6 [skip ci] 2026-01-26 22:17:51 +00:00
emilioacc f4bf6f0610 fix: construct full URL when using --token for headless login (#21)
When using `npx atxp login --token <token>`, the raw token was saved
directly to the config file. However, the @atxp/client library expects
a full URL format with the connection_token parameter.

This caused "Invalid URL" errors when trying to use any ATXP tools
after headless login.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
v1.2.6
2026-01-26 17:03:39 -05:00
GitHub Action 9a91659dc3 bump version to 1.2.5 [skip ci] 2026-01-26 21:04:30 +00:00
Emilio Amaya e72fd06a55 fix: sync package-lock.json v1.2.5 2026-01-26 16:03:47 -05:00
Emilio Amaya 17be61fc80 fix: reset atxp dependency to published version 2026-01-26 16:02:07 -05:00
Emilio Amaya 80ef032721 chore: remove duplicate publish workflow 2026-01-26 15:54:19 -05:00
GitHub Action fcf9c9f22c bump version to 1.2.4 [skip ci] 2026-01-26 20:52:38 +00:00
Emilio Amaya 8bf19e0e16 ci: trigger publish on GitHub release v1.2.4 2026-01-26 15:45:15 -05:00
Emilio Amaya 7c2eef00c0 ci: add manual trigger for publish workflow 2026-01-26 15:37:50 -05:00
Emilio Amaya aeb1b1cfcb chore: trigger publish [skip ci] 2026-01-26 15:37:39 -05:00
Emilio Amaya 1927b96fd2 ci: add npm publish workflow 2026-01-26 15:37:31 -05:00
Emilio Amaya 0c39069e7d bump version to 1.2.3 [skip ci] 2026-01-26 15:36:51 -05:00
emilioacc da3e4fa083 feat: add QR code fallback for login (#20)
- Add --qr flag for explicit QR code login
- Detect headless environments (SSH, Docker, CI, no DISPLAY) and auto-fallback to QR
- Try browser first, fall back to QR if browser fails to open
- Add qrcode-terminal dependency for terminal QR rendering

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 15:34:15 -05:00
emilioacc ba4eef2c42 feat: add --token flag for headless login (#19)
Add --token (-t) option to the login command to support headless
authentication in CI/CD and automated testing environments.

Usage: npx atxp login --token $ATXP_CONNECTION_TOKEN

This allows users to provide a connection token directly without
needing browser-based OAuth flow.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 15:04:30 -05:00
GitHub Action 834f14f7cc bump version to 1.2.2 [skip ci] 2026-01-26 19:07:13 +00:00
emilioacc 7df2a1b9ca feat: browser-based login with localhost callback (#18)
Replace manual connection string entry with OAuth-style browser login:
- CLI starts localhost server on random port
- Opens browser to accounts.atxp.ai with cli_redirect param
- Receives connection string via localhost callback
- Saves to ~/.atxp/config

Same pattern as Claude Code uses for authentication.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
v1.2.2
2026-01-26 14:06:21 -05:00
emilioacc e1102aced4 Add Agent Skill documentation to README (#17)
Documents the ATXP skill installation and capabilities for AI assistants.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 13:53:30 -05:00
emilioacc 392cf42f49 Add ATXP Agent Skill for Claude Code (#16)
Implements skill following Anthropic's Agent Skills standard for teaching
AI assistants how to use ATXP tools (search, image, music, video, x).

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 13:49:02 -05:00
GitHub Action d073065ec9 bump version to 1.2.1 [skip ci] 2026-01-26 16:52:11 +00:00
emilioacc 11ac95dd38 Fix tool names for MCP servers (#15)
- search.mcp.atxp.ai: search -> search_search
- image.mcp.atxp.ai: generate_image -> image_create_image
- music.mcp.atxp.ai: generate_music -> music_create
- video.mcp.atxp.ai: generate_video -> create_video

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
v1.2.1
2026-01-26 11:51:19 -05:00
GitHub Action f4f1608966 bump version to 1.2.0 [skip ci] 2026-01-26 16:40:20 +00:00
emilioacc d7a81272a0 Update README with new tool commands (#14)
- Add login command documentation
- Add tool commands (search, image, music, video, x)
- Update demo/create to use dev subcommand
- Reorganize structure to match new CLI

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
v1.2.0
2026-01-26 11:39:18 -05:00