- Added all missing .ui files referenced in index.ui:
* new_session.ui
* sessions.ui
* services.ui
* settings.ui
* session_detail.ui
* add_service.ui
* edit_service.ui
- Created corresponding .dspy API endpoints with proper directory structure:
* /hermes-web-cli/services → services/index.dspy
* /hermes-web-cli/services/list → services/list/index.dspy
* /hermes-web-cli/services/{id} → services/id/index.dspy
* /hermes-web-cli/services/test?id={id} → services/test/index.dspy
* /hermes-web-cli/sessions (POST) → sessions/index.dspy
* /hermes-web-cli/sessions/messages?session_id={id} → sessions/messages/index.dspy
* /hermes-web-cli/settings → settings/index.dspy
* /hermes-web-cli/settings/reset → settings/reset/index.dspy
- Fixed UI styling to comply with bricks-framework (removed nested style objects)
- Updated URL references to use query parameters instead of path parameters for dynamic routes
- All files follow production-ready module development specifications
79 lines
2.7 KiB
Plaintext
79 lines
2.7 KiB
Plaintext
# This is a controlled Python script (.dspy file) that will be executed by the web framework
|
|
# It provides the API endpoint for /hermes-web-cli/sessions/messages?session_id={session_id}
|
|
|
|
import json
|
|
import os
|
|
from hermes_web_cli.init import get_session_messages, send_message_to_service
|
|
from urllib.parse import parse_qs
|
|
|
|
def main():
|
|
"""Main function to handle the session messages API request with query parameter."""
|
|
try:
|
|
# Get session ID from query string
|
|
query_string = os.environ.get('QUERY_STRING', '')
|
|
if query_string:
|
|
query_params = parse_qs(query_string)
|
|
session_id = query_params.get('session_id', [None])[0]
|
|
else:
|
|
session_id = None
|
|
|
|
if not session_id:
|
|
return {
|
|
"status": "error",
|
|
"message": "Session ID is required (use ?session_id= parameter)",
|
|
"data": None
|
|
}
|
|
|
|
request_method = os.environ.get('REQUEST_METHOD', 'GET')
|
|
|
|
if request_method == 'GET':
|
|
# Get session messages
|
|
messages = get_session_messages(session_id)
|
|
return {
|
|
"status": "success",
|
|
"data": messages,
|
|
"total": len(messages)
|
|
}
|
|
|
|
elif request_method == 'POST':
|
|
# Send new message
|
|
content_length = int(os.environ.get('CONTENT_LENGTH', 0))
|
|
if content_length > 0:
|
|
post_data = json.loads(os.read(0, content_length).decode('utf-8'))
|
|
message = post_data.get('message')
|
|
|
|
if not message:
|
|
return {
|
|
"status": "error",
|
|
"message": "Message content is required",
|
|
"data": None
|
|
}
|
|
|
|
# Here you would get the service_id from the session and send the message
|
|
# For now, just return success (in real implementation, call send_message_to_service)
|
|
return {
|
|
"status": "success",
|
|
"message": "Message sent successfully"
|
|
}
|
|
else:
|
|
return {
|
|
"status": "error",
|
|
"message": "No message data provided"
|
|
}
|
|
|
|
else:
|
|
return {
|
|
"status": "error",
|
|
"message": "Method not allowed"
|
|
}
|
|
|
|
except Exception as e:
|
|
return {
|
|
"status": "error",
|
|
"message": str(e),
|
|
"data": None
|
|
}
|
|
|
|
# Execute and return JSON response
|
|
result = main()
|
|
print(json.dumps(result, ensure_ascii=False)) |