nolo-cli 0.84.0-alpha.1 → 0.84.0
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 +2 -2
- package/{_executeModel-IULR47HG.js → _executeModel-BPUR2QYH.js} +51 -50
- package/{action-D22U6CTH.js → action-P4TNFGAD.js} +11 -11
- package/{addContentAction-XAPUTGL4.js → addContentAction-MB2HHMDZ.js} +9 -9
- package/{addDialogAgentAction-M7VLLBZM.js → addDialogAgentAction-S2NRBCWW.js} +9 -9
- package/{agentDeleteCommand-2S4WCDQC.js → agentDeleteCommand-MNAA6MIG.js} +32 -30
- package/{agentEmailCommands-V3ADGHX7.js → agentEmailCommands-SK34WJKU.js} +70 -66
- package/{agentGrantCommands-R3VQEZJR.js → agentGrantCommands-M3XFO6EN.js} +2 -2
- package/{agentListCommands-EPK3S274.js → agentListCommands-I26MKI4T.js} +55 -36
- package/{agentMachineCommands-XMZWK7P3.js → agentMachineCommands-M6QDR6P3.js} +32 -30
- package/{agentProviderCommands-65ZC2WB4.js → agentProviderCommands-X3UNW77C.js} +87 -0
- package/{agentPullCommand-N7L2CT7L.js → agentPullCommand-O5MPVJ5E.js} +3 -3
- package/agentRecordCommands-HTHLO2MM.js +129 -0
- package/{agentRunCommand-VUWNWC7C.js → agentRunCommand-IAIRCMTH.js} +70 -65
- package/{agentRunControl-T44MESII.js → agentRunControl-AVJR4JW4.js} +2 -2
- package/{agentRuntimeLocal-YRONTDLM.js → agentRuntimeLocal-3WTYYIT2.js} +32 -26
- package/{agentSlice-2P7OJFES.js → agentSlice-TVP3HINW.js} +10 -10
- package/{appDeleteCommands-YS7UGMP3.js → appDeleteCommands-SB5TNLKY.js} +32 -30
- package/{appDeployCommands-XIE5Z4BE.js → appDeployCommands-2IPKZINV.js} +32 -30
- package/{appDeployStatusCommands-54UDVYET.js → appDeployStatusCommands-K63TFUID.js} +32 -30
- package/{appGetCommands-6XYLBCRN.js → appGetCommands-VU2SLNEH.js} +32 -30
- package/{appListCommands-VEGH7SF5.js → appListCommands-S3T4DJ36.js} +32 -30
- package/{authCommand-JIEOFHXW.js → authCommand-HGP2XTKC.js} +185 -28
- package/{authCommands-ILTBI6JV.js → authCommands-RGOGCPP6.js} +4 -5
- package/builtinSkillRegistry-Q2VVY3SC.js +33 -0
- package/{chatQueueReduxAdapter-GPYCH5Z2.js → chatQueueReduxAdapter-TWIYKVIZ.js} +25 -25
- package/{chromeCommands-VOIRNJBL.js → chromeCommands-FZYAU75D.js} +1 -1
- package/{chromeOpsCommands-M7DPCX2T.js → chromeOpsCommands-62P2Q2YB.js} +31 -1
- package/{chunk-C3FZR5EC.js → chunk-2F7RJC6L.js} +1 -1
- package/{chunk-BOYUESO7.js → chunk-3AMA42ZI.js} +1 -1
- package/{chunk-RZOJRTKR.js → chunk-3BGIKIPF.js} +444 -920
- package/{chunk-HQUORJTM.js → chunk-3BMYXEUW.js} +1 -1
- package/{chunk-EBKMQULC.js → chunk-3IUWIAHP.js} +13 -15
- package/{chunk-NTW5GWDM.js → chunk-3VNWWVKB.js} +2 -0
- package/{chunk-4SZ37KLL.js → chunk-3VUWPRFW.js} +50 -30
- package/{chunk-WL2RKIBF.js → chunk-3YIAR5UI.js} +1 -1
- package/{chunk-DWUCB2A3.js → chunk-42V6BK2E.js} +1 -1
- package/{chunk-AX7RMXSH.js → chunk-4MK3I7Y4.js} +38 -4
- package/{chunk-PF6O3GR3.js → chunk-52Q2IW2X.js} +1340 -1273
- package/{chunk-Y3NZYLPG.js → chunk-5MEYHVIB.js} +1 -1
- package/{chunk-5XTOKQLW.js → chunk-5UTFL4QJ.js} +6 -2
- package/chunk-5ZUL4CUO.js +10 -0
- package/{chunk-6YTOJY35.js → chunk-6D2JFXLY.js} +35 -0
- package/{chunk-E6RGHPDR.js → chunk-6D6VBVEW.js} +4 -6
- package/{chunk-FZGV4FGK.js → chunk-6GFOD3TK.js} +260 -140
- package/{chunk-TMPLPCVX.js → chunk-6OZ36FXI.js} +2 -2
- package/{chunk-PZM3EENV.js → chunk-6Z7MY3V7.js} +1 -1
- package/{chunk-BYEJ7K2Z.js → chunk-7S4YWN7P.js} +1 -1
- package/{chunk-SREASRV5.js → chunk-ABQYVJBJ.js} +1 -1
- package/chunk-ACTMNVHM.js +93 -0
- package/{chunk-ZZCJUXUI.js → chunk-AHAHBQMU.js} +2 -2
- package/{chunk-BJCWNHVU.js → chunk-BFDFRLLQ.js} +2 -2
- package/chunk-BMQ2MJUK.js +153 -0
- package/chunk-BNGW5ASC.js +344 -0
- package/{chunk-2KDR4CWE.js → chunk-BYMV6QZG.js} +24 -1
- package/{chunk-73BR2IQT.js → chunk-CWQINZEA.js} +127 -7
- package/{chunk-HTMVBPOF.js → chunk-DD6XE56O.js} +19 -72
- package/{chunk-CADAR6QU.js → chunk-EYAQT56M.js} +4 -3
- package/{chunk-CJCJF5XB.js → chunk-FDTR4QJ6.js} +4 -2
- package/{chunk-D6XYLSOS.js → chunk-FKNWP6SG.js} +1 -1
- package/{chunk-3VPDELAP.js → chunk-FP76KI2Y.js} +1500 -84
- package/chunk-FV3JEYR3.js +870 -0
- package/{chunk-GCJ3IS5M.js → chunk-GIVFXPWK.js} +177 -6
- package/chunk-GMZLP5DV.js +82 -0
- package/{chunk-LHDV2QUI.js → chunk-GNCCNNZD.js} +4 -2
- package/{chunk-XWNRAIUL.js → chunk-GP5LKBUZ.js} +6 -16
- package/{chunk-PZCTYKGU.js → chunk-GQBOR3G6.js} +2 -2
- package/{chunk-NFT2AOK5.js → chunk-H4AHY5BU.js} +13 -85
- package/{chunk-FNGAF7C4.js → chunk-HAFJ3NDE.js} +137 -12
- package/{chunk-ZVN6I33J.js → chunk-HCT7U36O.js} +9 -5
- package/{chunk-7QVPPOEC.js → chunk-HKNXJGEC.js} +43 -43
- package/{chunk-3JQ2NRYU.js → chunk-HVURBGF3.js} +4 -4
- package/{chunk-OZX2IPKM.js → chunk-HYJFRTLW.js} +2 -2
- package/{chunk-HH65VA5U.js → chunk-I3TQJXQ7.js} +109 -6
- package/{chunk-UDQWGU7F.js → chunk-J4MOO56S.js} +1 -1
- package/{chunk-KC5FAHVS.js → chunk-JEDZAO7L.js} +1 -1
- package/{chunk-6XIE5ZGI.js → chunk-JPGCXHNM.js} +1 -1
- package/{chunk-DUJWWUGV.js → chunk-K36IXSCQ.js} +1 -1
- package/{chunk-KRMWO2NN.js → chunk-KAUSRTO6.js} +3 -3
- package/{chunk-7FWPLK4M.js → chunk-LJ5VW2UJ.js} +1 -1
- package/{chunk-GHEJJGJI.js → chunk-LMREEBWT.js} +833 -109
- package/{chunk-RXX4GDIH.js → chunk-LS2ZANRJ.js} +1 -1
- package/chunk-LVIFM7VW.js +1625 -0
- package/{chunk-BJIRLHJR.js → chunk-M2EJHDJP.js} +4 -0
- package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
- package/{chunk-KEZNSFGD.js → chunk-MZYBSTMH.js} +11 -173
- package/chunk-OCZKATRC.js +129 -0
- package/{chunk-MXUSPS2N.js → chunk-OIVSQH2O.js} +1510 -1592
- package/{chunk-E36HZARC.js → chunk-P5EVSOPA.js} +93 -17
- package/{chunk-SZLVDREM.js → chunk-PBA4UJBK.js} +3 -3
- package/{chunk-URWDSZRW.js → chunk-PMAIQX7A.js} +3 -3
- package/{chunk-AETZ7AD6.js → chunk-Q554LLSI.js} +1 -1
- package/{chunk-AJHEFRGJ.js → chunk-Q67DOFOO.js} +214 -5
- package/{chunk-UZ6XXCVR.js → chunk-QDSINZM3.js} +15 -2
- package/{chunk-NRALD3CC.js → chunk-QSHEEA5N.js} +54 -10
- package/chunk-QU7KDSZX.js +677 -0
- package/{chunk-T25L377S.js → chunk-RPJUFEGR.js} +10 -10
- package/{chunk-QCZX4FTW.js → chunk-SH43IESU.js} +173 -15
- package/{chunk-SPAQ4PVV.js → chunk-SV5IJK6K.js} +1 -1
- package/{chunk-BKJO7LDP.js → chunk-U4OKDZFH.js} +6 -6
- package/{chunk-DM4FBSWG.js → chunk-UDVH2P4A.js} +7 -7
- package/{chunk-4EJ5QYB5.js → chunk-UEVXFHQB.js} +2 -2
- package/{chunk-JYYZCK2Z.js → chunk-V7E4PXQD.js} +1 -1
- package/{chunk-NHRQCXIQ.js → chunk-VMFTFOWF.js} +13 -3
- package/{chunk-YFADVSZE.js → chunk-VRTTFDBM.js} +7 -6
- package/{chunk-U7YP7ECK.js → chunk-WP5UXDA5.js} +84 -13
- package/{chunk-5J7W2VWW.js → chunk-WV42OMV7.js} +6 -265
- package/{chunk-3QPYFHAH.js → chunk-XD2MJFUG.js} +1 -1
- package/{chunk-IDGYOD2O.js → chunk-XP3VVAPG.js} +3174 -223
- package/{chunk-ETLZZQJE.js → chunk-Z2PV6O2T.js} +121 -26
- package/{chunk-BZNGCVAW.js → chunk-Z5625XML.js} +4 -4
- package/{contentThunks-THSCADSK.js → contentThunks-JYWI7G7I.js} +26 -26
- package/{cooldownCommands-BSCH2W7P.js → cooldownCommands-REAWYVTY.js} +2 -2
- package/{createAgentAutomationAction-WGN3UQ5A.js → createAgentAutomationAction-Z4SUJ54Y.js} +26 -26
- package/{createDialogAction-3EN2NLH7.js → createDialogAction-RCHFLVJ2.js} +29 -29
- package/{createPageAction-4VK473QV.js → createPageAction-YK2253XQ.js} +28 -28
- package/{dbSlice-GKGGFNOB.js → dbSlice-A6C6H32X.js} +8 -8
- package/{deleteFile-LWSR674W.js → deleteFile-YG6QMJLU.js} +3 -3
- package/{dialogCommands-PS4NWYY7.js → dialogCommands-X4UOZQWX.js} +36 -32
- package/{dialogSlice-CLV7SVOZ.js → dialogSlice-IVTWLCE2.js} +31 -25
- package/{docCreateCommands-4KANZJR6.js → docCreateCommands-VD6TGHG4.js} +33 -31
- package/{docDeleteCommands-F2S2TRUF.js → docDeleteCommands-OT3R2G4W.js} +34 -32
- package/{docReadCommands-B2WDPZQE.js → docReadCommands-2G7BIXSH.js} +33 -31
- package/{docStore-TDLCHWPF.js → docStore-UENKCCDX.js} +9 -9
- package/{docUpdateCommands-E7TKHRIO.js → docUpdateCommands-45MVJKZA.js} +33 -31
- package/{fetchMessages-DRABNDPZ.js → fetchMessages-EIU7UFFK.js} +3 -4
- package/{getPricing-QVTUQQTM.js → getPricing-LUSEABA6.js} +4 -4
- package/{handleSendMessageAction-AHL3ZHE4.js → handleSendMessageAction-LM2J4HC3.js} +66 -74
- package/index.js +99 -86
- package/{localDialogRead-PUQKFI73.js → localDialogRead-BTFJ4V2I.js} +2 -2
- package/{localRuntimeDb-P37ZTX55.js → localRuntimeDb-SYQGUF4U.js} +1 -1
- package/{machineCommands-OTABVXOA.js → machineCommands-6N6MQIE6.js} +69 -65
- package/{machineWsRunDispatch-V4EVQSMZ.js → machineWsRunDispatch-7MFKVQCR.js} +65 -61
- package/{memberThunks-KATHH3F4.js → memberThunks-P2ECUJ56.js} +9 -9
- package/{models-GS72DVJS.js → models-T3SG6MJ5.js} +2 -2
- package/{offlineMarxistsAgentCommand-GEH6SNNA.js → offlineMarxistsAgentCommand-HGXZV4XJ.js} +1 -1
- package/package.json +1 -1
- package/pdf-U6KSUEZZ.js +26435 -0
- package/providerPresetApply-XI3WUPTI.js +214 -0
- package/providerRegistry-KEPWWGXD.js +31 -0
- package/{read-LC6HVYBN.js → read-COE3ZYR6.js} +5 -4
- package/{readDocTool-N3ERJHHF.js → readDocTool-5USN4A6V.js} +1 -1
- package/{readlineWorkspace-IIT3FQ6I.js → readlineWorkspace-JWBON5CX.js} +291 -135
- package/{removeDialogAgentAction-F5GPTALR.js → removeDialogAgentAction-W66BJ7CF.js} +12 -12
- package/{runAgentClientLoop-7TQM7IAR.js → runAgentClientLoop-TA4SSPHE.js} +49 -49
- package/{runtimeDoctorCommands-CROTMULY.js → runtimeDoctorCommands-X6WDBEQX.js} +2 -2
- package/{setDialogExtraReferencesAction-AY4ZCF3A.js → setDialogExtraReferencesAction-2ALKG3WA.js} +10 -10
- package/{setPrimaryDialogAgentAction-HPMG7V3R.js → setPrimaryDialogAgentAction-TQZB55F6.js} +12 -12
- package/{settingSlice-OEJA4NQO.js → settingSlice-P4ZW7K5X.js} +10 -10
- package/{spaceCommands-FSYH7AL4.js → spaceCommands-6NSAXB7D.js} +31 -29
- package/{streamAgentChatTurn-6EF6TVFK.js → streamAgentChatTurn-X5ENGUIS.js} +126 -65
- package/{switchDialogAgentAction-HMDZTZ4I.js → switchDialogAgentAction-3KI72HHS.js} +9 -9
- package/{tableCommands-SUNTHAYX.js → tableCommands-O6NWHFKV.js} +1 -1
- package/{toolApiClient-VGYUB4P5.js → toolApiClient-G3M73RTB.js} +3 -3
- package/{tools-R3QNWWTD.js → tools-XRQR7ZZR.js} +45 -45
- package/tuiSummaryLlmCaller-UFGFOIIW.js +128 -0
- package/{updateCommands-Y363MC3L.js → updateCommands-2M74UL7P.js} +2 -2
- package/{updateDialogTitleAction-F3EUOWOB.js → updateDialogTitleAction-ESUUD3GT.js} +46 -29
- package/agentRecordCommands-WFPWLWOF.js +0 -125
- package/chunk-FMODTASJ.js +0 -109
- package/chunk-I42VC5KR.js +0 -15
- package/chunk-NB5SIWC4.js +0 -611
- package/chunk-NG4UT4K4.js +0 -79
- package/codingSkills-7S6523WH.js +0 -48
- package/tuiSummaryLlmCaller-PWOXTCBF.js +0 -116
- package/{chunk-3RAG2NAD.js → chunk-UKWGR5SS.js} +3 -3
- package/{db-VQSAOWAO.js → db-WK5MDZVN.js} +1 -1
- package/{localRuntimeAuthority-R5UBODT3.js → localRuntimeAuthority-6IR6BBXE.js} +3 -3
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
import {
|
|
2
|
+
publicAgentKey
|
|
3
|
+
} from "./chunk-M2EJHDJP.js";
|
|
4
|
+
|
|
5
|
+
// packages/core/builtinAgentCatalog.ts
|
|
6
|
+
var BUILTIN_AGENT_CATALOG = [
|
|
7
|
+
// ── 平台内置 6 个(builtinAgents BUILTIN_*)──
|
|
8
|
+
{
|
|
9
|
+
id: "01NOLOAPPBLD000000019KCKT0",
|
|
10
|
+
group: "builtin",
|
|
11
|
+
name: "nolo",
|
|
12
|
+
provider: "nolo",
|
|
13
|
+
model: "deepseek-flash",
|
|
14
|
+
runtimeFallback: true
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
id: "01APPBUILDER00000001YAII3I",
|
|
18
|
+
group: "builtin",
|
|
19
|
+
name: "\u5E94\u7528\u6784\u5EFA\u52A9\u624B",
|
|
20
|
+
provider: "nolo",
|
|
21
|
+
model: "deepseek-flash"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: "01ECOMMERCEAG00000001PYQ2J",
|
|
25
|
+
group: "builtin",
|
|
26
|
+
name: "\u7535\u5546\u5546\u54C1\u53C2\u6570\u52A9\u624B",
|
|
27
|
+
provider: "openai",
|
|
28
|
+
model: "gpt-6-luna"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
id: "01NOLOAGENTCRT000000000001",
|
|
32
|
+
group: "builtin",
|
|
33
|
+
name: "AI \u521B\u5EFA\u52A9\u624B",
|
|
34
|
+
provider: "nolo",
|
|
35
|
+
model: "deepseek-flash"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: "01NOLOFEEDBACKA000000000R2",
|
|
39
|
+
group: "builtin",
|
|
40
|
+
name: "\u53CD\u9988\u5165\u53E3",
|
|
41
|
+
provider: "nolo",
|
|
42
|
+
model: "deepseek-flash"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: "01CHROMEOPR000000000001",
|
|
46
|
+
group: "builtin",
|
|
47
|
+
name: "Chrome \u64CD\u4F5C\u5458",
|
|
48
|
+
provider: "nolo",
|
|
49
|
+
model: "deepseek-flash"
|
|
50
|
+
},
|
|
51
|
+
// ── quick-chat 档位 public(图片助手已无 runtimeFallback,见下方图片档段) ──
|
|
52
|
+
// 2026-09-10 兜底最小化:runtimeFallback 只保留产品代码显式引用的条目
|
|
53
|
+
// (nolo 默认档、PLATFORM_TIER_AGENT_KEYS 的 flash/image-compat、
|
|
54
|
+
// SYSTEM_BUILTIN_TRUSTED 的 flash/pro/glm-flash)。广场档与图片助手不再
|
|
55
|
+
// 兜底——记录缺失时明确报 Agent not found,而不是合成无 prompt 的裸配置。
|
|
56
|
+
{
|
|
57
|
+
id: "01DSV4FLASHPB00000000JFPFD",
|
|
58
|
+
group: "public",
|
|
59
|
+
name: "DeepSeek Flash",
|
|
60
|
+
provider: "nolo",
|
|
61
|
+
model: "deepseek-flash",
|
|
62
|
+
runtimeFallback: true
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
id: "01DSV4PRONPB00000001VIR3EK",
|
|
66
|
+
group: "public",
|
|
67
|
+
name: "DeepSeek V4 Pro",
|
|
68
|
+
provider: "nolo",
|
|
69
|
+
model: "deepseek-v4-pro",
|
|
70
|
+
runtimeFallback: true
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: "01GLM52DIPB00000000I3E2MY",
|
|
74
|
+
group: "public",
|
|
75
|
+
name: "GLM 5.3",
|
|
76
|
+
provider: "nolo",
|
|
77
|
+
model: "glm-5.3"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
id: "01GLMFLASHPB00000000BT20BC",
|
|
81
|
+
group: "public",
|
|
82
|
+
name: "GLM 5.3 Flash",
|
|
83
|
+
provider: "nolo",
|
|
84
|
+
model: "glm-5-3-flash",
|
|
85
|
+
runtimeFallback: true
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
id: "01KIMIK26OLLAMA0000000001",
|
|
89
|
+
// 已下架的公共入口:保留 internal catalog entry 仅用于旧 Agent 记录的运行时兼容。
|
|
90
|
+
group: "internal",
|
|
91
|
+
lifecycle: "retired",
|
|
92
|
+
name: "Kimi K2.6\uFF08\u517C\u5BB9\uFF09",
|
|
93
|
+
provider: "nolo",
|
|
94
|
+
model: "kimi-k2.6",
|
|
95
|
+
runtimeFallback: true
|
|
96
|
+
},
|
|
97
|
+
// ── 广场公开聊天档(从 createSpaceAgents PUBLIC_AGENT_DEFS 收编,2026-08-19)──
|
|
98
|
+
// ID 与 createSpaceAgents 的 deterministicId 结果一致;provider 按 agentSeedBuilder
|
|
99
|
+
// 默认规则:显式 provider 用显式值,未写则 openai。
|
|
100
|
+
// 2026-09-10 预设收敛:GPT-5.6 Sol/Terra、GPT-5.5 Pro 从广场退场转 internal 兼容,
|
|
101
|
+
// 公开聊天档只保留 Luna + nolo 托管组 + 图片档(图片档仍在广场,但不再 runtimeFallback)。
|
|
102
|
+
{
|
|
103
|
+
id: "01GPT56SOLPB00000000VXMGCW",
|
|
104
|
+
// 已从广场/预设退场(2026-09-10):保留 internal 兼容条目,仅为存量 agent
|
|
105
|
+
// 记录提供运行时路由;不再出现在广场与 createSpaceAgents 播种清单。
|
|
106
|
+
group: "internal",
|
|
107
|
+
lifecycle: "retired",
|
|
108
|
+
name: "GPT-5.6 Sol\uFF08\u517C\u5BB9\uFF09",
|
|
109
|
+
provider: "openai",
|
|
110
|
+
model: "gpt-5.6-sol"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
id: "01GPT56TERPB00000001UX7RKW",
|
|
114
|
+
// 已从广场/预设退场(2026-09-10):同 Sol,internal 兼容。
|
|
115
|
+
group: "internal",
|
|
116
|
+
lifecycle: "retired",
|
|
117
|
+
name: "GPT-5.6 Terra\uFF08\u517C\u5BB9\uFF09",
|
|
118
|
+
provider: "openai",
|
|
119
|
+
model: "gpt-5.6-terra"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
id: "01GPT56LUNPB00000001VVVZHS",
|
|
123
|
+
// 2026-09-23 换代:同一稳定 ID(用户收藏 / 别名 / Space 内容键不失效)升级为
|
|
124
|
+
// 平台托管 GPT-6 Luna。注意与 retired 的区别:Luna 是在架商品原地换代,
|
|
125
|
+
//
|
|
126
|
+
// provider 必须是 "nolo"(平台托管命名空间),不能写上游名 "openai":
|
|
127
|
+
// ① 计费按 calculatePrice(provider, model) 查价,平台价只注册在 nolo 下,
|
|
128
|
+
// 写 openai 会落零价虚拟模型(2026-09-24 实测 openai/gpt-6-luna → cost 0);
|
|
129
|
+
// ② agent-run 的托管路由门 isPlatformManagedProvider 只认 nolo/deepseek/
|
|
130
|
+
// kimi 系,provider 非 nolo 时读不到 hosted routing table,直连 key 也拿不到。
|
|
131
|
+
// 平台 agent 统一收敛到 nolo provider 是既定方向(见 modelUpgradeTable 的
|
|
132
|
+
// 「尽量迁移到 nolo 平台托管」原则),其余上游名 provider 逐步退场。
|
|
133
|
+
group: "public",
|
|
134
|
+
lifecycle: "active",
|
|
135
|
+
name: "GPT-6 Luna",
|
|
136
|
+
provider: "nolo",
|
|
137
|
+
model: "gpt-6-luna"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
id: "01GPT55PROPUB00000000IV47M",
|
|
141
|
+
// 已从广场/预设退场(2026-09-10 retired,2026-09-23 起 overlay 强制过滤
|
|
142
|
+
// 存量 DB 记录):internal 兼容,理由同 Sol。
|
|
143
|
+
group: "internal",
|
|
144
|
+
lifecycle: "retired",
|
|
145
|
+
name: "GPT-5.5 Pro\uFF08\u517C\u5BB9\uFF09",
|
|
146
|
+
provider: "openai",
|
|
147
|
+
model: "gpt-5.5-pro"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
id: "01CLSO50DIPB00000000A1DVVU",
|
|
151
|
+
// 旧代 Claude 广场入口(2026-09-01 下架时随条目删除,只剩线上孤儿记录,
|
|
152
|
+
// 2026-09-24 重新收编):internal + retired 保留运行时兼容,广场由 overlay
|
|
153
|
+
// 按 retiredCatalogIds 过滤其存量 agent-pub-* 记录(退场 ≠ 删除——Space
|
|
154
|
+
// contentKey / dialog primaryAgentKey 硬引用不断链)。model 沿用 2026-09-15
|
|
155
|
+
// 恢复的真实 DeepInfra 官方名(与平台模型名同名)。
|
|
156
|
+
group: "internal",
|
|
157
|
+
lifecycle: "retired",
|
|
158
|
+
name: "Claude Sonnet 5\uFF08\u517C\u5BB9\uFF09",
|
|
159
|
+
provider: "nolo",
|
|
160
|
+
model: "anthropic/claude-sonnet-5"
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
id: "01FABLE5DIPB00000001VJBKM4",
|
|
164
|
+
// 同 Sonnet 5:旧代 Claude 广场入口转 internal + retired 兼容条目。
|
|
165
|
+
group: "internal",
|
|
166
|
+
lifecycle: "retired",
|
|
167
|
+
name: "Claude Fable 5\uFF08\u517C\u5BB9\uFF09",
|
|
168
|
+
provider: "nolo",
|
|
169
|
+
model: "anthropic/claude-fable-5"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
id: "01CLOP48DIPB0000000001OI1W",
|
|
173
|
+
// 同 Sonnet 5 / Fable 5。这条尤其重要:线上同时存在
|
|
174
|
+
// agent-system-01CLOP48DIPB...(userId=system)与 owner 副本。catalog 若无该
|
|
175
|
+
// 条目,overlay 的「DB 有、catalog 无 → 用户自建」规则会把 system 名下记录当成
|
|
176
|
+
// 用户自建保留——正是 2026-09-24 设计会商点名的「事故复活通道」实例。
|
|
177
|
+
group: "internal",
|
|
178
|
+
lifecycle: "retired",
|
|
179
|
+
name: "Claude Opus 5\uFF08\u517C\u5BB9\uFF09",
|
|
180
|
+
provider: "nolo",
|
|
181
|
+
model: "anthropic/claude-opus-5"
|
|
182
|
+
},
|
|
183
|
+
// Claude 系 2026-09-24 广场重新上架:只上架最新一代(Fable 5.1 / Opus 5.5)。
|
|
184
|
+
// 平台托管通道 2026-09-15 起已是真实 DeepInfra 模型(nolo 目录),provider
|
|
185
|
+
// 收敛到 nolo 命名空间;旧代 Sonnet 5 / Fable 5 只保留上面的 retired 兼容条目。
|
|
186
|
+
// Gemini 文本档只上架最新一代:旧版留在广场只会分散选择、拉长列表,而
|
|
187
|
+
// 用户想要的是「最新的那个 Gemini」。旧版模型仍可保留用于兼容历史请求,
|
|
188
|
+
// (modelAbility / 定价表照旧),下架的只是广场入口。
|
|
189
|
+
{
|
|
190
|
+
id: "01CLDFBL51PB000000013N70D7",
|
|
191
|
+
group: "public",
|
|
192
|
+
lifecycle: "active",
|
|
193
|
+
name: "Claude Fable 5.1",
|
|
194
|
+
provider: "nolo",
|
|
195
|
+
model: "anthropic/claude-fable-5-1"
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
id: "01CLDOPU55PB00000001MQHSW0",
|
|
199
|
+
group: "public",
|
|
200
|
+
lifecycle: "active",
|
|
201
|
+
name: "Claude Opus 5.5",
|
|
202
|
+
provider: "nolo",
|
|
203
|
+
model: "anthropic/claude-opus-5-5"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
id: "01GEM37FLPB00000000FJCRNC",
|
|
207
|
+
group: "public",
|
|
208
|
+
name: "Gemini 3.8 Flash",
|
|
209
|
+
provider: "nolo",
|
|
210
|
+
model: "gemini-3.8-flash"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
id: "01GROK46PLAZ00000001PTJZ3K",
|
|
214
|
+
group: "public",
|
|
215
|
+
name: "Grok 4.6",
|
|
216
|
+
provider: "xai",
|
|
217
|
+
model: "grok-4.6"
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
id: "01GPTIMG2GEN00000000SSEBOS",
|
|
221
|
+
group: "public",
|
|
222
|
+
name: "GPT Image 2 \u56FE\u7247\u751F\u6210\u5668",
|
|
223
|
+
provider: "nolo",
|
|
224
|
+
model: "gpt-6-luna",
|
|
225
|
+
hasImageOutput: true,
|
|
226
|
+
imageModel: "gpt-image-2",
|
|
227
|
+
imageWorkflow: "generate",
|
|
228
|
+
imageConfig: { enabled: true }
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
id: "01GPTIMG2EDT00000001R4R4H4",
|
|
232
|
+
group: "public",
|
|
233
|
+
name: "GPT Image 2 \u56FE\u7247\u7F16\u8F91\u5668",
|
|
234
|
+
provider: "nolo",
|
|
235
|
+
model: "gpt-6-luna",
|
|
236
|
+
hasImageOutput: true,
|
|
237
|
+
imageModel: "gpt-image-2",
|
|
238
|
+
imageWorkflow: "edit",
|
|
239
|
+
imageConfig: { enabled: true }
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
id: "01GPTIMG2CNT00000000USKZFO",
|
|
243
|
+
group: "public",
|
|
244
|
+
name: "GPT Image 2 \u8FDE\u7EED\u521B\u4F5C\u52A9\u624B",
|
|
245
|
+
provider: "nolo",
|
|
246
|
+
model: "gpt-6-luna",
|
|
247
|
+
hasImageOutput: true,
|
|
248
|
+
imageModel: "gpt-image-2",
|
|
249
|
+
imageWorkflow: "continuous",
|
|
250
|
+
imageConfig: { enabled: true }
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
id: "01NB2LITEGEN00000001XE1MNO",
|
|
254
|
+
group: "public",
|
|
255
|
+
name: "Nano Banana 2 Lite \u6587\u751F\u56FE",
|
|
256
|
+
provider: "nolo",
|
|
257
|
+
model: "gemini-3.1-flash-lite-image",
|
|
258
|
+
hasImageOutput: true
|
|
259
|
+
}
|
|
260
|
+
];
|
|
261
|
+
var CATALOG_BY_ID = new Map(BUILTIN_AGENT_CATALOG.map((e) => [e.id, e]));
|
|
262
|
+
function builtinAgentCatalogEntryById(id) {
|
|
263
|
+
if (!id) return void 0;
|
|
264
|
+
return CATALOG_BY_ID.get(id);
|
|
265
|
+
}
|
|
266
|
+
function builtinRuntimeFallbackEntries() {
|
|
267
|
+
return BUILTIN_AGENT_CATALOG.filter((e) => e.runtimeFallback === true);
|
|
268
|
+
}
|
|
269
|
+
function builtinPlatformEntries() {
|
|
270
|
+
return BUILTIN_AGENT_CATALOG.filter((e) => e.group === "builtin");
|
|
271
|
+
}
|
|
272
|
+
function isRetiredCatalogEntry(entry2) {
|
|
273
|
+
return entry2?.lifecycle === "retired";
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
// packages/core/builtinAgents.ts
|
|
277
|
+
var entry = (id) => {
|
|
278
|
+
const e = builtinAgentCatalogEntryById(id);
|
|
279
|
+
if (!e) throw new Error(`missing builtin agent catalog entry: ${id}`);
|
|
280
|
+
return e;
|
|
281
|
+
};
|
|
282
|
+
var BUILTIN_NOLO_AGENT_ID = entry("01NOLOAPPBLD000000019KCKT0").id;
|
|
283
|
+
var BUILTIN_NOLO_AGENT_KEY = publicAgentKey(BUILTIN_NOLO_AGENT_ID);
|
|
284
|
+
var BUILTIN_NOLO_AGENT_NAME = entry("01NOLOAPPBLD000000019KCKT0").name;
|
|
285
|
+
var BUILTIN_NOLO_AGENT_MODEL = entry("01NOLOAPPBLD000000019KCKT0").model;
|
|
286
|
+
var BUILTIN_APP_BUILDER_AGENT_ID = entry("01APPBUILDER00000001YAII3I").id;
|
|
287
|
+
var BUILTIN_APP_BUILDER_AGENT_KEY = publicAgentKey(BUILTIN_APP_BUILDER_AGENT_ID);
|
|
288
|
+
var BUILTIN_ECOMMERCE_AGENT_ID = entry("01ECOMMERCEAG00000001PYQ2J").id;
|
|
289
|
+
var BUILTIN_ECOMMERCE_AGENT_KEY = publicAgentKey(BUILTIN_ECOMMERCE_AGENT_ID);
|
|
290
|
+
var BUILTIN_AGENT_CREATOR_AGENT_ID = entry("01NOLOAGENTCRT000000000001").id;
|
|
291
|
+
var BUILTIN_AGENT_CREATOR_AGENT_KEY = publicAgentKey(BUILTIN_AGENT_CREATOR_AGENT_ID);
|
|
292
|
+
var BUILTIN_FEEDBACK_AGENT_ID = entry("01NOLOFEEDBACKA000000000R2").id;
|
|
293
|
+
var BUILTIN_FEEDBACK_AGENT_KEY = publicAgentKey(BUILTIN_FEEDBACK_AGENT_ID);
|
|
294
|
+
var BUILTIN_CHROME_OPERATOR_AGENT_ID = entry("01CHROMEOPR000000000001").id;
|
|
295
|
+
var BUILTIN_CHROME_OPERATOR_AGENT_KEY = publicAgentKey(BUILTIN_CHROME_OPERATOR_AGENT_ID);
|
|
296
|
+
var BUILTIN_PLATFORM_AGENT_KEYS = builtinPlatformEntries().map(
|
|
297
|
+
(e) => publicAgentKey(e.id)
|
|
298
|
+
);
|
|
299
|
+
var BUILTIN_PLATFORM_AGENT_KEY_SET = new Set(BUILTIN_PLATFORM_AGENT_KEYS);
|
|
300
|
+
var PUBLIC_DEEPSEEK_V4_FLASH_AGENT_ID = entry("01DSV4FLASHPB00000000JFPFD").id;
|
|
301
|
+
var PUBLIC_DEEPSEEK_V4_FLASH_AGENT_KEY = publicAgentKey(PUBLIC_DEEPSEEK_V4_FLASH_AGENT_ID);
|
|
302
|
+
var PUBLIC_DEEPSEEK_V4_PRO_AGENT_ID = entry("01DSV4PRONPB00000001VIR3EK").id;
|
|
303
|
+
var PUBLIC_DEEPSEEK_V4_PRO_AGENT_KEY = publicAgentKey(PUBLIC_DEEPSEEK_V4_PRO_AGENT_ID);
|
|
304
|
+
var PUBLIC_GLM_53_FLASH_AGENT_ID = entry("01GLMFLASHPB00000000BT20BC").id;
|
|
305
|
+
var PUBLIC_GLM_53_FLASH_AGENT_KEY = publicAgentKey(PUBLIC_GLM_53_FLASH_AGENT_ID);
|
|
306
|
+
var PUBLIC_KIMI_K26_IMAGE_AGENT_ID = entry("01KIMIK26OLLAMA0000000001").id;
|
|
307
|
+
var PUBLIC_KIMI_K26_IMAGE_AGENT_KEY = publicAgentKey(PUBLIC_KIMI_K26_IMAGE_AGENT_ID);
|
|
308
|
+
var PUBLIC_GPT_IMAGE_2_GENERATOR_AGENT_ID = entry("01GPTIMG2GEN00000000SSEBOS").id;
|
|
309
|
+
var PUBLIC_GPT_IMAGE_2_GENERATOR_AGENT_KEY = publicAgentKey(PUBLIC_GPT_IMAGE_2_GENERATOR_AGENT_ID);
|
|
310
|
+
var PUBLIC_GPT_IMAGE_2_EDITOR_AGENT_ID = entry("01GPTIMG2EDT00000001R4R4H4").id;
|
|
311
|
+
var PUBLIC_GPT_IMAGE_2_EDITOR_AGENT_KEY = publicAgentKey(PUBLIC_GPT_IMAGE_2_EDITOR_AGENT_ID);
|
|
312
|
+
var PUBLIC_GPT_IMAGE_2_CONTINUOUS_AGENT_ID = entry("01GPTIMG2CNT00000000USKZFO").id;
|
|
313
|
+
var PUBLIC_GPT_IMAGE_2_CONTINUOUS_AGENT_KEY = publicAgentKey(PUBLIC_GPT_IMAGE_2_CONTINUOUS_AGENT_ID);
|
|
314
|
+
var PUBLIC_NANO_BANANA_2_LITE_AGENT_ID = entry("01NB2LITEGEN00000001XE1MNO").id;
|
|
315
|
+
var PUBLIC_NANO_BANANA_2_LITE_AGENT_KEY = publicAgentKey(PUBLIC_NANO_BANANA_2_LITE_AGENT_ID);
|
|
316
|
+
var SYSTEM_BUILTIN_TRUSTED_AGENT_KEYS = [
|
|
317
|
+
PUBLIC_DEEPSEEK_V4_FLASH_AGENT_KEY,
|
|
318
|
+
PUBLIC_DEEPSEEK_V4_PRO_AGENT_KEY,
|
|
319
|
+
PUBLIC_GLM_53_FLASH_AGENT_KEY
|
|
320
|
+
];
|
|
321
|
+
var SYSTEM_BUILTIN_TRUSTED_AGENT_KEY_SET = new Set(
|
|
322
|
+
SYSTEM_BUILTIN_TRUSTED_AGENT_KEYS
|
|
323
|
+
);
|
|
324
|
+
var isSystemBuiltinTrustedAgentKey = (key) => typeof key === "string" && SYSTEM_BUILTIN_TRUSTED_AGENT_KEY_SET.has(key);
|
|
325
|
+
var isBuiltinPlatformAgentKey = (key) => typeof key === "string" && BUILTIN_PLATFORM_AGENT_KEY_SET.has(key);
|
|
326
|
+
|
|
327
|
+
export {
|
|
328
|
+
builtinAgentCatalogEntryById,
|
|
329
|
+
builtinRuntimeFallbackEntries,
|
|
330
|
+
isRetiredCatalogEntry,
|
|
331
|
+
BUILTIN_NOLO_AGENT_KEY,
|
|
332
|
+
BUILTIN_NOLO_AGENT_NAME,
|
|
333
|
+
BUILTIN_NOLO_AGENT_MODEL,
|
|
334
|
+
BUILTIN_PLATFORM_AGENT_KEYS,
|
|
335
|
+
PUBLIC_DEEPSEEK_V4_FLASH_AGENT_ID,
|
|
336
|
+
PUBLIC_DEEPSEEK_V4_PRO_AGENT_ID,
|
|
337
|
+
PUBLIC_GLM_53_FLASH_AGENT_ID,
|
|
338
|
+
PUBLIC_GPT_IMAGE_2_GENERATOR_AGENT_ID,
|
|
339
|
+
PUBLIC_GPT_IMAGE_2_EDITOR_AGENT_ID,
|
|
340
|
+
PUBLIC_GPT_IMAGE_2_CONTINUOUS_AGENT_ID,
|
|
341
|
+
PUBLIC_NANO_BANANA_2_LITE_AGENT_ID,
|
|
342
|
+
isSystemBuiltinTrustedAgentKey,
|
|
343
|
+
isBuiltinPlatformAgentKey
|
|
344
|
+
};
|
|
@@ -285,6 +285,27 @@ function saveProfileAgentSelection(selection, path = getDefaultProfileConfigPath
|
|
|
285
285
|
`, "utf8");
|
|
286
286
|
return config;
|
|
287
287
|
}
|
|
288
|
+
function getProfileOAuthSync(provider, path = getDefaultProfileConfigPath()) {
|
|
289
|
+
const config = loadProfileConfig(path);
|
|
290
|
+
if (!config) return void 0;
|
|
291
|
+
const profile = config.profiles[config.currentProfile];
|
|
292
|
+
return profile?.oauthSync?.[provider];
|
|
293
|
+
}
|
|
294
|
+
function saveProfileOAuthSync(provider, sync, path = getDefaultProfileConfigPath()) {
|
|
295
|
+
if (isProtectedHomeProfileWrite(path)) return null;
|
|
296
|
+
const config = loadProfileConfig(path);
|
|
297
|
+
if (!config) return null;
|
|
298
|
+
const profile = config.profiles[config.currentProfile];
|
|
299
|
+
if (!profile) return null;
|
|
300
|
+
profile.oauthSync = {
|
|
301
|
+
...profile.oauthSync ?? {},
|
|
302
|
+
[provider]: sync
|
|
303
|
+
};
|
|
304
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
305
|
+
writeFileSync(path, `${JSON.stringify(config, null, 2)}
|
|
306
|
+
`, "utf8");
|
|
307
|
+
return config;
|
|
308
|
+
}
|
|
288
309
|
|
|
289
310
|
export {
|
|
290
311
|
getDefaultProfileConfigPath,
|
|
@@ -299,5 +320,7 @@ export {
|
|
|
299
320
|
saveProfileLocale,
|
|
300
321
|
getAgentSelectionAuditPath,
|
|
301
322
|
readLastAgentSelectionAudit,
|
|
302
|
-
saveProfileAgentSelection
|
|
323
|
+
saveProfileAgentSelection,
|
|
324
|
+
getProfileOAuthSync,
|
|
325
|
+
saveProfileOAuthSync
|
|
303
326
|
};
|
|
@@ -3,21 +3,24 @@ import {
|
|
|
3
3
|
} from "./chunk-YYLHWIW6.js";
|
|
4
4
|
import {
|
|
5
5
|
compareAgentSelection
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-HCT7U36O.js";
|
|
7
|
+
import {
|
|
8
|
+
isAgentUnavailableNow
|
|
9
|
+
} from "./chunk-FDTR4QJ6.js";
|
|
7
10
|
import {
|
|
8
11
|
isAntigravityOAuthAgent
|
|
9
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-GNCCNNZD.js";
|
|
10
13
|
import {
|
|
11
14
|
getModelAbility
|
|
12
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-ACTMNVHM.js";
|
|
13
16
|
import {
|
|
14
17
|
isOwnedAgentKey,
|
|
15
18
|
ownedAgentKey,
|
|
16
19
|
publicAgentKey
|
|
17
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-M2EJHDJP.js";
|
|
18
21
|
import {
|
|
19
22
|
fnv1a32Hex
|
|
20
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-UKWGR5SS.js";
|
|
21
24
|
|
|
22
25
|
// packages/ai/agent/agentBilling.ts
|
|
23
26
|
function resolveBillingSource(candidate) {
|
|
@@ -356,6 +359,8 @@ function toSafeAgentSummary(record, options) {
|
|
|
356
359
|
const isPublic = record?.isPublic === true || record?.isPublicFlag === true || record?.publicRecordExists === true;
|
|
357
360
|
const updatedAt = safeTimestamp(record?.updatedAt ?? record?.createdAt ?? record?.created);
|
|
358
361
|
const nextAvailableAt = typeof record?.nextAvailableAt === "number" && Number.isFinite(record.nextAvailableAt) ? record.nextAvailableAt : void 0;
|
|
362
|
+
const rawQuota = record?.quota;
|
|
363
|
+
const quota = rawQuota && typeof rawQuota === "object" && Array.isArray(rawQuota.windows) && typeof rawQuota.observedAt === "number" && Number.isFinite(rawQuota.observedAt) ? rawQuota : void 0;
|
|
359
364
|
const currentUserId = options?.userId;
|
|
360
365
|
const isOwnedByRecord = Boolean(currentUserId) && (typeof record?.userId === "string" && record.userId === currentUserId || typeof record?.ownerId === "string" && record.ownerId === currentUserId);
|
|
361
366
|
const ownedKey = currentUserId ? [record?.dbKey, record?.privateKey].find(
|
|
@@ -418,8 +423,12 @@ function toSafeAgentSummary(record, options) {
|
|
|
418
423
|
isOwned,
|
|
419
424
|
isOAuth,
|
|
420
425
|
...nextAvailableAt !== void 0 ? { nextAvailableAt } : {},
|
|
426
|
+
...quota !== void 0 ? { quota } : {},
|
|
421
427
|
...credentialGroup !== void 0 ? { credentialGroup } : {},
|
|
422
428
|
...credentialKind !== void 0 ? { credentialKind } : {},
|
|
429
|
+
// 「未知 ≠ 独立」:无 credentialGroup 时显式 credentialed:false,调用方
|
|
430
|
+
// 不得把缺失解读成独立凭证(并发扇出守卫依赖这个区分)。
|
|
431
|
+
credentialed: credentialGroup !== void 0,
|
|
423
432
|
updatedAt
|
|
424
433
|
};
|
|
425
434
|
}
|
|
@@ -445,8 +454,11 @@ var COMPACT_AGENT_SUMMARY_FIELDS = [
|
|
|
445
454
|
// 决策信息(CLI --show-unavailable 场景);默认列表已把这类 agent 过滤掉,
|
|
446
455
|
// 所以通常根本不占字节。
|
|
447
456
|
"nextAvailableAt",
|
|
457
|
+
// 额度快照:只有上游真上报过窗口的 agent 才带(通常是小对象)。
|
|
458
|
+
"quota",
|
|
448
459
|
"credentialGroup",
|
|
449
|
-
"credentialKind"
|
|
460
|
+
"credentialKind",
|
|
461
|
+
"credentialed"
|
|
450
462
|
];
|
|
451
463
|
function omitNullishAgentSummaryFields(summary) {
|
|
452
464
|
const result = {};
|
|
@@ -477,6 +489,7 @@ var UNAVAILABLE_AGENT_SUMMARY_FIELDS = [
|
|
|
477
489
|
"isOAuth",
|
|
478
490
|
"isOwned",
|
|
479
491
|
"nextAvailableAt",
|
|
492
|
+
"quota",
|
|
480
493
|
"favoritedAt",
|
|
481
494
|
"updatedAt"
|
|
482
495
|
];
|
|
@@ -496,6 +509,110 @@ function toUnavailableAgentSummary(summary) {
|
|
|
496
509
|
return item;
|
|
497
510
|
}
|
|
498
511
|
|
|
512
|
+
// packages/ai/agent/agentDiscovery.ts
|
|
513
|
+
function isPreferredAgent(agent) {
|
|
514
|
+
return agent.isFavorite === true || agent.isOwned === true || agent.isOAuth === true || agent.billingSource === "user_subscription" || agent.billingSource === "user_api" || agent.billingSource === "local";
|
|
515
|
+
}
|
|
516
|
+
function isPublicDiscoveryAgent(agent) {
|
|
517
|
+
return agent.isPublic === true && !isPreferredAgent(agent);
|
|
518
|
+
}
|
|
519
|
+
function resolveDiscoveryScope(args) {
|
|
520
|
+
const rawScope = typeof args?.scope === "string" ? args.scope.trim().toLowerCase() : void 0;
|
|
521
|
+
const hasScope = rawScope !== void 0 && rawScope !== "";
|
|
522
|
+
const hasPublicOnly = typeof args?.publicOnly === "boolean";
|
|
523
|
+
const publicOnly = args?.publicOnly === true;
|
|
524
|
+
if (hasScope) {
|
|
525
|
+
if (rawScope !== "preferred" && rawScope !== "public" && rawScope !== "all") {
|
|
526
|
+
throw new Error(`Invalid scope '${args?.scope}': must be 'preferred', 'public', or 'all'.`);
|
|
527
|
+
}
|
|
528
|
+
const scope = rawScope;
|
|
529
|
+
if (hasPublicOnly) {
|
|
530
|
+
if (publicOnly && scope !== "public") {
|
|
531
|
+
throw new Error(
|
|
532
|
+
`Conflicting arguments: scope='${args?.scope}' conflicts with publicOnly=true.`
|
|
533
|
+
);
|
|
534
|
+
}
|
|
535
|
+
if (!publicOnly && scope === "public") {
|
|
536
|
+
throw new Error(
|
|
537
|
+
`Conflicting arguments: scope='${args?.scope}' conflicts with publicOnly=false.`
|
|
538
|
+
);
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
return scope;
|
|
542
|
+
}
|
|
543
|
+
if (hasPublicOnly && publicOnly) {
|
|
544
|
+
return "public";
|
|
545
|
+
}
|
|
546
|
+
return "preferred";
|
|
547
|
+
}
|
|
548
|
+
function agentIdentityKeys(agent) {
|
|
549
|
+
return [agent.agentKey, agent.publicKey, agent.id].filter(
|
|
550
|
+
(key) => typeof key === "string" && key.length > 0
|
|
551
|
+
);
|
|
552
|
+
}
|
|
553
|
+
function deduplicateAgentSummaries(agents) {
|
|
554
|
+
const byIdentity = /* @__PURE__ */ new Map();
|
|
555
|
+
for (const agent of agents) {
|
|
556
|
+
const keys = agentIdentityKeys(agent);
|
|
557
|
+
const existing = keys.map((key) => byIdentity.get(key)).find(Boolean);
|
|
558
|
+
if (!existing) {
|
|
559
|
+
for (const key of keys) byIdentity.set(key, agent);
|
|
560
|
+
continue;
|
|
561
|
+
}
|
|
562
|
+
const winner = isPreferredAgent(agent) && !isPreferredAgent(existing) ? agent : existing;
|
|
563
|
+
for (const key of /* @__PURE__ */ new Set([...agentIdentityKeys(existing), ...keys])) byIdentity.set(key, winner);
|
|
564
|
+
}
|
|
565
|
+
return [...new Set(byIdentity.values())];
|
|
566
|
+
}
|
|
567
|
+
function filterAgentsByScope(agents, scope) {
|
|
568
|
+
const unique = deduplicateAgentSummaries(agents);
|
|
569
|
+
if (scope === "preferred") return unique.filter((agent) => isPreferredAgent(agent));
|
|
570
|
+
if (scope === "public") return unique.filter((agent) => isPublicDiscoveryAgent(agent));
|
|
571
|
+
return unique.filter((agent) => isPreferredAgent(agent) || agent.isPublic === true);
|
|
572
|
+
}
|
|
573
|
+
function matchesAgentQuery(agent, query) {
|
|
574
|
+
if (!query || typeof query !== "string") return true;
|
|
575
|
+
const q = query.trim().toLowerCase();
|
|
576
|
+
if (!q) return true;
|
|
577
|
+
const candidates = [
|
|
578
|
+
agent.name,
|
|
579
|
+
agent.model,
|
|
580
|
+
agent.provider,
|
|
581
|
+
agent.handle,
|
|
582
|
+
agent.agentKey,
|
|
583
|
+
agent.publicKey,
|
|
584
|
+
agent.id
|
|
585
|
+
];
|
|
586
|
+
return candidates.some((text) => typeof text === "string" && text.toLowerCase().includes(q));
|
|
587
|
+
}
|
|
588
|
+
function buildAgentDiscoveryResult(options) {
|
|
589
|
+
const scope = resolveDiscoveryScope({
|
|
590
|
+
scope: options.scope,
|
|
591
|
+
publicOnly: options.publicOnly
|
|
592
|
+
});
|
|
593
|
+
const now = options.now ?? Date.now();
|
|
594
|
+
let scopedAgents = filterAgentsByScope(options.agents, scope);
|
|
595
|
+
if (options.query && typeof options.query === "string" && options.query.trim()) {
|
|
596
|
+
scopedAgents = scopedAgents.filter((a) => matchesAgentQuery(a, options.query));
|
|
597
|
+
}
|
|
598
|
+
const unavailableList = scopedAgents.filter((a) => isAgentUnavailableNow(a, now));
|
|
599
|
+
const unavailableCount = unavailableList.length;
|
|
600
|
+
const unavailableAgents = sortSafeAgentSummaries(unavailableList).map(toUnavailableAgentSummary);
|
|
601
|
+
const credentialGroups = summarizeCredentialGroups(scopedAgents, now);
|
|
602
|
+
if (options.showUnavailable !== true) {
|
|
603
|
+
scopedAgents = scopedAgents.filter((a) => !isAgentUnavailableNow(a, now));
|
|
604
|
+
}
|
|
605
|
+
const sortedAgents = sortSafeAgentSummaries(scopedAgents);
|
|
606
|
+
const projectedAgents = options.verbose === true ? sortedAgents.map(omitNullishAgentSummaryFields) : sortedAgents.map(toCompactAgentSummary);
|
|
607
|
+
return {
|
|
608
|
+
total: projectedAgents.length,
|
|
609
|
+
unavailableCount,
|
|
610
|
+
unavailableAgents,
|
|
611
|
+
credentialGroups,
|
|
612
|
+
agents: projectedAgents
|
|
613
|
+
};
|
|
614
|
+
}
|
|
615
|
+
|
|
499
616
|
export {
|
|
500
617
|
deriveCredentialGroup,
|
|
501
618
|
summarizeCredentialGroups,
|
|
@@ -503,5 +620,8 @@ export {
|
|
|
503
620
|
sortSafeAgentSummaries,
|
|
504
621
|
omitNullishAgentSummaryFields,
|
|
505
622
|
toCompactAgentSummary,
|
|
506
|
-
toUnavailableAgentSummary
|
|
623
|
+
toUnavailableAgentSummary,
|
|
624
|
+
resolveDiscoveryScope,
|
|
625
|
+
matchesAgentQuery,
|
|
626
|
+
buildAgentDiscoveryResult
|
|
507
627
|
};
|