hdsp-jupyter-extension 2.0.26__py3-none-any.whl → 2.0.28__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/context_providers/__init__.py +4 -2
- agent_server/context_providers/actions.py +73 -7
- agent_server/context_providers/file.py +23 -23
- agent_server/langchain/__init__.py +2 -2
- agent_server/langchain/agent.py +18 -251
- agent_server/langchain/agent_factory.py +26 -4
- agent_server/langchain/agent_prompts/planner_prompt.py +22 -35
- agent_server/langchain/custom_middleware.py +278 -43
- agent_server/langchain/llm_factory.py +102 -54
- agent_server/langchain/logging_utils.py +1 -1
- agent_server/langchain/middleware/__init__.py +5 -0
- agent_server/langchain/middleware/code_history_middleware.py +126 -37
- agent_server/langchain/middleware/content_injection_middleware.py +110 -0
- agent_server/langchain/middleware/subagent_events.py +88 -9
- agent_server/langchain/middleware/subagent_middleware.py +518 -240
- agent_server/langchain/prompts.py +5 -22
- agent_server/langchain/state_schema.py +44 -0
- agent_server/langchain/tools/jupyter_tools.py +4 -5
- agent_server/langchain/tools/tool_registry.py +6 -0
- agent_server/routers/chat.py +305 -2
- agent_server/routers/config.py +193 -8
- agent_server/routers/config_schema.py +254 -0
- agent_server/routers/context.py +31 -8
- agent_server/routers/langchain_agent.py +310 -153
- hdsp_agent_core/managers/config_manager.py +100 -1
- {hdsp_jupyter_extension-2.0.26.data → hdsp_jupyter_extension-2.0.28.data}/data/share/jupyter/labextensions/hdsp-agent/build_log.json +1 -1
- {hdsp_jupyter_extension-2.0.26.data → hdsp_jupyter_extension-2.0.28.data}/data/share/jupyter/labextensions/hdsp-agent/package.json +2 -2
- hdsp_jupyter_extension-2.0.26.data/data/share/jupyter/labextensions/hdsp-agent/static/frontend_styles_index_js.b5e4416b4e07ec087aad.js → hdsp_jupyter_extension-2.0.28.data/data/share/jupyter/labextensions/hdsp-agent/static/frontend_styles_index_js.55727265b00191e68d9a.js +479 -15
- hdsp_jupyter_extension-2.0.28.data/data/share/jupyter/labextensions/hdsp-agent/static/frontend_styles_index_js.55727265b00191e68d9a.js.map +1 -0
- jupyter_ext/labextension/static/lib_index_js.67505497667f9c0a763d.js → hdsp_jupyter_extension-2.0.28.data/data/share/jupyter/labextensions/hdsp-agent/static/lib_index_js.df05d90f366bfd5fa023.js +1287 -190
- hdsp_jupyter_extension-2.0.28.data/data/share/jupyter/labextensions/hdsp-agent/static/lib_index_js.df05d90f366bfd5fa023.js.map +1 -0
- hdsp_jupyter_extension-2.0.26.data/data/share/jupyter/labextensions/hdsp-agent/static/remoteEntry.0fe2dcbbd176ee0efceb.js → hdsp_jupyter_extension-2.0.28.data/data/share/jupyter/labextensions/hdsp-agent/static/remoteEntry.08fce819ee32e9d25175.js +3 -3
- jupyter_ext/labextension/static/remoteEntry.0fe2dcbbd176ee0efceb.js.map → hdsp_jupyter_extension-2.0.28.data/data/share/jupyter/labextensions/hdsp-agent/static/remoteEntry.08fce819ee32e9d25175.js.map +1 -1
- {hdsp_jupyter_extension-2.0.26.dist-info → hdsp_jupyter_extension-2.0.28.dist-info}/METADATA +1 -1
- {hdsp_jupyter_extension-2.0.26.dist-info → hdsp_jupyter_extension-2.0.28.dist-info}/RECORD +66 -64
- jupyter_ext/_version.py +1 -1
- jupyter_ext/handlers.py +41 -0
- jupyter_ext/labextension/build_log.json +1 -1
- jupyter_ext/labextension/package.json +2 -2
- jupyter_ext/labextension/static/{frontend_styles_index_js.b5e4416b4e07ec087aad.js → frontend_styles_index_js.55727265b00191e68d9a.js} +479 -15
- jupyter_ext/labextension/static/frontend_styles_index_js.55727265b00191e68d9a.js.map +1 -0
- hdsp_jupyter_extension-2.0.26.data/data/share/jupyter/labextensions/hdsp-agent/static/lib_index_js.67505497667f9c0a763d.js → jupyter_ext/labextension/static/lib_index_js.df05d90f366bfd5fa023.js +1287 -190
- jupyter_ext/labextension/static/lib_index_js.df05d90f366bfd5fa023.js.map +1 -0
- jupyter_ext/labextension/static/{remoteEntry.0fe2dcbbd176ee0efceb.js → remoteEntry.08fce819ee32e9d25175.js} +3 -3
- hdsp_jupyter_extension-2.0.26.data/data/share/jupyter/labextensions/hdsp-agent/static/remoteEntry.0fe2dcbbd176ee0efceb.js.map → jupyter_ext/labextension/static/remoteEntry.08fce819ee32e9d25175.js.map +1 -1
- agent_server/langchain/middleware/description_injector.py +0 -150
- hdsp_jupyter_extension-2.0.26.data/data/share/jupyter/labextensions/hdsp-agent/static/frontend_styles_index_js.b5e4416b4e07ec087aad.js.map +0 -1
- hdsp_jupyter_extension-2.0.26.data/data/share/jupyter/labextensions/hdsp-agent/static/lib_index_js.67505497667f9c0a763d.js.map +0 -1
- jupyter_ext/labextension/static/frontend_styles_index_js.b5e4416b4e07ec087aad.js.map +0 -1
- jupyter_ext/labextension/static/lib_index_js.67505497667f9c0a763d.js.map +0 -1
- {hdsp_jupyter_extension-2.0.26.data → hdsp_jupyter_extension-2.0.28.data}/data/etc/jupyter/jupyter_server_config.d/hdsp_jupyter_extension.json +0 -0
- {hdsp_jupyter_extension-2.0.26.data → hdsp_jupyter_extension-2.0.28.data}/data/share/jupyter/labextensions/hdsp-agent/install.json +0 -0
- {hdsp_jupyter_extension-2.0.26.data → hdsp_jupyter_extension-2.0.28.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.26.data → hdsp_jupyter_extension-2.0.28.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.26.data → hdsp_jupyter_extension-2.0.28.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.26.data → hdsp_jupyter_extension-2.0.28.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.26.data → hdsp_jupyter_extension-2.0.28.data}/data/share/jupyter/labextensions/hdsp-agent/static/style.js +0 -0
- {hdsp_jupyter_extension-2.0.26.data → hdsp_jupyter_extension-2.0.28.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.26.data → hdsp_jupyter_extension-2.0.28.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.26.data → hdsp_jupyter_extension-2.0.28.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_cache_dist_emotion-cache_browser_development_esm_js.24edcc52a1c014a8a5f0.js +0 -0
- {hdsp_jupyter_extension-2.0.26.data → hdsp_jupyter_extension-2.0.28.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_cache_dist_emotion-cache_browser_development_esm_js.24edcc52a1c014a8a5f0.js.map +0 -0
- {hdsp_jupyter_extension-2.0.26.data → hdsp_jupyter_extension-2.0.28.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_react_dist_emotion-react_browser_development_esm_js.19ecf6babe00caff6b8a.js +0 -0
- {hdsp_jupyter_extension-2.0.26.data → hdsp_jupyter_extension-2.0.28.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_react_dist_emotion-react_browser_development_esm_js.19ecf6babe00caff6b8a.js.map +0 -0
- {hdsp_jupyter_extension-2.0.26.data → hdsp_jupyter_extension-2.0.28.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.26.data → hdsp_jupyter_extension-2.0.28.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.26.data → hdsp_jupyter_extension-2.0.28.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_index_js.985697e0162d8d088ca2.js +0 -0
- {hdsp_jupyter_extension-2.0.26.data → hdsp_jupyter_extension-2.0.28.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.26.data → hdsp_jupyter_extension-2.0.28.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_utils_createSvgIcon_js.1f5038488cdfd8b3a85d.js +0 -0
- {hdsp_jupyter_extension-2.0.26.data → hdsp_jupyter_extension-2.0.28.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_utils_createSvgIcon_js.1f5038488cdfd8b3a85d.js.map +0 -0
- {hdsp_jupyter_extension-2.0.26.dist-info → hdsp_jupyter_extension-2.0.28.dist-info}/WHEEL +0 -0
- {hdsp_jupyter_extension-2.0.26.dist-info → hdsp_jupyter_extension-2.0.28.dist-info}/licenses/LICENSE +0 -0
|
@@ -81,14 +81,49 @@ class ConfigManager:
|
|
|
81
81
|
def _default_config(self) -> Dict[str, Any]:
|
|
82
82
|
"""Get default configuration"""
|
|
83
83
|
return {
|
|
84
|
+
# Admin Config - LLM Provider Settings
|
|
84
85
|
"provider": "gemini",
|
|
85
86
|
"gemini": {"apiKey": "", "model": "gemini-2.5-pro"},
|
|
87
|
+
"openai": {"apiKey": "", "model": "gpt-4o"},
|
|
86
88
|
"vllm": {
|
|
87
89
|
"endpoint": "http://localhost:8000",
|
|
88
90
|
"apiKey": "",
|
|
89
91
|
"model": "meta-llama/Llama-2-7b-chat-hf",
|
|
90
92
|
},
|
|
91
|
-
|
|
93
|
+
# Admin Config - Summarization LLM
|
|
94
|
+
"summarization": {
|
|
95
|
+
"enabled": False,
|
|
96
|
+
"provider": "gemini",
|
|
97
|
+
"model": None,
|
|
98
|
+
},
|
|
99
|
+
# Admin Config - Embedding
|
|
100
|
+
"embedding": {
|
|
101
|
+
"provider": "openai",
|
|
102
|
+
"model": "text-embedding-3-small",
|
|
103
|
+
"apiKey": None,
|
|
104
|
+
},
|
|
105
|
+
# Admin Config - RAG
|
|
106
|
+
"rag": {
|
|
107
|
+
"qdrantUrl": "http://localhost:6333",
|
|
108
|
+
"collectionName": "hdsp_docs",
|
|
109
|
+
},
|
|
110
|
+
# Admin Config - Agent Server
|
|
111
|
+
"agentServerUrl": "http://localhost:8000",
|
|
112
|
+
"agentServerTimeout": 120.0,
|
|
113
|
+
# Admin Config - Prompts (None = use defaults)
|
|
114
|
+
"prompts": {
|
|
115
|
+
"planner": None,
|
|
116
|
+
"python_developer": None,
|
|
117
|
+
"researcher": None,
|
|
118
|
+
"athena_query": None,
|
|
119
|
+
},
|
|
120
|
+
# Admin Config - Feature Toggles
|
|
121
|
+
"useResponsesApi": False,
|
|
122
|
+
"idleTimeout": 300,
|
|
123
|
+
# User Config
|
|
124
|
+
"workspaceRoot": "",
|
|
125
|
+
"temperature": 0.7,
|
|
126
|
+
"autoApprove": False,
|
|
92
127
|
}
|
|
93
128
|
|
|
94
129
|
def get_config(self) -> Dict[str, Any]:
|
|
@@ -121,6 +156,70 @@ class ConfigManager:
|
|
|
121
156
|
self._config[key] = value
|
|
122
157
|
self.save_config(self._config)
|
|
123
158
|
|
|
159
|
+
def update_config(self, updates: Dict[str, Any]):
|
|
160
|
+
"""Update configuration with partial updates (deep merge for nested dicts)"""
|
|
161
|
+
for key, value in updates.items():
|
|
162
|
+
if (
|
|
163
|
+
key in self._config
|
|
164
|
+
and isinstance(self._config[key], dict)
|
|
165
|
+
and isinstance(value, dict)
|
|
166
|
+
):
|
|
167
|
+
# Deep merge for nested dicts
|
|
168
|
+
self._config[key].update(value)
|
|
169
|
+
else:
|
|
170
|
+
self._config[key] = value
|
|
171
|
+
self.save_config(self._config)
|
|
172
|
+
|
|
173
|
+
def get_admin_config(self) -> Dict[str, Any]:
|
|
174
|
+
"""Get admin-related configuration"""
|
|
175
|
+
config = self.get_config()
|
|
176
|
+
admin_keys = [
|
|
177
|
+
"provider",
|
|
178
|
+
"gemini",
|
|
179
|
+
"openai",
|
|
180
|
+
"vllm",
|
|
181
|
+
"summarization",
|
|
182
|
+
"embedding",
|
|
183
|
+
"rag",
|
|
184
|
+
"agentServerUrl",
|
|
185
|
+
"agentServerTimeout",
|
|
186
|
+
"prompts",
|
|
187
|
+
"useResponsesApi",
|
|
188
|
+
"idleTimeout",
|
|
189
|
+
]
|
|
190
|
+
return {k: config.get(k) for k in admin_keys if k in config}
|
|
191
|
+
|
|
192
|
+
def get_user_config(self) -> Dict[str, Any]:
|
|
193
|
+
"""Get user-related configuration"""
|
|
194
|
+
config = self.get_config()
|
|
195
|
+
user_keys = ["workspaceRoot", "temperature", "autoApprove"]
|
|
196
|
+
return {k: config.get(k) for k in user_keys if k in config}
|
|
197
|
+
|
|
198
|
+
def update_admin_config(self, updates: Dict[str, Any]):
|
|
199
|
+
"""Update only admin-related configuration"""
|
|
200
|
+
admin_keys = [
|
|
201
|
+
"provider",
|
|
202
|
+
"gemini",
|
|
203
|
+
"openai",
|
|
204
|
+
"vllm",
|
|
205
|
+
"summarization",
|
|
206
|
+
"embedding",
|
|
207
|
+
"rag",
|
|
208
|
+
"agentServerUrl",
|
|
209
|
+
"agentServerTimeout",
|
|
210
|
+
"prompts",
|
|
211
|
+
"useResponsesApi",
|
|
212
|
+
"idleTimeout",
|
|
213
|
+
]
|
|
214
|
+
filtered_updates = {k: v for k, v in updates.items() if k in admin_keys}
|
|
215
|
+
self.update_config(filtered_updates)
|
|
216
|
+
|
|
217
|
+
def update_user_config(self, updates: Dict[str, Any]):
|
|
218
|
+
"""Update only user-related configuration"""
|
|
219
|
+
user_keys = ["workspaceRoot", "temperature", "autoApprove"]
|
|
220
|
+
filtered_updates = {k: v for k, v in updates.items() if k in user_keys}
|
|
221
|
+
self.update_config(filtered_updates)
|
|
222
|
+
|
|
124
223
|
|
|
125
224
|
def get_config_manager() -> ConfigManager:
|
|
126
225
|
"""Get the singleton ConfigManager instance"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hdsp-agent",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.28",
|
|
4
4
|
"description": "HDSP Agent JupyterLab Extension - Thin client for Agent Server",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jupyter",
|
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
}
|
|
133
133
|
},
|
|
134
134
|
"_build": {
|
|
135
|
-
"load": "static/remoteEntry.
|
|
135
|
+
"load": "static/remoteEntry.08fce819ee32e9d25175.js",
|
|
136
136
|
"extension": "./extension",
|
|
137
137
|
"style": "./style"
|
|
138
138
|
}
|