{"_id":"@0day-network/zerocode-cli","_rev":"6-ad911ae81f93e15b5ea1684bef13aaa0","name":"@0day-network/zerocode-cli","dist-tags":{"latest":"1.0.23"},"versions":{"1.0.0":{"name":"@0day-network/zerocode-cli","version":"1.0.0","keywords":["web3","modular","components","blockchain","cli","typescript"],"author":{"name":"0day Network"},"license":"MIT","_id":"@0day-network/zerocode-cli@1.0.0","maintainers":[{"name":"0day-network","email":"zeroday.network@proton.me"}],"bin":{"zc":"bin/cli.js"},"dist":{"shasum":"f7bd6190480ae44a79f3afa2471f46bade66cc59","tarball":"https://registry.npmjs.org/@0day-network/zerocode-cli/-/zerocode-cli-1.0.0.tgz","fileCount":234,"integrity":"sha512-QS2fgqSKElUmCmacSo8daLVkUjZM8WqaOYtIUkdwCQqPM8oUSs403FqTESBu4OZYaynco9iixOb44rz3Lxs6vg==","signatures":[{"sig":"MEYCIQDqQ5l7/Lsivk8D88HqNWcG5GgnJbdmDjVJyBnfLCfiQAIhANE3GwC9L5l/WK68yf43Cbh9HyRw2ukqSMRDnSLSxtp3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":832642},"main":"./dist/index.js","type":"module","gitHead":"01bb98ba65ad8394e2764bfb56f9570f682f3cb6","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsc","start":"node ./bin/cli.js","format":"prettier --write src/**/*.ts","postbuild":"node scripts/copy-starter-pack.cjs","postinstall":"npx puppeteer browsers install chrome || true"},"_npmUser":{"name":"0day-network","email":"zeroday.network@proton.me"},"_npmVersion":"11.4.2","description":"ZeroCode CLI for building and publishing modular Web3 components","directories":{},"_nodeVersion":"24.4.1","dependencies":{"ajv":"^8.12.0","ora":"^7.0.0","zod":"^3.22.0","viem":"^2.7.0","chalk":"^5.3.0","dotenv":"^16.0.0","esbuild":"^0.19.0","js-yaml":"^4.1.0","chokidar":"^3.5.0","inquirer":"^9.2.0","commander":"^12.1.0","ajv-formats":"^3.0.0","@0day-network/mod-renderer":"workspace:*","@lens-chain/storage-client":"^1.0.6","@commander-js/extra-typings":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","vitest":"^1.0.0","prettier":"^3.0.0","puppeteer":"^24.23.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.0","@types/inquirer":"^9.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zerocode-cli_1.0.0_1760886238416_0.9052561722558254","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@0day-network/zerocode-cli","version":"1.0.1","keywords":["web3","modular","components","blockchain","cli","typescript"],"author":{"name":"0day Network"},"license":"MIT","_id":"@0day-network/zerocode-cli@1.0.1","maintainers":[{"name":"0day-network","email":"zeroday.network@proton.me"}],"bin":{"zc":"dist/bin/cli.js"},"dist":{"shasum":"8b3ee4239527100eb719ffc399629c950443373e","tarball":"https://registry.npmjs.org/@0day-network/zerocode-cli/-/zerocode-cli-1.0.1.tgz","fileCount":234,"integrity":"sha512-kBbK76MYu+Kd/hxASGw0LJ484Wxsm6s+c4smjF5G6+Gb7o/1tpi95PWcGSg4u/CkpnPqp1c6XihKZwxiWUHrrQ==","signatures":[{"sig":"MEUCIQDUiZmXzJGcjO7BjU1Uly1T+//QukvapsKbYlo2yXOGLAIgNpHp2pDXIJlHdmc1OYmlxep5tQ9wBvPucKtfkAhmj60=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":832647},"main":"./dist/index.js","type":"module","gitHead":"bd504de3b2d80e2ba226680da041f5a3b9d5d1e7","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsc","start":"node ./bin/cli.js","format":"prettier --write src/**/*.ts","postbuild":"node scripts/copy-starter-pack.cjs","postinstall":"npx puppeteer browsers install chrome || true"},"_npmUser":{"name":"0day-network","email":"zeroday.network@proton.me"},"_npmVersion":"11.4.2","description":"ZeroCode CLI for building and publishing modular Web3 components","directories":{},"_nodeVersion":"24.4.1","dependencies":{"ajv":"^8.12.0","ora":"^7.0.0","zod":"^3.22.0","viem":"^2.7.0","chalk":"^5.3.0","dotenv":"^16.0.0","esbuild":"^0.19.0","js-yaml":"^4.1.0","chokidar":"^3.5.0","inquirer":"^9.2.0","commander":"^12.1.0","ajv-formats":"^3.0.0","@0day-network/mod-renderer":"workspace:*","@lens-chain/storage-client":"^1.0.6","@commander-js/extra-typings":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","vitest":"^1.0.0","prettier":"^3.0.0","puppeteer":"^24.23.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.0","@types/inquirer":"^9.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zerocode-cli_1.0.1_1760886662409_0.22332674434372235","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@0day-network/zerocode-cli","version":"1.0.2","keywords":["web3","modular","components","blockchain","cli","typescript"],"author":{"name":"0day Network"},"license":"MIT","_id":"@0day-network/zerocode-cli@1.0.2","maintainers":[{"name":"0day-network","email":"zeroday.network@proton.me"}],"bin":{"zc":"dist/bin/cli.js"},"dist":{"shasum":"e6602e4ae86ba7437aaa0ab955da56584fada778","tarball":"https://registry.npmjs.org/@0day-network/zerocode-cli/-/zerocode-cli-1.0.2.tgz","fileCount":234,"integrity":"sha512-tG4wDK5sXO7zKsamfd3IhdwqDM0wOjpmaYNzgQrQ3+yrmOd1T86cDexXjWGdhyu4+DNZSkN6XegCrVDAdtFgzQ==","signatures":[{"sig":"MEYCIQCbWvrHzao+Yn9CWWn43mPBjhvhX66pOtBZ41uJTtTqDwIhAJYY6TQBkxa1DO8s8/u5d64YCbJtnjkUbpG/7ugbfHUZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":832641},"main":"./dist/index.js","type":"module","gitHead":"c6624e9071ce714feb77d1ea571de3abcdb09407","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsc","start":"node ./bin/cli.js","format":"prettier --write src/**/*.ts","postbuild":"node scripts/copy-starter-pack.cjs","postinstall":"npx puppeteer browsers install chrome || true"},"_npmUser":{"name":"0day-network","email":"zeroday.network@proton.me"},"_npmVersion":"11.4.2","description":"ZeroCode CLI for building and publishing modular Web3 components","directories":{},"_nodeVersion":"24.4.1","dependencies":{"ajv":"^8.12.0","ora":"^7.0.0","zod":"^3.22.0","viem":"^2.7.0","chalk":"^5.3.0","dotenv":"^16.0.0","esbuild":"^0.19.0","js-yaml":"^4.1.0","chokidar":"^3.5.0","inquirer":"^9.2.0","commander":"^12.1.0","ajv-formats":"^3.0.0","@0day-network/mod-renderer":"workspace:*","@lens-chain/storage-client":"^1.0.6","@commander-js/extra-typings":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","vitest":"^1.0.0","prettier":"^3.0.0","puppeteer":"^24.23.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.0","@types/inquirer":"^9.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zerocode-cli_1.0.2_1760888711621_0.4179398429976551","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"@0day-network/zerocode-cli","version":"1.0.21","keywords":["web3","modular","components","blockchain","cli","typescript"],"author":{"name":"0day Network"},"license":"MIT","_id":"@0day-network/zerocode-cli@1.0.21","maintainers":[{"name":"0day-network","email":"zeroday.network@proton.me"}],"bin":{"zc":"dist/bin/cli.js"},"dist":{"shasum":"608bc03fb1e4d79ad1d9faa1459904a1c11115f8","tarball":"https://registry.npmjs.org/@0day-network/zerocode-cli/-/zerocode-cli-1.0.21.tgz","fileCount":234,"integrity":"sha512-bdxSGLlGo+O+Q7QuL5vbNRFoeSadZ8OCY5WaLKadehp90IAYeNjg4BB6Wpzpt3kOD+/XGHQzCsvQPt5KA8+B1w==","signatures":[{"sig":"MEQCIDHgUyOzsimJvyplvzl+Kpxuas+HsWLIwosOh+wkug1QAiBBsnoJv+FYxFUIZKVi7z6+AotxSXcEolzydSdt3tW0EQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":832636},"main":"./dist/index.js","type":"module","gitHead":"5c5cec9fd07acd7dfc15860819dafe4a65741935","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsc","start":"node ./bin/cli.js","format":"prettier --write src/**/*.ts","postbuild":"node scripts/copy-starter-pack.cjs","postinstall":"npx puppeteer browsers install chrome || true"},"_npmUser":{"name":"0day-network","email":"zeroday.network@proton.me"},"_npmVersion":"11.4.2","description":"ZeroCode CLI for building and publishing modular Web3 components","directories":{},"_nodeVersion":"24.4.1","dependencies":{"ajv":"^8.12.0","ora":"^7.0.0","zod":"^3.22.0","viem":"^2.7.0","chalk":"^5.3.0","dotenv":"^16.0.0","esbuild":"^0.19.0","js-yaml":"^4.1.0","chokidar":"^3.5.0","inquirer":"^9.2.0","commander":"^12.1.0","ajv-formats":"^3.0.0","@0day-network/mod-renderer":"0.1.0","@lens-chain/storage-client":"^1.0.6","@commander-js/extra-typings":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","vitest":"^1.0.0","prettier":"^3.0.0","puppeteer":"^24.23.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.0","@types/inquirer":"^9.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zerocode-cli_1.0.21_1760889341543_0.6817692968492384","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"@0day-network/zerocode-cli","version":"1.0.22","keywords":["web3","modular","components","blockchain","cli","typescript"],"author":{"name":"0day Network"},"license":"MIT","_id":"@0day-network/zerocode-cli@1.0.22","maintainers":[{"name":"0day-network","email":"zeroday.network@proton.me"}],"bin":{"zc":"dist/bin/cli.js"},"dist":{"shasum":"f91f1b208592f9656dfdd4a8a47f1579941af1d4","tarball":"https://registry.npmjs.org/@0day-network/zerocode-cli/-/zerocode-cli-1.0.22.tgz","fileCount":234,"integrity":"sha512-a3Um7yk09H2ZwiF2tv2lmr2MyDs/cKAuYEiZM5FIpCQPe9HjAUOuRB1jCSADzFTTXCe1xrUqfQNPfydJ9GtMNg==","signatures":[{"sig":"MEYCIQC8xvbeh/bKaZU+wXihjybUuCCLwtYfSIg7JiHDlJ8fQAIhAK12p7n1y0zYzzH0FaUtT4F/15BMK6rbL35Mw+XagLJx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":832681},"main":"./dist/index.js","type":"module","gitHead":"251cf1ad05a4bc7e75f28f8dc923788de903c755","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsc","start":"node ./bin/cli.js","format":"prettier --write src/**/*.ts","postbuild":"node scripts/copy-starter-pack.cjs","postinstall":"npx puppeteer browsers install chrome || true"},"_npmUser":{"name":"0day-network","email":"zeroday.network@proton.me"},"_npmVersion":"11.4.2","description":"ZeroCode CLI for building and publishing modular Web3 components","directories":{},"_nodeVersion":"24.4.1","dependencies":{"ajv":"^8.12.0","ora":"^7.0.0","zod":"^3.22.0","viem":"^2.7.0","chalk":"^5.3.0","dotenv":"^16.0.0","esbuild":"^0.19.0","js-yaml":"^4.1.0","chokidar":"^3.5.0","inquirer":"^9.2.0","commander":"^12.1.0","ajv-formats":"^3.0.0","@0day-network/mod-renderer":"0.1.0","@lens-chain/storage-client":"^1.0.6","@commander-js/extra-typings":"^12.1.0","@0day-network/lit-gatekeeper":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","vitest":"^1.0.0","prettier":"^3.0.0","puppeteer":"^24.23.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.0","@types/inquirer":"^9.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zerocode-cli_1.0.22_1760890770677_0.03685799336233919","host":"s3://npm-registry-packages-npm-production"}},"1.0.23":{"name":"@0day-network/zerocode-cli","version":"1.0.23","description":"ZeroCode CLI for building and publishing modular Web3 components","type":"module","bin":{"zc":"dist/bin/cli.js"},"main":"./dist/index.js","publishConfig":{"access":"public"},"scripts":{"build":"tsc","postbuild":"node scripts/copy-starter-pack.cjs","postinstall":"npx puppeteer browsers install chrome || true","dev":"tsc --watch","start":"node ./bin/cli.js","test":"vitest","lint":"eslint src --ext .ts","format":"prettier --write src/**/*.ts"},"keywords":["web3","modular","components","blockchain","cli","typescript"],"author":{"name":"0day Network"},"license":"MIT","dependencies":{"@0day-network/mod-renderer":"0.1.0","@0day-network/lit-gatekeeper":"0.1.1","@commander-js/extra-typings":"^12.1.0","@lens-chain/storage-client":"^1.0.6","ajv":"^8.12.0","ajv-formats":"^3.0.0","chalk":"^5.3.0","chokidar":"^3.5.0","commander":"^12.1.0","dotenv":"^16.0.0","esbuild":"^0.19.0","inquirer":"^9.2.0","js-yaml":"^4.1.0","ora":"^7.0.0","viem":"^2.7.0","zod":"^3.22.0"},"devDependencies":{"@types/inquirer":"^9.0.0","@types/js-yaml":"^4.0.0","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.0.0","prettier":"^3.0.0","puppeteer":"^24.23.0","typescript":"^5.0.0","vitest":"^1.0.0"},"_id":"@0day-network/zerocode-cli@1.0.23","gitHead":"8a54cd3636295912684047889be746e9dda363d9","_nodeVersion":"24.4.1","_npmVersion":"11.4.2","dist":{"integrity":"sha512-4i6DDLIGZeLV1MdF7RIIIgMtlZPicxImXCMlaEvOg/RN6gWc8W5xlQ6aZ/m2EIcSLqDNsznVyQ5grKAMX2aD2w==","shasum":"e02a34a8f283624c9057756a835a7b4e66ef8027","tarball":"https://registry.npmjs.org/@0day-network/zerocode-cli/-/zerocode-cli-1.0.23.tgz","fileCount":234,"unpackedSize":832681,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEsD/Q9QGEp5KoIzqUcrZ2Z4YCiCwCiDp9OJQbfvoBl/AiEAthSOSYmeMDjqabpEh5eL1x+9rtgFZgfLb7xnlhZe1ls="}]},"_npmUser":{"name":"0day-network","email":"zeroday.network@proton.me"},"directories":{},"maintainers":[{"name":"0day-network","email":"zeroday.network@proton.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/zerocode-cli_1.0.23_1760895036906_0.40269766613760716"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-19T15:03:57.994Z","modified":"2025-10-19T17:30:37.314Z","1.0.0":"2025-10-19T15:03:58.659Z","1.0.1":"2025-10-19T15:11:02.606Z","1.0.2":"2025-10-19T15:45:11.840Z","1.0.21":"2025-10-19T15:55:41.775Z","1.0.22":"2025-10-19T16:19:30.908Z","1.0.23":"2025-10-19T17:30:37.124Z"},"author":{"name":"0day Network"},"license":"MIT","keywords":["web3","modular","components","blockchain","cli","typescript"],"description":"ZeroCode CLI for building and publishing modular Web3 components","maintainers":[{"name":"0day-network","email":"zeroday.network@proton.me"}],"readme":"# ZeroCode CLI\n\nA comprehensive Node.js/TypeScript CLI for bundling React components and publishing them to the URT protocol.\n\n## Features\n\n- **Component Bundling**: Single-file ESM bundles with tree-shaking and minification\n- **Manifest Generation**: Automatic generation of prepublish and publish manifests\n- **Offchain Storage**: Integration with p2p-0storage for decentralized content storage\n- **Onchain Publishing**: Direct integration with URT protocol smart contracts\n- **Development Mode**: File watching with automatic rebuilds\n- **Wallet Management**: Built-in wallet generation and management\n\n## Installation\n\n### Global Installation (Development Mode)\n\nFor development with the local CLI from source:\n\n```bash\n# From the zerocode-cli directory\ncd packages/zerocode-cli\nnpm install\nnpm run build\nnpm link\n\n# Now you can use 'zc' globally\nzc --help\n```\n\nTo unlink later:\n\n```bash\nnpm unlink -g zerocode-cli\n```\n\n### Production Installation\n\n```bash\nnpm install -g zerocode-cli\nzc --help\n```\n\n## Development Setup (Local/From Source)\n\n### Prerequisites\n\nMake sure you have the following services running locally:\n\n- **p2p-0storage**: Running on `http://localhost:4000`\n- **Local blockchain**: Anvil, Hardhat, or testnet\n- **Core protocol**: Deployed URT contracts\n\n### Step-by-Step Setup\n\n1. **Clone and setup the CLI** (development mode)\n\n   ```bash\n   # From the monorepo root\n   cd packages/zerocode-cli\n   npm install\n   npm run build\n\n   # Link for global access (optional)\n   npm link\n   ```\n\n2. **Initialize a new project**\n\n   ```bash\n   # Create a new directory for your components\n   mkdir my-zerocode-project\n   cd my-zerocode-project\n\n   # Option 1: Using global CLI (if npm linked)\n   zc init --dev --git --ui\n\n   # Option 2: Direct CLI execution (from source)\n   npx tsx ../../packages/zerocode-cli/bin/cli.ts init --dev --git --ui\n\n   # Option 3: Basic init without flags\n   zc init\n   ```\n\n   Available flags:\n\n   - `--dev`: Generate package.json with local CLI references for monorepo development\n   - `--git`: Initialize git repository and create initial commit\n   - `--ui`: Generate additional UI components (input, textarea, select, etc.)\n   - `--force`: Overwrite existing configuration files\n\n3. **Configure environment variables**\n\n   ```bash\n   # Edit the generated .env file\n   nano .env\n   ```\n\n   Set the required variables:\n\n   ```env\n   # Generate a new wallet or use existing one\n   PRIVATE_KEY=0x1234567890abcdef...\n\n   # Deploy a URT contract (see step 4) and set its address\n   URT_ADDRESS=0xYourURTContractAddress\n\n   # Local services\n   P2P_URL=http://localhost:8787\n   CHAIN_ID=31337  # For local Anvil\n   RPC_URL=http://localhost:8545\n\n   # Registry address from core deployment\n   REGISTRY_ADDRESS=0xRegistryContractAddress\n\n   # Model IDs are pre-configured with defaults\n   ```\n\n4. **Deploy URT contract** (if needed)\n\n   ```bash\n   # From the core directory\n   cd ../../core\n   npm install\n   npm run build\n\n   # Start local blockchain (if not already running)\n   npx hardhat node\n   # or\n   anvil\n\n   # Deploy contracts (in another terminal)\n   npx hardhat run scripts/00_deploy_local.ts --network localhost\n\n   # Copy the URT address from deployment output to your .env\n   ```\n\n5. **Start p2p-0storage** (if not already running)\n\n   ```bash\n   # From the p2p-0storage directory\n   cd ../../p2p-0storage\n   npm install\n   npm start\n   # Should be running on http://localhost:8787\n   ```\n\n6. **Configure the CLI project**\n\n   ```bash\n   # Back to your project directory\n   cd my-zerocode-project\n\n   # Update zerocode.yaml with your addresses\n   nano zerocode.yaml\n   ```\n\n   Update the publisher and registry addresses:\n\n   ```yaml\n   publisher: \"0xYourSignerAddress\" # Address derived from PRIVATE_KEY\n   registry: \"0xYourRegistryAddress\" # From core deployment\n   ```\n\n7. **Check system health**\n\n   ```bash\n   npx tsx ../../packages/zerocode-cli/bin/cli.ts health\n   ```\n\n   This command will verify:\n\n   - Configuration files are valid\n   - Environment variables are set\n   - URT authentication is working\n   - p2p-0storage is reachable\n   - Model IDs are configured\n\n8. **Build components**\n\n   ```bash\n   # Build all components\n   npx tsx ../../packages/zerocode-cli/bin/cli.ts build --all\n\n   # Or build specific component\n   npx tsx ../../packages/zerocode-cli/bin/cli.ts build --component Hero\n   ```\n\n9. **Validate manifests**\n\n   ```bash\n   npx tsx ../../packages/zerocode-cli/bin/cli.ts validate --all\n   ```\n\n10. **Development workflow**\n\n    ```bash\n    # Start development mode (auto-rebuild on changes)\n    npx tsx ../../packages/zerocode-cli/bin/cli.ts dev\n\n    # In another terminal, test commit (offchain)\n    npx tsx ../../packages/zerocode-cli/bin/cli.ts commit --all\n\n    # Test publish (onchain) - requires funded wallet\n    npx tsx ../../packages/zerocode-cli/bin/cli.ts publish --all\n    ```\n\n### Development Tips\n\n- **Hot reload**: Use `zc dev` to automatically rebuild on file changes\n- **Check wallet**: Use `zc whoami` to verify configuration\n- **Health check**: Use `zc health` to diagnose issues\n- **Mock mode**: CLI falls back to mocks if services are unavailable\n- **Local testing**: All operations work with local blockchain and p2p-0storage\n\n### Troubleshooting\n\n**CLI not found**: Use full path `npx tsx ../../packages/zerocode-cli/bin/cli.ts` instead of `zc`\n\n**URT authentication failed**: Verify `URT_ADDRESS` and `PRIVATE_KEY` match deployed contract\n\n**P2P-0storage unreachable**: Make sure p2p-0storage is running on port 8787\n\n**Transaction failed**: Ensure your wallet has sufficient ETH for gas\n\n**Build errors**: Check that your React components follow the expected structure\n\n## Production Setup (Published CLI)\n\nFor production use, install the CLI from npm:\n\n```bash\nnpm install -g zerocode-cli\nzc init\n# Follow the same steps as development mode\n```\n\n## Commands\n\n### `zc init`\n\nInitialize a new zerocode project with example components and configuration.\n\nOptions:\n\n- `-f, --force`: Overwrite existing configuration\n\n### `zc build`\n\nBundle components into single-file ESM modules and generate manifests.\n\nOptions:\n\n- `-c, --component <name>`: Build specific component\n- `-a, --all`: Build all components\n\n### `zc validate`\n\nValidate component manifests against JSON schemas.\n\nOptions:\n\n- `-c, --component <name>`: Validate specific component\n- `-a, --all`: Validate all components\n\n### `zc commit`\n\nCommit components to offchain storage (p2p-0storage).\n\nOptions:\n\n- `-c, --component <name>`: Commit specific component\n- `-a, --all`: Commit all components\n\n### `zc publish`\n\nPublish components onchain to URT protocol contracts.\n\nOptions:\n\n- `-c, --component <name>`: Publish specific component\n- `-a, --all`: Publish all components\n\n### `zc dev`\n\nStart development mode with file watching and automatic rebuilds.\n\nOptions:\n\n- `-c, --component <name>`: Watch specific component (default: all)\n\n### `zc whoami`\n\nDisplay current wallet address, URT configuration, and authentication status.\n\n### `zc login`\n\nConfigure wallet for onchain operations.\n\nOptions:\n\n- `--new`: Generate a new wallet\n- `--key <privateKey>`: Use existing private key\n\n### `zc health`\n\nCheck system health and configuration status. Verifies:\n\n- Configuration files\n- Environment variables\n- URT authentication\n- p2p-0storage connectivity\n- Model IDs setup\n\n## Configuration\n\nThe CLI is configured via `zerocode.yaml`:\n\n```yaml\nname: \"zerocode-modules\"\npublisher: \"0xYourAddress\"\nchainId: 8453 # Base mainnet\nrpcUrl: \"https://mainnet.base.org\"\nregistry: \"0xRegistryAddress\"\n\nstorage:\n  driver: \"p2p-0storage\"\n  baseUrl: \"http://localhost:8787\"\n\nbuild:\n  outdir: \"./dist\"\n  format: \"esm\"\n  target: \"es2022\"\n  minify: true\n  external:\n    - react\n    - react-dom\n\nresolveAliases:\n  \"@/components\": \"./src/components\"\n  \"@/lib\": \"./src/lib\"\n\ncomponents:\n  - name: \"Hero\"\n    entry: \"./src/components/Hero/index.tsx\"\n    version: \"0.1.0\"\n    description: \"Hero section component\"\n    # ... component configuration\n```\n\n## Environment Variables\n\nCreate a `.env` file with:\n\n```env\n# ===== AUTHENTICATION =====\n# Private key for your URT (Universal Responsibility Token)\nPRIVATE_KEY=your_private_key_here\n\n# Your URT contract address (each module is published from its own URT)\nURT_ADDRESS=0xYourURTContract\n\n# ===== P2P STORAGE =====\n# P2P-0storage API endpoint for offchain storage\nP2P_URL=http://localhost:8787\n\n# Optional: IPFS API if p2p-0storage uses IPFS backend\nIPFS_API_URL=http://127.0.0.1:5001\n\n# ===== BLOCKCHAIN =====\n# Chain ID (8453 = Base mainnet, 84532 = Base Sepolia)\nCHAIN_ID=8453\n\n# RPC endpoint for blockchain interactions\nRPC_URL=https://mainnet.base.org\n\n# URT Registry contract address (from core protocol deployment)\nREGISTRY_ADDRESS=0xRegistryContract\n```\n\n### URT Authentication\n\nThe CLI uses **URT-based authentication** for all operations:\n\n1. **Each module is published from its own URT contract**\n2. **The URT uses EIP-1271 (`isValidSignature`) for authentication**\n3. **P2P-0storage requires URT signatures for all operations**\n4. **Onchain publishing is done via URT's `callContract` function**\n\nMake sure your `PRIVATE_KEY` corresponds to the admin of the `URT_ADDRESS` contract.\n\n## Project Structure\n\nAfter initialization:\n\n```\nyour-project/\n├── zerocode.yaml          # CLI configuration\n├── .env                   # Environment variables\n├── src/\n│   └── components/\n│       ├── Hero/\n│       │   ├── index.tsx\n│       │   └── props.schema.ts\n│       └── Button/\n│           └── index.tsx\n└── dist/                  # Build output\n    ├── Hero/\n    │   ├── index.js\n    │   ├── build.manifest.json\n    │   ├── publish.manifest.json\n    │   ├── commit.result.json\n    │   └── publish.result.json\n    └── Button/\n        └── ...\n```\n\n## Development\n\n### Building from source\n\n```bash\nnpm run build\n```\n\n### Running in development\n\n```bash\nnpm run dev\n```\n\n## Integration\n\nThe CLI integrates with:\n\n- **p2p-0storage**: For offchain content storage with URT authentication\n- **URT Core Contracts**: For URT-based onchain module registration via `callContract`\n- **URT Protocol**: Each module is published from its own URT using EIP-1271 signatures\n- **Zerocode App**: Optional hooks for UI integration\n\n### URT Protocol Integration\n\n1. **Authentication**: All operations use URT's `isValidSignature` (EIP-1271)\n2. **Publishing**: Modules are published via URT's `callContract` function\n3. **Verification**: P2P-0storage verifies signatures against URT contracts\n4. **Ownership**: Each module belongs to a specific URT, enabling decentralized governance\n\n## License\n\nMIT\n","readmeFilename":"README.md"}