hdsp-jupyter-extension 2.0.27__py3-none-any.whl → 2.0.29__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.
Files changed (76) hide show
  1. agent_server/config/__init__.py +5 -0
  2. agent_server/config/server_config.py +213 -0
  3. agent_server/context_providers/__init__.py +4 -2
  4. agent_server/context_providers/actions.py +73 -7
  5. agent_server/context_providers/file.py +23 -23
  6. agent_server/core/__init__.py +2 -2
  7. agent_server/core/llm_service.py +2 -3
  8. agent_server/langchain/__init__.py +2 -2
  9. agent_server/langchain/agent.py +18 -251
  10. agent_server/langchain/agent_factory.py +26 -4
  11. agent_server/langchain/agent_prompts/planner_prompt.py +22 -31
  12. agent_server/langchain/custom_middleware.py +268 -43
  13. agent_server/langchain/llm_factory.py +102 -54
  14. agent_server/langchain/logging_utils.py +1 -1
  15. agent_server/langchain/middleware/__init__.py +5 -0
  16. agent_server/langchain/middleware/content_injection_middleware.py +110 -0
  17. agent_server/langchain/middleware/subagent_events.py +88 -9
  18. agent_server/langchain/middleware/subagent_middleware.py +501 -245
  19. agent_server/langchain/prompts.py +5 -22
  20. agent_server/langchain/state_schema.py +44 -0
  21. agent_server/langchain/tools/jupyter_tools.py +4 -5
  22. agent_server/langchain/tools/tool_registry.py +6 -0
  23. agent_server/main.py +4 -4
  24. agent_server/routers/agent.py +2 -2
  25. agent_server/routers/chat.py +334 -28
  26. agent_server/routers/config.py +197 -11
  27. agent_server/routers/config_schema.py +254 -0
  28. agent_server/routers/context.py +31 -8
  29. agent_server/routers/langchain_agent.py +348 -209
  30. hdsp_agent_core/managers/config_manager.py +60 -11
  31. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.data}/data/share/jupyter/labextensions/hdsp-agent/build_log.json +1 -1
  32. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.data}/data/share/jupyter/labextensions/hdsp-agent/package.json +2 -2
  33. hdsp_jupyter_extension-2.0.27.data/data/share/jupyter/labextensions/hdsp-agent/static/frontend_styles_index_js.b5e4416b4e07ec087aad.js → hdsp_jupyter_extension-2.0.29.data/data/share/jupyter/labextensions/hdsp-agent/static/frontend_styles_index_js.f2eca2f8fa682eb21f72.js +488 -25
  34. hdsp_jupyter_extension-2.0.29.data/data/share/jupyter/labextensions/hdsp-agent/static/frontend_styles_index_js.f2eca2f8fa682eb21f72.js.map +1 -0
  35. jupyter_ext/labextension/static/lib_index_js.67505497667f9c0a763d.js → hdsp_jupyter_extension-2.0.29.data/data/share/jupyter/labextensions/hdsp-agent/static/lib_index_js.cc0a7158a5e3de7f22f7.js +1327 -1054
  36. hdsp_jupyter_extension-2.0.29.data/data/share/jupyter/labextensions/hdsp-agent/static/lib_index_js.cc0a7158a5e3de7f22f7.js.map +1 -0
  37. hdsp_jupyter_extension-2.0.27.data/data/share/jupyter/labextensions/hdsp-agent/static/remoteEntry.4ab73bb5068405670214.js → hdsp_jupyter_extension-2.0.29.data/data/share/jupyter/labextensions/hdsp-agent/static/remoteEntry.bfff374b5cc6a57e16d2.js +3 -3
  38. jupyter_ext/labextension/static/remoteEntry.4ab73bb5068405670214.js.map → hdsp_jupyter_extension-2.0.29.data/data/share/jupyter/labextensions/hdsp-agent/static/remoteEntry.bfff374b5cc6a57e16d2.js.map +1 -1
  39. {hdsp_jupyter_extension-2.0.27.dist-info → hdsp_jupyter_extension-2.0.29.dist-info}/METADATA +1 -1
  40. {hdsp_jupyter_extension-2.0.27.dist-info → hdsp_jupyter_extension-2.0.29.dist-info}/RECORD +71 -67
  41. jupyter_ext/_version.py +1 -1
  42. jupyter_ext/handlers.py +41 -0
  43. jupyter_ext/labextension/build_log.json +1 -1
  44. jupyter_ext/labextension/package.json +2 -2
  45. jupyter_ext/labextension/static/{frontend_styles_index_js.b5e4416b4e07ec087aad.js → frontend_styles_index_js.f2eca2f8fa682eb21f72.js} +488 -25
  46. jupyter_ext/labextension/static/frontend_styles_index_js.f2eca2f8fa682eb21f72.js.map +1 -0
  47. hdsp_jupyter_extension-2.0.27.data/data/share/jupyter/labextensions/hdsp-agent/static/lib_index_js.67505497667f9c0a763d.js → jupyter_ext/labextension/static/lib_index_js.cc0a7158a5e3de7f22f7.js +1327 -1054
  48. jupyter_ext/labextension/static/lib_index_js.cc0a7158a5e3de7f22f7.js.map +1 -0
  49. jupyter_ext/labextension/static/{remoteEntry.4ab73bb5068405670214.js → remoteEntry.bfff374b5cc6a57e16d2.js} +3 -3
  50. hdsp_jupyter_extension-2.0.27.data/data/share/jupyter/labextensions/hdsp-agent/static/remoteEntry.4ab73bb5068405670214.js.map → jupyter_ext/labextension/static/remoteEntry.bfff374b5cc6a57e16d2.js.map +1 -1
  51. agent_server/langchain/middleware/description_injector.py +0 -150
  52. hdsp_jupyter_extension-2.0.27.data/data/share/jupyter/labextensions/hdsp-agent/static/frontend_styles_index_js.b5e4416b4e07ec087aad.js.map +0 -1
  53. hdsp_jupyter_extension-2.0.27.data/data/share/jupyter/labextensions/hdsp-agent/static/lib_index_js.67505497667f9c0a763d.js.map +0 -1
  54. jupyter_ext/labextension/static/frontend_styles_index_js.b5e4416b4e07ec087aad.js.map +0 -1
  55. jupyter_ext/labextension/static/lib_index_js.67505497667f9c0a763d.js.map +0 -1
  56. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.data}/data/etc/jupyter/jupyter_server_config.d/hdsp_jupyter_extension.json +0 -0
  57. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.data}/data/share/jupyter/labextensions/hdsp-agent/install.json +0 -0
  58. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.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
  59. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.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
  60. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.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
  61. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.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
  62. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.data}/data/share/jupyter/labextensions/hdsp-agent/static/style.js +0 -0
  63. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.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
  64. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.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
  65. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_cache_dist_emotion-cache_browser_development_esm_js.24edcc52a1c014a8a5f0.js +0 -0
  66. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.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
  67. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_react_dist_emotion-react_browser_development_esm_js.19ecf6babe00caff6b8a.js +0 -0
  68. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.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
  69. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_styled_dist_emotion-styled_browser_development_esm_js.661fb5836f4978a7c6e1.js +0 -0
  70. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.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
  71. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_index_js.985697e0162d8d088ca2.js +0 -0
  72. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_index_js.985697e0162d8d088ca2.js.map +0 -0
  73. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_utils_createSvgIcon_js.1f5038488cdfd8b3a85d.js +0 -0
  74. {hdsp_jupyter_extension-2.0.27.data → hdsp_jupyter_extension-2.0.29.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_utils_createSvgIcon_js.1f5038488cdfd8b3a85d.js.map +0 -0
  75. {hdsp_jupyter_extension-2.0.27.dist-info → hdsp_jupyter_extension-2.0.29.dist-info}/WHEEL +0 -0
  76. {hdsp_jupyter_extension-2.0.27.dist-info → hdsp_jupyter_extension-2.0.29.dist-info}/licenses/LICENSE +0 -0
@@ -1,7 +1,14 @@
1
1
  """
2
- Configuration Manager - Handle extension settings persistence
2
+ Configuration Manager - Jupyter Client Connection Settings
3
3
 
4
- Singleton manager for configuration persistence across sessions.
4
+ This config manager handles only connection settings for Jupyter clients:
5
+ - agentServerUrl: URL of the Agent Server to connect to
6
+ - embed_agent_server: Whether to run Agent Server in embedded mode
7
+
8
+ All LLM settings (provider, API keys, models, prompts) are managed by
9
+ the Agent Server's ServerConfigManager (~/.hdsp_agent/server_config.json).
10
+
11
+ User preferences (workspaceRoot, autoApprove) are stored in browser localStorage.
5
12
  """
6
13
 
7
14
  import json
@@ -79,16 +86,16 @@ class ConfigManager:
79
86
  return self._default_config()
80
87
 
81
88
  def _default_config(self) -> Dict[str, Any]:
82
- """Get default configuration"""
89
+ """Get default configuration for Jupyter client.
90
+
91
+ NOTE: This config only contains connection settings.
92
+ All LLM settings are managed by the Agent Server (see agent_server/config/server_config.py).
93
+ User preferences (workspaceRoot, autoApprove) are stored in browser localStorage.
94
+ """
83
95
  return {
84
- "provider": "gemini",
85
- "gemini": {"apiKey": "", "model": "gemini-2.5-pro"},
86
- "vllm": {
87
- "endpoint": "http://localhost:8000",
88
- "apiKey": "",
89
- "model": "meta-llama/Llama-2-7b-chat-hf",
90
- },
91
- "openai": {"apiKey": "", "model": "gpt-4"},
96
+ # Connection settings
97
+ "agentServerUrl": "http://localhost:8000",
98
+ "embed_agent_server": False, # If True, Jupyter runs embedded Agent Server
92
99
  }
93
100
 
94
101
  def get_config(self) -> Dict[str, Any]:
@@ -121,6 +128,48 @@ class ConfigManager:
121
128
  self._config[key] = value
122
129
  self.save_config(self._config)
123
130
 
131
+ def update_config(self, updates: Dict[str, Any]):
132
+ """Update configuration with partial updates (deep merge for nested dicts)"""
133
+ for key, value in updates.items():
134
+ if (
135
+ key in self._config
136
+ and isinstance(self._config[key], dict)
137
+ and isinstance(value, dict)
138
+ ):
139
+ # Deep merge for nested dicts
140
+ self._config[key].update(value)
141
+ else:
142
+ self._config[key] = value
143
+ self.save_config(self._config)
144
+
145
+ def get_agent_server_url(self) -> str:
146
+ """Get Agent Server URL for connection."""
147
+ return self.get("agentServerUrl", "http://localhost:8000")
148
+
149
+ def is_embedded_mode(self) -> bool:
150
+ """Check if running in embedded mode (Jupyter runs Agent Server)."""
151
+ return self.get("embed_agent_server", False)
152
+
153
+ # Legacy methods for backward compatibility (deprecated)
154
+ def get_admin_config(self) -> Dict[str, Any]:
155
+ """DEPRECATED: Admin config is now on Agent Server.
156
+ Use Agent Server's /config/admin API instead."""
157
+ return {"agentServerUrl": self.get_agent_server_url()}
158
+
159
+ def get_user_config(self) -> Dict[str, Any]:
160
+ """DEPRECATED: User config is now in browser localStorage."""
161
+ return {}
162
+
163
+ def update_admin_config(self, updates: Dict[str, Any]):
164
+ """DEPRECATED: Use Agent Server's /config/admin API."""
165
+ # Only allow updating agentServerUrl
166
+ if "agentServerUrl" in updates:
167
+ self.set("agentServerUrl", updates["agentServerUrl"])
168
+
169
+ def update_user_config(self, updates: Dict[str, Any]):
170
+ """DEPRECATED: User config is in browser localStorage."""
171
+ pass
172
+
124
173
 
125
174
  def get_config_manager() -> ConfigManager:
126
175
  """Get the singleton ConfigManager instance"""
@@ -722,7 +722,7 @@
722
722
  "@mui/material": {},
723
723
  "react-markdown": {},
724
724
  "hdsp-agent": {
725
- "version": "2.0.27",
725
+ "version": "2.0.29",
726
726
  "singleton": true,
727
727
  "import": "/Users/a421721/Desktop/hdsp/hdsp_agent/extensions/jupyter/lib/index.js"
728
728
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hdsp-agent",
3
- "version": "2.0.27",
3
+ "version": "2.0.29",
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.4ab73bb5068405670214.js",
135
+ "load": "static/remoteEntry.bfff374b5cc6a57e16d2.js",
136
136
  "extension": "./extension",
137
137
  "style": "./style"
138
138
  }