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.
Files changed (168) hide show
  1. package/README.md +2 -2
  2. package/{_executeModel-IULR47HG.js → _executeModel-BPUR2QYH.js} +51 -50
  3. package/{action-D22U6CTH.js → action-P4TNFGAD.js} +11 -11
  4. package/{addContentAction-XAPUTGL4.js → addContentAction-MB2HHMDZ.js} +9 -9
  5. package/{addDialogAgentAction-M7VLLBZM.js → addDialogAgentAction-S2NRBCWW.js} +9 -9
  6. package/{agentDeleteCommand-2S4WCDQC.js → agentDeleteCommand-MNAA6MIG.js} +32 -30
  7. package/{agentEmailCommands-V3ADGHX7.js → agentEmailCommands-SK34WJKU.js} +70 -66
  8. package/{agentGrantCommands-R3VQEZJR.js → agentGrantCommands-M3XFO6EN.js} +2 -2
  9. package/{agentListCommands-EPK3S274.js → agentListCommands-I26MKI4T.js} +55 -36
  10. package/{agentMachineCommands-XMZWK7P3.js → agentMachineCommands-M6QDR6P3.js} +32 -30
  11. package/{agentProviderCommands-65ZC2WB4.js → agentProviderCommands-X3UNW77C.js} +87 -0
  12. package/{agentPullCommand-N7L2CT7L.js → agentPullCommand-O5MPVJ5E.js} +3 -3
  13. package/agentRecordCommands-HTHLO2MM.js +129 -0
  14. package/{agentRunCommand-VUWNWC7C.js → agentRunCommand-IAIRCMTH.js} +70 -65
  15. package/{agentRunControl-T44MESII.js → agentRunControl-AVJR4JW4.js} +2 -2
  16. package/{agentRuntimeLocal-YRONTDLM.js → agentRuntimeLocal-3WTYYIT2.js} +32 -26
  17. package/{agentSlice-2P7OJFES.js → agentSlice-TVP3HINW.js} +10 -10
  18. package/{appDeleteCommands-YS7UGMP3.js → appDeleteCommands-SB5TNLKY.js} +32 -30
  19. package/{appDeployCommands-XIE5Z4BE.js → appDeployCommands-2IPKZINV.js} +32 -30
  20. package/{appDeployStatusCommands-54UDVYET.js → appDeployStatusCommands-K63TFUID.js} +32 -30
  21. package/{appGetCommands-6XYLBCRN.js → appGetCommands-VU2SLNEH.js} +32 -30
  22. package/{appListCommands-VEGH7SF5.js → appListCommands-S3T4DJ36.js} +32 -30
  23. package/{authCommand-JIEOFHXW.js → authCommand-HGP2XTKC.js} +185 -28
  24. package/{authCommands-ILTBI6JV.js → authCommands-RGOGCPP6.js} +4 -5
  25. package/builtinSkillRegistry-Q2VVY3SC.js +33 -0
  26. package/{chatQueueReduxAdapter-GPYCH5Z2.js → chatQueueReduxAdapter-TWIYKVIZ.js} +25 -25
  27. package/{chromeCommands-VOIRNJBL.js → chromeCommands-FZYAU75D.js} +1 -1
  28. package/{chromeOpsCommands-M7DPCX2T.js → chromeOpsCommands-62P2Q2YB.js} +31 -1
  29. package/{chunk-C3FZR5EC.js → chunk-2F7RJC6L.js} +1 -1
  30. package/{chunk-BOYUESO7.js → chunk-3AMA42ZI.js} +1 -1
  31. package/{chunk-RZOJRTKR.js → chunk-3BGIKIPF.js} +444 -920
  32. package/{chunk-HQUORJTM.js → chunk-3BMYXEUW.js} +1 -1
  33. package/{chunk-EBKMQULC.js → chunk-3IUWIAHP.js} +13 -15
  34. package/{chunk-NTW5GWDM.js → chunk-3VNWWVKB.js} +2 -0
  35. package/{chunk-4SZ37KLL.js → chunk-3VUWPRFW.js} +50 -30
  36. package/{chunk-WL2RKIBF.js → chunk-3YIAR5UI.js} +1 -1
  37. package/{chunk-DWUCB2A3.js → chunk-42V6BK2E.js} +1 -1
  38. package/{chunk-AX7RMXSH.js → chunk-4MK3I7Y4.js} +38 -4
  39. package/{chunk-PF6O3GR3.js → chunk-52Q2IW2X.js} +1340 -1273
  40. package/{chunk-Y3NZYLPG.js → chunk-5MEYHVIB.js} +1 -1
  41. package/{chunk-5XTOKQLW.js → chunk-5UTFL4QJ.js} +6 -2
  42. package/chunk-5ZUL4CUO.js +10 -0
  43. package/{chunk-6YTOJY35.js → chunk-6D2JFXLY.js} +35 -0
  44. package/{chunk-E6RGHPDR.js → chunk-6D6VBVEW.js} +4 -6
  45. package/{chunk-FZGV4FGK.js → chunk-6GFOD3TK.js} +260 -140
  46. package/{chunk-TMPLPCVX.js → chunk-6OZ36FXI.js} +2 -2
  47. package/{chunk-PZM3EENV.js → chunk-6Z7MY3V7.js} +1 -1
  48. package/{chunk-BYEJ7K2Z.js → chunk-7S4YWN7P.js} +1 -1
  49. package/{chunk-SREASRV5.js → chunk-ABQYVJBJ.js} +1 -1
  50. package/chunk-ACTMNVHM.js +93 -0
  51. package/{chunk-ZZCJUXUI.js → chunk-AHAHBQMU.js} +2 -2
  52. package/{chunk-BJCWNHVU.js → chunk-BFDFRLLQ.js} +2 -2
  53. package/chunk-BMQ2MJUK.js +153 -0
  54. package/chunk-BNGW5ASC.js +344 -0
  55. package/{chunk-2KDR4CWE.js → chunk-BYMV6QZG.js} +24 -1
  56. package/{chunk-73BR2IQT.js → chunk-CWQINZEA.js} +127 -7
  57. package/{chunk-HTMVBPOF.js → chunk-DD6XE56O.js} +19 -72
  58. package/{chunk-CADAR6QU.js → chunk-EYAQT56M.js} +4 -3
  59. package/{chunk-CJCJF5XB.js → chunk-FDTR4QJ6.js} +4 -2
  60. package/{chunk-D6XYLSOS.js → chunk-FKNWP6SG.js} +1 -1
  61. package/{chunk-3VPDELAP.js → chunk-FP76KI2Y.js} +1500 -84
  62. package/chunk-FV3JEYR3.js +870 -0
  63. package/{chunk-GCJ3IS5M.js → chunk-GIVFXPWK.js} +177 -6
  64. package/chunk-GMZLP5DV.js +82 -0
  65. package/{chunk-LHDV2QUI.js → chunk-GNCCNNZD.js} +4 -2
  66. package/{chunk-XWNRAIUL.js → chunk-GP5LKBUZ.js} +6 -16
  67. package/{chunk-PZCTYKGU.js → chunk-GQBOR3G6.js} +2 -2
  68. package/{chunk-NFT2AOK5.js → chunk-H4AHY5BU.js} +13 -85
  69. package/{chunk-FNGAF7C4.js → chunk-HAFJ3NDE.js} +137 -12
  70. package/{chunk-ZVN6I33J.js → chunk-HCT7U36O.js} +9 -5
  71. package/{chunk-7QVPPOEC.js → chunk-HKNXJGEC.js} +43 -43
  72. package/{chunk-3JQ2NRYU.js → chunk-HVURBGF3.js} +4 -4
  73. package/{chunk-OZX2IPKM.js → chunk-HYJFRTLW.js} +2 -2
  74. package/{chunk-HH65VA5U.js → chunk-I3TQJXQ7.js} +109 -6
  75. package/{chunk-UDQWGU7F.js → chunk-J4MOO56S.js} +1 -1
  76. package/{chunk-KC5FAHVS.js → chunk-JEDZAO7L.js} +1 -1
  77. package/{chunk-6XIE5ZGI.js → chunk-JPGCXHNM.js} +1 -1
  78. package/{chunk-DUJWWUGV.js → chunk-K36IXSCQ.js} +1 -1
  79. package/{chunk-KRMWO2NN.js → chunk-KAUSRTO6.js} +3 -3
  80. package/{chunk-7FWPLK4M.js → chunk-LJ5VW2UJ.js} +1 -1
  81. package/{chunk-GHEJJGJI.js → chunk-LMREEBWT.js} +833 -109
  82. package/{chunk-RXX4GDIH.js → chunk-LS2ZANRJ.js} +1 -1
  83. package/chunk-LVIFM7VW.js +1625 -0
  84. package/{chunk-BJIRLHJR.js → chunk-M2EJHDJP.js} +4 -0
  85. package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
  86. package/{chunk-KEZNSFGD.js → chunk-MZYBSTMH.js} +11 -173
  87. package/chunk-OCZKATRC.js +129 -0
  88. package/{chunk-MXUSPS2N.js → chunk-OIVSQH2O.js} +1510 -1592
  89. package/{chunk-E36HZARC.js → chunk-P5EVSOPA.js} +93 -17
  90. package/{chunk-SZLVDREM.js → chunk-PBA4UJBK.js} +3 -3
  91. package/{chunk-URWDSZRW.js → chunk-PMAIQX7A.js} +3 -3
  92. package/{chunk-AETZ7AD6.js → chunk-Q554LLSI.js} +1 -1
  93. package/{chunk-AJHEFRGJ.js → chunk-Q67DOFOO.js} +214 -5
  94. package/{chunk-UZ6XXCVR.js → chunk-QDSINZM3.js} +15 -2
  95. package/{chunk-NRALD3CC.js → chunk-QSHEEA5N.js} +54 -10
  96. package/chunk-QU7KDSZX.js +677 -0
  97. package/{chunk-T25L377S.js → chunk-RPJUFEGR.js} +10 -10
  98. package/{chunk-QCZX4FTW.js → chunk-SH43IESU.js} +173 -15
  99. package/{chunk-SPAQ4PVV.js → chunk-SV5IJK6K.js} +1 -1
  100. package/{chunk-BKJO7LDP.js → chunk-U4OKDZFH.js} +6 -6
  101. package/{chunk-DM4FBSWG.js → chunk-UDVH2P4A.js} +7 -7
  102. package/{chunk-4EJ5QYB5.js → chunk-UEVXFHQB.js} +2 -2
  103. package/{chunk-JYYZCK2Z.js → chunk-V7E4PXQD.js} +1 -1
  104. package/{chunk-NHRQCXIQ.js → chunk-VMFTFOWF.js} +13 -3
  105. package/{chunk-YFADVSZE.js → chunk-VRTTFDBM.js} +7 -6
  106. package/{chunk-U7YP7ECK.js → chunk-WP5UXDA5.js} +84 -13
  107. package/{chunk-5J7W2VWW.js → chunk-WV42OMV7.js} +6 -265
  108. package/{chunk-3QPYFHAH.js → chunk-XD2MJFUG.js} +1 -1
  109. package/{chunk-IDGYOD2O.js → chunk-XP3VVAPG.js} +3174 -223
  110. package/{chunk-ETLZZQJE.js → chunk-Z2PV6O2T.js} +121 -26
  111. package/{chunk-BZNGCVAW.js → chunk-Z5625XML.js} +4 -4
  112. package/{contentThunks-THSCADSK.js → contentThunks-JYWI7G7I.js} +26 -26
  113. package/{cooldownCommands-BSCH2W7P.js → cooldownCommands-REAWYVTY.js} +2 -2
  114. package/{createAgentAutomationAction-WGN3UQ5A.js → createAgentAutomationAction-Z4SUJ54Y.js} +26 -26
  115. package/{createDialogAction-3EN2NLH7.js → createDialogAction-RCHFLVJ2.js} +29 -29
  116. package/{createPageAction-4VK473QV.js → createPageAction-YK2253XQ.js} +28 -28
  117. package/{dbSlice-GKGGFNOB.js → dbSlice-A6C6H32X.js} +8 -8
  118. package/{deleteFile-LWSR674W.js → deleteFile-YG6QMJLU.js} +3 -3
  119. package/{dialogCommands-PS4NWYY7.js → dialogCommands-X4UOZQWX.js} +36 -32
  120. package/{dialogSlice-CLV7SVOZ.js → dialogSlice-IVTWLCE2.js} +31 -25
  121. package/{docCreateCommands-4KANZJR6.js → docCreateCommands-VD6TGHG4.js} +33 -31
  122. package/{docDeleteCommands-F2S2TRUF.js → docDeleteCommands-OT3R2G4W.js} +34 -32
  123. package/{docReadCommands-B2WDPZQE.js → docReadCommands-2G7BIXSH.js} +33 -31
  124. package/{docStore-TDLCHWPF.js → docStore-UENKCCDX.js} +9 -9
  125. package/{docUpdateCommands-E7TKHRIO.js → docUpdateCommands-45MVJKZA.js} +33 -31
  126. package/{fetchMessages-DRABNDPZ.js → fetchMessages-EIU7UFFK.js} +3 -4
  127. package/{getPricing-QVTUQQTM.js → getPricing-LUSEABA6.js} +4 -4
  128. package/{handleSendMessageAction-AHL3ZHE4.js → handleSendMessageAction-LM2J4HC3.js} +66 -74
  129. package/index.js +99 -86
  130. package/{localDialogRead-PUQKFI73.js → localDialogRead-BTFJ4V2I.js} +2 -2
  131. package/{localRuntimeDb-P37ZTX55.js → localRuntimeDb-SYQGUF4U.js} +1 -1
  132. package/{machineCommands-OTABVXOA.js → machineCommands-6N6MQIE6.js} +69 -65
  133. package/{machineWsRunDispatch-V4EVQSMZ.js → machineWsRunDispatch-7MFKVQCR.js} +65 -61
  134. package/{memberThunks-KATHH3F4.js → memberThunks-P2ECUJ56.js} +9 -9
  135. package/{models-GS72DVJS.js → models-T3SG6MJ5.js} +2 -2
  136. package/{offlineMarxistsAgentCommand-GEH6SNNA.js → offlineMarxistsAgentCommand-HGXZV4XJ.js} +1 -1
  137. package/package.json +1 -1
  138. package/pdf-U6KSUEZZ.js +26435 -0
  139. package/providerPresetApply-XI3WUPTI.js +214 -0
  140. package/providerRegistry-KEPWWGXD.js +31 -0
  141. package/{read-LC6HVYBN.js → read-COE3ZYR6.js} +5 -4
  142. package/{readDocTool-N3ERJHHF.js → readDocTool-5USN4A6V.js} +1 -1
  143. package/{readlineWorkspace-IIT3FQ6I.js → readlineWorkspace-JWBON5CX.js} +291 -135
  144. package/{removeDialogAgentAction-F5GPTALR.js → removeDialogAgentAction-W66BJ7CF.js} +12 -12
  145. package/{runAgentClientLoop-7TQM7IAR.js → runAgentClientLoop-TA4SSPHE.js} +49 -49
  146. package/{runtimeDoctorCommands-CROTMULY.js → runtimeDoctorCommands-X6WDBEQX.js} +2 -2
  147. package/{setDialogExtraReferencesAction-AY4ZCF3A.js → setDialogExtraReferencesAction-2ALKG3WA.js} +10 -10
  148. package/{setPrimaryDialogAgentAction-HPMG7V3R.js → setPrimaryDialogAgentAction-TQZB55F6.js} +12 -12
  149. package/{settingSlice-OEJA4NQO.js → settingSlice-P4ZW7K5X.js} +10 -10
  150. package/{spaceCommands-FSYH7AL4.js → spaceCommands-6NSAXB7D.js} +31 -29
  151. package/{streamAgentChatTurn-6EF6TVFK.js → streamAgentChatTurn-X5ENGUIS.js} +126 -65
  152. package/{switchDialogAgentAction-HMDZTZ4I.js → switchDialogAgentAction-3KI72HHS.js} +9 -9
  153. package/{tableCommands-SUNTHAYX.js → tableCommands-O6NWHFKV.js} +1 -1
  154. package/{toolApiClient-VGYUB4P5.js → toolApiClient-G3M73RTB.js} +3 -3
  155. package/{tools-R3QNWWTD.js → tools-XRQR7ZZR.js} +45 -45
  156. package/tuiSummaryLlmCaller-UFGFOIIW.js +128 -0
  157. package/{updateCommands-Y363MC3L.js → updateCommands-2M74UL7P.js} +2 -2
  158. package/{updateDialogTitleAction-F3EUOWOB.js → updateDialogTitleAction-ESUUD3GT.js} +46 -29
  159. package/agentRecordCommands-WFPWLWOF.js +0 -125
  160. package/chunk-FMODTASJ.js +0 -109
  161. package/chunk-I42VC5KR.js +0 -15
  162. package/chunk-NB5SIWC4.js +0 -611
  163. package/chunk-NG4UT4K4.js +0 -79
  164. package/codingSkills-7S6523WH.js +0 -48
  165. package/tuiSummaryLlmCaller-PWOXTCBF.js +0 -116
  166. package/{chunk-3RAG2NAD.js → chunk-UKWGR5SS.js} +3 -3
  167. package/{db-VQSAOWAO.js → db-WK5MDZVN.js} +1 -1
  168. 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-ZVN6I33J.js";
6
+ } from "./chunk-HCT7U36O.js";
7
+ import {
8
+ isAgentUnavailableNow
9
+ } from "./chunk-FDTR4QJ6.js";
7
10
  import {
8
11
  isAntigravityOAuthAgent
9
- } from "./chunk-LHDV2QUI.js";
12
+ } from "./chunk-GNCCNNZD.js";
10
13
  import {
11
14
  getModelAbility
12
- } from "./chunk-NG4UT4K4.js";
15
+ } from "./chunk-ACTMNVHM.js";
13
16
  import {
14
17
  isOwnedAgentKey,
15
18
  ownedAgentKey,
16
19
  publicAgentKey
17
- } from "./chunk-BJIRLHJR.js";
20
+ } from "./chunk-M2EJHDJP.js";
18
21
  import {
19
22
  fnv1a32Hex
20
- } from "./chunk-3RAG2NAD.js";
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
  };