- make `ipAddress` optional in `TypesenseProcessManager`
- remove default ip address fallback
- conditionally add peering address arguments to process startup
- restructure argument building for better readability
- add dynamic log level setting based on application's logger level
- use `debug` level when application is in debug mode
- fallback to `info` level for all other cases
- add `networkInterfaces` detection for CI environments
- make `ip` parameter optional in test command
- add fallback to default ip for non-CI environments
- introduce `isInCi` flag to control ip detection behavior
- handle null ip case in `writeToNodesFile`
- Add benchmark command to compare performance between commits
- Add time-based metrics for search and indexing operations
- Add result formatting with percentage change calculations
- Add configurable failure threshold for performance regression
- Add container and process management for test execution
- Add `validateK6Environment` function for env var validation
- Add type-safe validation for required k6 environment variables
- Add specific validation rules for numeric, string, and duration values
- Add error reporting for invalid environment configurations
- Add `NodeConfig` interface for typesense node configuration
- Add `initNode` method to validate node configuration
- Make `snapshotPath` optional with default value
- Add option to disable multi-node mode in `startProcess`
- Simplify process error handling and cleanup
- Add `Album` interface for music data structure
- Add `NumericIndices` type helper for array index types
- Add `EnsureExhaustive` type for record validation
- Add `EnvVariableKey` generic type for environment variables
- add `openAIEmbeddingTest` method to test custom dimension embeddings
- add `getCollection` method to `TypesenseProcessManager` for validation
- add node config tracking to `IntegrationTests` class for process management
- update test chain to include openai embedding test step
- add `snapshotTest` method to run snapshot test
- add private `verifySnapshot` method to check if snapshot file exists
- add private `saveSnapshot` method to take a snapshot of the Typesense process
- update `test` command to run `snapshotTest` after `conversationTest`
- add `snapshotPath` option to `integrationTestOptionsSchema` and `test` command
- pass `snapshotPath` to `IntegrationTests` constructor
- add `getSnapshotPath` getter to `TypesenseProcessManager`
- add `snapshot` method to `TypesenseProcessManager` to take a snapshot of a Typesense process
- extract `writeToNodesFile`, `createDataDirectories`, `mapNodesToDirectories` and `startAndVerifyProcesses` into a new `setupProcesses` method
- make extracted methods private
- update `test` command to use `setupProcesses` method
- simplify `test` command by removing unnecessary variable assignments
- Add `tests` command to run typesense integration tests
- Implement conversation model and collection creation
- Add base collection with text embedding support
- Add health check verification for cluster nodes
- Support multiple node configuration with data directories
- Create typesense client instance with connection configuration
- Add methods for collection operations (create, query, index)
- Add conversation model creation support
- Add health check capability via `callOutToProcess`
- Make processes map public for external access
- Update `buildAndSave` method to return the full destination path
- Modify `save` method to return the build destination for downstream use
- Chain results using `map` to propagate the destination path
- Export `dirName` constant using `fileURLToPath` for ESM compatibility
- Replace hardcoded `__dirname` with `dirName` in `install.ts` command
- Fix imports ordering in `install.ts` for better readability
- Add process controller with cleanup and event handling
- Add process manager with process lifecycle methods
- Add port mapping for multiple nodes
- Add executable validation and process spawning
- Add createDirectory method with option to empty existing dir
- Add yesToAll flag to skip prompts
- Extract directory validation logic into reusable methods
- Add readdir check for empty directories
- Improve error handling and feedback
- Add `install` command to handle typesense installation flow
- Add command-line options parsing with zod schema validation
- Add service orchestration for build process
- Add error handling and progress reporting
- Add verbose logging support and yes-to-all flag
- Add `ServiceContainer` class to manage service dependencies
- Add initialization logic for filesystem, docker, and git services
- Add support for both host and container git operations
- Add typesense manager integration
- Add service retrieval with type safety
- Add `DockerService` class to handle container lifecycle operations
- Add methods for container validation, execution, and file copying
- Add support for building images with platform-specific configuration
- Add container start/stop operations with parallel processing
- Add logging and progress indicators using `ora` spinners
- Add `FilesystemService` class to handle directory operations
- Implement methods for existence checks, path resolution and cleanup
- Add platform detection utility for cross-platform support
- Add interactive prompt for directory creation using `inquirer`
- add `parseOptions` function that validates options against zod schema
- return validated data using `neverthrow` result type
- handle validation errors with detailed messages
- add `error.ts` with type-safe error handling functions
- add `handleError` for general and `zod` validation errors
- add tests covering various error scenarios and edge cases
- implement singleton logger with multiple log levels (ERROR, WARN, INFO, DEBUG)
- support colored output using chalk for different log types
- add message formatting for errors and objects
- include tests for logger behavior, levels and color output
- implement break method for line spacing