# Context Installer Scripts TypeScript implementation of the context installer for the Claude Code plugin. ## Overview This directory contains a TypeScript-based context installer that downloads context files from the OpenAgents Control repository using git sparse-checkout. ## Files ### Core Implementation - **`install-context.ts`** - Main installer script with CLI interface - **`test-install.ts`** - Test script for verifying installation against real GitHub repository ### Type Definitions - **`types/registry.ts`** - Registry schema and types (with Zod validation) - **`types/manifest.ts`** - Manifest schema and types ### Utilities - **`utils/registry-fetcher.ts`** - Fetch and parse registry.json from GitHub - **`utils/git-sparse.ts`** - Git sparse-checkout operations ## Usage ### Install Context ```bash # Install essential profile (default) bun run plugins/claude-code/scripts/install-context.ts # Install specific profile bun run plugins/claude-code/scripts/install-context.ts --profile=standard # Install specific components bun run plugins/claude-code/scripts/install-context.ts --component=core-standards --component=openagents-repo # Dry run (see what would be installed) bun run plugins/claude-code/scripts/install-context.ts --profile=extended --dry-run # Force reinstall with verbose output bun run plugins/claude-code/scripts/install-context.ts --force --verbose ``` ### Run Tests ```bash # Run test suite bun run plugins/claude-code/scripts/test-install.ts ``` ## Profiles - **essential** - Minimal components for basic functionality - **standard** - Standard components for typical use - **extended** - Extended components for advanced features - **specialized** - Specialized components for specific domains - **all** - All available context ## Features ✅ Fetch registry.json from GitHub ✅ Parse and validate with Zod ✅ Filter context components by profile ✅ Download using git sparse-checkout ✅ Create manifest tracking installation ✅ Handle errors gracefully ✅ Dry run mode ✅ Verbose logging ✅ Force reinstall option ## Architecture ### Registry Fetching The `registry-fetcher` utility: 1. Fetches registry.json from GitHub raw URL 2. Validates structure with Zod schema 3. Filters components by profile or custom IDs 4. Extracts unique directory paths for sparse checkout ### Git Sparse Checkout The `git-sparse` utility: 1. Clones repository with `--filter=blob:none --sparse` 2. Configures sparse-checkout for specific paths 3. Copies files to target directory 4. Cleans up temporary files ### Manifest Creation The installer creates a `.context-manifest.json` file tracking: - Installation profile - Source repository and commit SHA - Downloaded components with local paths - Installation timestamp ## Testing The test script (`test-install.ts`) verifies: 1. **Registry Fetch** - Fetches from real GitHub repository 2. **Profile Filtering** - Filters components by profile 3. **Dry Run** - Simulates installation without downloading To test actual installation, uncomment Test 4 in `test-install.ts`. ## Example Output ``` Context Installer ======================== ℹ Profile: essential ℹ Repository: darrenhinde/OpenAgentsControl ℹ Branch: main ℹ Dry run: false ℹ Fetching registry from GitHub... ✓ Registry version: 2.0.0 ✓ Context components available: 150 ℹ Filtering by profile: essential ✓ Selected 12 components ℹ Downloading context files... ✓ Files downloaded successfully ℹ Copying files to context directory... ✓ Files copied to: /path/to/context ℹ Creating manifest... ✓ Manifest created: .context-manifest.json ℹ Verifying installation... ✓ Installation complete! ℹ Files verified: 12/12 ``` ## Error Handling The installer handles: - Network failures (GitHub unavailable) - Invalid registry structure - Git command failures - Missing dependencies (git not installed) - File system errors All errors are logged with clear messages and the installer exits with appropriate exit codes. ## Dependencies - **Bun** - Runtime and package manager - **Zod** - Schema validation - **Git** - Sparse checkout operations ## Development ### Type Safety All types are defined in `types/` directory with Zod schemas for runtime validation. ### Testing Run tests before committing changes: ```bash bun run plugins/claude-code/scripts/test-install.ts ``` ### Adding New Profiles To add a new profile, update the `Profile` type in `types/registry.ts` and the profile mapping in `utils/registry-fetcher.ts`. ## Migration from JavaScript This TypeScript implementation replaces the original `install-context.js` with: - Type safety with TypeScript and Zod - Better error handling - Modular architecture - Comprehensive testing - Improved documentation The JavaScript version is kept for backward compatibility but the TypeScript version is recommended for new installations.