This refactor updates the LogSeverity enum to use string values instead of enum values. This change allows for better compatibility and flexibility when working with log severity levels. The enum values have been replaced with corresponding string values.
Files modified:
- Common/Types/Log/LogSeverity.ts
- Ingestor/API/OTelIngest.ts
- Ingestor/API/FluentIngest.ts
- Model/AnalyticsModels/Log.ts
- CommonUI/src/Components/LogsViewer/LogItem.tsx
- CommonUI/src/Components/LogsViewer/LogsViewer.tsx
- CommonUI/src/Components/Filters/DropdownFilter.tsx
- Common/Types/ObjectID.ts
- CommonUI/src/Components/Filters/FiltersForm.tsx
This refactor updates the Telemetry and InfrastructureStatus components to initialize telemetry with the correct service name. By using the APP_NAME constant defined in the Index.ts file, the service name is now dynamically set, ensuring accurate telemetry tracking.
Files modified:
- App/Index.ts
- CommonServer/Utils/Telemetry.ts
This refactor updates the TelemetryIngestor and Probe components to initialize telemetry with the correct service name. Previously, the service name was hardcoded or set to a default value, which could lead to inconsistencies and confusion. By using the APP_NAME constant defined in each component, the service name is now dynamically set, ensuring accurate telemetry tracking.
Files modified:
- TelemetryIngestor/Index.ts
- Probe/Index.ts
This refactor updates the APIKeyView and TelemetryIngestionKeyView components to use the RouteUtil.populateRouteParams function when navigating to other routes. This ensures that route parameters are properly populated, improving the reliability and consistency of the navigation logic.
This refactor updates the APIKeyView and TelemetryIngestionKeyView components to use the RouteUtil.populateRouteParams function when navigating to other routes. This ensures that route parameters are properly populated, improving the reliability and consistency of the navigation logic.
Files modified:
- Dashboard/src/Pages/Settings/APIKeyView.tsx
- Dashboard/src/Pages/Settings/TelemetryIngestionKeyView.tsx
The deprecated Service Token field in the TelemetryService model and related components was removed. This improves code cleanliness and removes unnecessary dependencies.
Files modified:
- Dashboard/src/Pages/Telemetry/Services/View/Index.tsx
- Dashboard/src/Pages/Telemetry/Services/View/Settings.tsx
- Model/Models/TelemetryService.ts
The ResetObjectID component in the Settings page was removed as it is no longer needed. This improves code cleanliness and reduces unnecessary dependencies.
Files modified:
- Dashboard/src/Pages/Telemetry/Services/View/Settings.tsx
Update SettingsRoutes to include lazy loading for images in the telemetry ingestion key view. This improves page load performance by loading images only when they are in the viewport.
Files modified:
- Dashboard/src/Routes/SettingsRoutes.tsx
This commit adds a new page, "Telemetry Ingestion Keys," to the Settings section of the dashboard. The page allows users to manage and view the telemetry ingestion keys used for data collection. It includes a list of keys and their associated details, such as name and creation date. This enhancement provides users with better control and visibility over their telemetry data.
Files modified:
- Dashboard/src/Utils/PageMap.ts
- Dashboard/src/Pages/Settings/SideMenu.tsx
- Dashboard/src/Routes/SettingsRoutes.tsx
This commit updates the styling and content of the Copilot module on the home page. The changes include adding a border-radius to the module, improving the visual appearance. Additionally, the text content of the module is modified to provide a clearer description of the services offered by OneUptime. These updates enhance the overall user experience and make the Copilot module more visually appealing.
Files modified:
- App/FeatureSet/Home/Views/Partials/copilot.ejs
This commit modifies the OneUptime chart to use the `probes` parameter instead of the `probe` parameter for configuring probes. The `probes` parameter now accepts a key-value pair where the key represents the probe name and the value contains the probe configuration details. This change improves the clarity and consistency of the chart configuration, making it easier to manage and maintain.
Files modified:
- HelmChart/Public/oneuptime/README.md
This commit adds a new configurable parameter `probe.<key>.key` to the OneUptime chart. It is recommended to set this parameter to a long random string to secure the probes. This enhancement improves the security of the OneUptime application by ensuring that only authorized entities can access and use the probes.
Files modified:
- HelmChart/Public/oneuptime/README.md
This commit updates the home page to include the Reviews module. The Reviews module displays a list of reviews from customers, providing social proof and enhancing the user experience. The necessary changes are made to the index.ejs file and the include statements for the Reviews module. This improvement showcases positive feedback and builds trust with potential customers.
Files modified:
- App/FeatureSet/Home/Views/index.ejs
- App/FeatureSet/Home/Views/Partials/reviews.ejs
This commit adds a new Reviews module to the Home feature set. The Reviews module contains a list of reviews that will be displayed on the home page. The home page is updated to include the Reviews module and pass the reviews list to the view template. This enhancement improves the user experience by showcasing positive feedback from customers.
Files modified:
- App/FeatureSet/Home/Index.ts
- App/FeatureSet/Home/Views/Partials/proudly-open-source.ejs
- App/FeatureSet/Home/Views/Partials/review.ejs
- App/FeatureSet/Home/Utils/Reviews.ts
This commit updates the content of the about page to better reflect the goals and vision of the project. It also adds a new section called "Our values" that highlights the principles that the company cares deeply about. This change improves the clarity and messaging of the about page, providing a better understanding of the project's purpose and values.
Files modified:
- App/FeatureSet/Home/Views/about.ejs
This commit renames the telemetry tables in the AnalyticsModels directory to have a "Telemetry" suffix (e.g., Log -> LogTelemetry, Metric -> MetricTelemetry, Span -> SpanTelemetry). It also updates the related code in the TelemetryAttribute, StatementGenerator, and DataMigrations files to reflect the table name changes. This change improves the clarity and consistency of the telemetry-related code.
Files modified:
- Model/AnalyticsModels/TelemetryAttribute.ts
- Model/AnalyticsModels/Log.ts
- Model/AnalyticsModels/Metric.ts
- Model/AnalyticsModels/Span.ts
- CommonServer/Tests/Services/AnalyticsDatabaseService.test.ts
- CommonServer/Tests/Utils/AnalyticsDatabase/StatementGenerator.test.ts
- App/FeatureSet/Workers/DataMigrations/Index.ts
- App/FeatureSet/Workers/DataMigrations/DeleteOldTelelmetryTable.ts
This commit adds the import statement for the ArrayUtil module to the TelemetryAPI file. The ArrayUtil module is used to remove duplicate attributes fetched from the server. This import ensures that the ArrayUtil functions can be used in the TelemetryAPI module, improving the efficiency and accuracy of attribute handling in the telemetry system.
This commit updates the MetricsTable component to fetch and display attributes for each metric. It adds a new API request to retrieve the attributes from the server and updates the component's state to store the fetched attributes. The attributes are then passed to the AnalyticsModelTable component to be displayed in the "Attributes" column. This enhancement improves the visibility and analysis capabilities of the metrics data.
Files modified:
- Dashboard/src/Components/Metrics/MetricsTable.tsx
This commit updates the OTelIngest module to index attributes for different telemetry types (Trace, Metric, and Log). It adds the necessary code to extract attributes from spans, metrics, and logs, and sends them to the OTelIngestService.indexAttributes() function. This ensures that the attributes are properly indexed for each telemetry type, improving the search and analysis capabilities of the system.
Files modified:
- Ingestor/API/OTelIngest.ts
- Ingestor/Service/OTelIngest.ts
This commit adds the user's email to the two-factor authentication process. When verifying the two-factor authentication code, the user's email is now passed as an additional parameter. This enhances the security of the authentication process by ensuring that the code is associated with the correct user. The email is retrieved from the user object and passed to the TwoFactorAuth.verifyToken() function.
Files modified:
- App/FeatureSet/Identity/API/Authentication.ts
- CommonServer/API/UserTwoFactorAuthAPI.ts
This commit updates the TwoFactorAuth utility class to use the otpauth library instead of the speakeasy library for generating and verifying two-factor authentication tokens. The otpauth library provides a more modern and maintained solution for handling OTP generation and verification. This change improves the security and reliability of the two-factor authentication feature.
Files modified:
- CommonServer/Utils/TwoFactorAuth.ts
- CommonServer/package.json
This commit adds support for two-factor authentication on the login page. It includes the necessary code changes to display the two-factor authentication UI elements when the user has enabled it. The login form now includes a field for entering the two-factor authentication code. Additionally, the API endpoint for verifying the two-factor authentication code has been implemented. This feature enhances the security of the login process by adding an extra layer of authentication.
Files modified:
- Accounts/src/Pages/Login.tsx
- App/FeatureSet/Identity/API/Authentication.ts
- CommonServer/Utils/TwoFactorAuth.ts
This commit adds the BadDataException class to handle errors related to two-factor authentication. It is imported and used in the UserService and UserTwoFactorAuthService files to throw an exception when necessary. This improves the error handling and provides more specific error messages for two-factor authentication related issues.
Files modified:
- CommonServer/Services/UserService.ts
- CommonServer/Services/UserTwoFactorAuthService.ts
This commit adds the VERIFY_TWO_FACTOR_AUTH_API_URL constant to the ApiPaths module in order to provide a URL for verifying two-factor authentication. This constant is used in the Authentication module to make API requests for verifying the user's two-factor authentication. The constant is constructed using the IDENTITY_URL and a new route "/verify-two-factor-auth". This addition enables the implementation of the two-factor authentication verification feature.
Files modified:
- Accounts/src/Utils/ApiPaths.ts
This commit updates the QR component to use React hooks and lazy load the QR code generation. By utilizing functional components and the useState and useEffect hooks, the QR code is now only generated when needed, improving performance by reducing unnecessary computations. The code changes also include error handling to display an error message if there is an issue generating the QR code.
Files modified:
- CommonUI/src/Components/QR/QR.tsx
This commit adds support for two-factor authentication in the user profile. It includes the necessary code changes to enable the "Two Factor Auth Enabled" feature in the User model, as well as the addition of the "USER_TWO_FACTOR_AUTH" page in the PageMap and the corresponding route in the RouteMap. The UserTwoFactorAuth model, service, and controller have also been added to handle the logic and API endpoints related to two-factor authentication.
See the following files for more details:
- Common/Types/Icon/IconProp.ts
- Dashboard/src/Utils/PageMap.ts
- Dashboard/src/Utils/RouteMap.ts
- Model/Models/Index.ts
- Model/Models/User.ts
- CommonServer/Services/Index.ts
- CommonServer/package.json
- CommonUI/package.json
- CommonServer/Infrastructure/Postgres/SchemaMigrations/Index.ts
- Dashboard/src/App.tsx
The ChartGroupInterval enum was removed from the ChartGroup component in order to simplify the code and remove unnecessary complexity. This enum was not being used anywhere in the codebase.
The StatusPageSubscriberReport template has been updated to display a more detailed report instead of listing the monitored resources. This change improves the clarity and usefulness of the report.
See this file in the repository:
`App/FeatureSet/Notification/Templates/StatusPageSubscriberReport.hbs`
This commit adds error handling to the `getGlobalSMTPConfig` function in the `Config.ts` file. If any required SMTP configuration values are missing, a `BadDataException` is thrown with a message instructing the user to set the missing values in the Admin Dashboard.
See this file in the repository:
`App/FeatureSet/Notification/Config.ts`
The Dockerfile has been modified to include the installation of the `iputils-ping` package. This change ensures that the `ping` command is available within the Docker container.
See this file in the repository:
`Probe/Dockerfile.tpl`
This commit modifies the AnalyticsDatabaseService by initializing the countPositive variable with a default value of 0 when the strResult is null or undefined. This change ensures that countPositive is always assigned a value, even when there is no valid strResult.
The modification improves the reliability of the countPositive variable and prevents potential errors when using it in subsequent calculations.
Co-authored-by: [Author Name]
This commit refactors the code related to the status page subscriber report. The changes include updating the email template and resource handling in the `StatusPageSubscriberReport.hbs` file. The resource table is now rendered based on whether there are any resources to display. If there are no resources, a message indicating the absence of resources is shown.
Additionally, the `SendReportsToSubscribers.ts` file in the `Workers/Jobs/StatusPage` directory has been modified to handle the case where there are no status page resources. If there are no resources, the email report is not sent, and an error is logged.
These changes improve the handling of resources in the status page subscriber report and ensure that the email report is only sent when there are resources to include.
The code changes in the `StatusPageSubscriberReport.hbs` template file update the rendering of the resource table based on whether there are any resources to display. If there are resources, the table is rendered with the resource details. If there are no resources, a message is displayed indicating that no resources have been added yet.
In addition, the `SendReportsToSubscribers.ts` file in the `Workers/Jobs/StatusPage` directory has been modified to handle the case where there are no status page resources. If there are no resources, the email report is not sent and an error is logged.
These changes improve the handling of resources in the status page subscriber report and ensure that the email report is only sent when there are resources to include.
- Add 'canReadOnRelationQuery' property to the 'Monitor' model in order to allow reading on relation queries.
- Rename 'StatusPageReport' email template to 'StatusPageSubscriberReport' in the 'EmailTemplateType' enum.
This commit updates the StatusPageSubscriberReport template to display the downtime in hours and minutes instead of seconds. The fields "totalDowntime" and "averageUptime" are replaced with "totalDowntimeInHoursAndMinutes" and "averageUptimePercent" respectively. This change improves the readability and usability of the report for users.
refactor: Update UptimeUtil and MonitorEvent imports
This commit updates the imports in the UptimeUtil and MonitorEvent files to use double quotes instead of single quotes. This change ensures consistency in the codebase and follows the established import style.
This commit adds the `reportDataInDays` property to the `StatusPage` model in the `StatusPage.ts` file. The `reportDataInDays` property allows users to specify the number of days of data to include in the report. This change enhances the reporting functionality of the application by providing more flexibility in generating reports for status pages.
This commit modifies the StatusPageService in the StatusPageService.ts file. It adds logic to calculate and set the next report date based on the report start date and recurring interval. This change enhances the functionality of the StatusPage report feature by ensuring that the next report is scheduled correctly.
This commit adds support for generating and managing reports for the StatusPage feature. It includes database changes, such as adding new columns to the "StatusPage" table, and updates to various components and routes. The new functionality allows users to configure and schedule reports, enhancing the reporting capabilities of the application.
This commit adds a migration file (1721754545771-MigrationName.ts) to implement the necessary database changes for the StatusPage report functionality. It adds new columns to the "StatusPage" table, including "isReportEnabled" (boolean), "reportStartDateTime" (timestamp with time zone), "reportRecurringInterval" (JSON), and "sendNextReportBy" (timestamp with time zone). These columns enable the configuration and scheduling of reports for the StatusPage feature. This change enhances the functionality and flexibility of the application when generating and managing reports for status pages.
This commit adds the `canReadOnRelationQuery` property to the `serviceColor` field in the `TelemetryService` model. The `canReadOnRelationQuery` property allows for reading the `serviceColor` field when querying related data. This change enhances the functionality and flexibility of the `TelemetryService` model when working with related data.
This commit updates the styling of the BlogTitleAndDescription component in the BlogTitleAndDescription.ejs file. The font size, font weight, and line height of the title and description elements are adjusted to improve readability and visual hierarchy. This change enhances the overall user experience when viewing blog titles and descriptions on the home page.
refactor: Round metric values to integers in MetricView component
This commit modifies the MetricView component in the MetricView.tsx file. It adds logic to round the metric values to integers using the Math.round() function. This change improves the accuracy and readability of the displayed metric values.
This commit enables real-time updates in the LogsViewer components by setting the `enableRealtime` prop to `true` in the `Logs.tsx` and `Index.tsx` files. Previously, real-time updates were disabled (`enableRealtime` set to `false`), but this change allows for immediate updates of logs when new data is available. This enhancement improves the usability and responsiveness of the LogsViewer feature.
This commit updates the LogItem component in the LogItem.tsx file. It adds functionality to display the service name and color based on the serviceId provided. The serviceMap dictionary is used to retrieve the service name and color, improving the readability and usability of the component. This change enhances the overall quality and user experience of the LogsViewer feature.
This commit updates the TraceTable component in the TraceTable.tsx file. The component is refactored to use React hooks instead of class components, resulting in cleaner and more concise code. Additionally, the update improves the performance of the component by removing unused code and optimizing rendering. These changes enhance the overall quality and maintainability of the TraceTable component.
This commit adds the `jsonKeys` property to the `Filter` interface in two different files: `Filter.ts` and `ModelFilter/Filter.ts`. The `jsonKeys` property is an array of strings and is used to specify the JSON keys associated with a filter. This addition allows for more flexibility and customization when working with filters in the application.
This commit updates the SpanStatusElement component to handle the new SpanStatus type. The title prop of the component is modified to accept a SpanStatus value in addition to a string. This change allows for more accurate and descriptive rendering of the span status in the TraceExplorer and TraceTable components. The update improves the overall consistency and usability of the application when displaying span status information.
This commit updates the TelemetryLayout component to improve performance and readability. Unused code is removed, including imports, variables, and functions that are no longer needed. The component is also refactored to use React hooks instead of class components, resulting in cleaner and more concise code.
Additionally, a new TraceTable component is added, which replaces the TelemetryServiceTable component in the Telemetry/Traces.tsx file. The TraceTable component provides enhanced functionality for displaying and filtering trace data.
These changes enhance the overall quality, maintainability, and functionality of the TelemetryLayout component and improve the user experience when viewing telemetry data.
This commit updates the TelemetryLayout component to improve performance and readability. Unused code is removed, including imports, variables, and functions that are no longer needed. The component is also refactored to use React hooks instead of class components, resulting in cleaner and more concise code.
Additionally, a new TraceTable component is added, which replaces the TelemetryServiceTable component in the Telemetry/Traces.tsx file. The TraceTable component provides enhanced functionality for displaying and filtering trace data.
These changes enhance the overall quality, maintainability, and functionality of the TelemetryLayout component and improve the user experience when viewing telemetry data.
This commit removes unused code in the TelemetryLayout component and updates it to improve performance and readability. The unused code includes imports, variables, and functions that are no longer needed. The component is also refactored to use React hooks instead of class components, resulting in cleaner and more concise code. These changes enhance the overall quality and maintainability of the TelemetryLayout component.
This commit adds the jsonKeys prop to the Filter and JSONFilter components in order to support filtering by JSON keys. The jsonKeys prop is an array of string values that represents the available JSON keys for filtering. This enhancement improves the flexibility and functionality of the filter components, allowing users to filter data based on specific JSON keys.
This commit removes the TelemetryAttribute model and service from the codebase. The TelemetryAttribute model and service were no longer needed and were causing unnecessary complexity. Removing them simplifies the codebase and improves maintainability.
This commit adds the TelemetryAttributeService to the AnalyticsServices array in the CommonServer/Services/Index.ts file. It also updates the BaseAPIFeatureSet in the App/FeatureSet/BaseAPI/Index.ts file to include a new route for handling telemetry attribute operations. These changes improve the functionality and flexibility of the analytics module, allowing users to work with telemetry attributes effectively.
This commit updates the TelemetryAttribute model and service to align with the changes made in the AnalyticsModels/TelemetryAttribute.ts file. The model's tableName, singularName, pluralName, and crudApiPath properties have been modified to reflect the new naming convention for telemetry attributes. Additionally, the TelemetryAttributeService has been added to the AnalyticsServices array in the CommonServer/Services/Index.ts file. These changes improve the consistency and functionality of the telemetry attribute module, allowing users to work with telemetry attributes effectively.
This commit adds the TelemetryAttributeService to the AnalyticsServices array in the CommonServer/Services/Index.ts file. By including the TelemetryAttributeService, we ensure that the service is available for handling telemetry attribute-related operations in the analytics module. This enhancement improves the functionality and flexibility of the analytics services, allowing users to work with telemetry attributes effectively.
This commit updates the MetricQueryConfig and MetricQuery components to include the metricNames prop. The metricNames prop is an array of string values that represents the available metric names for filtering and querying. This change improves the flexibility and functionality of the components, allowing users to select from a predefined list of metric names.
This commit refactors the StartAndEndDate component to use the boolean type for the time interval variables (is1Hour, is3Hours, is1Day, etc.). This change improves code readability and ensures consistent typing, making it easier to understand and maintain the component.
The code changes in StatementGenerator.ts and AnalyticsDatabaseService.ts refactor the import statements for the AggregateBy module. The changes ensure consistent formatting and improve code readability.
This commit adds the aggregate endpoint to the BaseAnalyticsAPI class. The endpoint allows users to perform aggregation operations on the analytics data. It includes a POST and GET route for aggregating data based on specified criteria. This enhancement improves the functionality and flexibility of the analytics API, enabling users to retrieve aggregated results efficiently.
This commit updates the BaseDatabase types and components to include new interfaces and enums for handling aggregation, sorting, and querying of data. It improves the flexibility and functionality of the database operations, enhancing the overall performance and usability of the application.
This commit updates the DateFilter component to handle the FieldType.DateTime in addition to FieldType.Date. It ensures that the component can correctly handle both date and date-time filters, improving the flexibility and functionality of the filtering feature.
This commit updates the TracesList component to use the FieldType.DateTime instead of FieldType.Date for the "Seen At" field. This change ensures that the field accurately represents the date and time of when the trace was seen, improving the accuracy and clarity of the telemetry data.
This commit updates the TelemetryIngest middleware to include the serviceName property in the TelemetryRequest interface. It improves the accuracy and completeness of the telemetry data handling.
This commit updates the TelemetryIngest middleware to include the serviceName property in the TelemetryRequest interface. This change allows the middleware to access and use the service name when processing telemetry data. It improves the accuracy and completeness of the telemetry data handling.
This commit updates the MetricView and MetricViewPage components to include the MetricsAggregationType enum and use it for setting the default aggregation type in the filterData object. This change ensures consistency and clarity in the codebase, improving the maintainability and readability of the application.
This commit updates the MetricAlias component in the Metrics folder to use the properties "title" and "description" instead of "metricAlias". This change improves the clarity and consistency of the codebase, aligning with the naming conventions used throughout the application.
This commit updates the FieldLabelElement component in the CommonUI project to use a consistent text color of text-gray-500 instead of text-gray-700. This change improves the visual consistency and readability of the form fields throughout the application.
This commit updates the MetricsAggregationType enum values to uppercase for consistency and clarity. The previous lowercase values were inconsistent with the naming convention used throughout the codebase. This change improves the readability and maintainability of the code.
This commit updates the LastRunMessage component to display a more accurate message about the data update. It also updates the TelemetryServices component to use a clearer title and description. These changes improve the clarity and user experience of the Copilot and Service Catalog pages.
This commit updates the ServiceFileTypesUtil class to use the TechStack enum instead of the ServiceLanguage enum. It modifies the method names and parameters accordingly, ensuring consistency and clarity in the codebase. This refactoring improves the maintainability and extensibility of the application.
This commit refactors the Services page by replacing the ModelTable component with the TelemetryServiceTable component. The TelemetryServiceTable component provides a more specialized and optimized table for displaying telemetry services. This change improves the performance and user experience of the Services page.
This commit updates the Monitor component in the Monitor.tsx file to include an optional showIcon prop. It also updates the import paths in various files to reflect the changes. These refactorings improve the flexibility and maintainability of the codebase.
This commit adds routes for the Monitors, Incidents, and Telemetry Services pages in the Service Catalog view. These routes allow users to navigate to specific sections of the Service Catalog and access relevant information. The addition of these routes enhances the usability and functionality of the application.
This commit updates the TechStack enum in the TechStack.ts file to include a comprehensive list of technology stacks. It also updates the import paths in various files to reflect the changes from using ServiceLanguage to TechStack. This refactoring improves the clarity and consistency of the codebase.
This commit adds the ServiceCatalogMonitor and ServiceCatalogTelemetryService models to the application. These models are necessary for managing and monitoring service catalog dependencies and telemetry services. The addition of these models enhances the functionality and flexibility of the application.
This commit adds the MetricsAggregationType enum to represent different types of metrics aggregations such as max, min, sum, avg, and count. It also introduces the MetricsQuery interface, which defines the structure of a metrics query including the metric name, attributes, aggregation type, aggregate by, start time, and end time. These changes enable the implementation of metrics queries and aggregations in the application.
This commit adds the SquareStack3D icon to the IconProp enum in the IconProp.ts file. It also updates the SideMenu component in the SideMenu.tsx file to use the SquareStack3D icon instead of the SquareStack icon. This change ensures that the correct icon is displayed in the SideMenu for the specified modelId.
refactor: Add Service Catalog Dependency permissions
This commit adds new permissions for creating, deleting, editing, and reading Service Catalog Dependencies. These permissions allow users to manage dependencies within the project.
This commit updates the Docker configuration in the `.github/workflows/reliability-copilot.yml` file to fix the environment variable values for `ONEUPTIME_REPOSITORY_SECRET_KEY` and `CODE_REPOSITORY_PASSWORD`. The values are now properly enclosed in double quotes to ensure consistency and prevent any issues with special characters. This change ensures the correct configuration for running the reliability copilot workflow.
chore: Update Docker configuration for Copilot debugging
This commit updates the Docker configuration in the `.github/workflows/reliability-copilot.yml` file to fix the environment variable values for `ONEUPTIME_REPOSITORY_SECRET_KEY` and `CODE_REPOSITORY_PASSWORD`. The values are now properly enclosed in single quotes to prevent any issues with special characters. This change ensures the correct configuration for running the reliability copilot workflow.
This commit fixes the formatting in the InitUtil code by removing unnecessary whitespace and aligning the code properly. The changes improve the readability and maintainability of the code.
This commit updates the Docker configuration in the `.vscode/launch.json` file to improve the debugging experience for Copilot. It modifies the `Debug: Copilot Locally` configuration by changing the `localRoot` to `${workspaceFolder}/TestServer` and updating the `name` to `Copilot: Debug with Docker`. Additionally, it sets the `port` to `9985`, `remoteRoot` to `/usr/src/app`, and enables `restart` and `autoAttachChildProcesses` for better debugging capabilities. These changes enhance the development workflow and make it easier to debug Copilot locally with Docker.
This commit updates the Docker configuration in the `.vscode/launch.json` file to improve the debugging experience for Copilot. It modifies the `Debug: Copilot Locally` configuration by changing the `localRoot` to `${workspaceFolder}/TestServer` and updating the `name` to `Copilot: Debug with Docker`. Additionally, it sets the `port` to `9985`, `remoteRoot` to `/usr/src/app`, and enables `restart` and `autoAttachChildProcesses` for better debugging capabilities. These changes enhance the development workflow and make it easier to debug Copilot locally with Docker.
This commit updates the Docker configuration in the `.vscode/launch.json` file to improve the debugging experience for Copilot. It modifies the `Debug: Copilot Locally` configuration by changing the `localRoot` to `${workspaceFolder}/TestServer` and updating the `name` to `Copilot: Debug with Docker`. Additionally, it sets the `port` to `9985`, `remoteRoot` to `/usr/src/app`, and enables `restart` and `autoAttachChildProcesses` for better debugging capabilities. These changes enhance the development workflow and make it easier to debug Copilot locally with Docker.
refactor: Update Alert component styles
This commit updates the styles of the Alert component to use a common background color of "bg-gray-700" instead of different colors for each alert type. This change simplifies the code and improves consistency in the UI.
This commit updates the CodeRepositoryPage form fields by removing the "Main Branch Name" field and adding a "Select Service" dropdown with a description. The "Main Branch Name" field is no longer necessary and the "Select Service" dropdown provides a better user experience by allowing users to choose a service from the Service Catalog. These changes improve the usability and clarity of the form.
This commit updates the Docker configuration in the `.vscode/launch.json` file to improve the debugging experience for Copilot. It modifies the `Debug: Copilot Locally` configuration by changing the `localRoot` to `${workspaceFolder}/TestServer` and updating the `name` to `Copilot: Debug with Docker`. Additionally, it sets the `port` to `9985`, `remoteRoot` to `/usr/src/app`, and enables `restart` and `autoAttachChildProcesses` for better debugging capabilities. These changes enhance the development workflow and make it easier to debug Copilot locally with Docker.
This commit updates the styles in the MarkdownViewer component to improve the visual hierarchy of headings and code blocks. It adds margin-bottom to h3, h4, and h5 headings to create better spacing between them and the content. Additionally, it removes unnecessary code in the code block rendering logic to simplify the component. These changes enhance the readability and aesthetics of the rendered Markdown content.
This commit updates the react-syntax-highlighter package to the latest version and switches to the a11yDark style for syntax highlighting in the MarkdownViewer component. This update ensures compatibility with the latest features and improvements of react-syntax-highlighter and enhances the accessibility of the code snippets in the MarkdownViewer.
This commit adds the "@types/react-syntax-highlighter" dependency to the package.json file in the CommonUI directory. This is necessary to provide TypeScript type definitions for the "react-syntax-highlighter" library, ensuring proper type checking and improved development experience.
This commit adds the `network_mode: host` configuration to the `docker-compose.base.yml` file. This configuration allows the container to share the host network stack, enabling direct access to the host's network interfaces. This change is made to improve network performance and connectivity for the application.
This commit adds the `serviceCatalogId` and `serviceRepositoryId` fields to the `CopilotPullRequestAPI` and `CopilotActionAPI` classes. These fields are included in the API response to provide additional information about the service catalog and service repository associated with a pull request or action. This change enhances the data returned by the APIs and improves the overall functionality of the application.
This commit updates the `app.py` file to set a default model name if the `HF_MODEL_NAME` environment variable is not set. The default model name is `meta-llama/Meta-Llama-3-8B-Instruct`. This change ensures that the application uses a valid model name even if the environment variable is not provided.
This commit adds the necessary environment variables for the Hugging Face token and model name in the `docker-compose.yml` file. The `HF_TOKEN` environment variable is used to store the Hugging Face API token, which can be obtained by signing up on Hugging Face and creating a new API token. The `HF_MODEL_NAME` environment variable is optional and allows specifying the model name from Hugging Face. If not set, the default model `meta-llama/Meta-Llama-3-8B-Instruct` will be used.
This commit adds lazy loading for images in the PullRequestView component. By implementing lazy loading, the images will only load when they are in the viewport, improving the page load performance and user experience.
This commit deletes all data from the "CopilotAction" table in the "MigrationName1720785305192" migration. This is done to ensure a clean state before renaming the "pullRequestId" column to "copilotPullRequestId".
This commit modifies the `CopilotAction` table in the `CopilotAction.ts` file to allow the `copilotPullRequestId` column to be nullable. This change provides flexibility in the data model by allowing the column to have null values.
This commit adds a step to the GitHub workflows (`test-release.yaml` and `release.yml`) to setup Git LFS. Git LFS is necessary for handling large files in the repository. By installing Git LFS, we ensure that the repository can handle large files properly during the CI/CD process.
This commit removes the unused Copilot configuration variables from the `config.example.env` file. The `COPILOT_OPENAI_API_KEY` and `COPILOT_OPENAI_MODEL` variables are no longer needed and have been removed. This cleanup improves the clarity and maintainability of the codebase.
This commit adds the `isSetupPullRequest` flag to the `CopilotPullRequestAPI.ts` file. The flag is set to true when creating a pull request for setting up the repository with OneUptime Copilot. This flag will be used to identify setup pull requests in the application.
This commit adds a migration file (1720806196274-MigrationName.ts) that drops the NOT NULL constraint on the columns "serviceCatalogId" and "serviceRepositoryId" in the "CopilotPullRequest" table. This change allows these columns to have nullable values, providing flexibility in the data model.
This commit adds an import statement for the `OneUptimeDate` module in the `CopilotCodeRepositoryAPI.ts` file. The `OneUptimeDate` module is used to update the last run time of the code repository.
Update the table description in CopilotPullRequest.ts to fix a typo. Also, add a new entry in PageMap.ts for the "AI_COPILOT_CODE_REPOSITORY_VIEW_PULL_REQUESTS" page.
This commit adds the `CopilotPullRequestStatus` enum to the `CopilotPullRequestStatus.ts` file in the `Common/Types/Copilot` directory. This enum defines the possible statuses of a Copilot pull request, including "Created", "Merged", and "Closed". This enum will be used to track the status of Copilot pull requests throughout the application.
The CodeRepositoryUtil class now includes two new methods: `addAllChangedFilesToGit` and `commitChanges`. These methods allow for adding all changed files to the git repository and committing the changes with a specified message. This will make it easier to manage and track changes in the code repository.
- Update config.example.env to include OpenAI API key and model.
- Update docker-compose.base.yml to include OpenAI environment variables.
- Update Copilot configuration files to handle OpenAI LLM responses.
- Update LlmType enum values to match the new naming convention.
- Update references to Llama to LLM in various files.
- Update CopilotActionsBase.ts to set the llmType to LLM in the constructor.
- Update Init.ts to use the llmServerUrl instead of llamaServerUrl.
- Update LLM.ts to use LLMServer class instead of Llama class.
- Add OpenAI class and update LLM.ts to handle OpenAI LLM type.
- Update Config.ts to handle OpenAI API key and model.
- Add OpenAI.ts file to handle OpenAI LLM responses.
- Update Copilot Dockerfile.tpl to remove unnecessary code and fix formatting.
- Update config.example.env and Copilot/.env.example to correct the LLM server URL.
- Remove unused code and update documentation in Copilot/README.md.
- Update navigation links in App/FeatureSet/Docs/Utils/Nav.ts to include Copilot documentation.
- Update Copilot/Config.ts and Copilot/Utils/Init.ts to use the new LLM server URL.
- Add logger statements in Copilot/Service/CopilotActions/CopilotActionsBase.ts to log file content.
This commit adds CORS headers to the Telemetry and OTelCollector components to allow cross-origin resource sharing. This enables the client to make requests to these components from different origins. The headers include "Access-Control-Allow-Credentials", "Access-Control-Allow-Origin", "Access-Control-Allow-Methods", and "Access-Control-Allow-Headers".
The code changes in `app.py` update the URL for validating the secret key. The previous URL was using the endpoint `/api/code-repository/is-valid/{secretKey}`, and it has been changed to `/api/copilot-code-repository/is-valid/{secretKey}`. This change ensures that the correct endpoint is used for validating the secret key in the OneUptime service.
The code changes in `app.py` add a new parameter `max_new_tokens` to the `job` function. This parameter allows the maximum number of new tokens to be specified when calling the function. This change enhances the flexibility and control of the `job` function by allowing the maximum number of new tokens to be adjusted as needed.
This commit improves the logging in the Llama class by adding more detailed log messages. It modifies the log statements in the execute method to include the current file path and the type of Copilot action being executed. This change enhances the readability and debugging capabilities of the Llama service.
This commit adds timeout handling to the Llama prompt execution in the Llama class. It introduces a timeoutInMinutes property in the CopilotActionPrompt interface and uses it to set a timeout for the prompt execution. If the prompt execution exceeds the specified timeout, a LLMTimeoutException is thrown, indicating that the prompt has timed out. This change enhances the reliability and responsiveness of the Llama service by preventing long-running prompts from blocking the execution flow.
This commit adds a new method, setAuthorIdentity, to the CodeRepositoryUtil class. The method sets the author's name and email in the global git configuration using the provided data. It executes the necessary git config command and logs the output. This change enhances the functionality of the CodeRepositoryUtil class by allowing the author's identity to be easily configured for git operations.
This commit adds the LOG_LEVEL=DEBUG environment variable to the docker-compose.copilot.yml file. Setting the log level to DEBUG will enable more detailed logging for the Copilot service. This change is made to improve debugging and troubleshooting capabilities during development and testing.
This commit updates the Docker Compose configuration for Copilot. It removes the unnecessary volume mapping for the COPILOT_REPOSITORY_LOCAL_PATH in the docker-compose.copilot.yml file. This change improves the clarity and simplicity of the configuration file.
This commit updates the environment variables CODE_REPOSITORY_PASSWORD and CODE_REPOSITORY_USERNAME in the Copilot project. The previous variables GITHUB_TOKEN and GITHUB_USERNAME have been replaced with the new variables to improve clarity and consistency. The changes are made in multiple files, including .github/workflows/reliability-copilot.yml, Copilot/.env.example, Copilot/Config.ts, Copilot/Utils/CodeRepository.ts, Copilot/Utils/Init.ts, config.example.env, and docker-compose.base.yml. These updates ensure that the correct credentials are used for accessing the code repository in the Copilot project.
This commit adds a new method, cloneRepository, to the CodeRepositoryUtil class. The method is responsible for cloning a repository from a given URL to a specified path. It uses the git clone command to perform the cloning operation. This method will be used to clone the repository to a temporary directory in the Copilot/Init.ts file. The method takes an object as a parameter, which includes the repoPath and repoUrl. It executes the git clone command using the Execute.executeCommand() method and logs the output using the logger.debug() method. This new method enhances the functionality of the CodeRepositoryUtil class and improves the codebase.
This commit adds npm scripts for running Copilot and LLM in development mode. It introduces the "dev-copilot" and "dev-llm" scripts in the package.json file, which set up the necessary environment variables and start the respective services using docker-compose. These scripts enable developers to easily run and test Copilot and LLM locally during development.
This commit updates the Copilot configuration for local development. It adds environment variables and services to the docker-compose.base.yml and package.json files to support running Copilot locally. The changes include adding the "copilot" service to the docker-compose.base.yml file with the necessary environment variables for Copilot functionality. Additionally, it adds new npm scripts in the package.json file to start, build, and force-build Copilot. These updates enable developers to easily run and build Copilot locally for testing and development purposes.
This commit refactors the Monitor.ts file to enhance error handling and populate secrets for monitors. It introduces try-catch blocks and proper logging to handle errors more effectively. Additionally, it populates secrets for monitors using the MonitorUtil.populateSecrets() function. These changes improve the reliability and security of the monitoring process.
This commit refactors the Monitor.ts file to improve error handling. It removes commented out code and unused imports, ensuring a cleaner and more efficient codebase. This change enhances the maintainability and readability of the code.
This commit updates the ingestor replica count in the HelmChart/Public/oneuptime/templates/ingestor.yaml file based on the configuration. If the `$.Values.deployment.ingestor.replicaCount` value is provided, it sets the replicas to that value. Otherwise, it falls back to `$.Values.deployment.replicaCount`. This change ensures that the ingestor replica count is correctly configured, improving the scalability and performance of the application.
This commit refactors the FetchListAndProbe class to improve error handling. It adds try-catch blocks around the main logic and logs any errors that occur using the logger. Additionally, it includes a catch block to handle any errors thrown during the fetchListAndProbe function. This change ensures that errors are properly handled and logged, preventing potential issues with the monitoring process.
The Hugging Face model download step has been removed from the release and test workflows due to limited disk space on the runner. This step was causing issues and is no longer necessary for the current functionality of the project.
This commit refactors the Semaphore.lock() function in the MonitorStatusTimelineService and Monitor API files to improve error handling. It adds try-catch blocks around the lock() function calls and logs any errors that occur using the logger. This change ensures that errors during the locking process are properly handled and logged, preventing potential issues with mutex locking.
This commit refactors the FetchListAndProbe class to improve error handling. It adds try-catch blocks around the main logic and logs any errors that occur using the logger. Additionally, it includes a catch block to handle any errors thrown during the fetchListAndProbe function. This change ensures that errors are properly handled and logged, preventing potential issues with the monitoring process.
This commit updates the default value of the PROBE_MONITOR_FETCH_LIMIT variable in the Config.ts file from 1 to 10. This change ensures that the monitor fetch limit is set to a more reasonable value, improving the efficiency of the monitoring process.
This commit refactors the Semaphore.lock() function in the MonitorStatusTimelineService and Monitor API files to improve error handling. It adds try-catch blocks around the lock() function calls and logs any errors that occur using the logger. This change ensures that errors during the locking process are properly handled and logged, preventing potential issues with mutex locking.
This commit updates the count property in the docker-compose.llm.yml file to use the value 'all' instead of the previous value of '1'. This change allows for the allocation of all available devices with the 'gpu' capability, improving the utilization of resources.
This commit removes the redundant "Bug:" and "Enhancement:" prefixes from the issue template titles. The prefixes are unnecessary as the labels already indicate the type of issue. This change simplifies the issue creation process and improves the clarity of the issue templates.
This commit adds a new migration file, MigrationName1720024126646, to the SchemaMigrations directory. This migration will be used to make changes to the database schema.
This commit adds two new icons, NoSignal and EyeSlash, to the IconProp enum. It also includes the necessary code changes in the Icon component to render these icons. These icons will be used in the Monitor SideMenu to represent monitors with all probes disconnected and monitors with all probes disabled, respectively.
This commit updates the PermissionHelper class to use access control permissions for probe actions. Previously, the isAccessControlPermission property was set to false for all probe-related permissions. Now, it has been changed to true, aligning with the intention of these permissions. This change improves the clarity and consistency of the codebase.
This commit updates the function names in the MonitorTypeHelper class to be more descriptive and accurately reflect their purpose. The function isProbableMonitors has been renamed to isProbableMonitor, and doesMonitorTypeHaveInterval has been renamed to doesMonitorTypeRequireInterval. This change improves the clarity and maintainability of the codebase.
This commit updates the ServerMonitorCriteria class to include the option to evaluate criteria over time. It adds a new condition to check if the criteria filter includes the evaluateOverTimeOptions property. If it does, the criteria will be evaluated based on the specified time value in minutes. This change allows for more flexible and customizable monitoring criteria.
This commit adds the `cores` field to the `CPUMetrics` struct in order to include the number of CPU cores in the collected metrics. This information is useful for understanding the processing power of the server.
This commit adds the hostname field to the server monitor report in order to include the hostname of the server in the collected metrics. This information is useful for identifying and distinguishing between different servers in the monitoring system.
This commit updates the paths to the Dockerfile in the release.yml and test-release.yaml workflows. The paths have been changed to ./LLM/Dockerfile to ensure that the correct Dockerfile is used for building and pushing the image. This change is necessary because the base image of the LLM does not support arm64 platforms.
This commit updates the Dockerfile to set the stack trace limit to 0, allowing full stack traces to be shown. This change ensures that developers have access to complete stack trace information when debugging the application.
This commit updates the paths to the Dockerfile in the release.yml and test-release.yaml workflows. The paths have been changed to ./LLM/Dockerfile to ensure that the correct Dockerfile is used for building and pushing the image. This change is necessary because the base image of the LLM does not support arm64 platforms.
This refactor changes the code in CopilotActionsBase.ts, RefactorCode.ts, ImproveReadme.ts, ImproveVariableNames.ts, FixGrammarAndSpelling.ts, and WriteUnitTests.ts to use an array of messages instead of a single prompt. Each message in the array contains the content and role of the prompt, improving flexibility and readability.
The installation script has been updated to add the binary to the user's path. This ensures that the oneuptime-infrastructure-agent command can be accessed from anywhere in the shell.
This commit updates the description of the notification methods in the NotificationSettings.tsx file. The previous description mentioned "custom porbe" instead of "custom probe". This change improves the accuracy and clarity of the description, ensuring that it correctly reflects the purpose of the notification methods.
This commit adds a new migration file, MigrationName1719915433542, to the SchemaMigrations directory. The migration is necessary to update the database schema and ensure compatibility with the latest changes in the codebase.
chore: Update ProbeAPI.test.ts to include connectionStatus field in select query
This commit modifies the ProbeAPI.test.ts file to include the connectionStatus field in the select query. The connectionStatus field was missing from the original query, and this change ensures that it is now included, providing complete information about the probe's connection status.
This commit updates the ProbeConnectionStatusChange template to display the last connection status change as "Status Since" instead of "Date / Time". The change improves the clarity and accuracy of the displayed information, providing a better user experience.
This commit updates the probeKey prop type from ObjectID to string in the CustomProbeDocumentation and ProbeView components. The probeKey is used to identify the probe and was previously defined as ObjectID, but it should be a string. This change ensures that the probeKey is correctly passed and used throughout the components, improving the accuracy and reliability of the application.
This commit updates the title of the CustomProbeDocumentation component from "Set up your Server Monitor (Linux/Mac)" to "Set up your Custom Probe". The new title accurately reflects the purpose of the component and improves the clarity of the user interface.
This commit updates the ProbeStatusElement component to use the new connectionStatus field from the Probe model. The component previously relied on the lastAlive field to determine the probe's connection status, but now it directly checks the connectionStatus field. This change ensures that the component accurately reflects the probe's current connection status, improving the reliability of the application.
This commit adds notification settings for the "probe owner added" event. It includes updates to the EmailTemplateType enum, NotificationSettingEventType enum, UserNotificationSettingService, and NotificationSettings.tsx. The new settings allow users to receive notifications when they are added as owners to a probe. This enhancement improves the user experience by providing timely notifications for ownership changes.
This commit disables the editing and deleting functionality for probes in the ProbePage component. The isEditable and isDeleteable props are set to false, preventing users from modifying or removing probes. This change ensures that probes cannot be accidentally modified or deleted, improving the data integrity of the application.
This commit adds missing commas in the Index.ts files of the Model/Models and CommonServer/Infrastructure/Postgres/SchemaMigrations directories. The missing commas were causing syntax errors in the code. This fix ensures that the code is valid and can be executed without errors.
This commit adds the APIs for ProbeOwnerTeam and ProbeOwnerUser, allowing users to manage ownership of probes within the application. The APIs are implemented in the BaseAPI/Index.ts file and include routes for creating, deleting, editing, and reading probe owner teams and users. This enhancement improves the functionality of the application by providing a way to manage probe ownership.
This commit updates the model-inline-code styles in the model.ejs and head.ejs files to ensure consistency throughout the application. The model-inline-code class is now defined with rounded corners, smaller text size, and a gray background color. This change improves the visual presentation of code snippets in the application.
This commit adds new permissions for creating, deleting, editing, and reading probe owner teams and users. These permissions allow users to manage ownership of probes within the application. The permissions are defined in the Permission enum and are accompanied by titles and descriptions for clarity. This enhancement improves the access control functionality of the application.
This commit adds a new email template, "ProbeConnectionStatusChange.hbs", to the EmailTemplateType enum in the EmailTemplateType.ts file. The template is used for sending emails related to changes in probe connection status. This addition enhances the email functionality of the application.
This commit adds a new migration file, "1719827175832-MigrationName", to the SchemaMigrations directory. The migration file includes the necessary changes to add a new column, "connectionStatus", to the Probe model in the Models directory. The column is of type "ShortText" and has access control settings for create and read permissions. This migration enables the storage and retrieval of the connection status of a probe in the database.
This commit updates the axios and posthog-js dependencies in the package-lock.json file. The axios dependency is updated from version 1.6.8 to 1.7.2, and the posthog-js dependency is updated from version 1.131.4 to 1.138.0. These updates ensure that the latest stable versions of these libraries are used in the project.
This commit refactors the code in Llama.ts and ImproveComments.ts to improve comments and handle bad operations. In Llama.ts, a new import statement for the BadOperationException class is added, and if the result object contains an error string, a BadOperationException is thrown. In ImproveComments.ts, an unused variable declaration is removed. These changes enhance code readability and error handling.
Refactor CopilotActionsBase.ts, RefactorCode.ts, ImproveReadme.ts, ImproveVariableNames.ts, FixGrammarAndSpelling.ts, and WriteUnitTests.ts to use an array of messages instead of a single prompt. Each message in the array contains the content and role of the prompt. This change improves the flexibility and readability of the code.
This commit updates the Dockerfile and docker-compose.llm.yml files to include the LLM Models directory. The Dockerfile now uses the `ADD .` command to copy the entire repository into the container at `/app`, and the docker-compose.llm.yml file has been modified to set the context to the `./LLM` directory. These changes ensure that the LLM Models directory is included in the Docker image and that the correct context is used for building the image.
The Redis service has been added to the docker-compose.llm.yml file. This service is responsible for caching and cluster state. It extends the configuration from the docker-compose.base.yml file and uses the "redis" service defined there.
Update the Dockerfile in the Copilot directory to use the correct volume mount path. This ensures that the Copilot tool can access the repository files correctly when running in a Docker container.
Fix a typo in the Hugging Face clone URL in the test-release.yaml file, which was causing the cloning process to fail. The "@" symbol was missing in the URL. This commit adds the missing "@" symbol to the URL.
The Banner component has been updated to handle optional link and openInNewTab props. If a link is provided, it will be wrapped in a Link component. If no link is provided, the content will be rendered directly. This change allows for more flexibility in using the Banner component.
Fix a typo in the Hugging Face clone URL in the test-release.yaml file, which was causing the cloning process to fail. The "@" symbol was missing in the URL. This commit adds the missing "@" symbol to the URL.
The Hugging Face clone URL in the test-release.yaml file had a missing "@" symbol, causing the cloning process to fail. This commit fixes the typo by adding the "@" symbol to the URL.
```
This commit updates the Dockerfile and build process for deploying the LLM (Llama Models) service. The Dockerfile has been generated from the Dockerfile.tpl file, and the build process now includes pulling the model from Hugging Face and setting up QEMU and Docker Buildx. Additionally, the login actions for Docker Hub and GitHub Container Registry have been added, and the build and push steps have been configured to use the updated tags and labels from the metadata action.
```
The npm scripts for starting, building, and force-building the LLM (Llama Models) service have been updated in the package.json file. The new scripts use the docker-compose.llm.yml file instead of the docker-compose.ai.yml file. This change ensures that the correct configuration is used for deploying the LLM service.
The directory name for Llama Models has been updated from "Llama/Models" to "LLM/Models". This change ensures consistency and aligns with the updated file paths in the codebase.
chore: Set oneuptimeSecret and encryptionSecret to long random strings
The `oneuptimeSecret` and `encryptionSecret` values in the `values.yaml` file have been updated to be set to long random strings. This change ensures better security for OneUptime in production environments.
This commit adds error handling for item processing in the `job` function of `app.py`. When an error occurs while processing an item, the error is stored in the `errors` dictionary. This ensures that errors are captured and can be handled appropriately. The `queue-status` endpoint now includes the `errors` dictionary in the response, providing visibility into any processing errors that occurred.
This commit adds error handling for item processing in the `job` function of `app.py`. When an error occurs while processing an item, the error is stored in the `errors` dictionary. This ensures that errors are captured and can be handled appropriately. The `queue-status` endpoint now includes the `errors` dictionary in the response, providing visibility into any processing errors that occurred.
The `docker-compose` command in the `test.e2e.yaml` file has been updated to use `docker compose` instead. This change ensures compatibility with the latest version of Docker and improves the consistency of command usage across the project.
The `docker-compose` command in the `test.e2e.yaml` file has been updated to use `docker compose` instead. This change ensures compatibility with the latest version of Docker and improves the consistency of command usage across the project.
The Server Monitor documentation in the `Documentation.tsx` file has been updated to provide separate instructions for setting up the monitor on Linux/Mac and Windows. The title of the Linux/Mac section has been modified to reflect this change. Additionally, the Windows section has been added with detailed steps for downloading, configuring, starting, and stopping the agent. This update improves the clarity and usability of the Server Monitor documentation.
The pricing page has been updated to replace the previous headline with a new one that better highlights the value proposition of OneUptime. The new headline emphasizes that OneUptime is a comprehensive platform that combines 8+ tools into one, providing users with a complete SRE toolchain. This change improves the clarity and effectiveness of the messaging on the pricing page.
The `HomeFeatureSet` object in `Index.ts` has been updated to modify the values for the `Public Status Page` and `Subscribers` features. The `free` plan for `Public Status Page` has been changed from "Unlimited" to "1", and the `free` plan for `Subscribers` has been changed from "Unlimited" to "100". Additionally, a new feature called `Synthetic Monitoring (with Playwright)` has been added to the `HomeFeatureSet` object.
This commit refactors the `CopilotActionService` class in the `Index.ts` file to improve file handling. It updates the logic for obtaining the result from the Copilot action and committing the changes to the repository. Additionally, it removes unused code and improves the readability of the file. This refactoring enhances the overall efficiency and maintainability of the `CopilotActionService` class.
The `install.sh` script has been updated to support the Windows operating system. This includes changes to the URL construction and the addition of logic to handle downloading and unzipping the binary for Windows. This enhancement improves the installation process for Windows users.
This commit adds a new method, `isActionComplete`, to the `CopilotActionsBase.ts` file. The method returns a boolean value indicating whether the action is complete. By default, the method returns `true`, but it can be overridden in derived classes to provide custom logic for determining the action's completion status. This enhancement improves the flexibility and extensibility of the `CopilotActionsBase` class.
This commit extracts code from the `CopilotActionBase.ts` file into separate functions for better code organization and readability. The extracted code includes the logic for ordering SSL certificates, checking the order status, and handling domain removal. This refactoring improves the maintainability and modularity of the codebase.
This commit updates the `StatusPageDomainService.ts` file to mark a domain as not ordered and update the SSL status when it is removed. The `notifyDomainRemoved` function now includes logic to update the `isSslOrdered` and `isSslProvisioned` properties to `false` for the specified domain. This ensures that the SSL certificate is not ordered or provisioned for the removed domain.
The code changes in GreenlockUtil.ts remove the domain if the CNAME is not valid and notify the removal. This ensures that only valid domains are processed for ordering SSL certificates.
The code changes in `StatusPageDomainService.ts` add logic to order an SSL certificate for valid domains. If the CNAME is valid, the code attempts to order the certificate using the `orderCert` function. This ensures that all valid domains have the necessary SSL protection.
This commit adds a new cron job in the `StatusPageCerts.ts` file to check the order status of SSL certificates for domains that have already ordered them. If a certificate does not exist for a domain, the code will attempt to order the certificate again. This ensures that all domains with ordered certificates have the necessary SSL protection.
This commit adds a new cron job in the `StatusPageCerts.ts` file to check the order status of SSL certificates for domains that have already ordered them. If a certificate does not exist for a domain, the code will attempt to order the certificate again. This ensures that all domains with ordered certificates have the necessary SSL protection.
This commit adds a notification webhook on user creation in the UserService. When a new user is created, a Slack message is sent to the specified webhook URL with details about the user's email, name, phone number, and company name. This feature enhances the user onboarding process and allows for better tracking and communication with new users.
This commit adds a blank line at the end of the Copilot README.md file. This change ensures consistency in the file structure and improves readability.
refactor: Update server_name in Nginx configuration
This commit updates the server_name directive in the Nginx configuration file to remove the ${HOST}:${ONEUPTIME_HTTP_PORT} variable and use just ${HOST}. This change ensures that the server_name is set correctly for all domains.
This commit updates the ONEUPTIME_HTTP_PORT value in the nginx.yaml file to use the port specified in the $.Values.port.nginxHttp variable. This change ensures that OneUptime is hosted on the correct port.
This commit updates the Nginx configuration file to enable HTTP/2 by removing the `http2` directive from the `listen` directive and adding a separate `http2` directive. This change ensures that the server supports the latest HTTP/2 protocol, improving performance and security.
refactor: Update OneUptime port in config.example.env
This commit updates the ONEUPTIME_HTTP_PORT value in the config.example.env file to 80. This change ensures that OneUptime is hosted on the correct port.
This commit improves the error handling in the CheckHeartbeat.ts file. It adds a try-catch block around the main logic to catch any errors that occur during the processing of incoming request monitors. Additionally, it logs the error message and the ID of the monitor that caused the error. This change enhances the robustness and reliability of the code by properly handling and logging errors.
The code changes in Project.ts modify the type of the enterpriseAnnualContractValue column from ShortText to Number. This change ensures that the column stores numeric values instead of text, improving data integrity and query performance.
This commit adds logging statements to the IncomingRequestMonitor module to improve debugging and monitoring. The added log messages provide information about the number of incoming request monitors found and whether a monitor should process a request. This change enhances the visibility and understanding of the monitoring process.
This commit refactors the CompareCriteria class to update the message formatting for different filter types. The previous implementation included the word "threshold" in the message, which is unnecessary and can be confusing. The updated message now clearly states whether the value is greater than, greater than or equal to, less than, less than or equal to, or not equal to the threshold value. This change improves the clarity and readability of the message generated by the CompareCriteria class.
2024-06-24 14:28:05 +01:00
2006 changed files with 77375 additions and 98975 deletions
This folder contains the configuration files for the OneUptime Copilot. The Copilot is a tool that automatically improves your code. It can fix issues, improve code quality, and help you ship faster.
This folder has the following structure:
-`config.js`: The configuration file for the Copilot. You can customize the Copilot's behavior by changing this file.
-`scripts`: A folder containing scripts that the Copilot runs. These are hooks that run at different stages of the Copilot's process.
-`on-after-clone.sh`: A script that runs after the Copilot clones your repository.
-`on-before-code-change.sh`: A script that runs before the Copilot makes changes to your code.
-`on-after-code-change.sh`: A script that runs after the Copilot makes changes to your code.
-`on-before-commit.sh`: A script that runs before the Copilot commits changes to your repository.
-`on-after-commit.sh`: A script that runs after the Copilot commits changes to your repository.
This step is optional. You need to deploy LLM Server only if you want to use Copilot with LLM Server on your infrastructure for data privacy reasons. If you are comfortable with OpenAI's privacy policy, you can skip this step and use OpenAI directly.
### Pre-requisites
Before you deploy LLM Server, you need to make sure you have the following:
- **Docker**: You need to have Docker installed on your machine.
- **Docker Compose**: You need to have Docker Compose installed on your machine.
- **System Requirements**: You need to have at least 64 GB of RAM, 32 GB GPU (compitable with CUDA & Docker), 8 CPU cores, and 100 GB of disk space. You could get away with less resources, but we recommend the above configuration for optimal performance.
- **GPU is accessible by Docker**: You need to make sure that the GPU is accessible by Docker. Please read this [guide](https://docs.docker.com/compose/gpu-support/) for more information.
### Environment Variables
You need to set the following environment variables in the `docker-compose.yml` file:
-`HF_TOKEN`: This is the Hugging Face API token. You can get this token by signing up on Hugging Face and creating a new API token.
-`HF_MODEL_NAME` (optional): This is the model name from Hugging Face. You can get this model name from the Hugging Face model hub. If you do not set this, we will use `meta-llama/Meta-Llama-3-8B-Instruct` as the default model.
### Installation
To deploy LLM Server, you need to follow the following steps with docker-compose:
Create a `docker-compose.yml` file with the following content:
```yaml
llm:
extends:
file:./docker-compose.base.yml
service:llm
ports:
- '8547:8547'
image:'oneuptime/llm:release'
environment:
- HF_TOKEN=<TOKEN_FROM_HUGGINGFACE>
- HF_MODEL_NAME=<MODEL_NAME_FROM_HUGGING_FACE>
deploy:
resources:
reservations:
devices:
- driver:nvidia
count:all
capabilities:[gpu]
```
Run the following command to start the LLM Server:
```bash
docker compose up -d
```
You can now access the LLM Server at `http://localhost:8547`.
### TLS/SSL Configuration
You can set up TLS/SSL by having a reverse proxy in front of the LLM Server. This is recommended for production deployments and is beyond the scope of this document.
### Public Access
Please make sure this server is publicly accessible. So, it can be accessed by Copilot.
### Security
Please also make sure to secure the server by setting up a firewall so only copilot can access it.
-**Code Quality Issues**: Improve code readability, maintainability, and scalability. Improve comments, naming conventions, refactor code, etc.
-**Error Handling Issues**: Improve error handling, exception handling, logging, etc.
-**Testing Issues**: Improve test coverage, test quality, test performance, etc.
-**Documentation Issues**: Improve documentation quality, comments, README, etc.
### Architecture
Copilot can be installed as a CI/CD tool and can be run on every merge to master / main branch. Copilot can also be scheduled to run as a cron on the CI/CD pipeline. We recommend you run Copilot atleast once/day.
There are three services when running copilot:
- **OneUptime**: You need to deploy or use OneUptime Cloud (https://oneuptime.com) to run Copilot. When you deploy OneUptime, url should be publicily accessible.
- **Copilot**: Copilot is the main service that runs the Copilot engine. Copilot engine is responsible for analyzing the codebase and fixing issues.
- **LLM Server** (Optional): Copilot sends your code to LLM Server to analyze and fix issues. The source-code and docker-image is [open-source](https://github.com/OneUptime/oneuptime/tree/master/LLM) and can be found at [Docker Hub](https://hub.docker.com/r/oneuptime/llm). This can be self-deployed if you want to run Copilot on-premises or you can use the hosted version.
### FAQ
**Is my code sent to OneUptime?**
No, your code is not sent to OneUptime. Copilot runs on your CI/CD pipeline and sends the code to LLM Server for analysis. LLM Server can be self-hosted.
**Is my code sent to Self-Hosted LLM Server?**
Yes, but you can self host LLM server so code is not sent outside of your infrastructure. Your code is sent to LLM Server for analysis. LLM Server is responsible for analyzing the code and fixing issues.
**Is my code sent to any third-party?**
No. We strictly do not send any telemetry data or code to any third-party.
**Is my code sent to OpenAI?**
No, If you host LLM Server yourself.
Yes, if you choose to use OpenAI by setting `OPENAI_API_KEY`. We recommend you to use OpenAI only if you are comfortable with OpenAI's privacy policy. We're not responsible for any data sent to OpenAI or how your code is analyzed / used by OpenAI.
### Pre-requisites
Before you install Copilot, you need to make sure you have the following:
- **OneUptime Account**: You need to have a OneUptime account to use Copilot. You can sign up for a free account at [OneUptime](https://oneuptime.com). You can either use OneUptime Cloud or deploy OneUptime on your infrastructure.
- **GitHub Account**: You need to have a GitHub account to use Copilot. You can sign up for a free account at [GitHub](https://github.com). You can also use GitLab, Bitbucket, etc.
You also need either of the following:
- **LLM Server** (Optional): You need to have LLM Server to run Copilot. [Please check this guide to deploy LLM Server](https://oneuptime.com/docs/copilot/deploy-llm-server).
or
- **OpenAI** (Optional): You need to have OpenAI API Key and Model to run Copilot. Please check env vars for more information.
### Installation
To install Copilot, you need to follow the following steps:
#### Environment Variables
You need to set the following environment variables to run Copilot:
**Required Environment Variables**:
- **ONEUPTIME_REPOSITORY_SECRET_KEY**: The secret key of the repository. You can get this key from OneUptime Dashboard -> Reliability Copilot -> View Repository. If you don't have a repository, you can create a new repository, then click on "View Repository" to get the secret key.
- **CODE_REPOSITORY_USERNAME**: OneUptime uses this username to commit and push changes to GitHub / GitLab / etc. This should be the username of the existing user on GitHub that has access to the repository.
- **CODE_REPOSITORY_PASSWORD**: OneUptime uses this password to commit and push changes to GitHub / GitLab / etc. This should be the password of the existing user on GitHub that has access to the repository. You can also use Personal Access Tokens instead of Password. Please make sure the token has write permissions to the repo.
**Optional Environment Variables**:
- **ONEUPTIME_URL**: The URL of OneUptime Cloud. If left empty, Copilot will default to `https://oneuptime.com`.
If you are using LLM Server, you need to set the following environment variables:
- **ONEUPTIME_LLM_SERVER_URL**: The URL of LLM Server. (For example: https://your-llm-server.com:8547)
If you are using OpenAI, you need to set the following environment variables:
- **OPENAI_API_KEY**: The API key of OpenAI. You can get this key from OpenAI Dashboard.
**Important**: You need to provide either `ONEUPTIME_LLM_SERVER_URL` or `OPENAI_API_KEY` in order to use Copilot.
#### GitHub Actions
You can use GitHub Actions to run Copilot on every merge to master / main branch.
```yaml
name:"OneUptime Reliability Copilot"
on:
push:
# change this to main if you are using main branch.
branches:[master ]
schedule:
# Run every day at midnight UTC
- cron:'0 0 * * *'
jobs:
analyze:
name:Analyze Code
runs-on:ubuntu-latest
steps:
# Run Reliability Copilot in Docker Container
- name:Run Copilot
run:|
docker run --rm \
-e CODE_REPOSITORY_PASSWORD='<YOUR_GITHUB_PASSWORD>' \ # Required. Please make sure to use GitHub secrets.
# Use sudo if you're having permission issues with binding ports.
@@ -74,6 +74,16 @@ If you need to use SSL/TLS certificates, follow these steps:
- Set `HTTP_PROTOCOL` env var to `https`.
- Change `HOST` env var to the domain name of the server where the reverse proxy is hosted.
## Production Readiness Checklist
Ideally do not deploy OneUptime in production with docker-compose. We highly recommend using Kubernetes. There's a helm chart available for OneUptime [here](https://artifacthub.io/packages/helm/oneuptime/oneuptime).
If you still want to deploy OneUptime in production with docker-compose, please consider the following:
- **SSL/TLS**: Set up SSL/TLS certificates. OneUptime does not support setting up SSL/TLS certificates. You need to set up SSL/TLS certificates on your own. Please see above.
- **Secrets**: Make sure you have random secrets in your `config.env` file. There are some default secrets in that file. Please replace them with random long strings.
- **Backups**: Regularly backup your databases (Clickhouse, Postgres). Redis is used as a cache and is stateless and can be safely ignored.
- **Updates**: Please regularly update OneUptime. We release updates every day. We recommend you to update the software aleast once a week if you're running in production.
### Updating OneUptime
@@ -87,6 +97,4 @@ npm run update
### Things to consider
- In our Docker setup, we employ a local logging driver. OneUptime, particularly within the probe and ingestor containers, generates a substantial amount of logs. To prevent your storage from becoming full, it's crucial to limit the logging storage in Docker. For detailed instructions on how to do this, please refer to the official Docker documentation [here](https://docs.docker.com/config/containers/logging/local/).
- In our Docker setup, we employ a local logging driver. OneUptime, particularly within the probe and ingestor containers, generates a substantial amount of logs. To prevent your storage from becoming full, it's crucial to limit the logging storage in Docker. For detailed instructions on how to do this, please refer to the official Docker documentation [here](https://docs.docker.com/config/containers/logging/local/).
@@ -43,7 +43,7 @@ Measure and optimize the performance of your online apps and services. Track key
Detect and diagnose errors in your online services. Get detailed error reports with stack traces, context, and user feedback. Replace tools like Sentry.
##### Reliability Autopilot
##### Reliability Copilot
Scan your code and fix performance issues and errors automatically. Get recommendations for improving the reliability of your online services.
You can set up custom probes inside your network to monitor resources in your private network or resources that are behind your firewall.
You can set up custom probes inside your network to monitor resources in your private network or resources that are behind your firewall.
To begin with you need to create a custom probe in your Project Settings > Probe. Once you have created the custom probe on your OneUptime Dashboard. You should have the `PROBE_ID` and `PROBE_KEY`
### Deploy Probe
### Run the probe
#### Docker
To run a probe, please make sure you have docker installed. You can run custom probe by:
To run a probe, please make sure you have docker installed. You can run custom probe by:
If you are self hosting OneUptime, you can change `INGESTOR_URL` to your custom self hosted instance.
If you are self hosting OneUptime, you can change `ONEUPTIME_URL` to your custom self hosted instance.
### Verify
#### Docker Compose
You can also run the probe using docker-compose. Create a `docker-compose.yml` file with the following content:
```yaml
version:"3"
services:
oneuptime-probe:
image:oneuptime/probe:release
container_name:oneuptime-probe
environment:
- PROBE_KEY=<probe-key>
- PROBE_ID=<probe-id>
- ONEUPTIME_URL=https://oneuptime.com
network_mode:host
restart:always
```
Then run the following command:
```
docker compose up -d
```
If you are self hosting OneUptime, you can change `ONEUPTIME_URL` to your custom self hosted instance.
#### Kubernetes
You can also run the probe using Kubernetes. Create a `oneuptime-probe.yaml` file with the following content:
```yaml
apiVersion:apps/v1
kind:Deployment
metadata:
name:oneuptime-probe
spec:
selector:
matchLabels:
app:oneuptime-probe
template:
metadata:
labels:
app:oneuptime-probe
spec:
containers:
image:oneuptime/probe:release
env:
- name:PROBE_KEY
value:"<probe-key>"
- name:PROBE_ID
value:"<probe-id>"
- name:ONEUPTIME_URL
value:"https://oneuptime.com"
```
Then run the following command:
```bash
kubectl apply -f oneuptime-probe.yaml
```
If you are self hosting OneUptime, you can change `ONEUPTIME_URL` to your custom self hosted instance.
### Verify
If the probe is running successfully. It should show as `Connected` on your OneUptime dashboard. If it does not show as connected. You need to check logs of the container. If you're still having trouble. Please create an issue on [GitHub](https://github.com/oneuptime/oneuptime) or [contact support](https://oneuptime.com/support)
@@ -32,23 +32,25 @@ You can find the full list of supported sources [here](https://www.fluentd.org/d
- **Step 1: Install Fluentd on your system** - You can install Fluentd using the instructions provided [here](https://docs.fluentd.org/installation)
- **Step 2: Sign up for OneUptime account** - You can sign up for a free account [here](https://oneuptime.com). Please note while the account is free, log ingestion is a paid feature. You can find more details about the pricing [here](https://oneuptime.com/pricing).
- **Step 3: Create OneUptime Project** - Once you have the account, you can create a project from the OneUptime dashboard. If you need any help with creating a project or have any questions, please reach out to us at support@oneuptime.com
- **Step 4: Create a OneUptime Telemetry Service on OneUptime Dashboard**
- **Step 4: Create Telemetry Ingestion Token** - Once you have created a OneUptime account, you can create a telemetry ingestion token to ingest logs, metrics and traces from your application.
On the telemetry service page, click on "Create Telemetry Service" button.
After you sign up to OneUptime and create a project. Click on "More" in the Navigation bar and click on "Project Settings".
You can use the following configuration to send the telemetry data to the OneUptime HTTP Source. You can add this configuration to the fluentd configuration file. The configuration file is usually located at `/etc/fluentd/fluent.conf` or `/etc/td-agent/td-agent.conf`.
You need to replace the `YOUR_SERVICE_TOKEN` with the token you created in the previous step. You also need to replace the `YOUR_SERVICE_NAME` with the name of your service. name of the service can be any name you like. If the service does not exist in OneUptime, it will be created automatically.
```yaml
# Match all patterns
<match **>
@@ -57,7 +59,7 @@ You can use the following configuration to send the telemetry data to the OneUpt
If you're self-hosting oneuptime, this can be changed to your self hosted OpenTelemetry collector endpoint (eg: `http(s)://<your-oneuptime-host>/otlp`)
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.