feat: add npm package support with CLI entry point

This commit is contained in:
Badri Narayanan S
2025-12-26 00:17:12 +05:30
parent 4d0e42471a
commit 5b1340d228
4 changed files with 175 additions and 1 deletions

26
.github/workflows/publish.yml vendored Normal file
View File

@@ -0,0 +1,26 @@
name: Publish to npm
on:
release:
types: [published]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
registry-url: 'https://registry.npmjs.org'
- name: Install dependencies
run: npm ci
- name: Publish to npm
run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

21
.npmignore Normal file
View File

@@ -0,0 +1,21 @@
# Exclude tests
tests/
# Exclude GitHub workflows
.github/
# Exclude documentation (except README)
CLAUDE.md
CHANGELOG.md
CONTRIBUTING.md
docs/
# Exclude dev files
.env*
.claude/
.vscode/
.idea/
# Exclude misc
*.log
.DS_Store

109
bin/cli.js Executable file
View File

@@ -0,0 +1,109 @@
#!/usr/bin/env node
import { fileURLToPath } from 'url';
import { dirname, join } from 'path';
import { readFileSync } from 'fs';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
// Read package.json for version
const packageJson = JSON.parse(
readFileSync(join(__dirname, '..', 'package.json'), 'utf-8')
);
const args = process.argv.slice(2);
const command = args[0];
function showHelp() {
console.log(`
antigravity-proxy v${packageJson.version}
Proxy server for using Antigravity's Claude models with Claude Code CLI.
USAGE:
antigravity-proxy <command> [options]
COMMANDS:
start Start the proxy server (default port: 8080)
accounts Manage Google accounts (interactive)
accounts add Add a new Google account via OAuth
accounts list List all configured accounts
accounts remove Remove accounts interactively
accounts verify Verify account tokens are valid
accounts clear Remove all accounts
OPTIONS:
--help, -h Show this help message
--version, -v Show version number
ENVIRONMENT:
PORT Server port (default: 8080)
EXAMPLES:
antigravity-proxy start
PORT=3000 antigravity-proxy start
antigravity-proxy accounts add
antigravity-proxy accounts list
CONFIGURATION:
Claude Code CLI (~/.claude/settings.json):
{
"env": {
"ANTHROPIC_BASE_URL": "http://localhost:8080"
}
}
`);
}
function showVersion() {
console.log(packageJson.version);
}
async function main() {
// Handle flags
if (args.includes('--help') || args.includes('-h')) {
showHelp();
process.exit(0);
}
if (args.includes('--version') || args.includes('-v')) {
showVersion();
process.exit(0);
}
// Handle commands
switch (command) {
case 'start':
case undefined:
// Default to starting the server
await import('../src/index.js');
break;
case 'accounts': {
// Pass remaining args to accounts CLI
const subCommand = args[1] || 'add';
process.argv = ['node', 'accounts-cli.js', subCommand, ...args.slice(2)];
await import('../src/accounts-cli.js');
break;
}
case 'help':
showHelp();
break;
case 'version':
showVersion();
break;
default:
console.error(`Unknown command: ${command}`);
console.error('Run "antigravity-proxy --help" for usage information.');
process.exit(1);
}
}
main().catch((err) => {
console.error('Error:', err.message);
process.exit(1);
});

View File

@@ -4,6 +4,13 @@
"description": "Proxy server to use Antigravity's Claude models with Claude Code CLI", "description": "Proxy server to use Antigravity's Claude models with Claude Code CLI",
"main": "src/index.js", "main": "src/index.js",
"type": "module", "type": "module",
"bin": {
"antigravity-proxy": "bin/cli.js"
},
"files": [
"src",
"bin"
],
"scripts": { "scripts": {
"start": "node src/index.js", "start": "node src/index.js",
"dev": "node --watch src/index.js", "dev": "node --watch src/index.js",
@@ -27,8 +34,19 @@
"proxy", "proxy",
"vertex-ai" "vertex-ai"
], ],
"author": "", "author": "Badri Narayanan",
"license": "MIT", "license": "MIT",
"repository": {
"type": "git",
"url": "git+https://github.com/badri-s2001/antigravity_claude_server.git"
},
"homepage": "https://github.com/badri-s2001/antigravity_claude_server#readme",
"bugs": {
"url": "https://github.com/badri-s2001/antigravity_claude_server/issues"
},
"engines": {
"node": ">=18.0.0"
},
"dependencies": { "dependencies": {
"cors": "^2.8.5", "cors": "^2.8.5",
"express": "^4.18.2" "express": "^4.18.2"