You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by di...@apache.org on 2025/04/09 11:08:20 UTC
(airavata) 01/01: Support for HTML and JS support for magic output
This is an automated email from the ASF dual-hosted git repository.
dimuthuupe pushed a commit to branch Agent-HTML-Support
in repository https://gitbox.apache.org/repos/asf/airavata.git
commit 6acef072af56b25a0e6e2a05bf3122a72503b4f6
Author: DImuthuUpe <di...@gmail.com>
AuthorDate: Wed Apr 9 07:08:07 2025 -0400
Support for HTML and JS support for magic output
---
.../airavata_jupyter_magic/__init__.py | 10 ++++++++--
.../agent-service/src/main/resources/application.yml | 1 +
modules/agent-framework/airavata-agent/agent.go | 15 ++++++++++++++-
3 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_jupyter_magic/__init__.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_jupyter_magic/__init__.py
index 8a40ca4e8d..5d4de58ae8 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_jupyter_magic/__init__.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_jupyter_magic/__init__.py
@@ -16,7 +16,7 @@ import yaml
from IPython.core.getipython import get_ipython
from IPython.core.interactiveshell import ExecutionResult
from IPython.core.magic import register_cell_magic, register_line_magic
-from IPython.display import HTML, Image, display
+from IPython.display import HTML, Image, display, Javascript, HTML
from rich.console import Console
from .device_auth import DeviceFlowAuthenticator
@@ -538,6 +538,12 @@ def run_on_runtime(rt_name: str, code_obj: str, result: ExecutionResult) -> bool
result.error_in_exec = Exception(
f"Failed to decode image data: {e}")
return False
+ elif 'text/html' in data_obj:
+ html_data = data_obj['text/html']
+ display(HTML(html_data))
+ elif 'application/javascript' in data_obj:
+ js_data = data_obj['application/javascript']
+ display(Javascript(js_data))
elif output_type == 'stream':
stream_name = output.get('name', 'stdout')
@@ -558,7 +564,7 @@ def run_on_runtime(rt_name: str, code_obj: str, result: ExecutionResult) -> bool
"""
display(HTML(error_html))
result.error_in_exec = Exception(stream_text)
- return False
+ #return False This prevents rest of the message not getting rendered
else:
print(stream_text)
diff --git a/modules/agent-framework/agent-service/src/main/resources/application.yml b/modules/agent-framework/agent-service/src/main/resources/application.yml
index cca313f82f..3ffce48f7a 100644
--- a/modules/agent-framework/agent-service/src/main/resources/application.yml
+++ b/modules/agent-framework/agent-service/src/main/resources/application.yml
@@ -1,6 +1,7 @@
grpc:
server:
port: 19900
+ max-inbound-message-size: 20971520
server:
port: 18880
diff --git a/modules/agent-framework/airavata-agent/agent.go b/modules/agent-framework/airavata-agent/agent.go
index bd6461b801..973ed9f510 100644
--- a/modules/agent-framework/airavata-agent/agent.go
+++ b/modules/agent-framework/airavata-agent/agent.go
@@ -51,7 +51,18 @@ func main() {
log.Fatalf("[agent.go] main() Error: --agent flag is required.\n")
}
- conn, err := grpc.NewClient(*serverUrl, grpc.WithTransportCredentials(insecure.NewCredentials()))
+ ctx := context.Background()
+ conn, err := grpc.DialContext(
+ ctx,
+ *serverUrl,
+ grpc.WithTransportCredentials(insecure.NewCredentials()),
+ grpc.WithDefaultCallOptions(
+ grpc.MaxCallRecvMsgSize(20*1024*1024), // 10MB for incoming messages
+ grpc.MaxCallSendMsgSize(20*1024*1024), // 10MB for outgoing messages (if needed)
+ ),
+ ) // Enable large message support
+
+ //conn, err := grpc.NewClient(*serverUrl, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
log.Fatalf("[agent.go] main() Did not connect to %s: %v\n", *serverUrl, err)
}
@@ -426,6 +437,8 @@ func executeJupyter(stream Stream, executionId string, envName string, code stri
}
jupyterResponse := string(bodyBytes)
log.Printf("[agent.go] executeJupyter() id: %s response: %s\n", executionId, jupyterResponse)
+ fmt.Printf("Response size: %d bytes\n", len(jupyterResponse))
+
sendResponse(jupyterResponse, nil)
}