honeycomb-api 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- honeycomb/__init__.py +217 -0
- honeycomb/_generated/__init__.py +8 -0
- honeycomb/_generated/api/__init__.py +1 -0
- honeycomb/_generated/api/auth/__init__.py +0 -0
- honeycomb/_generated/api/auth/get_auth.py +172 -0
- honeycomb/_generated/api/auth/get_v2_auth.py +168 -0
- honeycomb/_generated/api/boards/__init__.py +0 -0
- honeycomb/_generated/api/boards/create_board.py +217 -0
- honeycomb/_generated/api/boards/create_board_view.py +237 -0
- honeycomb/_generated/api/boards/delete_board.py +191 -0
- honeycomb/_generated/api/boards/delete_board_view.py +210 -0
- honeycomb/_generated/api/boards/get_board.py +208 -0
- honeycomb/_generated/api/boards/get_board_view.py +214 -0
- honeycomb/_generated/api/boards/list_board_views.py +206 -0
- honeycomb/_generated/api/boards/list_boards.py +177 -0
- honeycomb/_generated/api/boards/update_board.py +238 -0
- honeycomb/_generated/api/boards/update_board_view.py +250 -0
- honeycomb/_generated/api/burn_alerts/__init__.py +0 -0
- honeycomb/_generated/api/burn_alerts/create_burn_alert.py +224 -0
- honeycomb/_generated/api/burn_alerts/delete_burn_alert.py +204 -0
- honeycomb/_generated/api/burn_alerts/get_burn_alert.py +208 -0
- honeycomb/_generated/api/burn_alerts/list_burn_alerts_by_slo.py +220 -0
- honeycomb/_generated/api/calculated_fields/__init__.py +0 -0
- honeycomb/_generated/api/calculated_fields/create_calculated_field.py +239 -0
- honeycomb/_generated/api/calculated_fields/delete_calculated_field.py +225 -0
- honeycomb/_generated/api/calculated_fields/get_calculated_field.py +207 -0
- honeycomb/_generated/api/calculated_fields/list_calculated_fields.py +252 -0
- honeycomb/_generated/api/calculated_fields/update_calculated_field.py +242 -0
- honeycomb/_generated/api/columns/__init__.py +0 -0
- honeycomb/_generated/api/columns/create_column.py +241 -0
- honeycomb/_generated/api/columns/delete_column.py +221 -0
- honeycomb/_generated/api/columns/get_column.py +206 -0
- honeycomb/_generated/api/columns/list_columns.py +256 -0
- honeycomb/_generated/api/columns/update_column.py +242 -0
- honeycomb/_generated/api/dataset_definitions/__init__.py +0 -0
- honeycomb/_generated/api/dataset_definitions/list_dataset_definitions.py +193 -0
- honeycomb/_generated/api/dataset_definitions/patch_dataset_definitions.py +235 -0
- honeycomb/_generated/api/datasets/__init__.py +0 -0
- honeycomb/_generated/api/datasets/create_dataset.py +227 -0
- honeycomb/_generated/api/datasets/delete_dataset.py +251 -0
- honeycomb/_generated/api/datasets/get_dataset.py +195 -0
- honeycomb/_generated/api/datasets/list_datasets.py +177 -0
- honeycomb/_generated/api/datasets/update_dataset.py +217 -0
- honeycomb/_generated/api/enhance/__init__.py +0 -0
- honeycomb/_generated/api/enhance/record_enhance_indexer_usage.py +231 -0
- honeycomb/_generated/api/environments/__init__.py +0 -0
- honeycomb/_generated/api/environments/create_environment.py +247 -0
- honeycomb/_generated/api/environments/delete_environment.py +245 -0
- honeycomb/_generated/api/environments/get_environment.py +213 -0
- honeycomb/_generated/api/environments/list_environments.py +245 -0
- honeycomb/_generated/api/environments/update_environment.py +254 -0
- honeycomb/_generated/api/events/__init__.py +0 -0
- honeycomb/_generated/api/events/create_event.py +269 -0
- honeycomb/_generated/api/events/create_events.py +314 -0
- honeycomb/_generated/api/key_management/__init__.py +0 -0
- honeycomb/_generated/api/key_management/create_api_key.py +286 -0
- honeycomb/_generated/api/key_management/delete_api_key.py +223 -0
- honeycomb/_generated/api/key_management/get_api_key.py +225 -0
- honeycomb/_generated/api/key_management/list_api_keys.py +281 -0
- honeycomb/_generated/api/key_management/update_api_key.py +270 -0
- honeycomb/_generated/api/kinesis_events/__init__.py +0 -0
- honeycomb/_generated/api/kinesis_events/create_kinesis_events.py +220 -0
- honeycomb/_generated/api/marker_settings/__init__.py +0 -0
- honeycomb/_generated/api/marker_settings/create_marker_setting.py +209 -0
- honeycomb/_generated/api/marker_settings/delete_marker_settings.py +194 -0
- honeycomb/_generated/api/marker_settings/list_marker_settings.py +186 -0
- honeycomb/_generated/api/marker_settings/update_marker_settings.py +230 -0
- honeycomb/_generated/api/markers/__init__.py +0 -0
- honeycomb/_generated/api/markers/create_marker.py +220 -0
- honeycomb/_generated/api/markers/create_marker_v2.py +253 -0
- honeycomb/_generated/api/markers/delete_marker.py +200 -0
- honeycomb/_generated/api/markers/get_marker.py +194 -0
- honeycomb/_generated/api/markers/update_marker.py +233 -0
- honeycomb/_generated/api/markers/update_marker_v2.py +262 -0
- honeycomb/_generated/api/pipelines/__init__.py +0 -0
- honeycomb/_generated/api/pipelines/get_pipeline_configuration.py +306 -0
- honeycomb/_generated/api/pipelines/record_pipeline_usage.py +244 -0
- honeycomb/_generated/api/pipelines/update_pipeline_configuration_rollout.py +261 -0
- honeycomb/_generated/api/queries/__init__.py +0 -0
- honeycomb/_generated/api/queries/create_query.py +224 -0
- honeycomb/_generated/api/queries/get_query.py +208 -0
- honeycomb/_generated/api/query_annotations/__init__.py +0 -0
- honeycomb/_generated/api/query_annotations/create_query_annotation.py +226 -0
- honeycomb/_generated/api/query_annotations/delete_query_annotation.py +198 -0
- honeycomb/_generated/api/query_annotations/get_query_annotation.py +202 -0
- honeycomb/_generated/api/query_annotations/list_query_annotations.py +217 -0
- honeycomb/_generated/api/query_annotations/update_query_annotation.py +237 -0
- honeycomb/_generated/api/query_data/__init__.py +0 -0
- honeycomb/_generated/api/query_data/create_query_result.py +247 -0
- honeycomb/_generated/api/query_data/get_query_result.py +208 -0
- honeycomb/_generated/api/recipients/__init__.py +0 -0
- honeycomb/_generated/api/recipients/create_recipient.py +317 -0
- honeycomb/_generated/api/recipients/delete_recipient.py +199 -0
- honeycomb/_generated/api/recipients/get_recipient.py +252 -0
- honeycomb/_generated/api/recipients/list_recipients.py +230 -0
- honeycomb/_generated/api/recipients/update_recipient.py +323 -0
- honeycomb/_generated/api/reporting/__init__.py +0 -0
- honeycomb/_generated/api/reporting/get_slo_history.py +218 -0
- honeycomb/_generated/api/service_maps/__init__.py +0 -0
- honeycomb/_generated/api/service_maps/create_map_dependency_request.py +252 -0
- honeycomb/_generated/api/service_maps/get_map_dependencies.py +265 -0
- honeycomb/_generated/api/sl_os/__init__.py +0 -0
- honeycomb/_generated/api/sl_os/create_slo.py +229 -0
- honeycomb/_generated/api/sl_os/delete_slo.py +210 -0
- honeycomb/_generated/api/sl_os/get_slo.py +256 -0
- honeycomb/_generated/api/sl_os/list_slos.py +210 -0
- honeycomb/_generated/api/sl_os/update_slo.py +242 -0
- honeycomb/_generated/api/triggers/__init__.py +0 -0
- honeycomb/_generated/api/triggers/create_trigger.py +250 -0
- honeycomb/_generated/api/triggers/delete_trigger.py +204 -0
- honeycomb/_generated/api/triggers/get_trigger.py +214 -0
- honeycomb/_generated/api/triggers/list_triggers.py +206 -0
- honeycomb/_generated/api/triggers/list_triggers_with_recipient.py +208 -0
- honeycomb/_generated/api/triggers/update_trigger.py +248 -0
- honeycomb/_generated/client.py +271 -0
- honeycomb/_generated/errors.py +14 -0
- honeycomb/_generated/models/__init__.py +561 -0
- honeycomb/_generated/models/api_key_create_request.py +78 -0
- honeycomb/_generated/models/api_key_create_request_data.py +130 -0
- honeycomb/_generated/models/api_key_create_request_data_relationships.py +78 -0
- honeycomb/_generated/models/api_key_create_request_data_type.py +7 -0
- honeycomb/_generated/models/api_key_list_response.py +112 -0
- honeycomb/_generated/models/api_key_object.py +189 -0
- honeycomb/_generated/models/api_key_object_links.py +74 -0
- honeycomb/_generated/models/api_key_object_relationships.py +150 -0
- honeycomb/_generated/models/api_key_object_type.py +7 -0
- honeycomb/_generated/models/api_key_response.py +78 -0
- honeycomb/_generated/models/api_key_update_request.py +104 -0
- honeycomb/_generated/models/auth.py +140 -0
- honeycomb/_generated/models/auth_api_key_access.py +154 -0
- honeycomb/_generated/models/auth_environment.py +82 -0
- honeycomb/_generated/models/auth_team.py +82 -0
- honeycomb/_generated/models/auth_type.py +8 -0
- honeycomb/_generated/models/auth_v2_response.py +108 -0
- honeycomb/_generated/models/auth_v2_response_data.py +122 -0
- honeycomb/_generated/models/auth_v2_response_data_attributes.py +141 -0
- honeycomb/_generated/models/auth_v2_response_data_attributes_key_type.py +7 -0
- honeycomb/_generated/models/auth_v2_response_data_attributes_timestamps.py +107 -0
- honeycomb/_generated/models/auth_v2_response_data_relationships.py +59 -0
- honeycomb/_generated/models/auth_v2_response_data_type.py +7 -0
- honeycomb/_generated/models/base_trigger.py +367 -0
- honeycomb/_generated/models/base_trigger_alert_type.py +8 -0
- honeycomb/_generated/models/base_trigger_baseline_details_type_0.py +92 -0
- honeycomb/_generated/models/base_trigger_baseline_details_type_0_offset_minutes.py +10 -0
- honeycomb/_generated/models/base_trigger_baseline_details_type_0_type.py +8 -0
- honeycomb/_generated/models/base_trigger_evaluation_schedule.py +83 -0
- honeycomb/_generated/models/base_trigger_evaluation_schedule_type.py +8 -0
- honeycomb/_generated/models/base_trigger_evaluation_schedule_window.py +103 -0
- honeycomb/_generated/models/base_trigger_evaluation_schedule_window_days_of_week_item.py +13 -0
- honeycomb/_generated/models/base_trigger_threshold.py +95 -0
- honeycomb/_generated/models/base_trigger_threshold_op.py +10 -0
- honeycomb/_generated/models/batch_event.py +110 -0
- honeycomb/_generated/models/board.py +276 -0
- honeycomb/_generated/models/board_layout_generation.py +8 -0
- honeycomb/_generated/models/board_links.py +74 -0
- honeycomb/_generated/models/board_panel_position.py +104 -0
- honeycomb/_generated/models/board_query_visualization_settings.py +141 -0
- honeycomb/_generated/models/board_query_visualization_settings_charts_item.py +113 -0
- honeycomb/_generated/models/board_query_visualization_settings_charts_item_chart_type.py +13 -0
- honeycomb/_generated/models/board_type.py +7 -0
- honeycomb/_generated/models/board_view_filter.py +93 -0
- honeycomb/_generated/models/board_view_filter_operation.py +22 -0
- honeycomb/_generated/models/board_view_response.py +111 -0
- honeycomb/_generated/models/budget_rate.py +189 -0
- honeycomb/_generated/models/budget_rate_alert_type.py +8 -0
- honeycomb/_generated/models/burn_alert_shared_params.py +136 -0
- honeycomb/_generated/models/calculated_field.py +117 -0
- honeycomb/_generated/models/configuration_key_attributes.py +140 -0
- honeycomb/_generated/models/configuration_key_attributes_key_type.py +7 -0
- honeycomb/_generated/models/configuration_key_attributes_timestamps.py +107 -0
- honeycomb/_generated/models/create_board_view_request.py +96 -0
- honeycomb/_generated/models/create_budget_rate_burn_alert_request.py +232 -0
- honeycomb/_generated/models/create_budget_rate_burn_alert_request_slo.py +74 -0
- honeycomb/_generated/models/create_column.py +149 -0
- honeycomb/_generated/models/create_column_type.py +11 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request.py +78 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data.py +90 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes.py +97 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data.py +88 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item.py +89 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item.py +89 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item.py +97 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum.py +102 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_aggregation_temporality.py +7 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item.py +105 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item_attributes_item.py +87 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item_attributes_item_value.py +73 -0
- honeycomb/_generated/models/create_enhance_indexer_usage_record_request_data_type.py +7 -0
- honeycomb/_generated/models/create_environment_request.py +78 -0
- honeycomb/_generated/models/create_environment_request_data.py +90 -0
- honeycomb/_generated/models/create_environment_request_data_attributes.py +102 -0
- honeycomb/_generated/models/create_environment_request_data_type.py +7 -0
- honeycomb/_generated/models/create_events_content_encoding.py +8 -0
- honeycomb/_generated/models/create_events_response_200_item.py +82 -0
- honeycomb/_generated/models/create_exhaustion_time_burn_alert_request.py +217 -0
- honeycomb/_generated/models/create_exhaustion_time_burn_alert_request_slo.py +74 -0
- honeycomb/_generated/models/create_map_dependencies_request.py +128 -0
- honeycomb/_generated/models/create_map_dependencies_response.py +97 -0
- honeycomb/_generated/models/create_map_dependencies_response_status.py +9 -0
- honeycomb/_generated/models/create_pipeline_health_record_request.py +78 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data.py +98 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes.py +88 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data.py +88 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item.py +89 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item.py +89 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item.py +97 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum.py +102 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_aggregation_temporality.py +7 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item.py +105 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item_attributes_item.py +87 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_attributes_usage_data_resource_metrics_item_scope_metrics_item_metrics_item_sum_datapoints_item_attributes_item_value.py +73 -0
- honeycomb/_generated/models/create_pipeline_health_record_request_data_type.py +7 -0
- honeycomb/_generated/models/create_query_result_request.py +118 -0
- honeycomb/_generated/models/dataset.py +183 -0
- honeycomb/_generated/models/dataset_creation_payload.py +93 -0
- honeycomb/_generated/models/dataset_definition_type_1.py +96 -0
- honeycomb/_generated/models/dataset_definition_type_1_column_type.py +8 -0
- honeycomb/_generated/models/dataset_definitions.py +599 -0
- honeycomb/_generated/models/dataset_relationship.py +79 -0
- honeycomb/_generated/models/dataset_relationship_data.py +82 -0
- honeycomb/_generated/models/dataset_relationship_data_type.py +7 -0
- honeycomb/_generated/models/dataset_settings.py +73 -0
- honeycomb/_generated/models/dataset_update_payload.py +105 -0
- honeycomb/_generated/models/dataset_update_payload_settings.py +73 -0
- honeycomb/_generated/models/detailed_error.py +115 -0
- honeycomb/_generated/models/email_recipient.py +160 -0
- honeycomb/_generated/models/email_recipient_details.py +71 -0
- honeycomb/_generated/models/email_recipient_type.py +7 -0
- honeycomb/_generated/models/environment.py +112 -0
- honeycomb/_generated/models/environment_attributes.py +140 -0
- honeycomb/_generated/models/environment_attributes_color_type_1.py +7 -0
- honeycomb/_generated/models/environment_attributes_settings.py +70 -0
- honeycomb/_generated/models/environment_color.py +16 -0
- honeycomb/_generated/models/environment_links.py +70 -0
- honeycomb/_generated/models/environment_list_response.py +112 -0
- honeycomb/_generated/models/environment_relationship.py +79 -0
- honeycomb/_generated/models/environment_relationship_data.py +82 -0
- honeycomb/_generated/models/environment_relationship_data_type.py +7 -0
- honeycomb/_generated/models/environment_response.py +78 -0
- honeycomb/_generated/models/environment_type.py +7 -0
- honeycomb/_generated/models/error.py +74 -0
- honeycomb/_generated/models/event.py +71 -0
- honeycomb/_generated/models/exhaustion_time.py +174 -0
- honeycomb/_generated/models/exhaustion_time_alert_type.py +8 -0
- honeycomb/_generated/models/exhaustion_time_burn_alert_list_response.py +198 -0
- honeycomb/_generated/models/exhaustion_time_burn_alert_list_response_slo.py +77 -0
- honeycomb/_generated/models/filter_op.py +22 -0
- honeycomb/_generated/models/get_map_dependencies_response.py +169 -0
- honeycomb/_generated/models/get_map_dependencies_response_status.py +9 -0
- honeycomb/_generated/models/having_calculate_op.py +29 -0
- honeycomb/_generated/models/having_op.py +12 -0
- honeycomb/_generated/models/included_resource.py +106 -0
- honeycomb/_generated/models/included_resource_attributes.py +62 -0
- honeycomb/_generated/models/ingest_key_attributes.py +153 -0
- honeycomb/_generated/models/ingest_key_attributes_key_type.py +7 -0
- honeycomb/_generated/models/ingest_key_attributes_permissions.py +74 -0
- honeycomb/_generated/models/ingest_key_attributes_timestamps.py +107 -0
- honeycomb/_generated/models/ingest_key_type.py +90 -0
- honeycomb/_generated/models/ingest_key_type_key_type.py +7 -0
- honeycomb/_generated/models/jsonapi_error_source.py +92 -0
- honeycomb/_generated/models/kinesis_event.py +111 -0
- honeycomb/_generated/models/kinesis_event_record.py +73 -0
- honeycomb/_generated/models/kinesis_response.py +91 -0
- honeycomb/_generated/models/list_api_keys_filtertype.py +8 -0
- honeycomb/_generated/models/map_dependency.py +118 -0
- honeycomb/_generated/models/map_node.py +97 -0
- honeycomb/_generated/models/map_node_type.py +7 -0
- honeycomb/_generated/models/marker.py +151 -0
- honeycomb/_generated/models/marker_create_request.py +78 -0
- honeycomb/_generated/models/marker_create_request_data.py +104 -0
- honeycomb/_generated/models/marker_create_request_data_attributes.py +110 -0
- honeycomb/_generated/models/marker_create_request_data_relationships.py +92 -0
- honeycomb/_generated/models/marker_create_request_data_type.py +7 -0
- honeycomb/_generated/models/marker_object.py +136 -0
- honeycomb/_generated/models/marker_object_attributes.py +146 -0
- honeycomb/_generated/models/marker_object_attributes_timestamps.py +107 -0
- honeycomb/_generated/models/marker_object_links.py +74 -0
- honeycomb/_generated/models/marker_object_relationships.py +111 -0
- honeycomb/_generated/models/marker_object_relationships_dataset.py +104 -0
- honeycomb/_generated/models/marker_object_relationships_dataset_data_type_0.py +94 -0
- honeycomb/_generated/models/marker_object_relationships_dataset_data_type_0_type.py +7 -0
- honeycomb/_generated/models/marker_object_type.py +7 -0
- honeycomb/_generated/models/marker_response.py +78 -0
- honeycomb/_generated/models/marker_setting.py +125 -0
- honeycomb/_generated/models/marker_update_request.py +78 -0
- honeycomb/_generated/models/marker_update_request_data.py +104 -0
- honeycomb/_generated/models/marker_update_request_data_attributes.py +111 -0
- honeycomb/_generated/models/marker_update_request_data_relationships.py +92 -0
- honeycomb/_generated/models/marker_update_request_data_type.py +7 -0
- honeycomb/_generated/models/ms_teams_recipient.py +161 -0
- honeycomb/_generated/models/ms_teams_recipient_details.py +80 -0
- honeycomb/_generated/models/ms_teams_recipient_type.py +7 -0
- honeycomb/_generated/models/ms_teams_workflow_recipient.py +161 -0
- honeycomb/_generated/models/ms_teams_workflow_recipient_details.py +80 -0
- honeycomb/_generated/models/ms_teams_workflow_recipient_type.py +7 -0
- honeycomb/_generated/models/notification_recipient.py +131 -0
- honeycomb/_generated/models/notification_recipient_details.py +117 -0
- honeycomb/_generated/models/notification_recipient_details_pagerduty_severity.py +10 -0
- honeycomb/_generated/models/notification_recipient_details_variables_item.py +81 -0
- honeycomb/_generated/models/pager_duty_recipient.py +160 -0
- honeycomb/_generated/models/pager_duty_recipient_details.py +79 -0
- honeycomb/_generated/models/pager_duty_recipient_type.py +7 -0
- honeycomb/_generated/models/pagination_links.py +80 -0
- honeycomb/_generated/models/payload_template.py +73 -0
- honeycomb/_generated/models/pipeline_configuration_response.py +112 -0
- honeycomb/_generated/models/pipeline_configuration_response_attributes.py +101 -0
- honeycomb/_generated/models/pipeline_configuration_response_attributes_configs_item.py +85 -0
- honeycomb/_generated/models/pipeline_configuration_response_links.py +73 -0
- honeycomb/_generated/models/pipeline_configuration_response_type.py +7 -0
- honeycomb/_generated/models/pipeline_configuration_rollout.py +112 -0
- honeycomb/_generated/models/pipeline_configuration_rollout_attributes.py +75 -0
- honeycomb/_generated/models/pipeline_configuration_rollout_attributes_status.py +12 -0
- honeycomb/_generated/models/pipeline_configuration_rollout_links.py +73 -0
- honeycomb/_generated/models/pipeline_configuration_rollout_type.py +7 -0
- honeycomb/_generated/models/preset_filter.py +78 -0
- honeycomb/_generated/models/query.py +346 -0
- honeycomb/_generated/models/query_annotation.py +166 -0
- honeycomb/_generated/models/query_annotation_source.py +8 -0
- honeycomb/_generated/models/query_calculated_fields_item.py +80 -0
- honeycomb/_generated/models/query_calculations_item.py +98 -0
- honeycomb/_generated/models/query_compare_time_offset_seconds.py +14 -0
- honeycomb/_generated/models/query_filter_combination.py +8 -0
- honeycomb/_generated/models/query_filters_item.py +126 -0
- honeycomb/_generated/models/query_havings_item.py +128 -0
- honeycomb/_generated/models/query_op.py +30 -0
- honeycomb/_generated/models/query_orders_item.py +115 -0
- honeycomb/_generated/models/query_orders_item_order.py +8 -0
- honeycomb/_generated/models/query_panel.py +114 -0
- honeycomb/_generated/models/query_panel_query_panel.py +143 -0
- honeycomb/_generated/models/query_panel_query_panel_query_style.py +9 -0
- honeycomb/_generated/models/query_result.py +130 -0
- honeycomb/_generated/models/query_result_details.py +156 -0
- honeycomb/_generated/models/query_result_details_data.py +188 -0
- honeycomb/_generated/models/query_result_details_links.py +85 -0
- honeycomb/_generated/models/query_result_links.py +85 -0
- honeycomb/_generated/models/query_results_data.py +89 -0
- honeycomb/_generated/models/query_results_data_data.py +71 -0
- honeycomb/_generated/models/query_results_series.py +97 -0
- honeycomb/_generated/models/recipient_properties.py +137 -0
- honeycomb/_generated/models/recipient_type.py +12 -0
- honeycomb/_generated/models/slack_recipient.py +160 -0
- honeycomb/_generated/models/slack_recipient_details.py +71 -0
- honeycomb/_generated/models/slack_recipient_type.py +7 -0
- honeycomb/_generated/models/slo.py +245 -0
- honeycomb/_generated/models/slo_create.py +245 -0
- honeycomb/_generated/models/slo_create_sli.py +75 -0
- honeycomb/_generated/models/slo_detailed_response.py +312 -0
- honeycomb/_generated/models/slo_detailed_response_status.py +10 -0
- honeycomb/_generated/models/slo_history.py +94 -0
- honeycomb/_generated/models/slo_history_request.py +93 -0
- honeycomb/_generated/models/slo_history_response.py +91 -0
- honeycomb/_generated/models/slo_panel.py +114 -0
- honeycomb/_generated/models/slo_panel_slo_panel.py +75 -0
- honeycomb/_generated/models/slo_sli.py +74 -0
- honeycomb/_generated/models/tag.py +79 -0
- honeycomb/_generated/models/team_relationship.py +78 -0
- honeycomb/_generated/models/team_relationship_team.py +78 -0
- honeycomb/_generated/models/team_relationship_team_data.py +82 -0
- honeycomb/_generated/models/team_relationship_team_data_type.py +7 -0
- honeycomb/_generated/models/template_variable_definition.py +81 -0
- honeycomb/_generated/models/text_panel.py +114 -0
- honeycomb/_generated/models/text_panel_text_panel.py +71 -0
- honeycomb/_generated/models/trigger_response.py +399 -0
- honeycomb/_generated/models/trigger_with_inline_query.py +390 -0
- honeycomb/_generated/models/trigger_with_inline_query_query.py +60 -0
- honeycomb/_generated/models/trigger_with_query_reference.py +376 -0
- honeycomb/_generated/models/update_board_view_request.py +107 -0
- honeycomb/_generated/models/update_environment_request.py +78 -0
- honeycomb/_generated/models/update_environment_request_data.py +98 -0
- honeycomb/_generated/models/update_environment_request_data_attributes.py +118 -0
- honeycomb/_generated/models/update_environment_request_data_attributes_settings.py +73 -0
- honeycomb/_generated/models/update_environment_request_data_type.py +7 -0
- honeycomb/_generated/models/update_exhaustion_time_burn_alert_request.py +202 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout.py +98 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_attributes.py +75 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_attributes_status.py +12 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request.py +78 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data.py +98 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data_attributes.py +75 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data_attributes_status.py +12 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_request_data_type.py +7 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_response.py +78 -0
- honeycomb/_generated/models/update_pipeline_configuration_rollout_type.py +7 -0
- honeycomb/_generated/models/user_relationship.py +78 -0
- honeycomb/_generated/models/user_relationship_data.py +82 -0
- honeycomb/_generated/models/user_relationship_data_type.py +7 -0
- honeycomb/_generated/models/validation_error.py +145 -0
- honeycomb/_generated/models/validation_error_type_detail_item.py +103 -0
- honeycomb/_generated/models/validation_error_type_detail_item_code.py +10 -0
- honeycomb/_generated/models/webhook_header.py +81 -0
- honeycomb/_generated/models/webhook_recipient.py +160 -0
- honeycomb/_generated/models/webhook_recipient_details.py +142 -0
- honeycomb/_generated/models/webhook_recipient_details_webhook_payloads.py +117 -0
- honeycomb/_generated/models/webhook_recipient_details_webhook_payloads_payload_templates.py +126 -0
- honeycomb/_generated/models/webhook_recipient_type.py +7 -0
- honeycomb/_generated/py.typed +1 -0
- honeycomb/_generated/types.py +46 -0
- honeycomb/auth.py +152 -0
- honeycomb/client.py +736 -0
- honeycomb/exceptions.py +236 -0
- honeycomb/models/__init__.py +157 -0
- honeycomb/models/api_keys.py +81 -0
- honeycomb/models/board_builder.py +387 -0
- honeycomb/models/boards.py +86 -0
- honeycomb/models/burn_alerts.py +124 -0
- honeycomb/models/columns.py +59 -0
- honeycomb/models/datasets.py +51 -0
- honeycomb/models/derived_columns.py +107 -0
- honeycomb/models/environments.py +106 -0
- honeycomb/models/events.py +35 -0
- honeycomb/models/marker_builder.py +136 -0
- honeycomb/models/markers.py +73 -0
- honeycomb/models/queries.py +210 -0
- honeycomb/models/query_annotations.py +63 -0
- honeycomb/models/query_builder.py +840 -0
- honeycomb/models/recipient_builder.py +248 -0
- honeycomb/models/recipients.py +43 -0
- honeycomb/models/service_map_dependencies.py +126 -0
- honeycomb/models/slo_builder.py +463 -0
- honeycomb/models/slos.py +66 -0
- honeycomb/models/tags_mixin.py +79 -0
- honeycomb/models/trigger_builder.py +561 -0
- honeycomb/models/triggers.py +208 -0
- honeycomb/resources/__init__.py +35 -0
- honeycomb/resources/_recipient_utils.py +156 -0
- honeycomb/resources/api_keys.py +303 -0
- honeycomb/resources/base.py +142 -0
- honeycomb/resources/boards.py +350 -0
- honeycomb/resources/burn_alerts.py +205 -0
- honeycomb/resources/columns.py +185 -0
- honeycomb/resources/datasets.py +163 -0
- honeycomb/resources/derived_columns.py +233 -0
- honeycomb/resources/environments.py +295 -0
- honeycomb/resources/events.py +156 -0
- honeycomb/resources/markers.py +334 -0
- honeycomb/resources/queries.py +256 -0
- honeycomb/resources/query_annotations.py +207 -0
- honeycomb/resources/query_results.py +886 -0
- honeycomb/resources/recipients.py +202 -0
- honeycomb/resources/service_map_dependencies.py +389 -0
- honeycomb/resources/slos.py +353 -0
- honeycomb/resources/triggers.py +284 -0
- honeycomb/tools/__init__.py +85 -0
- honeycomb/tools/__main__.py +204 -0
- honeycomb/tools/builders.py +512 -0
- honeycomb/tools/descriptions.py +523 -0
- honeycomb/tools/executor.py +860 -0
- honeycomb/tools/generator.py +2386 -0
- honeycomb/tools/schemas.py +184 -0
- honeycomb_api-0.1.0.dist-info/METADATA +451 -0
- honeycomb_api-0.1.0.dist-info/RECORD +453 -0
- honeycomb_api-0.1.0.dist-info/WHEEL +4 -0
- honeycomb_api-0.1.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,860 @@
|
|
|
1
|
+
"""Tool execution handler for Claude API tool calls.
|
|
2
|
+
|
|
3
|
+
This module executes Claude tool calls against the Honeycomb API,
|
|
4
|
+
converting tool inputs to API operations and returning JSON results.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import json
|
|
8
|
+
from typing import TYPE_CHECKING, Any
|
|
9
|
+
|
|
10
|
+
from honeycomb.models import (
|
|
11
|
+
BatchEvent,
|
|
12
|
+
BurnAlertCreate,
|
|
13
|
+
BurnAlertRecipient,
|
|
14
|
+
ColumnCreate,
|
|
15
|
+
DatasetCreate,
|
|
16
|
+
DerivedColumnCreate,
|
|
17
|
+
MarkerCreate,
|
|
18
|
+
MarkerSettingCreate,
|
|
19
|
+
QuerySpec,
|
|
20
|
+
RecipientCreate,
|
|
21
|
+
ServiceMapDependencyRequestCreate,
|
|
22
|
+
SLOCreate,
|
|
23
|
+
)
|
|
24
|
+
from honeycomb.tools.builders import _build_board, _build_slo, _build_trigger
|
|
25
|
+
|
|
26
|
+
if TYPE_CHECKING:
|
|
27
|
+
from honeycomb import HoneycombClient
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# ==============================================================================
|
|
31
|
+
# Main Executor
|
|
32
|
+
# ==============================================================================
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
async def execute_tool(
|
|
36
|
+
client: "HoneycombClient",
|
|
37
|
+
tool_name: str,
|
|
38
|
+
tool_input: dict[str, Any],
|
|
39
|
+
) -> str:
|
|
40
|
+
"""Execute a Honeycomb tool and return the result as JSON string.
|
|
41
|
+
|
|
42
|
+
Args:
|
|
43
|
+
client: HoneycombClient instance (must be async-capable)
|
|
44
|
+
tool_name: Name of the tool to execute (e.g., "honeycomb_create_trigger")
|
|
45
|
+
tool_input: Tool input parameters as dict
|
|
46
|
+
|
|
47
|
+
Returns:
|
|
48
|
+
JSON-serialized result string
|
|
49
|
+
|
|
50
|
+
Raises:
|
|
51
|
+
ValueError: If tool name is unknown
|
|
52
|
+
HoneycombAPIError: If API call fails
|
|
53
|
+
|
|
54
|
+
Example:
|
|
55
|
+
>>> from honeycomb import HoneycombClient
|
|
56
|
+
>>> from honeycomb.tools import execute_tool
|
|
57
|
+
>>>
|
|
58
|
+
>>> async with HoneycombClient(api_key="...") as client:
|
|
59
|
+
... result = await execute_tool(
|
|
60
|
+
... client,
|
|
61
|
+
... "honeycomb_list_triggers",
|
|
62
|
+
... {"dataset": "api-logs"}
|
|
63
|
+
... )
|
|
64
|
+
... print(result) # JSON string
|
|
65
|
+
"""
|
|
66
|
+
# Route to appropriate handler
|
|
67
|
+
if tool_name == "honeycomb_list_triggers":
|
|
68
|
+
return await _execute_list_triggers(client, tool_input)
|
|
69
|
+
elif tool_name == "honeycomb_get_trigger":
|
|
70
|
+
return await _execute_get_trigger(client, tool_input)
|
|
71
|
+
elif tool_name == "honeycomb_create_trigger":
|
|
72
|
+
return await _execute_create_trigger(client, tool_input)
|
|
73
|
+
elif tool_name == "honeycomb_update_trigger":
|
|
74
|
+
return await _execute_update_trigger(client, tool_input)
|
|
75
|
+
elif tool_name == "honeycomb_delete_trigger":
|
|
76
|
+
return await _execute_delete_trigger(client, tool_input)
|
|
77
|
+
elif tool_name == "honeycomb_list_slos":
|
|
78
|
+
return await _execute_list_slos(client, tool_input)
|
|
79
|
+
elif tool_name == "honeycomb_get_slo":
|
|
80
|
+
return await _execute_get_slo(client, tool_input)
|
|
81
|
+
elif tool_name == "honeycomb_create_slo":
|
|
82
|
+
return await _execute_create_slo(client, tool_input)
|
|
83
|
+
elif tool_name == "honeycomb_update_slo":
|
|
84
|
+
return await _execute_update_slo(client, tool_input)
|
|
85
|
+
elif tool_name == "honeycomb_delete_slo":
|
|
86
|
+
return await _execute_delete_slo(client, tool_input)
|
|
87
|
+
elif tool_name == "honeycomb_list_burn_alerts":
|
|
88
|
+
return await _execute_list_burn_alerts(client, tool_input)
|
|
89
|
+
elif tool_name == "honeycomb_get_burn_alert":
|
|
90
|
+
return await _execute_get_burn_alert(client, tool_input)
|
|
91
|
+
elif tool_name == "honeycomb_create_burn_alert":
|
|
92
|
+
return await _execute_create_burn_alert(client, tool_input)
|
|
93
|
+
elif tool_name == "honeycomb_update_burn_alert":
|
|
94
|
+
return await _execute_update_burn_alert(client, tool_input)
|
|
95
|
+
elif tool_name == "honeycomb_delete_burn_alert":
|
|
96
|
+
return await _execute_delete_burn_alert(client, tool_input)
|
|
97
|
+
# Datasets
|
|
98
|
+
elif tool_name == "honeycomb_list_datasets":
|
|
99
|
+
return await _execute_list_datasets(client, tool_input)
|
|
100
|
+
elif tool_name == "honeycomb_get_dataset":
|
|
101
|
+
return await _execute_get_dataset(client, tool_input)
|
|
102
|
+
elif tool_name == "honeycomb_create_dataset":
|
|
103
|
+
return await _execute_create_dataset(client, tool_input)
|
|
104
|
+
elif tool_name == "honeycomb_update_dataset":
|
|
105
|
+
return await _execute_update_dataset(client, tool_input)
|
|
106
|
+
elif tool_name == "honeycomb_delete_dataset":
|
|
107
|
+
return await _execute_delete_dataset(client, tool_input)
|
|
108
|
+
# Columns
|
|
109
|
+
elif tool_name == "honeycomb_list_columns":
|
|
110
|
+
return await _execute_list_columns(client, tool_input)
|
|
111
|
+
elif tool_name == "honeycomb_get_column":
|
|
112
|
+
return await _execute_get_column(client, tool_input)
|
|
113
|
+
elif tool_name == "honeycomb_create_column":
|
|
114
|
+
return await _execute_create_column(client, tool_input)
|
|
115
|
+
elif tool_name == "honeycomb_update_column":
|
|
116
|
+
return await _execute_update_column(client, tool_input)
|
|
117
|
+
elif tool_name == "honeycomb_delete_column":
|
|
118
|
+
return await _execute_delete_column(client, tool_input)
|
|
119
|
+
# Recipients
|
|
120
|
+
elif tool_name == "honeycomb_list_recipients":
|
|
121
|
+
return await _execute_list_recipients(client, tool_input)
|
|
122
|
+
elif tool_name == "honeycomb_get_recipient":
|
|
123
|
+
return await _execute_get_recipient(client, tool_input)
|
|
124
|
+
elif tool_name == "honeycomb_create_recipient":
|
|
125
|
+
return await _execute_create_recipient(client, tool_input)
|
|
126
|
+
elif tool_name == "honeycomb_update_recipient":
|
|
127
|
+
return await _execute_update_recipient(client, tool_input)
|
|
128
|
+
elif tool_name == "honeycomb_delete_recipient":
|
|
129
|
+
return await _execute_delete_recipient(client, tool_input)
|
|
130
|
+
elif tool_name == "honeycomb_get_recipient_triggers":
|
|
131
|
+
return await _execute_get_recipient_triggers(client, tool_input)
|
|
132
|
+
# Derived Columns
|
|
133
|
+
elif tool_name == "honeycomb_list_derived_columns":
|
|
134
|
+
return await _execute_list_derived_columns(client, tool_input)
|
|
135
|
+
elif tool_name == "honeycomb_get_derived_column":
|
|
136
|
+
return await _execute_get_derived_column(client, tool_input)
|
|
137
|
+
elif tool_name == "honeycomb_create_derived_column":
|
|
138
|
+
return await _execute_create_derived_column(client, tool_input)
|
|
139
|
+
elif tool_name == "honeycomb_update_derived_column":
|
|
140
|
+
return await _execute_update_derived_column(client, tool_input)
|
|
141
|
+
elif tool_name == "honeycomb_delete_derived_column":
|
|
142
|
+
return await _execute_delete_derived_column(client, tool_input)
|
|
143
|
+
# Queries
|
|
144
|
+
elif tool_name == "honeycomb_create_query":
|
|
145
|
+
return await _execute_create_query(client, tool_input)
|
|
146
|
+
elif tool_name == "honeycomb_get_query":
|
|
147
|
+
return await _execute_get_query(client, tool_input)
|
|
148
|
+
elif tool_name == "honeycomb_run_query":
|
|
149
|
+
return await _execute_run_query(client, tool_input)
|
|
150
|
+
# Boards
|
|
151
|
+
elif tool_name == "honeycomb_list_boards":
|
|
152
|
+
return await _execute_list_boards(client, tool_input)
|
|
153
|
+
elif tool_name == "honeycomb_get_board":
|
|
154
|
+
return await _execute_get_board(client, tool_input)
|
|
155
|
+
elif tool_name == "honeycomb_create_board":
|
|
156
|
+
return await _execute_create_board(client, tool_input)
|
|
157
|
+
elif tool_name == "honeycomb_update_board":
|
|
158
|
+
return await _execute_update_board(client, tool_input)
|
|
159
|
+
elif tool_name == "honeycomb_delete_board":
|
|
160
|
+
return await _execute_delete_board(client, tool_input)
|
|
161
|
+
# Markers
|
|
162
|
+
elif tool_name == "honeycomb_list_markers":
|
|
163
|
+
return await _execute_list_markers(client, tool_input)
|
|
164
|
+
elif tool_name == "honeycomb_create_marker":
|
|
165
|
+
return await _execute_create_marker(client, tool_input)
|
|
166
|
+
elif tool_name == "honeycomb_update_marker":
|
|
167
|
+
return await _execute_update_marker(client, tool_input)
|
|
168
|
+
elif tool_name == "honeycomb_delete_marker":
|
|
169
|
+
return await _execute_delete_marker(client, tool_input)
|
|
170
|
+
# Marker Settings
|
|
171
|
+
elif tool_name == "honeycomb_list_marker_settings":
|
|
172
|
+
return await _execute_list_marker_settings(client, tool_input)
|
|
173
|
+
elif tool_name == "honeycomb_get_marker_setting":
|
|
174
|
+
return await _execute_get_marker_setting(client, tool_input)
|
|
175
|
+
elif tool_name == "honeycomb_create_marker_setting":
|
|
176
|
+
return await _execute_create_marker_setting(client, tool_input)
|
|
177
|
+
elif tool_name == "honeycomb_update_marker_setting":
|
|
178
|
+
return await _execute_update_marker_setting(client, tool_input)
|
|
179
|
+
elif tool_name == "honeycomb_delete_marker_setting":
|
|
180
|
+
return await _execute_delete_marker_setting(client, tool_input)
|
|
181
|
+
# Events
|
|
182
|
+
elif tool_name == "honeycomb_send_event":
|
|
183
|
+
return await _execute_send_event(client, tool_input)
|
|
184
|
+
elif tool_name == "honeycomb_send_batch_events":
|
|
185
|
+
return await _execute_send_batch_events(client, tool_input)
|
|
186
|
+
# Service Map
|
|
187
|
+
elif tool_name == "honeycomb_query_service_map":
|
|
188
|
+
return await _execute_query_service_map(client, tool_input)
|
|
189
|
+
else:
|
|
190
|
+
raise ValueError(
|
|
191
|
+
f"Unknown tool: {tool_name}. "
|
|
192
|
+
"Valid tools: triggers (5), slos (5), burn_alerts (5), datasets (5), columns (5), "
|
|
193
|
+
"recipients (6), derived_columns (5), queries (3), boards (5), markers (4), "
|
|
194
|
+
"marker_settings (5), events (2), service_map (1)"
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
# ==============================================================================
|
|
199
|
+
# Triggers
|
|
200
|
+
# ==============================================================================
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
async def _execute_list_triggers(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
204
|
+
"""Execute honeycomb_list_triggers."""
|
|
205
|
+
triggers = await client.triggers.list_async(dataset=tool_input["dataset"])
|
|
206
|
+
return json.dumps([t.model_dump() for t in triggers], default=str)
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
async def _execute_get_trigger(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
210
|
+
"""Execute honeycomb_get_trigger."""
|
|
211
|
+
trigger = await client.triggers.get_async(
|
|
212
|
+
dataset=tool_input["dataset"],
|
|
213
|
+
trigger_id=tool_input["trigger_id"],
|
|
214
|
+
)
|
|
215
|
+
return json.dumps(trigger.model_dump(), default=str)
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
async def _execute_create_trigger(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
219
|
+
"""Execute honeycomb_create_trigger using bundle orchestration.
|
|
220
|
+
|
|
221
|
+
The bundle handles inline recipient creation with idempotent logic:
|
|
222
|
+
- Checks if recipient already exists (by type + target)
|
|
223
|
+
- Reuses existing ID if found
|
|
224
|
+
- Creates new recipient if not found
|
|
225
|
+
"""
|
|
226
|
+
# Build bundle from tool input (includes dataset)
|
|
227
|
+
builder = _build_trigger(tool_input)
|
|
228
|
+
bundle = builder.build()
|
|
229
|
+
|
|
230
|
+
# Create via bundle (handles recipient orchestration)
|
|
231
|
+
created = await client.triggers.create_from_bundle_async(bundle)
|
|
232
|
+
return json.dumps(created.model_dump(), default=str)
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
async def _execute_update_trigger(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
236
|
+
"""Execute honeycomb_update_trigger."""
|
|
237
|
+
trigger_id = tool_input.pop("trigger_id")
|
|
238
|
+
|
|
239
|
+
# Use builder to construct updated trigger
|
|
240
|
+
builder = _build_trigger(tool_input)
|
|
241
|
+
bundle = builder.build()
|
|
242
|
+
|
|
243
|
+
# Update via API (use trigger from bundle)
|
|
244
|
+
updated = await client.triggers.update_async(
|
|
245
|
+
dataset=bundle.dataset,
|
|
246
|
+
trigger_id=trigger_id,
|
|
247
|
+
trigger=bundle.trigger,
|
|
248
|
+
)
|
|
249
|
+
return json.dumps(updated.model_dump(), default=str)
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
async def _execute_delete_trigger(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
253
|
+
"""Execute honeycomb_delete_trigger."""
|
|
254
|
+
await client.triggers.delete_async(
|
|
255
|
+
dataset=tool_input["dataset"],
|
|
256
|
+
trigger_id=tool_input["trigger_id"],
|
|
257
|
+
)
|
|
258
|
+
return json.dumps({"success": True, "message": "Trigger deleted"})
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
# ==============================================================================
|
|
262
|
+
# SLOs
|
|
263
|
+
# ==============================================================================
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
async def _execute_list_slos(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
267
|
+
"""Execute honeycomb_list_slos."""
|
|
268
|
+
slos = await client.slos.list_async(dataset=tool_input["dataset"])
|
|
269
|
+
return json.dumps([s.model_dump() for s in slos], default=str)
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
async def _execute_get_slo(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
273
|
+
"""Execute honeycomb_get_slo."""
|
|
274
|
+
slo = await client.slos.get_async(
|
|
275
|
+
dataset=tool_input["dataset"],
|
|
276
|
+
slo_id=tool_input["slo_id"],
|
|
277
|
+
)
|
|
278
|
+
return json.dumps(slo.model_dump(), default=str)
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
async def _execute_create_slo(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
282
|
+
"""Execute honeycomb_create_slo.
|
|
283
|
+
|
|
284
|
+
If SLI expression is provided or burn_alerts are included, uses SLOBuilder
|
|
285
|
+
and create_from_bundle_async for orchestration. Otherwise uses simple create_async.
|
|
286
|
+
"""
|
|
287
|
+
dataset = tool_input.pop("dataset")
|
|
288
|
+
|
|
289
|
+
# Check if we need bundle orchestration
|
|
290
|
+
sli = tool_input.get("sli", {})
|
|
291
|
+
burn_alerts = tool_input.get("burn_alerts", [])
|
|
292
|
+
needs_bundle = ("expression" in sli) or burn_alerts
|
|
293
|
+
|
|
294
|
+
if needs_bundle:
|
|
295
|
+
# Use builder for orchestration
|
|
296
|
+
builder = _build_slo({"dataset": dataset, **tool_input})
|
|
297
|
+
bundle = builder.build()
|
|
298
|
+
|
|
299
|
+
# Create via bundle (handles derived columns + burn alerts)
|
|
300
|
+
created_slos = await client.slos.create_from_bundle_async(bundle)
|
|
301
|
+
|
|
302
|
+
# Return the main SLO (first one created)
|
|
303
|
+
main_slo = list(created_slos.values())[0]
|
|
304
|
+
return json.dumps(main_slo.model_dump(), default=str)
|
|
305
|
+
else:
|
|
306
|
+
# Simple SLO creation (existing derived column, no burn alerts)
|
|
307
|
+
slo = SLOCreate(**tool_input)
|
|
308
|
+
created = await client.slos.create_async(dataset=dataset, slo=slo)
|
|
309
|
+
return json.dumps(created.model_dump(), default=str)
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
async def _execute_update_slo(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
313
|
+
"""Execute honeycomb_update_slo."""
|
|
314
|
+
dataset = tool_input.pop("dataset")
|
|
315
|
+
slo_id = tool_input.pop("slo_id")
|
|
316
|
+
|
|
317
|
+
slo = SLOCreate(**tool_input)
|
|
318
|
+
updated = await client.slos.update_async(
|
|
319
|
+
dataset=dataset,
|
|
320
|
+
slo_id=slo_id,
|
|
321
|
+
slo=slo,
|
|
322
|
+
)
|
|
323
|
+
return json.dumps(updated.model_dump(), default=str)
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
async def _execute_delete_slo(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
327
|
+
"""Execute honeycomb_delete_slo."""
|
|
328
|
+
await client.slos.delete_async(
|
|
329
|
+
dataset=tool_input["dataset"],
|
|
330
|
+
slo_id=tool_input["slo_id"],
|
|
331
|
+
)
|
|
332
|
+
return json.dumps({"success": True, "message": "SLO deleted"})
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
# ==============================================================================
|
|
336
|
+
# Burn Alerts
|
|
337
|
+
# ==============================================================================
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
async def _execute_list_burn_alerts(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
341
|
+
"""Execute honeycomb_list_burn_alerts."""
|
|
342
|
+
burn_alerts = await client.burn_alerts.list_async(
|
|
343
|
+
dataset=tool_input["dataset"],
|
|
344
|
+
slo_id=tool_input["slo_id"],
|
|
345
|
+
)
|
|
346
|
+
return json.dumps([ba.model_dump() for ba in burn_alerts], default=str)
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
async def _execute_get_burn_alert(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
350
|
+
"""Execute honeycomb_get_burn_alert."""
|
|
351
|
+
burn_alert = await client.burn_alerts.get_async(
|
|
352
|
+
dataset=tool_input["dataset"],
|
|
353
|
+
burn_alert_id=tool_input["burn_alert_id"],
|
|
354
|
+
)
|
|
355
|
+
return json.dumps(burn_alert.model_dump(), default=str)
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
async def _execute_create_burn_alert(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
359
|
+
"""Execute honeycomb_create_burn_alert with inline recipient handling."""
|
|
360
|
+
from honeycomb.resources._recipient_utils import process_inline_recipients
|
|
361
|
+
|
|
362
|
+
dataset = tool_input.pop("dataset")
|
|
363
|
+
|
|
364
|
+
# Process inline recipients with idempotent handling
|
|
365
|
+
recipients_data = tool_input.pop("recipients", [])
|
|
366
|
+
processed = await process_inline_recipients(client, recipients_data)
|
|
367
|
+
recipients = [BurnAlertRecipient(**r) for r in processed]
|
|
368
|
+
|
|
369
|
+
burn_alert = BurnAlertCreate(**tool_input, recipients=recipients)
|
|
370
|
+
created = await client.burn_alerts.create_async(dataset=dataset, burn_alert=burn_alert)
|
|
371
|
+
return json.dumps(created.model_dump(), default=str)
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
async def _execute_update_burn_alert(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
375
|
+
"""Execute honeycomb_update_burn_alert with inline recipient handling."""
|
|
376
|
+
from honeycomb.resources._recipient_utils import process_inline_recipients
|
|
377
|
+
|
|
378
|
+
dataset = tool_input.pop("dataset")
|
|
379
|
+
burn_alert_id = tool_input.pop("burn_alert_id")
|
|
380
|
+
|
|
381
|
+
# Process inline recipients with idempotent handling
|
|
382
|
+
recipients_data = tool_input.pop("recipients", [])
|
|
383
|
+
processed = await process_inline_recipients(client, recipients_data)
|
|
384
|
+
recipients = [BurnAlertRecipient(**r) for r in processed]
|
|
385
|
+
|
|
386
|
+
burn_alert = BurnAlertCreate(**tool_input, recipients=recipients)
|
|
387
|
+
updated = await client.burn_alerts.update_async(
|
|
388
|
+
dataset=dataset,
|
|
389
|
+
burn_alert_id=burn_alert_id,
|
|
390
|
+
burn_alert=burn_alert,
|
|
391
|
+
)
|
|
392
|
+
return json.dumps(updated.model_dump(), default=str)
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
async def _execute_delete_burn_alert(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
396
|
+
"""Execute honeycomb_delete_burn_alert."""
|
|
397
|
+
await client.burn_alerts.delete_async(
|
|
398
|
+
dataset=tool_input["dataset"],
|
|
399
|
+
burn_alert_id=tool_input["burn_alert_id"],
|
|
400
|
+
)
|
|
401
|
+
return json.dumps({"success": True, "message": "Burn alert deleted"})
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
# ==============================================================================
|
|
405
|
+
# Datasets
|
|
406
|
+
# ==============================================================================
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
async def _execute_list_datasets(
|
|
410
|
+
client: "HoneycombClient",
|
|
411
|
+
tool_input: dict[str, Any], # noqa: ARG001
|
|
412
|
+
) -> str:
|
|
413
|
+
"""Execute honeycomb_list_datasets."""
|
|
414
|
+
datasets = await client.datasets.list_async()
|
|
415
|
+
return json.dumps([d.model_dump() for d in datasets], default=str)
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
async def _execute_get_dataset(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
419
|
+
"""Execute honeycomb_get_dataset."""
|
|
420
|
+
dataset = await client.datasets.get_async(slug=tool_input["slug"])
|
|
421
|
+
return json.dumps(dataset.model_dump(), default=str)
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
async def _execute_create_dataset(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
425
|
+
"""Execute honeycomb_create_dataset."""
|
|
426
|
+
dataset = DatasetCreate(**tool_input)
|
|
427
|
+
created = await client.datasets.create_async(dataset=dataset)
|
|
428
|
+
return json.dumps(created.model_dump(), default=str)
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
async def _execute_update_dataset(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
432
|
+
"""Execute honeycomb_update_dataset."""
|
|
433
|
+
slug = tool_input.pop("slug")
|
|
434
|
+
dataset = DatasetCreate(**tool_input)
|
|
435
|
+
updated = await client.datasets.update_async(slug=slug, dataset=dataset)
|
|
436
|
+
return json.dumps(updated.model_dump(), default=str)
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
async def _execute_delete_dataset(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
440
|
+
"""Execute honeycomb_delete_dataset."""
|
|
441
|
+
await client.datasets.delete_async(slug=tool_input["slug"])
|
|
442
|
+
return json.dumps({"success": True, "message": "Dataset deleted"})
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
# ==============================================================================
|
|
446
|
+
# Columns
|
|
447
|
+
# ==============================================================================
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
async def _execute_list_columns(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
451
|
+
"""Execute honeycomb_list_columns."""
|
|
452
|
+
columns = await client.columns.list_async(dataset=tool_input["dataset"])
|
|
453
|
+
return json.dumps([c.model_dump() for c in columns], default=str)
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
async def _execute_get_column(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
457
|
+
"""Execute honeycomb_get_column."""
|
|
458
|
+
column = await client.columns.get_async(
|
|
459
|
+
dataset=tool_input["dataset"],
|
|
460
|
+
column_id=tool_input["column_id"],
|
|
461
|
+
)
|
|
462
|
+
return json.dumps(column.model_dump(), default=str)
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
async def _execute_create_column(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
466
|
+
"""Execute honeycomb_create_column."""
|
|
467
|
+
dataset = tool_input.pop("dataset")
|
|
468
|
+
column = ColumnCreate(**tool_input)
|
|
469
|
+
created = await client.columns.create_async(dataset=dataset, column=column)
|
|
470
|
+
return json.dumps(created.model_dump(), default=str)
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
async def _execute_update_column(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
474
|
+
"""Execute honeycomb_update_column."""
|
|
475
|
+
dataset = tool_input.pop("dataset")
|
|
476
|
+
column_id = tool_input.pop("column_id")
|
|
477
|
+
column = ColumnCreate(**tool_input)
|
|
478
|
+
updated = await client.columns.update_async(
|
|
479
|
+
dataset=dataset,
|
|
480
|
+
column_id=column_id,
|
|
481
|
+
column=column,
|
|
482
|
+
)
|
|
483
|
+
return json.dumps(updated.model_dump(), default=str)
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
async def _execute_delete_column(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
487
|
+
"""Execute honeycomb_delete_column."""
|
|
488
|
+
await client.columns.delete_async(
|
|
489
|
+
dataset=tool_input["dataset"],
|
|
490
|
+
column_id=tool_input["column_id"],
|
|
491
|
+
)
|
|
492
|
+
return json.dumps({"success": True, "message": "Column deleted"})
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
# ==============================================================================
|
|
496
|
+
# Recipients
|
|
497
|
+
# ==============================================================================
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
async def _execute_list_recipients(
|
|
501
|
+
client: "HoneycombClient",
|
|
502
|
+
tool_input: dict[str, Any], # noqa: ARG001
|
|
503
|
+
) -> str:
|
|
504
|
+
"""Execute honeycomb_list_recipients."""
|
|
505
|
+
recipients = await client.recipients.list_async()
|
|
506
|
+
return json.dumps([r.model_dump() for r in recipients], default=str)
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
async def _execute_get_recipient(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
510
|
+
"""Execute honeycomb_get_recipient."""
|
|
511
|
+
recipient = await client.recipients.get_async(recipient_id=tool_input["recipient_id"])
|
|
512
|
+
return json.dumps(recipient.model_dump(), default=str)
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
async def _execute_create_recipient(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
516
|
+
"""Execute honeycomb_create_recipient."""
|
|
517
|
+
recipient = RecipientCreate(**tool_input)
|
|
518
|
+
created = await client.recipients.create_async(recipient=recipient)
|
|
519
|
+
return json.dumps(created.model_dump(), default=str)
|
|
520
|
+
|
|
521
|
+
|
|
522
|
+
async def _execute_update_recipient(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
523
|
+
"""Execute honeycomb_update_recipient."""
|
|
524
|
+
recipient_id = tool_input.pop("recipient_id")
|
|
525
|
+
recipient = RecipientCreate(**tool_input)
|
|
526
|
+
updated = await client.recipients.update_async(recipient_id=recipient_id, recipient=recipient)
|
|
527
|
+
return json.dumps(updated.model_dump(), default=str)
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
async def _execute_delete_recipient(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
531
|
+
"""Execute honeycomb_delete_recipient."""
|
|
532
|
+
await client.recipients.delete_async(recipient_id=tool_input["recipient_id"])
|
|
533
|
+
return json.dumps({"success": True, "message": "Recipient deleted"})
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
async def _execute_get_recipient_triggers(
|
|
537
|
+
client: "HoneycombClient", tool_input: dict[str, Any]
|
|
538
|
+
) -> str:
|
|
539
|
+
"""Execute honeycomb_get_recipient_triggers."""
|
|
540
|
+
triggers = await client.recipients.get_triggers_async(recipient_id=tool_input["recipient_id"])
|
|
541
|
+
return json.dumps(triggers, default=str)
|
|
542
|
+
|
|
543
|
+
|
|
544
|
+
# ==============================================================================
|
|
545
|
+
# Derived Columns
|
|
546
|
+
# ==============================================================================
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
async def _execute_list_derived_columns(
|
|
550
|
+
client: "HoneycombClient", tool_input: dict[str, Any]
|
|
551
|
+
) -> str:
|
|
552
|
+
"""Execute honeycomb_list_derived_columns."""
|
|
553
|
+
derived_columns = await client.derived_columns.list_async(dataset=tool_input["dataset"])
|
|
554
|
+
return json.dumps([dc.model_dump() for dc in derived_columns], default=str)
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
async def _execute_get_derived_column(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
558
|
+
"""Execute honeycomb_get_derived_column."""
|
|
559
|
+
derived_column = await client.derived_columns.get_async(
|
|
560
|
+
dataset=tool_input["dataset"],
|
|
561
|
+
column_id=tool_input["derived_column_id"],
|
|
562
|
+
)
|
|
563
|
+
return json.dumps(derived_column.model_dump(), default=str)
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
async def _execute_create_derived_column(
|
|
567
|
+
client: "HoneycombClient", tool_input: dict[str, Any]
|
|
568
|
+
) -> str:
|
|
569
|
+
"""Execute honeycomb_create_derived_column."""
|
|
570
|
+
dataset = tool_input.pop("dataset")
|
|
571
|
+
derived_column = DerivedColumnCreate(**tool_input)
|
|
572
|
+
created = await client.derived_columns.create_async(
|
|
573
|
+
dataset=dataset, derived_column=derived_column
|
|
574
|
+
)
|
|
575
|
+
return json.dumps(created.model_dump(), default=str)
|
|
576
|
+
|
|
577
|
+
|
|
578
|
+
async def _execute_update_derived_column(
|
|
579
|
+
client: "HoneycombClient", tool_input: dict[str, Any]
|
|
580
|
+
) -> str:
|
|
581
|
+
"""Execute honeycomb_update_derived_column."""
|
|
582
|
+
dataset = tool_input.pop("dataset")
|
|
583
|
+
column_id = tool_input.pop("derived_column_id")
|
|
584
|
+
derived_column = DerivedColumnCreate(**tool_input)
|
|
585
|
+
updated = await client.derived_columns.update_async(
|
|
586
|
+
dataset=dataset,
|
|
587
|
+
column_id=column_id,
|
|
588
|
+
derived_column=derived_column,
|
|
589
|
+
)
|
|
590
|
+
return json.dumps(updated.model_dump(), default=str)
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
async def _execute_delete_derived_column(
|
|
594
|
+
client: "HoneycombClient", tool_input: dict[str, Any]
|
|
595
|
+
) -> str:
|
|
596
|
+
"""Execute honeycomb_delete_derived_column."""
|
|
597
|
+
await client.derived_columns.delete_async(
|
|
598
|
+
dataset=tool_input["dataset"],
|
|
599
|
+
column_id=tool_input["derived_column_id"],
|
|
600
|
+
)
|
|
601
|
+
return json.dumps({"success": True, "message": "Derived column deleted"})
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
# ==============================================================================
|
|
605
|
+
# Queries
|
|
606
|
+
# ==============================================================================
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
async def _execute_create_query(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
610
|
+
"""Execute honeycomb_create_query.
|
|
611
|
+
|
|
612
|
+
Note: annotation_name parameter is accepted but currently ignored.
|
|
613
|
+
QueryBuilder integration required for full annotation support.
|
|
614
|
+
"""
|
|
615
|
+
dataset = tool_input.pop("dataset")
|
|
616
|
+
tool_input.pop("annotation_name", None) # Remove if present, not yet supported
|
|
617
|
+
|
|
618
|
+
query_spec = QuerySpec(**tool_input)
|
|
619
|
+
query = await client.queries.create_async(spec=query_spec, dataset=dataset)
|
|
620
|
+
|
|
621
|
+
return json.dumps(query.model_dump(), default=str)
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
async def _execute_get_query(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
625
|
+
"""Execute honeycomb_get_query."""
|
|
626
|
+
query = await client.queries.get_async(
|
|
627
|
+
dataset=tool_input["dataset"],
|
|
628
|
+
query_id=tool_input["query_id"],
|
|
629
|
+
)
|
|
630
|
+
return json.dumps(query.model_dump(), default=str)
|
|
631
|
+
|
|
632
|
+
|
|
633
|
+
async def _execute_run_query(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
634
|
+
"""Execute honeycomb_run_query.
|
|
635
|
+
|
|
636
|
+
Runs ephemeral query with automatic polling.
|
|
637
|
+
Returns the QueryResult (not the tuple).
|
|
638
|
+
"""
|
|
639
|
+
dataset = tool_input.pop("dataset")
|
|
640
|
+
query_spec = QuerySpec(**tool_input)
|
|
641
|
+
|
|
642
|
+
# Run query with polling - returns (Query, QueryResult) tuple
|
|
643
|
+
_, result = await client.query_results.create_and_run_async(
|
|
644
|
+
spec=query_spec,
|
|
645
|
+
dataset=dataset,
|
|
646
|
+
)
|
|
647
|
+
|
|
648
|
+
return json.dumps(result.model_dump(), default=str)
|
|
649
|
+
|
|
650
|
+
|
|
651
|
+
# ==============================================================================
|
|
652
|
+
# Boards
|
|
653
|
+
# ==============================================================================
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
async def _execute_list_boards(
|
|
657
|
+
client: "HoneycombClient",
|
|
658
|
+
tool_input: dict[str, Any], # noqa: ARG001
|
|
659
|
+
) -> str:
|
|
660
|
+
"""Execute honeycomb_list_boards."""
|
|
661
|
+
boards = await client.boards.list_async()
|
|
662
|
+
return json.dumps([b.model_dump() for b in boards], default=str)
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
async def _execute_get_board(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
666
|
+
"""Execute honeycomb_get_board."""
|
|
667
|
+
board = await client.boards.get_async(board_id=tool_input["board_id"])
|
|
668
|
+
return json.dumps(board.model_dump(), default=str)
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
async def _execute_create_board(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
672
|
+
"""Execute honeycomb_create_board.
|
|
673
|
+
|
|
674
|
+
Uses BoardBundle orchestration for inline panel creation.
|
|
675
|
+
"""
|
|
676
|
+
# Build BoardBuilder and get bundle
|
|
677
|
+
board_builder = _build_board(tool_input)
|
|
678
|
+
bundle = board_builder.build()
|
|
679
|
+
|
|
680
|
+
# Create board with orchestration (creates inline queries, assembles panels)
|
|
681
|
+
board = await client.boards.create_from_bundle_async(bundle)
|
|
682
|
+
|
|
683
|
+
return json.dumps(board.model_dump(), default=str)
|
|
684
|
+
|
|
685
|
+
|
|
686
|
+
async def _execute_update_board(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
687
|
+
"""Execute honeycomb_update_board."""
|
|
688
|
+
board_id = tool_input.pop("board_id")
|
|
689
|
+
|
|
690
|
+
# Simple update (no bundle orchestration for updates)
|
|
691
|
+
from honeycomb.models import BoardCreate
|
|
692
|
+
|
|
693
|
+
board = BoardCreate(**tool_input)
|
|
694
|
+
updated = await client.boards.update_async(board_id=board_id, board=board)
|
|
695
|
+
|
|
696
|
+
return json.dumps(updated.model_dump(), default=str)
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
async def _execute_delete_board(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
700
|
+
"""Execute honeycomb_delete_board."""
|
|
701
|
+
await client.boards.delete_async(board_id=tool_input["board_id"])
|
|
702
|
+
return json.dumps({"success": True, "message": "Board deleted"})
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
# ==============================================================================
|
|
706
|
+
# Markers
|
|
707
|
+
# ==============================================================================
|
|
708
|
+
|
|
709
|
+
|
|
710
|
+
async def _execute_list_markers(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
711
|
+
"""Execute honeycomb_list_markers."""
|
|
712
|
+
markers = await client.markers.list_async(dataset=tool_input["dataset"])
|
|
713
|
+
return json.dumps([m.model_dump() for m in markers], default=str)
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
async def _execute_create_marker(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
717
|
+
"""Execute honeycomb_create_marker."""
|
|
718
|
+
dataset = tool_input.pop("dataset")
|
|
719
|
+
tool_input.pop("color", None) # Color handled by marker settings, not markers directly
|
|
720
|
+
|
|
721
|
+
marker = MarkerCreate(**tool_input)
|
|
722
|
+
created = await client.markers.create_async(dataset=dataset, marker=marker)
|
|
723
|
+
return json.dumps(created.model_dump(), default=str)
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
async def _execute_update_marker(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
727
|
+
"""Execute honeycomb_update_marker."""
|
|
728
|
+
dataset = tool_input.pop("dataset")
|
|
729
|
+
marker_id = tool_input.pop("marker_id")
|
|
730
|
+
|
|
731
|
+
marker = MarkerCreate(**tool_input)
|
|
732
|
+
updated = await client.markers.update_async(dataset=dataset, marker_id=marker_id, marker=marker)
|
|
733
|
+
return json.dumps(updated.model_dump(), default=str)
|
|
734
|
+
|
|
735
|
+
|
|
736
|
+
async def _execute_delete_marker(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
737
|
+
"""Execute honeycomb_delete_marker."""
|
|
738
|
+
await client.markers.delete_async(
|
|
739
|
+
dataset=tool_input["dataset"], marker_id=tool_input["marker_id"]
|
|
740
|
+
)
|
|
741
|
+
return json.dumps({"success": True, "message": "Marker deleted"})
|
|
742
|
+
|
|
743
|
+
|
|
744
|
+
# ==============================================================================
|
|
745
|
+
# Marker Settings
|
|
746
|
+
# ==============================================================================
|
|
747
|
+
|
|
748
|
+
|
|
749
|
+
async def _execute_list_marker_settings(
|
|
750
|
+
client: "HoneycombClient", tool_input: dict[str, Any]
|
|
751
|
+
) -> str:
|
|
752
|
+
"""Execute honeycomb_list_marker_settings."""
|
|
753
|
+
settings = await client.markers.list_settings_async(dataset=tool_input["dataset"])
|
|
754
|
+
return json.dumps([s.model_dump() for s in settings], default=str)
|
|
755
|
+
|
|
756
|
+
|
|
757
|
+
async def _execute_get_marker_setting(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
758
|
+
"""Execute honeycomb_get_marker_setting."""
|
|
759
|
+
setting = await client.markers.get_setting_async(
|
|
760
|
+
dataset=tool_input["dataset"],
|
|
761
|
+
setting_id=tool_input["setting_id"],
|
|
762
|
+
)
|
|
763
|
+
return json.dumps(setting.model_dump(), default=str)
|
|
764
|
+
|
|
765
|
+
|
|
766
|
+
async def _execute_create_marker_setting(
|
|
767
|
+
client: "HoneycombClient", tool_input: dict[str, Any]
|
|
768
|
+
) -> str:
|
|
769
|
+
"""Execute honeycomb_create_marker_setting."""
|
|
770
|
+
dataset = tool_input.pop("dataset")
|
|
771
|
+
setting = MarkerSettingCreate(**tool_input)
|
|
772
|
+
created = await client.markers.create_setting_async(dataset=dataset, setting=setting)
|
|
773
|
+
return json.dumps(created.model_dump(), default=str)
|
|
774
|
+
|
|
775
|
+
|
|
776
|
+
async def _execute_update_marker_setting(
|
|
777
|
+
client: "HoneycombClient", tool_input: dict[str, Any]
|
|
778
|
+
) -> str:
|
|
779
|
+
"""Execute honeycomb_update_marker_setting."""
|
|
780
|
+
dataset = tool_input.pop("dataset")
|
|
781
|
+
setting_id = tool_input.pop("setting_id")
|
|
782
|
+
setting = MarkerSettingCreate(**tool_input)
|
|
783
|
+
updated = await client.markers.update_setting_async(
|
|
784
|
+
dataset=dataset,
|
|
785
|
+
setting_id=setting_id,
|
|
786
|
+
setting=setting,
|
|
787
|
+
)
|
|
788
|
+
return json.dumps(updated.model_dump(), default=str)
|
|
789
|
+
|
|
790
|
+
|
|
791
|
+
async def _execute_delete_marker_setting(
|
|
792
|
+
client: "HoneycombClient", tool_input: dict[str, Any]
|
|
793
|
+
) -> str:
|
|
794
|
+
"""Execute honeycomb_delete_marker_setting."""
|
|
795
|
+
await client.markers.delete_setting_async(
|
|
796
|
+
dataset=tool_input["dataset"],
|
|
797
|
+
setting_id=tool_input["setting_id"],
|
|
798
|
+
)
|
|
799
|
+
return json.dumps({"success": True, "message": "Marker setting deleted"})
|
|
800
|
+
|
|
801
|
+
|
|
802
|
+
# ==============================================================================
|
|
803
|
+
# Events
|
|
804
|
+
# ==============================================================================
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
async def _execute_send_event(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
808
|
+
"""Execute honeycomb_send_event."""
|
|
809
|
+
dataset = tool_input.pop("dataset")
|
|
810
|
+
data = tool_input.pop("data")
|
|
811
|
+
timestamp = tool_input.pop("timestamp", None)
|
|
812
|
+
samplerate = tool_input.pop("samplerate", None)
|
|
813
|
+
|
|
814
|
+
await client.events.send_async(
|
|
815
|
+
dataset=dataset, data=data, timestamp=timestamp, samplerate=samplerate
|
|
816
|
+
)
|
|
817
|
+
return json.dumps({"success": True, "message": "Event sent"})
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
async def _execute_send_batch_events(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
821
|
+
"""Execute honeycomb_send_batch_events."""
|
|
822
|
+
dataset = tool_input.pop("dataset")
|
|
823
|
+
events_data = tool_input.pop("events")
|
|
824
|
+
|
|
825
|
+
# Convert to BatchEvent objects
|
|
826
|
+
events = [BatchEvent(**event) for event in events_data]
|
|
827
|
+
|
|
828
|
+
results = await client.events.send_batch_async(dataset=dataset, events=events)
|
|
829
|
+
return json.dumps([r.model_dump() for r in results], default=str)
|
|
830
|
+
|
|
831
|
+
|
|
832
|
+
# ==============================================================================
|
|
833
|
+
# Service Map Dependencies
|
|
834
|
+
# ==============================================================================
|
|
835
|
+
|
|
836
|
+
|
|
837
|
+
async def _execute_query_service_map(client: "HoneycombClient", tool_input: dict[str, Any]) -> str:
|
|
838
|
+
"""Execute honeycomb_query_service_map.
|
|
839
|
+
|
|
840
|
+
Performs create + poll + paginate automatically.
|
|
841
|
+
"""
|
|
842
|
+
max_pages = tool_input.pop("max_pages", 640)
|
|
843
|
+
request = ServiceMapDependencyRequestCreate(**tool_input)
|
|
844
|
+
|
|
845
|
+
# Query with polling and pagination - returns ServiceMapDependencyResult
|
|
846
|
+
result = await client.service_map_dependencies.get_async(
|
|
847
|
+
request=request,
|
|
848
|
+
max_pages=max_pages,
|
|
849
|
+
)
|
|
850
|
+
|
|
851
|
+
# Return just the dependencies list
|
|
852
|
+
if result.dependencies:
|
|
853
|
+
return json.dumps([d.model_dump() for d in result.dependencies], default=str)
|
|
854
|
+
else:
|
|
855
|
+
return json.dumps([], default=str)
|
|
856
|
+
|
|
857
|
+
|
|
858
|
+
__all__ = [
|
|
859
|
+
"execute_tool",
|
|
860
|
+
]
|