pygpt-net 2.7.5__py3-none-any.whl → 2.7.7__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 (82) hide show
  1. pygpt_net/CHANGELOG.txt +14 -0
  2. pygpt_net/__init__.py +4 -4
  3. pygpt_net/controller/chat/remote_tools.py +3 -9
  4. pygpt_net/controller/chat/stream.py +2 -2
  5. pygpt_net/controller/chat/{handler/worker.py → stream_worker.py} +20 -64
  6. pygpt_net/controller/debug/fixtures.py +3 -2
  7. pygpt_net/controller/files/files.py +65 -4
  8. pygpt_net/core/debug/models.py +2 -2
  9. pygpt_net/core/filesystem/url.py +4 -1
  10. pygpt_net/core/render/web/body.py +3 -2
  11. pygpt_net/core/types/chunk.py +27 -0
  12. pygpt_net/data/config/config.json +14 -4
  13. pygpt_net/data/config/models.json +192 -4
  14. pygpt_net/data/config/settings.json +126 -36
  15. pygpt_net/data/js/app/template.js +1 -1
  16. pygpt_net/data/js/app.min.js +2 -2
  17. pygpt_net/data/locale/locale.de.ini +5 -0
  18. pygpt_net/data/locale/locale.en.ini +35 -8
  19. pygpt_net/data/locale/locale.es.ini +5 -0
  20. pygpt_net/data/locale/locale.fr.ini +5 -0
  21. pygpt_net/data/locale/locale.it.ini +5 -0
  22. pygpt_net/data/locale/locale.pl.ini +5 -0
  23. pygpt_net/data/locale/locale.uk.ini +5 -0
  24. pygpt_net/data/locale/locale.zh.ini +5 -0
  25. pygpt_net/data/locale/plugin.cmd_mouse_control.en.ini +2 -2
  26. pygpt_net/item/ctx.py +3 -5
  27. pygpt_net/js_rc.py +2449 -2447
  28. pygpt_net/plugin/cmd_mouse_control/config.py +8 -7
  29. pygpt_net/plugin/cmd_mouse_control/plugin.py +3 -4
  30. pygpt_net/plugin/cmd_mouse_control/worker.py +2 -1
  31. pygpt_net/plugin/cmd_mouse_control/worker_sandbox.py +2 -1
  32. pygpt_net/provider/api/anthropic/__init__.py +16 -9
  33. pygpt_net/provider/api/anthropic/chat.py +259 -11
  34. pygpt_net/provider/api/anthropic/computer.py +844 -0
  35. pygpt_net/provider/api/anthropic/remote_tools.py +172 -0
  36. pygpt_net/{controller/chat/handler/anthropic_stream.py → provider/api/anthropic/stream.py} +24 -10
  37. pygpt_net/provider/api/anthropic/tools.py +32 -77
  38. pygpt_net/provider/api/anthropic/utils.py +30 -0
  39. pygpt_net/provider/api/google/__init__.py +6 -5
  40. pygpt_net/provider/api/google/chat.py +3 -8
  41. pygpt_net/{controller/chat/handler/google_stream.py → provider/api/google/stream.py} +1 -1
  42. pygpt_net/provider/api/google/utils.py +185 -0
  43. pygpt_net/{controller/chat/handler → provider/api/langchain}/__init__.py +0 -0
  44. pygpt_net/{controller/chat/handler/langchain_stream.py → provider/api/langchain/stream.py} +1 -1
  45. pygpt_net/provider/api/llama_index/__init__.py +0 -0
  46. pygpt_net/{controller/chat/handler/llamaindex_stream.py → provider/api/llama_index/stream.py} +1 -1
  47. pygpt_net/provider/api/openai/__init__.py +7 -3
  48. pygpt_net/provider/api/openai/image.py +2 -2
  49. pygpt_net/provider/api/openai/responses.py +0 -0
  50. pygpt_net/{controller/chat/handler/openai_stream.py → provider/api/openai/stream.py} +1 -1
  51. pygpt_net/provider/api/openai/utils.py +69 -3
  52. pygpt_net/provider/api/x_ai/__init__.py +117 -17
  53. pygpt_net/provider/api/x_ai/chat.py +272 -102
  54. pygpt_net/provider/api/x_ai/image.py +149 -47
  55. pygpt_net/provider/api/x_ai/{remote.py → remote_tools.py} +165 -70
  56. pygpt_net/provider/api/x_ai/responses.py +507 -0
  57. pygpt_net/provider/api/x_ai/stream.py +715 -0
  58. pygpt_net/provider/api/x_ai/tools.py +59 -8
  59. pygpt_net/{controller/chat/handler → provider/api/x_ai}/utils.py +1 -2
  60. pygpt_net/provider/api/x_ai/vision.py +1 -4
  61. pygpt_net/provider/core/config/patch.py +22 -1
  62. pygpt_net/provider/core/model/patch.py +26 -1
  63. pygpt_net/tools/image_viewer/ui/dialogs.py +300 -13
  64. pygpt_net/tools/text_editor/ui/dialogs.py +3 -2
  65. pygpt_net/tools/text_editor/ui/widgets.py +5 -1
  66. pygpt_net/ui/base/context_menu.py +44 -1
  67. pygpt_net/ui/layout/toolbox/indexes.py +22 -19
  68. pygpt_net/ui/layout/toolbox/model.py +28 -5
  69. pygpt_net/ui/widget/dialog/base.py +16 -5
  70. pygpt_net/ui/widget/image/display.py +25 -8
  71. pygpt_net/ui/widget/tabs/output.py +9 -1
  72. pygpt_net/ui/widget/textarea/editor.py +14 -1
  73. pygpt_net/ui/widget/textarea/input.py +20 -7
  74. pygpt_net/ui/widget/textarea/notepad.py +24 -1
  75. pygpt_net/ui/widget/textarea/output.py +23 -1
  76. pygpt_net/ui/widget/textarea/web.py +16 -1
  77. {pygpt_net-2.7.5.dist-info → pygpt_net-2.7.7.dist-info}/METADATA +16 -2
  78. {pygpt_net-2.7.5.dist-info → pygpt_net-2.7.7.dist-info}/RECORD +80 -73
  79. pygpt_net/controller/chat/handler/xai_stream.py +0 -135
  80. {pygpt_net-2.7.5.dist-info → pygpt_net-2.7.7.dist-info}/LICENSE +0 -0
  81. {pygpt_net-2.7.5.dist-info → pygpt_net-2.7.7.dist-info}/WHEEL +0 -0
  82. {pygpt_net-2.7.5.dist-info → pygpt_net-2.7.7.dist-info}/entry_points.txt +0 -0
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.7.5",
4
- "app.version": "2.7.5",
5
- "updated_at": "2026-01-03T00:00:00"
3
+ "version": "2.7.7",
4
+ "app.version": "2.7.7",
5
+ "updated_at": "2026-01-05T00:00:00"
6
6
  },
7
7
  "items": {
8
8
  "SpeakLeash/bielik-11b-v2.3-instruct:Q4_K_M": {
@@ -3192,11 +3192,199 @@
3192
3192
  ]
3193
3193
  },
3194
3194
  "ctx": 256000,
3195
- "tokens": 16384,
3195
+ "tokens": 0,
3196
+ "default": false,
3197
+ "input": [
3198
+ "text"
3199
+ ],
3200
+ "output": [
3201
+ "text"
3202
+ ],
3203
+ "extra": {},
3204
+ "imported": false,
3205
+ "provider": "x_ai",
3206
+ "tool_calls": true
3207
+ },
3208
+ "grok-4-1-fast-non-reasoning": {
3209
+ "id": "grok-4-1-fast-non-reasoning",
3210
+ "name": "grok-4-1-fast-non-reasoning",
3211
+ "mode": [
3212
+ "chat",
3213
+ "llama_index",
3214
+ "agent_llama",
3215
+ "agent_openai",
3216
+ "agent",
3217
+ "expert"
3218
+ ],
3219
+ "llama_index": {
3220
+ "args": [
3221
+ {
3222
+ "name": "model",
3223
+ "value": "grok-4-1-fast-non-reasoning",
3224
+ "type": "str"
3225
+ }
3226
+ ],
3227
+ "env": [
3228
+ {
3229
+ "name": "OPENAI_API_KEY",
3230
+ "value": "{api_key_xai}",
3231
+ "type": "str"
3232
+ },
3233
+ {
3234
+ "name": "OPENAI_API_BASE",
3235
+ "value": "{api_endpoint_xai}",
3236
+ "type": "str"
3237
+ }
3238
+ ]
3239
+ },
3240
+ "ctx": 256000,
3241
+ "tokens": 0,
3242
+ "default": false,
3243
+ "input": [
3244
+ "text",
3245
+ "image"
3246
+ ],
3247
+ "output": [
3248
+ "text"
3249
+ ],
3250
+ "extra": {},
3251
+ "imported": false,
3252
+ "provider": "x_ai",
3253
+ "tool_calls": true
3254
+ },
3255
+ "grok-4-1-fast-reasoning": {
3256
+ "id": "grok-4-1-fast-reasoning",
3257
+ "name": "grok-4-1-fast-reasoning",
3258
+ "mode": [
3259
+ "chat",
3260
+ "llama_index",
3261
+ "agent_llama",
3262
+ "agent_openai",
3263
+ "agent",
3264
+ "expert"
3265
+ ],
3266
+ "llama_index": {
3267
+ "args": [
3268
+ {
3269
+ "name": "model",
3270
+ "value": "grok-4-1-fast-reasoning",
3271
+ "type": "str"
3272
+ }
3273
+ ],
3274
+ "env": [
3275
+ {
3276
+ "name": "OPENAI_API_KEY",
3277
+ "value": "{api_key_xai}",
3278
+ "type": "str"
3279
+ },
3280
+ {
3281
+ "name": "OPENAI_API_BASE",
3282
+ "value": "{api_endpoint_xai}",
3283
+ "type": "str"
3284
+ }
3285
+ ]
3286
+ },
3287
+ "ctx": 256000,
3288
+ "tokens": 0,
3196
3289
  "default": false,
3197
3290
  "input": [
3291
+ "text",
3292
+ "image"
3293
+ ],
3294
+ "output": [
3198
3295
  "text"
3199
3296
  ],
3297
+ "extra": {},
3298
+ "imported": false,
3299
+ "provider": "x_ai",
3300
+ "tool_calls": true
3301
+ },
3302
+ "grok-4-fast-non-reasoning": {
3303
+ "id": "grok-4-fast-non-reasoning",
3304
+ "name": "grok-4-fast-non-reasoning",
3305
+ "mode": [
3306
+ "chat",
3307
+ "llama_index",
3308
+ "agent_llama",
3309
+ "agent_openai",
3310
+ "agent",
3311
+ "expert"
3312
+ ],
3313
+ "llama_index": {
3314
+ "args": [
3315
+ {
3316
+ "name": "model",
3317
+ "value": "grok-4-fast-non-reasoning",
3318
+ "type": "str"
3319
+ }
3320
+ ],
3321
+ "env": [
3322
+ {
3323
+ "name": "OPENAI_API_KEY",
3324
+ "value": "{api_key_xai}",
3325
+ "type": "str"
3326
+ },
3327
+ {
3328
+ "name": "OPENAI_API_BASE",
3329
+ "value": "{api_endpoint_xai}",
3330
+ "type": "str"
3331
+ }
3332
+ ]
3333
+ },
3334
+ "ctx": 256000,
3335
+ "tokens": 0,
3336
+ "default": false,
3337
+ "input": [
3338
+ "text",
3339
+ "image"
3340
+ ],
3341
+ "output": [
3342
+ "text"
3343
+ ],
3344
+ "extra": {},
3345
+ "imported": false,
3346
+ "provider": "x_ai",
3347
+ "tool_calls": true
3348
+ },
3349
+ "grok-4-fast-reasoning": {
3350
+ "id": "grok-4-fast-reasoning",
3351
+ "name": "grok-4-fast-reasoning",
3352
+ "mode": [
3353
+ "chat",
3354
+ "llama_index",
3355
+ "agent_llama",
3356
+ "agent_openai",
3357
+ "agent",
3358
+ "expert"
3359
+ ],
3360
+ "llama_index": {
3361
+ "args": [
3362
+ {
3363
+ "name": "model",
3364
+ "value": "grok-4-fast-reasoning",
3365
+ "type": "str"
3366
+ }
3367
+ ],
3368
+ "env": [
3369
+ {
3370
+ "name": "OPENAI_API_KEY",
3371
+ "value": "{api_key_xai}",
3372
+ "type": "str"
3373
+ },
3374
+ {
3375
+ "name": "OPENAI_API_BASE",
3376
+ "value": "{api_endpoint_xai}",
3377
+ "type": "str"
3378
+ }
3379
+ ]
3380
+ },
3381
+ "ctx": 256000,
3382
+ "tokens": 0,
3383
+ "default": false,
3384
+ "input": [
3385
+ "text",
3386
+ "image"
3387
+ ],
3200
3388
  "output": [
3201
3389
  "text"
3202
3390
  ],
@@ -974,12 +974,26 @@
974
974
  "use": "models",
975
975
  "slider": false,
976
976
  "label": "settings.ctx.auto_summary.model",
977
+ "description": "settings.ctx.auto_summary.model.desc",
977
978
  "value": "gpt-3.5-turbo-1106",
978
979
  "min": null,
979
980
  "max": null,
980
981
  "multiplier": null,
981
982
  "step": null,
982
983
  "advanced": false
984
+ },
985
+ "ctx.auto_summary": {
986
+ "section": "ctx",
987
+ "type": "bool",
988
+ "slider": false,
989
+ "label": "settings.ctx.auto_summary",
990
+ "description": "settings.ctx.auto_summary.desc",
991
+ "value": true,
992
+ "min": null,
993
+ "max": null,
994
+ "multiplier": null,
995
+ "step": null,
996
+ "advanced": false
983
997
  },
984
998
  "ctx.records.folders.top": {
985
999
  "section": "ctx",
@@ -1065,18 +1079,6 @@
1065
1079
  "step": null,
1066
1080
  "advanced": false
1067
1081
  },
1068
- "ctx.auto_summary": {
1069
- "section": "ctx",
1070
- "type": "bool",
1071
- "slider": false,
1072
- "label": "settings.ctx.auto_summary",
1073
- "value": true,
1074
- "min": null,
1075
- "max": null,
1076
- "multiplier": null,
1077
- "step": null,
1078
- "advanced": false
1079
- },
1080
1082
  "lock_modes": {
1081
1083
  "section": "ctx",
1082
1084
  "type": "bool",
@@ -1160,9 +1162,9 @@
1160
1162
  "slider": true,
1161
1163
  "label": "settings.max_output_tokens",
1162
1164
  "description": "settings.zero.limit.desc",
1163
- "value": 50,
1165
+ "value": 64000,
1164
1166
  "min": 0,
1165
- "max": 32000,
1167
+ "max": 2000000,
1166
1168
  "multiplier": 1,
1167
1169
  "step": 1,
1168
1170
  "advanced": false
@@ -1173,9 +1175,9 @@
1173
1175
  "slider": true,
1174
1176
  "label": "settings.max_total_tokens",
1175
1177
  "description": "settings.zero.limit.desc",
1176
- "value": 400,
1178
+ "value": 256000,
1177
1179
  "min": 0,
1178
- "max": 256000,
1180
+ "max": 2000000,
1179
1181
  "multiplier": 1,
1180
1182
  "step": 1,
1181
1183
  "advanced": false
@@ -2032,7 +2034,7 @@
2032
2034
  "advanced": false,
2033
2035
  "tab": "Google",
2034
2036
  "urls": {
2035
- "Google Docs": "https://ai.google.dev/gemini-api/docs/file-search?hl=pl#metadata"
2037
+ "Google Docs": "https://ai.google.dev/gemini-api/docs/file-search#metadata"
2036
2038
  }
2037
2039
  },
2038
2040
  "remote_tools.anthropic.web_search": {
@@ -2049,18 +2051,89 @@
2049
2051
  "advanced": false,
2050
2052
  "tab": "Anthropic"
2051
2053
  },
2052
- "remote_tools.xai.mode": {
2054
+ "remote_tools.anthropic.web_fetch": {
2053
2055
  "section": "remote_tools",
2054
- "type": "combo",
2056
+ "type": "bool",
2055
2057
  "slider": false,
2056
- "label": "settings.remote_tools.xai.mode",
2057
- "description": "settings.remote_tools.xai.mode.desc",
2058
- "value": "auto",
2059
- "keys": [
2060
- {"auto": "auto"},
2061
- {"on": "on"},
2062
- {"off": "off"}
2063
- ],
2058
+ "label": "settings.remote_tools.anthropic.web_fetch",
2059
+ "description": "settings.remote_tools.anthropic.web_fetch.desc",
2060
+ "value": true,
2061
+ "min": null,
2062
+ "max": null,
2063
+ "multiplier": null,
2064
+ "step": null,
2065
+ "advanced": false,
2066
+ "tab": "Anthropic"
2067
+ },
2068
+ "remote_tools.anthropic.code_execution": {
2069
+ "section": "remote_tools",
2070
+ "type": "bool",
2071
+ "slider": false,
2072
+ "label": "settings.remote_tools.anthropic.code_execution",
2073
+ "description": "settings.remote_tools.anthropic.code_execution.desc",
2074
+ "value": true,
2075
+ "min": null,
2076
+ "max": null,
2077
+ "multiplier": null,
2078
+ "step": null,
2079
+ "advanced": false,
2080
+ "tab": "Anthropic"
2081
+ },
2082
+ "remote_tools.anthropic.mcp": {
2083
+ "section": "remote_tools",
2084
+ "type": "bool",
2085
+ "slider": false,
2086
+ "label": "settings.remote_tools.anthropic.mcp",
2087
+ "description": "settings.remote_tools.anthropic.mcp.desc",
2088
+ "value": true,
2089
+ "min": null,
2090
+ "max": null,
2091
+ "multiplier": null,
2092
+ "step": null,
2093
+ "advanced": false,
2094
+ "tab": "Anthropic"
2095
+ },
2096
+ "remote_tools.anthropic.mcp.tools": {
2097
+ "section": "remote_tools",
2098
+ "type": "textarea",
2099
+ "slider": false,
2100
+ "label": "settings.remote_tools.anthropic.mcp.tools",
2101
+ "description": "settings.remote_tools.anthropic.mcp.tools.desc",
2102
+ "value": "",
2103
+ "min": null,
2104
+ "max": null,
2105
+ "multiplier": null,
2106
+ "step": null,
2107
+ "advanced": false,
2108
+ "tab": "Anthropic",
2109
+ "urls": {
2110
+ "Anthropic Docs": "https://platform.claude.com/docs/en/agents-and-tools/remote-mcp-servers"
2111
+ }
2112
+ },
2113
+ "remote_tools.anthropic.mcp.mcp_servers": {
2114
+ "section": "remote_tools",
2115
+ "type": "textarea",
2116
+ "slider": false,
2117
+ "label": "settings.remote_tools.anthropic.mcp.mcp_servers",
2118
+ "description": "settings.remote_tools.anthropic.mcp.mcp_servers.desc",
2119
+ "value": "",
2120
+ "min": null,
2121
+ "max": null,
2122
+ "multiplier": null,
2123
+ "step": null,
2124
+ "advanced": false,
2125
+ "tab": "Anthropic",
2126
+ "urls": {
2127
+ "Anthropic Docs": "https://platform.claude.com/docs/en/agents-and-tools/remote-mcp-servers"
2128
+ }
2129
+ },
2130
+ "remote_tools.xai.web_search": {
2131
+ "section": "remote_tools",
2132
+ "type": "bool",
2133
+ "slider": false,
2134
+ "label": "settings.remote_tools.xai.web_search",
2135
+ "description": "settings.remote_tools.xai.web_search.desc",
2136
+ "value": true,
2064
2137
  "min": null,
2065
2138
  "max": null,
2066
2139
  "multiplier": null,
@@ -2068,12 +2141,12 @@
2068
2141
  "advanced": false,
2069
2142
  "tab": "xAI"
2070
2143
  },
2071
- "remote_tools.xai.sources.web": {
2144
+ "remote_tools.xai.x_search": {
2072
2145
  "section": "remote_tools",
2073
2146
  "type": "bool",
2074
2147
  "slider": false,
2075
- "label": "settings.remote_tools.xai.sources.web",
2076
- "description": "settings.remote_tools.xai.sources.web.desc",
2148
+ "label": "settings.remote_tools.xai.x_search",
2149
+ "description": "settings.remote_tools.xai.x_search.desc",
2077
2150
  "value": true,
2078
2151
  "min": null,
2079
2152
  "max": null,
@@ -2082,12 +2155,12 @@
2082
2155
  "advanced": false,
2083
2156
  "tab": "xAI"
2084
2157
  },
2085
- "remote_tools.xai.sources.x": {
2158
+ "remote_tools.xai.code_execution": {
2086
2159
  "section": "remote_tools",
2087
2160
  "type": "bool",
2088
2161
  "slider": false,
2089
- "label": "settings.remote_tools.xai.sources.x",
2090
- "description": "settings.remote_tools.xai.sources.x.desc",
2162
+ "label": "settings.remote_tools.xai.code_execution",
2163
+ "description": "settings.remote_tools.xai.code_execution.desc",
2091
2164
  "value": true,
2092
2165
  "min": null,
2093
2166
  "max": null,
@@ -2096,12 +2169,12 @@
2096
2169
  "advanced": false,
2097
2170
  "tab": "xAI"
2098
2171
  },
2099
- "remote_tools.xai.sources.news": {
2172
+ "remote_tools.xai.mcp": {
2100
2173
  "section": "remote_tools",
2101
2174
  "type": "bool",
2102
2175
  "slider": false,
2103
- "label": "settings.remote_tools.xai.sources.news",
2104
- "description": "settings.remote_tools.xai.sources.news.desc",
2176
+ "label": "settings.remote_tools.xai.mcp",
2177
+ "description": "settings.remote_tools.xai.mcp.desc",
2105
2178
  "value": true,
2106
2179
  "min": null,
2107
2180
  "max": null,
@@ -2110,6 +2183,23 @@
2110
2183
  "advanced": false,
2111
2184
  "tab": "xAI"
2112
2185
  },
2186
+ "remote_tools.xai.mcp.args": {
2187
+ "section": "remote_tools",
2188
+ "type": "textarea",
2189
+ "slider": false,
2190
+ "label": "settings.remote_tools.xai.mcp.args",
2191
+ "description": "settings.remote_tools.xai.mcp.args.desc",
2192
+ "value": "",
2193
+ "min": null,
2194
+ "max": null,
2195
+ "multiplier": null,
2196
+ "step": null,
2197
+ "advanced": false,
2198
+ "tab": "xAI",
2199
+ "urls": {
2200
+ "xAI Docs": "https://docs.x.ai/docs/guides/tools/remote-mcp-tools"
2201
+ }
2202
+ },
2113
2203
  "llama.idx.list": {
2114
2204
  "section": "llama-index",
2115
2205
  "type": "dict",
@@ -91,7 +91,7 @@ class NodeTemplateEngine {
91
91
  } else {
92
92
  parts.push(
93
93
  `<div class="extra-src-img-box" title="${url}">` +
94
- `<div class="img-outer"><div class="img-wrapper"><a href="${url}"><img src="${path}" class="image"></a></div>` +
94
+ `<div class="img-outer"><div class="img-wrapper"><a href="bridge://open_image/${path}"><img src="${path}" class="image"></a></div>` +
95
95
  `<a href="${url}" class="title">${this._escapeHtml(bn)}</a></div>` +
96
96
  `</div><br/>`
97
97
  );
@@ -1,4 +1,4 @@
1
- /* app.min.js — generated on 2025-09-28 09:12:33 by bin/minify_js.py using rjsmin */
1
+ /* app.min.js — generated on 2026-01-03 18:07:50 by bin/minify_js.py using rjsmin */
2
2
 
3
3
  /* data/js/app/async.js */
4
4
  class AsyncRunner{constructor(cfg,raf){this.cfg=cfg||{};this.raf=raf||null;const A=this.cfg.ASYNC||{};this.SLICE_MS=Utils.g('ASYNC_SLICE_MS',A.SLICE_MS??12);this.SLICE_HIDDEN_MS=Utils.g('ASYNC_SLICE_HIDDEN_MS',A.SLICE_HIDDEN_MS??Math.min(this.SLICE_MS,6));this.MIN_YIELD_MS=Utils.g('ASYNC_MIN_YIELD_MS',A.MIN_YIELD_MS??0);this._opGen=new Map();}
@@ -776,7 +776,7 @@ _esc(s){return(s==null)?'':String(s);}
776
776
  _escapeHtml(s){return(typeof Utils!=='undefined')?Utils.escapeHtml(s):String(s).replace(/[&<>"']/g,m=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#039;'}[m]));}
777
777
  _nameHeader(role,name,avatarUrl){if(!name&&!avatarUrl)return'';const cls=(role==='user')?'name-user':'name-bot';const img=avatarUrl?`<img src="${this._esc(avatarUrl)}" class="avatar"> `:'';return`<div class="name-header ${cls}">${img}${this._esc(name || '')}</div>`;}
778
778
  _renderUser(block){const id=block.id;const inp=block.input||{};const msgId=`msg-user-${id}`;const personalize=!!(block&&block.extra&&block.extra.personalize===true);const nameHeader=personalize?this._nameHeader('user',inp.name||'',inp.avatar_img||null):'';const content=this._escapeHtml(inp.text||'').replace(/\r?\n/g,'<br>');const I=(this.cfg&&this.cfg.ICONS)||{};const L=(this.cfg&&this.cfg.LOCALE)||{};const copyIcon=I.CODE_COPY||'';const copyTitle=L.COPY||'Copy';const copyBtn=`<a href="empty:${this._esc(id)}" class="msg-copy-btn" data-id="${this._esc(id)}" data-tip="${this._escapeHtml(copyTitle)}" title="${this._escapeHtml(copyTitle)}" aria-label="${this._escapeHtml(copyTitle)}" role="button"><img src="${this._esc(copyIcon)}" class="copy-img" alt="${this._escapeHtml(copyTitle)}" data-id="${this._esc(id)}"></a>`;return`<div class="msg-box msg-user" id="${msgId}">${nameHeader}<div class="msg">${copyBtn}<p style="margin:0">${content}</p></div></div>`;}
779
- _renderExtras(block){const parts=[];const images=block.images||{};const keysI=Object.keys(images);if(keysI.length){keysI.forEach((k)=>{const it=images[k];if(!it)return;const url=this._esc(it.url);const path=this._esc(it.path);const bn=this._esc(it.basename||'');if(it.is_video){const src=(it.ext==='.webm'||!it.webm_path)?path:this._esc(it.webm_path);const ext=(src.endsWith('.webm')?'webm':(path.split('.').pop()||'mp4'));parts.push(`<div class="extra-src-video-box" title="${url}">`+`<video class="video-player" controls>`+`<source src="${src}" type="video/${ext}">`+`</video>`+`<p><a href="bridge://play_video/${url}" class="title">${this._escapeHtml(bn)}</a></p>`+`</div>`);}else{parts.push(`<div class="extra-src-img-box" title="${url}">`+`<div class="img-outer"><div class="img-wrapper"><a href="${url}"><img src="${path}" class="image"></a></div>`+`<a href="${url}" class="title">${this._escapeHtml(bn)}</a></div>`+`</div><br/>`);}});}
779
+ _renderExtras(block){const parts=[];const images=block.images||{};const keysI=Object.keys(images);if(keysI.length){keysI.forEach((k)=>{const it=images[k];if(!it)return;const url=this._esc(it.url);const path=this._esc(it.path);const bn=this._esc(it.basename||'');if(it.is_video){const src=(it.ext==='.webm'||!it.webm_path)?path:this._esc(it.webm_path);const ext=(src.endsWith('.webm')?'webm':(path.split('.').pop()||'mp4'));parts.push(`<div class="extra-src-video-box" title="${url}">`+`<video class="video-player" controls>`+`<source src="${src}" type="video/${ext}">`+`</video>`+`<p><a href="bridge://play_video/${url}" class="title">${this._escapeHtml(bn)}</a></p>`+`</div>`);}else{parts.push(`<div class="extra-src-img-box" title="${url}">`+`<div class="img-outer"><div class="img-wrapper"><a href="bridge://open_image/${path}"><img src="${path}" class="image"></a></div>`+`<a href="${url}" class="title">${this._escapeHtml(bn)}</a></div>`+`</div><br/>`);}});}
780
780
  const files=block.files||{};const kF=Object.keys(files);if(kF.length){const rows=[];kF.forEach((k)=>{const it=files[k];if(!it)return;const url=this._esc(it.url);const path=this._esc(it.path);const icon=(typeof window!=='undefined'&&window.ICON_ATTACHMENTS)?`<img src="${window.ICON_ATTACHMENTS}" class="extra-src-icon">`:'';rows.push(`${icon} <b> [${k}] </b> <a href="${url}">${path}</a>`);});if(rows.length)parts.push(`<div>${rows.join("<br/><br/>")}</div>`);}
781
781
  const urls=block.urls||{};const kU=Object.keys(urls);if(kU.length){const rows=[];kU.forEach((k)=>{const it=urls[k];if(!it)return;const url=this._esc(it.url);const icon=(typeof window!=='undefined'&&window.ICON_URL)?`<img src="${window.ICON_URL}" class="extra-src-icon">`:'';rows.push(`${icon}<a href="${url}" title="${url}">${url}</a> <small> [${k}] </small>`);});if(rows.length)parts.push(`<div>${rows.join("<br/><br/>")}</div>`);}
782
782
  const extra=block.extra||{};const docsRaw=Array.isArray(extra.docs)?extra.docs:null;if(docsRaw&&docsRaw.length){const icon=(typeof window!=='undefined'&&window.ICON_DB)?`<img src="${window.ICON_DB}" class="extra-src-icon">`:'';const prefix=(typeof window!=='undefined'&&window.LOCALE_DOC_PREFIX)?String(window.LOCALE_DOC_PREFIX):'Doc:';const limit=3;const normalized=[];docsRaw.forEach((it)=>{if(!it||typeof it!=='object')return;if('uuid'in it&&'meta'in it&&typeof it.meta==='object'){normalized.push({uuid:String(it.uuid),meta:it.meta||{}});}else{const keys=Object.keys(it);if(keys.length===1){const uuid=keys[0];const meta=it[uuid];if(meta&&typeof meta==='object'){normalized.push({uuid:String(uuid),meta});}}}});const rows=[];for(let i=0;i<Math.min(limit,normalized.length);i++){const d=normalized[i];const meta=d.meta||{};const entries=Object.keys(meta).map(k=>`<b>${this._escapeHtml(k)}:</b> ${this._escapeHtml(String(meta[k]))}`).join(', ');rows.push(`<p><small>[${i + 1}] ${this._escapeHtml(d.uuid)}: ${entries}</small></p>`);}
@@ -301,6 +301,9 @@ confirm.remote_store.truncate = Alle Vektor-Speicher in der API löschen?
301
301
  context.btn.clear = Erinnerung löschen
302
302
  context.items = Elemente
303
303
  context.label = Kontext
304
+ context_menu.zoom = Zoom
305
+ context_menu.zoom.in = Vergrößern
306
+ context_menu.zoom.out = Verkleinern
304
307
  context.tokens = Tokens
305
308
  ctx.delete.all.confirm = Sind Sie sicher, dass Sie ALLE Verlaufskontexte löschen möchten?
306
309
  ctx.delete.confirm = Sind Sie sicher, dass Sie löschen möchten?
@@ -1276,7 +1279,9 @@ settings.ctx.attachment.verbose = Ausführlicher Modus
1276
1279
  settings.ctx.attachment.verbose.desc = Verwenden Sie die Anhänge in der Konsole
1277
1280
  settings.ctx.audio = Audio-Symbol immer anzeigen
1278
1281
  settings.ctx.auto_summary = Kontext automatisch zusammenfassen
1282
+ settings.ctx.auto_summary.desc = Aktivieren Sie die automatische Zusammenfassung des Kontexts in der Konversationsliste links.
1279
1283
  settings.ctx.auto_summary.model = Modell für automatische Zusammenfassung verwendet
1284
+ settings.ctx.auto_summary.model.desc = Wählen Sie ein Modell, das zum Zusammenfassen des Kontexts und zur Erstellung des Titels in der Konversationsliste links verwendet wird.
1280
1285
  settings.ctx.code_interpreter = Ausgabe des Code-Interpreters anzeigen
1281
1286
  settings.ctx.code_interpreter.desc = Wenn diese Option aktiviert ist, wird die Ausgabe des Code-Interpreters in der Assistant-API in Echtzeit angezeigt (im Stream-Modus).
1282
1287
  settings.ctx.convert_lists = Listen in Absätze umwandeln
@@ -316,6 +316,9 @@ confirm.remote_store.truncate = Delete all vector stores in API?
316
316
  context.btn.clear = Clear memory
317
317
  context.items = items
318
318
  context.label = Context
319
+ context_menu.zoom = Zoom
320
+ context_menu.zoom.in = Zoom In
321
+ context_menu.zoom.out = Zoom Out
319
322
  context.tokens = tokens
320
323
  ctx.delete.all.confirm = Are you sure you want to delete ALL history contexts?
321
324
  ctx.delete.confirm = Are you sure you want to delete?
@@ -1327,7 +1330,9 @@ settings.ctx.attachment.verbose = Verbose mode
1327
1330
  settings.ctx.attachment.verbose.desc = Log attachments usage to the console
1328
1331
  settings.ctx.audio = Always show audio icon
1329
1332
  settings.ctx.auto_summary = Context auto-summary
1333
+ settings.ctx.auto_summary.desc = Enable automatic summarization of the context on the conversation list on the left.
1330
1334
  settings.ctx.auto_summary.model = Model used for auto-summary
1335
+ settings.ctx.auto_summary.model.desc = Choose a model used for summarizing the context and preparing the title on the conversation list on the left.
1331
1336
  settings.ctx.code_interpreter = Show Code Interpreter output
1332
1337
  settings.ctx.code_interpreter.desc = If enabled, output from the code interpreter in the Assistant API will be displayed in real-time (in stream mode).
1333
1338
  settings.ctx.convert_lists = Convert lists to paragraphs
@@ -1475,34 +1480,52 @@ settings.prompt.img = Image generation
1475
1480
  settings.prompt.img.desc = Prompt for generating prompts for image model (if raw-mode is disabled). Image / Video modes only.
1476
1481
  settings.prompt.video = Video generation
1477
1482
  settings.prompt.video.desc = Prompt for generating prompts for video model (if raw-mode is disabled). Image / Videos mode only.
1483
+ settings.remote_tools.anthropic.code_execution = Code Execution
1484
+ settings.remote_tools.anthropic.code_execution.desc = Enable Code Execution remote tool.
1485
+ settings.remote_tools.anthropic.file_search = Web Search
1486
+ settings.remote_tools.anthropic.file_search.desc = Enable Web Search remote tool.
1487
+ settings.remote_tools.anthropic.mcp = Remote MCP
1488
+ settings.remote_tools.anthropic.mcp.desc = Enable MCP remote tool/connector.
1489
+ settings.remote_tools.anthropic.mcp.mcp_servers = Remote MCP configuration (mcp_servers)
1490
+ settings.remote_tools.anthropic.mcp.mcp_servers.desc = Configuration in JSON format (will be used in request)
1491
+ settings.remote_tools.anthropic.mcp.tools = Remote MCP configuration (tools)
1492
+ settings.remote_tools.anthropic.mcp.tools.desc = Configuration in JSON format (will be used in request)
1493
+ settings.remote_tools.anthropic.web_fetch = Web Fetch
1494
+ settings.remote_tools.anthropic.web_fetch.desc = Enable Web Fetch remote tool.
1478
1495
  settings.remote_tools.anthropic.web_search = Web Search
1479
1496
  settings.remote_tools.anthropic.web_search.desc = Enable Web Search remote tool.
1480
1497
  settings.remote_tools.code_interpreter = Code Interpreter
1481
- settings.remote_tools.code_interpreter.desc = Enable `code_interpreter` remote tool - Responses API only.
1498
+ settings.remote_tools.code_interpreter.desc = Enable Code Interpreter remote tool - Responses API only.
1482
1499
  settings.remote_tools.file_search = File search
1483
1500
  settings.remote_tools.file_search.args = File search vector store IDs
1484
1501
  settings.remote_tools.file_search.args.desc = Vector store IDs, separated by comma (,)
1485
- settings.remote_tools.file_search.desc = Enable `file_search` remote tool - Responses API only.
1502
+ settings.remote_tools.file_search.desc = Enable File Search remote tool - Responses API only.
1486
1503
  settings.remote_tools.google.code_interpreter = Code Interpreter
1487
1504
  settings.remote_tools.google.code_interpreter.desc = Enable Code Interpreter remote tool.
1488
1505
  settings.remote_tools.google.file_search = File search
1489
1506
  settings.remote_tools.google.file_search.args = File search vector store IDs
1490
1507
  settings.remote_tools.google.file_search.args.desc = Vector store IDs, separated by comma (,)
1491
- settings.remote_tools.google.file_search.desc = Enable `file_search` remote tool - Responses API only.
1508
+ settings.remote_tools.google.file_search.desc = Enable File Search remote tool - Responses API only.
1492
1509
  settings.remote_tools.google.maps = Google Maps
1493
1510
  settings.remote_tools.google.maps.desc = Enable Google Maps remote tool.
1494
1511
  settings.remote_tools.google.url_ctx = URL Context
1495
1512
  settings.remote_tools.google.url_ctx.desc = Enable URL Context remote tool.
1496
- settings.remote_tools.google.web_search = Google Search
1497
- settings.remote_tools.google.web_search.desc = Enable Google Search remote tool.
1513
+ settings.remote_tools.google.web_search = Web Search
1514
+ settings.remote_tools.google.web_search.desc = Enable Web Search remote tool.
1498
1515
  settings.remote_tools.image = Image generation
1499
- settings.remote_tools.image.desc = Enable `image_generation` remote tool - Responses API only.
1516
+ settings.remote_tools.image.desc = Enable Image generation remote tool - Responses API only.
1500
1517
  settings.remote_tools.mcp = Remote MCP
1501
1518
  settings.remote_tools.mcp.args = Remote MCP configuration
1502
1519
  settings.remote_tools.mcp.args.desc = Configuration in JSON format (will be used in request)
1503
- settings.remote_tools.mcp.desc = Enable `mcp` remote tool - Responses API only.
1520
+ settings.remote_tools.mcp.desc = Enable MCP remote tool - Responses API only.
1504
1521
  settings.remote_tools.web_search = Web Search
1505
- settings.remote_tools.web_search.desc = Enable `web_search` remote tool - Responses API only.
1522
+ settings.remote_tools.web_search.desc = Enable Web Search remote tool - Responses API only.
1523
+ settings.remote_tools.xai.code_execution = Code Execution
1524
+ settings.remote_tools.xai.code_execution.desc = Enable Code Execution remote tool.
1525
+ settings.remote_tools.xai.mcp = Remote MCP
1526
+ settings.remote_tools.xai.mcp.args = Remote MCP configuration
1527
+ settings.remote_tools.xai.mcp.args.desc = Configuration in JSON format (will be used in request)
1528
+ settings.remote_tools.xai.mcp.desc = Enable MCP remote tool - Responses API only.
1506
1529
  settings.remote_tools.xai.mode = Live Search mode
1507
1530
  settings.remote_tools.xai.mode.desc = Select mode: auto|on|off
1508
1531
  settings.remote_tools.xai.sources.news = Source: News
@@ -1511,6 +1534,10 @@ settings.remote_tools.xai.sources.web = Source: Web
1511
1534
  settings.remote_tools.xai.sources.web.desc = Enable Web in Live Search
1512
1535
  settings.remote_tools.xai.sources.x = Source: X / Twitter
1513
1536
  settings.remote_tools.xai.sources.x.desc = Enable X / Twitter in Live Search
1537
+ settings.remote_tools.xai.web_search = Web Search
1538
+ settings.remote_tools.xai.web_search.desc = Enable Web Search remote tool.
1539
+ settings.remote_tools.xai.x_search = X Search
1540
+ settings.remote_tools.xai.x_search.desc = Enable X Search remote tool.
1514
1541
  settings.render.code_syntax = Code syntax highlight
1515
1542
  settings.render.code_syntax.disabled = Disable syntax highlight
1516
1543
  settings.render.code_syntax.final_max_chars = Max chars to highlight (static)
@@ -301,6 +301,9 @@ confirm.remote_store.truncate = ¿Eliminar todas las bases vectoriales en la API
301
301
  context.btn.clear = Limpiar memoria
302
302
  context.items = elementos
303
303
  context.label = Contexto
304
+ context_menu.zoom = Zoom
305
+ context_menu.zoom.in = Acercar
306
+ context_menu.zoom.out = Alejar
304
307
  context.tokens = tokens
305
308
  ctx.delete.all.confirm = ¿Está seguro de querer eliminar TODOS los contextos del historial?
306
309
  ctx.delete.confirm = ¿Está seguro de querer eliminar?
@@ -1277,7 +1280,9 @@ settings.ctx.attachment.verbose = Modo detallado
1277
1280
  settings.ctx.attachment.verbose.desc = Registrar el uso de adjuntos en la consola
1278
1281
  settings.ctx.audio = Siempre mostrar el ícono de audio
1279
1282
  settings.ctx.auto_summary = Resumen automático del contexto
1283
+ settings.ctx.auto_summary.desc = Habilite la resumena automática del contexto en la lista de conversaciones a la izquierda.
1280
1284
  settings.ctx.auto_summary.model = Modelo utilizado para el resumen automático
1285
+ settings.ctx.auto_summary.model.desc = Elija un modelo utilizado para resumir el contexto y preparar el título en la lista de conversaciones a la izquierda.
1281
1286
  settings.ctx.code_interpreter = Mostrar salida del intérprete de código
1282
1287
  settings.ctx.code_interpreter.desc = Si está habilitado, la salida del intérprete de código en la API del Asistente se mostrará en tiempo real (en modo de transmisión).
1283
1288
  settings.ctx.convert_lists = Convertir listas en párrafos
@@ -301,6 +301,9 @@ confirm.remote_store.truncate = Supprimer toutes les bases vectorielles dans l'A
301
301
  context.btn.clear = Effacer la mémoire
302
302
  context.items = éléments
303
303
  context.label = Contexte
304
+ context_menu.zoom = Zoom
305
+ context_menu.zoom.in = Zoomer
306
+ context_menu.zoom.out = Dézoomer
304
307
  context.tokens = jetons
305
308
  ctx.delete.all.confirm = Êtes-vous sûr de vouloir supprimer TOUS les contextes d'historique ?
306
309
  ctx.delete.confirm = Êtes-vous sûr de vouloir supprimer ?
@@ -1276,7 +1279,9 @@ settings.ctx.attachment.verbose = Mode verbose
1276
1279
  settings.ctx.attachment.verbose.desc = Enregistrer l'utilisation des pièces jointes dans la console
1277
1280
  settings.ctx.audio = Toujours afficher l'icône audio
1278
1281
  settings.ctx.auto_summary = Résumé automatique du contexte
1282
+ settings.ctx.auto_summary.desc = Activez la synthèse automatique du contexte dans la liste de conversation à gauche.
1279
1283
  settings.ctx.auto_summary.model = Modèle utilisé pour le résumé automatique
1284
+ settings.ctx.auto_summary.model.desc = Choisissez un modèle utilisé pour résumer le contexte et préparer le titre dans la liste de conversation à gauche.
1280
1285
  settings.ctx.code_interpreter = Afficher la sortie de l'interprèteur de code
1281
1286
  settings.ctx.code_interpreter.desc = Si activé, la sortie de l'interpréteur de code dans l'API Assistant sera affichée en temps réel (en mode flux).
1282
1287
  settings.ctx.convert_lists = Convertir les listes en paragraphes