@maincode-ai/matilda-code 0.19.2 → 0.19.5
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.
- package/chunks/agent-HMAY5XP7.js +3 -0
- package/chunks/agent-headless-NWRQLNNS.js +3 -0
- package/chunks/{anthropicContentGenerator-BRG6WZK3.js → anthropicContentGenerator-CZLOMDXF.js} +11 -11
- package/chunks/{askUserQuestion-QPVUWJCI.js → askUserQuestion-V5YLTC4J.js} +1 -1
- package/chunks/{ca-D7YSARXX.js → ca-UW3G7H5I.js} +1 -1
- package/chunks/chunk-2FX4655X.js +101 -0
- package/chunks/{chunk-2MEHZGZJ.js → chunk-2XZIKUB6.js} +1 -1
- package/chunks/{chunk-RDNFN7GJ.js → chunk-3E62XAAL.js} +1 -1
- package/chunks/{chunk-X2SJJ7RN.js → chunk-3GAKPC2I.js} +2 -2
- package/chunks/chunk-3KCDX6MY.js +8 -0
- package/chunks/{chunk-X6DODPXG.js → chunk-5U3A6KMU.js} +1 -1
- package/chunks/chunk-7VGUNT5L.js +8 -0
- package/chunks/{chunk-XKNSVSWD.js → chunk-AEEMG76V.js} +2 -2
- package/chunks/chunk-C6SSPIF3.js +56 -0
- package/chunks/{chunk-DY6PIAAY.js → chunk-CFBZKYFB.js} +1 -1
- package/chunks/chunk-CLUEFPSU.js +8 -0
- package/chunks/chunk-FSRNEJQB.js +8 -0
- package/chunks/chunk-KP6BLFQS.js +12 -0
- package/chunks/{chunk-4M4CUQUR.js → chunk-NDR7ZFUA.js} +1 -1
- package/chunks/{chunk-CNHY7623.js → chunk-SUORCDGS.js} +1 -1
- package/chunks/{chunk-KMU5KAYC.js → chunk-WPZEF752.js} +490 -505
- package/chunks/chunk-XXZH7C44.js +34 -0
- package/chunks/{chunk-LN2DRVOB.js → chunk-XYA3SFGC.js} +1 -1
- package/chunks/{computer-use-MJ7WGSXA.js → computer-use-B2345U7U.js} +1 -1
- package/chunks/contextCommand-ZTMOL6TC.js +3 -0
- package/chunks/{cron-create-K35JKX3K.js → cron-create-JHL5JGIM.js} +1 -1
- package/chunks/{cron-delete-7B65R7JC.js → cron-delete-K2R3KI2W.js} +1 -1
- package/chunks/{cron-list-FCX6HCY7.js → cron-list-R3YHZBHA.js} +1 -1
- package/chunks/{de-ME75AM7Q.js → de-QSFN3SRK.js} +1 -1
- package/chunks/{edit-Y7NFRYDN.js → edit-YI2KTC5G.js} +1 -1
- package/chunks/{en-KVT5FJKO.js → en-ZU6RPTEW.js} +2 -2
- package/chunks/{enter-worktree-PVVX5BLF.js → enter-worktree-2V2D7CYW.js} +1 -1
- package/chunks/{enterPlanMode-VVRE4YBV.js → enterPlanMode-ZUCJBK26.js} +1 -1
- package/chunks/{exit-worktree-LDIOV4NM.js → exit-worktree-TNMQ6BJQ.js} +1 -1
- package/chunks/{exitPlanMode-AR4QZ4EF.js → exitPlanMode-3V2VGFJI.js} +1 -1
- package/chunks/{fr-V3O5JG5W.js → fr-FKTJ4COX.js} +2 -2
- package/chunks/geminiContentGenerator-DLT3FIFM.js +8 -0
- package/chunks/{glob-6H2PV6X4.js → glob-DK4XLD6I.js} +1 -1
- package/chunks/grep-HHKDBU7B.js +22 -0
- package/chunks/{ja-ZOFFSG6C.js → ja-GKS4GLZP.js} +1 -1
- package/chunks/{ls-ZSHUDEJV.js → ls-4QPI2E7A.js} +1 -1
- package/chunks/{lsp-DW3UNQQ6.js → lsp-P3GKBOP3.js} +1 -1
- package/chunks/{matildaAgentContentGenerator-B7FZY5QT.js → matildaAgentContentGenerator-WANX4W2Y.js} +9 -9
- package/chunks/matildaContentGenerator-YNM53I6M.js +8 -0
- package/chunks/monitor-JVPMYOZ2.js +32 -0
- package/chunks/notebook-edit-TSASMGK7.js +17 -0
- package/chunks/openaiContentGenerator-5VMLKMVG.js +3 -0
- package/chunks/{pt-K2W3KMTP.js → pt-VIW62ZAE.js} +1 -1
- package/chunks/{read-file-MUUE7CJM.js → read-file-HEVXSNSO.js} +1 -1
- package/chunks/ripGrep-UCUYOKAZ.js +3 -0
- package/chunks/{ru-KICZRPMQ.js → ru-FSSACF4A.js} +1 -1
- package/chunks/scheduler-LXGHE7LL.js +8 -0
- package/chunks/{send-message-BPTEYK4Y.js → send-message-K3T7GVHO.js} +1 -1
- package/chunks/{serve-DAFPBR3R.js → serve-F2OU5GL5.js} +1 -1
- package/chunks/shell-5CG25UXX.js +3 -0
- package/chunks/{skill-D23JCWUG.js → skill-YXHHDMLR.js} +1 -1
- package/chunks/src-4KXRVNR5.js +3 -0
- package/chunks/{symbol-search-3E5XK5S6.js → symbol-search-WVNUJRET.js} +1 -1
- package/chunks/{syntheticOutput-NSQJLEEY.js → syntheticOutput-LLA4WQR7.js} +1 -1
- package/chunks/{task-create-TQI5N4YR.js → task-create-ZZTSVXZN.js} +1 -1
- package/chunks/{task-list-DQBF34BK.js → task-list-6I64SK7E.js} +1 -1
- package/chunks/{task-stop-5R44O4NK.js → task-stop-UKRXMCZV.js} +1 -1
- package/chunks/{task-update-PL2JDIF6.js → task-update-XZWORLJB.js} +1 -1
- package/chunks/{team-create-B3K7PIQ5.js → team-create-ESOAIRWA.js} +1 -1
- package/chunks/{team-delete-LWX4LMFZ.js → team-delete-DEPXAMUE.js} +1 -1
- package/chunks/{todoWrite-V4DQMEDR.js → todoWrite-DKJAYA4S.js} +1 -1
- package/chunks/{tool-search-UA3I7UV3.js → tool-search-47TA6SG4.js} +1 -1
- package/chunks/update-goal-DH2TEYYU.js +16 -0
- package/chunks/{web-fetch-XRYT2EOQ.js → web-fetch-5F7C7MXU.js} +1 -1
- package/chunks/{web-search-MD3V4NBD.js → web-search-N6QM6PXT.js} +1 -1
- package/chunks/{workflow-A2P7P7KO.js → workflow-AGPUPU65.js} +2 -2
- package/chunks/write-file-XJ2S7TR3.js +11 -0
- package/chunks/{zh-C5PHBN3U.js → zh-I4FV25MS.js} +2 -2
- package/chunks/{zh-TW-IYMR6KR3.js → zh-TW-7HNBEDIB.js} +2 -2
- package/cli.js +462 -461
- package/locales/ca.js +6 -2
- package/locales/de.js +5 -3
- package/locales/en.js +7 -4
- package/locales/fr.js +4 -2
- package/locales/ja.js +6 -2
- package/locales/pt.js +4 -2
- package/locales/ru.js +4 -2
- package/locales/zh-TW.js +7 -4
- package/locales/zh.js +7 -4
- package/package.json +2 -2
- package/chunks/agent-XKRS7SDN.js +0 -3
- package/chunks/agent-headless-5UTXGWJL.js +0 -3
- package/chunks/chunk-APVMKC4S.js +0 -101
- package/chunks/chunk-OQ73WWR4.js +0 -8
- package/chunks/chunk-R6YTDM76.js +0 -8
- package/chunks/chunk-S32ZN6LD.js +0 -12
- package/chunks/chunk-WQNABJ5R.js +0 -38
- package/chunks/contextCommand-AGXIRVKU.js +0 -3
- package/chunks/geminiContentGenerator-35P4NFWN.js +0 -8
- package/chunks/grep-OMYHSNBF.js +0 -22
- package/chunks/matildaContentGenerator-DQOUSFU3.js +0 -8
- package/chunks/monitor-LY6HMAGP.js +0 -32
- package/chunks/notebook-edit-PY3T4RHL.js +0 -17
- package/chunks/openaiContentGenerator-A42WRFRC.js +0 -3
- package/chunks/ripGrep-BJRH2OAQ.js +0 -3
- package/chunks/scheduler-MFP5BJTP.js +0 -8
- package/chunks/shell-YAP6NQTT.js +0 -3
- package/chunks/src-77YCXW6G.js +0 -3
- package/chunks/write-file-TTOYKZTG.js +0 -11
package/locales/ca.js
CHANGED
|
@@ -1326,7 +1326,10 @@ export default {
|
|
|
1326
1326
|
'Press Ctrl+C again to exit.': 'Premeu Ctrl+C de nou per sortir.',
|
|
1327
1327
|
'Press Ctrl+D again to exit.': 'Premeu Ctrl+D de nou per sortir.',
|
|
1328
1328
|
'Press Esc again to clear.': 'Premeu Esc de nou per esborrar.',
|
|
1329
|
-
'Press
|
|
1329
|
+
'Press Enter (empty) to send now · ↑ to edit':
|
|
1330
|
+
'Premeu ↑ per editar els missatges en cua',
|
|
1331
|
+
'Steering with queued message…': 'Steering with queued message…',
|
|
1332
|
+
'Request cancelled.': 'Request cancelled.',
|
|
1330
1333
|
|
|
1331
1334
|
// ============================================================================
|
|
1332
1335
|
// Estat MCP
|
|
@@ -1409,7 +1412,8 @@ export default {
|
|
|
1409
1412
|
// ============================================================================
|
|
1410
1413
|
// Pantalla de sortida / Estadístiques
|
|
1411
1414
|
// ============================================================================
|
|
1412
|
-
'
|
|
1415
|
+
'Time for Matilda to sleep. Catchya!':
|
|
1416
|
+
'Hora de que Matilda dormi. Fins aviat!',
|
|
1413
1417
|
'To continue this session, run': 'Per continuar aquesta sessió, executeu',
|
|
1414
1418
|
'Interaction Summary': 'Resum de la interacció',
|
|
1415
1419
|
'Session ID:': 'ID de sessió:',
|
package/locales/de.js
CHANGED
|
@@ -1294,8 +1294,10 @@ export default {
|
|
|
1294
1294
|
'Press Ctrl+C again to exit.': 'Drücken Sie erneut Ctrl+C zum Beenden.',
|
|
1295
1295
|
'Press Ctrl+D again to exit.': 'Drücken Sie erneut Ctrl+D zum Beenden.',
|
|
1296
1296
|
'Press Esc again to clear.': 'Drücken Sie erneut Esc zum Löschen.',
|
|
1297
|
-
'Press ↑ to edit
|
|
1297
|
+
'Press Enter (empty) to send now · ↑ to edit':
|
|
1298
1298
|
'Drücken Sie ↑, um Nachrichten in der Warteschlange zu bearbeiten',
|
|
1299
|
+
'Steering with queued message…': 'Steering with queued message…',
|
|
1300
|
+
'Request cancelled.': 'Request cancelled.',
|
|
1299
1301
|
|
|
1300
1302
|
// ============================================================================
|
|
1301
1303
|
// MCP Status
|
|
@@ -1344,8 +1346,8 @@ export default {
|
|
|
1344
1346
|
// ============================================================================
|
|
1345
1347
|
// Exit Screen / Stats
|
|
1346
1348
|
// ============================================================================
|
|
1347
|
-
'
|
|
1348
|
-
'
|
|
1349
|
+
'Time for Matilda to sleep. Catchya!':
|
|
1350
|
+
'Zeit für Matilda, schlafen zu gehen. Bis dann!',
|
|
1349
1351
|
'To continue this session, run':
|
|
1350
1352
|
'Um diese Sitzung fortzusetzen, führen Sie aus',
|
|
1351
1353
|
'Interaction Summary': 'Interaktionszusammenfassung',
|
package/locales/en.js
CHANGED
|
@@ -1386,7 +1386,10 @@ export default {
|
|
|
1386
1386
|
'Press Ctrl+C again to exit.': 'Press Ctrl+C again to exit.',
|
|
1387
1387
|
'Press Ctrl+D again to exit.': 'Press Ctrl+D again to exit.',
|
|
1388
1388
|
'Press Esc again to clear.': 'Press Esc again to clear.',
|
|
1389
|
-
'Press
|
|
1389
|
+
'Press Enter (empty) to send now · ↑ to edit':
|
|
1390
|
+
'Press Enter (empty) to send now · ↑ to edit',
|
|
1391
|
+
'Steering with queued message…': 'Steering with queued message…',
|
|
1392
|
+
'Request cancelled.': 'Request cancelled.',
|
|
1390
1393
|
|
|
1391
1394
|
// ============================================================================
|
|
1392
1395
|
// MCP Status
|
|
@@ -1468,7 +1471,7 @@ export default {
|
|
|
1468
1471
|
// ============================================================================
|
|
1469
1472
|
// Exit Screen / Stats
|
|
1470
1473
|
// ============================================================================
|
|
1471
|
-
'
|
|
1474
|
+
'Time for Matilda to sleep. Catchya!': 'Time for Matilda to sleep. Catchya!',
|
|
1472
1475
|
'To continue this session, run': 'To continue this session, run',
|
|
1473
1476
|
'Interaction Summary': 'Interaction Summary',
|
|
1474
1477
|
'Session ID:': 'Session ID:',
|
|
@@ -1801,8 +1804,8 @@ export default {
|
|
|
1801
1804
|
'Press Ctrl+O to show full tool output',
|
|
1802
1805
|
'Switch to plan mode or exit plan mode':
|
|
1803
1806
|
'Switch to plan mode or exit plan mode',
|
|
1804
|
-
'Set a goal — keep working until the condition is met':
|
|
1805
|
-
'Set a goal — keep working until the condition is met',
|
|
1807
|
+
'Set a goal — keep working until the condition is met (pause/resume/clear)':
|
|
1808
|
+
'Set a goal — keep working until the condition is met (pause/resume/clear)',
|
|
1806
1809
|
'Exited plan mode. Previous approval mode restored.':
|
|
1807
1810
|
'Exited plan mode. Previous approval mode restored.',
|
|
1808
1811
|
'Enabled plan mode. The agent will analyze and plan without executing tools.':
|
package/locales/fr.js
CHANGED
|
@@ -1406,7 +1406,7 @@ export default {
|
|
|
1406
1406
|
// ============================================================================
|
|
1407
1407
|
// Écran de sortie / Stats
|
|
1408
1408
|
// ============================================================================
|
|
1409
|
-
'
|
|
1409
|
+
'Time for Matilda to sleep. Catchya!': 'Matilda va se reposer. À plus !',
|
|
1410
1410
|
'To continue this session, run': 'Pour continuer cette session, exécutez',
|
|
1411
1411
|
'Interaction Summary': "Résumé de l'interaction",
|
|
1412
1412
|
'Session ID:': 'ID de session :',
|
|
@@ -1846,8 +1846,10 @@ export default {
|
|
|
1846
1846
|
'Pas en mode plan. Utilisez "/plan" pour entrer en mode plan d\'abord.',
|
|
1847
1847
|
"Set up Matilda's status line UI":
|
|
1848
1848
|
"Configurer l'interface de la barre de statut de Matilda",
|
|
1849
|
-
'Press ↑ to edit
|
|
1849
|
+
'Press Enter (empty) to send now · ↑ to edit':
|
|
1850
1850
|
'Appuyez sur ↑ pour modifier les messages en file d’attente',
|
|
1851
|
+
'Steering with queued message…': 'Steering with queued message…',
|
|
1852
|
+
'Request cancelled.': 'Request cancelled.',
|
|
1851
1853
|
'Drop a MATILDA.md in the project so Matilda keeps persistent context.':
|
|
1852
1854
|
'Ajoutez un fichier MATILDA.md pour donner à Matilda un contexte de projet persistant.',
|
|
1853
1855
|
'Duck out of the main thread with /btw — quick side question, same chat.':
|
package/locales/ja.js
CHANGED
|
@@ -1036,7 +1036,10 @@ export default {
|
|
|
1036
1036
|
'Press Ctrl+C again to exit.': 'Ctrl+C をもう一度押すと終了します',
|
|
1037
1037
|
'Press Ctrl+D again to exit.': 'Ctrl+D をもう一度押すと終了します',
|
|
1038
1038
|
'Press Esc again to clear.': 'Esc をもう一度押すとクリアします',
|
|
1039
|
-
'Press
|
|
1039
|
+
'Press Enter (empty) to send now · ↑ to edit':
|
|
1040
|
+
'↑ を押してキュー内のメッセージを編集',
|
|
1041
|
+
'Steering with queued message…': 'Steering with queued message…',
|
|
1042
|
+
'Request cancelled.': 'Request cancelled.',
|
|
1040
1043
|
// MCP Status
|
|
1041
1044
|
'⏳ MCP servers are starting up ({{count}} initializing)...':
|
|
1042
1045
|
'⏳ MCP servers を起動中({{count}} 初期化中)...',
|
|
@@ -1102,7 +1105,8 @@ export default {
|
|
|
1102
1105
|
'Conversation getting long? /compress rolls it up and frees context.':
|
|
1103
1106
|
'会話が長くなりましたか? /compress は履歴を要約してコンテキストを空けます。',
|
|
1104
1107
|
// Exit Screen / Stats
|
|
1105
|
-
'
|
|
1108
|
+
'Time for Matilda to sleep. Catchya!':
|
|
1109
|
+
'Matilda、おやすみの時間です。またな!',
|
|
1106
1110
|
'To continue this session, run': 'このセッションを続行するには、次を実行:',
|
|
1107
1111
|
'Interaction Summary': 'インタラクション概要',
|
|
1108
1112
|
'Session ID:': 'セッションID:',
|
package/locales/pt.js
CHANGED
|
@@ -1295,8 +1295,10 @@ export default {
|
|
|
1295
1295
|
'Press Ctrl+C again to exit.': 'Pressione Ctrl+C novamente para sair.',
|
|
1296
1296
|
'Press Ctrl+D again to exit.': 'Pressione Ctrl+D novamente para sair.',
|
|
1297
1297
|
'Press Esc again to clear.': 'Pressione Esc novamente para limpar.',
|
|
1298
|
-
'Press ↑ to edit
|
|
1298
|
+
'Press Enter (empty) to send now · ↑ to edit':
|
|
1299
1299
|
'Pressione ↑ para editar mensagens na fila',
|
|
1300
|
+
'Steering with queued message…': 'Steering with queued message…',
|
|
1301
|
+
'Request cancelled.': 'Request cancelled.',
|
|
1300
1302
|
|
|
1301
1303
|
// ============================================================================
|
|
1302
1304
|
// MCP Status
|
|
@@ -1376,7 +1378,7 @@ export default {
|
|
|
1376
1378
|
// ============================================================================
|
|
1377
1379
|
// Exit Screen / Stats
|
|
1378
1380
|
// ============================================================================
|
|
1379
|
-
'
|
|
1381
|
+
'Time for Matilda to sleep. Catchya!': 'Hora da Matilda dormir. Até logo!',
|
|
1380
1382
|
'To continue this session, run': 'Para continuar esta sessão, execute',
|
|
1381
1383
|
'Interaction Summary': 'Resumo da Interação',
|
|
1382
1384
|
'Session ID:': 'ID da Sessão:',
|
package/locales/ru.js
CHANGED
|
@@ -1241,8 +1241,10 @@ export default {
|
|
|
1241
1241
|
'Press Ctrl+C again to exit.': 'Нажмите Ctrl+C снова для выхода.',
|
|
1242
1242
|
'Press Ctrl+D again to exit.': 'Нажмите Ctrl+D снова для выхода.',
|
|
1243
1243
|
'Press Esc again to clear.': 'Нажмите Esc снова для очистки.',
|
|
1244
|
-
'Press ↑ to edit
|
|
1244
|
+
'Press Enter (empty) to send now · ↑ to edit':
|
|
1245
1245
|
'Нажмите ↑ для редактирования сообщений в очереди',
|
|
1246
|
+
'Steering with queued message…': 'Steering with queued message…',
|
|
1247
|
+
'Request cancelled.': 'Request cancelled.',
|
|
1246
1248
|
|
|
1247
1249
|
// ============================================================================
|
|
1248
1250
|
// Статус MCP
|
|
@@ -1292,7 +1294,7 @@ export default {
|
|
|
1292
1294
|
// ============================================================================
|
|
1293
1295
|
// Экран выхода / Статистика
|
|
1294
1296
|
// ============================================================================
|
|
1295
|
-
'
|
|
1297
|
+
'Time for Matilda to sleep. Catchya!': 'Matilda идёт спать. Пока!',
|
|
1296
1298
|
'To continue this session, run': 'Для продолжения этой сессии, выполните',
|
|
1297
1299
|
'Interaction Summary': 'Сводка взаимодействия',
|
|
1298
1300
|
'Session ID:': 'ID сессии:',
|
package/locales/zh-TW.js
CHANGED
|
@@ -1169,7 +1169,10 @@ export default {
|
|
|
1169
1169
|
'Press Ctrl+C again to exit.': '再次按 Ctrl+C 退出',
|
|
1170
1170
|
'Press Ctrl+D again to exit.': '再次按 Ctrl+D 退出',
|
|
1171
1171
|
'Press Esc again to clear.': '再次按 Esc 清除',
|
|
1172
|
-
'Press
|
|
1172
|
+
'Press Enter (empty) to send now · ↑ to edit':
|
|
1173
|
+
'按 Enter(空)立即發送 · ↑ 編輯',
|
|
1174
|
+
'Steering with queued message…': '正在用佇列訊息轉向…',
|
|
1175
|
+
'Request cancelled.': '請求已取消。',
|
|
1173
1176
|
'No MCP servers configured.': '未配置 MCP servers',
|
|
1174
1177
|
'⏳ MCP servers are starting up ({{count}} initializing)...':
|
|
1175
1178
|
'⏳ MCP servers 正在啟動({{count}} 個正在初始化)...',
|
|
@@ -1237,7 +1240,7 @@ export default {
|
|
|
1237
1240
|
'上下文空間不足,用 /compress 釋放空間。',
|
|
1238
1241
|
'Conversation getting long? /compress rolls it up and frees context.':
|
|
1239
1242
|
'對話變長了?用 /compress 捲起來並釋放上下文。',
|
|
1240
|
-
'
|
|
1243
|
+
'Time for Matilda to sleep. Catchya!': 'Matilda 該睡覺了,下次見!',
|
|
1241
1244
|
'To continue this session, run': '要繼續此會話,請運行',
|
|
1242
1245
|
'Interaction Summary': '交互摘要',
|
|
1243
1246
|
'Session ID:': '會話 ID:',
|
|
@@ -1488,8 +1491,8 @@ export default {
|
|
|
1488
1491
|
'緊湊模式下隱藏工具輸出和思考過程,界面更簡潔(Ctrl+O 切換)。',
|
|
1489
1492
|
'Press Ctrl+O to show full tool output': '按 Ctrl+O 查看詳細工具調用結果',
|
|
1490
1493
|
'Switch to plan mode or exit plan mode': '切換到計劃模式或退出計劃模式',
|
|
1491
|
-
'Set a goal — keep working until the condition is met':
|
|
1492
|
-
'設定目標 —
|
|
1494
|
+
'Set a goal — keep working until the condition is met (pause/resume/clear)':
|
|
1495
|
+
'設定目標 — 持續工作直到條件滿足(暫停/恢復/清除)',
|
|
1493
1496
|
'Exited plan mode. Previous approval mode restored.':
|
|
1494
1497
|
'已退出計劃模式,已恢復之前的審批模式。',
|
|
1495
1498
|
'Enabled plan mode. The agent will analyze and plan without executing tools.':
|
package/locales/zh.js
CHANGED
|
@@ -1317,7 +1317,10 @@ export default {
|
|
|
1317
1317
|
'Press Ctrl+C again to exit.': '再次按 Ctrl+C 退出',
|
|
1318
1318
|
'Press Ctrl+D again to exit.': '再次按 Ctrl+D 退出',
|
|
1319
1319
|
'Press Esc again to clear.': '再次按 Esc 清除',
|
|
1320
|
-
'Press
|
|
1320
|
+
'Press Enter (empty) to send now · ↑ to edit':
|
|
1321
|
+
'按 Enter(空)立即发送 · ↑ 编辑',
|
|
1322
|
+
'Steering with queued message…': '正在用排队消息转向…',
|
|
1323
|
+
'Request cancelled.': '请求已取消。',
|
|
1321
1324
|
|
|
1322
1325
|
// ============================================================================
|
|
1323
1326
|
// MCP Status
|
|
@@ -1398,7 +1401,7 @@ export default {
|
|
|
1398
1401
|
// ============================================================================
|
|
1399
1402
|
// Exit Screen / Stats
|
|
1400
1403
|
// ============================================================================
|
|
1401
|
-
'
|
|
1404
|
+
'Time for Matilda to sleep. Catchya!': 'Matilda 该睡觉了,下次见!',
|
|
1402
1405
|
'To continue this session, run': '要继续此会话,请运行',
|
|
1403
1406
|
'Interaction Summary': '交互摘要',
|
|
1404
1407
|
'Session ID:': '会话 ID:',
|
|
@@ -1693,8 +1696,8 @@ export default {
|
|
|
1693
1696
|
'紧凑模式下隐藏工具输出和思考过程,界面更简洁(Ctrl+O 切换)。',
|
|
1694
1697
|
'Press Ctrl+O to show full tool output': '按 Ctrl+O 查看详细工具调用结果',
|
|
1695
1698
|
'Switch to plan mode or exit plan mode': '切换到计划模式或退出计划模式',
|
|
1696
|
-
'Set a goal — keep working until the condition is met':
|
|
1697
|
-
'设定目标 —
|
|
1699
|
+
'Set a goal — keep working until the condition is met (pause/resume/clear)':
|
|
1700
|
+
'设定目标 — 持续工作直到条件满足(暂停/恢复/清除)',
|
|
1698
1701
|
'Exited plan mode. Previous approval mode restored.':
|
|
1699
1702
|
'已退出计划模式,已恢复之前的审批模式。',
|
|
1700
1703
|
'Enabled plan mode. The agent will analyze and plan without executing tools.':
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maincode-ai/matilda-code",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.5",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "cli.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"bundled"
|
|
23
23
|
],
|
|
24
24
|
"config": {
|
|
25
|
-
"sandboxImageUri": "ghcr.io/maincode/matilda-code:0.19.
|
|
25
|
+
"sandboxImageUri": "ghcr.io/maincode/matilda-code:0.19.5"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {},
|
|
28
28
|
"optionalDependencies": {
|
package/chunks/agent-XKRS7SDN.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
// Force strict mode and setup for ESM
|
|
2
|
-
"use strict";
|
|
3
|
-
import{Rf as a,Sf as b,Tf as c,Uf as d,Vf as e,Wf as f}from"./chunk-KMU5KAYC.js";import"./chunk-TZIDSCTF.js";import"./chunk-FUNLOUYI.js";import"./chunk-R3H6IWFK.js";import"./chunk-OMZ5SGMK.js";import"./chunk-S32ZN6LD.js";import"./chunk-OQ73WWR4.js";import"./chunk-RBG4ERTN.js";import"./chunk-TXMXCR7D.js";import"./chunk-YULUB745.js";import"./chunk-LQWORCPO.js";import"./chunk-TISQNFB5.js";import"./chunk-47XR7IMP.js";import"./chunk-QEI3OETI.js";import"./chunk-QKYGQLWC.js";import"./chunk-MNGFXISD.js";import"./chunk-4R2OFVPK.js";import"./chunk-RNKDFE2S.js";import"./chunk-EMWHQSMS.js";import"./chunk-S4K76QPI.js";import"./chunk-APVMKC4S.js";import"./chunk-4F4DA5UI.js";import"./chunk-2MEHZGZJ.js";import"./chunk-LN2DRVOB.js";import"./chunk-4J6DC24J.js";import"./chunk-LJR4RZZ2.js";import"./chunk-U347OO7S.js";import"./chunk-DY6PIAAY.js";import"./chunk-WVY2P6WH.js";import"./chunk-UIRBHC5X.js";import"./chunk-UY2R3ZQ4.js";import"./chunk-4M4CUQUR.js";import"./chunk-X6DODPXG.js";import"./chunk-LLQVLTPB.js";import"./chunk-XKDGRW3K.js";import"./chunk-ESSYHTAZ.js";import"./chunk-IOCF4XSR.js";import"./chunk-QWBNNEV2.js";import"./chunk-G7R2XEEF.js";import"./chunk-OA56BXPD.js";import"./chunk-FWDMPRKU.js";import"./chunk-GZPNIYVZ.js";import"./chunk-OWGSC52X.js";export{f as AgentTool,b as TOOL_REGISTRY_REBUILT,e as createApprovalModeOverride,c as hasRebuiltToolRegistry,d as rebuildToolRegistryOnOverride,a as resolveSubagentApprovalMode};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
// Force strict mode and setup for ESM
|
|
2
|
-
"use strict";
|
|
3
|
-
import{qf as a,rf as b,sf as c}from"./chunk-KMU5KAYC.js";import"./chunk-TZIDSCTF.js";import"./chunk-FUNLOUYI.js";import"./chunk-R3H6IWFK.js";import"./chunk-OMZ5SGMK.js";import"./chunk-S32ZN6LD.js";import"./chunk-OQ73WWR4.js";import"./chunk-RBG4ERTN.js";import"./chunk-TXMXCR7D.js";import"./chunk-YULUB745.js";import"./chunk-LQWORCPO.js";import"./chunk-TISQNFB5.js";import"./chunk-47XR7IMP.js";import"./chunk-QEI3OETI.js";import"./chunk-QKYGQLWC.js";import"./chunk-MNGFXISD.js";import"./chunk-4R2OFVPK.js";import"./chunk-RNKDFE2S.js";import"./chunk-EMWHQSMS.js";import"./chunk-S4K76QPI.js";import"./chunk-APVMKC4S.js";import"./chunk-4F4DA5UI.js";import"./chunk-2MEHZGZJ.js";import"./chunk-LN2DRVOB.js";import"./chunk-4J6DC24J.js";import"./chunk-LJR4RZZ2.js";import"./chunk-U347OO7S.js";import"./chunk-DY6PIAAY.js";import"./chunk-WVY2P6WH.js";import"./chunk-UIRBHC5X.js";import"./chunk-UY2R3ZQ4.js";import"./chunk-4M4CUQUR.js";import"./chunk-X6DODPXG.js";import"./chunk-LLQVLTPB.js";import"./chunk-XKDGRW3K.js";import"./chunk-ESSYHTAZ.js";import"./chunk-IOCF4XSR.js";import"./chunk-QWBNNEV2.js";import"./chunk-G7R2XEEF.js";import"./chunk-OA56BXPD.js";import"./chunk-FWDMPRKU.js";import"./chunk-GZPNIYVZ.js";import"./chunk-OWGSC52X.js";export{c as AgentHeadless,a as ContextState,b as templateString};
|
package/chunks/chunk-APVMKC4S.js
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
// Force strict mode and setup for ESM
|
|
2
|
-
"use strict";
|
|
3
|
-
import{a as U,d as rt}from"./chunk-4F4DA5UI.js";import{a as ot,b as it,e as Ie,n as at,q as W,r as st}from"./chunk-LN2DRVOB.js";import{b as A,e as B}from"./chunk-4J6DC24J.js";import{Jc as et,Kc as tt,Mb as Xe,Mc as nt,Pb as Ze,Rb as Qe,Sa as K,Wa as ve,Xa as _e,Ya as xe,eb as be,f as P,fb as F,tb as Q,ub as ee}from"./chunk-DY6PIAAY.js";import{L as Ye,Y as b,c as qe,d as j,e as H}from"./chunk-QWBNNEV2.js";import{h as k,l as Se,n as Bt}from"./chunk-FWDMPRKU.js";import{b as f}from"./chunk-GZPNIYVZ.js";f();f();var te=b("TAGGED_THINKING_PARSER"),lt=["<think>","<thinking>"],dt=["</think>","</thinking>"],Wt=Math.max(...lt.map(t=>t.length),...dt.map(t=>t.length));function ke(t,e,n){e&&t.push(n==="thought"?{text:e,thought:!0}:{text:e})}function Vt(t,e,n){let o=t.length-e;return o<=0||o>Wt?!1:n.some(i=>i.startsWith(t.slice(e,e+o)))}function Jt(t,e,n){return n.find(o=>t.startsWith(o,e))}var we=class{mode="text";buffer="";parse(e,n=!1){this.buffer+=e;let o=this.buffer.toLowerCase(),i=[],r="",a=0;for(;a<this.buffer.length;){let s=this.mode==="text"?lt:dt,l=Jt(o,a,s);if(l){te.debug(`taggedThinking: detected tag "${l}" at offset ${a}`),ke(i,r,this.mode),r="",this.mode=this.mode==="text"?"thought":"text",a+=l.length;continue}if(!n&&Vt(o,a,s))break;r+=this.buffer[a],a+=1}return a<this.buffer.length?(ke(i,r,this.mode),this.buffer=this.buffer.slice(a),te.debug(`taggedThinking: emitted ${i.length} part(s), buffered ${this.buffer.length} char(s)`),i):(this.buffer="",this.mode==="thought"&&r&&te.warn(`taggedThinking: flushing ${r.length} chars of unclosed thought on stream end`),ke(i,r,this.mode),te.debug(`taggedThinking: emitted ${i.length} part(s), flush complete`),i)}};function ct(t){return new we().parse(t,!0)}var w=b("CONVERTER"),Ct="(attached media from previous tool call)";function yt(t){let e=t.prompt_tokens||0,n=t.completion_tokens||0,o=t.total_tokens||0,i=t.prompt_tokens_details?.cached_tokens??t.cached_tokens??0,r=t.completion_tokens_details?.reasoning_tokens||0,a=t.usage_is_incomplete===!0||n>0&&e===0||o>0&&e===0&&n===0,s=e,l=n,d=o;return d===0&&(s>0||l>0)&&(d=s+l),{promptTokenCount:s,candidatesTokenCount:l,totalTokenCount:d,cachedContentTokenCount:i,thoughtsTokenCount:r,...a?{usageIsIncomplete:!0}:{}}}var qt=64,ut=1024;function pt(t,e){if(t.length===0)return"";if(e.emittedText.length===0)return e.emittedText=t,e.emittedLength=t.length,t;if(e.cumulativeMode){if(t.startsWith(e.emittedText)){let n=t.slice(e.emittedText.length);return e.emittedText=t,e.emittedLength=t.length,n}return e.emittedText.startsWith(t)?(w.debug(`normalizeStreamingTextDelta: cumulative rewind suppression (emitted=${e.emittedText.length}b, chunk=${t.length}b)`),""):(w.debug("normalizeStreamingTextDelta: exiting cumulative mode (chunk does not match prior accumulated text)"),e.cumulativeMode=!1,e.emittedText=t,e.emittedLength+=t.length,t)}if(t.length>e.emittedText.length&&t.startsWith(e.emittedText)){let n=e.emittedText.length,i=n>=ut&&e.emittedLength>n?e.emittedLength:n;if(t.length>i){let r=t.slice(i);return e.emittedText=t,e.emittedLength=t.length,e.cumulativeMode=!0,w.debug(`normalizeStreamingTextDelta: entered cumulative mode (prefix overlap, baseline=${n}b sliceFrom=${i}b -> curr=${t.length}b)`),r}}return t===e.emittedText?t.length>=qt?(e.cumulativeMode=!0,w.debug(`normalizeStreamingTextDelta: entered cumulative mode (exact repeat, ${t.length}b)`),""):(e.emittedLength+=t.length,t):(e.emittedText.length<ut&&(e.emittedText+=t),e.emittedLength+=t.length,t)}function Tt(t){if(!t||typeof t!="object")return t;let e=JSON.parse(JSON.stringify(t)),n=o=>{if(typeof o!="object"||o===null)return o;if(Array.isArray(o))return o.map(n);let i={};for(let[r,a]of Object.entries(o))if(r==="type"&&typeof a=="string"){let s=a.toLowerCase();s==="integer"?i[r]="integer":s==="number"?i[r]="number":i[r]=s}else r==="minimum"||r==="maximum"||r==="multipleOf"?typeof a=="string"&&!isNaN(Number(a))?i[r]=Number(a):i[r]=a:r==="minLength"||r==="maxLength"||r==="minItems"||r==="maxItems"?typeof a=="string"&&!isNaN(Number(a))?i[r]=parseInt(a,10):i[r]=a:typeof a=="object"?i[r]=n(a):i[r]=a;return i};return n(e)}async function Yt(t,e="auto"){let n=[];for(let o of t){let i;if("tool"in o?i=await o.tool():i=o,i.functionDeclarations){for(let r of i.functionDeclarations)if(r.name&&r.description){let a;r.parametersJsonSchema?a={...r.parametersJsonSchema}:r.parameters&&(a=Tt(r.parameters)),a&&(a=it(a,e)),n.push({type:"function",function:{name:r.name,description:r.description,parameters:a}})}}}return n}function Xt(t,e,n={cleanOrphanToolCalls:!0}){let o=[];return Qt(t,o),en(t.contents,o,e),o=mt(o),n.cleanOrphanToolCalls&&(o=dn(o),o=mt(o)),o}function Zt(t,e){let n=t.candidates?.[0],o=n?.content?.parts||[],i=[],r=[],a=[],s=0;for(let p of o)typeof p=="string"?r.push(p):"text"in p&&p.text?"thought"in p&&p.thought?i.push(p.text):r.push(p.text):"functionCall"in p&&p.functionCall&&(a.push({id:p.functionCall.id||`call_${s}`,type:"function",function:{name:p.functionCall.name||"",arguments:JSON.stringify(p.functionCall.args||{})}}),s+=1);let l={role:"assistant",content:r.join("")||null,refusal:null},d=i.join("");d&&(l.reasoning_content=d),a.length>0&&(l.tool_calls=a);let c=ln(n?.finishReason),g=t.usageMetadata,u={prompt_tokens:g?.promptTokenCount||0,completion_tokens:g?.candidatesTokenCount||0,total_tokens:g?.totalTokenCount||0};g?.cachedContentTokenCount!==void 0&&(u.prompt_tokens_details={cached_tokens:g.cachedContentTokenCount});let m=t.createTime?Number(t.createTime):Date.now(),h=Number.isFinite(m)?Math.floor(m/1e3):Math.floor(Date.now()/1e3);return{id:t.responseId||`gemini-${Date.now()}`,object:"chat.completion",created:h,model:t.modelVersion||e.model,choices:[{index:0,message:l,finish_reason:c,logprobs:null}],usage:u}}function Qt(t,e){if(!t.config?.systemInstruction)return;let n=Mt(t.config.systemInstruction);n&&e.push({role:"system",content:n})}function en(t,e,n){if(Array.isArray(t))for(let o of t)gt(o,e,n);else t&>(t,e,n)}function gt(t,e,n){if(typeof t=="string"){e.push({role:"user",content:t});return}if(!rn(t))return;let o=t.parts||[],i=t.role==="model"?"assistant":"user",r=[],a=[],s=[],l=0,d=new Set,c=new Set,g=[];for(let u of o){if(typeof u=="string"){r.push({type:"text",text:u});continue}"text"in u&&"thought"in u&&u.thought&&i==="assistant"&&u.text&&a.push(u.text),"text"in u&&u.text&&!("thought"in u&&u.thought)&&r.push({type:"text",text:u.text});let m=At(u,n);if(m&&i==="user"&&r.push(m),"functionCall"in u&&u.functionCall&&i==="assistant"){let h=u.functionCall.id;if(h){if(d.has(h)){w.debug(`Dropping duplicate functionCall id=${h} while converting content`);continue}d.add(h)}s.push({id:h||`call_${l}`,type:"function",function:{name:u.functionCall.name||"",arguments:JSON.stringify(u.functionCall.args||{})}}),l+=1}if(u.functionResponse&&i==="user"){let h=u.functionResponse.id;if(h){if(c.has(h))continue;c.add(h)}let p=nn(u.functionResponse,n);if(p){if(n.splitToolMedia&&Array.isArray(p.content)){let C=[],y=[];for(let T of p.content)T&&(T.type==="image_url"||T.type==="input_audio"||T.type==="video_url"||T.type==="file")?C.push(T):T&&T.type==="text"&&y.push(T);if(C.length>0){let T=y.map(S=>S.text).join(`
|
|
4
|
-
`);p.content=T||"[media attached in following user message]",g.push(...C)}}e.push(p)}}}if(g.length>0&&e.push({role:"user",content:[{type:"text",text:Ct},...g]}),i==="assistant"){if(r.length===0&&s.length===0&&a.length===0)return;let m={role:"assistant",content:r.filter(p=>p.type==="text").map(p=>p.text).join("")||(a.length>0?"":null)};s.length>0&&(m.tool_calls=s);let h=a.join("");h&&(m.reasoning_content=h),e.push(m);return}r.length>0&&e.push({role:"user",content:r})}function tn(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="object"){let e=t,n=e.output;if(typeof n=="string")return n;let o=e.error;if(typeof o=="string")return o}try{return JSON.stringify(t)??String(t)}catch{return String(t)}}function nn(t,e){let n=tn(t.response),o=[];n&&o.push({type:"text",text:n});for(let i of t.parts||[]){if("text"in i&&typeof i.text=="string"){i.text.length>0&&o.push({type:"text",text:i.text});continue}let r=At(i,e);r&&o.push(r)}return o.length===0?{role:"tool",tool_call_id:t.id||"",content:""}:{role:"tool",tool_call_id:t.id||"",content:o}}function At(t,e){let{modalities:n}=e;if(t.inlineData?.mimeType&&t.inlineData?.data){let o=t.inlineData.mimeType,i=ft(o),r=t.inlineData.displayName||o;if(i==="image")return n.image?{type:"image_url",image_url:{url:`data:${o};base64,${t.inlineData.data}`}}:L("image",r,e);if(o==="application/pdf")return n.pdf?{type:"file",file:{filename:t.inlineData.displayName||"document.pdf",file_data:`data:${o};base64,${t.inlineData.data}`}}:L("pdf",r,e);if(i==="audio"){if(!n.audio)return L("audio",r,e);let a=on(o);if(a)return{type:"input_audio",input_audio:{data:`data:${o};base64,${t.inlineData.data}`,format:a}}}return i==="video"?n.video?{type:"video_url",video_url:{url:`data:${o};base64,${t.inlineData.data}`}}:L("video",r,e):{type:"text",text:`Unsupported inline media type: ${o} (${r}).`}}if(t.fileData?.mimeType&&t.fileData?.fileUri){let o=t.fileData.displayName||"file",i=t.fileData.fileUri,r=t.fileData.mimeType,a=ft(r);if(a==="image")return n.image?{type:"image_url",image_url:{url:i}}:L("image",o,e);if(r==="application/pdf")return n.pdf?{type:"file",file:{filename:o,file_data:i}}:L("pdf",o,e);if(a==="video")return n.video?{type:"video_url",video_url:{url:i}}:L("video",o,e);let s=t.fileData.displayName?` (${t.fileData.displayName})`:"";return{type:"text",text:`Unsupported file media type: ${r}${s}.`}}return null}function L(t,e,n){w.warn(`Model '${n.model}' does not support ${t} input. Replacing with text placeholder: ${e}`);let o;return t==="pdf"?o=`This model does not support PDF input directly. The read_file tool cannot extract PDF content either. To extract text from the PDF file, try using skills if applicable, or guide user to install pdf skill by running this slash command:
|
|
5
|
-
/extensions install https://github.com/anthropics/skills:document-skills`:o=`This model does not support ${t} input. The read_file tool cannot process this type of file either. To handle this file, try using skills if applicable, or any tools installed at system wide, or let the user know you cannot process this type of file.`,{type:"text",text:`[Unsupported ${t} file: "${e}". ${o}]`}}function ft(t){return t.startsWith("image/")?"image":t.startsWith("audio/")?"audio":t.startsWith("video/")?"video":"file"}function on(t){return t.includes("wav")?"wav":t.includes("mp3")||t.includes("mpeg")?"mp3":null}function rn(t){return typeof t=="object"&&t!==null&&"role"in t&&"parts"in t&&Array.isArray(t.parts)}function Mt(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>Mt(e)).filter(Boolean).join(`
|
|
6
|
-
`):typeof t=="object"&&t!==null&&"parts"in t&&t.parts?.map(n=>typeof n=="string"?n:"text"in n&&n.text||"").filter(Boolean).join(`
|
|
7
|
-
`)||""}function Pe(t,e,n=!0){return e.responseParsingOptions?.taggedThinkingTags?e.taggedThinkingParser?e.taggedThinkingParser.parse(t,n):ct(t):t?[{text:t}]:[]}function an(t,e){let n=t.choices?.[0],o=new B;if(n){let i=[];if(!e.responseParsingOptions?.taggedThinkingTags){let r=n.message.reasoning_content??n.message.reasoning;r&&i.push({text:r,thought:!0})}if(n.message.content&&i.push(...Pe(n.message.content,e)),n.message.tool_calls){for(let r of n.message.tool_calls)if(r.function){let a={};r.function.arguments&&(a=ot(r.function.arguments,{})),i.push({functionCall:{id:r.id,name:r.function.name,args:a}})}}o.candidates=[{content:{parts:i,role:"model"},finishReason:St(n.finish_reason||"stop"),index:0,safetyRatings:[]}]}else o.candidates=[];return o.responseId=t.id,o.createTime=t.created?t.created.toString():new Date().getTime().toString(),o.modelVersion=e.model,o.promptFeedback={safetyRatings:[]},t.usage&&(o.usageMetadata=yt(t.usage)),o}function sn(t,e){let n=t.choices?.[0],o=new B,i=e.toolCallParser;if(!i)throw new Error("convertOpenAIChunkToGemini requires requestContext.toolCallParser \u2014 attach a fresh StreamingToolCallParser at stream start.");if(n){let r=[];if(!e.responseParsingOptions?.taggedThinkingTags){let d=n.delta?.reasoning_content??n.delta?.reasoning;if(d){let c=pt(d,e.reasoningDeltaState??={emittedText:"",emittedLength:0,cumulativeMode:!1});c&&r.push({text:c,thought:!0})}}if(typeof n.delta?.content=="string"){let d=pt(n.delta.content,e.textDeltaState??={emittedText:"",emittedLength:0,cumulativeMode:!1});(d||n.finish_reason)&&r.push(...Pe(d,e,!!n.finish_reason))}else n.finish_reason&&r.push(...Pe("",e,!0));if(n.delta?.tool_calls)for(let d of n.delta.tool_calls){let c=d.index??0;d.function?.arguments?i.addChunk(c,d.function.arguments,d.id,d.function.name):i.addChunk(c,"",d.id,d.function?.name)}let a=!1;if(n.finish_reason){a=i.hasIncompleteToolCalls();let d=i.getCompletedToolCalls();for(let c of d)c.name&&r.push({functionCall:{id:c.id||`call_${Date.now()}_${Math.random().toString(36).substring(2,9)}`,name:c.name,args:c.args}})}let s=a&&n.finish_reason!=="length"?"length":n.finish_reason,l={content:{parts:r,role:"model"},index:0,safetyRatings:[]};s&&(l.finishReason=St(s)),o.candidates=[l]}else o.candidates=[];return o.responseId=t.id,o.createTime=t.created?t.created.toString():new Date().getTime().toString(),o.modelVersion=e.model,o.promptFeedback={safetyRatings:[]},t.usage&&(o.usageMetadata=yt(t.usage)),o}function St(t){return t?{stop:A.STOP,length:A.MAX_TOKENS,content_filter:A.SAFETY,function_call:A.STOP,tool_calls:A.STOP}[t]||A.FINISH_REASON_UNSPECIFIED:A.FINISH_REASON_UNSPECIFIED}function ln(t){if(!t)return"stop";switch(t){case A.STOP:return"stop";case A.MAX_TOKENS:return"length";case A.SAFETY:case A.RECITATION:case A.BLOCKLIST:case A.PROHIBITED_CONTENT:case A.SPII:case A.IMAGE_SAFETY:case A.IMAGE_RECITATION:case A.IMAGE_PROHIBITED_CONTENT:case A.IMAGE_OTHER:return"content_filter";case A.NO_IMAGE:return"stop";default:return"stop"}}function Re(t){return t.role==="assistant"&&"tool_calls"in t&&Array.isArray(t.tool_calls)&&t.tool_calls.length>0}function ht(t){if(t.role!=="user"||!("content"in t)||!Array.isArray(t.content))return!1;let e=t.content[0];return e?.type==="text"&&e.text===Ct}function dn(t){let e=[],n=new Map,o=new Map,i=new Map,r=new Set,a=new Set;for(let s=0;s<t.length;s+=1){let l=t[s];if(Re(l)){let d=[],c=new Set;for(let C of l.tool_calls){let y=C.id;!y||a.has(y)||c.has(y)||(c.add(y),d.push(C))}let g=new Set,u=[],m=[],h=!1;for(let C=s+1;C<t.length;C+=1){let y=t[C];if(y.role==="tool"&&"tool_call_id"in y){if(!y.tool_call_id){h=!1;continue}c.has(y.tool_call_id)&&!g.has(y.tool_call_id)?(g.add(y.tool_call_id),u.push(C),h=!0):h=!1;continue}if(ht(y)){h&&m.push(C);continue}if(!(y.role==="assistant"&&!Re(y)))break}let p=d.filter(C=>g.has(C.id));for(let C of p)a.add(C.id);n.set(s,p),o.set(s,u),i.set(s,m)}}for(let s=0;s<t.length;s+=1){if(r.has(s))continue;let l=t[s];if(Re(l)){let d=l.reasoning_content,c=n.get(s)??[];if(c.length>0){let g={...l};g.tool_calls=c,e.push(g);for(let u of o.get(s)??[]){let m=t[u];m&&(e.push(m),r.add(u))}for(let u of i.get(s)??[]){let m=t[u];m&&(e.push(m),r.add(u))}}else if(typeof l.content=="string"&&l.content.trim()||d){let g={...l};delete g.tool_calls,e.push(g)}else w.debug(`cleanOrphanedToolCalls: dropping assistant with ${l.tool_calls.length} orphaned tool call(s) and no text/reasoning content`)}else l.role==="tool"&&"tool_call_id"in l?w.debug(`cleanOrphanedToolCalls: dropping orphaned tool response ${l.tool_call_id||"<empty>"}`):ht(l)?w.debug("cleanOrphanedToolCalls: dropping orphaned split tool media message"):e.push(l)}return e}function mt(t){let e=[];for(let n of t){if(n.role==="assistant"&&e.length>0){let o=e[e.length-1];if(o.role==="assistant"){let i="tool_calls"in o?o.tool_calls||[]:[],r="tool_calls"in n?n.tool_calls||[]:[],a=o.content,s=n.content,l=Array.isArray(a)||Array.isArray(s),d;if(l){let g=Array.isArray(a)?a:typeof a=="string"&&a?[{type:"text",text:a}]:[],u=Array.isArray(s)?s:typeof s=="string"&&s?[{type:"text",text:s}]:[];d=[...g,...u]}else d=[typeof a=="string"?a:"",typeof s=="string"?s:""].filter(Boolean).join("")||null;let c=[...i,...r];o.content=d||null,c.length>0&&(o.tool_calls=c);continue}}e.push(n)}return e}var ne={convertGeminiToolParametersToOpenAI:Tt,convertGeminiToolsToOpenAI:Yt,convertGeminiRequestToOpenAI:Xt,convertGeminiResponseToOpenAI:Zt,convertOpenAIResponseToGemini:an,convertOpenAIChunkToGemini:sn};f();import*as _ from"node:path";import{promises as re}from"node:fs";f();f();import cn from"crypto";var ie=new Uint8Array(256),oe=ie.length;function Ee(){return oe>ie.length-16&&(cn.randomFillSync(ie),oe=0),ie.slice(oe,oe+=16)}f();var M=[];for(let t=0;t<256;++t)M.push((t+256).toString(16).slice(1));function vt(t,e=0){return M[t[e+0]]+M[t[e+1]]+M[t[e+2]]+M[t[e+3]]+"-"+M[t[e+4]]+M[t[e+5]]+"-"+M[t[e+6]]+M[t[e+7]]+"-"+M[t[e+8]]+M[t[e+9]]+"-"+M[t[e+10]]+M[t[e+11]]+M[t[e+12]]+M[t[e+13]]+M[t[e+14]]+M[t[e+15]]}f();f();import un from"crypto";var Oe={randomUUID:un.randomUUID};function pn(t,e,n){if(Oe.randomUUID&&!e&&!t)return Oe.randomUUID();t=t||{};let o=t.random||(t.rng||Ee)();if(o[6]=o[6]&15|64,o[8]=o[8]&63|128,e){n=n||0;for(let i=0;i<16;++i)e[n+i]=o[i];return e}return vt(o)}var Ue=pn;import*as E from"os";var ae=b("OPENAI_LOGGER"),gn="########",fn=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function hn(t,e){let n=e||process.cwd();if(!t)return _.join(n,"logs","openai");let o=t;return t==="~"||t.startsWith("~/")?o=_.join(E.homedir(),t.slice(1)):_.isAbsolute(t)||(o=_.resolve(n,t)),_.normalize(o)}function _t(t){return t&&t.replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||void 0}function mn(t){let e=t.split("#");if(e.length!==3)return;let[,n,o]=e;if(!(!n||!o||!/^\d+$/.test(o)))return`subagent-${n}`}function Cn(t){if(t)return K(t)?_t(t):_t(mn(t))}function yn(t){if(!t)return;let e=t.indexOf(gn);if(e>0)return t.slice(0,e);if(fn.test(t))return t;let n=t.split("#");if(n.length>=3&&n[0])return n[0]}function Tn(t){let e=t?.trim(),n=yn(e);return!e&&!n?null:{...e?{promptId:e}:{},...n?{sessionId:n}:{}}}var V=class{logDir;initialized=!1;constructor(e,n){this.logDir=hn(e,n)}async initialize(){if(!this.initialized)try{await re.mkdir(this.logDir,{recursive:!0}),this.initialized=!0}catch(e){throw ae.error("Failed to initialize OpenAI logger:",e),new Error(`Failed to initialize OpenAI logger: ${e}`)}}async logInteraction(e,n,o,i){this.initialized||await this.initialize();let r=new Date().toISOString().replace(/:/g,"-"),a=Ue().slice(0,8),s=Cn(i),l=s?`openai-${r}-${a}-${s}.json`:`openai-${r}-${a}.json`,d=_.join(this.logDir,l),c={timestamp:new Date().toISOString(),request:e,response:n||null,error:o?{message:o.message,stack:o.stack}:null,context:Tn(i),system:{hostname:E.hostname(),platform:E.platform(),release:E.release(),nodeVersion:process.version}};try{return await re.writeFile(d,JSON.stringify(c,null,2),"utf-8"),d}catch(g){throw ae.error("Failed to write OpenAI log file:",g),new Error(`Failed to write OpenAI log file: ${g}`)}}async getLogFiles(e){this.initialized||await this.initialize();try{let o=(await re.readdir(this.logDir)).filter(i=>i.startsWith("openai-")&&i.endsWith(".json")).map(i=>_.join(this.logDir,i)).sort().reverse();return e?o.slice(0,e):o}catch(n){return n.code==="ENOENT"?[]:(ae.error("Failed to read OpenAI log directory:",n),[])}}async readLogFile(e){try{let n=await re.readFile(e,"utf-8");return JSON.parse(n)}catch(n){throw ae.error(`Failed to read log file ${e}:`,n),new Error(`Failed to read log file: ${n}`)}}},Lo=new V;f();var se="$runtime|";function No(t){let e=t;for(;e.startsWith(se);){let n=e.split("|").slice(2).join("|");if(!n)break;e=n}return e}f();var le=["samplingParams","timeout","maxRetries","retryErrorCodes","enableCacheControl","schemaCompliance","reasoning","contextWindowSize","customHeaders","extra_body","modalities","splitToolMedia","matildaAgentSdk","matildaAgentPurpose","matildaAgentResponseMode","openAIRequestProfile"],xt=["model","apiKey","apiKeyEnvKey","baseUrl"],de=[...xt,...le],zo={openai:{apiKey:["OPENAI_API_KEY"],baseUrl:["OPENAI_BASE_URL"],model:["OPENAI_MODEL","MATILDA_MODEL"]},anthropic:{apiKey:["ANTHROPIC_API_KEY"],baseUrl:["ANTHROPIC_BASE_URL"],model:["ANTHROPIC_MODEL"]},gemini:{apiKey:["GEMINI_API_KEY"],baseUrl:[],model:["GEMINI_MODEL"]},"vertex-ai":{apiKey:["GOOGLE_API_KEY"],baseUrl:[],model:["GOOGLE_MODEL"]},"matilda-oauth":{apiKey:[],baseUrl:[],model:[]}},jo={openai:rt,"matilda-oauth":U},ce=[{id:"coder-model",name:"coder-model",description:"Matilda 3.6 Plus \u2014 efficient hybrid model with leading coding performance",capabilities:{vision:!0}}],Ho=ce.map(t=>t.id);f();f();f();f();Bt();f();import{AsyncLocalStorage as An}from"node:async_hooks";var bt=new An;f();function It(t){let e=t.candidates?.[0]?.content?.parts;return!e||e.length===0?!1:e.some(Mn)}function Mn(t){if(t===null||typeof t!="object")return!1;let e=t;return typeof e.text=="string"&&e.text.length>0||e.functionCall!==void 0||e.inlineData!==void 0||e.executableCode!==void 0||e.thought===!0}f();import{AsyncLocalStorage as Sn}from"node:async_hooks";var kt=new Sn;function wt(){let t=kt.getStore();return{attempt:t?.attempt??1,requestSetupMs:t?.requestSetupMs,retryTotalDelayMs:t?.retryTotalDelayMs}}var D=b("LOGGING_CONTENT_GENERATOR"),vn=4096,Rt="...[truncated]",_n=vn-Rt.length,J=class{constructor(e,n,o){this.wrapped=e;this.config=n;this.modalities=o.modalities,this.splitToolMedia=o.splitToolMedia,this.generatorAuthType=o.authType,o.enableOpenAILogging&&(this.openaiLogger=new V(o.openAILoggingDir,n.getWorkingDir()),this.schemaCompliance=o.schemaCompliance)}openaiLogger;schemaCompliance;modalities;splitToolMedia;generatorAuthType;getWrapped(){return this.wrapped}logApiRequest(e,n,o){let i=JSON.stringify(e);Xe(this.config,new et(n,o,i,P.getStore()))}_logApiResponse(e,n,o,i,r,a){Qe(this.config,new nt(e,o,n,i,this.generatorAuthType,r,a,P.getStore()))}_logApiError(e,n,o,i,r){let a=qe(o),s=H(o),l=o?.requestID||o?.request_id||e,d=j(o);Ze(this.config,new tt({responseId:l,model:i,durationMs:n,promptId:r,authType:this.generatorAuthType,errorMessage:a,errorType:s,statusCode:d,subagentName:P.getStore()}))}safelyLogApiError(e,n,o,i,r){try{this._logApiError(e,n,o,i,r)}catch(a){D.warn("Failed to log API error:",a)}}safelyLogApiResponse(e,n,o,i,r,a){try{this._logApiResponse(e,n,o,i,r,a)}catch(s){D.warn("Failed to log API response:",s)}}async generateContent(e,n){let o=wt(),i=be(e.model,n);try{i.setAttribute("llm_request.stream",!1)}catch{}let r=Se.setSpan(k.active(),i),a=Date.now(),s=K(n),l=this.startCaptureSession();try{Ie.recordGenerateContentRequest(e,{stream:!1,source:"generateContent"}),s||(ve(this.config,i,e.config?.systemInstruction),_e(this.config,i,e.config?.tools));let d=await k.with(r,async()=>{s||this.logApiRequest(this.toContents(e.contents),e.model,n);let c=await l.wrap(()=>this.wrapped.generateContent(e,n)),g=Date.now()-a,u=s?void 0:this.extractResponseText(c);s||xe(this.config,i,u),this.safelyLogApiResponse(c.responseId??"",g,c.modelVersion||e.model,n,c.usageMetadata,u);try{await this.safelyLogOpenAIInteraction(await l.resolve(e),c,void 0,n)}catch(m){D.warn("Failed to log OpenAI interaction:",m)}return c});return F(i,{success:!0,inputTokens:d.usageMetadata?.promptTokenCount,outputTokens:d.usageMetadata?.candidatesTokenCount,cachedInputTokens:d.usageMetadata?.cachedContentTokenCount,durationMs:Date.now()-a,responseId:d.responseId||void 0,finishReason:d.candidates?.[0]?.finishReason||void 0,thoughtsTokenCount:d.usageMetadata?.thoughtsTokenCount,subagentName:P.getStore()||void 0,...o}),d}catch(d){let c=Date.now()-a,g=e.config?.abortSignal?.aborted??!1;throw F(i,{success:!1,durationMs:c,error:g?ee:Q,errorType:H(d),errorStatusCode:j(d),subagentName:P.getStore()||void 0,...o}),await k.with(r,async()=>{this.safelyLogApiError("",c,d,e.model,n);try{await this.safelyLogOpenAIInteraction(await l.resolve(e),void 0,d,n)}catch(u){D.warn("Failed to log OpenAI interaction:",u)}}),d}}async generateContentStream(e,n){let o=wt(),i=be(e.model,n);try{i.setAttribute("llm_request.stream",!0)}catch{}let r=Se.setSpan(k.active(),i),a=Date.now(),s=K(n),l=this.startCaptureSession(),d;try{Ie.recordGenerateContentRequest(e,{stream:!0,source:"generateContentStream"}),s||(ve(this.config,i,e.config?.systemInstruction),_e(this.config,i,e.config?.tools)),d=await k.with(r,async()=>(s||this.logApiRequest(this.toContents(e.contents),e.model,n),l.wrap(()=>this.wrapped.generateContentStream(e,n))))}catch(g){let u=Date.now()-a;k.with(r,()=>this.safelyLogApiError("",u,g,e.model,n));let m=e.config?.abortSignal?.aborted??!1;F(i,{success:!1,durationMs:u,error:m?ee:Q,errorType:H(g),errorStatusCode:j(g),subagentName:P.getStore()||void 0,...o});try{await this.safelyLogOpenAIInteraction(await l.resolve(e),void 0,g,n)}catch(h){D.warn("Failed to log OpenAI interaction:",h)}throw g}let c;if(this.openaiLogger)try{c=await l.resolve(e)}catch(g){D.warn("Failed to resolve OpenAI request:",g)}return k.with(r,()=>this.loggingStreamWrapper(d,a,n,e.model,c,i,r,e.config?.abortSignal,o))}startCaptureSession(){let e,n=!this.openaiLogger;return{wrap:o=>n?o():bt.run(i=>{e=i},o),resolve:async o=>this.openaiLogger?e??await this.buildOpenAIRequestForLogging(o):void 0}}async*loggingStreamWrapper(e,n,o,i,r,a,s,l,d){let c=K(o),g=!c||!!this.openaiLogger,u=[],m="",h="",p,C=!1,y,T,S=P.getStore(),R,z=!1,X=v=>s?k.with(s,v):v(),Ht=5*6e4,I,We=a?()=>{z||(I!==void 0&&clearTimeout(I),I=setTimeout(()=>{try{a.setAttribute("stream.timed_out",!0)}catch{}F(a,{success:!1,durationMs:Date.now()-n,error:"Stream span timed out (idle)",responseId:m||void 0,subagentName:S||void 0,...d}),z=!0},Ht),I.unref())}:void 0;We?.();try{for await(let x of e){!m&&x.responseId&&(m=x.responseId),!h&&x.modelVersion&&(h=x.modelVersion),g&&u.push(x),x.usageMetadata&&(p=x.usageMetadata);let Je=x.candidates?.[0];Je?.finishReason&&(y=Je.finishReason),R===void 0&&It(x)&&(R=Date.now()-n),We?.(),yield x}I!==void 0&&(clearTimeout(I),I=void 0);let v=Date.now()-n,Z=g?this.consolidateGeminiResponsesForLogging(u):void 0,Ve=c?void 0:this.extractResponseText(Z);z||(X(()=>this.safelyLogApiResponse(m,v,h||i,o,p,Ve)),!c&&a&&xe(this.config,a,Ve),await X(()=>this.safelyLogOpenAIInteraction(r,Z,void 0,o)))}catch(v){if(C=!0,T=v,!z){let Z=Date.now()-n;X(()=>this.safelyLogApiError(m,Z,v,h||i,o)),await X(()=>this.safelyLogOpenAIInteraction(r,void 0,v,o))}throw v}finally{if(I!==void 0&&clearTimeout(I),a&&!z){let v=l?.aborted??!1;F(a,{success:!C,inputTokens:p?.promptTokenCount,outputTokens:p?.candidatesTokenCount,cachedInputTokens:p?.cachedContentTokenCount,ttftMs:R,durationMs:Date.now()-n,error:C?v?ee:Q:void 0,responseId:m||void 0,finishReason:y,thoughtsTokenCount:p?.thoughtsTokenCount,subagentName:S||void 0,errorType:T?H(T):void 0,errorStatusCode:T?j(T):void 0,...d})}}}async buildOpenAIRequestForLogging(e){if(!this.openaiLogger)return;let n=this.createLoggingRequestContext(e.model),o=ne.convertGeminiRequestToOpenAI(e,n,{cleanOrphanToolCalls:!1}),i={model:e.model,messages:o};return e.config?.tools&&(i.tools=await ne.convertGeminiToolsToOpenAI(e.config.tools,this.schemaCompliance??"auto")),e.config?.temperature!==void 0&&(i.temperature=e.config.temperature),e.config?.topP!==void 0&&(i.top_p=e.config.topP),e.config?.maxOutputTokens!==void 0&&(i.max_tokens=e.config.maxOutputTokens),e.config?.presencePenalty!==void 0&&(i.presence_penalty=e.config.presencePenalty),e.config?.frequencyPenalty!==void 0&&(i.frequency_penalty=e.config.frequencyPenalty),i}createLoggingRequestContext(e){return{model:e,modalities:this.modalities??{},splitToolMedia:this.splitToolMedia??!0,startTime:0}}async logOpenAIInteraction(e,n,o,i){if(!this.openaiLogger||!e)return;let r=n?this.convertGeminiResponseToOpenAIForLogging(n,e):void 0;await this.openaiLogger.logInteraction(e,r,o instanceof Error?o:o?new Error(String(o)):void 0,i)}async safelyLogOpenAIInteraction(e,n,o,i){try{await this.logOpenAIInteraction(e,n,o,i)}catch(r){D.warn("Failed to log OpenAI interaction:",r)}}convertGeminiResponseToOpenAIForLogging(e,n){return ne.convertGeminiResponseToOpenAI(e,this.createLoggingRequestContext(n.model))}consolidateGeminiResponsesForLogging(e){if(e.length===0)return;let n=new B,o=[],i=new Map,r,a;for(let d of e){d.usageMetadata&&(a=d.usageMetadata);let c=d.candidates?.[0];c?.finishReason&&(r=c.finishReason);let g=c?.content?.parts??[];for(let u of g){if(typeof u=="string"){o.push({text:u});continue}if("text"in u){u.text&&o.push({text:u.text,...u.thought?{thought:!0}:{},...u.thoughtSignature?{thoughtSignature:u.thoughtSignature}:{}});continue}if("functionCall"in u&&u.functionCall){let m=u.functionCall.id||u.functionCall.name||"tool_call",h=i.get(m),p={functionCall:u.functionCall};h!==void 0?o[h]=p:(i.set(m,o.length),o.push(p));continue}if("functionResponse"in u&&u.functionResponse){o.push({functionResponse:u.functionResponse});continue}o.push(u)}}let s=e[e.length-1],l=s.candidates?.[0];return n.responseId=s.responseId,n.createTime=s.createTime,n.modelVersion=s.modelVersion,n.promptFeedback=s.promptFeedback,n.usageMetadata=a,n.candidates=[{content:{role:l?.content?.role||"model",parts:o},...r?{finishReason:r}:{},index:0,safetyRatings:l?.safetyRatings||[]}],n}extractResponseText(e){let n=e?.candidates?.[0]?.content?.parts;if(!n?.length)return;let o="",i=!1,r=!1,a=s=>{if(i=!0,r)return;let l=_n-o.length;if(s.length<=l){o+=s;return}o+=s.slice(0,Math.max(0,l)),r=!0};for(let s of n){if(typeof s=="string"){a(s);continue}"text"in s&&typeof s.text=="string"&&!("thought"in s&&s.thought)&&a(s.text)}if(i)return r?`${o}${Rt}`:o}async countTokens(e){return this.wrapped.countTokens(e)}async embedContent(e){return this.wrapped.embedContent(e)}useSummarizedThinking(){return this.wrapped.useSummarizedThinking()}toContents(e){return Array.isArray(e)?e.map(n=>this.toContent(n)):[this.toContent(e)]}toContent(e){return Array.isArray(e)?{role:"user",parts:this.toParts(e)}:typeof e=="string"?{role:"user",parts:[{text:e}]}:"parts"in e?{...e,parts:e.parts?this.toParts(e.parts.filter(n=>n!=null)):[]}:{role:"user",parts:[this.toPart(e)]}}toParts(e){return e.map(n=>this.toPart(n))}toPart(e){if(typeof e=="string")return{text:e};if("thought"in e&&e.thought){let n=`[Thought: ${e.thought}]`,o={...e};if(delete o.thought,"functionCall"in o||"functionResponse"in o||"inlineData"in o||"fileData"in o)return o;let r=o.text,a=r?String(r):"",s=a?`${a}
|
|
8
|
-
${n}`:n;return{...o,text:s}}return e}};f();function Pt(t){switch(t){case"openai":return"OPENAI_API_KEY";case"anthropic":return"ANTHROPIC_API_KEY";case"gemini":return"GEMINI_API_KEY";case"vertex-ai":return"GOOGLE_API_KEY";default:return"API_KEY"}}function Et(t){switch(t){case"openai":return"OPENAI_MODEL";case"anthropic":return"ANTHROPIC_MODEL";case"gemini":return"GEMINI_MODEL";case"vertex-ai":return"GOOGLE_MODEL";default:return"MODEL"}}var O=class extends Error{constructor(e){super(e),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}},ue=class extends O{code="STRICT_MISSING_CREDENTIALS";constructor(e,n,o){let i=e||"(unknown)",r=n||"(unknown)";super(`Missing credentials for modelProviders model '${r}'. `+(o?`Current configured envKey: '${o}'. Set that environment variable, or update modelProviders.${i}[].envKey.`:`Configure modelProviders.${i}[].envKey and set that environment variable.`))}},pe=class extends O{code="STRICT_MISSING_MODEL_ID";constructor(e){super(`Missing model id for strict modelProviders resolution (authType: ${e}).`)}},ge=class extends O{code="MISSING_API_KEY";constructor(e){super(`Missing API key for ${e.authType} auth. Current model: '${e.model||"(unknown)"}', baseUrl: '${e.baseUrl||"(default)"}'. Provide an API key via settings (security.auth.apiKey), or set the environment variable '${e.envKey}'.`)}},fe=class extends O{code="MISSING_MODEL";constructor(e){super(`Missing model for ${e.authType} auth. Set the environment variable '${e.envKey}'.`)}},he=class extends O{code="MISSING_BASE_URL";constructor(e){super(`Missing baseUrl for modelProviders model '${e.model||"(unknown)"}'. Configure modelProviders.${e.authType||"(unknown)"}[].baseUrl.`)}},me=class extends O{code="MISSING_ANTHROPIC_BASE_URL_ENV";constructor(){super("ANTHROPIC_BASE_URL environment variable not found.")}};f();import bn from"node:process";f();var Ot={image:!0,pdf:!0,audio:!0,video:!0},xn=[[/^gemini-3/,Ot],[/^gemini-/,Ot],[/^gpt-5/,{image:!0}],[/^gpt-/,{image:!0}],[/^o\d/,{image:!0}],[/^claude-/,{image:!0,pdf:!0}],[/^matilda3\.5-plus/,{image:!0,video:!0}],[/^matilda3\.6-plus/,{image:!0,video:!0}],[/^matilda3\.7-plus/,{image:!0,video:!0}],[/^coder-model$/,{image:!0,video:!0}],[/^matilda-vl-/,{image:!0,video:!0}],[/^matilda3-vl-/,{image:!0,video:!0}],[/^matilda-code$/,{}],[/^matilda3-coder-/,{}],[/^matilda3\.6-35b/,{image:!0,video:!0}],[/^matilda/,{}],[/^deepseek/,{}],[/^glm-4\.5v/,{image:!0}],[/^glm-5(?:-|$)/,{}],[/^glm-/,{}],[/^minimax-m3/i,{image:!0,video:!0}],[/^minimax-/,{}],[/^kimi-k2\.5/,{image:!0,video:!0}],[/^kimi-/,{}],[/^doubao-seed(ance|ream)/,{}],[/^doubao-seed/,{image:!0}],[/^doubao-.*(vision|vl)/,{image:!0}],[/^doubao/,{}]];function q(t){let e=at(t);for(let[n,o]of xn)if(n.test(e))return{...o};return{}}f();var Ut=class t{modelRegistry;currentAuthType;_generationConfig;generationConfigSources;strictModelProviderSelection=!1;requireCachedMatildaCredentialsOnce=!1;hasManualCredentials=!1;onModelChange;authTypeWasExplicitlyProvided;runtimeModelSnapshots=new Map;activeRuntimeModelSnapshotId;static deepClone(e){if(e===null||typeof e!="object")return e;if(Array.isArray(e))return e.map(o=>t.deepClone(o));let n={};for(let o of Object.keys(e))n[o]=t.deepClone(e[o]);return n}constructor(e={}){this.modelRegistry=new Ce(e.modelProvidersConfig),this.onModelChange=e.onModelChange,this._generationConfig={...e.generationConfig||{}},this.generationConfigSources=e.generationConfigSources||{},this.authTypeWasExplicitlyProvided=e.initialAuthType!==void 0,this.currentAuthType=e.initialAuthType}createStateSnapshotForRollback(){return{currentAuthType:this.currentAuthType,generationConfig:t.deepClone(this._generationConfig),generationConfigSources:t.deepClone(this.generationConfigSources),strictModelProviderSelection:this.strictModelProviderSelection,requireCachedMatildaCredentialsOnce:this.requireCachedMatildaCredentialsOnce,hasManualCredentials:this.hasManualCredentials,activeRuntimeModelSnapshotId:this.activeRuntimeModelSnapshotId}}rollbackToStateSnapshot(e){this.currentAuthType=e.currentAuthType,this._generationConfig=e.generationConfig,this.generationConfigSources=e.generationConfigSources,this.strictModelProviderSelection=e.strictModelProviderSelection,this.requireCachedMatildaCredentialsOnce=e.requireCachedMatildaCredentialsOnce,this.hasManualCredentials=e.hasManualCredentials,this.activeRuntimeModelSnapshotId=e.activeRuntimeModelSnapshotId}getModel(){return this._generationConfig.model||U}getCurrentAuthType(){return this.currentAuthType}wasAuthTypeExplicitlyProvided(){return this.authTypeWasExplicitlyProvided}getAvailableModels(){return this.currentAuthType?this.modelRegistry.getModelsForAuthType(this.currentAuthType):[]}getAvailableModelsForAuthType(e){return this.modelRegistry.getModelsForAuthType(e)}getAllConfiguredModels(e){let n=e&&e.length>0?e:Object.values(G),o=new Set,i=[];for(let l of n)o.has(l)||(o.add(l),i.push(l));let r=[];i.includes("matilda-oauth")&&r.push("matilda-oauth");for(let l of i)l!=="matilda-oauth"&&r.push(l);let a=this.getRuntimeModelOption(),s=[];for(let l of r)a&&a.authType===l&&s.push(a),s.push(...this.modelRegistry.getModelsForAuthType(l));return s}hasModel(e,n){return this.modelRegistry.hasModel(e,n)}getResolvedModel(e,n){return this.modelRegistry.getModel(e,n)}getModelDisplayName(e){return this.currentAuthType?this.modelRegistry.getModel(this.currentAuthType,e)?.name??e:e}async setModel(e,n){if(this.currentAuthType==="matilda-oauth"&&e===U){this.strictModelProviderSelection=!1,this._generationConfig.model=e,this.generationConfigSources.model={kind:"programmatic",detail:n?.reason||"setModel"},this.onModelChange&&await this.onModelChange("matilda-oauth",!1);return}if(this.currentAuthType&&this.modelRegistry.hasModel(this.currentAuthType,e)){await this.switchModel(this.currentAuthType,e);return}let o=this.createStateSnapshotForRollback();try{this.strictModelProviderSelection=!1,this._generationConfig.model=e,this.generationConfigSources.model={kind:"programmatic",detail:n?.reason||"setModel"},this.applyRawModelDerivedDefaults(e),this.onModelChange&&this.currentAuthType&&await this.onModelChange(this.currentAuthType,!0)}catch(i){throw this.rollbackToStateSnapshot(o),i}}applyRawModelDerivedDefaults(e){this.shouldUpdateModelDerivedDefault("modalities")&&(this._generationConfig.modalities=q(e),this.generationConfigSources.modalities={kind:"computed",detail:"auto-detected from model"}),this.shouldUpdateModelDerivedDefault("contextWindowSize")&&(this._generationConfig.contextWindowSize=W(e,"input"),this.generationConfigSources.contextWindowSize={kind:"computed",detail:"auto-detected from model"})}shouldUpdateModelDerivedDefault(e){let n=this.generationConfigSources[e];return n===void 0||n.kind==="computed"||n.kind==="default"||n.kind==="modelProviders"||n.kind==="programmatic"||n.kind==="unknown"}async switchModel(e,n,o){let i=this.extractRuntimeModelSnapshotId(n);if(i){await this.switchToRuntimeModel(i);return}let r=this.createStateSnapshotForRollback();e==="matilda-oauth"&&o?.requireCachedCredentials&&(this.requireCachedMatildaCredentialsOnce=!0);try{let a=e!==this.currentAuthType;this.currentAuthType=e;let s=this.modelRegistry.getModel(e,n,o?.baseUrl);if(!s)throw new Error(`Model '${n}' not found for authType '${e}'`);let l=r.generationConfig.model||"",d=!a&&l?this.modelRegistry.getModel(e,l,r.generationConfig.baseUrl)??this.modelRegistry.getModel(e,l):void 0,c=e!=="matilda-oauth"&&!a&&!!r.generationConfig.apiKey&&!!s.envKey&&d?.envKey===s.envKey&&d.baseUrl===s.baseUrl,g=c?r.generationConfig.apiKey:void 0,u=c?r.generationConfigSources.apiKey:void 0;this.applyResolvedModelDefaults(s),!this._generationConfig.apiKey&&g&&(this._generationConfig.apiKey=g,u&&(this.generationConfigSources.apiKey=t.deepClone(u))),this.activeRuntimeModelSnapshotId=void 0;let m=a?!0:this.checkRequiresRefresh(l);this.onModelChange&&await this.onModelChange(e,m)}catch(a){throw this.rollbackToStateSnapshot(r),a}}buildRuntimeModelSnapshotId(e,n){return`${se}${e}|${n}`}extractRuntimeModelSnapshotId(e){if(e.startsWith(se))return this.runtimeModelSnapshots.has(e)?e:void 0;if(this.runtimeModelSnapshots.has(e))return e}getGenerationConfig(){return this._generationConfig}getGenerationConfigSources(){return this.generationConfigSources}mergeSettingsGenerationConfig(e){if(e)for(let n of le)!(n in this._generationConfig)&&n in e&&(this._generationConfig[n]=e[n],this.generationConfigSources[n]={kind:"settings",detail:`model.generationConfig.${n}`})}updateCredentials(e,n){(e.apiKey||e.baseUrl||e.model)&&(this.hasManualCredentials=!0,this.clearProviderSourcedConfig()),e.apiKey&&(this._generationConfig.apiKey=e.apiKey,this.generationConfigSources.apiKey={kind:"programmatic",detail:"updateCredentials"}),e.baseUrl&&(this._generationConfig.baseUrl=e.baseUrl,this.generationConfigSources.baseUrl={kind:"programmatic",detail:"updateCredentials"}),e.model&&(this._generationConfig.model=e.model,this.generationConfigSources.model={kind:"programmatic",detail:"updateCredentials"}),this.strictModelProviderSelection=!1,this._generationConfig.apiKeyEnvKey=void 0,n&&this.mergeSettingsGenerationConfig(n),this.syncRuntimeModelSnapshotWithCredentials()}syncRuntimeModelSnapshotWithCredentials(){let e=this.currentAuthType,{model:n,apiKey:o,baseUrl:i}=this._generationConfig;if(!(!n||!e||!o||!i)&&!this.modelRegistry.hasModel(e,n,i))if(this.activeRuntimeModelSnapshotId&&this.runtimeModelSnapshots.has(this.activeRuntimeModelSnapshotId)){let r=this.runtimeModelSnapshots.get(this.activeRuntimeModelSnapshotId);r.apiKey=o,r.baseUrl=i,r.modelId=n;let a=this.buildRuntimeModelSnapshotId(r.authType,r.modelId);a!==r.id&&(this.runtimeModelSnapshots.delete(r.id),r.id=a,this.runtimeModelSnapshots.set(a,r),this.activeRuntimeModelSnapshotId=a),r.createdAt=Date.now()}else this.detectAndCaptureRuntimeModel()}clearProviderSourcedConfig(){for(let e of de)this.generationConfigSources[e]?.kind==="modelProviders"&&(delete this._generationConfig[e],delete this.generationConfigSources[e])}isStrictModelProviderSelection(){return this.strictModelProviderSelection}resetStrictModelProviderSelection(){this.strictModelProviderSelection=!1}consumeRequireCachedCredentialsFlag(){let e=this.requireCachedMatildaCredentialsOnce;return this.requireCachedMatildaCredentialsOnce=!1,e}applyResolvedModelDefaults(e){if(this.strictModelProviderSelection=!0,this.hasManualCredentials=!1,this._generationConfig.model=e.id,this.generationConfigSources.model={kind:"modelProviders",authType:e.authType,modelId:e.id,detail:"model.id"},this.currentAuthType==="matilda-oauth"?(this._generationConfig.apiKey="MATILDA_OAUTH_DYNAMIC_TOKEN",this.generationConfigSources.apiKey={kind:"computed",detail:"Matilda OAuth placeholder token"},this._generationConfig.apiKeyEnvKey=void 0,delete this.generationConfigSources.apiKeyEnvKey):(this._generationConfig.apiKey=void 0,this._generationConfig.apiKeyEnvKey=void 0),e.envKey!==void 0){let o=bn.env[e.envKey];o&&(this._generationConfig.apiKey=o,this.generationConfigSources.apiKey={kind:"env",envKey:e.envKey,via:{kind:"modelProviders",authType:e.authType,modelId:e.id,detail:"envKey"}}),this._generationConfig.apiKeyEnvKey=e.envKey,this.generationConfigSources.apiKeyEnvKey={kind:"modelProviders",authType:e.authType,modelId:e.id,detail:"envKey"}}this._generationConfig.baseUrl=e.baseUrl,this.generationConfigSources.baseUrl={kind:"modelProviders",authType:e.authType,modelId:e.id,detail:"baseUrl"};let n=e.generationConfig;for(let o of le)this._generationConfig[o]=n[o],this.generationConfigSources[o]={kind:"modelProviders",authType:e.authType,modelId:e.id,detail:`generationConfig.${o}`};n.contextWindowSize===void 0&&(this._generationConfig.contextWindowSize=W(e.id,"input"),this.generationConfigSources.contextWindowSize={kind:"computed",detail:"auto-detected from model"}),n.modalities===void 0&&(this._generationConfig.modalities=q(e.id),this.generationConfigSources.modalities={kind:"computed",detail:"auto-detected from model"})}checkRequiresRefresh(e){let n=this.currentAuthType;if(!n)return!0;if(n==="matilda-oauth")return!1;let o=this.modelRegistry.getModel(n,this._generationConfig.model||"",this._generationConfig.baseUrl||void 0),i=this.modelRegistry.getModel(n,e);return!i||!o||i.envKey!==o.envKey||i.baseUrl!==o.baseUrl}syncAfterAuthRefresh(e,n){this.strictModelProviderSelection=!1;let o=this.currentAuthType;this.currentAuthType=e;let i=this.generationConfigSources.baseUrl?.kind==="modelProviders"?this._generationConfig.baseUrl:void 0,r=n?this.modelRegistry.getModel(e,n,i)??this.modelRegistry.getModel(e,n):void 0;if(r){let m=this.generationConfigSources.baseUrl?.kind==="modelProviders"&&(this._generationConfig.apiKeyEnvKey!==r.envKey||this._generationConfig.baseUrl!==r.baseUrl),h=o===e&&this._generationConfig.model===n&&!m,p=h?this._generationConfig.apiKey:void 0,C=h&&this.generationConfigSources.apiKey?{...this.generationConfigSources.apiKey}:void 0,y=this.generationConfigSources.baseUrl,T=h&&!!this._generationConfig.baseUrl&&(y?.kind==="cli"||y?.kind==="env"||y?.kind==="settings"),S=T?this._generationConfig.baseUrl:void 0,R=T&&y?{...y}:void 0;this.applyResolvedModelDefaults(r),h&&!this._generationConfig.apiKey&&p&&(this._generationConfig.apiKey=p,C&&(this.generationConfigSources.apiKey=C)),S&&(this._generationConfig.baseUrl=S,R&&(this.generationConfigSources.baseUrl=R)),this.strictModelProviderSelection=!0,this.activeRuntimeModelSnapshotId=void 0;return}let a=this.generationConfigSources.apiKey,s=this.generationConfigSources.baseUrl,l=this._generationConfig.apiKey&&a?.kind!=="modelProviders"||this._generationConfig.baseUrl&&s?.kind!=="modelProviders";if(!(o!==e)&&(n===void 0||!this.modelRegistry.hasModel(e,n))&&(this.hasManualCredentials||l)){n&&(this._generationConfig.model=n,this.generationConfigSources.model||(this.generationConfigSources.model={kind:"programmatic",detail:"auth refresh (preserved credentials)"}));return}let g=this.modelRegistry.getDefaultModelForAuthType(e);if(g){this.applyResolvedModelDefaults(g),this.activeRuntimeModelSnapshotId=void 0;return}n&&(this._generationConfig.model=n,this.generationConfigSources.model||(this.generationConfigSources.model={kind:"programmatic",detail:"auth refresh (no default model)"}))}setOnModelChange(e){this.onModelChange=e}detectAndCaptureRuntimeModel(){let{model:e,apiKey:n,baseUrl:o,apiKeyEnvKey:i,...r}=this._generationConfig,a=this.currentAuthType;if(!e||!a)return;if(this.modelRegistry.hasModel(a,e,o)){this.clearRuntimeModelSnapshotForAuthType(a);return}if(!(this._generationConfig.apiKey&&this._generationConfig.baseUrl))return;let l=this.buildRuntimeModelSnapshotId(a,e),d={id:l,authType:a,modelId:e,apiKey:n,baseUrl:o,apiKeyEnvKey:i,generationConfig:r,sources:{...this.generationConfigSources},createdAt:Date.now()};return this.runtimeModelSnapshots.set(l,d),this.activeRuntimeModelSnapshotId=l,this.cleanupOldRuntimeModelSnapshots(),l}getActiveRuntimeModelSnapshot(){if(this.activeRuntimeModelSnapshotId)return this.runtimeModelSnapshots.get(this.activeRuntimeModelSnapshotId)}getActiveRuntimeModelSnapshotId(){return this.activeRuntimeModelSnapshotId}async switchToRuntimeModel(e){let n=this.runtimeModelSnapshots.get(e);if(!n)throw new Error(`Runtime model snapshot '${e}' not found`);let o=this.createStateSnapshotForRollback();try{let i=n.authType!==this.currentAuthType;this.currentAuthType=n.authType,this.activeRuntimeModelSnapshotId=e,this.strictModelProviderSelection=!1,this.hasManualCredentials=!0,this._generationConfig.model=n.modelId,this.generationConfigSources.model={kind:"programmatic",detail:"runtimeModelSwitch"},n.apiKey&&(this._generationConfig.apiKey=n.apiKey,this.generationConfigSources.apiKey=n.sources.apiKey||{kind:"programmatic",detail:"runtimeModelSwitch"}),n.baseUrl&&(this._generationConfig.baseUrl=n.baseUrl,this.generationConfigSources.baseUrl=n.sources.baseUrl||{kind:"programmatic",detail:"runtimeModelSwitch"}),n.apiKeyEnvKey&&(this._generationConfig.apiKeyEnvKey=n.apiKeyEnvKey),n.generationConfig&&Object.assign(this._generationConfig,n.generationConfig);let r=i;this.onModelChange&&await this.onModelChange(n.authType,r)}catch(i){throw this.rollbackToStateSnapshot(o),i}}getRuntimeModelOption(){let e=this.getActiveRuntimeModelSnapshot();if(e)return{id:e.modelId,label:e.modelId,authType:e.authType,isVision:!1,contextWindowSize:e.generationConfig?.contextWindowSize,isRuntimeModel:!0,runtimeSnapshotId:e.id}}clearRuntimeModelSnapshotForAuthType(e){for(let[n,o]of this.runtimeModelSnapshots.entries())o.authType===e&&(this.runtimeModelSnapshots.delete(n),this.activeRuntimeModelSnapshotId===n&&(this.activeRuntimeModelSnapshotId=void 0))}cleanupOldRuntimeModelSnapshots(){let e=new Map;for(let n of this.runtimeModelSnapshots.values()){let o=e.get(n.authType);(!o||n.createdAt>o.createdAt)&&e.set(n.authType,n)}this.runtimeModelSnapshots.clear();for(let n of e.values())this.runtimeModelSnapshots.set(n.id,n);this.activeRuntimeModelSnapshotId&&!this.runtimeModelSnapshots.has(this.activeRuntimeModelSnapshotId)&&(this.activeRuntimeModelSnapshotId=void 0)}reloadModelProvidersConfig(e){this.modelRegistry.reloadModels(e)}};f();import{readFileSync as jn}from"node:fs";import{join as Hn}from"node:path";f();f();import{randomBytes as In,createHash as kn}from"node:crypto";function Lt(t){return t==="localhost"||t==="127.0.0.1"||t==="::1"||t==="[::1]"}function Le(){let t=In(32).toString("base64url"),e=kn("sha256").update(t).digest("base64url");return{codeVerifier:t,codeChallenge:e}}function Y(t,e){return{accessToken:t.access_token,refreshToken:t.refresh_token??e?.refreshToken,expiresAt:Date.now()+(t.expires_in??3600)*1e3,idToken:t.id_token??e?.idToken}}async function De(t){let e=t.replace(/\/+$/,""),n=new URL("/.well-known/oauth-authorization-server",e);if(n.protocol!=="https:"&&!Lt(n.hostname))throw new Error(`Refusing OAuth discovery over insecure transport: ${n.origin}`);let o=await fetch(n,{headers:{accept:"application/json"}});if(!o.ok)throw new Error(`OAuth discovery failed (${o.status}) for ${n.origin}`);let i=await o.json();if(!i.issuer||!i.authorization_endpoint||!i.token_endpoint)throw new Error(`OAuth discovery document missing required fields for ${n.origin}`);return{issuer:i.issuer,authorization_endpoint:i.authorization_endpoint,token_endpoint:i.token_endpoint,device_authorization_endpoint:i.device_authorization_endpoint}}f();import{promises as ye,openSync as wn,closeSync as Rn,unlinkSync as Dt,statSync as Pn}from"node:fs";import{dirname as En}from"node:path";var On=1e4,Un=3e4,Ln=50;function Ge(t){let e=async()=>{try{let i=await ye.readFile(t,"utf8"),r=JSON.parse(i);return r&&typeof r=="object"?r:{}}catch(i){if(i.code==="ENOENT")return{};throw i}},n=async i=>{await ye.mkdir(En(t),{recursive:!0}),await ye.writeFile(t,JSON.stringify(i,null,2),{mode:384}),await ye.chmod(t,384).catch(()=>{})};return{store:{async get(i){return(await e())[i]??null},async set(i,r){let a=await e();a[i]=r,await n(a)},async remove(i){let r=await e();i in r&&(delete r[i],await n(r))}},lock:Dn(`${t}.lock`)}}function Dn(t){let e=Promise.resolve();return n=>{let o=e.then(async()=>{await Gn(t);try{return await n()}finally{Nn(t)}});return e=o.then(()=>{},()=>{}),o}}async function Gn(t){let e=Date.now()+On;for(;;)try{Rn(wn(t,"wx"));return}catch(n){if(n.code!=="EEXIST")throw n;try{if(Date.now()-Pn(t).mtimeMs>Un){Dt(t);continue}}catch{continue}if(Date.now()>e)throw new Error(`Timed out acquiring credential lock at ${t}`);await Kn(Ln)}}function Nn(t){try{Dt(t)}catch{}}function Kn(t){return new Promise(e=>setTimeout(e,t))}f();var $=class extends Error{code="invalid_grant";constructor(e="Refresh token is no longer valid \u2014 sign in again."){super(e),this.name="InvalidGrantError"}};function Ne(t){let e=t.storageKey??"default",n=t.fetchImpl??fetch,o=t.expirySkewMs??6e4,i=null,r=async()=>{let l=await t.store.get(e);if(!l)return null;try{let d=JSON.parse(l);return d.accessToken?d:null}catch{return null}},a=l=>l.expiresAt-Date.now()>o,s=l=>t.lock(async()=>{let d=await r()??l;if(d.accessToken!==l.accessToken&&a(d))return d.accessToken;if(!d.refreshToken)throw new $("No refresh token available \u2014 sign in again.");let c=await n(t.tokenEndpoint,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",client_id:t.clientId,refresh_token:d.refreshToken})});if(!c.ok){let m=await c.text().catch(()=>"");throw c.status>=400&&c.status<500&&Fn(m)==="invalid_grant"?(await t.store.remove(e),new $):new Error(`Token refresh failed (${c.status})`)}let g=await c.json(),u=Y(g,d);return await t.store.set(e,JSON.stringify(u)),u.accessToken});return{async getAccessToken(l){let d=await r();if(!d)throw new $("Not signed in.");return!l?.forceRefresh&&a(d)?d.accessToken:(i||(i=s(d).finally(()=>{i=null})),i)}}}function Fn(t){try{return JSON.parse(t).error}catch{return}}f();import{createServer as $n}from"node:http";import{randomBytes as zn}from"node:crypto";async function Ke(t){if(t.transport.kind!=="loopback")throw new Error(`Unsupported login transport: ${t.transport.kind}`);if(t.signal?.aborted)throw new Error("Login aborted");let e=h=>t.onEvent?.(h),{codeVerifier:n,codeChallenge:o}=Le(),i=zn(16).toString("hex"),r=t.timeoutMs??5*60*1e3,a=t.transport.successRedirect;e({type:"state",status:"idle"});let s,l,d=new Promise((h,p)=>{s=h,l=p});d.catch(()=>{});let c=$n((h,p)=>{let C=new URL(h.url??"/","http://127.0.0.1");if(C.pathname!=="/callback"){p.writeHead(404).end();return}let y=C.searchParams.get("error"),T=C.searchParams.get("state"),S=C.searchParams.get("code");if(y){Gt(p,a,()=>l(new Error(`OAuth error: ${y}`)));return}if(T!==i){p.writeHead(400).end("State mismatch"),l(new Error("OAuth state mismatch"));return}if(!S){p.writeHead(400).end("Missing authorization code");return}Gt(p,a,()=>s(S))}),g=await new Promise((h,p)=>{c.once("error",p),c.listen(t.transport.port??0,"127.0.0.1",()=>{h(c.address().port)})}),u=setTimeout(()=>l(new Error("Login timed out \u2014 no callback received")),r),m=()=>l(new Error("Login aborted"));t.signal?.addEventListener("abort",m,{once:!0});try{let h=`http://127.0.0.1:${g}/callback`,p=new URL(t.metadata.authorization_endpoint);p.searchParams.set("client_id",t.clientId),p.searchParams.set("response_type","code"),p.searchParams.set("redirect_uri",h),p.searchParams.set("code_challenge",o),p.searchParams.set("code_challenge_method","S256"),p.searchParams.set("state",i),p.searchParams.set("scope",t.scope??"openid offline_access");let C=p.toString();e({type:"authorize_url",url:C}),e({type:"state",status:"awaiting_user"}),t.openBrowser&&await t.openBrowser(C);let y=await d;e({type:"state",status:"exchanging"});let T=await fetch(t.metadata.token_endpoint,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",client_id:t.clientId,code:y,code_verifier:n,redirect_uri:h})});if(!T.ok){let R=await T.text().catch(()=>"");throw new Error(`Token exchange failed (${T.status}): ${R}`)}let S=Y(await T.json());return e({type:"state",status:"authenticated"}),S}catch(h){throw e({type:"state",status:"error"}),h}finally{clearTimeout(u),t.signal?.removeEventListener("abort",m),c.close()}}function Gt(t,e,n){t.writeHead(302,{location:e}).end(n)}var Fe="matilda-code",Te="MATILDA_API_KEY",Bn="openid profile email offline_access matilda:code",Ae="matilda";function $e(t){return t.trim().replace(/\/+$/,"").replace(/\/api\/v1(?:\/code)?$/i,"")}function Nt(){return Hn(Ye.getGlobalMatildaDir(),"matilda-auth.json")}function ze(){return Ge(Nt())}function Wn(t){if(!t)return{};try{let e=t.split(".")[1],n=Buffer.from(e.replace(/-/g,"+").replace(/_/g,"/"),"base64").toString("utf8"),o=JSON.parse(n);return{sub:o.sub,email:o.email,name:o.name}}catch{return{}}}function Vn(t,e){let n=Wn(t.idToken);return{accessToken:t.accessToken,accessTokenExpiresAt:t.expiresAt,refreshToken:t.refreshToken??"",userId:n.sub,email:n.email,displayName:n.name,baseUrl:e}}async function Kt(t){try{return await De(t)}catch{return{issuer:t,authorization_endpoint:`${t}/api/auth/oauth/authorize`,token_endpoint:`${t}/api/auth/oauth/token`,device_authorization_endpoint:`${t}/api/auth/oauth/device/code`}}}function N(){try{let t=jn(Nt(),"utf8"),n=JSON.parse(t)[Ae];if(!n)return null;let o=JSON.parse(n);return typeof o?.accessToken=="string"&&typeof o?.baseUrl=="string"?o:null}catch{return null}}async function Jn(t){await ze().store.set(Ae,JSON.stringify(t)),process.env[Te]=t.accessToken}async function qn(){await ze().store.remove(Ae),delete process.env[Te]}function gr(){let t=N();return t?{authenticated:!0,userId:t.userId,email:t.email,displayName:t.displayName,baseUrl:t.baseUrl,accessTokenExpiresAt:t.accessTokenExpiresAt}:{authenticated:!1}}async function fr(t){let e=N();if(e?.accessToken){let n=$e(e.baseUrl);await fetch(`${n}/api/auth/logout`,{method:"POST",headers:{authorization:`Bearer ${e.accessToken}`,"content-type":"application/json"},body:JSON.stringify(e.refreshToken?{refreshToken:e.refreshToken}:{}),signal:t?.signal??AbortSignal.timeout(5e3)}).catch(()=>{})}await qn()}async function je(t){let e=N();if(!e||t?.baseUrl&&e.baseUrl!==t.baseUrl)return t?.fallbackAccessToken??process.env[Te]??"";let n=$e(e.baseUrl),o=await Kt(n),{store:i,lock:r}=ze(),s=await Yn(i,r,o.token_endpoint,e.baseUrl,t?.signal).getAccessToken({forceRefresh:t?.forceRefresh});return process.env[Te]=s,s}async function hr(){await je();let t=N();if(!t)throw new Error("No Matilda credentials to refresh \u2014 sign in again.");return t}function Yn(t,e,n,o,i){return Ne({tokenEndpoint:n,clientId:Fe,store:{get:async s=>{let l=JSON.parse(await t.get(s)??"{}");if(!l.accessToken)return null;let d={accessToken:l.accessToken,refreshToken:l.refreshToken,expiresAt:l.accessTokenExpiresAt};return JSON.stringify(d)},set:async(s,l)=>{let d=JSON.parse(l),c=JSON.parse(await t.get(s)??"{}"),g={...c,accessToken:d.accessToken,accessTokenExpiresAt:d.expiresAt,refreshToken:d.refreshToken??c.refreshToken??"",baseUrl:c.baseUrl??o};await t.set(s,JSON.stringify(g))},remove:s=>t.remove(s)},storageKey:Ae,lock:e,fetchImpl:(s,l)=>fetch(s,{...l,signal:i})})}async function mr(t){let e=$e(t.baseUrl),n=await Kt(e),o="",i=s=>Ke({metadata:n,clientId:Fe,scope:s,transport:{kind:"loopback",successRedirect:`${e}/api/auth/oauth/success?client_id=${encodeURIComponent(Fe)}`},signal:t.signal,onEvent:l=>{l.type==="authorize_url"&&(o=l.url,t.onAuthorizeUrl?.(l.url))},openBrowser:async l=>{if(t.openBrowser===!1||process.env.MATILDA_AUTH_SKIP_BROWSER==="1")return;let{default:d}=await import("./open-QQ7FWG4A.js");await d(l).catch(()=>{})}}),r;try{r=await i(Bn)}catch(s){if(s instanceof Error&&s.message.includes("invalid_scope"))r=await i("openid offline_access");else throw s}let a=Vn(r,t.baseUrl);return await Jn(a),{...a,authorizeUrl:o}}var G=(r=>(r.USE_OPENAI="openai",r.MATILDA_OAUTH="matilda-oauth",r.USE_GEMINI="gemini",r.USE_VERTEX_AI="vertex-ai",r.USE_ANTHROPIC="anthropic",r))(G||{}),Xn="MATILDA_AGENT_SDK",Me="MATILDA_API_KEY";function Zn(t){if(t.apiKey||t.apiKeyEnvKey!==Me)return;let e=N();e?.accessToken&&(t.apiKey=e.accessToken,process.env[Me]=e.accessToken)}async function Qn(t){if(t.apiKeyEnvKey!==Me)return;let e=N();if(!e?.accessToken)return;let n=await je({baseUrl:t.baseUrl,fallbackAccessToken:e.accessToken});n&&(t.apiKey=n,process.env[Me]=n)}function eo(t){return t.matildaAgentSdk===!0||process.env[Xn]==="1"}function He(t,e,n){t[e]=n}function to(t,e){return t?.[e]}function no(t,e,n,o,i){let r={...o||{}},a=i?.strictModelProvider===!0,s={...n||{},authType:e,proxy:t?.getProxy()};He(r,"authType",{kind:"computed",detail:"provided by caller"}),t?.getProxy()&&He(r,"proxy",{kind:"computed",detail:"Config.getProxy()"});let l=c=>to(o,c)??{kind:"unknown"};for(let c of de)n&&c in n&&!r[c]&&He(r,c,l(c));Zn(s);let d=$t(s,a);if(!d.valid)throw new Error(d.errors.map(c=>c.message).join(`
|
|
9
|
-
`));return{config:s,sources:r}}function $t(t,e=!1){let n=[];if(t.authType==="matilda-oauth")return{valid:!0,errors:[]};if(!t.apiKey)if(e)n.push(new ue(t.authType,t.model,t.apiKeyEnvKey));else{let o=t.apiKeyEnvKey||Pt(t.authType);n.push(new ge({authType:t.authType,model:t.model,baseUrl:t.baseUrl,envKey:o}))}if(!t.model)if(e)n.push(new pe(t.authType));else{let o=Et(t.authType);n.push(new fe({authType:t.authType,envKey:o}))}return t.authType==="anthropic"&&!t.baseUrl&&(e?n.push(new he({authType:t.authType,model:t.model})):t.authType==="anthropic"&&n.push(new me)),{valid:n.length===0,errors:n}}function vr(t,e,n){return no(t,e,n).config}function Ft(t){let e=t;for(;e instanceof Error;){if("code"in e&&e.code==="ERR_MODULE_NOT_FOUND")return e;e=e.cause}}async function _r(t,e,n){await Qn(t);let o=$t(t,!1);if(!o.valid)throw new Error(o.errors.map(a=>a.message).join(`
|
|
10
|
-
`));let i=t.authType;if(!i)throw new Error("ContentGeneratorConfig must have an authType");let r;try{if(i==="openai")if(eo(t)){let{createMatildaAgentContentGenerator:a}=await import("./matildaAgentContentGenerator-B7FZY5QT.js");r=a(t,e)}else{let{createOpenAIContentGenerator:a}=await import("./openaiContentGenerator-A42WRFRC.js");r=a(t,e)}else if(i==="matilda-oauth"){let{getMatildaOAuthClient:a}=await import("./matildaOAuth2-2IUZAZEO.js"),{MatildaContentGenerator:s}=await import("./matildaContentGenerator-DQOUSFU3.js");try{let l=await a(e,n?{requireCachedCredentials:!0}:void 0);r=new s(l,t,e)}catch(l){throw Ft(l)?l:new Error(l instanceof Error?l.message:String(l))}}else if(i==="anthropic"){let{createAnthropicContentGenerator:a}=await import("./anthropicContentGenerator-BRG6WZK3.js");r=a(t,e)}else if(i==="gemini"||i==="vertex-ai"){let{createGeminiContentGenerator:a}=await import("./geminiContentGenerator-35P4NFWN.js");r=a(t,e)}else throw new Error(`Error creating contentGenerator: Unsupported authType: ${i}`)}catch(a){let s=Ft(a);throw s?new Error(`Matilda was updated in the background and needs to be restarted.
|
|
11
|
-
Please exit and restart Matilda to use the '${i}' provider.`,{cause:s}):a}return new J(r,e,t)}var Be=b("MODEL_REGISTRY");function zt(t){if(Object.values(G).includes(t))return t}function oo(t){return/^minimax-m3/i.test(t.trim().toLowerCase())}function jt(t,e){return e?`${t}\0${e}`:t}var Ce=class{modelsByAuthType;getDefaultBaseUrl(e){switch(e){case"matilda-oauth":return"DYNAMIC_MATILDA_OAUTH_BASE_URL";case"openai":return st;default:return""}}constructor(e){if(this.modelsByAuthType=new Map,this.registerAuthTypeModels("matilda-oauth",ce),e)for(let[n,o]of Object.entries(e)){let i=zt(n);if(!i){Be.warn(`Invalid authType key "${n}" in modelProviders config. Expected one of: ${Object.values(G).join(", ")}. Skipping.`);continue}i!=="matilda-oauth"&&this.registerAuthTypeModels(i,o)}}registerAuthTypeModels(e,n){let o=new Map;for(let i of n){let r=jt(i.id,i.baseUrl);if(o.has(r)){Be.warn(`Duplicate model id "${i.id}"${i.baseUrl?` with baseUrl "${i.baseUrl}"`:""} for authType "${e}". Using the first registered config.`);continue}let a=this.resolveModelConfig(i,e);o.set(r,a)}this.modelsByAuthType.set(e,o)}getModelsForAuthType(e){let n=this.modelsByAuthType.get(e);return n?Array.from(n.values()).map(o=>({id:o.id,label:o.name,description:o.description,capabilities:o.capabilities,authType:o.authType,isVision:o.capabilities?.vision??!1,contextWindowSize:o.generationConfig.contextWindowSize??W(o.id),modalities:o.generationConfig.modalities,baseUrl:o.baseUrl,envKey:o.envKey})):[]}getModel(e,n,o){let i=this.modelsByAuthType.get(e);if(!i)return;if(o)return i.get(jt(n,o));let r=i.get(n);if(r)return r;for(let a of i.values())if(a.id===n)return a}hasModel(e,n,o){return this.getModel(e,n,o)!==void 0}getDefaultModelForAuthType(e){if(e==="matilda-oauth")return this.getModel(e,U);let n=this.modelsByAuthType.get(e);if(!(!n||n.size===0))return Array.from(n.values())[0]}resolveModelConfig(e,n){this.validateModelConfig(e,n);let o={...e.generationConfig??{}};return(o.modalities===void 0||oo(e.id))&&(o.modalities=q(e.id)),{...e,authType:n,name:e.name||e.id,baseUrl:e.baseUrl||this.getDefaultBaseUrl(n),generationConfig:o,capabilities:e.capabilities||{}}}validateModelConfig(e,n){if(!e.id)throw new Error(`Model config in authType '${n}' missing required field: id`)}reloadModels(e){for(let n of this.modelsByAuthType.keys())n!=="matilda-oauth"&&this.modelsByAuthType.delete(n);if(e)for(let[n,o]of Object.entries(e)){let i=zt(n);if(!i){Be.warn(`Invalid authType key "${n}" in modelProviders config. Expected one of: ${Object.values(G).join(", ")}. Skipping.`);continue}i!=="matilda-oauth"&&this.registerAuthTypeModels(i,o)}}};export{we as a,ne as b,bt as c,hn as d,V as e,Lo as f,kt as g,q as h,se as i,No as j,le as k,zo as l,jo as m,ce as n,Ho as o,jt as p,Ce as q,Ut as r,Nt as s,N as t,Jn as u,qn as v,gr as w,fr as x,je as y,hr as z,mr as A,G as B,no as C,$t as D,vr as E,_r as F};
|
|
12
|
-
/**
|
|
13
|
-
* @license
|
|
14
|
-
* Copyright 2025 Matilda
|
|
15
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
16
|
-
*/
|
|
17
|
-
/**
|
|
18
|
-
* @license
|
|
19
|
-
* Copyright 2025 Google LLC
|
|
20
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
21
|
-
*/
|
|
22
|
-
/**
|
|
23
|
-
* @license
|
|
24
|
-
* Copyright 2025 Matilda Team
|
|
25
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
26
|
-
*/
|
|
27
|
-
/**
|
|
28
|
-
* @license
|
|
29
|
-
* Copyright 2026 Matilda Team
|
|
30
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
31
|
-
*/
|
|
32
|
-
/**
|
|
33
|
-
* @license
|
|
34
|
-
* Copyright 2026 Maincode
|
|
35
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
36
|
-
*
|
|
37
|
-
* Low-level OAuth primitives for core-auth's unified `/api/auth/oauth/*` flow
|
|
38
|
-
* (ADR-029): PKCE pair generation, RFC 8414 discovery, the RFC 8628 device
|
|
39
|
-
* grant, and refresh. Vendored (as source) from matilda-core's
|
|
40
|
-
* `packages/client-sdk/src/auth.ts` and extended to carry the `id_token`
|
|
41
|
-
* (display identity) that the higher-level flows need. Node built-ins only —
|
|
42
|
-
* no third-party runtime dependencies.
|
|
43
|
-
*/
|
|
44
|
-
/**
|
|
45
|
-
* @license
|
|
46
|
-
* Copyright 2026 Maincode
|
|
47
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
48
|
-
*
|
|
49
|
-
* File-backed token store + cross-process lock. The store persists a JSON map
|
|
50
|
-
* (`{ [key]: value }`) at 0600 so callers can key several credentials in one
|
|
51
|
-
* file; the lock is an O_EXCL lockfile that serialises refreshes across
|
|
52
|
-
* processes (the guarantee a plaintext read/modify/write can't give).
|
|
53
|
-
*/
|
|
54
|
-
/**
|
|
55
|
-
* @license
|
|
56
|
-
* Copyright 2026 Maincode
|
|
57
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
58
|
-
*
|
|
59
|
-
* Hardened access-token manager: returns a valid access token, refreshing via
|
|
60
|
-
* core-auth's token endpoint when expired or forced. Single-flight within the
|
|
61
|
-
* process, serialised across processes by the store's lock, carries a prior
|
|
62
|
-
* refresh token forward when the response omits one, and evicts on a terminal
|
|
63
|
-
* `invalid_grant` so a dead session doesn't wedge the caller in a refresh loop.
|
|
64
|
-
*/
|
|
65
|
-
/**
|
|
66
|
-
* @license
|
|
67
|
-
* Copyright 2026 Maincode
|
|
68
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
69
|
-
*
|
|
70
|
-
* Browser login orchestration: PKCE + a loopback capture server, driven off
|
|
71
|
-
* discovery metadata. Unlike a bare loopback helper, this emits lifecycle
|
|
72
|
-
* events for a UI, honours an AbortSignal, and — instead of serving its own
|
|
73
|
-
* HTML — 302-redirects the browser to an app-owned branded landing
|
|
74
|
-
* (`successRedirect`). Returns a TokenSet including the `id_token`.
|
|
75
|
-
*/
|
|
76
|
-
/**
|
|
77
|
-
* @license
|
|
78
|
-
* Copyright 2026 Maincode
|
|
79
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
80
|
-
*
|
|
81
|
-
* Node auth surface for `@maincode-ai/matilda-client-sdk/auth/node`.
|
|
82
|
-
* Re-exports the OAuth primitives plus the higher-level login flow, file token
|
|
83
|
-
* store, and hardened token manager that the CLI (`packages/core`) and the
|
|
84
|
-
* Electron desktop app consume.
|
|
85
|
-
*/
|
|
86
|
-
/**
|
|
87
|
-
* @license
|
|
88
|
-
* Copyright 2026 Maincode
|
|
89
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
90
|
-
*
|
|
91
|
-
* Matilda account auth for the CLI, backed by the shared client SDK.
|
|
92
|
-
*
|
|
93
|
-
* The OAuth dance (PKCE, loopback capture, code exchange, refresh, cross-process
|
|
94
|
-
* token locking) is owned by `@maincode-ai/matilda-client-sdk/auth/node` — the
|
|
95
|
-
* auth team's tested implementation of ADR-029's unified `/api/auth/oauth/*`
|
|
96
|
-
* flow. This module keeps ONLY the CLI-specific concerns: which endpoint, the
|
|
97
|
-
* on-disk credential shape the rest of the CLI already reads, and surfacing the
|
|
98
|
-
* authorize URL to the Ink UI. No PKCE crypto, no loopback server, no token
|
|
99
|
-
* exchange lives here anymore (replaced the 391-line hand-rolled beta that hit
|
|
100
|
-
* the divergent `/api/auth/cli/*` endpoints and stored tokens in plaintext).
|
|
101
|
-
*/
|
package/chunks/chunk-OQ73WWR4.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
// Force strict mode and setup for ESM
|
|
2
|
-
"use strict";
|
|
3
|
-
import{b as i}from"./chunk-GZPNIYVZ.js";i();var m="MATILDA_API_KEY";var g="matilda-code-1.0",u="https://matilda.maincode.com/api/v1/code";var f={id:"matilda",label:"Matilda",description:"Connect to the Matilda Core code API endpoint",protocol:"openai",baseUrl:u,envKey:m,models:[{id:g,contextWindowSize:1048576,description:"Matilda Code model",generationConfig:{openAIRequestProfile:"matilda-code",samplingParams:{max_tokens:8192,chat_template_kwargs:{enable_thinking:!0}},schemaCompliance:"openapi_30",splitToolMedia:!0,customHeaders:{"User-Agent":"MatildaCode/0.1"}}}],modelNamePrefix:"",documentationUrl:"https://matilda.maincode.help/welcome/external-api",uiGroup:"third-party"};function _(o){return o.trim().replace(/\/+$/,"").replace(/\/api\/v1(?:\/code)?$/i,"")}async function A(o){let{baseUrl:r,email:s,password:d,signal:l}=o,n=_(r),p=`${n}/api/auth/login`,t;try{t=await fetch(p,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:s,password:d}),signal:l})}catch(a){let c=a instanceof Error?a.message:String(a);throw new Error(`Could not reach Matilda at ${n}: ${c}`)}if(t.status===401)throw new Error("Invalid email or password.");if(!t.ok)throw new Error(`Matilda sign-in failed (HTTP ${t.status}). Please try again.`);let e;try{e=await t.json()}catch{throw new Error("Matilda sign-in returned an unreadable response.")}if(!e||typeof e.token!="string"||e.token.length===0)throw new Error("Matilda sign-in did not return a token.");return{token:e.token,refreshToken:typeof e.refreshToken=="string"?e.refreshToken:void 0,userId:typeof e.userId=="string"?e.userId:void 0,email:typeof e.email=="string"?e.email:void 0,displayName:typeof e.displayName=="string"?e.displayName:void 0}}export{m as a,u as b,f as c,_ as d,A as e};
|
|
4
|
-
/**
|
|
5
|
-
* @license
|
|
6
|
-
* Copyright 2026 Matilda Team
|
|
7
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
8
|
-
*/
|
package/chunks/chunk-R6YTDM76.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
// Force strict mode and setup for ESM
|
|
2
|
-
"use strict";
|
|
3
|
-
import{s as d}from"./chunk-LN2DRVOB.js";import{b as i}from"./chunk-GZPNIYVZ.js";i();var a=["x-matilda-reported-surface","x-matilda-reported-os","x-matilda-reported-process","x-matilda-reported-sdk","x-matilda-reported-version"],u=new Set(a),p=new Set(["VSCode","ACP","SDK","CI"]),o="(?:0|[1-9]\\d{0,4})\\.(?:0|[1-9]\\d{0,4})\\.(?:0|[1-9]\\d{0,4})",s="(?:0|[1-9]\\d{0,4})",c="20\\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\\d|3[01])",E=[new RegExp(`^${o}$`),new RegExp(`^${o}-preview\\.${s}$`),new RegExp(`^${o}-maincode\\.${c}(?:\\.${s})?$`)],l=41;function f(e){return e==="desktop"?"desktop":e===void 0||p.has(e)?"code_cli":"unknown"}function m(e){return e==="android"?"android":e==="darwin"?"macos":e==="win32"?"windows":e==="linux"?"linux":"unknown"}function R(e){if(typeof e!="string")return;let t=e.trim();if(!(t.length>l||!E.some(n=>n.test(t))))return t}function C(e,t=process.platform){let n=f(e.getChannel?.()),r=R(e.getCliVersion?.());return{"x-matilda-reported-surface":n,"x-matilda-reported-os":m(t),"x-matilda-reported-process":n==="desktop"?"matilda-desktop":n==="code_cli"?"matilda-code":"unknown","x-matilda-reported-sdk":"matilda-client",...r?{"x-matilda-reported-version":r}:{}}}function S(e){return u.has(e.toLowerCase())}function _(e){let t=e??d;try{let n=new URL(t);if(n.protocol!=="https:"&&n.protocol!=="http:")return!1;let r=n.hostname.toLowerCase();return r==="matilda.maincode.com"||r.endsWith(".matilda.maincode.com")||r==="core-api.matilda"}catch{return!1}}function A(e,t=e.apiKey){return e.authType==="matilda-oauth"?!0:e.authType==="openai"&&!!t&&_(e.baseUrl)}export{C as a,S as b,A as c};
|
|
4
|
-
/**
|
|
5
|
-
* @license
|
|
6
|
-
* Copyright 2026 Matilda Team
|
|
7
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
8
|
-
*/
|
package/chunks/chunk-S32ZN6LD.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// Force strict mode and setup for ESM
|
|
2
|
-
"use strict";
|
|
3
|
-
import{a as l}from"./chunk-4F4DA5UI.js";import{e as g}from"./chunk-X6DODPXG.js";import{b as p}from"./chunk-GZPNIYVZ.js";p();import{readFile as m}from"node:fs/promises";function c(n){return n?`side-query:${n}`:"side-query"}function y(n,e){return e??n.getFastModel?.()??n.getModel()??l}function S(n){let e=n?.thinkingConfig;return{...n??{},thinkingConfig:e?{includeThoughts:!1,...e}:{includeThoughts:!1}}}async function T(n){let e=n.getOutputLanguageFilePath?.();if(e)try{let t=(await m(e,"utf8")).trim();return t?["Follow the user-visible output language preference below for this side query.",t].join(`
|
|
4
|
-
|
|
5
|
-
`):void 0}catch{return}}function x(n,e){return e?n===void 0?e:typeof n=="string"?`${n}
|
|
6
|
-
|
|
7
|
-
${e}`:Array.isArray(n)?[...n,{text:e}]:typeof n=="object"&&"parts"in n&&Array.isArray(n.parts)?{...n,parts:[...n.parts,{text:e}]}:[n,{text:e}]:n}function C(n){return n.schema!==void 0&&n.schema!==null}async function Q(n,e){let t=y(n,e.model),i=e.promptId??c(e.purpose),s=S(e.config),o=x(e.systemInstruction,await T(n));if(C(e)){let r=await n.getBaseLlmClient().generateJson({contents:e.contents,schema:e.schema,abortSignal:e.abortSignal,model:t,systemInstruction:o,promptId:i,config:s,...e.maxAttempts!==void 0&&{maxAttempts:e.maxAttempts}}),d=g.validate(e.schema,r);if(d)throw new Error(`Invalid side query response: ${d}`);let f=e.validate?.(r);if(f)throw new Error(f);return r}let a=await n.getBaseLlmClient().generateText({contents:e.contents,model:t,systemInstruction:o,abortSignal:e.abortSignal,promptId:i,config:s,...e.maxAttempts!==void 0&&{maxAttempts:e.maxAttempts}}),u=e.validate?.(a.text);if(u)throw new Error(u);return a}export{Q as a};
|
|
8
|
-
/**
|
|
9
|
-
* @license
|
|
10
|
-
* Copyright 2025 Google LLC
|
|
11
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
12
|
-
*/
|