{"_id":"@arinova-ai/creator-cli","_rev":"4-6b70a7eb12ed441c9b9b6811c32f13ef","name":"@arinova-ai/creator-cli","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"@arinova-ai/creator-cli","version":"0.0.1","_id":"@arinova-ai/creator-cli@0.0.1","maintainers":[{"name":"ripple0129","email":"ripple0129@gmail.com"}],"bin":{"arinova-cli":"dist/index.js"},"dist":{"shasum":"0a1b21caa9a94be21f7c421f19e0e04d7b36a55e","tarball":"https://registry.npmjs.org/@arinova-ai/creator-cli/-/creator-cli-0.0.1.tgz","fileCount":63,"integrity":"sha512-i4cWmScu3RxXuXRnfWjzkZNfSVu4ao6u0MaIDYnkJj+l5WgQ1YhRyQop0w/7Vc9TdyIJTor+7bsqKwJfcWXoQA==","signatures":[{"sig":"MEUCID6SseHqwEjiaR8mtpxY6JUXfU4CFupUfyUn46quahW4AiEAwbrbZzGYz3jxv+DaJuGceuiKdO46LZxtqZqo745knPU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":163334},"type":"module","gitHead":"d3ca5725be2bc597194136cb5dcf63f5f0d8dbd9","scripts":{"dev":"tsc --watch","lint":"tsc --noEmit","build":"tsc"},"_npmUser":{"name":"ripple0129","email":"ripple0129@gmail.com"},"_npmVersion":"11.8.0","directories":{},"_nodeVersion":"25.6.0","dependencies":{"commander":"^13","node-fetch":"^3"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"tmp":"tmp/creator-cli_0.0.1_1773751461362_0.35046089297895033","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@arinova-ai/creator-cli","version":"0.0.2","_id":"@arinova-ai/creator-cli@0.0.2","maintainers":[{"name":"ripple0129","email":"ripple0129@gmail.com"}],"bin":{"arinova-creator":"dist/index.js"},"dist":{"shasum":"249936a8943cd05b5e4f3bec67beb8fc6f4faf30","tarball":"https://registry.npmjs.org/@arinova-ai/creator-cli/-/creator-cli-0.0.2.tgz","fileCount":49,"integrity":"sha512-CRF1jdyy8Wd+aKyyMMz0RjnKHE/ijRsYUvRW8Xbio4jFKgMCkAf7hEGYZhA9nbrs4/orEr9aG6FNYZ8fqtX0Yw==","signatures":[{"sig":"MEUCIAgODvuQAEG0X2OQJus1wWJFg3dX7qr40SjIwRFzxp34AiEAvoP9LLMb1uZp3xvbOR4Pp7zfmIW7547yc9yC9E197BA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109740},"type":"module","gitHead":"d3ca5725be2bc597194136cb5dcf63f5f0d8dbd9","scripts":{"dev":"tsc --watch","lint":"tsc --noEmit","build":"tsc"},"_npmUser":{"name":"ripple0129","email":"ripple0129@gmail.com"},"_npmVersion":"11.8.0","directories":{},"_nodeVersion":"25.6.0","dependencies":{"commander":"^13","node-fetch":"^3"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"tmp":"tmp/creator-cli_0.0.2_1773751588961_0.0012102197542458448","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@arinova-ai/creator-cli","version":"0.0.3","_id":"@arinova-ai/creator-cli@0.0.3","maintainers":[{"name":"ripple0129","email":"ripple0129@gmail.com"}],"bin":{"arinova-creator":"dist/index.js"},"dist":{"shasum":"9e8457a0203fd5c9b1d1bcf47410231131b64665","tarball":"https://registry.npmjs.org/@arinova-ai/creator-cli/-/creator-cli-0.0.3.tgz","fileCount":50,"integrity":"sha512-tCsTUduPFwxFJsVw+tKmrbouVHHB580zvW4o515ZnRN8/+oU6z2xernKg7yjB8E2NeLgA3bwIhZjqcD5tFj1Sw==","signatures":[{"sig":"MEUCIQCmaGkhyBfx3sutYzX3+Vye210yEEQsuKak4zvolNTHggIgLqaRNhcZuPCu1UgKDi8X3SuS60DMiHKfonvNrS7iLvU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114091},"type":"module","gitHead":"8a50d855593b2364c27ecb610c7e75b6b5900d16","scripts":{"dev":"tsc --watch","lint":"tsc --noEmit","build":"tsc"},"_npmUser":{"name":"ripple0129","email":"ripple0129@gmail.com"},"_npmVersion":"11.8.0","description":"Command-line tool for managing Arinova Creator resources.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"commander":"^13","node-fetch":"^3"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"tmp":"tmp/creator-cli_0.0.3_1773764911583_0.06310716997910348","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@arinova-ai/creator-cli","version":"0.0.4","type":"module","bin":{"arinova-creator":"dist/index.js"},"scripts":{"build":"tsc","dev":"tsc --watch","lint":"tsc --noEmit"},"dependencies":{"commander":"^13","node-fetch":"^3"},"devDependencies":{"typescript":"^5","@types/node":"^22"},"gitHead":"df1e4ec0fbf781c8a7df2b54daa292b25d88ee50","_id":"@arinova-ai/creator-cli@0.0.4","description":"Command-line tool for managing Arinova Creator resources.","_nodeVersion":"25.6.0","_npmVersion":"11.8.0","dist":{"integrity":"sha512-ajfoSBQ4f0DWmK0s6BXsby3CNBCue5NIoidsggL0+uLaUsMVduPhVHYZU6T5i2f23Q15z4qT0mqdfqjcwudeGw==","shasum":"b8f39396cc921293e5e614c0dabbc5220cbe022c","tarball":"https://registry.npmjs.org/@arinova-ai/creator-cli/-/creator-cli-0.0.4.tgz","fileCount":54,"unpackedSize":126249,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCIGzcmLHb6tl+/X7qp8yC0YH/CXwRrxzdITR3D/hWA0gIgNmVW9jMtCPMNi1zPNk5hkj0RNL86vJaRDaeE7f01iQw="}]},"_npmUser":{"name":"ripple0129","email":"ripple0129@gmail.com"},"directories":{},"maintainers":[{"name":"ripple0129","email":"ripple0129@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/creator-cli_0.0.4_1773768258038_0.8747607892070857"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-17T12:44:21.247Z","modified":"2026-03-17T17:24:18.337Z","0.0.1":"2026-03-17T12:44:21.512Z","0.0.2":"2026-03-17T12:46:29.116Z","0.0.3":"2026-03-17T16:28:31.737Z","0.0.4":"2026-03-17T17:24:18.180Z"},"description":"Command-line tool for managing Arinova Creator resources.","maintainers":[{"name":"ripple0129","email":"ripple0129@gmail.com"}],"readme":"# Arinova Creator CLI\n\nCommand-line tool for managing Arinova Creator resources.\n\n## Installation\n\n```bash\nnpm install -g @arinova/cli\n```\n\n## Authentication\n\n### Browser login (recommended)\n\n```bash\narinova-cli auth login\n```\n\nOpens your browser to generate a CLI token. The token is automatically saved.\n\n### Manual token\n\nIf browser login doesn't work, visit your Arinova dashboard to generate an API key, then:\n\n```bash\narinova-cli auth set-key <your-token>\n```\n\nTokens must start with `ari_` (e.g., `ari_cli_...`).\n\n### Verify\n\n```bash\narinova-cli auth whoami\n```\n\n## Configuration\n\n```bash\n# Use staging environment\narinova-cli --staging <command>\n\n# Or set endpoint permanently\narinova-cli config set endpoint https://chat-staging.arinova.ai\n\n# Or use environment variable\nexport ARINOVA_ENDPOINT=https://chat-staging.arinova.ai\n\n# Show current config\narinova-cli config show\n```\n\n## Spaces\n\n### Create a space\n\n```bash\narinova-cli space create --name \"My Game\" --url \"https://example.com/game\"\n```\n\nThe `--url` parameter sets the `iframeUrl` in the space definition. This is **required** for the \"Play Now\" button to appear on the space page. Without it, users cannot launch the space.\n\n### Other space commands\n\n```bash\narinova-cli space list                          # List your spaces\narinova-cli space show <id>                     # Show space details\narinova-cli space update <id> --url <new-url>   # Update iframe URL\narinova-cli space publish <id>                  # Make space public\narinova-cli space unpublish <id>                # Make space private\narinova-cli space delete <id>                   # Delete a space\n```\n\n## OAuth Apps\n\nRegister and manage OAuth apps for third-party integrations.\n\n### Create an OAuth app\n\n```bash\narinova-cli app create --name \"My Game\" --redirect-uri \"https://mygame.com/callback\"\n```\n\nOn success, the CLI prints `clientId` and `clientSecret`. **Save the secret immediately** — it cannot be retrieved again.\n\n### App commands\n\n```bash\narinova-cli app list                              # List your apps\narinova-cli app show <id>                         # Show app details\narinova-cli app credentials <id>                  # Show client ID + redirect URIs\narinova-cli app update <id> --redirect-uri <uri>  # Update redirect URI\narinova-cli app regenerate-secret <id>            # Regenerate client secret\narinova-cli app delete <id>                       # Delete an app\n```\n\n### Using your OAuth app\n\nIn your web app, initialize the Arinova SDK:\n\n```js\nArinova.init({ appId: \"<your-client-id>\" });\n```\n\n### Public vs Confidential Clients\n\n| | Public (SPA) | Confidential (Server) |\n|---|---|---|\n| Create | `--public` flag | Default |\n| Secret | Not needed | Required for token exchange |\n| Security | Uses PKCE (code_challenge) | Uses client_secret |\n| Use case | Browser apps, mobile apps | Server-side apps |\n\n### OAuth Flow — Confidential Client\n\n1. Redirect to `https://chat.arinova.ai/oauth/authorize?client_id=<id>&redirect_uri=<uri>&scope=profile&state=<random>`\n2. User authorizes on Arinova\n3. Arinova redirects to your `redirect_uri` with `?code=<auth-code>&state=<state>`\n4. Exchange code: `POST /oauth/token` with `{ grant_type: \"authorization_code\", client_id, client_secret, code, redirect_uri }`\n5. Use the access token (Bearer) to call Arinova APIs\n\n### OAuth Flow — Public Client (PKCE)\n\n1. Generate a random `code_verifier` (43-128 chars, URL-safe)\n2. Compute `code_challenge = BASE64URL(SHA256(code_verifier))`\n3. Redirect to `https://chat.arinova.ai/oauth/authorize?client_id=<id>&redirect_uri=<uri>&scope=profile&state=<random>&code_challenge=<challenge>&code_challenge_method=S256`\n4. User authorizes on Arinova\n5. Arinova redirects to your `redirect_uri` with `?code=<auth-code>&state=<state>`\n6. Exchange code: `POST /oauth/token` with `{ grant_type: \"authorization_code\", client_id, code, redirect_uri, code_verifier }` (no client_secret)\n7. Use the access token (Bearer) to call Arinova APIs\n\n### redirect_uri rules\n\n- Origin match: scheme + host + port must match (path can differ)\n- Must use HTTPS in production\n- `http://localhost:*` is allowed for development\n\n### Web UI\n\nYou can also manage OAuth apps at `/developer` in the Arinova web interface.\n\n## Other Commands\n\n```bash\narinova-cli agent list          # List your agents\narinova-cli sticker list        # List your sticker packs\narinova-cli theme list          # List your themes\narinova-cli community list      # List your communities\narinova-cli stats               # Show creator stats\n```\n\n## Global Options\n\n| Option | Description |\n|--------|-------------|\n| `--json` | Output as JSON |\n| `--staging` | Use staging endpoint |\n","readmeFilename":"README.md"}