67 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>
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>
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>
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>
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>
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>
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>
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
GitHub Action 9b9be3fe42 bump version to 1.3.0 [skip ci] 2026-01-27 21:33:36 +00: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>
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>
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 17be61fc80 fix: reset atxp dependency to published version 2026-01-26 16:02:07 -05:00
GitHub Action fcf9c9f22c bump version to 1.2.4 [skip ci] 2026-01-26 20:52:38 +00: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>
2026-01-26 14:06:21 -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>
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>
2026-01-26 11:39:18 -05:00
emilioacc 85f047f21e Add login and tool commands (search, image, music, video, x) (#13)
* Add login and tool commands (search, image, music, video, x)

- Add `login` command to save ATXP connection string to ~/.atxp/config
- Add tool commands that wrap @atxp/client:
  - `search <query>` - web search via search.mcp.atxp.ai
  - `image <prompt>` - image generation via image.mcp.atxp.ai
  - `music <prompt>` - music generation via music.mcp.atxp.ai
  - `video <prompt>` - video generation via video.mcp.atxp.ai
  - `x <query>` - X/Twitter search via x-live-search.mcp.atxp.ai
- Move demo and create commands under `dev` subcommand
- Maintain backwards compatibility for `npx atxp demo` and `npx atxp create`
- Update help text with new command structure

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

* Add and update tests for new tool commands

- Update index.test.ts with tests for dev subcommand and tool argument parsing
- Add login.test.ts for config file format and login options
- Add call-tool.test.ts for server mapping and result parsing
- Add commands/commands.test.ts for all tool commands (search, image, music, video, x)

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

* Fix lint errors

- Wrap case block in braces to fix no-case-declarations error in index.ts
- Remove unused fs import from login.test.ts

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

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 11:35:36 -05:00
GitHub Action 847477e508 bump version to 1.1.1 [skip ci] 2025-11-06 17:55:35 +00:00
zach wick 26f5ecc0fd Placeholder for mastra framework example
Signed-off-by: zach wick <zwick@novellum.ai>
2025-11-06 09:53:42 -08:00
GitHub Action f9ef2f7d70 bump version to 1.1.0 [skip ci] 2025-10-14 13:53:52 +00:00
Rob Di Marco bcc78d29b4 ATXP-407: Integrate Cloudflare Workers template into atxp create command (#11)
* ATXP-407: Integrate Cloudflare Workers template into atxp create command

Added support for creating projects with the Cloudflare Workers AI agent template alongside the existing Express template. Users can now choose between frameworks using the --framework flag.

Changes:
- Added 'cloudflare' as a new framework option
- Updated Framework type to include 'cloudflare'
- Added Cloudflare template configuration pointing to atxp-cloudflare-agent-example
- Updated README with cloudflare framework examples
- Added framework-specific installation instructions (npm install vs npm run install-all)
- Updated tests to validate both express and cloudflare frameworks
2025-10-13 17:03:15 -04:00
GitHub Action d789060490 bump version to 1.0.8 [skip ci] 2025-09-19 14:06:23 +00:00
Rob Di Marco dff18630b4 Fix bugs in create process 2025-09-19 10:05:17 -04:00
GitHub Action 557bd693c4 bump version to 1.0.7 [skip ci] 2025-09-19 13:59:54 +00:00
Rob Di Marco d52158d531 ATXP-266: Walk users through creating .env file when running atxp create (#10)
- Add interactive environment variable configuration during project creation
- Parse comments from env.example to use as variable descriptions
- Detect placeholder values (empty, your_, TODO, etc.) that need configuration
- Prompt users to configure each placeholder variable with helpful descriptions
- Allow users to skip configuration or set variables to empty strings
- Only show env reminders when .env file actually exists
2025-09-10 18:14:14 -04:00
GitHub Action 600b4bf572 bump version to 1.0.6 [skip ci] 2025-09-10 21:50:01 +00:00
Rob Di Marco 57d88541ba ATXP-242: Update templates in create-project.ts (#9)
Core Features

Updated template repository from atxp-express-example to atxp-express-starter
Added Framework type for type safety and extensibility
Changed createProject to require app name as first parameter (eliminates interactive prompt)
Added command line argument support for framework selection (--framework)
Added smart git initialization with --git and --no-git flags
Fixed help flag handling to show help instead of running commands

Wrapper Package Updates

Updated create-atxp wrapper to support new API
Fixed argument passing from npm create atxp to underlying atxp create command
2025-09-10 17:43:42 -04:00