hdsp-jupyter-extension 2.0.1__py3-none-any.whl → 2.0.3__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.
- agent_server/langchain/__init__.py +18 -0
- agent_server/langchain/agent.py +694 -0
- agent_server/langchain/executors/__init__.py +15 -0
- agent_server/langchain/executors/jupyter_executor.py +429 -0
- agent_server/langchain/executors/notebook_searcher.py +477 -0
- agent_server/langchain/middleware/__init__.py +36 -0
- agent_server/langchain/middleware/code_search_middleware.py +278 -0
- agent_server/langchain/middleware/error_handling_middleware.py +338 -0
- agent_server/langchain/middleware/jupyter_execution_middleware.py +301 -0
- agent_server/langchain/middleware/rag_middleware.py +227 -0
- agent_server/langchain/middleware/validation_middleware.py +240 -0
- agent_server/langchain/state.py +159 -0
- agent_server/langchain/tools/__init__.py +39 -0
- agent_server/langchain/tools/file_tools.py +279 -0
- agent_server/langchain/tools/jupyter_tools.py +143 -0
- agent_server/langchain/tools/search_tools.py +309 -0
- agent_server/main.py +13 -0
- agent_server/routers/health.py +14 -0
- agent_server/routers/langchain_agent.py +1368 -0
- {hdsp_jupyter_extension-2.0.1.data → hdsp_jupyter_extension-2.0.3.data}/data/share/jupyter/labextensions/hdsp-agent/build_log.json +1 -1
- {hdsp_jupyter_extension-2.0.1.data → hdsp_jupyter_extension-2.0.3.data}/data/share/jupyter/labextensions/hdsp-agent/package.json +2 -2
- hdsp_jupyter_extension-2.0.1.data/data/share/jupyter/labextensions/hdsp-agent/static/frontend_styles_index_js.2607ff74c74acfa83158.js → hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/frontend_styles_index_js.634cf0ae0f3592d0882f.js +408 -4
- hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/frontend_styles_index_js.634cf0ae0f3592d0882f.js.map +1 -0
- hdsp_jupyter_extension-2.0.1.data/data/share/jupyter/labextensions/hdsp-agent/static/lib_index_js.622c1a5918b3aafb2315.js → hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/lib_index_js.1366019c413f1d68467f.js +753 -65
- hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/lib_index_js.1366019c413f1d68467f.js.map +1 -0
- hdsp_jupyter_extension-2.0.1.data/data/share/jupyter/labextensions/hdsp-agent/static/remoteEntry.729f933de01ad5620730.js → hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/remoteEntry.b6d91b150c0800bddfa4.js +8 -8
- hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/remoteEntry.b6d91b150c0800bddfa4.js.map +1 -0
- jupyter_ext/labextension/static/vendors-node_modules_emotion_cache_dist_emotion-cache_browser_development_esm_js-node_modules-782ee5.d9ed8645ef1d311657d8.js → hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_cache_dist_emotion-cache_browser_development_esm_js.24edcc52a1c014a8a5f0.js +2 -209
- hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_cache_dist_emotion-cache_browser_development_esm_js.24edcc52a1c014a8a5f0.js.map +1 -0
- jupyter_ext/labextension/static/vendors-node_modules_emotion_react_dist_emotion-react_browser_development_esm_js.36b49c71871f98d4f549.js → hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_react_dist_emotion-react_browser_development_esm_js.19ecf6babe00caff6b8a.js +209 -2
- hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_react_dist_emotion-react_browser_development_esm_js.19ecf6babe00caff6b8a.js.map +1 -0
- hdsp_jupyter_extension-2.0.1.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_utils_createSvgIcon_js.2e13df4ea61496e95d45.js → hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_utils_createSvgIcon_js.1f5038488cdfd8b3a85d.js +212 -3
- hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_utils_createSvgIcon_js.1f5038488cdfd8b3a85d.js.map +1 -0
- {hdsp_jupyter_extension-2.0.1.dist-info → hdsp_jupyter_extension-2.0.3.dist-info}/METADATA +6 -1
- {hdsp_jupyter_extension-2.0.1.dist-info → hdsp_jupyter_extension-2.0.3.dist-info}/RECORD +66 -49
- jupyter_ext/_version.py +1 -1
- jupyter_ext/handlers.py +126 -1
- jupyter_ext/labextension/build_log.json +1 -1
- jupyter_ext/labextension/package.json +2 -2
- jupyter_ext/labextension/static/{frontend_styles_index_js.2607ff74c74acfa83158.js → frontend_styles_index_js.634cf0ae0f3592d0882f.js} +408 -4
- jupyter_ext/labextension/static/frontend_styles_index_js.634cf0ae0f3592d0882f.js.map +1 -0
- jupyter_ext/labextension/static/{lib_index_js.622c1a5918b3aafb2315.js → lib_index_js.1366019c413f1d68467f.js} +753 -65
- jupyter_ext/labextension/static/lib_index_js.1366019c413f1d68467f.js.map +1 -0
- jupyter_ext/labextension/static/{remoteEntry.729f933de01ad5620730.js → remoteEntry.b6d91b150c0800bddfa4.js} +8 -8
- jupyter_ext/labextension/static/remoteEntry.b6d91b150c0800bddfa4.js.map +1 -0
- hdsp_jupyter_extension-2.0.1.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_cache_dist_emotion-cache_browser_development_esm_js-node_modules-782ee5.d9ed8645ef1d311657d8.js → jupyter_ext/labextension/static/vendors-node_modules_emotion_cache_dist_emotion-cache_browser_development_esm_js.24edcc52a1c014a8a5f0.js +2 -209
- jupyter_ext/labextension/static/vendors-node_modules_emotion_cache_dist_emotion-cache_browser_development_esm_js.24edcc52a1c014a8a5f0.js.map +1 -0
- hdsp_jupyter_extension-2.0.1.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_react_dist_emotion-react_browser_development_esm_js.36b49c71871f98d4f549.js → jupyter_ext/labextension/static/vendors-node_modules_emotion_react_dist_emotion-react_browser_development_esm_js.19ecf6babe00caff6b8a.js +209 -2
- jupyter_ext/labextension/static/vendors-node_modules_emotion_react_dist_emotion-react_browser_development_esm_js.19ecf6babe00caff6b8a.js.map +1 -0
- jupyter_ext/labextension/static/{vendors-node_modules_mui_material_utils_createSvgIcon_js.2e13df4ea61496e95d45.js → vendors-node_modules_mui_material_utils_createSvgIcon_js.1f5038488cdfd8b3a85d.js} +212 -3
- jupyter_ext/labextension/static/vendors-node_modules_mui_material_utils_createSvgIcon_js.1f5038488cdfd8b3a85d.js.map +1 -0
- hdsp_jupyter_extension-2.0.1.data/data/share/jupyter/labextensions/hdsp-agent/static/frontend_styles_index_js.2607ff74c74acfa83158.js.map +0 -1
- hdsp_jupyter_extension-2.0.1.data/data/share/jupyter/labextensions/hdsp-agent/static/lib_index_js.622c1a5918b3aafb2315.js.map +0 -1
- hdsp_jupyter_extension-2.0.1.data/data/share/jupyter/labextensions/hdsp-agent/static/remoteEntry.729f933de01ad5620730.js.map +0 -1
- hdsp_jupyter_extension-2.0.1.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_cache_dist_emotion-cache_browser_development_esm_js-node_modules-782ee5.d9ed8645ef1d311657d8.js.map +0 -1
- hdsp_jupyter_extension-2.0.1.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_react_dist_emotion-react_browser_development_esm_js.36b49c71871f98d4f549.js.map +0 -1
- hdsp_jupyter_extension-2.0.1.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_utils_createSvgIcon_js.2e13df4ea61496e95d45.js.map +0 -1
- jupyter_ext/labextension/static/frontend_styles_index_js.2607ff74c74acfa83158.js.map +0 -1
- jupyter_ext/labextension/static/lib_index_js.622c1a5918b3aafb2315.js.map +0 -1
- jupyter_ext/labextension/static/remoteEntry.729f933de01ad5620730.js.map +0 -1
- jupyter_ext/labextension/static/vendors-node_modules_emotion_cache_dist_emotion-cache_browser_development_esm_js-node_modules-782ee5.d9ed8645ef1d311657d8.js.map +0 -1
- jupyter_ext/labextension/static/vendors-node_modules_emotion_react_dist_emotion-react_browser_development_esm_js.36b49c71871f98d4f549.js.map +0 -1
- jupyter_ext/labextension/static/vendors-node_modules_mui_material_utils_createSvgIcon_js.2e13df4ea61496e95d45.js.map +0 -1
- {hdsp_jupyter_extension-2.0.1.data → hdsp_jupyter_extension-2.0.3.data}/data/etc/jupyter/jupyter_server_config.d/hdsp_jupyter_extension.json +0 -0
- {hdsp_jupyter_extension-2.0.1.data → hdsp_jupyter_extension-2.0.3.data}/data/share/jupyter/labextensions/hdsp-agent/install.json +0 -0
- {hdsp_jupyter_extension-2.0.1.data → hdsp_jupyter_extension-2.0.3.data}/data/share/jupyter/labextensions/hdsp-agent/static/node_modules_emotion_use-insertion-effect-with-fallbacks_dist_emotion-use-insertion-effect-wi-3ba6b80.c095373419d05e6f141a.js +0 -0
- {hdsp_jupyter_extension-2.0.1.data → hdsp_jupyter_extension-2.0.3.data}/data/share/jupyter/labextensions/hdsp-agent/static/node_modules_emotion_use-insertion-effect-with-fallbacks_dist_emotion-use-insertion-effect-wi-3ba6b80.c095373419d05e6f141a.js.map +0 -0
- {hdsp_jupyter_extension-2.0.1.data → hdsp_jupyter_extension-2.0.3.data}/data/share/jupyter/labextensions/hdsp-agent/static/node_modules_emotion_use-insertion-effect-with-fallbacks_dist_emotion-use-insertion-effect-wi-3ba6b81.61e75fb98ecff46cf836.js +0 -0
- {hdsp_jupyter_extension-2.0.1.data → hdsp_jupyter_extension-2.0.3.data}/data/share/jupyter/labextensions/hdsp-agent/static/node_modules_emotion_use-insertion-effect-with-fallbacks_dist_emotion-use-insertion-effect-wi-3ba6b81.61e75fb98ecff46cf836.js.map +0 -0
- {hdsp_jupyter_extension-2.0.1.data → hdsp_jupyter_extension-2.0.3.data}/data/share/jupyter/labextensions/hdsp-agent/static/style.js +0 -0
- {hdsp_jupyter_extension-2.0.1.data → hdsp_jupyter_extension-2.0.3.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_babel_runtime_helpers_esm_extends_js-node_modules_emotion_serialize_dist-051195.e2553aab0c3963b83dd7.js +0 -0
- {hdsp_jupyter_extension-2.0.1.data → hdsp_jupyter_extension-2.0.3.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_babel_runtime_helpers_esm_extends_js-node_modules_emotion_serialize_dist-051195.e2553aab0c3963b83dd7.js.map +0 -0
- {hdsp_jupyter_extension-2.0.1.data → hdsp_jupyter_extension-2.0.3.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_styled_dist_emotion-styled_browser_development_esm_js.661fb5836f4978a7c6e1.js +0 -0
- {hdsp_jupyter_extension-2.0.1.data → hdsp_jupyter_extension-2.0.3.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_styled_dist_emotion-styled_browser_development_esm_js.661fb5836f4978a7c6e1.js.map +0 -0
- {hdsp_jupyter_extension-2.0.1.data → hdsp_jupyter_extension-2.0.3.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_index_js.985697e0162d8d088ca2.js +0 -0
- {hdsp_jupyter_extension-2.0.1.data → hdsp_jupyter_extension-2.0.3.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_index_js.985697e0162d8d088ca2.js.map +0 -0
- {hdsp_jupyter_extension-2.0.1.dist-info → hdsp_jupyter_extension-2.0.3.dist-info}/WHEEL +0 -0
- {hdsp_jupyter_extension-2.0.1.dist-info → hdsp_jupyter_extension-2.0.3.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hdsp-jupyter-extension
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.3
|
|
4
4
|
Summary: HDSP Agent JupyterLab Extension - Thin client for Agent Server
|
|
5
5
|
Project-URL: Homepage, https://github.com/yourusername/hdsp-agent
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/yourusername/hdsp-agent/issues
|
|
@@ -24,6 +24,11 @@ Requires-Dist: certifi>=2024.0.0
|
|
|
24
24
|
Requires-Dist: fastapi>=0.115.0
|
|
25
25
|
Requires-Dist: httpx>=0.28.0
|
|
26
26
|
Requires-Dist: jupyter-server<3,>=2.0.1
|
|
27
|
+
Requires-Dist: langchain-core>=1.0.0
|
|
28
|
+
Requires-Dist: langchain-google-genai>=2.0.8
|
|
29
|
+
Requires-Dist: langchain-openai>=0.3.0
|
|
30
|
+
Requires-Dist: langchain>=1.0.0
|
|
31
|
+
Requires-Dist: langgraph>=1.0.0
|
|
27
32
|
Requires-Dist: pydantic-settings>=2.6.0
|
|
28
33
|
Requires-Dist: pydantic>=2.10.0
|
|
29
34
|
Requires-Dist: sse-starlette>=2.2.0
|
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
jupyter_ext/__init__.py,sha256=Du4qO0p8Fa91WlMsPJ1Cu5f65HpG4Mt8QgD9s7nn23M,8228
|
|
2
|
-
jupyter_ext/_version.py,sha256=
|
|
2
|
+
jupyter_ext/_version.py,sha256=zfjSHsLp7qxrykuq9hc2lFa8325UAGrxLefg7cvbkeU,171
|
|
3
3
|
jupyter_ext/config.py,sha256=I38C6P24rtC2uu3SFGRpXLd-YVUxTxe_bfdCHgi54OM,3262
|
|
4
|
-
jupyter_ext/handlers.py,sha256=
|
|
4
|
+
jupyter_ext/handlers.py,sha256=b5eAOiNdKtR3LP7eVzEE4ZfZ5RLmCBYs56bulkHwVxE,27766
|
|
5
5
|
jupyter_ext/etc/jupyter/jupyter_server_config.d/hdsp_jupyter_extension.json,sha256=KXCyKfoeM1OxdPWa0wL2plndcqJkQ7ke3UaF0tJpMW0,86
|
|
6
|
-
jupyter_ext/labextension/build_log.json,sha256=
|
|
7
|
-
jupyter_ext/labextension/package.json,sha256=
|
|
8
|
-
jupyter_ext/labextension/static/frontend_styles_index_js.
|
|
9
|
-
jupyter_ext/labextension/static/frontend_styles_index_js.
|
|
10
|
-
jupyter_ext/labextension/static/lib_index_js.
|
|
11
|
-
jupyter_ext/labextension/static/lib_index_js.
|
|
6
|
+
jupyter_ext/labextension/build_log.json,sha256=h-YEsN29Obks7aJTl3LWCjiGwrc_L9DjrPHVvV3v9nE,23379
|
|
7
|
+
jupyter_ext/labextension/package.json,sha256=glQ0oyyKjZx0SoTL26TSxDOazC3P6943U8Nqbrp9qYI,4520
|
|
8
|
+
jupyter_ext/labextension/static/frontend_styles_index_js.634cf0ae0f3592d0882f.js,sha256=rsyZctWGLxelub0a2riJ-zb8Igy3g0fc4gB7rt2nDIY,267787
|
|
9
|
+
jupyter_ext/labextension/static/frontend_styles_index_js.634cf0ae0f3592d0882f.js.map,sha256=We3tfZ5nQBeWPAtPKh3Z8CISUFSigjnlpmlMbgvoZ3c,312670
|
|
10
|
+
jupyter_ext/labextension/static/lib_index_js.1366019c413f1d68467f.js,sha256=rSDGI51IM_JIM3SiO71S4O_HID40pIsNSmx1dYaWb4Y,628030
|
|
11
|
+
jupyter_ext/labextension/static/lib_index_js.1366019c413f1d68467f.js.map,sha256=rvmLfYBvLNUClphX1ibtKr0PxwJY75EITIWgAoHCaPo,676261
|
|
12
12
|
jupyter_ext/labextension/static/node_modules_emotion_use-insertion-effect-with-fallbacks_dist_emotion-use-insertion-effect-wi-3ba6b80.c095373419d05e6f141a.js,sha256=59fuOBtJBzroB6mOhgCCSVbb0fSd90byTSSV2EvCsK4,4535
|
|
13
13
|
jupyter_ext/labextension/static/node_modules_emotion_use-insertion-effect-with-fallbacks_dist_emotion-use-insertion-effect-wi-3ba6b80.c095373419d05e6f141a.js.map,sha256=fRpFrcMlzgxQF-phepTC8-BRZwO1mDldaoMwJV_uY-Y,3116
|
|
14
14
|
jupyter_ext/labextension/static/node_modules_emotion_use-insertion-effect-with-fallbacks_dist_emotion-use-insertion-effect-wi-3ba6b81.61e75fb98ecff46cf836.js,sha256=o4ve2_dvZmfE0CZCaeBu11qYu-5OB2zDOAr5hWrIKn4,4535
|
|
15
15
|
jupyter_ext/labextension/static/node_modules_emotion_use-insertion-effect-with-fallbacks_dist_emotion-use-insertion-effect-wi-3ba6b81.61e75fb98ecff46cf836.js.map,sha256=6gSs6dXiA5iQ3YiRSel1Ig2i4urNXU-HEEcHInczjOM,3116
|
|
16
|
-
jupyter_ext/labextension/static/remoteEntry.
|
|
17
|
-
jupyter_ext/labextension/static/remoteEntry.
|
|
16
|
+
jupyter_ext/labextension/static/remoteEntry.b6d91b150c0800bddfa4.js,sha256=xcTdddz5ZhqAqN6kHHbQxoyYPSTzRHKr_1AuLpFNniM,38243
|
|
17
|
+
jupyter_ext/labextension/static/remoteEntry.b6d91b150c0800bddfa4.js.map,sha256=-K2fmwnvYSlyVut8rNpM-FRIAyuR4sDYanOsNXVbRB8,36998
|
|
18
18
|
jupyter_ext/labextension/static/style.js,sha256=Sb-Ji_5-ejVKmmKUV2b3sfuP7iFYDAgFFfT1Jt0hRcE,163
|
|
19
19
|
jupyter_ext/labextension/static/vendors-node_modules_babel_runtime_helpers_esm_extends_js-node_modules_emotion_serialize_dist-051195.e2553aab0c3963b83dd7.js,sha256=oCoskp4kEWGDCpNbXfW5AwnzBEZ5OUiO9Tq7An4ORJc,17120
|
|
20
20
|
jupyter_ext/labextension/static/vendors-node_modules_babel_runtime_helpers_esm_extends_js-node_modules_emotion_serialize_dist-051195.e2553aab0c3963b83dd7.js.map,sha256=MkPt1pMGQa_0-5BWR36xjPnwdr4BQai1hf3zlHIHgis,16964
|
|
21
|
-
jupyter_ext/labextension/static/vendors-node_modules_emotion_cache_dist_emotion-cache_browser_development_esm_js
|
|
22
|
-
jupyter_ext/labextension/static/vendors-node_modules_emotion_cache_dist_emotion-cache_browser_development_esm_js
|
|
23
|
-
jupyter_ext/labextension/static/vendors-node_modules_emotion_react_dist_emotion-react_browser_development_esm_js.
|
|
24
|
-
jupyter_ext/labextension/static/vendors-node_modules_emotion_react_dist_emotion-react_browser_development_esm_js.
|
|
21
|
+
jupyter_ext/labextension/static/vendors-node_modules_emotion_cache_dist_emotion-cache_browser_development_esm_js.24edcc52a1c014a8a5f0.js,sha256=wzNlZbG78o1o8VdysX4Jh8svCJn7EkCEsWysYVNDA_M,72770
|
|
22
|
+
jupyter_ext/labextension/static/vendors-node_modules_emotion_cache_dist_emotion-cache_browser_development_esm_js.24edcc52a1c014a8a5f0.js.map,sha256=ezT6x--1WMPEaTvc-Hls3--P26cDONPdLIJoVturnZY,65792
|
|
23
|
+
jupyter_ext/labextension/static/vendors-node_modules_emotion_react_dist_emotion-react_browser_development_esm_js.19ecf6babe00caff6b8a.js,sha256=k2kgP3oQDAk-1SnNqBErcJNjPDaVau6RaKqWLlhWPhk,52636
|
|
24
|
+
jupyter_ext/labextension/static/vendors-node_modules_emotion_react_dist_emotion-react_browser_development_esm_js.19ecf6babe00caff6b8a.js.map,sha256=vOmkYMCMF8wPvjg0KkidY8nqkUKsRFACvMrOZ9oCV5I,52519
|
|
25
25
|
jupyter_ext/labextension/static/vendors-node_modules_emotion_styled_dist_emotion-styled_browser_development_esm_js.661fb5836f4978a7c6e1.js,sha256=ei2Rn4RgH5MPqmhYKgavrxtq7O8m3tKAhi7DZtm41GA,23091
|
|
26
26
|
jupyter_ext/labextension/static/vendors-node_modules_emotion_styled_dist_emotion-styled_browser_development_esm_js.661fb5836f4978a7c6e1.js.map,sha256=wcO4207yUzmN33D_MSJBxQynNmUI6GWQLOqvDw7nRbU,17846
|
|
27
27
|
jupyter_ext/labextension/static/vendors-node_modules_mui_material_index_js.985697e0162d8d088ca2.js,sha256=stuAnHjRqwUbf11qPnbXV4HyWwtj-CtvGis3BDrZlXw,3064261
|
|
28
28
|
jupyter_ext/labextension/static/vendors-node_modules_mui_material_index_js.985697e0162d8d088ca2.js.map,sha256=_p6BJKXfq9zLGeBkN7gezYwZljO4adpNKqjwD3N79GY,2210898
|
|
29
|
-
jupyter_ext/labextension/static/vendors-node_modules_mui_material_utils_createSvgIcon_js.
|
|
30
|
-
jupyter_ext/labextension/static/vendors-node_modules_mui_material_utils_createSvgIcon_js.
|
|
29
|
+
jupyter_ext/labextension/static/vendors-node_modules_mui_material_utils_createSvgIcon_js.1f5038488cdfd8b3a85d.js,sha256=YCT05xGYLDCpIYCyDWyhZdWrPAu_L_ZdhvxpVBtG2G8,295007
|
|
30
|
+
jupyter_ext/labextension/static/vendors-node_modules_mui_material_utils_createSvgIcon_js.1f5038488cdfd8b3a85d.js.map,sha256=08fBThOCy0BnlvpXxZGsM97YcU0Ik7UCgaMDxmUg8F0,262831
|
|
31
31
|
agent_server/__init__.py,sha256=YF9Kl0x5WKxiqA_Ma0M7FjeQWHCBAvker-v5Y40F1x0,196
|
|
32
|
-
agent_server/main.py,sha256=
|
|
32
|
+
agent_server/main.py,sha256=UzMtVGQ3NtspGHfQ6xjJrIq8Dg_uUoq1VQZ7CBcFusc,5366
|
|
33
33
|
agent_server/core/__init__.py,sha256=KiIQyCJFmJKLpHueS4SPyhNafnupgv2izISdOePTFCc,2262
|
|
34
34
|
agent_server/core/api_key_manager.py,sha256=4GA3wsKcGyUTO3m9Rb1I5j1z4n6mde9pBWfPROwzDm4,14699
|
|
35
35
|
agent_server/core/code_validator.py,sha256=VY1oHUZ0sefhj0Bi5g1OoRab9DNatXDAUkJbdLN5Kyk,44487
|
|
@@ -48,6 +48,22 @@ agent_server/core/summary_generator.py,sha256=sdQtxnCafU5Vqpv8k-uWvNfF34nhEbo1zq
|
|
|
48
48
|
agent_server/core/task_manager.py,sha256=-KFp8aS4pJUya7CJYxLm-piZyKLhivvCX7HQ4fy1oM0,6387
|
|
49
49
|
agent_server/knowledge/__init__.py,sha256=6xV1zhCEIXrugMk7CQmsDkKgqqllQRCAPBMOUVYmamI,229
|
|
50
50
|
agent_server/knowledge/watchdog_service.py,sha256=Q7CFgomg59h_rvDc0mAQ-pOi9czIns0pQJTr9OoOZRw,11124
|
|
51
|
+
agent_server/langchain/__init__.py,sha256=uol-jV2VVlM4_kW3X301Asf5WovJfdgRAHQM6k9U7o8,615
|
|
52
|
+
agent_server/langchain/agent.py,sha256=RaeHSebGCyXC8v0MF3FOsnPuSbtPHnXvF8Ux50g6vlY,26993
|
|
53
|
+
agent_server/langchain/state.py,sha256=GJBQTOmvCEjDnYI2d7YJ_QgY6cdWGUM0hLojosTvwGI,4152
|
|
54
|
+
agent_server/langchain/executors/__init__.py,sha256=R5nEDVpVGquc4aq0Ndtww_Kd6hmziF2cYt2EE1m3XsA,462
|
|
55
|
+
agent_server/langchain/executors/jupyter_executor.py,sha256=1o-nx_tudxPLh4i7PmpxXUGbxJhgV1guCJj_VznAFHI,14489
|
|
56
|
+
agent_server/langchain/executors/notebook_searcher.py,sha256=MA2nq8FbydjnsO6Bz8rEJKB30iwTrPa0ZHmpp4zKg1M,15269
|
|
57
|
+
agent_server/langchain/middleware/__init__.py,sha256=X73n9qeILxeeuYxJXpTvJXY92W5l8mtNml2ukh6Da2Y,1262
|
|
58
|
+
agent_server/langchain/middleware/code_search_middleware.py,sha256=55W6vkfGBQKtzjpQvG46SlRUcw0zWl1mR163xWWpH68,9690
|
|
59
|
+
agent_server/langchain/middleware/error_handling_middleware.py,sha256=tGki6er2yHeUZZmwu0V_KEPLFyANNMKICuW_HvjfPFw,11126
|
|
60
|
+
agent_server/langchain/middleware/jupyter_execution_middleware.py,sha256=zjdPi5zQoV1QKFY3dHH-qE7kqf042Yj4tSo4TiQJ9DQ,9511
|
|
61
|
+
agent_server/langchain/middleware/rag_middleware.py,sha256=_I_AmgPc028WqC7Zl6nGjfRBaQY01sRUzEmH0uEfl10,6785
|
|
62
|
+
agent_server/langchain/middleware/validation_middleware.py,sha256=oV4yAbXKIaArgNXimKn3tFQnUgsg6saHg7bAgrCrhIo,7475
|
|
63
|
+
agent_server/langchain/tools/__init__.py,sha256=9gW1YP1G2rBZ8KLlYtS04ghj_zLzJXawBMNyEUuVG_s,948
|
|
64
|
+
agent_server/langchain/tools/file_tools.py,sha256=HbFB09lQrE8MN-SQaHR71zy_0_d3gv86qMY0EPzYky8,8271
|
|
65
|
+
agent_server/langchain/tools/jupyter_tools.py,sha256=hNN5CP_r2G1NHCeknJieuStumIvxnUm6c9SG7d1yAlU,4273
|
|
66
|
+
agent_server/langchain/tools/search_tools.py,sha256=VErPMnJ4t_1UeC3ZO_OoWSynOTETeBvFgtLMGp-91TU,9992
|
|
51
67
|
agent_server/prompts/__init__.py,sha256=nwAKfAuUkWnoN41p2jA0yBqwMfXMZhWNsWl5GU39Snk,1498
|
|
52
68
|
agent_server/prompts/file_action_prompts.py,sha256=riZ9UtSv5etAZ_Il6Atr10gJeEhUA_QBcSpPtFXP2zk,2673
|
|
53
69
|
agent_server/routers/__init__.py,sha256=vXk7By8qKyZ9PgSBlPqjlYM35cMKsn8iyRVjlvmaWoU,177
|
|
@@ -55,7 +71,8 @@ agent_server/routers/agent.py,sha256=6G1lwSsJHfVpIzq015cqJgcuUZeVxvCr17Gi3HgMdl4
|
|
|
55
71
|
agent_server/routers/chat.py,sha256=jXNdJVTrL-C4SKMWioP4_jI3jhDdnmiQRtpYtaPqOo4,6228
|
|
56
72
|
agent_server/routers/config.py,sha256=8QumO4MK2PnfSPTcVBIksqu1WS-FBo3RBzAONU_zZVk,2985
|
|
57
73
|
agent_server/routers/file_resolver.py,sha256=KNopmolytoC1w9GH7Uor4tklbS2lqUYXea2U8xKPTI4,9237
|
|
58
|
-
agent_server/routers/health.py,sha256=
|
|
74
|
+
agent_server/routers/health.py,sha256=y32q1SE8aFx2Fgj1rvkprQe-8JsOGF1H3zyD3uFKP_Y,1226
|
|
75
|
+
agent_server/routers/langchain_agent.py,sha256=vE5kdNsnlgWeuvobZJRc-gHWYVGEqnBKxoKSrUFhEe8,58663
|
|
59
76
|
agent_server/routers/rag.py,sha256=iHWk281PaEzmtb-lcNtFseYLZAfvyjXRj8u5ESreI48,4969
|
|
60
77
|
agent_server/schemas/__init__.py,sha256=3sYVGcT7S5MkB3tDCoX3vojmhT-aHj2esg8STvjRGCk,1153
|
|
61
78
|
hdsp_agent_core/__init__.py,sha256=QQEV26AIbNUvriqSdUqmUTouFkAt2hTssai2fsTibdc,3262
|
|
@@ -88,34 +105,34 @@ hdsp_agent_core/tests/__init__.py,sha256=RinkbDl7BnUloYATdCHWXqkVytuWHPNadeJL8Ff
|
|
|
88
105
|
hdsp_agent_core/tests/conftest.py,sha256=PfNEw0TwEaQ4K2kqA8zymnB3VOGrYFVXLdae8hUaRTw,2695
|
|
89
106
|
hdsp_agent_core/tests/test_factory.py,sha256=hy94qoChlozQ5UPtkVQJ2ZwfCUmEr0G4zHWD_Gab044,10195
|
|
90
107
|
hdsp_agent_core/tests/test_services.py,sha256=DsBwcQ_--2phKWN4XnknabvIUIlBUNOtUP_8ympr8CE,12153
|
|
91
|
-
hdsp_jupyter_extension-2.0.
|
|
92
|
-
hdsp_jupyter_extension-2.0.
|
|
93
|
-
hdsp_jupyter_extension-2.0.
|
|
94
|
-
hdsp_jupyter_extension-2.0.
|
|
95
|
-
hdsp_jupyter_extension-2.0.
|
|
96
|
-
hdsp_jupyter_extension-2.0.
|
|
97
|
-
hdsp_jupyter_extension-2.0.
|
|
98
|
-
hdsp_jupyter_extension-2.0.
|
|
99
|
-
hdsp_jupyter_extension-2.0.
|
|
100
|
-
hdsp_jupyter_extension-2.0.
|
|
101
|
-
hdsp_jupyter_extension-2.0.
|
|
102
|
-
hdsp_jupyter_extension-2.0.
|
|
103
|
-
hdsp_jupyter_extension-2.0.
|
|
104
|
-
hdsp_jupyter_extension-2.0.
|
|
105
|
-
hdsp_jupyter_extension-2.0.
|
|
106
|
-
hdsp_jupyter_extension-2.0.
|
|
107
|
-
hdsp_jupyter_extension-2.0.
|
|
108
|
-
hdsp_jupyter_extension-2.0.
|
|
109
|
-
hdsp_jupyter_extension-2.0.
|
|
110
|
-
hdsp_jupyter_extension-2.0.
|
|
111
|
-
hdsp_jupyter_extension-2.0.
|
|
112
|
-
hdsp_jupyter_extension-2.0.
|
|
113
|
-
hdsp_jupyter_extension-2.0.
|
|
114
|
-
hdsp_jupyter_extension-2.0.
|
|
115
|
-
hdsp_jupyter_extension-2.0.
|
|
116
|
-
hdsp_jupyter_extension-2.0.
|
|
117
|
-
hdsp_jupyter_extension-2.0.
|
|
118
|
-
hdsp_jupyter_extension-2.0.
|
|
119
|
-
hdsp_jupyter_extension-2.0.
|
|
120
|
-
hdsp_jupyter_extension-2.0.
|
|
121
|
-
hdsp_jupyter_extension-2.0.
|
|
108
|
+
hdsp_jupyter_extension-2.0.3.data/data/etc/jupyter/jupyter_server_config.d/hdsp_jupyter_extension.json,sha256=KXCyKfoeM1OxdPWa0wL2plndcqJkQ7ke3UaF0tJpMW0,86
|
|
109
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/build_log.json,sha256=h-YEsN29Obks7aJTl3LWCjiGwrc_L9DjrPHVvV3v9nE,23379
|
|
110
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/package.json,sha256=glQ0oyyKjZx0SoTL26TSxDOazC3P6943U8Nqbrp9qYI,4520
|
|
111
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/frontend_styles_index_js.634cf0ae0f3592d0882f.js,sha256=rsyZctWGLxelub0a2riJ-zb8Igy3g0fc4gB7rt2nDIY,267787
|
|
112
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/frontend_styles_index_js.634cf0ae0f3592d0882f.js.map,sha256=We3tfZ5nQBeWPAtPKh3Z8CISUFSigjnlpmlMbgvoZ3c,312670
|
|
113
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/lib_index_js.1366019c413f1d68467f.js,sha256=rSDGI51IM_JIM3SiO71S4O_HID40pIsNSmx1dYaWb4Y,628030
|
|
114
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/lib_index_js.1366019c413f1d68467f.js.map,sha256=rvmLfYBvLNUClphX1ibtKr0PxwJY75EITIWgAoHCaPo,676261
|
|
115
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/node_modules_emotion_use-insertion-effect-with-fallbacks_dist_emotion-use-insertion-effect-wi-3ba6b80.c095373419d05e6f141a.js,sha256=59fuOBtJBzroB6mOhgCCSVbb0fSd90byTSSV2EvCsK4,4535
|
|
116
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/node_modules_emotion_use-insertion-effect-with-fallbacks_dist_emotion-use-insertion-effect-wi-3ba6b80.c095373419d05e6f141a.js.map,sha256=fRpFrcMlzgxQF-phepTC8-BRZwO1mDldaoMwJV_uY-Y,3116
|
|
117
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/node_modules_emotion_use-insertion-effect-with-fallbacks_dist_emotion-use-insertion-effect-wi-3ba6b81.61e75fb98ecff46cf836.js,sha256=o4ve2_dvZmfE0CZCaeBu11qYu-5OB2zDOAr5hWrIKn4,4535
|
|
118
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/node_modules_emotion_use-insertion-effect-with-fallbacks_dist_emotion-use-insertion-effect-wi-3ba6b81.61e75fb98ecff46cf836.js.map,sha256=6gSs6dXiA5iQ3YiRSel1Ig2i4urNXU-HEEcHInczjOM,3116
|
|
119
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/remoteEntry.b6d91b150c0800bddfa4.js,sha256=xcTdddz5ZhqAqN6kHHbQxoyYPSTzRHKr_1AuLpFNniM,38243
|
|
120
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/remoteEntry.b6d91b150c0800bddfa4.js.map,sha256=-K2fmwnvYSlyVut8rNpM-FRIAyuR4sDYanOsNXVbRB8,36998
|
|
121
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/style.js,sha256=Sb-Ji_5-ejVKmmKUV2b3sfuP7iFYDAgFFfT1Jt0hRcE,163
|
|
122
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_babel_runtime_helpers_esm_extends_js-node_modules_emotion_serialize_dist-051195.e2553aab0c3963b83dd7.js,sha256=oCoskp4kEWGDCpNbXfW5AwnzBEZ5OUiO9Tq7An4ORJc,17120
|
|
123
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_babel_runtime_helpers_esm_extends_js-node_modules_emotion_serialize_dist-051195.e2553aab0c3963b83dd7.js.map,sha256=MkPt1pMGQa_0-5BWR36xjPnwdr4BQai1hf3zlHIHgis,16964
|
|
124
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_cache_dist_emotion-cache_browser_development_esm_js.24edcc52a1c014a8a5f0.js,sha256=wzNlZbG78o1o8VdysX4Jh8svCJn7EkCEsWysYVNDA_M,72770
|
|
125
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_cache_dist_emotion-cache_browser_development_esm_js.24edcc52a1c014a8a5f0.js.map,sha256=ezT6x--1WMPEaTvc-Hls3--P26cDONPdLIJoVturnZY,65792
|
|
126
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_react_dist_emotion-react_browser_development_esm_js.19ecf6babe00caff6b8a.js,sha256=k2kgP3oQDAk-1SnNqBErcJNjPDaVau6RaKqWLlhWPhk,52636
|
|
127
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_react_dist_emotion-react_browser_development_esm_js.19ecf6babe00caff6b8a.js.map,sha256=vOmkYMCMF8wPvjg0KkidY8nqkUKsRFACvMrOZ9oCV5I,52519
|
|
128
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_styled_dist_emotion-styled_browser_development_esm_js.661fb5836f4978a7c6e1.js,sha256=ei2Rn4RgH5MPqmhYKgavrxtq7O8m3tKAhi7DZtm41GA,23091
|
|
129
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_styled_dist_emotion-styled_browser_development_esm_js.661fb5836f4978a7c6e1.js.map,sha256=wcO4207yUzmN33D_MSJBxQynNmUI6GWQLOqvDw7nRbU,17846
|
|
130
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_index_js.985697e0162d8d088ca2.js,sha256=stuAnHjRqwUbf11qPnbXV4HyWwtj-CtvGis3BDrZlXw,3064261
|
|
131
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_index_js.985697e0162d8d088ca2.js.map,sha256=_p6BJKXfq9zLGeBkN7gezYwZljO4adpNKqjwD3N79GY,2210898
|
|
132
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_utils_createSvgIcon_js.1f5038488cdfd8b3a85d.js,sha256=YCT05xGYLDCpIYCyDWyhZdWrPAu_L_ZdhvxpVBtG2G8,295007
|
|
133
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_utils_createSvgIcon_js.1f5038488cdfd8b3a85d.js.map,sha256=08fBThOCy0BnlvpXxZGsM97YcU0Ik7UCgaMDxmUg8F0,262831
|
|
134
|
+
hdsp_jupyter_extension-2.0.3.data/data/share/jupyter/labextensions/hdsp-agent/install.json,sha256=xNrwkh9wNTyYPt0_LNWXGICeqQDHRsQzflQFbLOwAH4,193
|
|
135
|
+
hdsp_jupyter_extension-2.0.3.dist-info/METADATA,sha256=fhay9tDEbnyiXJlag551RMy8SPnFj5xRMG15Sqk9fKQ,4231
|
|
136
|
+
hdsp_jupyter_extension-2.0.3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
137
|
+
hdsp_jupyter_extension-2.0.3.dist-info/licenses/LICENSE,sha256=LZnhgcr8NXVgC4ewcnNjWlYahaIS_KLMxKWDCZkHpQo,1061
|
|
138
|
+
hdsp_jupyter_extension-2.0.3.dist-info/RECORD,,
|
jupyter_ext/_version.py
CHANGED
jupyter_ext/handlers.py
CHANGED
|
@@ -19,6 +19,21 @@ from tornado.web import RequestHandler
|
|
|
19
19
|
logger = logging.getLogger(__name__)
|
|
20
20
|
|
|
21
21
|
|
|
22
|
+
def _resolve_workspace_root(server_root: str) -> str:
|
|
23
|
+
"""Resolve workspace root by walking up to the project root if needed."""
|
|
24
|
+
current = os.path.abspath(server_root)
|
|
25
|
+
while True:
|
|
26
|
+
if (
|
|
27
|
+
os.path.isdir(os.path.join(current, "extensions"))
|
|
28
|
+
and os.path.isdir(os.path.join(current, "agent-server"))
|
|
29
|
+
):
|
|
30
|
+
return current
|
|
31
|
+
parent = os.path.dirname(current)
|
|
32
|
+
if parent == current:
|
|
33
|
+
return os.path.abspath(server_root)
|
|
34
|
+
current = parent
|
|
35
|
+
|
|
36
|
+
|
|
22
37
|
def _get_service_factory():
|
|
23
38
|
"""Get ServiceFactory instance (lazy import to avoid circular imports)"""
|
|
24
39
|
from hdsp_agent_core.factory import get_service_factory
|
|
@@ -399,7 +414,7 @@ class HealthHandler(APIHandler):
|
|
|
399
414
|
|
|
400
415
|
status = {
|
|
401
416
|
"status": "healthy",
|
|
402
|
-
"extension_version": "2.0.
|
|
417
|
+
"extension_version": "2.0.2",
|
|
403
418
|
"mode": mode,
|
|
404
419
|
}
|
|
405
420
|
|
|
@@ -559,6 +574,111 @@ class TaskCancelProxyHandler(BaseProxyHandler):
|
|
|
559
574
|
return "/task/unknown/cancel"
|
|
560
575
|
|
|
561
576
|
|
|
577
|
+
class LangChainStreamProxyHandler(StreamProxyHandler):
|
|
578
|
+
"""Proxy handler for /agent/langchain/stream endpoint."""
|
|
579
|
+
|
|
580
|
+
def get_proxy_path(self) -> str:
|
|
581
|
+
return "/agent/langchain/stream"
|
|
582
|
+
|
|
583
|
+
async def post(self, *args, **kwargs):
|
|
584
|
+
"""Inject workspaceRoot based on Jupyter server root."""
|
|
585
|
+
try:
|
|
586
|
+
body = json.loads(self.request.body.decode("utf-8")) if self.request.body else {}
|
|
587
|
+
server_root = self.settings.get("server_root_dir", os.getcwd())
|
|
588
|
+
server_root = os.path.expanduser(server_root)
|
|
589
|
+
resolved_root = _resolve_workspace_root(server_root)
|
|
590
|
+
workspace_root = body.get("workspaceRoot")
|
|
591
|
+
|
|
592
|
+
if not workspace_root or workspace_root == ".":
|
|
593
|
+
body["workspaceRoot"] = resolved_root
|
|
594
|
+
elif not os.path.isabs(workspace_root):
|
|
595
|
+
body["workspaceRoot"] = os.path.join(resolved_root, workspace_root)
|
|
596
|
+
|
|
597
|
+
modified_body = json.dumps(body).encode("utf-8")
|
|
598
|
+
target_url = f"{self.agent_server_url}{self.get_proxy_path()}"
|
|
599
|
+
|
|
600
|
+
self.set_header("Content-Type", "text/event-stream")
|
|
601
|
+
self.set_header("Cache-Control", "no-cache")
|
|
602
|
+
self.set_header("Connection", "keep-alive")
|
|
603
|
+
self.set_header("X-Accel-Buffering", "no")
|
|
604
|
+
|
|
605
|
+
async with httpx.AsyncClient(timeout=self.timeout) as client:
|
|
606
|
+
async with client.stream(
|
|
607
|
+
"POST",
|
|
608
|
+
target_url,
|
|
609
|
+
content=modified_body,
|
|
610
|
+
headers={"Content-Type": "application/json"},
|
|
611
|
+
) as response:
|
|
612
|
+
async for chunk in response.aiter_bytes():
|
|
613
|
+
self.write(chunk)
|
|
614
|
+
await self.flush()
|
|
615
|
+
except httpx.ConnectError:
|
|
616
|
+
self.write(f'data: {json.dumps({"error": "Agent Server is not available"})}\n\n')
|
|
617
|
+
except httpx.TimeoutException:
|
|
618
|
+
self.write(f'data: {json.dumps({"error": "Agent Server timeout"})}\n\n')
|
|
619
|
+
except Exception as e:
|
|
620
|
+
logger.error(f"LangChainStreamProxy error: {e}", exc_info=True)
|
|
621
|
+
self.write(f'data: {json.dumps({"error": str(e)})}\n\n')
|
|
622
|
+
finally:
|
|
623
|
+
self.finish()
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
class LangChainResumeProxyHandler(StreamProxyHandler):
|
|
627
|
+
"""Proxy handler for /agent/langchain/resume endpoint."""
|
|
628
|
+
|
|
629
|
+
def get_proxy_path(self) -> str:
|
|
630
|
+
return "/agent/langchain/resume"
|
|
631
|
+
|
|
632
|
+
async def post(self, *args, **kwargs):
|
|
633
|
+
"""Inject workspaceRoot based on Jupyter server root."""
|
|
634
|
+
try:
|
|
635
|
+
body = json.loads(self.request.body.decode("utf-8")) if self.request.body else {}
|
|
636
|
+
server_root = self.settings.get("server_root_dir", os.getcwd())
|
|
637
|
+
server_root = os.path.expanduser(server_root)
|
|
638
|
+
resolved_root = _resolve_workspace_root(server_root)
|
|
639
|
+
workspace_root = body.get("workspaceRoot")
|
|
640
|
+
|
|
641
|
+
if not workspace_root or workspace_root == ".":
|
|
642
|
+
body["workspaceRoot"] = resolved_root
|
|
643
|
+
elif not os.path.isabs(workspace_root):
|
|
644
|
+
body["workspaceRoot"] = os.path.join(resolved_root, workspace_root)
|
|
645
|
+
|
|
646
|
+
modified_body = json.dumps(body).encode("utf-8")
|
|
647
|
+
target_url = f"{self.agent_server_url}{self.get_proxy_path()}"
|
|
648
|
+
|
|
649
|
+
self.set_header("Content-Type", "text/event-stream")
|
|
650
|
+
self.set_header("Cache-Control", "no-cache")
|
|
651
|
+
self.set_header("Connection", "keep-alive")
|
|
652
|
+
self.set_header("X-Accel-Buffering", "no")
|
|
653
|
+
|
|
654
|
+
async with httpx.AsyncClient(timeout=self.timeout) as client:
|
|
655
|
+
async with client.stream(
|
|
656
|
+
"POST",
|
|
657
|
+
target_url,
|
|
658
|
+
content=modified_body,
|
|
659
|
+
headers={"Content-Type": "application/json"},
|
|
660
|
+
) as response:
|
|
661
|
+
async for chunk in response.aiter_bytes():
|
|
662
|
+
self.write(chunk)
|
|
663
|
+
await self.flush()
|
|
664
|
+
except httpx.ConnectError:
|
|
665
|
+
self.write(f'data: {json.dumps({"error": "Agent Server is not available"})}\n\n')
|
|
666
|
+
except httpx.TimeoutException:
|
|
667
|
+
self.write(f'data: {json.dumps({"error": "Agent Server timeout"})}\n\n')
|
|
668
|
+
except Exception as e:
|
|
669
|
+
logger.error(f"LangChainResumeProxy error: {e}", exc_info=True)
|
|
670
|
+
self.write(f'data: {json.dumps({"error": str(e)})}\n\n')
|
|
671
|
+
finally:
|
|
672
|
+
self.finish()
|
|
673
|
+
|
|
674
|
+
|
|
675
|
+
class LangChainHealthProxyHandler(BaseProxyHandler):
|
|
676
|
+
"""Proxy handler for /agent/langchain/health endpoint."""
|
|
677
|
+
|
|
678
|
+
def get_proxy_path(self) -> str:
|
|
679
|
+
return "/agent/langchain/health"
|
|
680
|
+
|
|
681
|
+
|
|
562
682
|
class RAGReindexHandler(APIHandler):
|
|
563
683
|
"""Handler for /rag/reindex endpoint using ServiceFactory."""
|
|
564
684
|
|
|
@@ -607,6 +727,11 @@ def setup_handlers(web_app):
|
|
|
607
727
|
(url_path_join(base_url, "hdsp-agent", "chat", "message"), ChatMessageHandler),
|
|
608
728
|
(url_path_join(base_url, "hdsp-agent", "chat", "stream"), ChatStreamHandler),
|
|
609
729
|
|
|
730
|
+
# LangChain agent endpoints (proxy to agent-server)
|
|
731
|
+
(url_path_join(base_url, "hdsp-agent", "agent", "langchain", "stream"), LangChainStreamProxyHandler),
|
|
732
|
+
(url_path_join(base_url, "hdsp-agent", "agent", "langchain", "resume"), LangChainResumeProxyHandler),
|
|
733
|
+
(url_path_join(base_url, "hdsp-agent", "agent", "langchain", "health"), LangChainHealthProxyHandler),
|
|
734
|
+
|
|
610
735
|
# RAG endpoints
|
|
611
736
|
(url_path_join(base_url, "hdsp-agent", "rag", "search"), RAGSearchHandler),
|
|
612
737
|
(url_path_join(base_url, "hdsp-agent", "rag", "status"), RAGStatusHandler),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hdsp-agent",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3",
|
|
4
4
|
"description": "HDSP Agent JupyterLab Extension - Thin client for Agent Server",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jupyter",
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
}
|
|
127
127
|
},
|
|
128
128
|
"_build": {
|
|
129
|
-
"load": "static/remoteEntry.
|
|
129
|
+
"load": "static/remoteEntry.b6d91b150c0800bddfa4.js",
|
|
130
130
|
"extension": "./extension",
|
|
131
131
|
"style": "./style"
|
|
132
132
|
}
|