Skip to content

Releases: Jhacarreiro/ai-server-commander

v1.0.9

Choose a tag to compare

@Jhacarreiro Jhacarreiro released this 22 Aug 15:40

What's Changed

  • fix: friendly message when the listen port is taken by @Zauberio in #54
  • fix: clear -32602 for array/primitive MCP tool arguments by @Zauberio in #49
  • fix: honor all query options as POST fallbacks, not just command by @Zauberio in #48
  • fix: accept UTF-8 BOM in config.json by @Zauberio in #37
  • fix: MCP conformance - server protocolVersion, empty-batch error by @Zauberio in #31
  • chore: remove dead api/firebase.js by @Zauberio in #24
  • fix: accept Authorization Bearer for MCP pre-shared token by @Zauberio in #15
  • fix: answer CORS preflights before auth so browser clients work by @Zauberio in #12
  • fix: return correct message class for 400 body-parse errors by @Zauberio in #10

New Contributors

Full Changelog: v1.0.8...v1.0.9

AI Server Commander v1.0.8

Choose a tag to compare

@Jhacarreiro Jhacarreiro released this 12 Jul 08:13
53eabbd

OAuth persistence

  • Persistent OAuth clients and token state through OAUTH_STATE_PATH
  • Atomic state replacement with mode 600
  • Client secrets, authorization codes, access tokens and refresh tokens stored only as SHA-256 hashes
  • Access and refresh tokens survive normal restarts
  • Refresh-token rotation and /oauth/revoke
  • Public PKCE and confidential-client compatibility
  • Fail-closed behavior for malformed or symlinked state
  • Exact loopback redirect validation

Dependency modernization

  • Removed LocalTunnel and its pinned vulnerable Axios chain
  • Removed Inquirer in favor of Node's built-in readline setup
  • Upgraded Firebase Admin to the latest Node 20-compatible v13 release
  • Reduced runtime audit from 15 findings / 3 high to 8 moderate / 0 high / 0 critical
  • CI now fails on high or critical runtime audit findings

Migration

  • Existing LocalTunnel users must move to a maintained reverse proxy or tunnel and set productionDomain
  • Deployments upgrading from v1.0.7 or earlier require one new MCP authorization because previous OAuth state was memory-only
  • Preserve the same OAUTH_STATE_PATH across future releases to retain client authorization

Validation

  • CI passed on Node 20 and Node 22
  • Clean install and full suite passed in the OpenClaw container
  • Clean install and full suite passed on the TOS host with Node 20
  • Restart, rotation, revocation, public-client, confidential-client, corrupted-state and raw-token persistence tests passed

AI Server Commander v1.0.7

Choose a tag to compare

@Jhacarreiro Jhacarreiro released this 12 Jul 01:32
1e38fd1

MCP and ChatGPT readiness

  • Adds a human-readable tool title and exact outputSchema
  • Adds accurate readOnlyHint, destructiveHint, openWorldHint and idempotentHint annotations
  • Declares OAuth security schemes with a compatibility mirror in _meta
  • Returns structuredContent while retaining the existing text content for Claude and older clients
  • Makes MCP identity, OAuth metadata and authorization copy deployment-neutral
  • Adds OAuth challenge and structured-result regression coverage

Open-source project readiness

  • Rewritten README with quick start, ChatGPT Action setup, MCP/OAuth setup, examples, configuration, safety model, testing and troubleshooting
  • New architecture and production deployment guides
  • New contribution, security, support, conduct and attribution files
  • CI for Node 20 and Node 22, Dependabot, issue forms, CODEOWNERS and PR template
  • Clean package metadata, config/environment examples and npm package hygiene
  • Removed tracked IDE, macOS and obsolete scratch artifacts

Validation

  • CI passed on Node 20 and Node 22
  • Full suite passed in a clean TOS/Node 20 installation
  • Markdown links, GitHub YAML, package contents and private deployment markers validated
  • Existing REST/OpenAPI and MCP input contracts remain compatible

AI Server Commander v1.0.6

Choose a tag to compare

@Jhacarreiro Jhacarreiro released this 11 Jul 16:14
5f1d6a2

Highlights

  • Shared bounded executor for REST and Claude/MCP
  • MCP multi-line script mode with timeout, output and SAFE_MODE parity
  • Per-command activity IDs and targeted interruption for concurrent commands
  • Strict working-directory validation and fixed GET execution options
  • Process-group termination for timeout/interruption on POSIX hosts
  • Safer config/error logging and request-size alignment
  • Compatible dependency refresh: 46 vulnerabilities / 4 critical reduced to 15 / 0 critical

See CHANGELOG.md for the full list and migration details.

v1.0.5

Choose a tag to compare

@Jhacarreiro Jhacarreiro released this 09 Jul 19:43

[1.0.5] - 2026-07-09

Added

  • Added bounded POST /api/runTerminalScript support for JSON command execution requests.
  • Added POST /v1/commands/execute as a versioned command execution endpoint with the same request/response contract.
  • Added mode: "script" for multi-line shell scripts, nested quoting, JSON/YAML edits and other commands that are fragile as one-line query strings.
  • Added executor, route and OpenAPI smoke tests covering legacy GET, POST inline mode, script mode, non-zero exit codes and timeout behavior.

Changed

  • Fixed first-run setup so the configured public server URL is saved in config.json.
  • Aligned package metadata with the MIT license file.
  • Centralized terminal execution through a bounded executor that preserves exit code, timeout state, output truncation metadata and notices.
  • Expanded the public OpenAPI schema with command request/response objects for GET, POST and versioned command execution.
  • Updated README command execution examples and safety notes for script mode and bounded execution.

Security

  • Script bodies are size-limited and executed through temporary files that are cleaned up after the command finishes.
  • Activity logging records command/script metadata such as hash, byte length and preview rather than storing full script bodies.
  • Command execution remains bounded by timeout and output-size limits.

v1.0.4

Choose a tag to compare

@Jhacarreiro Jhacarreiro released this 06 Jun 19:08
  • Repair main by merging the validated MCP/OAuth branch.\n- Replace the broken terminal handler from 46a98fe with a functional implementation.\n- Keep configurable MAX_OUTPUT_CHARS, COMMAND_TIMEOUT_MS and SAFE_MODE support.\n- Bump package version to 1.0.4.

v1.0.3

Choose a tag to compare

@Jhacarreiro Jhacarreiro released this 06 Jun 08:43
  • Add OAuth discovery, dynamic client registration, authorization code + PKCE, token and refresh token endpoints for Claude remote MCP.\n- Protect /mcp with OAuth Bearer tokens and advertise protected-resource metadata via WWW-Authenticate.\n- Keep legacy /api/runTerminalScript behaviour unchanged.\n- Add form-urlencoded parser required by OAuth token exchange.

v1.0.2

Choose a tag to compare

@Jhacarreiro Jhacarreiro released this 06 Jun 08:06
  • Add Streamable HTTP MCP endpoint at /mcp.\n- Expose run_terminal_command tool over MCP.\n- Allow /mcp authentication via query token while redacting token in auth logs.\n- Preserve existing /api/runTerminalScript GET and POST compatibility.

v1.0.1

Choose a tag to compare

@Jhacarreiro Jhacarreiro released this 06 Jun 07:22
  • Accept command from POST JSON body via command field.\n- Preserve existing GET/query-string command compatibility.\n- Bump package version to 1.0.1.

v1.0.0

Choose a tag to compare

@Jhacarreiro Jhacarreiro released this 05 Jun 23:26

Changes

  • Add POST support for /api/runTerminalScript while preserving the existing GET route.
  • This keeps the Custom GPT GET flow working and allows MCP-style web adapters to call the same terminal handler via POST.

Validation

  • node --check serverModules/apiRoutes.js
  • node --check api/terminal.js
  • git diff --check
  • Verified route registration includes both GET and POST for /api/runTerminalScript using terminalHandler.