hdsp-jupyter-extension 2.0.22__py3-none-any.whl → 2.0.23__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 (41) hide show
  1. agent_server/langchain/models/gpt_oss_chat.py +51 -32
  2. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.data}/data/share/jupyter/labextensions/hdsp-agent/build_log.json +1 -1
  3. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.data}/data/share/jupyter/labextensions/hdsp-agent/package.json +2 -2
  4. jupyter_ext/labextension/static/lib_index_js.90f80cb80187de8c5ae5.js → hdsp_jupyter_extension-2.0.23.data/data/share/jupyter/labextensions/hdsp-agent/static/lib_index_js.2d5ea542350862f7c531.js +7 -7
  5. hdsp_jupyter_extension-2.0.23.data/data/share/jupyter/labextensions/hdsp-agent/static/lib_index_js.2d5ea542350862f7c531.js.map +1 -0
  6. hdsp_jupyter_extension-2.0.22.data/data/share/jupyter/labextensions/hdsp-agent/static/remoteEntry.8496e8475f1bd164669b.js → hdsp_jupyter_extension-2.0.23.data/data/share/jupyter/labextensions/hdsp-agent/static/remoteEntry.f0127d8744730f2092c1.js +3 -3
  7. jupyter_ext/labextension/static/remoteEntry.8496e8475f1bd164669b.js.map → hdsp_jupyter_extension-2.0.23.data/data/share/jupyter/labextensions/hdsp-agent/static/remoteEntry.f0127d8744730f2092c1.js.map +1 -1
  8. {hdsp_jupyter_extension-2.0.22.dist-info → hdsp_jupyter_extension-2.0.23.dist-info}/METADATA +1 -1
  9. {hdsp_jupyter_extension-2.0.22.dist-info → hdsp_jupyter_extension-2.0.23.dist-info}/RECORD +39 -39
  10. jupyter_ext/_version.py +1 -1
  11. jupyter_ext/labextension/build_log.json +1 -1
  12. jupyter_ext/labextension/package.json +2 -2
  13. hdsp_jupyter_extension-2.0.22.data/data/share/jupyter/labextensions/hdsp-agent/static/lib_index_js.90f80cb80187de8c5ae5.js → jupyter_ext/labextension/static/lib_index_js.2d5ea542350862f7c531.js +7 -7
  14. jupyter_ext/labextension/static/lib_index_js.2d5ea542350862f7c531.js.map +1 -0
  15. jupyter_ext/labextension/static/{remoteEntry.8496e8475f1bd164669b.js → remoteEntry.f0127d8744730f2092c1.js} +3 -3
  16. hdsp_jupyter_extension-2.0.22.data/data/share/jupyter/labextensions/hdsp-agent/static/remoteEntry.8496e8475f1bd164669b.js.map → jupyter_ext/labextension/static/remoteEntry.f0127d8744730f2092c1.js.map +1 -1
  17. hdsp_jupyter_extension-2.0.22.data/data/share/jupyter/labextensions/hdsp-agent/static/lib_index_js.90f80cb80187de8c5ae5.js.map +0 -1
  18. jupyter_ext/labextension/static/lib_index_js.90f80cb80187de8c5ae5.js.map +0 -1
  19. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.data}/data/etc/jupyter/jupyter_server_config.d/hdsp_jupyter_extension.json +0 -0
  20. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.data}/data/share/jupyter/labextensions/hdsp-agent/install.json +0 -0
  21. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.data}/data/share/jupyter/labextensions/hdsp-agent/static/frontend_styles_index_js.96745acc14125453fba8.js +0 -0
  22. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.data}/data/share/jupyter/labextensions/hdsp-agent/static/frontend_styles_index_js.96745acc14125453fba8.js.map +0 -0
  23. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.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
  24. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.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
  25. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.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
  26. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.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
  27. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.data}/data/share/jupyter/labextensions/hdsp-agent/static/style.js +0 -0
  28. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.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
  29. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.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
  30. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_cache_dist_emotion-cache_browser_development_esm_js.24edcc52a1c014a8a5f0.js +0 -0
  31. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.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
  32. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_react_dist_emotion-react_browser_development_esm_js.19ecf6babe00caff6b8a.js +0 -0
  33. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.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
  34. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_emotion_styled_dist_emotion-styled_browser_development_esm_js.661fb5836f4978a7c6e1.js +0 -0
  35. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.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
  36. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_index_js.985697e0162d8d088ca2.js +0 -0
  37. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_index_js.985697e0162d8d088ca2.js.map +0 -0
  38. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_utils_createSvgIcon_js.1f5038488cdfd8b3a85d.js +0 -0
  39. {hdsp_jupyter_extension-2.0.22.data → hdsp_jupyter_extension-2.0.23.data}/data/share/jupyter/labextensions/hdsp-agent/static/vendors-node_modules_mui_material_utils_createSvgIcon_js.1f5038488cdfd8b3a85d.js.map +0 -0
  40. {hdsp_jupyter_extension-2.0.22.dist-info → hdsp_jupyter_extension-2.0.23.dist-info}/WHEEL +0 -0
  41. {hdsp_jupyter_extension-2.0.22.dist-info → hdsp_jupyter_extension-2.0.23.dist-info}/licenses/LICENSE +0 -0
@@ -98,7 +98,9 @@ class ChatGPTOSS(BaseChatModel):
98
98
  "function": {
99
99
  "name": tool.name,
100
100
  "description": tool.description or "",
101
- "parameters": tool.args_schema.schema() if tool.args_schema else {"type": "object", "properties": {}},
101
+ "parameters": tool.args_schema.schema()
102
+ if tool.args_schema
103
+ else {"type": "object", "properties": {}},
102
104
  },
103
105
  }
104
106
  formatted_tools.append(tool_schema)
@@ -116,6 +118,7 @@ class ChatGPTOSS(BaseChatModel):
116
118
  temperature=self.temperature,
117
119
  max_tokens=self.max_tokens,
118
120
  streaming=self.streaming,
121
+ callbacks=self.callbacks, # Preserve callbacks (e.g., LLMTraceLogger)
119
122
  )
120
123
  new_instance._tools = formatted_tools
121
124
  new_instance._tool_choice = tool_choice
@@ -131,15 +134,19 @@ class ChatGPTOSS(BaseChatModel):
131
134
  for msg in messages:
132
135
  if isinstance(msg, SystemMessage):
133
136
  # Convert system to developer for gpt-oss instruction hierarchy
134
- result.append({
135
- "role": "developer",
136
- "content": msg.content,
137
- })
137
+ result.append(
138
+ {
139
+ "role": "developer",
140
+ "content": msg.content,
141
+ }
142
+ )
138
143
  elif isinstance(msg, HumanMessage):
139
- result.append({
140
- "role": "user",
141
- "content": msg.content,
142
- })
144
+ result.append(
145
+ {
146
+ "role": "user",
147
+ "content": msg.content,
148
+ }
149
+ )
143
150
  elif isinstance(msg, AIMessage):
144
151
  ai_msg: Dict[str, Any] = {
145
152
  "role": "assistant",
@@ -154,25 +161,31 @@ class ChatGPTOSS(BaseChatModel):
154
161
  "type": "function",
155
162
  "function": {
156
163
  "name": tc["name"],
157
- "arguments": json.dumps(tc["args"]) if isinstance(tc["args"], dict) else tc["args"],
164
+ "arguments": json.dumps(tc["args"])
165
+ if isinstance(tc["args"], dict)
166
+ else tc["args"],
158
167
  },
159
168
  }
160
169
  for tc in tool_calls
161
170
  ]
162
171
  result.append(ai_msg)
163
172
  elif isinstance(msg, ToolMessage):
164
- result.append({
165
- "role": "tool",
166
- "tool_call_id": msg.tool_call_id,
167
- "content": msg.content,
168
- })
173
+ result.append(
174
+ {
175
+ "role": "tool",
176
+ "tool_call_id": msg.tool_call_id,
177
+ "content": msg.content,
178
+ }
179
+ )
169
180
  else:
170
181
  # Fallback for other message types
171
182
  role = getattr(msg, "role", "user")
172
- result.append({
173
- "role": role,
174
- "content": msg.content,
175
- })
183
+ result.append(
184
+ {
185
+ "role": role,
186
+ "content": msg.content,
187
+ }
188
+ )
176
189
 
177
190
  return result
178
191
 
@@ -204,12 +217,14 @@ class ChatGPTOSS(BaseChatModel):
204
217
  args = json.loads(tc.function.arguments)
205
218
  except json.JSONDecodeError:
206
219
  args = {"raw": tc.function.arguments}
207
- tool_calls_list.append({
208
- "name": tc.function.name,
209
- "args": args,
210
- "id": tc.id,
211
- "type": "tool_call",
212
- })
220
+ tool_calls_list.append(
221
+ {
222
+ "name": tc.function.name,
223
+ "args": args,
224
+ "id": tc.id,
225
+ "type": "tool_call",
226
+ }
227
+ )
213
228
 
214
229
  ai_message = AIMessage(
215
230
  content=content,
@@ -260,7 +275,9 @@ class ChatGPTOSS(BaseChatModel):
260
275
  request_kwargs["tool_choice"] = self._tool_choice
261
276
 
262
277
  # Make API call
263
- logger.debug(f"ChatGPTOSS request: model={self.model}, messages_count={len(openai_messages)}")
278
+ logger.debug(
279
+ f"ChatGPTOSS request: model={self.model}, messages_count={len(openai_messages)}"
280
+ )
264
281
  response = self.client.chat.completions.create(**request_kwargs)
265
282
 
266
283
  return self._create_chat_result(response)
@@ -328,12 +345,14 @@ class ChatGPTOSS(BaseChatModel):
328
345
  tool_calls_accum[idx]["arguments"] += tc.function.arguments
329
346
 
330
347
  # Build tool call chunk for LangChain
331
- tool_call_chunks.append({
332
- "index": idx,
333
- "id": tool_calls_accum[idx]["id"],
334
- "name": tool_calls_accum[idx]["name"],
335
- "args": tool_calls_accum[idx]["arguments"],
336
- })
348
+ tool_call_chunks.append(
349
+ {
350
+ "index": idx,
351
+ "id": tool_calls_accum[idx]["id"],
352
+ "name": tool_calls_accum[idx]["name"],
353
+ "args": tool_calls_accum[idx]["arguments"],
354
+ }
355
+ )
337
356
 
338
357
  # Create chunk message
339
358
  chunk_message = AIMessageChunk(
@@ -722,7 +722,7 @@
722
722
  "@mui/material": {},
723
723
  "react-markdown": {},
724
724
  "hdsp-agent": {
725
- "version": "2.0.22",
725
+ "version": "2.0.23",
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.22",
3
+ "version": "2.0.23",
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.8496e8475f1bd164669b.js",
135
+ "load": "static/remoteEntry.f0127d8744730f2092c1.js",
136
136
  "extension": "./extension",
137
137
  "style": "./style"
138
138
  }
@@ -892,7 +892,7 @@ const ChatPanel = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(({ apiServic
892
892
  const successMessage = {
893
893
  id: makeMessageId('apply-success'),
894
894
  role: 'assistant',
895
- content: `${_utils_icons__WEBPACK_IMPORTED_MODULE_8__.Icons.success} **${fix.path}** 파일이 수정되었습니다.\n\n파일 에디터에서 변경사항을 확인하세요.`,
895
+ content: `✅ **${fix.path}** 파일이 수정되었습니다.\n\n파일 에디터에서 변경사항을 확인하세요.`,
896
896
  timestamp: Date.now(),
897
897
  };
898
898
  setMessages(prev => [...prev, successMessage]);
@@ -908,7 +908,7 @@ const ChatPanel = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(({ apiServic
908
908
  const errorMessage = {
909
909
  id: makeMessageId('error'),
910
910
  role: 'assistant',
911
- content: `${_utils_icons__WEBPACK_IMPORTED_MODULE_8__.Icons.warning} ${message}`,
911
+ content: `⚠️ ${message}`,
912
912
  timestamp: Date.now(),
913
913
  };
914
914
  setMessages(prev => [...prev, errorMessage]);
@@ -1207,7 +1207,7 @@ const ChatPanel = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(({ apiServic
1207
1207
  const question = interrupt.args?.question || '응답을 입력하세요...';
1208
1208
  const options = interrupt.args?.options;
1209
1209
  const inputType = interrupt.args?.input_type || 'text';
1210
- let questionContent = `${_utils_icons__WEBPACK_IMPORTED_MODULE_8__.Icons.question} **${question}**`;
1210
+ let questionContent = `❓ **${question}**`;
1211
1211
  if (options && options.length > 0) {
1212
1212
  questionContent += '\n\n선택지:\n' + options.map((opt, i) => `${i + 1}. ${opt}`).join('\n');
1213
1213
  }
@@ -2025,7 +2025,7 @@ const ChatPanel = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(({ apiServic
2025
2025
  const outputMessage = {
2026
2026
  id: messageId,
2027
2027
  role: 'system',
2028
- content: `${_utils_icons__WEBPACK_IMPORTED_MODULE_8__.Icons.terminal} ${command}\n`,
2028
+ content: `${command}\n`,
2029
2029
  timestamp: Date.now(),
2030
2030
  metadata: {
2031
2031
  kind: 'shell-output',
@@ -2488,7 +2488,7 @@ const ChatPanel = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(({ apiServic
2488
2488
  const question = nextInterrupt.args?.question || '응답을 입력하세요...';
2489
2489
  const options = nextInterrupt.args?.options;
2490
2490
  const inputType = nextInterrupt.args?.input_type || 'text';
2491
- let questionContent = `${_utils_icons__WEBPACK_IMPORTED_MODULE_8__.Icons.question} **${question}**`;
2491
+ let questionContent = `❓ **${question}**`;
2492
2492
  if (options && options.length > 0) {
2493
2493
  questionContent += '\n\n선택지:\n' + options.map((opt, i) => `${i + 1}. ${opt}`).join('\n');
2494
2494
  }
@@ -3037,7 +3037,7 @@ const ChatPanel = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(({ apiServic
3037
3037
  const question = nextInterrupt.args?.question || '응답을 입력하세요...';
3038
3038
  const options = nextInterrupt.args?.options;
3039
3039
  const inputType = nextInterrupt.args?.input_type || 'text';
3040
- let questionContent = `${_utils_icons__WEBPACK_IMPORTED_MODULE_8__.Icons.question} **${question}**`;
3040
+ let questionContent = `❓ **${question}**`;
3041
3041
  if (options && options.length > 0) {
3042
3042
  questionContent += '\n\n선택지:\n' + options.map((opt, i) => `${i + 1}. ${opt}`).join('\n');
3043
3043
  }
@@ -11878,4 +11878,4 @@ __webpack_require__.r(__webpack_exports__);
11878
11878
  /***/ }
11879
11879
 
11880
11880
  }]);
11881
- //# sourceMappingURL=lib_index_js.90f80cb80187de8c5ae5.js.map
11881
+ //# sourceMappingURL=lib_index_js.2d5ea542350862f7c531.js.map