nolo-cli 0.191.0-alpha.3 → 0.191.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 (149) hide show
  1. package/{_executeModel-WQ2D4ZRH.js → _executeModel-4HQQXPN4.js} +44 -46
  2. package/{action-BHWB4MOK.js → action-HNG2JKWK.js} +3 -3
  3. package/{addContentAction-BY375D35.js → addContentAction-FEN3H2EE.js} +6 -6
  4. package/{addDialogAgentAction-HOZYOCWC.js → addDialogAgentAction-DDA6S3WS.js} +5 -5
  5. package/{agentDeleteCommand-TTCVC74A.js → agentDeleteCommand-HZFWSKED.js} +57 -59
  6. package/{agentEmailCommands-PTG35KER.js → agentEmailCommands-HRYMVHC7.js} +59 -61
  7. package/{agentListCommands-MAG736RU.js → agentListCommands-HE2CCZEW.js} +33 -31
  8. package/{agentMachineCommands-ATOZK3R5.js → agentMachineCommands-ISSULCRR.js} +23 -23
  9. package/{agentProviderCommands-XSZUCNIR.js → agentProviderCommands-4EAYN3ZY.js} +3 -3
  10. package/{agentRecordCommands-KGRPIJN5.js → agentRecordCommands-WGAMWQLA.js} +57 -59
  11. package/{agentRunCommand-75VVJTNU.js → agentRunCommand-7EQ64FIB.js} +59 -61
  12. package/{agentRunControl-6HHESKDB.js → agentRunControl-EJPBPVLU.js} +5 -5
  13. package/{agentRuntimeLocal-NAAYNHCW.js → agentRuntimeLocal-ONSIOOQB.js} +20 -20
  14. package/{agentSlice-UJPIKKKP.js → agentSlice-CHWNVAS5.js} +6 -6
  15. package/{appDeleteCommands-VDHCDVBF.js → appDeleteCommands-RNAF4V5C.js} +25 -25
  16. package/{appDeployCommands-V6UTKVXR.js → appDeployCommands-LTIZ4QH7.js} +25 -25
  17. package/{appDeployStatusCommands-4UIFSEPC.js → appDeployStatusCommands-OJJR4LDK.js} +25 -25
  18. package/{appGetCommands-XKDXLC3C.js → appGetCommands-UJZF6U4V.js} +25 -25
  19. package/{appListCommands-BELRVX2Y.js → appListCommands-M5C5BIDY.js} +25 -25
  20. package/{authCommand-RV5MQDWN.js → authCommand-RMUBRAXF.js} +11 -11
  21. package/{builtinSkillRegistry-7MBUY5EY.js → builtinSkillRegistry-XDBPVNY6.js} +3 -5
  22. package/{chromeOpsCommands-C46BXHEE.js → chromeOpsCommands-P4PFQDT7.js} +19 -4
  23. package/{chunk-7UODCAWW.js → chunk-32GANJHJ.js} +1 -1
  24. package/{chunk-G6OOUQWJ.js → chunk-4KB6WQUL.js} +2 -0
  25. package/{chunk-LHOR5MC2.js → chunk-4KYV2TAI.js} +164 -323
  26. package/{chunk-5EFNSNAV.js → chunk-6CFXWUYE.js} +7 -7
  27. package/{chunk-6XIE5ZGI.js → chunk-6HIGYUBQ.js} +1 -1
  28. package/{chunk-LBXUNNDS.js → chunk-6K2AKJAD.js} +1 -1
  29. package/{chunk-U5ZHUOLT.js → chunk-6OBTQSJ2.js} +2 -2
  30. package/{chunk-XPL63OIC.js → chunk-7SUYSFPG.js} +140 -66
  31. package/{chunk-53RSTB7T.js → chunk-7TMVGMM3.js} +26 -31
  32. package/{chunk-ZBCBFOWC.js → chunk-A2ZMIRLN.js} +2 -2
  33. package/{chunk-MJWUBTK7.js → chunk-AOYR4XOA.js} +1 -1
  34. package/{chunk-IIX6VWLW.js → chunk-AV6IE6NM.js} +224 -38
  35. package/{chunk-WFUIXNKC.js → chunk-BMXR7CFX.js} +3 -3
  36. package/{chunk-JIFYXQRD.js → chunk-BTYQAODF.js} +26 -8
  37. package/{chunk-VHGD6FHV.js → chunk-BZKBX5BO.js} +28 -5
  38. package/{chunk-Q6RMLYSA.js → chunk-CMLBKYEI.js} +4 -2
  39. package/chunk-CMTTXP5Y.js +291 -0
  40. package/{chunk-OHRDHS4N.js → chunk-CVCRAO6Q.js} +9 -4
  41. package/{chunk-SM56M7N7.js → chunk-DBRXPVWY.js} +39 -5
  42. package/{chunk-2KBNF477.js → chunk-DSVR6ZAV.js} +30 -21
  43. package/{chunk-ADTJJVDJ.js → chunk-DXDG4XLD.js} +2838 -2255
  44. package/{chunk-R5LJWMZE.js → chunk-EMXVOJDB.js} +3 -3
  45. package/{chunk-KHCLMKZZ.js → chunk-EY7V7REW.js} +280 -6
  46. package/{chunk-KGP7UTNN.js → chunk-FNXSQ7A3.js} +15 -15
  47. package/{chunk-BTBT2566.js → chunk-FSEGCTZQ.js} +1 -1
  48. package/{chunk-CNMQATUF.js → chunk-GL7W7TTR.js} +2 -2
  49. package/{chunk-5KTQVMCX.js → chunk-GOO6G4PY.js} +85 -0
  50. package/{chunk-HTLIKE5U.js → chunk-GVMF62PR.js} +2 -2
  51. package/{chunk-UZHYRBUB.js → chunk-H4CFODT7.js} +137 -61
  52. package/{chunk-R4BMKAR5.js → chunk-HAB2UDLT.js} +1 -1
  53. package/{chunk-3NPXGNSK.js → chunk-HVXL4VOO.js} +348 -87
  54. package/{chunk-32ZKZET7.js → chunk-HWZT5DKX.js} +1 -1
  55. package/{chunk-GYVLAHA4.js → chunk-IY7DGZSY.js} +10 -4
  56. package/{chunk-FEDJHD5X.js → chunk-J5Z2SSIY.js} +6 -6
  57. package/{chunk-UVWBGWBO.js → chunk-JA6WCCDO.js} +3 -3
  58. package/{chunk-YE6A72XL.js → chunk-JI5MQU5B.js} +35 -31
  59. package/{chunk-TFSMPRAY.js → chunk-JLOCKFSI.js} +4 -4
  60. package/{chunk-UBLITLAZ.js → chunk-K2GL335R.js} +13 -3
  61. package/{chunk-DS5DAOIY.js → chunk-KYQXW7DL.js} +3 -3
  62. package/{chunk-5HAPEKNH.js → chunk-LFJRTOUV.js} +158 -43
  63. package/{chunk-N7E3LQ4A.js → chunk-LGW6A7GK.js} +1 -1
  64. package/{chunk-UNOILAZP.js → chunk-M6AGLVV4.js} +74 -2
  65. package/{chunk-BA2FHPS4.js → chunk-MOCY5LJI.js} +1 -1
  66. package/{chunk-INFHX73M.js → chunk-MR6L6U46.js} +55 -3
  67. package/{chunk-CTPFBJAF.js → chunk-N7IBYQEC.js} +182 -91
  68. package/{chunk-QU3TLYBR.js → chunk-NHI3JZP4.js} +32 -8
  69. package/{chunk-B2N5GZBU.js → chunk-OHYCQKPW.js} +6 -6
  70. package/{chunk-WAZ6BTSC.js → chunk-OOERQPG5.js} +1 -1
  71. package/{chunk-EHB4CKUI.js → chunk-OTKNEZE3.js} +9 -9
  72. package/chunk-OVBUUU7L.js +2648 -0
  73. package/{chunk-PVD7CRYV.js → chunk-P7SUBTGZ.js} +3 -3
  74. package/{chunk-RJ3EYB5G.js → chunk-PRIROPK4.js} +1 -1
  75. package/chunk-PRJ473FK.js +63 -0
  76. package/{chunk-K6TZSON4.js → chunk-PXERKNSJ.js} +1 -1
  77. package/{chunk-B6EZB6DW.js → chunk-QAYCF4CH.js} +2 -2
  78. package/{chunk-5DPVRMSY.js → chunk-RBJASUX4.js} +1 -1
  79. package/{chunk-NVOYW6H4.js → chunk-RDKNGJ5M.js} +12 -8
  80. package/{chunk-GTP6VNWH.js → chunk-RQ22OZD7.js} +3 -3
  81. package/{chunk-2E5M3JVS.js → chunk-RWGIVUH3.js} +11 -5
  82. package/{chunk-DFF6B7P7.js → chunk-RXUKDHS5.js} +1 -1
  83. package/{chunk-JLR5NWP2.js → chunk-RXX262QX.js} +17 -3
  84. package/{chunk-GC64WGMD.js → chunk-SM3NSZJV.js} +16 -5
  85. package/{chunk-A5BLRE3G.js → chunk-T3U2KQF4.js} +2 -2
  86. package/{chunk-HLAL63BZ.js → chunk-T43B7LB2.js} +1 -1
  87. package/{chunk-LCSAJ5TJ.js → chunk-UDKNC3CV.js} +3 -3
  88. package/{chunk-VE3FEZIT.js → chunk-WKGOIXFV.js} +5 -5
  89. package/{chunk-4YMD7B4Y.js → chunk-WPOKOKZA.js} +2 -2
  90. package/{chunk-YIRADHSY.js → chunk-WYKMOZTW.js} +1 -1
  91. package/{chunk-WRCZXJ4N.js → chunk-X4F26D5K.js} +2 -0
  92. package/{chunk-4MYCKDSI.js → chunk-XUOF4MA7.js} +2 -2
  93. package/{chunk-PD2YRFAI.js → chunk-Y5ZEHS3F.js} +1 -1
  94. package/{chunk-4CEAZRZ4.js → chunk-YU2DGFKG.js} +1 -1
  95. package/{chunk-TVGX5QIN.js → chunk-YUA6OAH5.js} +2 -2
  96. package/{chunk-53PBXLID.js → chunk-Z3MQYKRN.js} +17 -17
  97. package/{chunk-I3HWJODB.js → chunk-ZHOKF4MY.js} +31 -26
  98. package/{chunk-2XUOREKD.js → chunk-ZI5MFQ42.js} +5 -4
  99. package/{chunk-DYQXB46J.js → chunk-ZSCIGIJS.js} +1 -1
  100. package/{commandRegistry-4JHVRMW7.js → commandRegistry-O2657YC7.js} +86 -66
  101. package/{contentThunks-HQBAAXNW.js → contentThunks-THWDEBJU.js} +17 -17
  102. package/{cooldownCommands-4XKJFEBW.js → cooldownCommands-V4EEBD55.js} +3 -3
  103. package/{createAgentAutomationAction-KELPOVMP.js → createAgentAutomationAction-2ZZTFGWG.js} +17 -17
  104. package/{createDialogAction-Z3SASMTM.js → createDialogAction-FCRKPKIT.js} +20 -22
  105. package/{createPageAction-PNHOIG44.js → createPageAction-EC25JTKW.js} +18 -19
  106. package/{dbSlice-QAUXABCC.js → dbSlice-JK7LWBDO.js} +5 -5
  107. package/{deleteFile-R5OBP7OM.js → deleteFile-CE24BROO.js} +3 -3
  108. package/{dialogCommands-4BGV6DPD.js → dialogCommands-QH7BJ3DJ.js} +26 -26
  109. package/{dialogSlice-QHV6I3OQ.js → dialogSlice-Z5E7POEN.js} +16 -16
  110. package/{docCreateCommands-3CW75UF2.js → docCreateCommands-KP42NGIF.js} +26 -27
  111. package/{docDeleteCommands-NL4ZYMN5.js → docDeleteCommands-7YOCX5GC.js} +27 -28
  112. package/{docReadCommands-HXCNVDPQ.js → docReadCommands-EJEIAOKQ.js} +26 -27
  113. package/{docStore-LVMUSECS.js → docStore-6MHLMMWO.js} +6 -6
  114. package/{docUpdateCommands-RMVBAMDE.js → docUpdateCommands-ACJLISGA.js} +26 -27
  115. package/{getPricing-E2PLNWCR.js → getPricing-3PQY3TGI.js} +3 -3
  116. package/{handleSendMessageAction-7TONIXHY.js → handleSendMessageAction-MTOPN4D3.js} +86 -42
  117. package/index.js +7 -7
  118. package/{lib-4YTWAGY7.js → lib-5KKIBFIT.js} +439 -272
  119. package/{localRuntimeAdapter-HRAB7P5E.js → localRuntimeAdapter-4USQ3EP7.js} +55 -57
  120. package/{machineCommands-OTXFRTDA.js → machineCommands-CJMSDSOO.js} +56 -58
  121. package/{machineWsRunDispatch-KWVWOHHG.js → machineWsRunDispatch-YIPO76QH.js} +56 -58
  122. package/{memberThunks-ZAE52VIP.js → memberThunks-WT2KVRP4.js} +158 -55
  123. package/{models-UUNO6DOL.js → models-PJBE6JDV.js} +2 -2
  124. package/package.json +1 -1
  125. package/{providerPresetApply-JGNMO2KX.js → providerPresetApply-ISA35424.js} +5 -5
  126. package/{providerRegistry-33J3ZYFJ.js → providerRegistry-QIQCHVNP.js} +5 -5
  127. package/{read-D6NEWSGG.js → read-ILTT75DW.js} +3 -3
  128. package/{readDocTool-NTAXO7SX.js → readDocTool-374CFJYO.js} +1 -1
  129. package/{readlineWorkspace-CEX5TXGM.js → readlineWorkspace-RORGDWZN.js} +291 -99
  130. package/{removeDialogAgentAction-YEPO5AYI.js → removeDialogAgentAction-BDLO7UC2.js} +7 -7
  131. package/{runAgentClientLoop-DCV4BD2W.js → runAgentClientLoop-CDCBSUWW.js} +41 -43
  132. package/{runtimeDoctorCommands-NYBOTA6D.js → runtimeDoctorCommands-AM2V5YVH.js} +5 -5
  133. package/{secretCommands-N6CMCJDZ.js → secretCommands-G5XYCXZB.js} +308 -1
  134. package/{setDialogExtraReferencesAction-EH5GWDAJ.js → setDialogExtraReferencesAction-GBIT7WAG.js} +6 -6
  135. package/{setPrimaryDialogAgentAction-PNWRK6IY.js → setPrimaryDialogAgentAction-PGBTR247.js} +7 -7
  136. package/{settingThunks-7VCWB6P7.js → settingThunks-XQJZVA4D.js} +38 -7
  137. package/{skillDiscovery-F3TMVQOJ.js → skillDiscovery-DO5372J5.js} +2 -3
  138. package/{spaceCommands-ZUI4CTSO.js → spaceCommands-BTSANKDH.js} +23 -23
  139. package/{streamAgentChatTurn-NKFKMFQ2.js → streamAgentChatTurn-VUF3EUMS.js} +66 -59
  140. package/{switchDialogAgentAction-23BFWJMV.js → switchDialogAgentAction-O7WTPLKG.js} +5 -5
  141. package/{tools-626VXEY7.js → tools-GAAYAIEW.js} +35 -37
  142. package/{tuiSummaryLlmCaller-FSOADMXK.js → tuiSummaryLlmCaller-MKOLOSH3.js} +11 -11
  143. package/{updateCommands-KE6LP3QX.js → updateCommands-W7TXEV7N.js} +3 -3
  144. package/{updateDialogTitleAction-RNNQAMXG.js → updateDialogTitleAction-LE2DBQDS.js} +17 -17
  145. package/{windowsSelfUpdate-26TSFXEZ.js → windowsSelfUpdate-575VQ6QO.js} +2 -2
  146. package/chunk-7KWPNGVJ.js +0 -150
  147. package/chunk-AETZ7AD6.js +0 -274
  148. package/chunk-EUGTFFO6.js +0 -42
  149. package/chunk-VYNMQ6HW.js +0 -138
@@ -2,9 +2,10 @@ import {
2
2
  fetchWithTransientRetry
3
3
  } from "./chunk-KFHREHUQ.js";
4
4
  import {
5
- assembleAgentDiscoveryResult,
6
- resolveDiscoveryScope
7
- } from "./chunk-53RSTB7T.js";
5
+ buildAgentDiscoveryResult,
6
+ resolveDiscoveryScope,
7
+ toDiscoverySafeAgentSummary
8
+ } from "./chunk-7TMVGMM3.js";
8
9
  import {
9
10
  getUserDataItemTimestamp,
10
11
  mergeAndDedupUserData
@@ -12,11 +13,9 @@ import {
12
13
  import {
13
14
  markdownToSlate
14
15
  } from "./chunk-KSTEXKL6.js";
15
- import {
16
- isSkillSummaryMarker
17
- } from "./chunk-VF4K2QE6.js";
18
16
  import {
19
17
  addMemberSpace,
18
+ applyFetchSpaceFulfilled,
20
19
  fetchAuthoritativeRemoteSpace,
21
20
  getAllMemberSpaces,
22
21
  removeMemberSpace,
@@ -24,21 +23,21 @@ import {
24
23
  setMembershipLoaded,
25
24
  setMembershipLoading,
26
25
  setMembershipRejected,
27
- setSpaceInitialized,
28
26
  updateMemberSpaceName
29
- } from "./chunk-53PBXLID.js";
27
+ } from "./chunk-Z3MQYKRN.js";
30
28
  import {
31
29
  ToolResultError,
32
30
  clipMultilineText,
33
31
  createSSEParser,
34
32
  fetchAndSerializeTable,
35
- isAgentSkillDisabled,
33
+ loadSkillFunc,
34
+ loadSkillFunctionSchema,
36
35
  parseUiCard,
37
36
  selectAutoApproveSelfUpdateFields,
38
37
  toolRunUpdated,
39
38
  uiCardFallback,
40
39
  waitForAbortableDelay
41
- } from "./chunk-3NPXGNSK.js";
40
+ } from "./chunk-HVXL4VOO.js";
42
41
  import {
43
42
  isGatewayHttpStatus
44
43
  } from "./chunk-NF64D32W.js";
@@ -52,10 +51,10 @@ import {
52
51
  import {
53
52
  AGENT_UPDATE_FIELD_NAMES,
54
53
  normalizeAgentUpdateFieldList
55
- } from "./chunk-VYNMQ6HW.js";
54
+ } from "./chunk-CMTTXP5Y.js";
56
55
  import {
57
56
  createDocState
58
- } from "./chunk-DS5DAOIY.js";
57
+ } from "./chunk-KYQXW7DL.js";
59
58
  import {
60
59
  ToolApiError,
61
60
  buildToolRequestHeaders,
@@ -64,16 +63,13 @@ import {
64
63
  getToolBaseUrl,
65
64
  getToolRequestContext
66
65
  } from "./chunk-MYOH447Z.js";
67
- import {
68
- setDialogExtraReferencesAction
69
- } from "./chunk-DFF6B7P7.js";
70
66
  import {
71
67
  readDocFunc,
72
68
  readDocFunctionSchema,
73
69
  readPageFunc,
74
70
  readPageFunctionSchema,
75
71
  resolvePageReadMarkdown
76
- } from "./chunk-YIRADHSY.js";
72
+ } from "./chunk-WYKMOZTW.js";
77
73
  import {
78
74
  extractMentionsFromSlate
79
75
  } from "./chunk-AGIM7IMJ.js";
@@ -82,7 +78,7 @@ import {
82
78
  } from "./chunk-63W5N6P3.js";
83
79
  import {
84
80
  createDialogAction
85
- } from "./chunk-2E5M3JVS.js";
81
+ } from "./chunk-RWGIVUH3.js";
86
82
  import {
87
83
  DEFAULT_COLLAPSED_CATEGORIES,
88
84
  addContentToSpace,
@@ -99,7 +95,7 @@ import {
99
95
  updateContentCategory,
100
96
  updateContentTitle,
101
97
  writeStoredCollapsedCategories
102
- } from "./chunk-5EFNSNAV.js";
98
+ } from "./chunk-6CFXWUYE.js";
103
99
  import {
104
100
  getCurrentSpaceId,
105
101
  getCurrentSpaceIdRaw,
@@ -122,14 +118,14 @@ import {
122
118
  selectMsgById,
123
119
  uiAskChoiceFunc,
124
120
  uiAskChoiceFunctionSchema
125
- } from "./chunk-YE6A72XL.js";
121
+ } from "./chunk-JI5MQU5B.js";
126
122
  import {
127
123
  createAgent,
128
124
  deleteServerSyncedCredential,
129
125
  runLlm,
130
126
  streamAgentChatTurn,
131
127
  updateAgent
132
- } from "./chunk-CTPFBJAF.js";
128
+ } from "./chunk-N7IBYQEC.js";
133
129
  import {
134
130
  buildMediaToolConfirmation,
135
131
  normalizeMediaConfirmExecutionRevision
@@ -138,7 +134,7 @@ import {
138
134
  UNCATEGORIZED_ID,
139
135
  addContentAction,
140
136
  checkSpaceMembership
141
- } from "./chunk-B6EZB6DW.js";
137
+ } from "./chunk-QAYCF4CH.js";
142
138
  import {
143
139
  createSpaceKey,
144
140
  normalizeSpaceId
@@ -153,11 +149,11 @@ import {
153
149
  } from "./chunk-YDH3FDFQ.js";
154
150
  import {
155
151
  shareResourceAction
156
- } from "./chunk-CNMQATUF.js";
152
+ } from "./chunk-GL7W7TTR.js";
157
153
  import {
158
154
  selectCurrentServer,
159
155
  selectSyncServers
160
- } from "./chunk-32ZKZET7.js";
156
+ } from "./chunk-HWZT5DKX.js";
161
157
  import {
162
158
  patch,
163
159
  read,
@@ -169,10 +165,10 @@ import {
169
165
  selectEntities,
170
166
  toTimestampMs,
171
167
  write
172
- } from "./chunk-B2N5GZBU.js";
168
+ } from "./chunk-OHYCQKPW.js";
173
169
  import {
174
170
  readAction
175
- } from "./chunk-LBXUNNDS.js";
171
+ } from "./chunk-6K2AKJAD.js";
176
172
  import {
177
173
  DEVICE_LOCAL_OWNER_ID,
178
174
  getRuntimeServerContext,
@@ -182,11 +178,11 @@ import {
182
178
  resolveEffectiveSpaceActorId,
183
179
  resolveRecordOwnerUserId,
184
180
  selectRuntimeSnapshot
185
- } from "./chunk-7UODCAWW.js";
181
+ } from "./chunk-32GANJHJ.js";
186
182
  import {
187
183
  createAsyncThunk,
188
184
  noloWriteRequest
189
- } from "./chunk-WRCZXJ4N.js";
185
+ } from "./chunk-X4F26D5K.js";
190
186
  import {
191
187
  selectIdentityToken,
192
188
  selectIdentityUserBalance,
@@ -196,13 +192,9 @@ import {
196
192
  buildTombstoneRecord,
197
193
  isTombstoneRecord
198
194
  } from "./chunk-D2MDMY2M.js";
199
- import {
200
- listBuiltinSkills,
201
- resolveBuiltinSkillByName
202
- } from "./chunk-5HAPEKNH.js";
203
195
  import {
204
196
  CAPABILITY_PACKS
205
- } from "./chunk-SM56M7N7.js";
197
+ } from "./chunk-DBRXPVWY.js";
206
198
  import {
207
199
  buildSkillDocMarkdown,
208
200
  normalizeSkillModalities,
@@ -210,7 +202,7 @@ import {
210
202
  parseExternalSkillMarkdown,
211
203
  parseSkillDocProtocol,
212
204
  resolvePageSkillMetadata
213
- } from "./chunk-AETZ7AD6.js";
205
+ } from "./chunk-EY7V7REW.js";
214
206
  import {
215
207
  CLI_NOLO_WORKSPACE_TOOL_NAMES,
216
208
  DEFAULT_READ_DIALOG_MAX_RESPONSE_CHARS,
@@ -229,7 +221,11 @@ import {
229
221
  resolveNoloDialogInput,
230
222
  resolveReadOnlyToolConstraints,
231
223
  verifyNoloDialogSubjectRefQuery
232
- } from "./chunk-UBLITLAZ.js";
224
+ } from "./chunk-K2GL335R.js";
225
+ import {
226
+ mergeAvailabilityDeadline,
227
+ resolveCredentialKeyWithFallback
228
+ } from "./chunk-RXX262QX.js";
233
229
  import {
234
230
  clipCompactText
235
231
  } from "./chunk-5MMAK75Q.js";
@@ -280,7 +276,7 @@ import {
280
276
  DEFAULT_MODEL,
281
277
  clampReasoningEffort,
282
278
  resolveModelReasoningCapabilityWithCache
283
- } from "./chunk-GC64WGMD.js";
279
+ } from "./chunk-SM3NSZJV.js";
284
280
  import {
285
281
  isRecord
286
282
  } from "./chunk-KUG52IAP.js";
@@ -1022,7 +1018,7 @@ var HOSTED_EXEC_RUNTIME_TOOL_POLICY = {
1022
1018
  workspace: { mode: "lease" }
1023
1019
  };
1024
1020
  var findModelConfig = async (modelName, provider) => {
1025
- const { ALL_MODELS } = await import("./models-UUNO6DOL.js");
1021
+ const { ALL_MODELS } = await import("./models-PJBE6JDV.js");
1026
1022
  const name = toTrimmedString(modelName);
1027
1023
  const prov = toTrimmedString(provider ?? "");
1028
1024
  if (!name) return null;
@@ -1267,7 +1263,7 @@ var buildPlatformFormDataFromArgs = async (args) => {
1267
1263
  const trimmedModel = toTrimmedString(model);
1268
1264
  const trimmedProvider = toTrimmedString(provider);
1269
1265
  const modelConfig = await findModelConfig(trimmedModel, trimmedProvider);
1270
- const { getModelPricing } = await import("./getPricing-E2PLNWCR.js");
1266
+ const { getModelPricing } = await import("./getPricing-3PQY3TGI.js");
1271
1267
  const normalizedTools = tools ?? [];
1272
1268
  const resolvedRuntimeToolPolicy = runtimeToolPolicy ?? (normalizedTools.includes("execShell") ? HOSTED_EXEC_RUNTIME_TOOL_POLICY : void 0);
1273
1269
  const formData = {
@@ -2216,236 +2212,6 @@ Imported from: ${url}` : ""
2216
2212
  });
2217
2213
  }
2218
2214
 
2219
- // packages/ai/tools/loadSkillTool.ts
2220
- var loadSkillFunctionSchema = {
2221
- name: "loadSkill",
2222
- description: [
2223
- "\u6309\u540D\u79F0\u52A0\u8F7D\u4E00\u4E2A\u5DF2\u4FDD\u5B58\u7684 skill \u6587\u6863\uFF0C\u8FD4\u56DE\u5176\u5B8C\u6574\u6307\u4EE4\u6B63\u6587\u3002",
2224
- "name \u4F7F\u7528 skill \u4FDD\u5B58\u65F6\u5199\u5165 skill-config \u7684 name\uFF08\u4E5F\u63A5\u53D7 skillId\uFF09\u3002",
2225
- "\u627E\u4E0D\u5230\u5BF9\u5E94 skill \u65F6\u8FD4\u56DE\u5F53\u524D\u53EF\u7528\u7684 skill \u540D\u79F0\u5217\u8868\uFF08\u4E0D\u62A5\u9519\uFF09\u3002",
2226
- '\u7CFB\u7EDF\u5185\u7F6E\u5199\u4EE3\u7801\u6280\u80FD\uFF1A\u5BF9\u8BDD\u8F6C\u5411\u5199\u4EE3\u7801\u65F6\u7528 loadSkill("coding") \u8F7D\u5165\u5199\u4EE3\u7801\u80FD\u529B\u4E0E\u4EE3\u7801\u5BA1\u67E5\u7EAA\u5F8B\uFF08\u542B review \u89D2\u8272\u5207\u5272\uFF09\u3002',
2227
- "\u7CFB\u7EDF\u5185\u7F6E\u4E13\u804C\u6280\u80FD\uFF1Afeedback\uFF08\u53CD\u9988\u6536\u96C6\uFF09/ agent-creator\uFF08\u521B\u5EFA Agent\uFF09/ app-builder\uFF08\u5E94\u7528\u6784\u5EFA\uFF09\uFF0C\u540C\u6837\u53EF\u76F4\u63A5 loadSkill \u8F7D\u5165\u3002"
2228
- ].join("\n"),
2229
- parameters: {
2230
- type: "object",
2231
- properties: {
2232
- name: {
2233
- type: "string",
2234
- description: "\u8981\u52A0\u8F7D\u7684 skill \u540D\u79F0\u3002"
2235
- }
2236
- },
2237
- required: ["name"]
2238
- }
2239
- };
2240
- var getRuntime = (thunkApi) => {
2241
- const state2 = thunkApi?.getState?.();
2242
- return state2 ? selectRuntimeSnapshot(state2) : null;
2243
- };
2244
- var authHeaders = (token) => token ? { Authorization: `Bearer ${token}` } : {};
2245
- async function readRemoteRecord(args) {
2246
- const serverBase = normalizeServerOrigin(args.serverBase);
2247
- if (!serverBase || !args.token) return null;
2248
- const response = await fetch(
2249
- `${serverBase}/api/v1/db/read/${encodeURIComponent(args.dbKey)}?includeDeleted=true`,
2250
- { headers: authHeaders(args.token) }
2251
- );
2252
- if (!response.ok) return null;
2253
- const payload = await response.json().catch(() => null);
2254
- return payload?.data ?? payload;
2255
- }
2256
- function resolveWebSkill(candidates, requestedName) {
2257
- const candidate = matchSkillCandidate(candidates, requestedName);
2258
- if (candidate) return { kind: "space", candidate };
2259
- const entry = resolveBuiltinSkillByName(requestedName);
2260
- return entry ? { kind: "builtin", entry } : null;
2261
- }
2262
- function listWebSkillNames(candidates) {
2263
- return Array.from(
2264
- /* @__PURE__ */ new Set([
2265
- ...candidates.map((candidate) => candidate.name),
2266
- ...listBuiltinSkills().flatMap((skill) => [skill.slug, skill.title])
2267
- ])
2268
- );
2269
- }
2270
- function matchSkillCandidate(candidates, requestedName) {
2271
- return candidates.find(
2272
- (candidate) => candidate.name === requestedName || candidate.skillId === requestedName
2273
- );
2274
- }
2275
- function collectSkillCandidatesFromSpace(space) {
2276
- if (!space?.contents || typeof space.contents !== "object") return [];
2277
- const candidates = [];
2278
- for (const [entryKey, value] of Object.entries(space.contents)) {
2279
- if (!isRecord(value)) continue;
2280
- const skillSummary = value.skillSummary;
2281
- if (!isSkillSummaryMarker(skillSummary)) continue;
2282
- const name = asTrimmedString(skillSummary.name);
2283
- if (!name) continue;
2284
- candidates.push({
2285
- dbKey: entryKey,
2286
- name,
2287
- skillId: asOptionalTrimmedString(skillSummary.skillId) ?? void 0
2288
- });
2289
- }
2290
- return candidates;
2291
- }
2292
- function extractSkillBody(page) {
2293
- return parseSkillDocProtocol(page?.content ?? "").content;
2294
- }
2295
- async function listSkillCandidates(thunkApi) {
2296
- const runtime = getRuntime(thunkApi);
2297
- const serverBase = runtime?.currentServer;
2298
- const token = runtime?.currentToken;
2299
- const userId = runtime?.currentUserId;
2300
- if (!serverBase || !token || !userId) return [];
2301
- const membershipsResponse = await fetch(
2302
- `${normalizeServerOrigin(serverBase)}/rpc/getUserSpaceMemberships`,
2303
- {
2304
- method: "POST",
2305
- headers: {
2306
- "Content-Type": "application/json",
2307
- ...authHeaders(token)
2308
- },
2309
- body: JSON.stringify({ userId })
2310
- }
2311
- ).catch(() => null);
2312
- if (!membershipsResponse?.ok) return [];
2313
- const memberships = await membershipsResponse.json().catch(() => []);
2314
- if (!Array.isArray(memberships)) return [];
2315
- const candidates = [];
2316
- for (const membership of memberships) {
2317
- const spaceId = asTrimmedString(membership?.spaceId);
2318
- if (!spaceId) continue;
2319
- const space = await readRemoteRecord({
2320
- serverBase,
2321
- token,
2322
- dbKey: createSpaceKey.space(spaceId)
2323
- });
2324
- if (!space) continue;
2325
- candidates.push(...collectSkillCandidatesFromSpace(space));
2326
- }
2327
- return candidates;
2328
- }
2329
- var resolveCurrentAgentKeyForSkillGate = (thunkApi) => {
2330
- try {
2331
- const state2 = thunkApi?.getState?.();
2332
- if (!state2) return null;
2333
- const currentDialogKey = getActiveDialogKey();
2334
- if (!currentDialogKey) return null;
2335
- const dialogConfig = selectById(
2336
- state2,
2337
- currentDialogKey
2338
- );
2339
- return asTrimmedNonEmptyStringArray(dialogConfig?.cybots)[0] ?? null;
2340
- } catch {
2341
- return null;
2342
- }
2343
- };
2344
- var readCurrentAgentSkillSource = async (thunkApi) => {
2345
- const agentKey = resolveCurrentAgentKeyForSkillGate(thunkApi);
2346
- if (!agentKey) return null;
2347
- const db = thunkApi?.extra?.db;
2348
- if (!db) return null;
2349
- try {
2350
- const agent = await db.get(agentKey);
2351
- if (!agent || typeof agent !== "object") return null;
2352
- return agent;
2353
- } catch {
2354
- return null;
2355
- }
2356
- };
2357
- async function loadSkillFunc(args, thunkApi) {
2358
- const requestedName = asTrimmedString(args?.name);
2359
- if (!requestedName) throw new Error("loadSkill \u9700\u8981\u63D0\u4F9B name\u3002");
2360
- const candidates = await listSkillCandidates(thunkApi);
2361
- const resolution = resolveWebSkill(candidates, requestedName);
2362
- const matched = resolution?.kind === "space" ? resolution.candidate : void 0;
2363
- const builtinEntry = resolution?.kind === "builtin" ? resolution.entry : null;
2364
- const resolvedSlug = builtinEntry?.slug ?? matched?.skillId ?? null;
2365
- if (resolvedSlug) {
2366
- const agentSkillSource = await readCurrentAgentSkillSource(thunkApi);
2367
- if (agentSkillSource && isAgentSkillDisabled(agentSkillSource, resolvedSlug)) {
2368
- return {
2369
- rawData: {
2370
- success: false,
2371
- name: requestedName,
2372
- slug: resolvedSlug,
2373
- disabled: true
2374
- },
2375
- displayData: `Skill "${requestedName}" \u5DF2\u88AB\u7981\u7528\uFF1A\u8BE5\u80FD\u529B\u5728\u6B64 agent \u4E0A\u4E0D\u53EF\u7528\uFF0C\u65E0\u6CD5\u52A0\u8F7D\u3002`
2376
- };
2377
- }
2378
- }
2379
- if (builtinEntry) {
2380
- const body2 = builtinEntry.content;
2381
- const dbKey = builtinEntry.slug;
2382
- await persistLoadedSkillReference(thunkApi, dbKey, requestedName);
2383
- return {
2384
- rawData: {
2385
- success: true,
2386
- name: requestedName,
2387
- dbKey,
2388
- body: body2
2389
- },
2390
- displayData: `Skill "${requestedName}" loaded inline. Follow its instructions.
2391
-
2392
- ${body2}`
2393
- };
2394
- }
2395
- if (!matched) {
2396
- const availableNames = listWebSkillNames(candidates);
2397
- const availableText = availableNames.length ? availableNames.join(", ") : "(none)";
2398
- return {
2399
- rawData: {
2400
- success: false,
2401
- name: requestedName,
2402
- availableSkills: availableNames
2403
- },
2404
- displayData: `Skill "${requestedName}" not found. Available skills: ${availableText}`
2405
- };
2406
- }
2407
- const runtime = getRuntime(thunkApi);
2408
- const page = await readRemoteRecord({
2409
- serverBase: runtime?.currentServer,
2410
- token: runtime?.currentToken,
2411
- dbKey: matched.dbKey
2412
- });
2413
- const body = extractSkillBody(page);
2414
- await persistLoadedSkillReference(thunkApi, matched.dbKey, requestedName);
2415
- return {
2416
- rawData: {
2417
- success: true,
2418
- name: requestedName,
2419
- dbKey: matched.dbKey,
2420
- body
2421
- },
2422
- displayData: `Skill "${requestedName}" loaded inline. Follow its instructions.
2423
-
2424
- ${body}`
2425
- };
2426
- }
2427
- async function persistLoadedSkillReference(thunkApi, dbKey, name) {
2428
- try {
2429
- const state2 = thunkApi?.getState?.();
2430
- const currentDialogKey = getActiveDialogKey();
2431
- if (!state2 || !currentDialogKey) return;
2432
- const dialogConfig = selectById(
2433
- state2,
2434
- currentDialogKey
2435
- );
2436
- const existing = dialogConfig?.extraReferences ?? [];
2437
- const alreadyMounted = existing.some((ref) => ref.dbKey === dbKey);
2438
- if (alreadyMounted) return;
2439
- const newRef = {
2440
- dbKey,
2441
- title: name,
2442
- type: "instruction"
2443
- };
2444
- await setDialogExtraReferencesAction([...existing, newRef], thunkApi);
2445
- } catch {
2446
- }
2447
- }
2448
-
2449
2215
  // packages/create/space/category/categoryActions.ts
2450
2216
  import { ulid as ulid2 } from "ulid";
2451
2217
  var syncCurrentSpace = (spaceId, updatedSpaceData) => {
@@ -3522,11 +3288,18 @@ var jsonPreview = (value, maxLength = 1800) => {
3522
3288
  return text.length <= maxLength ? text : `${text.slice(0, maxLength)}
3523
3289
  ...(truncated)`;
3524
3290
  };
3525
- var getRuntime2 = (thunkApi) => {
3291
+ var getRuntime = (thunkApi) => {
3526
3292
  const state2 = thunkApi?.getState?.();
3527
- return state2 ? selectRuntimeSnapshot(state2) : null;
3293
+ if (!state2) return null;
3294
+ const snapshot = selectRuntimeSnapshot(state2);
3295
+ return {
3296
+ ...snapshot,
3297
+ currentUserId: snapshot?.currentUserId ?? state2.currentUserId ?? state2.userId ?? state2.auth?.userId ?? state2.auth?.currentUser?.userId,
3298
+ currentToken: snapshot?.currentToken ?? state2.currentToken ?? state2.auth?.currentToken,
3299
+ currentServer: snapshot?.currentServer ?? state2.currentServer ?? state2.settings?.currentServer
3300
+ };
3528
3301
  };
3529
- var authHeaders2 = (token) => token ? { Authorization: `Bearer ${token}` } : {};
3302
+ var authHeaders = (token) => token ? { Authorization: `Bearer ${token}` } : {};
3530
3303
  var DrainExhaustedError = class extends Error {
3531
3304
  constructor() {
3532
3305
  super(DRAIN_EXHAUSTED_USER_MESSAGE);
@@ -3541,14 +3314,14 @@ async function throwIfDrainExhausted(response) {
3541
3314
  throw new DrainExhaustedError();
3542
3315
  }
3543
3316
  }
3544
- async function readRemoteRecord2(args) {
3317
+ async function readRemoteRecord(args) {
3545
3318
  const serverBase = normalizeServerOrigin(args.serverBase);
3546
3319
  if (!serverBase || !args.token) return null;
3547
3320
  const query = args.includeDeleted ? "?includeDeleted=true" : "";
3548
3321
  const response = await fetchWithTransientRetry(
3549
3322
  fetch,
3550
3323
  `${serverBase}/api/v1/db/read/${encodeURIComponent(args.dbKey)}${query}`,
3551
- { headers: authHeaders2(args.token) }
3324
+ { headers: authHeaders(args.token) }
3552
3325
  );
3553
3326
  if (!response.ok) {
3554
3327
  await throwIfDrainExhausted(response);
@@ -3567,7 +3340,7 @@ async function queryRemoteUserRecords(args) {
3567
3340
  method: "POST",
3568
3341
  headers: {
3569
3342
  "Content-Type": "application/json",
3570
- ...authHeaders2(args.token)
3343
+ ...authHeaders(args.token)
3571
3344
  },
3572
3345
  body: JSON.stringify({
3573
3346
  type: args.type,
@@ -3583,7 +3356,7 @@ async function queryRemoteUserRecords(args) {
3583
3356
  return Array.isArray(payload?.data?.data) ? payload.data.data : Array.isArray(payload?.data) ? payload.data : [];
3584
3357
  }
3585
3358
  async function queryBestRecords(thunkApi, type, limit) {
3586
- const runtime = getRuntime2(thunkApi);
3359
+ const runtime = getRuntime(thunkApi);
3587
3360
  const remoteRecords = await queryRemoteUserRecords({
3588
3361
  serverBase: runtime?.currentServer,
3589
3362
  token: runtime?.currentToken,
@@ -3597,8 +3370,8 @@ async function queryBestRecords(thunkApi, type, limit) {
3597
3370
  return remoteRecords;
3598
3371
  }
3599
3372
  async function readBestRecord(thunkApi, dbKey, includeDeleted = false) {
3600
- const runtime = getRuntime2(thunkApi);
3601
- return readRemoteRecord2({
3373
+ const runtime = getRuntime(thunkApi);
3374
+ return readRemoteRecord({
3602
3375
  serverBase: runtime?.currentServer,
3603
3376
  token: runtime?.currentToken,
3604
3377
  dbKey,
@@ -3710,7 +3483,7 @@ var deleteDialogsFunctionSchema = {
3710
3483
  }
3711
3484
  };
3712
3485
  async function queryDialogsBySubjectRefFunc(args, thunkApi) {
3713
- const runtime = getRuntime2(thunkApi);
3486
+ const runtime = getRuntime(thunkApi);
3714
3487
  const target = buildNoloSubjectRefQueryTarget(args ?? {});
3715
3488
  if (!target) throw new Error("queryDialogsBySubjectRef requires rowDbKey or subjectKind plus subjectId.");
3716
3489
  const queryLimit = clampNoloPositiveInteger(args?.queryLimit, 500, 500);
@@ -3756,7 +3529,7 @@ async function queryDialogsBySubjectRefFunc(args, thunkApi) {
3756
3529
  };
3757
3530
  }
3758
3531
  async function readDialogFunc(args, thunkApi) {
3759
- const runtime = getRuntime2(thunkApi);
3532
+ const runtime = getRuntime(thunkApi);
3760
3533
  const userId = runtime?.currentUserId;
3761
3534
  if (!userId) throw new Error("readDialog requires a signed-in user.");
3762
3535
  const rawDialog = asTrimmedString(args?.dialog) || asTrimmedString(args?.dialogId) || asTrimmedString(args?.id);
@@ -3772,7 +3545,7 @@ async function readDialogFunc(args, thunkApi) {
3772
3545
  method: "POST",
3773
3546
  headers: {
3774
3547
  "Content-Type": "application/json",
3775
- ...authHeaders2(runtime.currentToken)
3548
+ ...authHeaders(runtime.currentToken)
3776
3549
  },
3777
3550
  // Agent-safe bounded 模式:数据源侧完成预算 projection,本进程不再
3778
3551
  // 对全量消息做 materialize + 整体 stringify。
@@ -3838,7 +3611,7 @@ var formatDeleteDialogsPreview = (preview) => {
3838
3611
  return lines.join("\n");
3839
3612
  };
3840
3613
  var loadDeleteDialogsPreview = async (args, thunkApi) => {
3841
- const runtime = getRuntime2(thunkApi);
3614
+ const runtime = getRuntime(thunkApi);
3842
3615
  const userId = runtime?.currentUserId;
3843
3616
  if (!userId) throw new Error("deleteDialogs requires a signed-in user.");
3844
3617
  const query = asTrimmedString(args?.query);
@@ -3884,7 +3657,7 @@ async function deleteDialogsFunc(args, thunkApi) {
3884
3657
  const deletedDialogIds = [];
3885
3658
  const deletedDialogKeys = [];
3886
3659
  const failures = [];
3887
- const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-QHV6I3OQ.js");
3660
+ const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-Z5E7POEN.js");
3888
3661
  for (const target of targets) {
3889
3662
  try {
3890
3663
  await thunkApi.dispatch(deleteDialog2(target.dbKey)).unwrap();
@@ -3910,7 +3683,7 @@ async function deleteDialogsFunc(args, thunkApi) {
3910
3683
  };
3911
3684
  }
3912
3685
  async function fetchUserFavoriteAgentMap(thunkApi) {
3913
- const runtime = getRuntime2(thunkApi);
3686
+ const runtime = getRuntime(thunkApi);
3914
3687
  if (!runtime?.currentServer || !runtime?.currentToken) return {};
3915
3688
  try {
3916
3689
  const serverBase = normalizeServerOrigin(runtime.currentServer);
@@ -3919,7 +3692,7 @@ async function fetchUserFavoriteAgentMap(thunkApi) {
3919
3692
  method: "POST",
3920
3693
  headers: {
3921
3694
  "Content-Type": "application/json",
3922
- ...authHeaders2(runtime.currentToken)
3695
+ ...authHeaders(runtime.currentToken)
3923
3696
  },
3924
3697
  body: JSON.stringify({ targetType: "agent" })
3925
3698
  }).catch(() => null);
@@ -3974,7 +3747,7 @@ async function listAgentsFunc(args, thunkApi) {
3974
3747
  const limit = clampNoloPositiveInteger(args?.limit, 100, 500);
3975
3748
  const userRecords = await queryBestRecords(thunkApi, "agent" /* AGENT */, limit);
3976
3749
  const favoritesMap = await fetchUserFavoriteAgentMap(thunkApi);
3977
- const runtime = getRuntime2(thunkApi);
3750
+ const runtime = getRuntime(thunkApi);
3978
3751
  const scope = resolveDiscoveryScope({ scope: args?.scope, publicOnly: args?.publicOnly });
3979
3752
  const publicRecords = scope === "preferred" ? [] : await fetchPublicAgentsForDiscovery({
3980
3753
  serverBase: runtime?.currentServer ?? "",
@@ -4008,27 +3781,76 @@ async function listAgentsFunc(args, thunkApi) {
4008
3781
  }
4009
3782
  }
4010
3783
  const userId = runtime?.currentUserId ?? void 0;
4011
- const discovery = assembleAgentDiscoveryResult({
4012
- records: [...Array.from(recordsMap.values()), ...publicRecords],
4013
- summaryOptions: (record) => ({
3784
+ const now = typeof args?.now === "number" ? args.now : Date.now();
3785
+ const env = args?.env ?? process.env;
3786
+ let localCooldowns = {};
3787
+ let resolveCooldownFn;
3788
+ try {
3789
+ const credModulePath = "../../agent-runtime/credentialAvailability";
3790
+ const credMod = await import(credModulePath);
3791
+ if (credMod?.readCredentialAvailability && credMod?.resolveEffectiveCredentialCooldown) {
3792
+ localCooldowns = await credMod.readCredentialAvailability(env, now).catch(() => ({}));
3793
+ resolveCooldownFn = credMod.resolveEffectiveCredentialCooldown;
3794
+ }
3795
+ } catch {
3796
+ }
3797
+ const allRecords = [...Array.from(recordsMap.values()), ...publicRecords];
3798
+ const agents = allRecords.map((record) => {
3799
+ const summary = toDiscoverySafeAgentSummary(record, {
4014
3800
  favoritesMap,
4015
3801
  userId,
4016
3802
  publicRecordExists: publicRecords.includes(record) ? true : void 0
4017
- }),
3803
+ });
3804
+ if (Object.keys(localCooldowns).length > 0) {
3805
+ let localDeadline;
3806
+ const credKey = resolveCredentialKeyWithFallback(record);
3807
+ if (credKey && resolveCooldownFn) {
3808
+ const at = resolveCooldownFn(credKey, localCooldowns, now);
3809
+ if (typeof at === "number") {
3810
+ localDeadline = mergeAvailabilityDeadline(localDeadline, at);
3811
+ }
3812
+ }
3813
+ for (const ref of [record?.apiKeyRef, record?.credentialRef]) {
3814
+ if (typeof ref === "string" && ref.trim()) {
3815
+ const at = localCooldowns[ref.trim()];
3816
+ if (typeof at === "number" && at > now) {
3817
+ localDeadline = mergeAvailabilityDeadline(localDeadline, at);
3818
+ }
3819
+ }
3820
+ }
3821
+ if (summary.credentialGroup && summary.isOwned !== false) {
3822
+ const at = localCooldowns[summary.credentialGroup];
3823
+ if (typeof at === "number" && at > now) {
3824
+ localDeadline = mergeAvailabilityDeadline(localDeadline, at);
3825
+ }
3826
+ }
3827
+ if (typeof localDeadline === "number") {
3828
+ const merged = mergeAvailabilityDeadline(summary.nextAvailableAt, localDeadline);
3829
+ if (typeof merged === "number") {
3830
+ summary.nextAvailableAt = merged;
3831
+ }
3832
+ }
3833
+ }
3834
+ return summary;
3835
+ });
3836
+ const discovery = buildAgentDiscoveryResult({
3837
+ agents,
4018
3838
  scope: args?.scope,
4019
3839
  query: args?.query,
4020
3840
  publicOnly: args?.publicOnly,
4021
3841
  showUnavailable: args?.showUnavailable,
4022
- verbose: args?.verbose
3842
+ verbose: args?.verbose,
3843
+ now
4023
3844
  });
4024
3845
  return {
4025
3846
  rawData: {
4026
3847
  success: true,
4027
3848
  total: discovery.total,
4028
3849
  unavailableCount: discovery.unavailableCount,
4029
- unavailableAgents: discovery.unavailableAgents,
3850
+ // 顺序即序列化顺序:agents 在前(派发必需),大块说明字段在后。
3851
+ agents: discovery.agents,
4030
3852
  credentialGroups: discovery.credentialGroups,
4031
- agents: discovery.agents
3853
+ unavailableAgents: discovery.unavailableAgents
4032
3854
  },
4033
3855
  displayData: formatAgentListCard(discovery.agents)
4034
3856
  };
@@ -4072,7 +3894,7 @@ function formatReadAgentCard(agentKey, record) {
4072
3894
  return lines.join("\n");
4073
3895
  }
4074
3896
  async function readAgentFunc(args, thunkApi) {
4075
- const runtime = getRuntime2(thunkApi);
3897
+ const runtime = getRuntime(thunkApi);
4076
3898
  const userId = runtime?.currentUserId;
4077
3899
  if (!userId) throw new Error("readAgent requires a signed-in user.");
4078
3900
  const rawAgent = asTrimmedString(args?.agent) || asTrimmedString(args?.agentKey) || asTrimmedString(args?.id);
@@ -4104,14 +3926,14 @@ var listSpacesFunctionSchema = {
4104
3926
  }
4105
3927
  };
4106
3928
  async function listSpacesFunc(_args, thunkApi) {
4107
- const runtime = getRuntime2(thunkApi);
3929
+ const runtime = getRuntime(thunkApi);
4108
3930
  const serverBase = normalizeServerOrigin(runtime?.currentServer);
4109
3931
  if (serverBase && runtime?.currentToken && runtime?.currentUserId) {
4110
3932
  const response = await fetchWithTransientRetry(fetch, `${serverBase}/rpc/getUserSpaceMemberships`, {
4111
3933
  method: "POST",
4112
3934
  headers: {
4113
3935
  "Content-Type": "application/json",
4114
- ...authHeaders2(runtime.currentToken)
3936
+ ...authHeaders(runtime.currentToken)
4115
3937
  },
4116
3938
  body: JSON.stringify({ userId: runtime.currentUserId })
4117
3939
  }).catch(() => null);
@@ -4200,7 +4022,7 @@ var readSkillDocFunctionSchema = {
4200
4022
  }
4201
4023
  };
4202
4024
  async function readSkillDocFunc(args, thunkApi) {
4203
- const { buildReadDocResult } = await import("./readDocTool-NTAXO7SX.js");
4025
+ const { buildReadDocResult } = await import("./readDocTool-374CFJYO.js");
4204
4026
  const id = args?.id ?? args?.doc ?? args?.docKey ?? args?.pageKey;
4205
4027
  if (typeof id !== "string" || !id.trim()) {
4206
4028
  throw new Error("readSkillDoc requires id or doc.");
@@ -4216,7 +4038,7 @@ var cliWhoamiFunctionSchema = {
4216
4038
  parameters: { type: "object", properties: {} }
4217
4039
  };
4218
4040
  async function cliWhoamiFunc(_args, thunkApi) {
4219
- const runtime = getRuntime2(thunkApi);
4041
+ const runtime = getRuntime(thunkApi);
4220
4042
  const result = {
4221
4043
  success: true,
4222
4044
  runtime: "browser",
@@ -4232,7 +4054,7 @@ var cliDoctorFunctionSchema = {
4232
4054
  parameters: { type: "object", properties: {} }
4233
4055
  };
4234
4056
  async function cliDoctorFunc(_args, thunkApi) {
4235
- const runtime = getRuntime2(thunkApi);
4057
+ const runtime = getRuntime(thunkApi);
4236
4058
  const result = {
4237
4059
  success: true,
4238
4060
  runtime: "browser",
@@ -4983,6 +4805,24 @@ var deleteSpaceAction = async (input, thunkAPI) => {
4983
4805
  return { spaceId, strategy };
4984
4806
  };
4985
4807
 
4808
+ // packages/create/space/withTimeout.ts
4809
+ var SPACE_LOCAL_READ_TIMEOUT_MS = 1500;
4810
+ var withTimeout = async (promise, ms = SPACE_LOCAL_READ_TIMEOUT_MS) => {
4811
+ let timer;
4812
+ try {
4813
+ return await Promise.race([
4814
+ promise,
4815
+ new Promise((resolve) => {
4816
+ timer = setTimeout(() => resolve(null), ms);
4817
+ })
4818
+ ]);
4819
+ } catch {
4820
+ return null;
4821
+ } finally {
4822
+ if (timer) clearTimeout(timer);
4823
+ }
4824
+ };
4825
+
4986
4826
  // packages/create/space/fetchSpaceAction.ts
4987
4827
  var fetchSpaceAction = async (input, thunkAPI) => {
4988
4828
  const rawSpaceId = typeof input === "string" ? input : input?.spaceId;
@@ -4995,15 +4835,9 @@ var fetchSpaceAction = async (input, thunkAPI) => {
4995
4835
  const spaceKey = createSpaceKey.space(spaceId);
4996
4836
  const readSpace = async (dbKey) => {
4997
4837
  try {
4998
- const { read: read2, readAndWait: readAndWait2 } = await import("./dbSlice-QAUXABCC.js");
4999
- if (fresh) {
5000
- return await dispatch(readAndWait2(dbKey)).unwrap();
5001
- }
5002
- return await dispatch(
5003
- read2({
5004
- dbKey
5005
- })
5006
- ).unwrap();
4838
+ const { read: read2, readAndWait: readAndWait2 } = await import("./dbSlice-JK7LWBDO.js");
4839
+ const readPromise = fresh ? dispatch(readAndWait2(dbKey)).unwrap() : dispatch(read2({ dbKey })).unwrap();
4840
+ return await withTimeout(readPromise);
5007
4841
  } catch {
5008
4842
  return null;
5009
4843
  }
@@ -5160,16 +4994,6 @@ var fetchSpaceSidebarStateAction = async (spaceId, thunkAPI) => {
5160
4994
  };
5161
4995
  };
5162
4996
 
5163
- // packages/create/space/applyFetchSpaceFulfilled.ts
5164
- function applyFetchSpaceFulfilled(payload) {
5165
- const { spaceId, spaceData } = payload;
5166
- const currentSpaceId = getCurrentSpaceIdRaw();
5167
- if (!currentSpaceId || currentSpaceId === spaceId) {
5168
- setCurrentSpaceBoth(spaceId, spaceData);
5169
- setSpaceInitialized();
5170
- }
5171
- }
5172
-
5173
4997
  // packages/create/space/changeSpaceAction.ts
5174
4998
  var getSpaceUpdatedAt2 = (space) => {
5175
4999
  if (!space) return 0;
@@ -5246,6 +5070,7 @@ var fetchSpaceSidebarState = createAsyncThunk(
5246
5070
  }
5247
5071
  }
5248
5072
  );
5073
+ var SPACE_SWITCH_TIMEOUT_MS = 1e4;
5249
5074
  var changeSpace = createAsyncThunk(
5250
5075
  "space/changeSpace",
5251
5076
  async (arg, thunkAPI) => {
@@ -5254,8 +5079,22 @@ var changeSpace = createAsyncThunk(
5254
5079
  setMembershipLoading();
5255
5080
  setCurrentSpace(null);
5256
5081
  }
5082
+ const actionPromise = changeSpaceAction(arg, thunkAPI);
5083
+ actionPromise.catch(() => {
5084
+ });
5085
+ let timeoutTimer;
5257
5086
  try {
5258
- const payload = await changeSpaceAction(arg, thunkAPI);
5087
+ const payload = await Promise.race([
5088
+ actionPromise,
5089
+ new Promise((_, reject) => {
5090
+ timeoutTimer = setTimeout(
5091
+ () => reject(
5092
+ new Error("\u5207\u6362\u7A7A\u95F4\u8D85\u65F6\uFF1A\u672C\u5730\u5B58\u50A8\u6216\u670D\u52A1\u7AEF\u672A\u5728\u65F6\u9650\u5185\u8FD4\u56DE")
5093
+ ),
5094
+ SPACE_SWITCH_TIMEOUT_MS
5095
+ );
5096
+ })
5097
+ ]);
5259
5098
  setCurrentSpaceBoth(payload.spaceId, payload.spaceData);
5260
5099
  setMembershipLoaded();
5261
5100
  setCollapsedCategories(
@@ -5268,6 +5107,8 @@ var changeSpace = createAsyncThunk(
5268
5107
  setCurrentSpaceBoth(null, null);
5269
5108
  setCollapsedCategories({}, null);
5270
5109
  throw error;
5110
+ } finally {
5111
+ if (timeoutTimer) clearTimeout(timeoutTimer);
5271
5112
  }
5272
5113
  }
5273
5114
  );
@@ -11642,7 +11483,7 @@ var selectUserIdFromState = (state2) => {
11642
11483
  var selectCurrentServerFromState = (state2) => typeof state2?.settings?.currentServer === "string" ? state2.settings.currentServer : null;
11643
11484
  async function addImageContentToSpace(input) {
11644
11485
  const injectedAddContentAction = input.thunkApi?.extra?.addContentAction;
11645
- const addContentAction2 = typeof injectedAddContentAction === "function" ? injectedAddContentAction : (await import("./addContentAction-BY375D35.js")).addContentAction;
11486
+ const addContentAction2 = typeof injectedAddContentAction === "function" ? injectedAddContentAction : (await import("./addContentAction-FEN3H2EE.js")).addContentAction;
11646
11487
  await addContentAction2(
11647
11488
  {
11648
11489
  spaceId: input.spaceId,
@@ -13887,7 +13728,7 @@ function assertRuntimeKeyDispatchableByHost(input) {
13887
13728
  `startAgentRun \u7684 runtimeKey="${requested}" \u65E0\u6CD5\u7531 CLI \u672C\u5730\u6D3E\u53D1\u901A\u9053\u5151\u73B0\uFF1A\u8BE5\u901A\u9053\u53EA\u80FD\u628A run \u843D\u5230\u672C\u673A\uFF08local\uFF09\u3001\u672C\u673A sbx \u4E91\u6C99\u76D2\uFF08docker / docker:<id>\uFF09\u6216 Instabox \u6C99\u76D2\uFF08instabox\uFF09\uFF0C\u672C\u673A\u6CA1\u6709 ${requested} \u5BF9\u5E94\u7684\u6267\u884C\u540E\u7AEF\u3002\u5DF2\u62D2\u7EDD\u6D3E\u53D1\uFF0C\u672A\u542F\u52A8\u4EFB\u4F55 run\u3002\u8981\u771F\u6B63\u5728 ${requested} \u6267\u884C\uFF1A\u7528 CLI \u901A\u9053 \`nolo agent run --runtime-key ${requested} ...\`\uFF0C\u6216\u4ECE\u80FD\u6D3E\u53D1\u5230\u8BE5\u4F4D\u7F6E\u7684\u5BBF\u4E3B\uFF08\u670D\u52A1\u7AEF\uFF09\u53D1\u8D77\u3002`
13888
13729
  );
13889
13730
  }
13890
- var HOST_WRITES_CONFIRMATION_REQUIRED_MESSAGE = "runtimeKey 'local' \u610F\u5473\u7740\u5B50 run \u76F4\u63A5\u5728\u5BBF\u4E3B\u6587\u4EF6\u7CFB\u7EDF\u4E0A\u8BFB\u5199\u4EE3\u7801\uFF08\u65E0\u9694\u79BB\uFF09\uFF1A\u5FC5\u987B\u7531\u8C03\u7528\u65B9\u663E\u5F0F\u58F0\u660E allowHostWrites: true \u624D\u80FD\u6D3E\u53D1\u3002\u672A\u58F0\u660E\u65F6\u5DF2\u62D2\u7EDD\u6D3E\u53D1\uFF08\u672A\u542F\u52A8\u4EFB\u4F55 run\uFF09\uFF1B\u8981\u6C99\u76D2\u6267\u884C\u8BF7\u7701\u7565 runtimeKey\uFF08\u9ED8\u8BA4\u672C\u673A docker \u6C99\u76D2\uFF09\u6216\u663E\u5F0F\u70B9\u540D docker / docker:<id>\u3002";
13731
+ var HOST_WRITES_CONFIRMATION_REQUIRED_MESSAGE = "runtimeKey 'local' \u610F\u5473\u7740\u5B50 run \u76F4\u63A5\u5728\u5BBF\u4E3B\u6587\u4EF6\u7CFB\u7EDF\u4E0A\u8BFB\u5199\u4EE3\u7801\uFF08\u65E0\u9694\u79BB\uFF09\uFF1A\u5FC5\u987B\u7531\u8C03\u7528\u65B9\u663E\u5F0F\u58F0\u660E allowHostWrites: true \u624D\u80FD\u6D3E\u53D1\u3002\u672A\u58F0\u660E\u65F6\u5DF2\u62D2\u7EDD\u6D3E\u53D1\uFF08\u672A\u542F\u52A8\u4EFB\u4F55 run\uFF09\uFF1B\u8981\u6C99\u76D2\u6267\u884C\u8BF7\u7701\u7565 runtimeKey\uFF08\u9ED8\u8BA4\u672C\u673A docker \u6C99\u76D2\uFF09\u6216\u663E\u5F0F\u70B9\u540D docker / docker:<id>\u3002\u53EA\u8BFB\u6D3E\u53D1\uFF08readOnly: true\uFF09\u4E0D\u9700\u8981 runtimeKey\uFF1A\u7701\u7565\u5B83\u5373\u5728\u5BBF\u4E3B\u6267\u884C\uFF0C\u65E0\u9700 allowHostWrites\u3002\u6CE8\u610F readOnly \u4E0D\u63D0\u4F9B\u6587\u4EF6\u7CFB\u7EDF\u53EA\u8BFB\u9694\u79BB\uFF08shell \u4ECD\u53EF\u5199\uFF09\uFF0C\u9700\u8981\u9694\u79BB\u8BF7\u663E\u5F0F\u6307\u5B9A docker\u3002";
13891
13732
  var HOST_EXECUTOR_UNAVAILABLE_MESSAGE = "runtimeKey 'local'\uFF08\u5728\u5BBF\u4E3B\u6587\u4EF6\u7CFB\u7EDF\u4E0A\u6267\u884C\uFF09\u5728\u5F53\u524D\u5BBF\u4E3B\u6CA1\u6709\u53EF\u7528\u7684\u5BBF\u4E3B\u6267\u884C\u5668\uFF1A\u670D\u52A1\u7AEF / \u6D4F\u89C8\u5668 run \u5151\u73B0\u4E0D\u4E86\u5B83\uFF08\u670D\u52A1\u7AEF\u4ECE\u4E0D\u5151\u73B0 local\uFF0C\u89C1 local_target_unsupported\uFF09\u3002\u8BF7\u5728\u5BBF\u4E3B\u8FDB\u7A0B\u5185\u6D3E\u53D1\uFF08CLI \u901A\u9053\u652F\u6301 runtimeKey=local + allowHostWrites: true\uFF09\uFF0C\u6216\u6539\u7528\u5DF2\u8FDE\u63A5\u7684\u673A\u5668\uFF08runtimeKey: machine:<machineId>\uFF09\uFF0C\u6216\u7701\u7565 runtimeKey \u843D\u672C\u673A docker \u6C99\u76D2\u3002";
13892
13733
  function resolveCliLocalSpawnDispatch(input) {
13893
13734
  const requested = assertRuntimeKeyDispatchableByHost({
@@ -14157,7 +13998,7 @@ function buildStartAgentRunFunctionSchema(opts) {
14157
13998
  },
14158
13999
  allowHostWrites: {
14159
14000
  type: "boolean",
14160
- description: "\u53EF\u9009\u3002\u4EC5\u5F53 runtimeKey='local' \u65F6\u9700\u8981\u663E\u5F0F\u58F0\u660E\uFF1A\u8868\u793A\u8C03\u7528\u65B9\u540C\u610F\u5B50 run \u76F4\u63A5\u5728**\u5BBF\u4E3B\u6587\u4EF6\u7CFB\u7EDF**\u4E0A\u8BFB\u5199\u4EE3\u7801\uFF08\u65E0\u9694\u79BB\uFF09\u3002runtimeKey='local' \u4F46\u672A\u58F0\u660E\u65F6\u4F1A\u88AB\u663E\u5F0F\u62D2\u7EDD\uFF08\u4E0D\u56DE\u843D\u5BBF\u4E3B\u3001\u4E5F\u4E0D\u6084\u6084\u6539\u6210 docker\uFF09\u3002\u7701\u7565 runtimeKey \u65F6\u65E0\u6548\u3002\u6CE8\u610F**\u7701\u7565 key \u65F6\u7684\u9ED8\u8BA4\u4F4D\u7F6E\u6709\u4F8B\u5916**\uFF1A\u5199\u578B\u6D3E\u53D1\u9ED8\u8BA4\u8FDB\u672C\u673A docker \u6C99\u76D2\uFF1B\u53EA\u8BFB\u6D3E\u53D1\uFF08readOnly=true\uFF09\u4ECD\u5728\u5BBF\u4E3B\u6267\u884C\uFF08\u5B83\u5199\u4E0D\u4E86\u6587\u4EF6\uFF0C\u8D77\u6C99\u76D2\u662F\u6D6A\u8D39\uFF09\u3002"
14001
+ description: "\u53EF\u9009\u3002\u4EC5\u5F53 runtimeKey='local' \u65F6\u9700\u8981\u663E\u5F0F\u58F0\u660E\uFF1A\u8868\u793A\u8C03\u7528\u65B9\u540C\u610F\u5B50 run \u76F4\u63A5\u5728**\u5BBF\u4E3B\u6587\u4EF6\u7CFB\u7EDF**\u4E0A\u8BFB\u5199\u4EE3\u7801\uFF08\u65E0\u9694\u79BB\uFF09\u3002runtimeKey='local' \u4F46\u672A\u58F0\u660E\u65F6\u4F1A\u88AB\u663E\u5F0F\u62D2\u7EDD\uFF08\u4E0D\u56DE\u843D\u5BBF\u4E3B\u3001\u4E5F\u4E0D\u6084\u6084\u6539\u6210 docker\uFF09\u3002\u7701\u7565 runtimeKey \u65F6\u65E0\u6548\u3002\u6CE8\u610F**\u7701\u7565 key \u65F6\u7684\u9ED8\u8BA4\u4F4D\u7F6E\u6709\u4F8B\u5916**\uFF1A\u5199\u578B\u6D3E\u53D1\u9ED8\u8BA4\u8FDB\u672C\u673A docker \u6C99\u76D2\uFF1B\u53EA\u8BFB\u6D3E\u53D1\uFF08readOnly=true\uFF09\u4ECD\u5728\u5BBF\u4E3B\u6267\u884C\uFF08\u5B83\u79FB\u9664\u4E86\u4E13\u7528\u5199\u5DE5\u5177\uFF0C\u8D77\u6C99\u76D2\u662F\u6D6A\u8D39\uFF1B\u4F46 shell \u4ECD\u53EF\u5199\u6587\u4EF6\uFF0C\u8FD9\u4E0D\u662F\u6587\u4EF6\u7CFB\u7EDF\u53EA\u8BFB\u9694\u79BB\uFF09\u3002"
14161
14002
  }
14162
14003
  },
14163
14004
  required: ["task", "title"]
@@ -18571,7 +18412,7 @@ async function updateDocFunc(args, thunkApi) {
18571
18412
  updated_at: (/* @__PURE__ */ new Date()).toISOString()
18572
18413
  };
18573
18414
  await dispatch(write({ data: updatedPageData, customKey: id })).unwrap();
18574
- const { getDocState, applyExternalDocUpdate } = await import("./docStore-LVMUSECS.js");
18415
+ const { getDocState, applyExternalDocUpdate } = await import("./docStore-6MHLMMWO.js");
18575
18416
  if (getDocState().pageKey === id) {
18576
18417
  applyExternalDocUpdate({
18577
18418
  slateData: finalSlateData,
@@ -18596,7 +18437,7 @@ async function updateDocFunc(args, thunkApi) {
18596
18437
  // packages/ai/tools/updateUserPreferenceProfileTool.ts
18597
18438
  async function dispatchSetSettings(thunkApi, changes) {
18598
18439
  const injectedSetSettings = thunkApi?.extra?.setSettings;
18599
- const setSettings = typeof injectedSetSettings === "function" ? injectedSetSettings : (await import("./settingThunks-7VCWB6P7.js")).setSettings;
18440
+ const setSettings = typeof injectedSetSettings === "function" ? injectedSetSettings : (await import("./settingThunks-XQJZVA4D.js")).setSettings;
18600
18441
  await thunkApi.dispatch(setSettings(changes)).unwrap();
18601
18442
  }
18602
18443
  var updateUserPreferenceProfileFunctionSchema = {
@@ -18965,7 +18806,7 @@ async function runZiweiChart(input) {
18965
18806
  const gender = normalizeGender(input.gender);
18966
18807
  const fixLeap = input.fixLeap !== false;
18967
18808
  const isLeapMonth = input.isLeapMonth === true;
18968
- const { astro } = await import("./lib-4YTWAGY7.js");
18809
+ const { astro } = await import("./lib-5KKIBFIT.js");
18969
18810
  const rawChart = calendarType === "lunar" ? astro.byLunar(dateStr, timeIndex, gender, isLeapMonth, fixLeap, language) : astro.bySolar(dateStr, timeIndex, gender, fixLeap, language);
18970
18811
  const palaces = rawChart.palaces.map((palace) => ({
18971
18812
  index: palace.index,