nolo-cli 0.19.0 → 0.24.0-alpha.13
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/README.md +9 -18
- package/{_executeModel-X5PCIZN6.js → _executeModel-ZPNYAEFW.js} +46 -44
- package/{action-LT7BRFLK.js → action-5MNAXR5B.js} +7 -6
- package/{addContentAction-PL3KKBDH.js → addContentAction-UNSYTVTB.js} +5 -5
- package/{addDialogAgentAction-FCMSKYAF.js → addDialogAgentAction-LJGNP2AO.js} +5 -5
- package/{agentDeleteCommand-2BZDQV36.js → agentDeleteCommand-5ZV4433K.js} +27 -26
- package/{agentEmailCommands-2QJDGRMB.js → agentEmailCommands-Z7KOYDVQ.js} +57 -55
- package/{agentListCommands-6VEPTKBI.js → agentListCommands-UQUXJYUN.js} +30 -26
- package/{agentMachineCommands-NVVHNWYI.js → agentMachineCommands-53O6P6L5.js} +25 -24
- package/{agentRecordCommands-4GGRDMD4.js → agentRecordCommands-ZRYNBSSS.js} +52 -50
- package/{agentRunCommand-XOLQNKBZ.js → agentRunCommand-B73MKVOG.js} +55 -54
- package/{agentRunControl-Y5AFH5PQ.js → agentRunControl-SNUKXN6J.js} +6 -2
- package/{agentRuntimeLocal-7WYWCGL4.js → agentRuntimeLocal-GVNERRKQ.js} +21 -18
- package/{agentSlice-EAXPGEYV.js → agentSlice-OJBHIL34.js} +5 -5
- package/{appDeleteCommands-77KR2RJ4.js → appDeleteCommands-23Z3Z6KE.js} +23 -22
- package/{appDeployCommands-K7CAHGBI.js → appDeployCommands-3MFAR4Z7.js} +23 -22
- package/{appDeployStatusCommands-4OEKLTBT.js → appDeployStatusCommands-JHU6GSN4.js} +23 -22
- package/{appGetCommands-VM2WDLAZ.js → appGetCommands-24J55H2Y.js} +23 -22
- package/{appListCommands-GX6BBA6U.js → appListCommands-HE5KP3PH.js} +23 -22
- package/{authCommand-DY6UUL6O.js → authCommand-KGRK6MNU.js} +12 -13
- package/{authCommands-XTBV7OFZ.js → authCommands-JSOG2H4E.js} +4 -5
- package/{chunk-OWOHNGCN.js → chunk-2MBTWINN.js} +42 -3
- package/{chunk-MVQ4TBSD.js → chunk-54VHTARN.js} +1 -1
- package/{chunk-RQN4SEKL.js → chunk-5DWZ46RJ.js} +1 -1
- package/{chunk-VYHDJEQD.js → chunk-5EDKWSQN.js} +136 -78
- package/{chunk-Z4NR32XR.js → chunk-5RGU3J7P.js} +13 -0
- package/{chunk-7BUYEZ6U.js → chunk-7H3UTGPM.js} +12 -72
- package/{chunk-3ZX7PERL.js → chunk-AAWJ5S3G.js} +20 -7
- package/{chunk-SCTYAHYK.js → chunk-ADE6577S.js} +237 -142
- package/{chunk-PJSV3IZ5.js → chunk-AOPOTHFK.js} +1 -1
- package/{chunk-3ND52WIL.js → chunk-ATWUOTJP.js} +180 -24
- package/{chunk-SWDPIPOY.js → chunk-AZW5AHMW.js} +1 -1
- package/chunk-CF7S2RYZ.js +376 -0
- package/{chunk-L4F3I4SR.js → chunk-CV6BM7LU.js} +4 -6
- package/{chunk-G5U6LDLG.js → chunk-CWTT2NZ6.js} +6 -6
- package/{chunk-MKA6QE5E.js → chunk-CZHE6LLV.js} +135 -55
- package/{chunk-KFEVY3ST.js → chunk-D34RI6NI.js} +18 -8
- package/{chunk-XRZJGPFI.js → chunk-FON47ACC.js} +4 -4
- package/{chunk-K6EUAOW3.js → chunk-FXFGNOT2.js} +67 -1
- package/{chunk-LLWKHDG4.js → chunk-G36SUBHA.js} +14 -6
- package/{chunk-REA4JLBH.js → chunk-GD23ZX7Z.js} +7 -6
- package/{chunk-ROWQEJRP.js → chunk-GE6IWA5N.js} +12 -4
- package/{chunk-EDV7EBOI.js → chunk-GGB6MPHD.js} +2155 -1503
- package/{chunk-IYEXFJPC.js → chunk-GNGOZMU2.js} +64 -57
- package/{chunk-4T5F7YZQ.js → chunk-I6RJGORZ.js} +1 -1
- package/{chunk-DFCFMCY6.js → chunk-J2WT5CEO.js} +2 -2
- package/{chunk-AHCY2S2I.js → chunk-JJ2WUBFN.js} +1 -1
- package/{chunk-UGUW3FHG.js → chunk-JMSCXQUG.js} +2 -2
- package/{chunk-VDXCXCXH.js → chunk-KURQBS7S.js} +1 -1
- package/{chunk-FQZZLA3C.js → chunk-KXKQO4Q6.js} +17 -0
- package/{chunk-3Q7WHGCB.js → chunk-L65QKSVJ.js} +1 -1
- package/{chunk-UAIVG4J6.js → chunk-LEHTC2FI.js} +1 -8
- package/{chunk-UBHAWFQ6.js → chunk-LLDGWLML.js} +42 -19
- package/{chunk-JLA4FXYC.js → chunk-MALVZUYL.js} +1 -1
- package/{chunk-N54HIJVJ.js → chunk-MCXQNEJ3.js} +101 -9
- package/{chunk-GFUIQ4RY.js → chunk-MXFQHRSS.js} +1 -1
- package/{chunk-LSFAWXKC.js → chunk-N7J63Q6C.js} +1 -0
- package/{chunk-6Y7A3OQQ.js → chunk-NRY4GCKJ.js} +2 -0
- package/{chunk-ELT65PZW.js → chunk-OXLLFZNF.js} +1 -1
- package/{chunk-YGW4G5W5.js → chunk-P3RZ6DHN.js} +133 -25
- package/{chunk-5MIDPSSK.js → chunk-PB7G5MAM.js} +3 -3
- package/{chunk-HEGV7BH3.js → chunk-PMCKFQYC.js} +1 -1
- package/{chunk-23FZYPLC.js → chunk-PTKI7TIN.js} +911 -1064
- package/{chunk-MHSGJW4Z.js → chunk-PXPISYEH.js} +44 -14
- package/{chunk-I2ZJKTG5.js → chunk-PY7VGC5M.js} +29 -10
- package/{chunk-PIZYJVHQ.js → chunk-RM464B7I.js} +4 -4
- package/{chunk-XHG22OEX.js → chunk-ROJI6DRT.js} +2 -2
- package/{chunk-VNAEBGDK.js → chunk-RZNYL4LW.js} +123 -26
- package/{chunk-RVOUXDFU.js → chunk-S6KVFOUG.js} +6 -34
- package/{chunk-BV4VEE3W.js → chunk-S7AV3NCK.js} +277 -357
- package/{chunk-R35XMF6F.js → chunk-SIUEKVK4.js} +484 -67
- package/{chunk-B5TOXZAK.js → chunk-SIZQB7BD.js} +1 -1
- package/{chunk-DFFIZ25G.js → chunk-SLOGKB7M.js} +4 -1
- package/{chunk-MPVYDS7I.js → chunk-TLYHUIWF.js} +3 -3
- package/{chunk-HWW2M4SN.js → chunk-TNM27YZ7.js} +5 -4
- package/{chunk-OK6YSWLH.js → chunk-TWA4L7J7.js} +1 -1
- package/chunk-UZ6XXCVR.js +50 -0
- package/{chunk-DKZFOK24.js → chunk-WCP5FDTF.js} +16 -304
- package/{chunk-TRT4I4UD.js → chunk-WSQLK2KR.js} +2 -2
- package/{chunk-FXUSIQC2.js → chunk-XNZJVYFS.js} +1 -1
- package/{chunk-V3ED5AWK.js → chunk-YJY7HODU.js} +27 -16
- package/chunk-YYLHWIW6.js +48 -0
- package/{chunk-CZ6NYQTV.js → chunk-ZFL3LTU7.js} +2 -2
- package/{chunk-34WPV75U.js → chunk-ZUXIXYJI.js} +1 -1
- package/{chunk-VC6OZXO5.js → chunk-ZWJOGMKH.js} +2 -26
- package/{cliExecutor-DNE7TCC4.js → cliExecutor-K3F7DMRO.js} +2 -2
- package/{codingSkills-36KN5NQT.js → codingSkills-EN6Z6G6U.js} +4 -4
- package/{createAgentAutomationAction-GNFF524X.js → createAgentAutomationAction-PO62NUR7.js} +19 -18
- package/{createDialogAction-RB55KCLO.js → createDialogAction-ORFRYI3C.js} +22 -20
- package/{createPageAction-Y7343GLU.js → createPageAction-XWVMNTYH.js} +20 -19
- package/{db-W3O47YGF.js → db-W5UHK4P3.js} +150 -0
- package/{dbSlice-CGSRFJN3.js → dbSlice-5BKDURDL.js} +4 -4
- package/{dialogCommands-IAZK6YHQ.js → dialogCommands-XTJHROXM.js} +24 -23
- package/{dialogSlice-UQAXF23P.js → dialogSlice-DJXC53YW.js} +24 -18
- package/{docCreateCommands-I2EWZGCI.js → docCreateCommands-T2XRVXYS.js} +24 -27
- package/{docDeleteCommands-IZ45UZKG.js → docDeleteCommands-L7RXFXY3.js} +25 -24
- package/{docReadCommands-R6Z4QJYU.js → docReadCommands-M5PYNADQ.js} +24 -23
- package/{docStore-5HOJ4D7D.js → docStore-6LKLLFDW.js} +20 -19
- package/{docUpdateCommands-2LRBKQPY.js → docUpdateCommands-OA5EGPLQ.js} +24 -27
- package/{fetchMessages-BMGVZVSE.js → fetchMessages-W4IKHPCS.js} +2 -3
- package/{getPricing-G7DLAST6.js → getPricing-6C3C47Y4.js} +3 -3
- package/{handleSendMessageAction-Q4HY35WX.js → handleSendMessageAction-ILFGZTN5.js} +23 -20
- package/index.js +74 -74
- package/{localDialogRead-4H3QJFLW.js → localDialogRead-JXTAHW2E.js} +2 -2
- package/{machineCommands-PKBPQKTY.js → machineCommands-AKAQGPAO.js} +59 -57
- package/{machineWsRunDispatch-UZAW4OXJ.js → machineWsRunDispatch-RSBERM64.js} +51 -49
- package/{models-DJFSJ7SW.js → models-ILWKIX2Y.js} +2 -2
- package/package.json +1 -1
- package/{read-3FMPZPER.js → read-F3L3T2WJ.js} +2 -1
- package/{readDocTool-VSYHKK3V.js → readDocTool-FOHWVA4R.js} +1 -1
- package/{readlineWorkspace-Y2RDOFZG.js → readlineWorkspace-TUH3SFHO.js} +937 -430
- package/{removeDialogAgentAction-OAGA2G3U.js → removeDialogAgentAction-QCFGIUIH.js} +8 -7
- package/{runAgentClientLoop-NBPIKJ6J.js → runAgentClientLoop-C3QB2EXV.js} +45 -38
- package/{setDialogExtraReferencesAction-JZEXA5SL.js → setDialogExtraReferencesAction-DK4CKERU.js} +5 -5
- package/{setPrimaryDialogAgentAction-4ZUQQKDG.js → setPrimaryDialogAgentAction-SJSO6N27.js} +8 -7
- package/{settingSlice-7MNKHZ6R.js → settingSlice-XNM5AFPU.js} +6 -5
- package/{spaceCommands-DHCZ7J5I.js → spaceCommands-SXYOFGUJ.js} +25 -24
- package/{spaceSlice-ZXLLG3CR.js → spaceSlice-6BHMRP5O.js} +21 -18
- package/{streamAgentChatTurn-L3YW6LSB.js → streamAgentChatTurn-GF5W5OIP.js} +140 -98
- package/switchDialogAgentAction-4OAC6QRN.js +61 -0
- package/{tableCommands-BEQAGE4I.js → tableCommands-QSZILI7I.js} +1 -1
- package/{toolApiClient-QI3YBNWB.js → toolApiClient-ISM4ZQX4.js} +2 -2
- package/{tools-ECGXR5QF.js → tools-KBCLJ43G.js} +36 -33
- package/{tuiSummaryLlmCaller-OMSCNHXA.js → tuiSummaryLlmCaller-ARIMGILF.js} +6 -6
- package/{updateCommands-XTW55TOT.js → updateCommands-AK2RDOFR.js} +8 -2
- package/{updateDialogTitleAction-HQ2EUDFT.js → updateDialogTitleAction-LMHZUY4Q.js} +28 -27
- package/chunk-DL6EPNIK.js +0 -50
- package/chunk-V5R4NZP2.js +0 -78
- package/chunk-X4Q4UZEY.js +0 -26
- package/queryRunOverlay-O4LOMMPO.js +0 -161
- package/runOverlayPresentation-ZO4VCWEU.js +0 -11
- package/types-ZSTJ7MPR.js +0 -7
- package/{chunk-X7W4TNB4.js → chunk-CMKUBIGW.js} +3 -3
- package/{runtimeDoctorCommands-E2OUORHK.js → runtimeDoctorCommands-HSU632DY.js} +3 -3
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
2
|
updateContentTitle
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ADE6577S.js";
|
|
4
4
|
import {
|
|
5
5
|
require_date_fns
|
|
6
6
|
} from "./chunk-M76ECQRD.js";
|
|
7
|
-
import {
|
|
8
|
-
toErrorMessage
|
|
9
|
-
} from "./chunk-HNMXYYJR.js";
|
|
10
7
|
import {
|
|
11
8
|
require_react
|
|
12
9
|
} from "./chunk-3ASDTTEI.js";
|
|
10
|
+
import {
|
|
11
|
+
toErrorMessage
|
|
12
|
+
} from "./chunk-HNMXYYJR.js";
|
|
13
13
|
import {
|
|
14
14
|
patch,
|
|
15
15
|
readAndWait
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-FON47ACC.js";
|
|
17
17
|
import {
|
|
18
18
|
asOptionalTrimmedString
|
|
19
19
|
} from "./chunk-G3SUCT4W.js";
|
|
@@ -367,7 +367,7 @@ async function saveDocState(arg, { dispatch, getState }) {
|
|
|
367
367
|
}
|
|
368
368
|
}
|
|
369
369
|
async function createDocState(args, thunkApi) {
|
|
370
|
-
const { createPageAction } = await import("./createPageAction-
|
|
370
|
+
const { createPageAction } = await import("./createPageAction-XWVMNTYH.js");
|
|
371
371
|
return createPageAction(args, thunkApi);
|
|
372
372
|
}
|
|
373
373
|
function subscribe(listener) {
|
|
@@ -2,43 +2,6 @@ import {
|
|
|
2
2
|
asTrimmedLowercaseString
|
|
3
3
|
} from "./chunk-QSJ3HFEF.js";
|
|
4
4
|
|
|
5
|
-
// packages/integrations/deepseek/models.ts
|
|
6
|
-
var deepSeekModels = [
|
|
7
|
-
{
|
|
8
|
-
name: "deepseek-v4-flash",
|
|
9
|
-
displayName: "DeepSeek V4 Flash",
|
|
10
|
-
hasVision: false,
|
|
11
|
-
contextWindow: 1e6,
|
|
12
|
-
maxOutputTokens: 384e3,
|
|
13
|
-
jsonOutput: true,
|
|
14
|
-
fnCall: true,
|
|
15
|
-
supportsTool: true,
|
|
16
|
-
supportsReasoningEffort: true,
|
|
17
|
-
endpointKey: "chat.completions",
|
|
18
|
-
price: {
|
|
19
|
-
input: 1,
|
|
20
|
-
inputCacheHit: 0.02,
|
|
21
|
-
output: 2
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
name: "deepseek-v4-pro",
|
|
26
|
-
displayName: "DeepSeek V4 Pro",
|
|
27
|
-
hasVision: false,
|
|
28
|
-
contextWindow: 1e6,
|
|
29
|
-
maxOutputTokens: 384e3,
|
|
30
|
-
jsonOutput: true,
|
|
31
|
-
fnCall: true,
|
|
32
|
-
supportsTool: true,
|
|
33
|
-
supportsReasoningEffort: true,
|
|
34
|
-
price: {
|
|
35
|
-
input: 3,
|
|
36
|
-
inputCacheHit: 0.1,
|
|
37
|
-
output: 6
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
];
|
|
41
|
-
|
|
42
5
|
// packages/ai/agent/liveAudioModel.ts
|
|
43
6
|
var DEFAULT_GOOGLE_LIVE_AUDIO_MODEL = "gemini-3.1-flash-live-preview";
|
|
44
7
|
|
|
@@ -409,15 +372,24 @@ var OPENROUTER_MODELS = [];
|
|
|
409
372
|
var openrouterModels = OPENROUTER_MODELS;
|
|
410
373
|
|
|
411
374
|
// packages/ai/llm/deepinfra.ts
|
|
375
|
+
var DEEPINFRA_CLAUDE_HAIKU_PRICE = {
|
|
376
|
+
input: 1 * 9,
|
|
377
|
+
output: 5 * 9
|
|
378
|
+
};
|
|
379
|
+
var DEEPINFRA_CLAUDE_SONNET_PRICE = {
|
|
380
|
+
input: 3 * 9,
|
|
381
|
+
output: 15 * 9
|
|
382
|
+
};
|
|
383
|
+
var DEEPINFRA_CLAUDE_OPUS_PRICE = {
|
|
384
|
+
input: 5 * 9,
|
|
385
|
+
output: 25 * 9
|
|
386
|
+
};
|
|
412
387
|
var deepinfraModels = [
|
|
413
388
|
{
|
|
414
389
|
name: "anthropic/claude-haiku-4-5",
|
|
415
390
|
displayName: "Anthropic: Claude Haiku 4.5",
|
|
416
391
|
hasVision: true,
|
|
417
|
-
price: {
|
|
418
|
-
input: 1 * 9,
|
|
419
|
-
output: 5 * 9
|
|
420
|
-
},
|
|
392
|
+
price: { ...DEEPINFRA_CLAUDE_HAIKU_PRICE },
|
|
421
393
|
contextWindow: 195e3,
|
|
422
394
|
maxOutputTokens: 4092,
|
|
423
395
|
supportsTool: false
|
|
@@ -426,10 +398,7 @@ var deepinfraModels = [
|
|
|
426
398
|
name: "anthropic/claude-sonnet-5",
|
|
427
399
|
displayName: "Anthropic: Claude Sonnet 5",
|
|
428
400
|
hasVision: true,
|
|
429
|
-
price: {
|
|
430
|
-
input: 3 * 9,
|
|
431
|
-
output: 15 * 9
|
|
432
|
-
},
|
|
401
|
+
price: { ...DEEPINFRA_CLAUDE_SONNET_PRICE },
|
|
433
402
|
contextWindow: 976e3,
|
|
434
403
|
maxOutputTokens: 4092,
|
|
435
404
|
supportsTool: false
|
|
@@ -438,10 +407,7 @@ var deepinfraModels = [
|
|
|
438
407
|
name: "anthropic/claude-opus-4-8",
|
|
439
408
|
displayName: "Anthropic: Claude Opus 4.8",
|
|
440
409
|
hasVision: true,
|
|
441
|
-
price: {
|
|
442
|
-
input: 5 * 9,
|
|
443
|
-
output: 25 * 9
|
|
444
|
-
},
|
|
410
|
+
price: { ...DEEPINFRA_CLAUDE_OPUS_PRICE },
|
|
445
411
|
contextWindow: 976e3,
|
|
446
412
|
maxOutputTokens: 4092,
|
|
447
413
|
supportsTool: false
|
|
@@ -451,12 +417,12 @@ var deepinfraModels = [
|
|
|
451
417
|
// packages/integrations/xai/models.ts
|
|
452
418
|
var xaiModels = [
|
|
453
419
|
{
|
|
454
|
-
name: "grok-4.
|
|
455
|
-
displayName: "Grok 4.
|
|
420
|
+
name: "grok-4.6",
|
|
421
|
+
displayName: "Grok 4.6",
|
|
456
422
|
hasVision: true,
|
|
457
423
|
contextWindow: 5e5,
|
|
424
|
+
// 价格沿用 grok-4.5 报价($2/$6 ×7),换代后待 live 验证再校准。
|
|
458
425
|
price: { input: 2 * 7, output: 6 * 7 },
|
|
459
|
-
// $2/$6 per MTok × 7
|
|
460
426
|
fnCall: true,
|
|
461
427
|
jsonOutput: true
|
|
462
428
|
}
|
|
@@ -519,6 +485,17 @@ var resolveFireworksKimiModel = (model) => {
|
|
|
519
485
|
};
|
|
520
486
|
|
|
521
487
|
// packages/ai/llm/platformHosted.ts
|
|
488
|
+
var PLATFORM_HOSTED_CLAUDE_SONNET_5_MODEL = "anthropic/claude-sonnet-5";
|
|
489
|
+
var PLATFORM_HOSTED_CLAUDE_OPUS_4_8_MODEL = "anthropic/claude-opus-4-8";
|
|
490
|
+
var PLATFORM_HOSTED_CLAUDE_MODELS = [
|
|
491
|
+
PLATFORM_HOSTED_CLAUDE_SONNET_5_MODEL,
|
|
492
|
+
PLATFORM_HOSTED_CLAUDE_OPUS_4_8_MODEL
|
|
493
|
+
];
|
|
494
|
+
var isPlatformHostedClaudeModel = (model) => PLATFORM_HOSTED_CLAUDE_MODELS.some(
|
|
495
|
+
(m) => asTrimmedLowercaseString(model) === m
|
|
496
|
+
);
|
|
497
|
+
var PLATFORM_HOSTED_GROK_4_6_MODEL = "grok-4.6";
|
|
498
|
+
var isPlatformHostedGrokModel = (model) => asTrimmedLowercaseString(model) === PLATFORM_HOSTED_GROK_4_6_MODEL;
|
|
522
499
|
var PLATFORM_CREDITS_PER_USD = 7;
|
|
523
500
|
var EXTERNAL_API_DISCOUNT = 0.8;
|
|
524
501
|
var toPlatformCredits = (usdPerMillion) => Number(
|
|
@@ -544,12 +521,64 @@ var PLATFORM_HOSTED_GLM_PRICE = {
|
|
|
544
521
|
output: toPlatformCredits(4.4)
|
|
545
522
|
};
|
|
546
523
|
var PLATFORM_HOSTED_GLM_52_MODEL = "glm-5.2";
|
|
524
|
+
var PLATFORM_HOSTED_GEMINI_37_FLASH_MODEL = "gemini-3.7-flash";
|
|
525
|
+
var PLATFORM_HOSTED_GEMINI_37_FLASH_PRICE = {
|
|
526
|
+
input: toPlatformCredits(0.75),
|
|
527
|
+
output: toPlatformCredits(3.75),
|
|
528
|
+
cachingWrite: toPlatformCredits(0.075),
|
|
529
|
+
cachingRead: toPlatformCredits(0.075)
|
|
530
|
+
};
|
|
547
531
|
var PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL = "deepseek-v4-flash";
|
|
532
|
+
var PLATFORM_HOSTED_DEEPSEEK_PRO_MODEL = "deepseek-v4-pro";
|
|
533
|
+
var DEEPSEEK_V4_PRICING_EFFECTIVE_AT_MS = Date.UTC(2026, 7, 16, 16);
|
|
534
|
+
var PLATFORM_HOSTED_DEEPSEEK_FLASH_PEAK_PRICE = {
|
|
535
|
+
input: 3,
|
|
536
|
+
inputCacheHit: 0.1,
|
|
537
|
+
output: 9
|
|
538
|
+
};
|
|
539
|
+
var PLATFORM_HOSTED_DEEPSEEK_PRO_PEAK_PRICE = {
|
|
540
|
+
input: 9,
|
|
541
|
+
inputCacheHit: 0.3,
|
|
542
|
+
output: 27
|
|
543
|
+
};
|
|
548
544
|
var PLATFORM_HOSTED_DEEPSEEK_FLASH_PRICE = {
|
|
549
545
|
input: 1,
|
|
550
546
|
inputCacheHit: 0.02,
|
|
551
547
|
output: 2
|
|
552
548
|
};
|
|
549
|
+
var PLATFORM_HOSTED_DEEPSEEK_PRO_PRICE = {
|
|
550
|
+
input: 3,
|
|
551
|
+
inputCacheHit: 0.025,
|
|
552
|
+
output: 6
|
|
553
|
+
};
|
|
554
|
+
var PLATFORM_HOSTED_DEEPSEEK_FLASH_OFF_PEAK_PRICE = {
|
|
555
|
+
input: 1.5,
|
|
556
|
+
inputCacheHit: 0.05,
|
|
557
|
+
output: 4.5
|
|
558
|
+
};
|
|
559
|
+
var PLATFORM_HOSTED_DEEPSEEK_PRO_OFF_PEAK_PRICE = {
|
|
560
|
+
input: 4.5,
|
|
561
|
+
inputCacheHit: 0.15,
|
|
562
|
+
output: 13.5
|
|
563
|
+
};
|
|
564
|
+
var getPlatformHostedDeepSeekV4Price = (model, nowMs = Date.now()) => {
|
|
565
|
+
if (nowMs < DEEPSEEK_V4_PRICING_EFFECTIVE_AT_MS) {
|
|
566
|
+
return model === PLATFORM_HOSTED_DEEPSEEK_PRO_MODEL ? PLATFORM_HOSTED_DEEPSEEK_PRO_PRICE : PLATFORM_HOSTED_DEEPSEEK_FLASH_PRICE;
|
|
567
|
+
}
|
|
568
|
+
const hour = Number(
|
|
569
|
+
new Intl.DateTimeFormat("en-US", {
|
|
570
|
+
timeZone: "Asia/Shanghai",
|
|
571
|
+
hour: "numeric",
|
|
572
|
+
hourCycle: "h23"
|
|
573
|
+
}).format(new Date(nowMs))
|
|
574
|
+
);
|
|
575
|
+
const peak = hour >= 9 && hour < 12 || hour >= 14 && hour < 18;
|
|
576
|
+
if (!peak) {
|
|
577
|
+
return model === PLATFORM_HOSTED_DEEPSEEK_PRO_MODEL ? PLATFORM_HOSTED_DEEPSEEK_PRO_OFF_PEAK_PRICE : PLATFORM_HOSTED_DEEPSEEK_FLASH_OFF_PEAK_PRICE;
|
|
578
|
+
}
|
|
579
|
+
return model === PLATFORM_HOSTED_DEEPSEEK_PRO_MODEL ? PLATFORM_HOSTED_DEEPSEEK_PRO_PEAK_PRICE : PLATFORM_HOSTED_DEEPSEEK_FLASH_PEAK_PRICE;
|
|
580
|
+
};
|
|
581
|
+
var isPlatformHostedDeepSeekV4Model = (model) => model === PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL || model === PLATFORM_HOSTED_DEEPSEEK_PRO_MODEL;
|
|
553
582
|
var PLATFORM_HOSTED_CHAT_COMPLETIONS_URL = "https://ollama.com/v1/chat/completions";
|
|
554
583
|
var platformHostedModels = [
|
|
555
584
|
{
|
|
@@ -581,6 +610,16 @@ var platformHostedModels = [
|
|
|
581
610
|
supportsTool: true,
|
|
582
611
|
supportsReasoningEffort: true
|
|
583
612
|
},
|
|
613
|
+
{
|
|
614
|
+
name: PLATFORM_HOSTED_GEMINI_37_FLASH_MODEL,
|
|
615
|
+
displayName: "Gemini 3.7 Flash",
|
|
616
|
+
hasVision: true,
|
|
617
|
+
price: { ...PLATFORM_HOSTED_GEMINI_37_FLASH_PRICE },
|
|
618
|
+
maxOutputTokens: 65536,
|
|
619
|
+
contextWindow: 1048576,
|
|
620
|
+
supportsTool: true,
|
|
621
|
+
supportsReasoningEffort: true
|
|
622
|
+
},
|
|
584
623
|
{
|
|
585
624
|
name: PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL,
|
|
586
625
|
displayName: "DeepSeek V4 Flash",
|
|
@@ -590,11 +629,48 @@ var platformHostedModels = [
|
|
|
590
629
|
contextWindow: 1e6,
|
|
591
630
|
supportsTool: true,
|
|
592
631
|
supportsReasoningEffort: true
|
|
632
|
+
},
|
|
633
|
+
{
|
|
634
|
+
name: PLATFORM_HOSTED_DEEPSEEK_PRO_MODEL,
|
|
635
|
+
displayName: "DeepSeek V4 Pro",
|
|
636
|
+
hasVision: false,
|
|
637
|
+
price: { ...PLATFORM_HOSTED_DEEPSEEK_PRO_PRICE },
|
|
638
|
+
maxOutputTokens: 384e3,
|
|
639
|
+
contextWindow: 1e6,
|
|
640
|
+
supportsTool: true,
|
|
641
|
+
supportsReasoningEffort: true
|
|
642
|
+
},
|
|
643
|
+
{
|
|
644
|
+
name: PLATFORM_HOSTED_CLAUDE_SONNET_5_MODEL,
|
|
645
|
+
displayName: "Claude Sonnet 5",
|
|
646
|
+
hasVision: true,
|
|
647
|
+
price: { ...DEEPINFRA_CLAUDE_SONNET_PRICE },
|
|
648
|
+
maxOutputTokens: 4092,
|
|
649
|
+
contextWindow: 976e3,
|
|
650
|
+
supportsTool: false
|
|
651
|
+
},
|
|
652
|
+
{
|
|
653
|
+
name: PLATFORM_HOSTED_CLAUDE_OPUS_4_8_MODEL,
|
|
654
|
+
displayName: "Claude Opus 4.8",
|
|
655
|
+
hasVision: true,
|
|
656
|
+
price: { ...DEEPINFRA_CLAUDE_OPUS_PRICE },
|
|
657
|
+
maxOutputTokens: 4092,
|
|
658
|
+
contextWindow: 976e3,
|
|
659
|
+
supportsTool: false
|
|
660
|
+
},
|
|
661
|
+
{
|
|
662
|
+
name: PLATFORM_HOSTED_GROK_4_6_MODEL,
|
|
663
|
+
displayName: "Grok 4.6",
|
|
664
|
+
hasVision: true,
|
|
665
|
+
// 上游 xAI 官方 API:$2/$6 per 1M ×7(同 xai/models.ts 报价口径)。
|
|
666
|
+
price: { input: 2 * 7, output: 6 * 7 },
|
|
667
|
+
maxOutputTokens: 1e5,
|
|
668
|
+
contextWindow: 5e5,
|
|
669
|
+
supportsTool: true
|
|
593
670
|
}
|
|
594
671
|
];
|
|
595
672
|
|
|
596
673
|
export {
|
|
597
|
-
deepSeekModels,
|
|
598
674
|
googleModels,
|
|
599
675
|
openAIModels,
|
|
600
676
|
openrouterModels,
|
|
@@ -607,8 +683,12 @@ export {
|
|
|
607
683
|
isFireworksKimiModel,
|
|
608
684
|
isDeepInfraKimiModel,
|
|
609
685
|
resolveFireworksKimiModel,
|
|
610
|
-
|
|
611
|
-
|
|
686
|
+
isPlatformHostedClaudeModel,
|
|
687
|
+
isPlatformHostedGrokModel,
|
|
688
|
+
PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL,
|
|
689
|
+
PLATFORM_HOSTED_DEEPSEEK_FLASH_PRICE,
|
|
690
|
+
getPlatformHostedDeepSeekV4Price,
|
|
691
|
+
isPlatformHostedDeepSeekV4Model,
|
|
612
692
|
PLATFORM_HOSTED_CHAT_COMPLETIONS_URL,
|
|
613
693
|
platformHostedModels,
|
|
614
694
|
getCloudflareWorkersAiChatCompletionsUrl,
|
|
@@ -34,7 +34,9 @@ function shouldStripReasoningContentForOutbound(provider, model) {
|
|
|
34
34
|
const p = provider?.trim().toLowerCase();
|
|
35
35
|
const m = model?.trim().toLowerCase();
|
|
36
36
|
if (!p || !m) return false;
|
|
37
|
-
if (p === "deepseek" || p === "nolo")
|
|
37
|
+
if (p === "deepseek" || p === "nolo") {
|
|
38
|
+
return m === "deepseek-v4-flash" || m === "deepseek-v4-pro";
|
|
39
|
+
}
|
|
38
40
|
return false;
|
|
39
41
|
}
|
|
40
42
|
|
|
@@ -94,17 +96,20 @@ var normalizeToolOutput = (content) => {
|
|
|
94
96
|
};
|
|
95
97
|
var toResponsesTools = (tools) => {
|
|
96
98
|
if (!Array.isArray(tools) || tools.length === 0) return void 0;
|
|
97
|
-
|
|
99
|
+
const normalized = tools.map((tool) => {
|
|
98
100
|
const fn = tool?.function;
|
|
99
|
-
|
|
101
|
+
const name = fn?.name ?? tool?.name;
|
|
102
|
+
if (!name) return null;
|
|
103
|
+
const parameters = fn?.parameters ?? tool?.parameters;
|
|
100
104
|
return {
|
|
101
105
|
type: "function",
|
|
102
|
-
name
|
|
103
|
-
description: fn
|
|
104
|
-
parameters: sanitizeResponsesParameters(
|
|
105
|
-
strict: fn
|
|
106
|
+
name,
|
|
107
|
+
...typeof (fn?.description ?? tool?.description) === "string" ? { description: fn?.description ?? tool?.description } : {},
|
|
108
|
+
parameters: sanitizeResponsesParameters(parameters),
|
|
109
|
+
...fn?.strict !== void 0 || tool?.strict !== void 0 ? { strict: fn?.strict ?? tool?.strict } : {}
|
|
106
110
|
};
|
|
107
111
|
}).filter(Boolean);
|
|
112
|
+
return normalized.length > 0 ? normalized : void 0;
|
|
108
113
|
};
|
|
109
114
|
var convertMessagesToResponsesInput = (messages, options) => {
|
|
110
115
|
const input = [];
|
|
@@ -121,7 +126,12 @@ var convertMessagesToResponsesInput = (messages, options) => {
|
|
|
121
126
|
}
|
|
122
127
|
const role = message.role;
|
|
123
128
|
if (role === "assistant" && !options?.stripReasoningContent && typeof message.reasoning_content === "string" && message.reasoning_content) {
|
|
124
|
-
input.push({
|
|
129
|
+
input.push({
|
|
130
|
+
type: "reasoning",
|
|
131
|
+
content: [
|
|
132
|
+
{ type: "reasoning_text", text: message.reasoning_content }
|
|
133
|
+
]
|
|
134
|
+
});
|
|
125
135
|
}
|
|
126
136
|
const contentParts = normalizeMessageParts(message.content, role);
|
|
127
137
|
if (contentParts.length > 0) {
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
fileKey,
|
|
3
3
|
getFileIdFromKey,
|
|
4
4
|
ulid
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-NRY4GCKJ.js";
|
|
6
6
|
import {
|
|
7
7
|
loadFileFromIndexedDb,
|
|
8
8
|
removeAction,
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
readAction,
|
|
13
13
|
readRequestManager,
|
|
14
14
|
resolveAgentReadServers
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-ATWUOTJP.js";
|
|
16
16
|
import {
|
|
17
17
|
asyncThunkCreator,
|
|
18
18
|
buildCreateSlice,
|
|
@@ -704,7 +704,7 @@ var dbSlice = createSliceWithThunks({
|
|
|
704
704
|
// 动态 import 在调用期解析,避开 TDZ/求值顺序问题(同下方 share)。
|
|
705
705
|
read: create.asyncThunk(
|
|
706
706
|
async (payload, thunkApi) => {
|
|
707
|
-
const { readAction: readAction2 } = await import("./read-
|
|
707
|
+
const { readAction: readAction2 } = await import("./read-F3L3T2WJ.js");
|
|
708
708
|
return readAction2(payload, thunkApi);
|
|
709
709
|
},
|
|
710
710
|
{
|
|
@@ -778,7 +778,7 @@ var dbSlice = createSliceWithThunks({
|
|
|
778
778
|
// 这里改成动态 import,运行期才解析,彻底断开这条边。
|
|
779
779
|
share: create.asyncThunk(
|
|
780
780
|
async (config, thunkApi) => {
|
|
781
|
-
const { shareResourceAction } = await import("./action-
|
|
781
|
+
const { shareResourceAction } = await import("./action-5MNAXR5B.js");
|
|
782
782
|
return shareResourceAction(config, thunkApi);
|
|
783
783
|
}
|
|
784
784
|
),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
loadProfileConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GE6IWA5N.js";
|
|
4
4
|
import {
|
|
5
5
|
resolveDefaultSpawn
|
|
6
6
|
} from "./chunk-IDZTNRP2.js";
|
|
@@ -270,6 +270,69 @@ Nolo Agent CLI Installer & Updater
|
|
|
270
270
|
}
|
|
271
271
|
return exitCode;
|
|
272
272
|
}
|
|
273
|
+
var NOLO_UPDATE_CHECK_KILL_SWITCH = "NOLO_CLI_NO_UPDATE_CHECK";
|
|
274
|
+
function parseCliVersion(raw) {
|
|
275
|
+
const match = /^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?$/.exec(raw.trim());
|
|
276
|
+
if (!match) return null;
|
|
277
|
+
return {
|
|
278
|
+
main: [Number(match[1]), Number(match[2]), Number(match[3])],
|
|
279
|
+
pre: match[4] ? match[4].split(".") : []
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
function compareCliVersions(a, b) {
|
|
283
|
+
const pa = parseCliVersion(a);
|
|
284
|
+
const pb = parseCliVersion(b);
|
|
285
|
+
if (!pa || !pb) return a.localeCompare(b);
|
|
286
|
+
for (let i = 0; i < 3; i++) {
|
|
287
|
+
if (pa.main[i] !== pb.main[i]) return pa.main[i] < pb.main[i] ? -1 : 1;
|
|
288
|
+
}
|
|
289
|
+
if (pa.pre.length === 0 && pb.pre.length === 0) return 0;
|
|
290
|
+
if (pa.pre.length === 0) return 1;
|
|
291
|
+
if (pb.pre.length === 0) return -1;
|
|
292
|
+
const len = Math.max(pa.pre.length, pb.pre.length);
|
|
293
|
+
for (let i = 0; i < len; i++) {
|
|
294
|
+
const x = pa.pre[i];
|
|
295
|
+
const y = pb.pre[i];
|
|
296
|
+
if (x === void 0) return -1;
|
|
297
|
+
if (y === void 0) return 1;
|
|
298
|
+
if (x === y) continue;
|
|
299
|
+
const xn = /^\d+$/.test(x) ? Number(x) : NaN;
|
|
300
|
+
const yn = /^\d+$/.test(y) ? Number(y) : NaN;
|
|
301
|
+
if (!Number.isNaN(xn) && !Number.isNaN(yn)) return xn < yn ? -1 : 1;
|
|
302
|
+
if (!Number.isNaN(xn)) return -1;
|
|
303
|
+
if (!Number.isNaN(yn)) return 1;
|
|
304
|
+
return x < y ? -1 : 1;
|
|
305
|
+
}
|
|
306
|
+
return 0;
|
|
307
|
+
}
|
|
308
|
+
async function checkForCliUpdate(currentVersion, serverUrl, options = {}) {
|
|
309
|
+
const env = options.env ?? process.env;
|
|
310
|
+
if ((env[NOLO_UPDATE_CHECK_KILL_SWITCH] ?? process.env[NOLO_UPDATE_CHECK_KILL_SWITCH]) === "1") {
|
|
311
|
+
return null;
|
|
312
|
+
}
|
|
313
|
+
if (!currentVersion || !parseCliVersion(currentVersion)) return null;
|
|
314
|
+
const channel = getCliInstallChannel(serverUrl);
|
|
315
|
+
const fetchImpl = options.fetchImpl ?? fetch;
|
|
316
|
+
const timeoutMs = options.timeoutMs ?? 2e3;
|
|
317
|
+
try {
|
|
318
|
+
const res = await fetchImpl(
|
|
319
|
+
`https://registry.npmjs.org/nolo-cli/${channel}`,
|
|
320
|
+
{
|
|
321
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
322
|
+
headers: { accept: "application/json" }
|
|
323
|
+
}
|
|
324
|
+
);
|
|
325
|
+
if (!res.ok) return null;
|
|
326
|
+
const data = await res.json();
|
|
327
|
+
const latestVersion = data.version;
|
|
328
|
+
if (!latestVersion || !parseCliVersion(latestVersion) || compareCliVersions(latestVersion, currentVersion) <= 0) {
|
|
329
|
+
return null;
|
|
330
|
+
}
|
|
331
|
+
return { latestVersion, channel };
|
|
332
|
+
} catch {
|
|
333
|
+
return null;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
273
336
|
async function runSelfUpdate(outputOrOptions) {
|
|
274
337
|
const options = outputOrOptions === void 0 ? {} : isRunSelfUpdateOptions(outputOrOptions) ? outputOrOptions : { output: outputOrOptions };
|
|
275
338
|
if (isCompiledBinary()) {
|
|
@@ -337,5 +400,8 @@ export {
|
|
|
337
400
|
resolveSelfUpdateServerUrl,
|
|
338
401
|
buildCliDoctorText,
|
|
339
402
|
runStandaloneBundleUpdate,
|
|
403
|
+
NOLO_UPDATE_CHECK_KILL_SWITCH,
|
|
404
|
+
compareCliVersions,
|
|
405
|
+
checkForCliUpdate,
|
|
340
406
|
runSelfUpdate
|
|
341
407
|
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
2
|
cloudflareModels,
|
|
3
|
-
deepSeekModels,
|
|
4
3
|
deepinfraModels,
|
|
5
4
|
fireworksModels,
|
|
6
5
|
gmiModels,
|
|
@@ -10,19 +9,29 @@ import {
|
|
|
10
9
|
platformHostedModels,
|
|
11
10
|
xaiModels,
|
|
12
11
|
zaiModels
|
|
13
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-CZHE6LLV.js";
|
|
14
13
|
|
|
15
14
|
// packages/ai/llm/modelAbility.ts
|
|
16
15
|
var MODEL_ABILITY_TABLE = {
|
|
17
16
|
"claude-opus-5": { passAt1: 74, benchmarkScore: 61 },
|
|
18
17
|
"gpt-5.6-sol": { passAt1: 73, benchmarkScore: 59 },
|
|
18
|
+
"claude-fable-5": { passAt1: 70 },
|
|
19
19
|
"gpt-5.6-terra": { passAt1: 70, benchmarkScore: 55 },
|
|
20
20
|
"kimi-k3": { passAt1: 69, benchmarkScore: 57 },
|
|
21
|
+
"gpt-5.5": { passAt1: 67 },
|
|
22
|
+
"gpt-5.6-luna": { passAt1: 67, benchmarkScore: 51 },
|
|
23
|
+
"grok-4.6": { passAt1: 67 },
|
|
24
|
+
"deepseek-v4-pro": { passAt1: 63 },
|
|
25
|
+
"claude-opus-4.8": { passAt1: 59 },
|
|
26
|
+
"qwen3.8-max": { passAt1: 57 },
|
|
27
|
+
"muse-spark-1.2": { passAt1: 55 },
|
|
21
28
|
"grok-4.5": { passAt1: 54, benchmarkScore: 54 },
|
|
22
29
|
"claude-sonnet-5": { passAt1: 54, benchmarkScore: 53 },
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
30
|
+
"deepseek-v4-flash": { passAt1: 53 },
|
|
31
|
+
"muse-spark-1.1": { passAt1: 53 },
|
|
32
|
+
"gpt-5.4": { passAt1: 52 },
|
|
33
|
+
"gemini-3.6-flash": { passAt1: 49, benchmarkScore: 50 },
|
|
34
|
+
"glm-5.2": { passAt1: 44, benchmarkScore: 51 }
|
|
26
35
|
};
|
|
27
36
|
var EFFORT_SUFFIXES = ["-extra-low", "-low", "-medium", "-high"];
|
|
28
37
|
function normalizeModelName(raw) {
|
|
@@ -53,7 +62,6 @@ var ALL_MODELS = [
|
|
|
53
62
|
...withProvider("openai")(openAIModels),
|
|
54
63
|
...withProvider("openrouter")(openrouterModels),
|
|
55
64
|
...withProvider("xai")(xaiModels),
|
|
56
|
-
...withProvider("deepseek")(deepSeekModels),
|
|
57
65
|
...withProvider("deepinfra")(deepinfraModels),
|
|
58
66
|
...withProvider("fireworks")(fireworksModels),
|
|
59
67
|
...withProvider("cloudflare")(cloudflareModels),
|
|
@@ -11,11 +11,11 @@ import {
|
|
|
11
11
|
patch,
|
|
12
12
|
remove,
|
|
13
13
|
write
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-FON47ACC.js";
|
|
15
15
|
import {
|
|
16
16
|
createAgentKey,
|
|
17
17
|
toTrimmedString
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-NRY4GCKJ.js";
|
|
19
19
|
import {
|
|
20
20
|
asyncThunkCreator,
|
|
21
21
|
buildCreateSlice,
|
|
@@ -300,7 +300,7 @@ var slice = createSliceWithThunks({
|
|
|
300
300
|
const overrides = {};
|
|
301
301
|
if (args.systemPromptOverride !== void 0) overrides.prompt = args.systemPromptOverride;
|
|
302
302
|
if (args.toolsOverride !== void 0) overrides.tools = args.toolsOverride;
|
|
303
|
-
const { _executeModel } = await import("./_executeModel-
|
|
303
|
+
const { _executeModel } = await import("./_executeModel-ZPNYAEFW.js");
|
|
304
304
|
return _executeModel(
|
|
305
305
|
{
|
|
306
306
|
isStreaming: args.isStreaming ?? false,
|
|
@@ -321,7 +321,7 @@ var slice = createSliceWithThunks({
|
|
|
321
321
|
* - 循环直到无工具调用或触发其他运行时停止条件
|
|
322
322
|
*/
|
|
323
323
|
runAgent: create.asyncThunk(async (args, thunkApi) => {
|
|
324
|
-
const { runAgentClientLoop } = await import("./runAgentClientLoop-
|
|
324
|
+
const { runAgentClientLoop } = await import("./runAgentClientLoop-C3QB2EXV.js");
|
|
325
325
|
const { content: loopContent, toolCallCount } = await runAgentClientLoop(
|
|
326
326
|
{
|
|
327
327
|
agentKey: args.agentKey,
|
|
@@ -337,7 +337,7 @@ var slice = createSliceWithThunks({
|
|
|
337
337
|
* 聊天轮次流式 Agent 调用
|
|
338
338
|
*/
|
|
339
339
|
streamAgentChatTurn: create.asyncThunk(async (args, thunkApi) => {
|
|
340
|
-
const { streamAgentChatTurnHandler } = await import("./streamAgentChatTurn-
|
|
340
|
+
const { streamAgentChatTurnHandler } = await import("./streamAgentChatTurn-GF5W5OIP.js");
|
|
341
341
|
return streamAgentChatTurnHandler(args, thunkApi);
|
|
342
342
|
}),
|
|
343
343
|
/**
|
|
@@ -415,7 +415,8 @@ var slice = createSliceWithThunks({
|
|
|
415
415
|
credentialRef,
|
|
416
416
|
createRawApiKey
|
|
417
417
|
);
|
|
418
|
-
} catch {
|
|
418
|
+
} catch (error) {
|
|
419
|
+
console.error("[agent-credential-sync] push failed", error instanceof Error ? error.message : "unknown error");
|
|
419
420
|
}
|
|
420
421
|
}
|
|
421
422
|
}
|
|
@@ -28,7 +28,8 @@ function canonicalizeNoloServerUrl(value) {
|
|
|
28
28
|
// packages/cli/client/profileConfig.ts
|
|
29
29
|
var normalizeProfileServerUrl = canonicalizeNoloServerUrl;
|
|
30
30
|
function getDefaultProfileConfigPath() {
|
|
31
|
-
|
|
31
|
+
const noloHome = process.env.NOLO_HOME?.trim();
|
|
32
|
+
return noloHome ? join(noloHome, "config.json") : join(homedir(), ".nolo", "config.json");
|
|
32
33
|
}
|
|
33
34
|
function loadProfileConfig(path = getDefaultProfileConfigPath()) {
|
|
34
35
|
if (!existsSync(path)) return null;
|
|
@@ -89,8 +90,8 @@ function buildCliRuntimeEnv(processEnv, config) {
|
|
|
89
90
|
const explicitAuthToken = processEnv.AUTH_TOKEN || processEnv.AUTH;
|
|
90
91
|
const explicitServerUrl = processEnv.NOLO_SERVER || processEnv.NOLO_SERVER_URL || processEnv.BASE_URL;
|
|
91
92
|
return {
|
|
92
|
-
...processEnv,
|
|
93
93
|
...profileEnv,
|
|
94
|
+
...processEnv,
|
|
94
95
|
...explicitAuthToken ? { AUTH_TOKEN: explicitAuthToken } : {},
|
|
95
96
|
...explicitServerUrl ? {
|
|
96
97
|
NOLO_SERVER: explicitServerUrl,
|
|
@@ -118,8 +119,15 @@ function saveProfileAgentSelection(selection, path = getDefaultProfileConfigPath
|
|
|
118
119
|
if (!config) return null;
|
|
119
120
|
const profile = config.profiles[config.currentProfile];
|
|
120
121
|
if (!profile) return null;
|
|
121
|
-
|
|
122
|
-
|
|
122
|
+
const agentKey = selection.agentKey.trim();
|
|
123
|
+
const agentName = selection.agentName.trim();
|
|
124
|
+
if (!agentKey) {
|
|
125
|
+
delete profile.agentKey;
|
|
126
|
+
delete profile.agentName;
|
|
127
|
+
} else {
|
|
128
|
+
profile.agentKey = agentKey;
|
|
129
|
+
profile.agentName = agentName;
|
|
130
|
+
}
|
|
123
131
|
mkdirSync(dirname(path), { recursive: true });
|
|
124
132
|
writeFileSync(path, `${JSON.stringify(config, null, 2)}
|
|
125
133
|
`, "utf8");
|