{"_id":"@akoenig/vex","_rev":"6-9bc5381695f9dfd42d0117fe81f96d00","name":"@akoenig/vex","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@akoenig/vex","version":"0.1.0","keywords":["cli","configuration","symlink","network-share"],"author":"","license":"MIT","_id":"@akoenig/vex@0.1.0","maintainers":[{"name":"akoenig","email":"hello@andrekoenig.de"}],"bin":{"vex":"dist/main.js"},"dist":{"shasum":"cce5df1afdcf306f53466bda9239db307dfba0c3","tarball":"https://registry.npmjs.org/@akoenig/vex/-/vex-0.1.0.tgz","fileCount":127,"integrity":"sha512-awYhHCrM4WvjFERsPrBpXS/5kud09Nkc3sGNdqhzZJaRcJnxkVh934ET6obznw9MJsd7rq1Vn/NcFx1zTI07iw==","signatures":[{"sig":"MEQCIGgYIyZjUvVRwLXfnyTha44oDMtuWRw7u/jT/DA2URUWAiAkAtlemkh7rz7ARLZkX+yxb0vYKjg/p/EMYRifUJtR8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":200833},"main":"dist/main.js","type":"module","_from":"file:akoenig-vex-0.1.0.tgz","types":"./dist/main.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsx src/main.ts","lint":"biome lint src/","test":"vitest run","build":"tsc","format":"biome format src/ --write","release":"pnpm build && changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"akoenig","email":"hello@andrekoenig.de"},"_resolved":"/tmp/cd5ce314ff72a1788ee4924367dfeadd/akoenig-vex-0.1.0.tgz","_integrity":"sha512-awYhHCrM4WvjFERsPrBpXS/5kud09Nkc3sGNdqhzZJaRcJnxkVh934ET6obznw9MJsd7rq1Vn/NcFx1zTI07iw==","_npmVersion":"10.9.2","description":"CLI tool for managing files from network shares","directories":{},"_nodeVersion":"22.17.1","dependencies":{"effect":"^3.17.1","@effect/cli":"^0.69.0","@effect/platform":"^0.90.0","@effect/platform-node":"^0.94.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","vitest":"^3.2.4","typescript":"^5.8.3","@types/node":"^22.16.5","@biomejs/biome":"2.1.2","@effect/vitest":"^0.25.0","@changesets/cli":"^2.29.5"},"_npmOperationalInternal":{"tmp":"tmp/vex_0.1.0_1753274621468_0.4578579256808568","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@akoenig/vex","version":"0.2.0","keywords":["cli","configuration","symlink","network-share"],"author":"","license":"MIT","_id":"@akoenig/vex@0.2.0","maintainers":[{"name":"akoenig","email":"hello@andrekoenig.de"}],"homepage":"https://github.com/akoenig/tools#readme","bugs":{"url":"https://github.com/akoenig/tools/issues"},"bin":{"vex":"dist/main.js"},"dist":{"shasum":"fe5e8f5bd96fef7f1bde8941b9487bddd2ff7623","tarball":"https://registry.npmjs.org/@akoenig/vex/-/vex-0.2.0.tgz","fileCount":144,"integrity":"sha512-P2KrSsh+iry8fqbvw0urgtUm/GweYdaptpVi59+mEDrlGRlT8ujNIdTJ0WKLcmSctNJpYQ3s+vmiDO+tLI4TXg==","signatures":[{"sig":"MEUCIHUXB1tGNsA95OHrlXiT4NWtytPMEkAiyo5TUFm0Q8l4AiEAuxn3yswC1HJrzmbNHgD1AyVI0hLIPM3zRxG7aQeyc5U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":276112},"main":"dist/main.js","type":"module","_from":"file:akoenig-vex-0.2.0.tgz","types":"./dist/main.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js"}},"scripts":{"dev":"tsx src/main.ts","lint":"biome lint src/","test":"vitest run","build":"tsc","format":"biome format src/ --write","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"biome check src/","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"akoenig","email":"hello@andrekoenig.de"},"_resolved":"/tmp/nix-shell.nAHnP0/62decad216b1d8a6a047806418c0eff4/akoenig-vex-0.2.0.tgz","_integrity":"sha512-P2KrSsh+iry8fqbvw0urgtUm/GweYdaptpVi59+mEDrlGRlT8ujNIdTJ0WKLcmSctNJpYQ3s+vmiDO+tLI4TXg==","repository":{"url":"git+https://github.com/akoenig/tools.git","type":"git","directory":"packages/vex"},"_npmVersion":"10.9.2","description":"CLI tool for managing files from network shares","directories":{},"_nodeVersion":"22.17.0","dependencies":{"effect":"^3.17.1","@effect/cli":"^0.69.0","@effect/platform":"^0.90.0","@effect/platform-node":"^0.94.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","@types/node":"^22.16.5","@effect/vitest":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/vex_0.2.0_1753345713599_0.08119840005468171","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@akoenig/vex","version":"0.2.1","keywords":["cli","configuration","symlink","network-share"],"author":"","license":"MIT","_id":"@akoenig/vex@0.2.1","maintainers":[{"name":"akoenig","email":"hello@andrekoenig.de"}],"homepage":"https://github.com/akoenig/tools#readme","bugs":{"url":"https://github.com/akoenig/tools/issues"},"bin":{"vex":"dist/main.js"},"dist":{"shasum":"88984e5e2839b05f3d21d82bb98f8f37638b2d82","tarball":"https://registry.npmjs.org/@akoenig/vex/-/vex-0.2.1.tgz","fileCount":144,"integrity":"sha512-8OIR/g/Ofc23arLAHXhZw3QWZxrrQ68V5gPqMadrcD1zsXZryiYvgGf6VDwrpjk3ym80PwnXghbXEQc/573qMA==","signatures":[{"sig":"MEQCIGfuMFQ/ynWwiikka8kMsOjeI1wYReUOG7qcePLeuCkQAiBrClwwmTfmqDoa8Bmo+JO+9EFlnMHhlR4aAgUtHlh71g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":276519},"main":"dist/main.js","type":"module","_from":"file:akoenig-vex-0.2.1.tgz","types":"./dist/main.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js"}},"scripts":{"dev":"tsx src/main.ts","lint":"biome lint src/","test":"vitest run","build":"tsc","format":"biome format src/ --write","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"biome check src/","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"akoenig","email":"hello@andrekoenig.de"},"_resolved":"/tmp/nix-shell.Asiuad/dac85da7b31359d2586de60568fa24f4/akoenig-vex-0.2.1.tgz","_integrity":"sha512-8OIR/g/Ofc23arLAHXhZw3QWZxrrQ68V5gPqMadrcD1zsXZryiYvgGf6VDwrpjk3ym80PwnXghbXEQc/573qMA==","repository":{"url":"git+https://github.com/akoenig/tools.git","type":"git","directory":"packages/vex"},"_npmVersion":"10.9.2","description":"CLI tool for managing files from network shares","directories":{},"_nodeVersion":"22.17.0","dependencies":{"effect":"^3.17.1","@effect/cli":"^0.69.0","@effect/platform":"^0.90.0","@effect/platform-node":"^0.94.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","@types/node":"^22.16.5","@effect/vitest":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/vex_0.2.1_1753347457676_0.5494041017423974","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@akoenig/vex","version":"0.2.2","keywords":["cli","configuration","symlink","network-share"],"author":"","license":"MIT","_id":"@akoenig/vex@0.2.2","maintainers":[{"name":"akoenig","email":"hello@andrekoenig.de"}],"homepage":"https://github.com/akoenig/tools#readme","bugs":{"url":"https://github.com/akoenig/tools/issues"},"bin":{"vex":"dist/main.js"},"dist":{"shasum":"5d58f96718e5c0de98dbd1af0c45c4ab18b0f455","tarball":"https://registry.npmjs.org/@akoenig/vex/-/vex-0.2.2.tgz","fileCount":162,"integrity":"sha512-MrQkqv/NJZit20YGnKbrH0YHKOqipMBraqcxM5A3Zxy0Y4H6wvUJQwMGUbInBUrkv6vqwsTpTsbWLhdcE+p08Q==","signatures":[{"sig":"MEUCIQCeK4tfW0l02GYbzF5hCzx4c7ejyZ07tPU4nfwkX/7FgAIgbBUSmNhHNy4FPb9lf0f7Fbx1wN/GCwRDQuqNTyMEMkQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":320603},"main":"dist/main.js","type":"module","_from":"file:akoenig-vex-0.2.2.tgz","types":"./dist/main.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js"}},"scripts":{"dev":"tsx src/main.ts","lint":"biome lint src/","test":"vitest run","build":"tsc","format":"biome format src/ --write","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"biome check src/","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"akoenig","email":"hello@andrekoenig.de"},"_resolved":"/tmp/nix-shell.F9Fdik/038b4720f8b5b4a969183534ecb8575c/akoenig-vex-0.2.2.tgz","_integrity":"sha512-MrQkqv/NJZit20YGnKbrH0YHKOqipMBraqcxM5A3Zxy0Y4H6wvUJQwMGUbInBUrkv6vqwsTpTsbWLhdcE+p08Q==","repository":{"url":"git+https://github.com/akoenig/tools.git","type":"git","directory":"packages/vex"},"_npmVersion":"10.9.2","description":"CLI tool for managing files from network shares","directories":{},"_nodeVersion":"22.17.0","dependencies":{"effect":"^3.17.1","@effect/cli":"^0.69.0","@effect/platform":"^0.90.0","@effect/platform-node":"^0.94.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","@types/node":"^22.16.5","@effect/vitest":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/vex_0.2.2_1753362293687_0.3997929939242346","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@akoenig/vex","version":"0.2.3","keywords":["cli","configuration","symlink","network-share"],"author":"","license":"MIT","_id":"@akoenig/vex@0.2.3","maintainers":[{"name":"akoenig","email":"hello@andrekoenig.de"}],"homepage":"https://github.com/akoenig/tools#readme","bugs":{"url":"https://github.com/akoenig/tools/issues"},"bin":{"vex":"dist/main.js"},"dist":{"shasum":"a81d909ddb5565a84d763c3db2a18c327452e6af","tarball":"https://registry.npmjs.org/@akoenig/vex/-/vex-0.2.3.tgz","fileCount":159,"integrity":"sha512-k9KsTsPhFbLI60Ut2ChyzfG/4AyfyNvzpG3yR99jL/Hha2laRCzvzjarc1CHZjnhOSS1hvvPtKX2ydQaV7aAww==","signatures":[{"sig":"MEYCIQD4ofbiRtWoXKy50RgMROWPXJNOF/WNahmiv60aZvXE+QIhALeteCydVbONsNL0yR4s3tUMKcDsV+IY8vb2KLL0Hdy0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":321578},"main":"dist/main.js","type":"module","_from":"file:akoenig-vex-0.2.3.tgz","types":"./dist/main.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/main.d.ts","import":"./dist/main.js"}},"scripts":{"dev":"tsx src/main.ts","lint":"biome lint src/","test":"vitest run","build":"tsc","format":"biome format src/ --write","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"biome check src/","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"akoenig","email":"hello@andrekoenig.de"},"_resolved":"/tmp/nix-shell.11fpGS/5314769443d139131df456bd1c504376/akoenig-vex-0.2.3.tgz","_integrity":"sha512-k9KsTsPhFbLI60Ut2ChyzfG/4AyfyNvzpG3yR99jL/Hha2laRCzvzjarc1CHZjnhOSS1hvvPtKX2ydQaV7aAww==","repository":{"url":"git+https://github.com/akoenig/tools.git","type":"git","directory":"packages/vex"},"_npmVersion":"10.9.2","description":"CLI tool for managing files from network shares","directories":{},"_nodeVersion":"22.17.0","dependencies":{"effect":"^3.17.1","@effect/cli":"^0.69.0","@effect/platform":"^0.90.0","@effect/platform-node":"^0.94.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","@types/node":"^22.16.5","@effect/vitest":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/vex_0.2.3_1753364014170_0.5932416242851692","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@akoenig/vex","version":"0.3.0","description":"CLI tool for managing files from network shares","type":"module","main":"dist/main.js","exports":{".":{"import":"./dist/main.js","types":"./dist/main.d.ts"}},"bin":{"vex":"dist/main.js"},"keywords":["cli","configuration","symlink","network-share"],"author":"","license":"MIT","repository":{"type":"git","url":"git+https://github.com/akoenig/tools.git","directory":"packages/vex"},"dependencies":{"@effect/cli":"^0.69.0","@effect/platform":"^0.90.0","@effect/platform-node":"^0.94.0","effect":"^3.17.1"},"devDependencies":{"@effect/vitest":"^0.25.0","@types/node":"^22.16.5","tsx":"^4.20.3"},"engines":{"node":">=18.0.0"},"scripts":{"build":"tsc","dev":"tsx src/main.ts","lint":"biome lint src/","format":"biome format src/ --write","format:check":"biome check src/","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_id":"@akoenig/vex@0.3.0","types":"./dist/main.d.ts","bugs":{"url":"https://github.com/akoenig/tools/issues"},"homepage":"https://github.com/akoenig/tools#readme","_integrity":"sha512-MscLQRPwA1Ir9DE1TzvHmD0l1JIrP06jHF0kwYPd8iCHWSuGeMCF/WIQp7uiPD0uPSG+4esenjmjYNTIC+4h1w==","_resolved":"/tmp/nix-shell.HASP1U/84e1da74d2234fd63d003b12972b98f7/akoenig-vex-0.3.0.tgz","_from":"file:akoenig-vex-0.3.0.tgz","_nodeVersion":"22.17.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-MscLQRPwA1Ir9DE1TzvHmD0l1JIrP06jHF0kwYPd8iCHWSuGeMCF/WIQp7uiPD0uPSG+4esenjmjYNTIC+4h1w==","shasum":"3d21fc36d4a52177187289aab6c4f0301071689a","tarball":"https://registry.npmjs.org/@akoenig/vex/-/vex-0.3.0.tgz","fileCount":159,"unpackedSize":322580,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBUYx0ul2SIl8/5JLrSmzpm9uvq2+2xnbhUrZilRGaZwAiArJgei9aYlb8RgHeemI1rae521dh+MBBBfVc1yz4ddCQ=="}]},"_npmUser":{"name":"akoenig","email":"hello@andrekoenig.de"},"directories":{},"maintainers":[{"name":"akoenig","email":"hello@andrekoenig.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vex_0.3.0_1753366315443_0.19336357537447246"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-23T12:43:41.401Z","modified":"2025-07-24T14:11:55.889Z","0.1.0":"2025-07-23T12:43:41.685Z","0.2.0":"2025-07-24T08:28:33.781Z","0.2.1":"2025-07-24T08:57:37.868Z","0.2.2":"2025-07-24T13:04:53.867Z","0.2.3":"2025-07-24T13:33:34.362Z","0.3.0":"2025-07-24T14:11:55.710Z"},"bugs":{"url":"https://github.com/akoenig/tools/issues"},"license":"MIT","homepage":"https://github.com/akoenig/tools#readme","keywords":["cli","configuration","symlink","network-share"],"repository":{"type":"git","url":"git+https://github.com/akoenig/tools.git","directory":"packages/vex"},"description":"CLI tool for managing files from network shares","maintainers":[{"name":"akoenig","email":"hello@andrekoenig.de"}],"readme":"# @akoenig/vex\n\nCLI tool for managing files from network shares to local repositories via symlinks.\n\n## Why?\n\nSometimes you want to have files that are synced, but not part of a git repository.\n\n## Installation\n\n```bash\nnpm install -g @akoenig/vex\n```\n\n## Usage\n\n### Basic Commands\n\n#### Bind Project to Vault\n```bash\nvex bind <vault-path> [(-p, --project-path directory)]\n```\n\n#### Unbind Project from Vault\n```bash\nvex unbind [(-p, --path directory)]\n```\n\n#### List Configurations\n```bash\nvex list\n```\n\n#### Project Status\n```bash\nvex status [project-path]\n```\n\n#### Sync Project with Vault\n```bash\nvex sync [project-path]\n```\n\n#### Add File or Directory to Vault\n```bash\nvex add <path> [project-path]\n```\n\n#### Remove File from Vault\n```bash\nvex rm <path> [(-p, --project-path directory)] [(-f, --force)]\n```\n\n## Commands Explained\n\n### Status Command Output\n\nThe `vex status` command shows all files in the vault and their link status in your project:\n\n```bash\nvex status\n```\n\n**Output example:**\n```\nProject status for: /home/user/projects/my-app\n\n✅ Project is linked\n   Vault: /mnt/shared/team-configs\n   Linked at: 2024-01-15T10:30:00.000Z\n\n📁 Files and directories in vault (3):\n   ✅ CLAUDE.md (file properly linked)\n   ✅ templates/ (directory properly linked)\n   📄 .claude/config.json (file exists but not symlinked)\n   ⭕ new-prompt.md (not linked)\n\n⚠️  Some files have issues. Run 'vex sync' to fix them.\n```\n\n**Status Icons:**\n- ✅ **Properly linked**: File/directory exists in vault and is correctly symlinked in project\n- 📄 **File exists but not symlinked**: File exists in project but is not a symlink to vault\n- ⭕ **Not linked**: File exists in vault but has no corresponding file in project\n- 🔗 **Symlink points to wrong location**: Symlink exists but points to incorrect location\n- ❌ **Missing from vault**: File is expected but doesn't exist in vault\n\n### Sync Command\n\nThe `vex sync` command ensures your local project state matches the vault state by:\n\n**What it does:**\n- **Adds new files**: Creates symlinks for files that exist in vault but not in project\n- **Removes orphaned links**: Removes symlinks for files that no longer exist in vault\n- **Fixes broken links**: Recreates symlinks that exist but point to wrong locations\n- **Preserves working links**: Leaves correctly functioning symlinks unchanged\n\n**When to use sync:**\n- After team members add new files to the shared vault\n- When files are deleted from the shared vault\n- To fix broken or missing symlinks in your project\n- As part of your regular workflow to stay in sync with the team\n\n**Example output:**\n```bash\nvex sync\n\n✅ Project synced successfully\n   Vault: /mnt/shared/team-configs\n\n✅ Added items (2):\n   🔗 new-feature-prompt.md\n   🔗 configs/ (directory)\n\n🗑️  Removed items (1):\n   ➖ deprecated-prompt.md (no longer in vault)\n\n✅ Unchanged items (3):\n   🔗 CLAUDE.md\n   🔗 .claude/\n   🔗 templates/\n\n📊 Total linked items: 5\n```\n\n**Safety features:**\n- Non-destructive: Only modifies symlinks, never touches actual vault files\n- Atomic operations: Either all changes succeed or none are applied\n- Detailed reporting: Shows exactly what changed and why\n\n### Unbind Command\n\nThe `vex unbind` command completely removes a project from its vault:\n\n**What it does:**\n- Removes all symlinks from the project directory\n- Removes the project binding from the configuration\n- Preserves all files in the vault (no vault files are deleted)\n\n**Example output:**\n```bash\nvex unbind\n\n✅ Project unbound successfully\n   Project path: /home/user/projects/my-app\n   Previous vault: /mnt/shared/team-configs\n   Originally linked at: 2024-01-15T10:30:00.000Z\n\n🗑️  Removed symlinks (3):\n   📄 CLAUDE.md (file)\n   📄 templates/ (directory)\n   📄 .claude/ (directory)\n\n⚠️  Note: Files in the vault (/mnt/shared/team-configs) were not touched\n   Use 'vex bind <vault-path>' to bind this project again\n```\n\n## Directory Linking\n\nVex links entire directories as single units, not individual files within directories. This approach:\n\n- **Simplifies management**: One symlink per top-level item in the vault\n- **Maintains structure**: Directory hierarchies are preserved through symlinks\n- **Improves performance**: Fewer filesystem operations and symlinks to manage\n- **Enables atomic updates**: Directory contents can be updated without breaking links\n\n**Example:**\n```\nVault structure:\n/vault/\n├── README.md          (file)\n├── templates/         (directory)\n│   ├── prompt1.md\n│   └── prompt2.md\n└── configs/           (directory)\n    ├── app.json\n    └── subdir/\n        └── nested.yml\n\nProject structure after linking:\n/project/\n├── README.md -> /vault/README.md           (file symlink)\n├── templates/ -> /vault/templates/         (directory symlink)\n└── configs/ -> /vault/configs/             (directory symlink)\n```\n\n## Usage Scenarios\n\n### Team Configuration Sharing\n\n**Context**: Share Claude configurations across team members via network drive.\n\n```bash\ncd ~/projects/my-project\nvex bind /mnt/shared/team-configs\nvex status  # See what's linked\n```\n\n### Multiple Project Types\n\n**Context**: Different projects need different configurations.\n\n```bash\ncd ~/projects/frontend-app\nvex bind /nas/configs/frontend\n\ncd ~/projects/backend-api  \nvex bind /nas/configs/backend\n\nvex list  # View all bindings\n```\n\n### Adding and Removing Files\n\n**Context**: Contribute files to the shared vault or clean up obsolete files.\n\n```bash\n# Add new files to vault\necho \"New prompt\" > new-feature.md\nvex add new-feature.md\n\n# Remove obsolete files (with safety prompt)\nvex rm old-prompt.md --force\n```\n\n## Configuration\n\nConfigurations are stored in `~/.vex/`:\n- `configs.json` - Configuration definitions  \n- `projects.json` - Project bindings\n\n## File Discovery\n\nVex automatically discovers and links all top-level files and directories in the vault:\n\n- Links files and directories at the vault root level\n- Excludes system files (`.DS_Store`, `Thumbs.db`, etc.)\n- Maintains original directory structure through symlinks\n- Handles empty directories correctly\n\n## Development\n\nSee the [main repository README](../../README.md) for development instructions.","readmeFilename":"README.md"}