@zubriq/code 0.19.7-zubriq.2 → 0.19.8-1

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 (110) hide show
  1. package/README.md +70 -24
  2. package/dist/LICENSE +203 -0
  3. package/dist/README.md +96 -0
  4. package/dist/chunks/{MaxSizedBox-T6CIMMP3.js → MaxSizedBox-OWTCJQNO.js} +5 -5
  5. package/dist/chunks/{StandaloneSessionPicker-C3P6BNH4.js → StandaloneSessionPicker-6NGEQFBH.js} +15 -15
  6. package/dist/chunks/{acpAgent-UWE7CYPC.js → acpAgent-XPRWSNOW.js} +30 -30
  7. package/dist/chunks/{agent-BE34XYQC.js → agent-TB6S4VXU.js} +2 -2
  8. package/dist/chunks/{agent-headless-HJX2DEYL.js → agent-headless-R3XYK5TT.js} +2 -2
  9. package/dist/chunks/{bridge-U26JIHER.js → bridge-HVRG6SMU.js} +5 -5
  10. package/dist/chunks/{chunk-TQ4UQPTO.js → chunk-45YCXM2H.js} +4 -4
  11. package/dist/chunks/{chunk-JHP63PLH.js → chunk-4FQL7KUS.js} +2 -2
  12. package/dist/chunks/{chunk-5T5W42PO.js → chunk-4LETJLG2.js} +1 -1
  13. package/dist/chunks/{chunk-OQZFA3CY.js → chunk-4UC3U66K.js} +5 -5
  14. package/dist/chunks/{chunk-7JY7VUXD.js → chunk-536GZ6UF.js} +1 -1
  15. package/dist/chunks/{chunk-WN4MUF56.js → chunk-5EB2HK3X.js} +1 -1
  16. package/dist/chunks/{chunk-VHXJLCAL.js → chunk-5YLZHETW.js} +1 -1
  17. package/dist/chunks/{chunk-ETAURCYN.js → chunk-6RSBRKF5.js} +2 -2
  18. package/dist/chunks/{chunk-J55JDNBK.js → chunk-7AQTBTVY.js} +1 -1
  19. package/dist/chunks/{chunk-IH7NEHSU.js → chunk-ABANKQYY.js} +4 -4
  20. package/dist/chunks/{chunk-WGJZSQLV.js → chunk-APYUOROB.js} +12 -12
  21. package/dist/chunks/{chunk-7OIEBTFD.js → chunk-BA4HLTG2.js} +3 -3
  22. package/dist/chunks/{chunk-72LGS2RB.js → chunk-DHKDK57Q.js} +13 -13
  23. package/dist/chunks/{chunk-V4TNZBAE.js → chunk-ENKWIF75.js} +3 -3
  24. package/dist/chunks/{chunk-3BAKF3YM.js → chunk-G23FFNLT.js} +3 -3
  25. package/dist/chunks/{chunk-XNWMPPG3.js → chunk-H3D6XAOL.js} +3 -3
  26. package/dist/chunks/{chunk-EKB7BLE5.js → chunk-HTC4R67V.js} +9 -9
  27. package/dist/chunks/{chunk-DV2J7XXG.js → chunk-IO76BGJ3.js} +4 -4
  28. package/dist/chunks/{chunk-DP6YOAWL.js → chunk-IQX5S2RS.js} +1 -1
  29. package/dist/chunks/{chunk-6T3WVAGP.js → chunk-J6OET6C3.js} +4 -4
  30. package/dist/chunks/{chunk-WAMYGK5V.js → chunk-JSEOX4CM.js} +3 -3
  31. package/dist/chunks/{chunk-U37PXSMW.js → chunk-KLLLWQM2.js} +1 -1
  32. package/dist/chunks/{chunk-2BJBD2SI.js → chunk-LGXBB2R2.js} +1 -1
  33. package/dist/chunks/{chunk-YZ2XYO6Z.js → chunk-MJQFA66Z.js} +4 -4
  34. package/dist/chunks/{chunk-GVZG2HKT.js → chunk-ML2ZWH2K.js} +3 -3
  35. package/dist/chunks/{chunk-2CLNNA2H.js → chunk-N4HTVZDZ.js} +1 -1
  36. package/dist/chunks/{chunk-HMIQ6Q2E.js → chunk-NBKE6QRZ.js} +2 -2
  37. package/dist/chunks/{chunk-3GGGBZZM.js → chunk-NHFBLJOI.js} +1 -1
  38. package/dist/chunks/{chunk-XADJ5VZ7.js → chunk-OCBJKHF2.js} +2 -2
  39. package/dist/chunks/{chunk-R4ZCP2BQ.js → chunk-PA7QS4X5.js} +1 -1
  40. package/dist/chunks/{chunk-F7WNVVM4.js → chunk-PDITONOB.js} +49 -33
  41. package/dist/chunks/{chunk-PQLS6NCB.js → chunk-PWR5MVM3.js} +4 -4
  42. package/dist/chunks/{chunk-OXUZ3FF6.js → chunk-QG4ZO2EB.js} +7 -7
  43. package/dist/chunks/{chunk-FQJKUDVQ.js → chunk-QG5KDB6X.js} +5 -5
  44. package/dist/chunks/{chunk-HQH6AO45.js → chunk-REPRY4F7.js} +7 -7
  45. package/dist/chunks/{chunk-RTIZGRQV.js → chunk-RTW5ZXHO.js} +1 -1
  46. package/dist/chunks/{chunk-A7L7BUWU.js → chunk-SM624MOZ.js} +1 -1
  47. package/dist/chunks/{chunk-UGH6JZ3Z.js → chunk-UE5TCZE6.js} +2 -2
  48. package/dist/chunks/{chunk-TE5VUBZ6.js → chunk-XKYOIERV.js} +16 -16
  49. package/dist/chunks/{chunk-B2WFC3AK.js → chunk-XZULYFIX.js} +2 -2
  50. package/dist/chunks/{chunk-SRGVIEEL.js → chunk-YNWQ3PUQ.js} +3 -3
  51. package/dist/chunks/{chunk-4P2SQFC6.js → chunk-YOGGIAGF.js} +1 -1
  52. package/dist/chunks/{chunk-DSZLW2GZ.js → chunk-YRM6BC6H.js} +3 -3
  53. package/dist/chunks/{chunk-UZYWOTLS.js → chunk-ZM5BPDXV.js} +1 -1
  54. package/dist/chunks/{chunk-AJLARMUE.js → chunk-ZWSTIPSW.js} +2 -2
  55. package/dist/chunks/{computer-use-KXYLQU5P.js → computer-use-A72BECH4.js} +2 -2
  56. package/dist/chunks/{contextCommand-ARR35UA5.js → contextCommand-RREXA4B7.js} +4 -4
  57. package/dist/chunks/{daemon-status-provider-CFIZMLEL.js → daemon-status-provider-Y6AFXTET.js} +8 -8
  58. package/dist/chunks/{earlyInputCapture-PNJB5N3X.js → earlyInputCapture-OAHBOGOO.js} +2 -2
  59. package/dist/chunks/{edit-7W43GBET.js → edit-SFYW3FOV.js} +2 -2
  60. package/dist/chunks/{enter-worktree-7YKY7WGJ.js → enter-worktree-LUPPQ2NH.js} +2 -2
  61. package/dist/chunks/{enterPlanMode-BP6OY3N4.js → enterPlanMode-44GEN5U6.js} +2 -2
  62. package/dist/chunks/{errors-654ZZEQO.js → errors-H3Q3W3DL.js} +4 -4
  63. package/dist/chunks/{exit-worktree-LF3HUMQC.js → exit-worktree-34CVVWT4.js} +2 -2
  64. package/dist/chunks/{exitPlanMode-AI63OI4H.js → exitPlanMode-5G5BHNUP.js} +2 -2
  65. package/dist/chunks/{fast-path-O7337PXS.js → fast-path-7PKGFBRM.js} +2 -2
  66. package/dist/chunks/{gemini-BBQJIXMB.js → gemini-2II6JH4H.js} +28 -28
  67. package/dist/chunks/{geminiContentGenerator-WUKLYD4K.js → geminiContentGenerator-SWEJVOC4.js} +1 -1
  68. package/dist/chunks/{glob-WWHWCATX.js → glob-5DFC7DXW.js} +2 -2
  69. package/dist/chunks/{grep-5PC6I5OA.js → grep-QYVXGRRJ.js} +2 -2
  70. package/dist/chunks/{initializer-7SGLJTMK.js → initializer-XX3UGUHE.js} +6 -6
  71. package/dist/chunks/{list-PGS44O3H.js → list-AX5FWBVC.js} +8 -8
  72. package/dist/chunks/{loadedSettingsAdapter-6XRTO4DZ.js → loadedSettingsAdapter-ISOM6GJ7.js} +6 -6
  73. package/dist/chunks/{mcp-FVWUKEGR.js → mcp-74F6725E.js} +6 -6
  74. package/dist/chunks/{monitor-KN6NPASB.js → monitor-W4WRSC2C.js} +2 -2
  75. package/dist/chunks/{nonInteractiveCli-2EG4YX2H.js → nonInteractiveCli-4QMV6C4J.js} +27 -27
  76. package/dist/chunks/{notebook-edit-QTEFNRA5.js → notebook-edit-XBZEIP42.js} +2 -2
  77. package/dist/chunks/{openaiContentGenerator-VS6M5GWO.js → openaiContentGenerator-RTUJDESE.js} +2 -2
  78. package/dist/chunks/{pidfile-YD4ZFZXB.js → pidfile-YWSGNTPK.js} +2 -2
  79. package/dist/chunks/{qwenContentGenerator-WKGXAUOV.js → qwenContentGenerator-4ZFYAZLY.js} +3 -3
  80. package/dist/chunks/{read-file-4ZCCCGBK.js → read-file-D7DKDIAC.js} +1 -1
  81. package/dist/chunks/{ripGrep-MEH3DNPB.js → ripGrep-KG7JYNER.js} +2 -2
  82. package/dist/chunks/{ru-Z67YJHBG.js → ru-PER5I4OI.js} +12 -0
  83. package/dist/chunks/{run-qwen-serve-JKTDQDWS.js → run-qwen-serve-XGJSNF6S.js} +13 -13
  84. package/dist/chunks/{scheduler-NQ3J73LR.js → scheduler-MOLWOE4G.js} +2 -2
  85. package/dist/chunks/{serve-55JALOOF.js → serve-4ZNVPYND.js} +6 -6
  86. package/dist/chunks/{server-443M2YM4.js → server-ACWDFHIF.js} +25 -31
  87. package/dist/chunks/{session-OKLHUANL.js → session-VYO2GRO2.js} +28 -28
  88. package/dist/chunks/{settings-M3T263T3.js → settings-4J2O3K22.js} +5 -5
  89. package/dist/chunks/{shell-7NXC6HFP.js → shell-RKERJYXR.js} +2 -2
  90. package/dist/chunks/{skill-XRWSGWIR.js → skill-JYACZJ5V.js} +1 -1
  91. package/dist/chunks/{spawnChannel-H753ONPF.js → spawnChannel-BA3U3RGX.js} +4 -4
  92. package/dist/chunks/{src-P6YHNO4U.js → src-3P337V4P.js} +6 -4
  93. package/dist/chunks/{startInteractiveUI-VTRBRBP3.js → startInteractiveUI-SUSZ6FWB.js} +242 -121
  94. package/dist/chunks/{team-create-QS7JB5AT.js → team-create-YVWGRZEA.js} +2 -2
  95. package/dist/chunks/{team-plan-approval-4A6WI72F.js → team-plan-approval-VRF54TTI.js} +2 -2
  96. package/dist/chunks/{theme-manager-MJEWDUHU.js → theme-manager-JW2KOACL.js} +2 -2
  97. package/dist/chunks/{tool-search-UYP4TQ4W.js → tool-search-KUSMAZBN.js} +1 -1
  98. package/dist/chunks/{trustedFolders-IYHWXGKE.js → trustedFolders-ERGSUCDK.js} +3 -3
  99. package/dist/chunks/{validateNonInterActiveAuth-JOUQTOFZ.js → validateNonInterActiveAuth-DDI62H5X.js} +24 -24
  100. package/dist/chunks/{version-D3BGJC7L.js → version-VB3AHVUF.js} +1 -1
  101. package/dist/chunks/{workflow-XKA3P7MJ.js → workflow-WINKRCI4.js} +3 -3
  102. package/dist/chunks/{workspace-providers-status-MEI3ANDA.js → workspace-providers-status-ZVZPXKSO.js} +8 -8
  103. package/dist/chunks/{workspace-service-VHEN4SI4.js → workspace-service-GAS2LV2P.js} +10 -10
  104. package/dist/chunks/{workspace-skills-status-5ADQMOJ6.js → workspace-skills-status-4WGKYJVA.js} +7 -7
  105. package/dist/chunks/{write-file-CYUDGLMW.js → write-file-UTLKVZNN.js} +2 -2
  106. package/dist/cli-entry.js +103 -0
  107. package/dist/cli.js +11 -11
  108. package/dist/locales/ru.js +20 -0
  109. package/dist/package.json +51 -0
  110. package/package.json +1 -1
@@ -1,11 +1,11 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import "./chunk-WAMYGK5V.js";
3
+ import "./chunk-JSEOX4CM.js";
4
4
  import {
5
5
  DualOutputContext,
6
6
  useDualOutput,
7
7
  useGeminiStream
8
- } from "./chunk-HQH6AO45.js";
8
+ } from "./chunk-REPRY4F7.js";
9
9
  import {
10
10
  MAX_SUGGESTIONS_TO_SHOW,
11
11
  MAX_WIDTH,
@@ -14,10 +14,10 @@ import {
14
14
  buildMcpServerRef,
15
15
  getExtensionSuggestions,
16
16
  matchMcpServerPrefix
17
- } from "./chunk-PQLS6NCB.js";
17
+ } from "./chunk-PWR5MVM3.js";
18
18
  import {
19
19
  StreamJsonOutputAdapter
20
- } from "./chunk-XADJ5VZ7.js";
20
+ } from "./chunk-OCBJKHF2.js";
21
21
  import {
22
22
  BuiltinCommandLoader,
23
23
  BundledSkillLoader,
@@ -51,12 +51,12 @@ import {
51
51
  serializeUserPromptExpansionPrompt,
52
52
  supportsMatchers,
53
53
  useAutoAcceptIndicator
54
- } from "./chunk-TE5VUBZ6.js";
54
+ } from "./chunk-XKYOIERV.js";
55
55
  import {
56
56
  appEvents,
57
57
  loadHierarchicalGeminiMemory
58
- } from "./chunk-WGJZSQLV.js";
59
- import "./chunk-7OIEBTFD.js";
58
+ } from "./chunk-APYUOROB.js";
59
+ import "./chunk-BA4HLTG2.js";
60
60
  import {
61
61
  AboutBox,
62
62
  BaseSelectionList,
@@ -124,16 +124,16 @@ import {
124
124
  useTextBuffer,
125
125
  useUIActions,
126
126
  useUIState
127
- } from "./chunk-72LGS2RB.js";
127
+ } from "./chunk-DHKDK57Q.js";
128
128
  import {
129
129
  relaunchApp
130
- } from "./chunk-VHXJLCAL.js";
130
+ } from "./chunk-5YLZHETW.js";
131
131
  import {
132
132
  SessionStatsProvider,
133
133
  getCommandDisplayName,
134
134
  getCommandSourceBadge,
135
135
  useSessionStats
136
- } from "./chunk-TQ4UQPTO.js";
136
+ } from "./chunk-45YCXM2H.js";
137
137
  import {
138
138
  Colors,
139
139
  SettingsContext,
@@ -142,7 +142,7 @@ import {
142
142
  useMouseEvents,
143
143
  useSettings,
144
144
  useTerminalSize
145
- } from "./chunk-B2WFC3AK.js";
145
+ } from "./chunk-XZULYFIX.js";
146
146
  import {
147
147
  BEL,
148
148
  KeypressProvider,
@@ -165,14 +165,14 @@ import {
165
165
  useKeypressContext,
166
166
  wrapForMultiplexer,
167
167
  writeOsc52
168
- } from "./chunk-OQZFA3CY.js";
168
+ } from "./chunk-4UC3U66K.js";
169
169
  import "./chunk-KSPVDFE4.js";
170
170
  import "./chunk-MRO43B25.js";
171
171
  import {
172
172
  MaxSizedBox,
173
173
  OverflowProvider,
174
174
  useOverflowState
175
- } from "./chunk-AJLARMUE.js";
175
+ } from "./chunk-ZWSTIPSW.js";
176
176
  import {
177
177
  theme
178
178
  } from "./chunk-IFEWJXFS.js";
@@ -190,7 +190,7 @@ import {
190
190
  use_is_screen_reader_enabled_default,
191
191
  use_stdin_default,
192
192
  use_stdout_default
193
- } from "./chunk-UGH6JZ3Z.js";
193
+ } from "./chunk-UE5TCZE6.js";
194
194
  import {
195
195
  require_react
196
196
  } from "./chunk-KYMBIKIW.js";
@@ -210,18 +210,18 @@ import {
210
210
  import {
211
211
  requestConsentInteractive,
212
212
  requestConsentOrFail
213
- } from "./chunk-FQJKUDVQ.js";
213
+ } from "./chunk-QG5KDB6X.js";
214
214
  import "./chunk-3GONHQOA.js";
215
215
  import {
216
216
  getErrorMessage as getErrorMessage2
217
- } from "./chunk-ETAURCYN.js";
217
+ } from "./chunk-6RSBRKF5.js";
218
218
  import "./chunk-66KNL43D.js";
219
219
  import {
220
220
  openQwenAsrRealtimeStream,
221
221
  openVoiceStream,
222
222
  openVoiceStreamWithRetry
223
- } from "./chunk-U37PXSMW.js";
224
- import "./chunk-HMIQ6Q2E.js";
223
+ } from "./chunk-KLLLWQM2.js";
224
+ import "./chunk-NBKE6QRZ.js";
225
225
  import "./chunk-54YZOP7P.js";
226
226
  import {
227
227
  cpLen,
@@ -235,42 +235,42 @@ import {
235
235
  stripUnsafeCharacters,
236
236
  toCodePoints,
237
237
  wrapToVisualLines
238
- } from "./chunk-7JY7VUXD.js";
238
+ } from "./chunk-536GZ6UF.js";
239
239
  import {
240
240
  getExtendedSystemInfo
241
- } from "./chunk-XNWMPPG3.js";
241
+ } from "./chunk-H3D6XAOL.js";
242
242
  import {
243
243
  formatDuration,
244
244
  formatRelativeTime,
245
245
  formatTokenCount
246
246
  } from "./chunk-KHDZHZMH.js";
247
- import "./chunk-JHP63PLH.js";
247
+ import "./chunk-4FQL7KUS.js";
248
248
  import {
249
249
  assertVoiceBaseUrlNetworkAllowed,
250
250
  isKeytermEcho,
251
251
  isStreamingVoiceModel,
252
252
  resolveVoiceStreamConfig,
253
253
  transcribeVoiceAudio
254
- } from "./chunk-RTIZGRQV.js";
254
+ } from "./chunk-RTW5ZXHO.js";
255
255
  import {
256
256
  formatUnsupportedVoiceModelMessage,
257
257
  isSelectableVoiceModel
258
- } from "./chunk-5T5W42PO.js";
258
+ } from "./chunk-4LETJLG2.js";
259
259
  import "./chunk-E7KNELIZ.js";
260
260
  import "./chunk-AHNXYU4O.js";
261
261
  import "./chunk-RNBYOUGV.js";
262
- import "./chunk-3BAKF3YM.js";
262
+ import "./chunk-G23FFNLT.js";
263
263
  import "./chunk-BJBWRCSK.js";
264
264
  import {
265
265
  loadMcpApprovals
266
- } from "./chunk-6T3WVAGP.js";
266
+ } from "./chunk-J6OET6C3.js";
267
267
  import "./chunk-WSVZFWN4.js";
268
268
  import "./chunk-S6RLAIUR.js";
269
269
  import "./chunk-MX2YXRER.js";
270
270
  import "./chunk-MZ7BABX3.js";
271
271
  import {
272
272
  createLoadedSettingsAdapter
273
- } from "./chunk-WN4MUF56.js";
273
+ } from "./chunk-5EB2HK3X.js";
274
274
  import {
275
275
  CORRUPTED_SUFFIX,
276
276
  SettingScope,
@@ -292,13 +292,13 @@ import {
292
292
  settingExistsInScope,
293
293
  validateSettingValue,
294
294
  writeOutputLanguageAndRegisterPath
295
- } from "./chunk-IH7NEHSU.js";
295
+ } from "./chunk-ABANKQYY.js";
296
296
  import {
297
297
  getCurrentLanguage,
298
298
  localizeToolDisplayName,
299
299
  t,
300
300
  ta
301
- } from "./chunk-V4TNZBAE.js";
301
+ } from "./chunk-ENKWIF75.js";
302
302
  import "./chunk-TLRYABYP.js";
303
303
  import "./chunk-4RQIB5UZ.js";
304
304
  import "./chunk-ER3BKOLB.js";
@@ -319,11 +319,11 @@ import {
319
319
  import {
320
320
  getCliVersion,
321
321
  getPackageJson
322
- } from "./chunk-R4ZCP2BQ.js";
322
+ } from "./chunk-PA7QS4X5.js";
323
323
  import {
324
324
  isWorkspaceTrusted,
325
325
  loadTrustedFolders
326
- } from "./chunk-2CLNNA2H.js";
326
+ } from "./chunk-N4HTVZDZ.js";
327
327
  import {
328
328
  clearScreen,
329
329
  writeStderrLine
@@ -332,7 +332,6 @@ import {
332
332
  require_strip_json_comments
333
333
  } from "./chunk-QYUE6W3T.js";
334
334
  import {
335
- ALIBABA_PROVIDERS,
336
335
  AsyncFzf,
337
336
  ConditionalRulesRegistry,
338
337
  DEFAULT_BUILTIN_SUBAGENT_TYPE,
@@ -350,7 +349,6 @@ import {
350
349
  TERMINAL_CSI_REGEX,
351
350
  TERMINAL_OSC_REGEX,
352
351
  TERMINAL_SHIFT_DCS_REGEX,
353
- THIRD_PARTY_PROVIDERS,
354
352
  abortSpeculation,
355
353
  acceptSpeculation,
356
354
  aggregateUsage,
@@ -373,7 +371,6 @@ import {
373
371
  fetchGitDiffHunks,
374
372
  findExistingProviderModels,
375
373
  findProviderByCredentials,
376
- findProviderById,
377
374
  fireNotificationHook,
378
375
  generatePromptSuggestion,
379
376
  generateSessionRecap,
@@ -422,8 +419,9 @@ import {
422
419
  subagentGenerator,
423
420
  validateWorkflowName,
424
421
  watchRepoBranch,
425
- writeRuntimeStatus
426
- } from "./chunk-F7WNVVM4.js";
422
+ writeRuntimeStatus,
423
+ zubriqProvider
424
+ } from "./chunk-PDITONOB.js";
427
425
  import "./chunk-5P5XGNYH.js";
428
426
  import "./chunk-SKAZWEV5.js";
429
427
  import "./chunk-K5PGHDBN.js";
@@ -477,7 +475,7 @@ import {
477
475
  recordSkillInvocation,
478
476
  removeMCPServerStatus,
479
477
  removeMCPStatusChangeListener
480
- } from "./chunk-DSZLW2GZ.js";
478
+ } from "./chunk-YRM6BC6H.js";
481
479
  import "./chunk-E6US47KI.js";
482
480
  import "./chunk-UWCTAVOD.js";
483
481
  import {
@@ -498,7 +496,10 @@ import {
498
496
  qwenOAuth2Events
499
497
  } from "./chunk-IJRL2S3D.js";
500
498
  import "./chunk-AHNJGLFV.js";
501
- import "./chunk-22IFUCVR.js";
499
+ import {
500
+ openBrowserSecurely,
501
+ shouldLaunchBrowser
502
+ } from "./chunk-22IFUCVR.js";
502
503
  import {
503
504
  atomicWriteFileSync
504
505
  } from "./chunk-7LTB54MK.js";
@@ -526,11 +527,11 @@ import {
526
527
  shortenPath,
527
528
  tildeifyPath
528
529
  } from "./chunk-22MNNNXE.js";
529
- import "./chunk-2BJBD2SI.js";
530
+ import "./chunk-LGXBB2R2.js";
530
531
  import {
531
532
  registerCleanup,
532
533
  runExitCleanup
533
- } from "./chunk-4P2SQFC6.js";
534
+ } from "./chunk-YOGGIAGF.js";
534
535
  import {
535
536
  finalizeStartupProfile,
536
537
  profileCheckpoint
@@ -2459,7 +2460,7 @@ var require_config_chain = __commonJS({
2459
2460
  var ini2 = require_ini2();
2460
2461
  var EE = __require("events").EventEmitter;
2461
2462
  var url = __require("url");
2462
- var http = __require("http");
2463
+ var http2 = __require("http");
2463
2464
  var exports = module.exports = function() {
2464
2465
  var args = [].slice.call(arguments), conf = new ConfigChain();
2465
2466
  while (args.length) {
@@ -2644,7 +2645,7 @@ var require_config_chain = __commonJS({
2644
2645
  var marker = { __source__: name };
2645
2646
  this.sources[name] = { href, type };
2646
2647
  this.push(marker);
2647
- http.request(req, function(res) {
2648
+ http2.request(req, function(res) {
2648
2649
  var c = [];
2649
2650
  var ct = res.headers["content-type"];
2650
2651
  if (!type) {
@@ -13698,45 +13699,123 @@ function ProviderSetupSteps({
13698
13699
  }
13699
13700
  __name(ProviderSetupSteps, "ProviderSetupSteps");
13700
13701
 
13702
+ // packages/cli/src/ui/auth/zubriq-token-flow.ts
13703
+ init_esbuild_shims();
13704
+ import http from "node:http";
13705
+ import crypto2 from "node:crypto";
13706
+ var ZUBRIQ_CONSOLE_URL = process.env["ZUBRIQ_CONSOLE_URL"]?.replace(/\/+$/, "") || "https://console.zubriq.by";
13707
+ var FLOW_TIMEOUT_MS = 5 * 60 * 1e3;
13708
+ var SUCCESS_HTML = `<!doctype html>
13709
+ <html lang="ru"><head><meta charset="utf-8"><title>ZubrIQ Code</title></head>
13710
+ <body style="font-family:system-ui;display:flex;align-items:center;justify-content:center;height:100vh;margin:0;background:#111;color:#eee">
13711
+ <div style="text-align:center"><h1>\u0422\u043E\u043A\u0435\u043D \u043F\u043E\u043B\u0443\u0447\u0435\u043D \u2713</h1>
13712
+ <p>\u0412\u043A\u043B\u0430\u0434\u043A\u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u0437\u0430\u043A\u0440\u043E\u0435\u0442\u0441\u044F \u2014 \u0432\u0435\u0440\u043D\u0438\u0442\u0435\u0441\u044C \u0432 \u0442\u0435\u0440\u043C\u0438\u043D\u0430\u043B.</p>
13713
+ <p style="color:#888">\u0415\u0441\u043B\u0438 \u0432\u043A\u043B\u0430\u0434\u043A\u0430 \u043D\u0435 \u0437\u0430\u043A\u0440\u044B\u043B\u0430\u0441\u044C \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438, \u0437\u0430\u043A\u0440\u043E\u0439\u0442\u0435 \u0435\u0451 \u0432\u0440\u0443\u0447\u043D\u0443\u044E.</p></div>
13714
+ <script>setTimeout(function () { window.close(); }, 1000);</script>
13715
+ </body></html>`;
13716
+ var ERROR_HTML = `<!doctype html>
13717
+ <html lang="ru"><head><meta charset="utf-8"><title>ZubrIQ Code</title></head>
13718
+ <body style="font-family:system-ui;display:flex;align-items:center;justify-content:center;height:100vh;margin:0;background:#111;color:#eee">
13719
+ <div style="text-align:center"><h1>\u0410\u0432\u0442\u043E\u0440\u0438\u0437\u0430\u0446\u0438\u044F \u043D\u0435 \u0443\u0434\u0430\u043B\u0430\u0441\u044C</h1>
13720
+ <p>\u0412\u0435\u0440\u043D\u0438\u0442\u0435\u0441\u044C \u0432 \u0442\u0435\u0440\u043C\u0438\u043D\u0430\u043B \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437.</p></div>
13721
+ </body></html>`;
13722
+ async function startZubriqTokenFlow(consoleUrl = ZUBRIQ_CONSOLE_URL) {
13723
+ const state = crypto2.randomBytes(16).toString("hex");
13724
+ let resolveToken;
13725
+ let rejectToken;
13726
+ const token = new Promise((resolve4, reject) => {
13727
+ resolveToken = resolve4;
13728
+ rejectToken = reject;
13729
+ });
13730
+ const server = http.createServer((req, res) => {
13731
+ const url = new URL(req.url ?? "/", "http://127.0.0.1");
13732
+ if (url.pathname !== "/callback") {
13733
+ res.writeHead(404).end();
13734
+ return;
13735
+ }
13736
+ const gotState = url.searchParams.get("state");
13737
+ const gotToken = url.searchParams.get("token");
13738
+ const gotError = url.searchParams.get("error");
13739
+ if (gotState !== state) {
13740
+ res.writeHead(400, { "Content-Type": "text/html; charset=utf-8" }).end(ERROR_HTML);
13741
+ return;
13742
+ }
13743
+ if (gotError || !gotToken) {
13744
+ res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" }).end(ERROR_HTML);
13745
+ finish(
13746
+ () => rejectToken(
13747
+ new Error(
13748
+ gotError === "denied" ? "Authorization was declined in the browser." : `Authorization failed: ${gotError ?? "no token received"}`
13749
+ )
13750
+ )
13751
+ );
13752
+ return;
13753
+ }
13754
+ res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" }).end(SUCCESS_HTML);
13755
+ finish(() => resolveToken(gotToken));
13756
+ });
13757
+ const timeout2 = setTimeout(() => {
13758
+ finish(
13759
+ () => rejectToken(new Error("Timed out waiting for browser authorization."))
13760
+ );
13761
+ }, FLOW_TIMEOUT_MS);
13762
+ timeout2.unref?.();
13763
+ let finished = false;
13764
+ function finish(settle) {
13765
+ if (finished) return;
13766
+ finished = true;
13767
+ clearTimeout(timeout2);
13768
+ settle();
13769
+ setTimeout(() => server.close(), 500).unref?.();
13770
+ }
13771
+ __name(finish, "finish");
13772
+ await new Promise((resolve4, reject) => {
13773
+ server.once("error", reject);
13774
+ server.listen(0, "127.0.0.1", () => resolve4());
13775
+ });
13776
+ const address = server.address();
13777
+ if (!address || typeof address !== "object") {
13778
+ server.close();
13779
+ throw new Error("Failed to start local callback server.");
13780
+ }
13781
+ const authUrl = `${consoleUrl}/cli/auth?port=${address.port}&state=${state}`;
13782
+ return {
13783
+ authUrl,
13784
+ token,
13785
+ cancel: /* @__PURE__ */ __name(() => finish(() => rejectToken(new Error("Authorization cancelled."))), "cancel")
13786
+ };
13787
+ }
13788
+ __name(startZubriqTokenFlow, "startZubriqTokenFlow");
13789
+
13701
13790
  // packages/cli/src/ui/auth/AuthDialog.tsx
13702
13791
  var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1);
13703
13792
  var MAIN_ITEMS = [
13704
13793
  {
13705
- key: "ALIBABA_MODELSTUDIO",
13706
- title: t("Alibaba ModelStudio"),
13707
- label: t("Alibaba ModelStudio"),
13794
+ key: "ZUBRIQ",
13795
+ title: t("ZubrIQ"),
13796
+ label: t("ZubrIQ"),
13708
13797
  description: t(
13709
- "Official recommended setup: Coding Plan, Token Plan, or Standard API Key"
13798
+ "Recommended: sign in via browser, the token is issued automatically"
13710
13799
  ),
13711
- value: "ALIBABA_MODELSTUDIO"
13800
+ value: "ZUBRIQ"
13712
13801
  },
13713
13802
  {
13714
- key: "THIRD_PARTY_PROVIDERS",
13715
- title: t("Third-party Providers"),
13716
- label: t("Third-party Providers"),
13717
- description: t("Choose a built-in provider and connect with an API key"),
13718
- value: "THIRD_PARTY_PROVIDERS"
13803
+ key: "ZUBRIQ_TOKEN",
13804
+ title: t("ZubrIQ \xB7 API Key"),
13805
+ label: t("ZubrIQ \xB7 API Key"),
13806
+ description: t("Paste an API key from console.zubriq.by"),
13807
+ value: "ZUBRIQ_TOKEN"
13719
13808
  },
13720
13809
  {
13721
13810
  key: "CUSTOM_PROVIDER",
13722
- title: t("Custom Provider"),
13723
- label: t("Custom Provider"),
13811
+ title: t("OpenAI Compatible"),
13812
+ label: t("OpenAI Compatible"),
13724
13813
  description: t(
13725
- "Manually connect a local server, proxy, or unsupported provider"
13814
+ "Manually connect any OpenAI-compatible server, proxy, or provider"
13726
13815
  ),
13727
13816
  value: "CUSTOM_PROVIDER"
13728
13817
  }
13729
13818
  ];
13730
- function providerToItem(config) {
13731
- return {
13732
- key: config.id,
13733
- title: t(config.label),
13734
- label: t(config.label),
13735
- description: t(config.description),
13736
- value: config.id
13737
- };
13738
- }
13739
- __name(providerToItem, "providerToItem");
13740
13819
  function getStepLabel(step, p) {
13741
13820
  if (step === "protocol") return t("Protocol");
13742
13821
  if (step === "baseUrl") {
@@ -13752,8 +13831,8 @@ function getStepLabel(step, p) {
13752
13831
  __name(getStepLabel, "getStepLabel");
13753
13832
  var VIEW_TITLES = {
13754
13833
  main: t("Connect a Provider"),
13755
- "alibaba-select": t("Alibaba ModelStudio \xB7 Access Method"),
13756
- "thirdparty-select": t("Third-party Providers \xB7 Provider")
13834
+ "zubriq-browser": t("ZubrIQ \xB7 Browser Authorization"),
13835
+ "zubriq-token": t("ZubrIQ \xB7 API Key")
13757
13836
  };
13758
13837
  function AuthDialog() {
13759
13838
  const {
@@ -13768,7 +13847,6 @@ function AuthDialog() {
13768
13847
  const [viewLevel, setViewLevel] = (0, import_react29.useState)("main");
13769
13848
  const [_viewStack, setViewStack] = (0, import_react29.useState)([]);
13770
13849
  const [mainIndex, setMainIndex] = (0, import_react29.useState)(null);
13771
- const [subMenuIndex, setSubMenuIndex] = (0, import_react29.useState)({});
13772
13850
  const setupFlow = useProviderSetupFlow(handleProviderSubmit);
13773
13851
  const clearErrors = /* @__PURE__ */ __name(() => {
13774
13852
  setErrorMessage(null);
@@ -13790,11 +13868,6 @@ function AuthDialog() {
13790
13868
  return next;
13791
13869
  });
13792
13870
  }, "goBack");
13793
- const alibabaItems = (0, import_react29.useMemo)(() => ALIBABA_PROVIDERS.map(providerToItem), []);
13794
- const thirdPartyItems = (0, import_react29.useMemo)(
13795
- () => THIRD_PARTY_PROVIDERS.map(providerToItem),
13796
- []
13797
- );
13798
13871
  const existingEnv = settings.merged.env ?? {};
13799
13872
  const getExistingModelIds = /* @__PURE__ */ __name((providerConfig) => {
13800
13873
  const saved = findExistingProviderModels(
@@ -13805,10 +13878,8 @@ function AuthDialog() {
13805
13878
  const builtinIds = new Set(getDefaultModelIds(providerConfig));
13806
13879
  return saved.models.map((m) => m.id).filter((id) => !builtinIds.has(id));
13807
13880
  }, "getExistingModelIds");
13808
- const handleProviderSelect = /* @__PURE__ */ __name((providerId) => {
13881
+ const startProviderSetup = /* @__PURE__ */ __name((providerConfig) => {
13809
13882
  clearErrors();
13810
- const providerConfig = findProviderById(providerId);
13811
- if (!providerConfig) return;
13812
13883
  setupFlow.start(
13813
13884
  providerConfig,
13814
13885
  void 0,
@@ -13816,45 +13887,91 @@ function AuthDialog() {
13816
13887
  getExistingModelIds(providerConfig)
13817
13888
  );
13818
13889
  pushView("provider-setup");
13819
- }, "handleProviderSelect");
13820
- const subMenus = {
13821
- "alibaba-select": {
13822
- items: alibabaItems,
13823
- onSelect: handleProviderSelect
13824
- },
13825
- "thirdparty-select": {
13826
- items: thirdPartyItems,
13827
- onSelect: handleProviderSelect
13828
- }
13829
- };
13830
- const activeSubMenu = subMenus[viewLevel];
13890
+ }, "startProviderSetup");
13891
+ const [browserAuthUrl, setBrowserAuthUrl] = (0, import_react29.useState)(null);
13892
+ const [browserFlowError, setBrowserFlowError] = (0, import_react29.useState)(null);
13893
+ const [manualKey, setManualKey] = (0, import_react29.useState)("");
13894
+ const browserFlowRef = (0, import_react29.useRef)(null);
13895
+ const submitRef = (0, import_react29.useRef)(handleProviderSubmit);
13896
+ submitRef.current = handleProviderSubmit;
13897
+ const closeRef = (0, import_react29.useRef)(closeAuthDialog);
13898
+ closeRef.current = closeAuthDialog;
13899
+ const applyZubriqKey = (0, import_react29.useCallback)(async (apiKey) => {
13900
+ await submitRef.current(zubriqProvider, {
13901
+ baseUrl: zubriqProvider.baseUrl,
13902
+ apiKey,
13903
+ modelIds: getDefaultModelIds(zubriqProvider)
13904
+ });
13905
+ closeRef.current();
13906
+ }, []);
13907
+ (0, import_react29.useEffect)(() => {
13908
+ if (viewLevel !== "zubriq-browser") return void 0;
13909
+ let cancelled = false;
13910
+ setBrowserAuthUrl(null);
13911
+ setBrowserFlowError(null);
13912
+ (async () => {
13913
+ try {
13914
+ const flow = await startZubriqTokenFlow();
13915
+ if (cancelled) {
13916
+ flow.cancel();
13917
+ return;
13918
+ }
13919
+ browserFlowRef.current = flow;
13920
+ setBrowserAuthUrl(flow.authUrl);
13921
+ if (shouldLaunchBrowser()) {
13922
+ openBrowserSecurely(flow.authUrl).catch(() => {
13923
+ });
13924
+ }
13925
+ const apiKey = await flow.token;
13926
+ if (cancelled) return;
13927
+ await applyZubriqKey(apiKey);
13928
+ } catch (e) {
13929
+ if (!cancelled) {
13930
+ setBrowserFlowError(e instanceof Error ? e.message : String(e));
13931
+ }
13932
+ }
13933
+ })();
13934
+ return () => {
13935
+ cancelled = true;
13936
+ browserFlowRef.current?.cancel();
13937
+ browserFlowRef.current = null;
13938
+ };
13939
+ }, [viewLevel, applyZubriqKey]);
13940
+ (0, import_react29.useEffect)(() => {
13941
+ if (viewLevel !== "zubriq-token") return;
13942
+ setManualKey("");
13943
+ setBrowserFlowError(null);
13944
+ }, [viewLevel]);
13945
+ const submitManualKey = /* @__PURE__ */ __name(() => {
13946
+ const key = manualKey.trim();
13947
+ if (!key) return;
13948
+ void applyZubriqKey(key).catch((e) => {
13949
+ setBrowserFlowError(e instanceof Error ? e.message : String(e));
13950
+ });
13951
+ }, "submitManualKey");
13831
13952
  const contentGenConfig = config.getContentGeneratorConfig();
13832
13953
  const matchedProvider = findProviderByCredentials(
13833
13954
  contentGenConfig?.baseUrl,
13834
13955
  contentGenConfig?.apiKeyEnvKey
13835
13956
  );
13836
13957
  const defaultMainIndex = (0, import_react29.useMemo)(() => {
13837
- if (matchedProvider?.uiGroup === "third-party") return 1;
13838
- if (matchedProvider?.uiGroup === "custom") return 2;
13958
+ if (matchedProvider && matchedProvider.uiGroup !== "zubriq") {
13959
+ return MAIN_ITEMS.findIndex((item) => item.value === "CUSTOM_PROVIDER");
13960
+ }
13839
13961
  return 0;
13840
13962
  }, [matchedProvider]);
13841
13963
  const handleMainSelect = /* @__PURE__ */ __name((value) => {
13842
- clearErrors();
13843
13964
  switch (value) {
13844
- case "ALIBABA_MODELSTUDIO":
13845
- pushView("alibaba-select");
13965
+ case "ZUBRIQ":
13966
+ clearErrors();
13967
+ pushView("zubriq-browser");
13846
13968
  break;
13847
- case "THIRD_PARTY_PROVIDERS":
13848
- pushView("thirdparty-select");
13969
+ case "ZUBRIQ_TOKEN":
13970
+ clearErrors();
13971
+ pushView("zubriq-token");
13849
13972
  break;
13850
13973
  case "CUSTOM_PROVIDER":
13851
- setupFlow.start(
13852
- customProvider,
13853
- void 0,
13854
- existingEnv,
13855
- getExistingModelIds(customProvider)
13856
- );
13857
- pushView("provider-setup");
13974
+ startProviderSetup(customProvider);
13858
13975
  break;
13859
13976
  default:
13860
13977
  break;
@@ -13920,25 +14037,29 @@ function AuthDialog() {
13920
14037
  itemGap: 1
13921
14038
  }
13922
14039
  ) }),
13923
- activeSubMenu && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
13924
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
13925
- DescriptiveRadioButtonSelect,
14040
+ viewLevel === "zubriq-browser" && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Box_default, { marginTop: 1, flexDirection: "column", children: browserFlowError ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Text, { color: theme.status.error, children: browserFlowError }) }) : /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
14041
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Text, { color: theme.text.primary, children: t(
14042
+ "Opening console.zubriq.by in your browser. Sign in and confirm to issue a token."
14043
+ ) }) }),
14044
+ browserAuthUrl && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Box_default, { marginTop: 1, flexDirection: "column", children: [
14045
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Text, { color: theme?.text?.secondary, children: t("If the browser didn't open, use this link:") }),
14046
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(dist_default, { url: browserAuthUrl, fallback: false, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Text, { color: theme.text.link, underline: true, children: browserAuthUrl }) })
14047
+ ] }),
14048
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Text, { color: theme?.text?.secondary, children: t("Waiting for authorization\u2026 Esc to cancel") }) })
14049
+ ] }) }),
14050
+ viewLevel === "zubriq-token" && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Box_default, { marginTop: 1, flexDirection: "column", children: [
14051
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Text, { color: theme.text.primary, children: t("Paste an API key from console.zubriq.by:") }),
14052
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
14053
+ TextInput,
13926
14054
  {
13927
- items: activeSubMenu.items,
13928
- initialIndex: subMenuIndex[viewLevel] ?? 0,
13929
- onSelect: activeSubMenu.onSelect,
13930
- onHighlight: (value) => {
13931
- setSubMenuIndex((prev) => ({
13932
- ...prev,
13933
- [viewLevel]: activeSubMenu.items.findIndex(
13934
- (i) => i.value === value
13935
- )
13936
- }));
13937
- },
13938
- itemGap: 1
13939
- }
13940
- ) }),
13941
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Text, { color: theme?.text?.secondary, children: t("Enter to select, \u2191\u2193 to navigate, Esc to go back") }) })
14055
+ value: manualKey,
14056
+ onChange: setManualKey,
14057
+ onSubmit: submitManualKey,
14058
+ placeholder: "sk-..."
14059
+ },
14060
+ "zubriq-manual-key"
14061
+ ),
14062
+ browserFlowError && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Text, { color: theme.status.error, children: browserFlowError }) })
13942
14063
  ] }),
13943
14064
  viewLevel === "provider-setup" && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ProviderSetupSteps, { flow: setupFlow }),
13944
14065
  (authError || errorMessage) && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Text, { color: theme.status.error, children: authError || errorMessage }) }),
@@ -13951,9 +14072,9 @@ function AuthDialog() {
13951
14072
  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
13952
14073
  dist_default,
13953
14074
  {
13954
- url: "https://qwenlm.github.io/qwen-code-docs/en/users/support/tos-privacy/",
14075
+ url: "https://code.zubriq.by/ru/users/support/tos-privacy/",
13955
14076
  fallback: false,
13956
- children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Text, { color: theme.text.secondary, underline: true, children: "https://qwenlm.github.io/qwen-code-docs/en/users/support/tos-privacy/" })
14077
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Text, { color: theme.text.secondary, underline: true, children: "https://code.zubriq.by/ru/users/support/tos-privacy/" })
13957
14078
  }
13958
14079
  ) })
13959
14080
  ] })
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  InProcessBackend,
5
5
  TeamManager
6
- } from "./chunk-F7WNVVM4.js";
6
+ } from "./chunk-PDITONOB.js";
7
7
  import "./chunk-5P5XGNYH.js";
8
8
  import "./chunk-SKAZWEV5.js";
9
9
  import "./chunk-K5PGHDBN.js";
@@ -38,7 +38,7 @@ import "./chunk-NQKLOAVJ.js";
38
38
  import "./chunk-WMPVYQ4P.js";
39
39
  import "./chunk-TLWA7TPR.js";
40
40
  import "./chunk-QYNNN7BK.js";
41
- import "./chunk-DSZLW2GZ.js";
41
+ import "./chunk-YRM6BC6H.js";
42
42
  import "./chunk-E6US47KI.js";
43
43
  import "./chunk-UWCTAVOD.js";
44
44
  import "./chunk-OFEVLU4C.js";