{"_id":"@0xsota/storyx-cli","_rev":"7-b7b7a0872a72ddbcf4a3a4157a2e792e","name":"@0xsota/storyx-cli","dist-tags":{"latest":"0.1.0-beta.3.1"},"versions":{"0.1.0-beta.1":{"name":"@0xsota/storyx-cli","version":"0.1.0-beta.1","keywords":["story-protocol","ip-asset","cli","blockchain"],"author":{"url":"bernieio a.k.a 0xsota","name":"Bernie Nguyen"},"license":"MIT","_id":"@0xsota/storyx-cli@0.1.0-beta.1","maintainers":[{"name":"bernieio","email":"bernie.web3@gmail.com"}],"homepage":"https://github.com/bernieio/storyx-cli#readme","bugs":{"url":"https://github.com/bernieio/storyx-cli/issues"},"bin":{"storyx":"dist/index.js"},"dist":{"shasum":"1b6021249a7a111ac3db80f1b3c1c06b8d6c2440","tarball":"https://registry.npmjs.org/@0xsota/storyx-cli/-/storyx-cli-0.1.0-beta.1.tgz","fileCount":32,"integrity":"sha512-iIbXOHdWuhhJwdj6Yhmgs9M0S2OEDKMIhxQX21DTeeVcEf3adDWRridKCIYcLybvPlOxlwTjw7GsH7BVIWPv1g==","signatures":[{"sig":"MEYCIQDmZgTQlOC92A3lpaTwUNqDuQHYsNngQbgcA24OIKiemwIhAN99Fi1cmnVdgvYZj6m3ov3o+jTRQWYqU53F0R0e+Dfb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108343},"main":"dist/index.js","engines":{"node":">=18.0.0"},"gitHead":"37888d9d7a5336749a6ef609501fdc3202fba5d3","scripts":{"dev":"nodemon","lint":"eslint src --ext .ts","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src --ext .ts --fix","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --coverage"},"_npmUser":{"name":"bernieio","email":"bernie.web3@gmail.com"},"repository":{"url":"git+https://github.com/bernieio/storyx-cli.git","type":"git"},"_npmVersion":"10.9.4","description":"StoryX CLI — IP lifecycle toolkit for Story Protocol. Built by bernieio a.k.a 0xsota.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"viem":"^2.39.0","chalk":"^5.6.2","dotenv":"^17.2.3","ethers":"^6.15.0","figlet":"^1.9.3","inquirer":"^9.2.15","commander":"^14.0.2","@story-protocol/core-sdk":"^1.4.1","@story-protocol/react-sdk":"^1.1.0-stable"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","nodemon":"^3.1.11","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^29.5.12","@types/node":"^24.10.1","@types/chalk":"^0.4.31","@types/dotenv":"^6.1.1","@types/nodemon":"^1.19.6","@types/inquirer":"^9.0.7","@types/commander":"^2.12.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^7.18.0","@typescript-eslint/eslint-plugin":"^7.18.0"},"_npmOperationalInternal":{"tmp":"tmp/storyx-cli_0.1.0-beta.1_1763167995926_0.8551313026139753","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.1.1":{"name":"@0xsota/storyx-cli","version":"0.1.0-beta.1.1","keywords":["story-protocol","ip-asset","cli","blockchain"],"author":{"url":"bernieio a.k.a 0xsota","name":"Bernie Nguyen"},"license":"MIT","_id":"@0xsota/storyx-cli@0.1.0-beta.1.1","maintainers":[{"name":"bernieio","email":"bernie.web3@gmail.com"}],"homepage":"https://github.com/bernieio/storyx-cli#readme","bugs":{"url":"https://github.com/bernieio/storyx-cli/issues"},"bin":{"storyx":"dist/index.js"},"dist":{"shasum":"2253b6ad43e9d03c78b82082860d73e07399616c","tarball":"https://registry.npmjs.org/@0xsota/storyx-cli/-/storyx-cli-0.1.0-beta.1.1.tgz","fileCount":32,"integrity":"sha512-71ZO6QSTGK6fjpFmE7M7GIT1R1BM033iSloP7FVieUza6k3pNRVygsGleTsxEK0UUzmDNMvEPxSt2ejuPZ/71w==","signatures":[{"sig":"MEYCIQDGJXiaOg5RR1lzY7a5oO2XcEprGUbaRLitZ0KmA819+AIhAMUMqfUWH5l383NUgCUPCTESnmWWmv6onSegALVEISY9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108533},"main":"dist/index.js","engines":{"node":">=18.0.0"},"gitHead":"d99d96bd4495d2145c68c7fd813d0d5de575c48d","scripts":{"dev":"nodemon","lint":"eslint src --ext .ts","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src --ext .ts --fix","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --coverage"},"_npmUser":{"name":"bernieio","email":"bernie.web3@gmail.com"},"repository":{"url":"git+https://github.com/bernieio/storyx-cli.git","type":"git"},"_npmVersion":"10.9.4","description":"StoryX CLI — IP lifecycle toolkit for Story Protocol. Built by bernieio a.k.a 0xsota.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"viem":"^2.39.0","chalk":"^5.6.2","dotenv":"^17.2.3","ethers":"^6.15.0","figlet":"^1.9.3","inquirer":"^9.2.15","commander":"^14.0.2","@story-protocol/core-sdk":"^1.4.1","@story-protocol/react-sdk":"^1.1.0-stable"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","nodemon":"^3.1.11","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^29.5.12","@types/node":"^24.10.1","@types/chalk":"^0.4.31","@types/dotenv":"^6.1.1","@types/nodemon":"^1.19.6","@types/inquirer":"^9.0.7","@types/commander":"^2.12.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^7.18.0","@typescript-eslint/eslint-plugin":"^7.18.0"},"_npmOperationalInternal":{"tmp":"tmp/storyx-cli_0.1.0-beta.1.1_1763408410196_0.2115218406573698","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.2":{"name":"@0xsota/storyx-cli","version":"0.1.0-beta.2","keywords":["story-protocol","ip-asset","cli","blockchain"],"author":{"url":"bernieio a.k.a 0xsota","name":"Bernie Nguyen"},"license":"MIT","_id":"@0xsota/storyx-cli@0.1.0-beta.2","maintainers":[{"name":"bernieio","email":"bernie.web3@gmail.com"}],"homepage":"https://github.com/bernieio/storyx-cli#readme","bugs":{"url":"https://github.com/bernieio/storyx-cli/issues"},"bin":{"storyx":"dist/index.js"},"dist":{"shasum":"d612dd5adb09a9132764533a926c30ce39a3eaba","tarball":"https://registry.npmjs.org/@0xsota/storyx-cli/-/storyx-cli-0.1.0-beta.2.tgz","fileCount":32,"integrity":"sha512-QPalTg7W73wdJvgCTdWdvtyhFaSt4y8mgMeIu/wP7tbQMrj4JtbhPQnPxmqjXUDSizVEUpmP0/BQHfsab4kEAw==","signatures":[{"sig":"MEUCIQCsMSb5WdUraTWXRXSd5Y4LjYj+9ckoGW4cJDv7MD9wLAIgG+xYIMIoT+4BhcUMiKCTHTlMNx1c1JOTqVfUttMYs6c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108531},"main":"dist/index.js","engines":{"node":">=18.0.0"},"gitHead":"c3f5943094da9c20c3bf8d0d493a123c69489907","scripts":{"dev":"nodemon","lint":"eslint src --ext .ts","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src --ext .ts --fix","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --coverage"},"_npmUser":{"name":"bernieio","email":"bernie.web3@gmail.com"},"repository":{"url":"git+https://github.com/bernieio/storyx-cli.git","type":"git"},"_npmVersion":"10.9.4","description":"StoryX CLI — IP lifecycle toolkit for Story Protocol. Built by bernieio a.k.a 0xsota.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"viem":"^2.39.0","chalk":"^5.6.2","dotenv":"^17.2.3","ethers":"^6.15.0","figlet":"^1.9.3","inquirer":"^9.2.15","commander":"^14.0.2","@story-protocol/core-sdk":"^1.4.1","@story-protocol/react-sdk":"^1.1.0-stable"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","nodemon":"^3.1.11","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^29.5.12","@types/node":"^24.10.1","@types/chalk":"^0.4.31","@types/dotenv":"^6.1.1","@types/nodemon":"^1.19.6","@types/inquirer":"^9.0.7","@types/commander":"^2.12.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^7.18.0","@typescript-eslint/eslint-plugin":"^7.18.0"},"_npmOperationalInternal":{"tmp":"tmp/storyx-cli_0.1.0-beta.2_1763408638962_0.718199006680103","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.3":{"name":"@0xsota/storyx-cli","version":"0.1.0-beta.3","keywords":["story-protocol","ip-asset","cli","blockchain"],"author":{"url":"bernieio a.k.a 0xsota","name":"Bernie Nguyen"},"license":"MIT","_id":"@0xsota/storyx-cli@0.1.0-beta.3","maintainers":[{"name":"bernieio","email":"bernie.web3@gmail.com"}],"homepage":"https://github.com/bernieio/storyx-cli#readme","bugs":{"url":"https://github.com/bernieio/storyx-cli/issues"},"bin":{"storyx":"dist/index.js"},"dist":{"shasum":"a5ee52674ec1e1b8495c6f7aca76d1c54859659f","tarball":"https://registry.npmjs.org/@0xsota/storyx-cli/-/storyx-cli-0.1.0-beta.3.tgz","fileCount":34,"integrity":"sha512-SGz7e/d8K1zPmEIJ3s7WD7kw470K3um/uHgzVgXfzKQo7fYB28IgABuJUlYj9r+fIC0XnKBQAzQIxYnBF+WW6g==","signatures":[{"sig":"MEUCIQC5gZJ6qVg8idskBoFGwv9kcwuHmeaOhbngyDeseJWJggIgVE0vB2icrqeC0Of6//UeH9bL4GM74aVuWuxatbBqCds=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135986},"main":"dist/index.js","engines":{"node":">=18.0.0"},"gitHead":"42c0c9fc945363227e2dc8bcc49a4dbd4ffa59f1","scripts":{"dev":"nodemon","lint":"eslint src --ext .ts","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src --ext .ts --fix","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --coverage"},"_npmUser":{"name":"bernieio","email":"bernie.web3@gmail.com"},"repository":{"url":"git+https://github.com/bernieio/storyx-cli.git","type":"git"},"_npmVersion":"10.9.4","description":"StoryX CLI — IP lifecycle toolkit for Story Protocol. Built by bernieio a.k.a 0xsota.","directories":{},"_nodeVersion":"22.21.0","dependencies":{"viem":"^2.39.0","chalk":"^5.6.2","dotenv":"^17.2.3","ethers":"^6.15.0","figlet":"^1.9.3","inquirer":"^9.2.15","commander":"^14.0.2","@story-protocol/core-sdk":"^1.4.1","@story-protocol/react-sdk":"^1.1.0-stable"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","nodemon":"^3.1.11","ts-jest":"^29.2.5","ts-node":"^10.9.2","prettier":"^3.3.3","typescript":"^5.9.3","@types/jest":"^29.5.12","@types/node":"^24.10.1","@types/chalk":"^0.4.31","@types/dotenv":"^6.1.1","@types/nodemon":"^1.19.6","@types/inquirer":"^9.0.7","@types/commander":"^2.12.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@typescript-eslint/parser":"^7.18.0","@typescript-eslint/eslint-plugin":"^7.18.0"},"_npmOperationalInternal":{"tmp":"tmp/storyx-cli_0.1.0-beta.3_1764297357429_0.46725916596770145","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.3.1":{"name":"@0xsota/storyx-cli","version":"0.1.0-beta.3.1","description":"StoryX CLI — IP lifecycle toolkit for Story Protocol. Built by bernieio a.k.a 0xsota.","main":"dist/index.js","bin":{"storyx":"dist/index.js"},"keywords":["story-protocol","ip-asset","cli","blockchain"],"scripts":{"dev":"nodemon","build":"tsc","start":"node dist/index.js","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","lint":"eslint src --ext .ts","lint:fix":"eslint src --ext .ts --fix","format":"prettier --write \"src/**/*.ts\"","format:check":"prettier --check \"src/**/*.ts\""},"author":{"name":"Bernie Nguyen","url":"bernieio a.k.a 0xsota"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bernieio/storyx-cli.git"},"engines":{"node":">=18.0.0"},"publishConfig":{"access":"public"},"dependencies":{"@story-protocol/core-sdk":"^1.4.1","@story-protocol/react-sdk":"^1.1.0-stable","chalk":"^5.6.2","commander":"^14.0.2","dotenv":"^17.2.3","ethers":"^6.15.0","figlet":"^1.9.3","inquirer":"^8.2.6","viem":"^2.39.0"},"devDependencies":{"@types/chalk":"^0.4.31","@types/commander":"^2.12.0","@types/dotenv":"^6.1.1","@types/inquirer":"^8.2.10","@types/jest":"^29.5.12","@types/node":"^24.10.1","@types/nodemon":"^1.19.6","@typescript-eslint/eslint-plugin":"^7.18.0","@typescript-eslint/parser":"^7.18.0","eslint":"^8.57.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","jest":"^29.7.0","nodemon":"^3.1.11","prettier":"^3.3.3","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.9.3"},"_id":"@0xsota/storyx-cli@0.1.0-beta.3.1","gitHead":"278f6a39ef0efed847d1160b5e090092eb8be6de","bugs":{"url":"https://github.com/bernieio/storyx-cli/issues"},"homepage":"https://github.com/bernieio/storyx-cli#readme","_nodeVersion":"22.21.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-8TwHm0pbd8MrI0sku4pfKy5KkfqcOFO3CwD7J4hLvh/OKrDYOewUMD7uxhQDtMN6sv00YcIunjUyb+JilHdBZA==","shasum":"f89fb01cedb88d79ab963ad21facdb52eb135e0c","tarball":"https://registry.npmjs.org/@0xsota/storyx-cli/-/storyx-cli-0.1.0-beta.3.1.tgz","fileCount":34,"unpackedSize":135990,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGtUEu2y5EhMnhi/eRIAvf/Vv1rWJMYznfPRkApMmIhEAiEAtxqmIuwYka90IzhB8KeeYUCanpvqfbv2Q/vGUGNDs58="}]},"_npmUser":{"name":"bernieio","email":"bernie.web3@gmail.com"},"directories":{},"maintainers":[{"name":"bernieio","email":"bernie.web3@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/storyx-cli_0.1.0-beta.3.1_1764298435711_0.92711171748289"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-15T00:53:15.865Z","modified":"2025-11-28T02:53:56.122Z","0.1.0-beta.1":"2025-11-15T00:53:16.116Z","0.1.0-beta.1.1":"2025-11-17T19:40:10.391Z","0.1.0-beta.2":"2025-11-17T19:43:59.144Z","0.1.0-beta.3":"2025-11-28T02:35:57.621Z","0.1.0-beta.3.1":"2025-11-28T02:53:55.897Z"},"bugs":{"url":"https://github.com/bernieio/storyx-cli/issues"},"author":{"name":"Bernie Nguyen","url":"bernieio a.k.a 0xsota"},"license":"MIT","homepage":"https://github.com/bernieio/storyx-cli#readme","keywords":["story-protocol","ip-asset","cli","blockchain"],"repository":{"type":"git","url":"git+https://github.com/bernieio/storyx-cli.git"},"description":"StoryX CLI — IP lifecycle toolkit for Story Protocol. Built by bernieio a.k.a 0xsota.","maintainers":[{"name":"bernieio","email":"bernie.web3@gmail.com"}],"readme":"# StoryX CLI\r\n\r\n> **Fast IP lifecycle toolkit for Story Protocol** — Create, manage, and license IP assets on Story Protocol blockchain with ease.\r\n\r\n[![npm version](https://img.shields.io/npm/v/@0xsota/storyx-cli.svg)](https://www.npmjs.com/package/@0xsota/storyx-cli)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\r\n\r\n## 🚀 Features\r\n\r\n- ✅ **Complete IP Asset Management** - Create, list, view, and link IP assets\r\n- ✅ **PIL License System** - Built-in Programmable IP License templates\r\n- ✅ **Real-time Data** - Fetch live data from Story Protocol API v4\r\n- ✅ **Multi-Network Support** - Story Mainnet & Aeneid Testnet\r\n- ✅ **Secure Key Management** - Encrypted private key storage\r\n- ✅ **Profile System** - Manage multiple profiles and networks\r\n- ✅ **Project Scaffolding** - Quick-start templates for developers\r\n- ✅ **User-Friendly Errors** - Actionable error messages with guidance\r\n\r\n---\r\n\r\n## 📦 Installation\r\n\r\n### NPM (Recommended)\r\n\r\n```bash\r\nnpm install -g @0xsota/storyx-cli\r\n```\r\n\r\n### Verify Installation\r\n\r\n```bash\r\nstoryx --version\r\n# 0.1.0-beta.3.1\r\n```\r\n\r\n---\r\n\r\n## 🎯 Quick Start\r\n\r\n### 1. Initialize CLI\r\n\r\n```bash\r\nstoryx init\r\n```\r\n\r\nThis will:\r\n- Create a new profile\r\n- Configure network (Story Mainnet or Aeneid Testnet)\r\n- Generate and encrypt a private key\r\n- Set up your workspace\r\n\r\n**Example:**\r\n```\r\n? Profile name: my-profile\r\n? Network: Story Aeneid (Testnet)\r\n? RPC URL: https://aeneid.storyrpc.io\r\n? Explorer URL: https://aeneid.storyscan.io\r\n? Enable telemetry: No\r\n? Enter passphrase: ********\r\n? Confirm passphrase: ********\r\n\r\n✓ StoryX CLI initialized successfully!\r\n\r\nProfile: my-profile\r\nNetwork: story-aeneid\r\nAddress: 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb\r\nConfig: ~/.storyx/config.json\r\n```\r\n\r\n### 2. Get Testnet Tokens\r\n\r\nVisit the Story Protocol faucet:\r\n```\r\nhttps://faucet.story.foundation\r\n```\r\n\r\n### 3. Create Your First IP Asset\r\n\r\n```bash\r\nstoryx ip:create --title \"My First IP\" --tags \"art,nft\"\r\n```\r\n\r\n**Output:**\r\n```\r\n✓ IP Asset created successfully!\r\n\r\nIP ID: 0x1234567890abcdef...\r\nTransaction: 0xabcdef1234567890...\r\nExplorer: https://aeneid.storyscan.io/tx/0xabcdef...\r\n```\r\n\r\n### 4. List Your IP Assets\r\n\r\n```bash\r\nstoryx ip:list --limit 10\r\n```\r\n\r\n---\r\n\r\n## 📚 Commands Reference\r\n\r\n### Configuration Commands\r\n\r\n#### `storyx init`\r\nInitialize StoryX CLI configuration (interactive setup).\r\n\r\n```bash\r\nstoryx init\r\n```\r\n\r\n#### `storyx profile`\r\nManage profiles.\r\n\r\n```bash\r\n# List all profiles\r\nstoryx profile list\r\n\r\n# Create new profile\r\nstoryx profile create <name>\r\n\r\n# Switch profile\r\nstoryx profile switch <name>\r\n\r\n# Delete profile\r\nstoryx profile delete <name>\r\n```\r\n\r\n#### `storyx network`\r\nManage network configurations.\r\n\r\n```bash\r\n# List networks\r\nstoryx network list\r\n\r\n# Set network\r\nstoryx network set --rpc <url> --chain-id <id> --explorer <url>\r\n```\r\n\r\n#### `storyx keys`\r\nManage private keys.\r\n\r\n```bash\r\n# Create new key\r\nstoryx keys create\r\n\r\n# Import existing key\r\nstoryx keys import --private-key <key>\r\n\r\n# Export key\r\nstoryx keys export\r\n```\r\n\r\n---\r\n\r\n### IP Asset Commands\r\n\r\n#### `storyx ip:create`\r\nCreate a new IP asset.\r\n\r\n```bash\r\nstoryx ip:create --title <title> [options]\r\n```\r\n\r\n**Options:**\r\n- `--title <string>` - IP asset title (required)\r\n- `--tags <string>` - Comma-separated tags (e.g., \"art,music,nft\")\r\n- `--metadata-file <path>` - Path to metadata JSON file\r\n- `--dry-run` - Simulate without executing transaction\r\n\r\n**Example:**\r\n```bash\r\nstoryx ip:create --title \"My Artwork\" --tags \"art,digital\" --metadata-file ./metadata.json\r\n```\r\n\r\n#### `storyx ip:list`\r\nList IP assets.\r\n\r\n```bash\r\nstoryx ip:list [options]\r\n```\r\n\r\n**Options:**\r\n- `--owner <address>` - Filter by owner address\r\n- `--limit <number>` - Maximum results (default: 10)\r\n- `--json` - Output as JSON\r\n\r\n**Example:**\r\n```bash\r\nstoryx ip:list --owner 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb --limit 5\r\n```\r\n\r\n#### `storyx ip:show`\r\nShow IP asset details.\r\n\r\n```bash\r\nstoryx ip:show <ip-id>\r\n```\r\n\r\n**Example:**\r\n```bash\r\nstoryx ip:show 0x1234567890abcdef...\r\n```\r\n\r\n**Output:**\r\n```\r\nIP Asset Details\r\n================\r\nID: 0x1234567890abcdef...\r\nTitle: My Artwork\r\nOwner: 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb\r\nCreated: 2024-01-15T10:30:00Z\r\nMetadata URI: ipfs://...\r\n\r\nParents: 0\r\nChildren: 2\r\n  - 0xabcdef1234567890...\r\n  - 0x9876543210fedcba...\r\n```\r\n\r\n#### `storyx ip:link`\r\nLink IP assets (create derivative relationship).\r\n\r\n```bash\r\nstoryx ip:link --parent <parent-id> --child <child-id> [options]\r\n```\r\n\r\n**Options:**\r\n- `--parent <string>` - Parent IP asset ID (required)\r\n- `--child <string>` - Child IP asset ID (required)\r\n- `--relation <string>` - Relationship type: \"derivative\" or \"remix\" (default: \"derivative\")\r\n- `--dry-run` - Simulate without executing\r\n\r\n**Example:**\r\n```bash\r\nstoryx ip:link --parent 0x1234... --child 0x5678... --relation derivative\r\n```\r\n\r\n#### `storyx ip:tree`\r\nDisplay IP asset lineage tree.\r\n\r\n```bash\r\nstoryx ip:tree --id <ip-id> [options]\r\n```\r\n\r\n**Options:**\r\n- `--id <string>` - Root IP asset ID (required)\r\n- `--depth <number>` - Tree depth (default: 10)\r\n- `--format <string>` - Output format: \"ascii\" or \"json\" (default: \"ascii\")\r\n\r\n**Example:**\r\n```bash\r\nstoryx ip:tree --id 0x1234... --depth 3\r\n```\r\n\r\n**Output:**\r\n```\r\n0x1234567890abcdef... (My Original IP)\r\n├── 0xabcdef1234567890... (Remix #1)\r\n│   └── 0x9876543210fedcba... (Remix #1.1)\r\n└── 0x5678901234abcdef... (Remix #2)\r\n```\r\n\r\n---\r\n\r\n### License Commands\r\n\r\n#### `storyx license:templates`\r\nList available PIL license templates.\r\n\r\n```bash\r\nstoryx license:templates\r\n```\r\n\r\n**Output:**\r\n```\r\nAvailable License Templates\r\n===========================\r\nName                              PIL Type                          Description\r\nNon-Commercial Social Remixing    non-commercial-social-remixing    Free to remix and share, but no commercial use\r\nCommercial Use                    commercial-use                    Commercial use allowed, no derivatives\r\nCommercial Remix                  commercial-remix                  Commercial derivatives with revenue sharing\r\n```\r\n\r\n#### `storyx license:create`\r\nAttach license to IP asset.\r\n\r\n```bash\r\nstoryx license:create --ip <ip-id> --preset <preset> [options]\r\n```\r\n\r\n**Options:**\r\n- `--ip <string>` - IP asset ID (required)\r\n- `--preset <string>` - License preset: \"non-commercial-social-remixing\", \"commercial-use\", \"commercial-remix\", or \"custom\"\r\n- `--terms-file <path>` - Custom license terms JSON file (for \"custom\" preset)\r\n- `--dry-run` - Simulate without executing\r\n\r\n**Example:**\r\n```bash\r\n# Use preset\r\nstoryx license:create --ip 0x1234... --preset non-commercial-social-remixing\r\n\r\n# Custom terms\r\nstoryx license:create --ip 0x1234... --preset custom --terms-file ./terms.json\r\n```\r\n\r\n#### `storyx license:apply`\r\nMint license tokens.\r\n\r\n```bash\r\nstoryx license:apply --ip <ip-id> --license <license-id> [options]\r\n```\r\n\r\n**Options:**\r\n- `--ip <string>` - IP asset ID (required)\r\n- `--license <string>` - License ID (required)\r\n- `--amount <number>` - Number of tokens to mint (default: 1)\r\n- `--dry-run` - Simulate without executing\r\n\r\n**Example:**\r\n```bash\r\nstoryx license:apply --ip 0x1234... --license 1 --amount 5\r\n```\r\n\r\n---\r\n\r\n### Scaffold Commands\r\n\r\n#### `storyx scaffold:project`\r\nGenerate a new Story Protocol project.\r\n\r\n```bash\r\nstoryx scaffold:project <project-name>\r\n```\r\n\r\n**Example:**\r\n```bash\r\nstoryx scaffold:project my-story-app\r\ncd my-story-app\r\nnpm install\r\nnpm run dev\r\n```\r\n\r\n**Generated Structure:**\r\n```\r\nmy-story-app/\r\n├── src/\r\n│   └── index.ts          # Main entry point with examples\r\n├── .env.example          # Environment variables template\r\n├── package.json\r\n├── tsconfig.json\r\n└── README.md\r\n```\r\n\r\n---\r\n\r\n## 🔧 Configuration\r\n\r\n### Config File Location\r\n\r\n```\r\n~/.storyx/config.json\r\n```\r\n\r\n### Config Structure\r\n\r\n```json\r\n{\r\n  \"defaultProfile\": \"my-profile\",\r\n  \"telemetry\": false,\r\n  \"profiles\": [\r\n    {\r\n      \"name\": \"my-profile\",\r\n      \"network\": \"story-aeneid\"\r\n    }\r\n  ],\r\n  \"networks\": [\r\n    {\r\n      \"name\": \"story-aeneid\",\r\n      \"rpcUrl\": \"https://aeneid.storyrpc.io\",\r\n      \"chainId\": 1315,\r\n      \"explorerUrl\": \"https://aeneid.storyscan.io\",\r\n      \"spgNftContract\": \"0xc32A8a0FF3beDDDa58393d022aF433e78739FAbc\"\r\n    }\r\n  ]\r\n}\r\n```\r\n\r\n### Network Configurations\r\n\r\n**Story Mainnet:**\r\n- RPC: `https://mainnet.storyrpc.io`\r\n- Chain ID: `1514`\r\n- Explorer: `https://storyscan.io`\r\n- SPG NFT: `0x98971c660ac20880b60F86Cc3113eBd979eb3aAE`\r\n\r\n**Story Aeneid Testnet:**\r\n- RPC: `https://aeneid.storyrpc.io`\r\n- Chain ID: `1315`\r\n- Explorer: `https://aeneid.storyscan.io`\r\n- SPG NFT: `0xc32A8a0FF3beDDDa58393d022aF433e78739FAbc`\r\n\r\n---\r\n\r\n## 🎨 PIL License Templates\r\n\r\nStoryX CLI includes three built-in PIL (Programmable IP License) templates:\r\n\r\n### 1. Non-Commercial Social Remixing\r\n**Use case:** Free sharing and remixing, no commercial use\r\n\r\n**Terms:**\r\n- ✅ Transferable\r\n- ✅ Derivatives allowed\r\n- ✅ Attribution required\r\n- ✅ Reciprocal (derivatives must use same license)\r\n- ❌ Commercial use prohibited\r\n\r\n**Example:**\r\n```bash\r\nstoryx license:create --ip 0x1234... --preset non-commercial-social-remixing\r\n```\r\n\r\n### 2. Commercial Use\r\n**Use case:** Commercial use allowed, no derivatives\r\n\r\n**Terms:**\r\n- ✅ Transferable\r\n- ✅ Commercial use allowed\r\n- ✅ Attribution required\r\n- ❌ Derivatives prohibited\r\n\r\n**Example:**\r\n```bash\r\nstoryx license:create --ip 0x1234... --preset commercial-use\r\n```\r\n\r\n### 3. Commercial Remix\r\n**Use case:** Commercial derivatives with revenue sharing\r\n\r\n**Terms:**\r\n- ✅ Transferable\r\n- ✅ Commercial use allowed\r\n- ✅ Derivatives allowed\r\n- ✅ Attribution required\r\n- ✅ Revenue sharing (configurable)\r\n\r\n**Example:**\r\n```bash\r\nstoryx license:create --ip 0x1234... --preset commercial-remix\r\n```\r\n\r\n---\r\n\r\n## 🛠️ Advanced Usage\r\n\r\n### Custom Metadata\r\n\r\nCreate a metadata JSON file:\r\n\r\n```json\r\n{\r\n  \"name\": \"My Artwork\",\r\n  \"description\": \"A beautiful digital artwork\",\r\n  \"image\": \"ipfs://QmX...\",\r\n  \"attributes\": [\r\n    {\r\n      \"trait_type\": \"Artist\",\r\n      \"value\": \"Bernie\"\r\n    },\r\n    {\r\n      \"trait_type\": \"Style\",\r\n      \"value\": \"Abstract\"\r\n    }\r\n  ]\r\n}\r\n```\r\n\r\nUse with IP creation:\r\n```bash\r\nstoryx ip:create --title \"My Artwork\" --metadata-file ./metadata.json\r\n```\r\n\r\n### Custom License Terms\r\n\r\nCreate a terms JSON file:\r\n\r\n```json\r\n{\r\n  \"transferable\": true,\r\n  \"commercialUse\": true,\r\n  \"derivativesAllowed\": true,\r\n  \"derivativesAttribution\": true,\r\n  \"commercialRevShare\": 10,\r\n  \"uri\": \"https://example.com/license-terms.json\"\r\n}\r\n```\r\n\r\nUse with license creation:\r\n```bash\r\nstoryx license:create --ip 0x1234... --preset custom --terms-file ./terms.json\r\n```\r\n\r\n### Dry Run Mode\r\n\r\nTest commands without executing transactions:\r\n\r\n```bash\r\nstoryx ip:create --title \"Test\" --dry-run\r\nstoryx ip:link --parent 0x1234... --child 0x5678... --dry-run\r\nstoryx license:create --ip 0x1234... --preset commercial-use --dry-run\r\n```\r\n\r\n### JSON Output\r\n\r\nGet machine-readable output:\r\n\r\n```bash\r\nstoryx ip:list --json > ips.json\r\nstoryx ip:tree --id 0x1234... --format json > tree.json\r\n```\r\n\r\n### Verbose Mode\r\n\r\nEnable detailed logging:\r\n\r\n```bash\r\nstoryx -v ip:create --title \"My IP\"\r\nstoryx --verbose ip:list\r\n```\r\n\r\n---\r\n\r\n## 🐛 Troubleshooting\r\n\r\n### Common Errors\r\n\r\n#### \"Insufficient funds\"\r\n```\r\nError: Insufficient funds. Get testnet tokens at: https://faucet.story.foundation\r\n```\r\n\r\n**Solution:** Visit the faucet and request testnet tokens for your address.\r\n\r\n#### \"Private key required for write operations\"\r\n```\r\nError: Private key required for write operations. Run: storyx keys import\r\n```\r\n\r\n**Solution:** Import or create a private key:\r\n```bash\r\nstoryx keys import --private-key <your-key>\r\n# or\r\nstoryx keys create\r\n```\r\n\r\n#### \"IP Asset not found\"\r\n```\r\nError: IP Asset not found: 0x1234...\r\n```\r\n\r\n**Solution:** Verify the IP asset ID is correct and exists on the network.\r\n\r\n#### \"Network error\"\r\n```\r\nError: Network error. Check your connection and RPC endpoint configuration.\r\n```\r\n\r\n**Solution:** Check your internet connection and RPC URL:\r\n```bash\r\nstoryx network list\r\nstoryx network set --rpc https://aeneid.storyrpc.io\r\n```\r\n\r\n---\r\n\r\n## 📖 Examples\r\n\r\n### Complete Workflow\r\n\r\n```bash\r\n# 1. Initialize\r\nstoryx init\r\n\r\n# 2. Create original IP\r\nstoryx ip:create --title \"Original Artwork\" --tags \"art,original\"\r\n# Output: IP ID: 0xAAA...\r\n\r\n# 3. Create derivative IP\r\nstoryx ip:create --title \"Remix Artwork\" --tags \"art,remix\"\r\n# Output: IP ID: 0xBBB...\r\n\r\n# 4. Link derivative to original\r\nstoryx ip:link --parent 0xAAA... --child 0xBBB... --relation derivative\r\n\r\n# 5. Attach license to original\r\nstoryx license:create --ip 0xAAA... --preset commercial-remix\r\n\r\n# 6. View IP tree\r\nstoryx ip:tree --id 0xAAA... --depth 3\r\n\r\n# 7. List all your IPs\r\nstoryx ip:list --owner <your-address> --limit 20\r\n```\r\n\r\n### Multi-Profile Setup\r\n\r\n```bash\r\n# Create testnet profile\r\nstoryx profile create testnet\r\nstoryx network set --rpc https://aeneid.storyrpc.io --chain-id 1315\r\n\r\n# Create mainnet profile\r\nstoryx profile create mainnet\r\nstoryx network set --rpc https://mainnet.storyrpc.io --chain-id 1514\r\n\r\n# Switch between profiles\r\nstoryx profile switch testnet\r\nstoryx ip:list\r\n\r\nstoryx profile switch mainnet\r\nstoryx ip:list\r\n```\r\n\r\n---\r\n\r\n## 🤝 Contributing\r\n\r\nContributions are welcome! Please feel free to submit a Pull Request.\r\n\r\n### Development Setup\r\n\r\n```bash\r\n# Clone repository\r\ngit clone https://github.com/bernieio/storyx-cli.git\r\ncd storyx-cli\r\n\r\n# Install dependencies\r\nnpm install\r\n\r\n# Build\r\nnpm run build\r\n\r\n# Run locally\r\nnpm start\r\n\r\n# Run tests\r\nnpm test\r\n```\r\n\r\n---\r\n\r\n## 📄 License\r\n\r\nMIT License - see [LICENSE](LICENSE) file for details.\r\n\r\n---\r\n\r\n## 👤 Author\r\n\r\n**Bernie (bernieio / 0xsota)**\r\n\r\n- Email: [bernie.web3@gmail.com](mailto:bernie.web3@gmail.com)\r\n- Telegram: [@bernieio](https://t.me/bernieio)\r\n- GitHub: [@bernieio](https://github.com/bernieio)\r\n- NPM: [@0xsota/storyx-cli](https://www.npmjs.com/package/@0xsota/storyx-cli)\r\n\r\n---\r\n\r\n## 🔗 Links\r\n\r\n- **NPM Package:** https://www.npmjs.com/package/@0xsota/storyx-cli\r\n- **GitHub Repository:** https://github.com/bernieio/storyx-cli\r\n- **Issues & Support:** https://github.com/bernieio/storyx-cli/issues\r\n- **Story Protocol Docs:** https://docs.story.foundation\r\n- **Story Protocol Faucet:** https://faucet.story.foundation\r\n\r\n---\r\n\r\n## ⭐ Support\r\n\r\nIf you find this tool useful, please consider:\r\n- ⭐ Starring the [GitHub repository](https://github.com/bernieio/storyx-cli)\r\n- 🐛 Reporting bugs via [GitHub Issues](https://github.com/bernieio/storyx-cli/issues)\r\n- 💡 Suggesting features\r\n- 📢 Sharing with the community\r\n\r\n---\r\n\r\n**Built with ❤️ for the Story Protocol ecosystem**\r\n","readmeFilename":"README.md"}