Googolplexic commited on
Commit
7fc0254
·
1 Parent(s): d72e516

Took a while but got Gradio to send the full docstring over

Browse files
Files changed (1) hide show
  1. api_monitor.py +43 -36
api_monitor.py CHANGED
@@ -108,7 +108,7 @@ def validate_api_configuration(
108
  4. If sample_response contains error messages: Fix API parameters and retry validation
109
  5. If sample_response looks valid: Use config_id in activate_monitoring() to activate monitoring
110
 
111
- Parameters:
112
  - mcp_api_key: MCP API key serves as user identifier
113
  - name: User-friendly name for the monitoring task
114
  - description: Description of what is being monitored
@@ -117,12 +117,14 @@ def validate_api_configuration(
117
  - endpoint: The specific API endpoint
118
  - param_keys_values: Parameter key-value pairs, one per line
119
  - header_keys_values: Header key-value pairs, one per line
120
- - additional_params: Optional JSON string for complex parameters - schedule_interval_minutes: Minutes between calls
121
- - stop_after_hours: Hours after which to stop (supports decimals, max 168 = 1 week) - start_at: Optional datetime string for when to start the monitoring.
122
- IMPORTANT: Leave as empty string "" for immediate start (most common use case).
123
- Only provide a datetime string (e.g., "2024-06-15 09:00:00") if you need to schedule monitoring for a specific future time.
 
 
124
 
125
- Input Examples: 1. Simple GET request to monitor stock price (IMMEDIATE START - most common):
126
  mcp_api_key: "your_mcp_key_here"
127
  name: "NVDA Stock Price"
128
  description: "Monitor NVIDIA stock price every 30 minutes"
@@ -134,7 +136,9 @@ def validate_api_configuration(
134
  additional_params: "{}"
135
  schedule_interval_minutes: 30
136
  stop_after_hours: 1.5
137
- start_at: "" 2. API with complex parameters (SCHEDULED START):
 
 
138
  mcp_api_key: "your_mcp_key_here"
139
  name: "Weather Alert Monitor"
140
  description: "Monitor severe weather alerts"
@@ -356,7 +360,7 @@ async def activate_monitoring(config_id, mcp_api_key):
356
  2. If validation successful, call this function with the config_id
357
  3. Monitoring will run automatically according to the validated schedule
358
 
359
- Parameters:
360
  - config_id: The ID from successful validate_api_configuration() execution (required)
361
  - mcp_api_key: User's MCP API key for verification (must match validation step)
362
 
@@ -464,26 +468,6 @@ async def activate_monitoring(config_id, mcp_api_key):
464
  print(
465
  f"Executing API monitoring job for {name} at {now.isoformat()}. Next call at {next_call.isoformat()}"
466
  )
467
- # If the current time is past the stop time, do not execute the job but set is_active to False
468
- if now > stop_at:
469
- print(
470
- f"Stopping API monitoring job for {name} as the stop time has been reached."
471
- )
472
- try:
473
- job_conn = connect_to_db()
474
- job_cur = job_conn.cursor()
475
- job_cur.execute(
476
- """
477
- UPDATE api_configurations SET is_active = %s WHERE config_id = %s
478
- """,
479
- (False, config_id),
480
- )
481
- job_conn.commit()
482
- job_cur.close()
483
- job_conn.close()
484
- except Exception as db_exc:
485
- print(f"Failed to update configuration status: {db_exc}")
486
- return # Stop the job if the time has passed
487
 
488
  try:
489
  # Extract API configuration parameters
@@ -551,13 +535,32 @@ async def activate_monitoring(config_id, mcp_api_key):
551
  job_cur = job_conn.cursor()
552
 
553
  # Mark config as active (only once, on first run)
554
- job_cur.execute(
555
- """
556
- UPDATE api_configurations SET is_active = %s WHERE config_id = %s
557
- """,
558
- (True, config_id),
 
 
 
 
 
 
 
 
559
  )
560
- print(f"Marked configuration {config_id} as active.")
 
 
 
 
 
 
 
 
 
 
 
561
 
562
  # Insert the actual API call result
563
  job_cur.execute(
@@ -654,7 +657,9 @@ def retrieve_monitored_data(config_id, mcp_api_key, mode="summary"):
654
 
655
  PREREQUISITE: Must call validate_api_configuration() first and obtain a config_id from successful validation, then activate_monitoring() to start monitoring.
656
 
657
- This function can be called at any time after monitoring activation to retrieve the latest data collected by the monitoring system. Parameters:
 
 
658
  - config_id: The ID of the API configuration to retrieve data for (required)
659
  - mcp_api_key: User's MCP API key for verification (must match validation step)
660
  - mode: Data return mode - "summary" (LLM-optimized), "details" (full responses, minimal metadata), "full" (everything)
@@ -666,7 +671,9 @@ def retrieve_monitored_data(config_id, mcp_api_key, mode="summary"):
666
 
667
  2. Retrieve data for weather alerts:
668
  config_id: 987654321
669
- mcp_api_key: "your_mcp_key_here" Returns:
 
 
670
  - Dictionary with monitoring status in one of three formats based on mode parameter
671
 
672
  SUMMARY mode (LLM-optimized, default):
 
108
  4. If sample_response contains error messages: Fix API parameters and retry validation
109
  5. If sample_response looks valid: Use config_id in activate_monitoring() to activate monitoring
110
 
111
+ ARGUMENTS:
112
  - mcp_api_key: MCP API key serves as user identifier
113
  - name: User-friendly name for the monitoring task
114
  - description: Description of what is being monitored
 
117
  - endpoint: The specific API endpoint
118
  - param_keys_values: Parameter key-value pairs, one per line
119
  - header_keys_values: Header key-value pairs, one per line
120
+ - additional_params: Optional JSON string for complex parameters
121
+ - schedule_interval_minutes: Minutes between calls
122
+ - stop_after_hours: Hours after which to stop (supports decimals, max 168 = 1 week)
123
+ - start_at: Optional datetime string for when to start the monitoring. IMPORTANT: Leave as empty string "" for immediate start (most common use case, always default to this if no start time provided). Only provide a datetime string (e.g., "2024-06-15 09:00:00") if you need to schedule monitoring for a specific future time.
124
+
125
+ Input Examples:
126
 
127
+ 1. Simple GET request to monitor stock price:
128
  mcp_api_key: "your_mcp_key_here"
129
  name: "NVDA Stock Price"
130
  description: "Monitor NVIDIA stock price every 30 minutes"
 
136
  additional_params: "{}"
137
  schedule_interval_minutes: 30
138
  stop_after_hours: 1.5
139
+ start_at: ""
140
+
141
+ 2. API with complex parameters:
142
  mcp_api_key: "your_mcp_key_here"
143
  name: "Weather Alert Monitor"
144
  description: "Monitor severe weather alerts"
 
360
  2. If validation successful, call this function with the config_id
361
  3. Monitoring will run automatically according to the validated schedule
362
 
363
+ ARGUMENTS:
364
  - config_id: The ID from successful validate_api_configuration() execution (required)
365
  - mcp_api_key: User's MCP API key for verification (must match validation step)
366
 
 
468
  print(
469
  f"Executing API monitoring job for {name} at {now.isoformat()}. Next call at {next_call.isoformat()}"
470
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
471
 
472
  try:
473
  # Extract API configuration parameters
 
535
  job_cur = job_conn.cursor()
536
 
537
  # Mark config as active (only once, on first run)
538
+ if not config["is_active"]:
539
+ job_cur.execute(
540
+ """
541
+ UPDATE api_configurations SET is_active = %s WHERE config_id = %s
542
+ """,
543
+ (True, config_id),
544
+ )
545
+ print(f"Marked configuration {config_id} as active.")
546
+
547
+ # Check if this is the last call by comparing current time to stop_at
548
+ current_time = datetime.now()
549
+ next_call_time = current_time + timedelta(
550
+ minutes=schedule_interval_minutes
551
  )
552
+
553
+ if next_call_time >= stop_at:
554
+ # This is the last call, mark as inactive
555
+ job_cur.execute(
556
+ """
557
+ UPDATE api_configurations SET is_active = %s WHERE config_id = %s
558
+ """,
559
+ (False, config_id),
560
+ )
561
+ print(
562
+ f"Last call for configuration {config_id}. Marked as inactive."
563
+ )
564
 
565
  # Insert the actual API call result
566
  job_cur.execute(
 
657
 
658
  PREREQUISITE: Must call validate_api_configuration() first and obtain a config_id from successful validation, then activate_monitoring() to start monitoring.
659
 
660
+ This function can be called at any time after monitoring activation to retrieve the latest data collected by the monitoring system.
661
+
662
+ ARGUMENTS:
663
  - config_id: The ID of the API configuration to retrieve data for (required)
664
  - mcp_api_key: User's MCP API key for verification (must match validation step)
665
  - mode: Data return mode - "summary" (LLM-optimized), "details" (full responses, minimal metadata), "full" (everything)
 
671
 
672
  2. Retrieve data for weather alerts:
673
  config_id: 987654321
674
+ mcp_api_key: "your_mcp_key_here"
675
+
676
+ Returns:
677
  - Dictionary with monitoring status in one of three formats based on mode parameter
678
 
679
  SUMMARY mode (LLM-optimized, default):