nolo-cli 0.157.0-alpha.1 → 0.157.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 (164) hide show
  1. package/{_executeModel-5WS2PA62.js → _executeModel-ZIQHOREX.js} +55 -55
  2. package/{accountResolver-7RYB4D2P.js → accountResolver-55EDKEIK.js} +1 -1
  3. package/{action-ZJYUBXFC.js → action-GPPJC5TI.js} +5 -5
  4. package/{addContentAction-TVHB4526.js → addContentAction-XJQEJ4XW.js} +8 -8
  5. package/{addDialogAgentAction-FDPBU6K6.js → addDialogAgentAction-5WZX5CAY.js} +7 -7
  6. package/{agentDeleteCommand-Q6M4F3U6.js → agentDeleteCommand-LQSOJEXY.js} +75 -76
  7. package/{agentEmailCommands-FNH6FEHS.js → agentEmailCommands-HTPKXONW.js} +78 -79
  8. package/{agentListCommands-JUNMFS6E.js → agentListCommands-GOCGOQUB.js} +36 -36
  9. package/{agentMachineCommands-VNLDEKNT.js → agentMachineCommands-T7DAZG77.js} +35 -32
  10. package/{agentProviderCommands-X2HQE6HY.js → agentProviderCommands-CXBHNONN.js} +5 -5
  11. package/{agentPullCommand-FA43RBRU.js → agentPullCommand-GXXEDOSA.js} +4 -4
  12. package/{agentRecordCommands-47XXRVPI.js → agentRecordCommands-HSW3RJ4H.js} +72 -73
  13. package/{agentRunCommand-QEXFJUXQ.js → agentRunCommand-TIRJ57DK.js} +75 -75
  14. package/{agentRunControl-2C5GM3BW.js → agentRunControl-QWFFIAQY.js} +9 -7
  15. package/{agentRuntimeLocal-O5GDAFTN.js → agentRuntimeLocal-J6I63NZC.js} +21 -19
  16. package/{agentSlice-E3XS5FTQ.js → agentSlice-JNM3HF3V.js} +8 -8
  17. package/{appDeleteCommands-C2J5RQ3I.js → appDeleteCommands-KKLAK2UR.js} +31 -29
  18. package/{appDeployCommands-3YRK7PSU.js → appDeployCommands-PXWK4FAX.js} +31 -29
  19. package/{appDeployStatusCommands-FPAX7MOK.js → appDeployStatusCommands-3NGWDZTX.js} +31 -29
  20. package/{appGetCommands-XAC2V766.js → appGetCommands-APWYPEO3.js} +31 -29
  21. package/{appListCommands-ZJL2W5O7.js → appListCommands-OP7IRALO.js} +31 -29
  22. package/{authCommand-J3XILHWW.js → authCommand-3Z52KJID.js} +22 -302
  23. package/{authCommands-77CHYBGF.js → authCommands-QOCKVPX3.js} +5 -5
  24. package/{builtinSkillRegistry-A6VSPJEJ.js → builtinSkillRegistry-LJV7FHNI.js} +4 -4
  25. package/{chromeCommands-OBBNJCLS.js → chromeCommands-IY4NVSXZ.js} +17 -10
  26. package/{chunk-SW4S4XYB.js → chunk-2AB2HA4M.js} +84 -34
  27. package/{chunk-C5VPAHIU.js → chunk-32ZKZET7.js} +1 -1
  28. package/{chunk-XPWGOTBQ.js → chunk-3L2WKC3W.js} +1 -8
  29. package/{chunk-3XZKV7QQ.js → chunk-3L5MSPWX.js} +1 -1
  30. package/{chunk-QLQ573SU.js → chunk-3M52COK5.js} +120 -0
  31. package/{chunk-VSOWPETY.js → chunk-4226O6F7.js} +10 -10
  32. package/{chunk-Z6KQDSZW.js → chunk-43OFVLWJ.js} +6 -6
  33. package/{chunk-TJ2VPCBE.js → chunk-4JCAW7TO.js} +2 -2
  34. package/{chunk-6TF64IF2.js → chunk-4L4K6YR7.js} +16 -2
  35. package/{chunk-PEO24UB5.js → chunk-5E5VB7PS.js} +324 -57
  36. package/{chunk-ZD2BLOY6.js → chunk-5EDQTOUR.js} +7 -7
  37. package/{chunk-HKT6QXP3.js → chunk-5IKRTRRR.js} +5 -5
  38. package/{chunk-P5QACQDK.js → chunk-62TBKWTV.js} +1 -1
  39. package/{chunk-TRW43TSC.js → chunk-6EQD4AQL.js} +41 -1
  40. package/{chunk-YLMMECCH.js → chunk-6XIE5ZGI.js} +1 -1
  41. package/{chunk-OH2M7WEU.js → chunk-6Y3ETA2Y.js} +3 -3
  42. package/{chunk-7A4LJCDR.js → chunk-B3ZIFOFI.js} +5 -5
  43. package/{chunk-WZ6OU4NX.js → chunk-BAWAKW7X.js} +2 -2
  44. package/{chunk-UUPR3TD7.js → chunk-BL4HFN6L.js} +2 -4
  45. package/{chunk-2GGXHQIW.js → chunk-BLVSFYQ3.js} +4 -2
  46. package/{chunk-HP6O6LTV.js → chunk-CDLP56BS.js} +9 -9
  47. package/{chunk-UTIMX333.js → chunk-DJ2BOPJY.js} +1 -1
  48. package/{chunk-36OMEXXR.js → chunk-DLV3H464.js} +8 -8
  49. package/{chunk-CE7PIHQD.js → chunk-ESMZW5PE.js} +3 -3
  50. package/{chunk-PSJWPSKS.js → chunk-EWO77ZGF.js} +9 -43
  51. package/{chunk-ZWG3C7VI.js → chunk-F3SOW2EU.js} +81 -1
  52. package/{chunk-FY4SDK2E.js → chunk-FDLDMJTM.js} +1 -1
  53. package/{chunk-KOB75UNU.js → chunk-FHG46N5C.js} +53 -4
  54. package/{chunk-7KYVUFDG.js → chunk-G3VYRPTV.js} +5 -267
  55. package/{chunk-DW7MGLMG.js → chunk-GGUTTH6C.js} +35 -207
  56. package/{chunk-6MJNEXUU.js → chunk-HGDKT2D6.js} +4 -0
  57. package/{chunk-B2EGWZJG.js → chunk-I7S63QUU.js} +1 -1
  58. package/{chunk-ROPSATAB.js → chunk-IF7V3CBU.js} +1 -1
  59. package/chunk-IKOKYBYJ.js +2685 -0
  60. package/{chunk-T6CBQ6BN.js → chunk-INFHX73M.js} +1 -1
  61. package/{chunk-YBNHPX4S.js → chunk-IW64YHXL.js} +155 -31
  62. package/{chunk-K43ZF2C3.js → chunk-JPPQ3GUO.js} +1 -1
  63. package/{chunk-TZTWMGE3.js → chunk-JWEXJ573.js} +3 -3
  64. package/{chunk-RUNKPFM5.js → chunk-K6Y5T4GE.js} +12 -8
  65. package/{chunk-MVJVF4ED.js → chunk-KESKU5BG.js} +18 -17
  66. package/{chunk-I2ZMGXXF.js → chunk-KFHREHUQ.js} +1 -1
  67. package/{chunk-3C2QLERX.js → chunk-KMDDG73K.js} +1 -1
  68. package/{chunk-5MM7NNO6.js → chunk-KSTEXKL6.js} +78 -39
  69. package/{chunk-EM3YOZJ4.js → chunk-L2JMH4I5.js} +3 -3
  70. package/{chunk-MM3662RS.js → chunk-LPO6AMQU.js} +780 -64
  71. package/{chunk-D4OWHT5Y.js → chunk-MAYW6V3E.js} +2 -2
  72. package/{chunk-IPAW7XLD.js → chunk-MFVOJ6KF.js} +2 -2
  73. package/{chunk-FDT27L7S.js → chunk-MLEANT7D.js} +19 -17
  74. package/{chunk-7GC3EKUG.js → chunk-MMSQTZCJ.js} +3 -3
  75. package/{chunk-XFKZ3MCV.js → chunk-MR3ITQEV.js} +344 -88
  76. package/{chunk-CBHGZRCE.js → chunk-MYOH447Z.js} +1 -1
  77. package/{chunk-6MPAEODB.js → chunk-NHEWV5FD.js} +17 -3
  78. package/{chunk-ZEHTARJA.js → chunk-NLFTBC6S.js} +321 -150
  79. package/{chunk-SKPPKHD3.js → chunk-OLUKIUX6.js} +2 -2
  80. package/{chunk-SUKSWFLP.js → chunk-PIG2IUVZ.js} +1 -1
  81. package/{chunk-SEJ5OS6F.js → chunk-PXYBUFDB.js} +4 -0
  82. package/{chunk-2MTE2PEH.js → chunk-QA2C5NKI.js} +5 -739
  83. package/{chunk-L6EQV5OC.js → chunk-QXZH5UDF.js} +3 -3
  84. package/{chunk-TNIX77YM.js → chunk-R5GO3YZP.js} +34 -1
  85. package/{chunk-X5SUT4CN.js → chunk-R7GCGOGZ.js} +6 -6
  86. package/{chunk-4Z245KOA.js → chunk-SH3XD4E2.js} +8 -4
  87. package/{chunk-JGRPBIZZ.js → chunk-SQX235S2.js} +1 -1
  88. package/chunk-TT644UJD.js +188 -0
  89. package/{chunk-IYBIRCQV.js → chunk-U34KT53V.js} +29 -11
  90. package/{chunk-ANJTRG52.js → chunk-ULQAD7ZY.js} +18 -43
  91. package/{chunk-QDA4Y5O6.js → chunk-UVYSBQ2M.js} +21 -17
  92. package/{chunk-I2RMFLLH.js → chunk-V7PCFWX3.js} +1 -1
  93. package/{chunk-HXHSTRGH.js → chunk-VYNMQ6HW.js} +0 -27
  94. package/{chunk-G47IPDOK.js → chunk-W7FGZRLK.js} +1 -1
  95. package/{chunk-7BSQK2UC.js → chunk-WRCZXJ4N.js} +2 -2
  96. package/{chunk-KX6LPG7W.js → chunk-WYJTNSVL.js} +9 -9
  97. package/{chunk-H4KACZMG.js → chunk-XZIW3Q5B.js} +271 -138
  98. package/chunk-Y5GCAMGP.js +9 -0
  99. package/{chunk-JZX2XLKC.js → chunk-YCRROBDY.js} +1 -1
  100. package/{chunk-FPWT3RH2.js → chunk-YN5DT4JS.js} +22 -22
  101. package/{chunk-SCJD2PNK.js → chunk-YPG7TUQD.js} +3 -3
  102. package/{chunk-EJU23ST5.js → chunk-ZKVS36H3.js} +5069 -3730
  103. package/{chunk-YANF2RR4.js → chunk-ZPKUJROL.js} +1 -1
  104. package/{chunk-TYND6RDQ.js → chunk-ZZDVBZOP.js} +74 -3
  105. package/{commandRegistry-OUBQIF62.js → commandRegistry-DR2RPWK6.js} +88 -96
  106. package/{contentThunks-B3FRQGP7.js → contentThunks-CSJDJDEJ.js} +21 -21
  107. package/{createAgentAutomationAction-T2YFJ6MY.js → createAgentAutomationAction-ISEUEQSY.js} +21 -21
  108. package/{createDialogAction-2NFGFBXW.js → createDialogAction-HUCFOZY3.js} +25 -25
  109. package/{createPageAction-LDAVZDN7.js → createPageAction-DT5CYXCL.js} +24 -25
  110. package/{dbSlice-5QGKMQLO.js → dbSlice-6PVPY44C.js} +7 -7
  111. package/{deleteFile-EW6QNRRT.js → deleteFile-YM6NDPAR.js} +5 -5
  112. package/{dialogCommands-ZLBEAQHE.js → dialogCommands-3W6AIUXT.js} +35 -32
  113. package/{dialogSlice-64S3J6CP.js → dialogSlice-WJEEPG4W.js} +20 -20
  114. package/{dist-NJC2W7I4.js → dist-Q2JSMAKA.js} +7 -361
  115. package/{docCreateCommands-XOG5BBFQ.js → docCreateCommands-KQHQNLRX.js} +32 -30
  116. package/{docDeleteCommands-NCW3BBRX.js → docDeleteCommands-O3DWFX2W.js} +33 -31
  117. package/{docReadCommands-OT7X44Y3.js → docReadCommands-2U2BUONC.js} +32 -30
  118. package/{docStore-NIP7OO4I.js → docStore-7JPYT25V.js} +8 -8
  119. package/{docUpdateCommands-JW7OWW2J.js → docUpdateCommands-MF3C52XI.js} +32 -30
  120. package/{getPricing-TX35D7PI.js → getPricing-XQ3N3RBP.js} +2 -2
  121. package/{handleSendMessageAction-TOKA7ED7.js → handleSendMessageAction-BV5FMID4.js} +43 -39
  122. package/index.js +8 -8
  123. package/{localRuntimeAdapter-EQM6LFYC.js → localRuntimeAdapter-6FBEJJ4D.js} +70 -69
  124. package/{localRuntimeAuthority-JDAD7CB6.js → localRuntimeAuthority-BPN5OAQG.js} +2 -2
  125. package/{localRuntimeDb-CVC62PM5.js → localRuntimeDb-QIVAXMUL.js} +1 -1
  126. package/{machineCommands-WJ7FZ67T.js → machineCommands-WCAFDI5N.js} +80 -79
  127. package/{machineWsRunDispatch-BQT4DEA2.js → machineWsRunDispatch-ZF6BBQ3X.js} +70 -71
  128. package/{memberThunks-KRV5YXOB.js → memberThunks-AZINUM4S.js} +10 -10
  129. package/package.json +6 -2
  130. package/{profileConfig-ZGOFORWV.js → profileConfig-KN3N2BLF.js} +7 -1
  131. package/{providerPresetApply-CRZFMQD5.js → providerPresetApply-PKUOHQJT.js} +5 -5
  132. package/{providerRegistry-7IS43D3X.js → providerRegistry-HNQLIFN2.js} +5 -5
  133. package/{read-5KAZHHDM.js → read-7JPIWRBQ.js} +5 -5
  134. package/{readDocTool-5QO34OSX.js → readDocTool-AAQTB2Y3.js} +1 -1
  135. package/{readlineWorkspace-JHJSU5DS.js → readlineWorkspace-I5MHMEUE.js} +375 -200
  136. package/{removeDialogAgentAction-6X63HMI3.js → removeDialogAgentAction-RMVRILLK.js} +9 -9
  137. package/{runAgentClientLoop-5QIGEALK.js → runAgentClientLoop-TSNSRQEP.js} +59 -54
  138. package/{runtimeDoctorCommands-56NWKNON.js → runtimeDoctorCommands-MMCP4B4U.js} +12 -12
  139. package/{secretCommands-ZXZRLR3R.js → secretCommands-DNY56NSU.js} +11 -1
  140. package/{setDialogExtraReferencesAction-4MAYKKYW.js → setDialogExtraReferencesAction-L3V7JTMG.js} +8 -8
  141. package/{setPrimaryDialogAgentAction-EGBAMREH.js → setPrimaryDialogAgentAction-X52JQGTJ.js} +9 -9
  142. package/settingThunks-N6XFWPOU.js +923 -0
  143. package/{spaceCommands-ZWDPTURU.js → spaceCommands-NDPGHDMD.js} +29 -27
  144. package/{streamAgentChatTurn-456DWXNY.js → streamAgentChatTurn-RJLDV4WZ.js} +154 -95
  145. package/{switchDialogAgentAction-YBKTD6DO.js → switchDialogAgentAction-ZJ5CGU7J.js} +7 -7
  146. package/{tableCommands-U3QDY4L6.js → tableCommands-IVC5S7Y3.js} +11 -11
  147. package/{toolApiClient-7WSJJJBV.js → toolApiClient-HGNO53TC.js} +2 -2
  148. package/{tools-IWNXKK4Y.js → tools-X6QNIYFJ.js} +43 -44
  149. package/{tuiSummaryLlmCaller-KLK6K3Q3.js → tuiSummaryLlmCaller-FESHBDTT.js} +7 -7
  150. package/{updateCommands-NQXAGFM7.js → updateCommands-FJHGWD3Q.js} +5 -3
  151. package/{updateDialogTitleAction-SX53FZWO.js → updateDialogTitleAction-6LURCTMG.js} +21 -21
  152. package/{workloadLifecycle-36DXRZKU.js → workloadLifecycle-6O6PMISX.js} +2 -2
  153. package/chunk-IA7TRNNR.js +0 -11
  154. package/chunk-UKZX3NHN.js +0 -48
  155. package/chunk-VAZHH6FO.js +0 -7012
  156. package/chunk-W4S6OTSC.js +0 -35
  157. package/clipboardy-GCO3GT3I.js +0 -11793
  158. package/settingThunks-FTDRZNSJ.js +0 -1371
  159. package/{agentGrantCommands-HOJ3JBBQ.js → agentGrantCommands-5DPHYEKP.js} +3 -3
  160. package/{chromeOpsCommands-3Z34RKSE.js → chromeOpsCommands-GZVVK7HU.js} +4 -4
  161. package/{chunk-XETG4RIX.js → chunk-AETZ7AD6.js} +4 -4
  162. package/{chunk-2IXDJNZI.js → chunk-GAGGEA7D.js} +3 -3
  163. package/{memoryCommands-CUNBFRVS.js → memoryCommands-ZS3VQJAL.js} +3 -3
  164. package/{offlineMarxistsAgentCommand-2QTHJCHV.js → offlineMarxistsAgentCommand-3GLX4QQY.js} +3 -3
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  assembleAgentDiscoveryResult,
3
3
  resolveDiscoveryScope
4
- } from "./chunk-KX6LPG7W.js";
4
+ } from "./chunk-WYJTNSVL.js";
5
5
  import {
6
6
  fetchWithTransientRetry
7
- } from "./chunk-I2ZMGXXF.js";
7
+ } from "./chunk-KFHREHUQ.js";
8
8
  import {
9
9
  getUserDataItemTimestamp,
10
10
  mergeAndDedupUserData
@@ -20,7 +20,7 @@ import {
20
20
  toolRunUpdated,
21
21
  uiCardFallback,
22
22
  waitForAbortableDelay
23
- } from "./chunk-RUNKPFM5.js";
23
+ } from "./chunk-K6Y5T4GE.js";
24
24
  import {
25
25
  isGatewayHttpStatus
26
26
  } from "./chunk-NF64D32W.js";
@@ -30,11 +30,11 @@ import {
30
30
  isDrainExhaustedResponse,
31
31
  normalizeNonNegativeMs,
32
32
  parseRetryAfterHeaderMs
33
- } from "./chunk-XPWGOTBQ.js";
33
+ } from "./chunk-3L2WKC3W.js";
34
34
  import {
35
35
  AGENT_UPDATE_FIELD_NAMES,
36
36
  normalizeAgentUpdateFieldList
37
- } from "./chunk-HXHSTRGH.js";
37
+ } from "./chunk-VYNMQ6HW.js";
38
38
  import {
39
39
  ToolApiError,
40
40
  buildToolRequestHeaders,
@@ -42,17 +42,17 @@ import {
42
42
  getRequestConfig,
43
43
  getToolBaseUrl,
44
44
  getToolRequestContext
45
- } from "./chunk-CBHGZRCE.js";
45
+ } from "./chunk-MYOH447Z.js";
46
46
  import {
47
47
  readDocFunc,
48
48
  readDocFunctionSchema,
49
49
  readPageFunc,
50
50
  readPageFunctionSchema,
51
51
  resolvePageReadMarkdown
52
- } from "./chunk-3XZKV7QQ.js";
52
+ } from "./chunk-3L5MSPWX.js";
53
53
  import {
54
54
  markdownToSlate
55
- } from "./chunk-5MM7NNO6.js";
55
+ } from "./chunk-KSTEXKL6.js";
56
56
  import {
57
57
  extractMentionsFromSlate
58
58
  } from "./chunk-AGIM7IMJ.js";
@@ -64,7 +64,7 @@ import {
64
64
  } from "./chunk-VF4K2QE6.js";
65
65
  import {
66
66
  createDocState
67
- } from "./chunk-OH2M7WEU.js";
67
+ } from "./chunk-6Y3ETA2Y.js";
68
68
  import {
69
69
  addMemberSpace,
70
70
  fetchAuthoritativeRemoteSpace,
@@ -76,16 +76,16 @@ import {
76
76
  setMembershipRejected,
77
77
  setSpaceInitialized,
78
78
  updateMemberSpaceName
79
- } from "./chunk-WZ6OU4NX.js";
79
+ } from "./chunk-BAWAKW7X.js";
80
80
  import {
81
81
  createDialogAction
82
- } from "./chunk-7A4LJCDR.js";
82
+ } from "./chunk-B3ZIFOFI.js";
83
83
  import {
84
84
  setDialogExtraReferencesAction
85
- } from "./chunk-ROPSATAB.js";
85
+ } from "./chunk-IF7V3CBU.js";
86
86
  import {
87
87
  shareResourceAction
88
- } from "./chunk-SCJD2PNK.js";
88
+ } from "./chunk-YPG7TUQD.js";
89
89
  import {
90
90
  DEFAULT_COLLAPSED_CATEGORIES,
91
91
  addContentToSpace,
@@ -102,7 +102,7 @@ import {
102
102
  updateContentCategory,
103
103
  updateContentTitle,
104
104
  writeStoredCollapsedCategories
105
- } from "./chunk-VAZHH6FO.js";
105
+ } from "./chunk-IKOKYBYJ.js";
106
106
  import {
107
107
  buildDatabaseFileContentUrl,
108
108
  deleteDialog,
@@ -115,7 +115,7 @@ import {
115
115
  selectMsgById,
116
116
  uiAskChoiceFunc,
117
117
  uiAskChoiceFunctionSchema
118
- } from "./chunk-H4KACZMG.js";
118
+ } from "./chunk-XZIW3Q5B.js";
119
119
  import {
120
120
  buildMediaToolConfirmation,
121
121
  normalizeMediaConfirmExecutionRevision
@@ -126,7 +126,7 @@ import {
126
126
  runLlm,
127
127
  streamAgentChatTurn,
128
128
  updateAgent
129
- } from "./chunk-X5SUT4CN.js";
129
+ } from "./chunk-R7GCGOGZ.js";
130
130
  import {
131
131
  getCurrentSpaceId,
132
132
  getCurrentSpaceIdRaw,
@@ -148,12 +148,12 @@ import {
148
148
  import {
149
149
  selectCurrentServer,
150
150
  selectSyncServers
151
- } from "./chunk-C5VPAHIU.js";
151
+ } from "./chunk-32ZKZET7.js";
152
152
  import {
153
153
  UNCATEGORIZED_ID,
154
154
  addContentAction,
155
155
  checkSpaceMembership
156
- } from "./chunk-TZTWMGE3.js";
156
+ } from "./chunk-JWEXJ573.js";
157
157
  import {
158
158
  createSpaceKey,
159
159
  normalizeSpaceId
@@ -169,10 +169,10 @@ import {
169
169
  selectEntities,
170
170
  toTimestampMs,
171
171
  write
172
- } from "./chunk-HP6O6LTV.js";
172
+ } from "./chunk-CDLP56BS.js";
173
173
  import {
174
174
  readAction
175
- } from "./chunk-6MPAEODB.js";
175
+ } from "./chunk-NHEWV5FD.js";
176
176
  import {
177
177
  DEVICE_LOCAL_OWNER_ID,
178
178
  getRuntimeServerContext,
@@ -182,16 +182,16 @@ import {
182
182
  resolveEffectiveSpaceActorId,
183
183
  resolveRecordOwnerUserId,
184
184
  selectRuntimeSnapshot
185
- } from "./chunk-Z6KQDSZW.js";
185
+ } from "./chunk-43OFVLWJ.js";
186
186
  import {
187
187
  createAsyncThunk,
188
188
  noloWriteRequest
189
- } from "./chunk-7BSQK2UC.js";
189
+ } from "./chunk-WRCZXJ4N.js";
190
190
  import {
191
191
  selectIdentityToken,
192
192
  selectIdentityUserBalance,
193
193
  selectIdentityUserId
194
- } from "./chunk-SEJ5OS6F.js";
194
+ } from "./chunk-PXYBUFDB.js";
195
195
  import {
196
196
  buildTombstoneRecord,
197
197
  isTombstoneRecord
@@ -199,10 +199,10 @@ import {
199
199
  import {
200
200
  listBuiltinSkills,
201
201
  resolveBuiltinSkillByName
202
- } from "./chunk-4Z245KOA.js";
202
+ } from "./chunk-SH3XD4E2.js";
203
203
  import {
204
204
  CAPABILITY_PACKS
205
- } from "./chunk-JZX2XLKC.js";
205
+ } from "./chunk-YCRROBDY.js";
206
206
  import {
207
207
  buildSkillDocMarkdown,
208
208
  normalizeSkillModalities,
@@ -210,7 +210,7 @@ import {
210
210
  parseExternalSkillMarkdown,
211
211
  parseSkillDocProtocol,
212
212
  resolvePageSkillMetadata
213
- } from "./chunk-XETG4RIX.js";
213
+ } from "./chunk-AETZ7AD6.js";
214
214
  import {
215
215
  DEFAULT_READ_DIALOG_MAX_RESPONSE_CHARS,
216
216
  NOLO_WORKSPACE_TOOL_NAMES,
@@ -225,10 +225,11 @@ import {
225
225
  normalizeNoloExcludeDialogIds,
226
226
  normalizeNoloSpaceInput,
227
227
  redactAgentRecordForWorkspaceTool,
228
+ resolveDispatchedSubtaskBudget,
228
229
  resolveNoloDialogInput,
229
230
  resolveReadOnlyToolConstraints,
230
231
  verifyNoloDialogSubjectRefQuery
231
- } from "./chunk-QLQ573SU.js";
232
+ } from "./chunk-3M52COK5.js";
232
233
  import {
233
234
  clipCompactText
234
235
  } from "./chunk-5MMAK75Q.js";
@@ -281,9 +282,6 @@ import {
281
282
  asNonEmptyStringArray,
282
283
  asTrimmedNonEmptyStringArray
283
284
  } from "./chunk-I42VC5KR.js";
284
- import {
285
- asOptionalFiniteNumber
286
- } from "./chunk-WWC7I6TA.js";
287
285
  import {
288
286
  RUN_TITLE_MAX,
289
287
  TASK_PREVIEW_MAX,
@@ -298,11 +296,17 @@ import {
298
296
  normalizeRunTitle,
299
297
  resolveRunLabel
300
298
  } from "./chunk-PJNFNEJE.js";
299
+ import {
300
+ API_ENDPOINTS
301
+ } from "./chunk-LCBAMY2M.js";
302
+ import {
303
+ asOptionalFiniteNumber
304
+ } from "./chunk-WWC7I6TA.js";
301
305
  import {
302
306
  DEFAULT_MODEL,
303
307
  clampReasoningEffort,
304
308
  resolveModelReasoningCapabilityWithCache
305
- } from "./chunk-TRW43TSC.js";
309
+ } from "./chunk-6EQD4AQL.js";
306
310
  import {
307
311
  isRecord
308
312
  } from "./chunk-KUG52IAP.js";
@@ -312,9 +316,6 @@ import {
312
316
  import {
313
317
  toErrorMessage
314
318
  } from "./chunk-HNMXYYJR.js";
315
- import {
316
- API_ENDPOINTS
317
- } from "./chunk-LCBAMY2M.js";
318
319
  import {
319
320
  DEFAULT_LOCAL_API_ORIGIN
320
321
  } from "./chunk-4SN6J65J.js";
@@ -1264,7 +1265,7 @@ var buildPlatformFormDataFromArgs = async (args) => {
1264
1265
  const trimmedModel = toTrimmedString(model);
1265
1266
  const trimmedProvider = toTrimmedString(provider);
1266
1267
  const modelConfig = await findModelConfig(trimmedModel, trimmedProvider);
1267
- const { getModelPricing } = await import("./getPricing-TX35D7PI.js");
1268
+ const { getModelPricing } = await import("./getPricing-XQ3N3RBP.js");
1268
1269
  const normalizedTools = tools ?? [];
1269
1270
  const resolvedRuntimeToolPolicy = runtimeToolPolicy ?? (normalizedTools.includes("execShell") ? HOSTED_EXEC_RUNTIME_TOOL_POLICY : void 0);
1270
1271
  const formData = {
@@ -3881,7 +3882,7 @@ async function deleteDialogsFunc(args, thunkApi) {
3881
3882
  const deletedDialogIds = [];
3882
3883
  const deletedDialogKeys = [];
3883
3884
  const failures = [];
3884
- const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-64S3J6CP.js");
3885
+ const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-WJEEPG4W.js");
3885
3886
  for (const target of targets) {
3886
3887
  try {
3887
3888
  await thunkApi.dispatch(deleteDialog2(target.dbKey)).unwrap();
@@ -4197,7 +4198,7 @@ var readSkillDocFunctionSchema = {
4197
4198
  }
4198
4199
  };
4199
4200
  async function readSkillDocFunc(args, thunkApi) {
4200
- const { buildReadDocResult } = await import("./readDocTool-5QO34OSX.js");
4201
+ const { buildReadDocResult } = await import("./readDocTool-AAQTB2Y3.js");
4201
4202
  const id = args?.id ?? args?.doc ?? args?.docKey ?? args?.pageKey;
4202
4203
  if (typeof id !== "string" || !id.trim()) {
4203
4204
  throw new Error("readSkillDoc requires id or doc.");
@@ -4467,6 +4468,7 @@ var createInitialState = () => ({
4467
4468
  favoritedAtById: {},
4468
4469
  initialized: false,
4469
4470
  loading: false,
4471
+ snapshotComplete: false,
4470
4472
  error: null
4471
4473
  });
4472
4474
  var state = createInitialState();
@@ -4986,7 +4988,7 @@ var fetchSpaceAction = async (input, thunkAPI) => {
4986
4988
  const spaceKey = createSpaceKey.space(spaceId);
4987
4989
  const readSpace = async (dbKey) => {
4988
4990
  try {
4989
- const { read: read2, readAndWait: readAndWait2 } = await import("./dbSlice-5QGKMQLO.js");
4991
+ const { read: read2, readAndWait: readAndWait2 } = await import("./dbSlice-6PVPY44C.js");
4990
4992
  if (fresh) {
4991
4993
  return await dispatch(readAndWait2(dbKey)).unwrap();
4992
4994
  }
@@ -9297,7 +9299,7 @@ ${preview}`
9297
9299
  // packages/ai/tools/exaSearchTool.ts
9298
9300
  var exaSearchSchema = {
9299
9301
  name: "exa_search",
9300
- description: "\u4F7F\u7528 Exa (\u539F Metaphor) \u667A\u80FD\u641C\u7D22\u5F15\u64CE\u67E5\u627E\u4FE1\u606F\u3002\u8FD9\u662F\u83B7\u53D6\u9AD8\u8D28\u91CF\u3001\u6700\u65B0\u7F51\u7EDC\u4FE1\u606F\u7684\u6700\u4F73\u65B9\u5F0F\u3002",
9302
+ description: "\u4F7F\u7528 Exa \u667A\u80FD\u641C\u7D22\u5F15\u64CE\u67E5\u627E\u4FE1\u606F\u3002\u53EF\u9009\u5730\u6309\u68C0\u7D22\u610F\u56FE\u3001\u5185\u5BB9\u7C7B\u76EE\u3001\u65F6\u95F4\u8303\u56F4\u4E0E\u57DF\u540D\u505A\u6536\u7A84\u3002",
9301
9303
  parameters: {
9302
9304
  type: "object",
9303
9305
  properties: {
@@ -9307,49 +9309,160 @@ var exaSearchSchema = {
9307
9309
  },
9308
9310
  numResults: {
9309
9311
  type: "number",
9310
- description: "\u8FD4\u56DE\u7684\u7ED3\u679C\u6570\u91CF\uFF08\u9ED8\u8BA4\u4E3A 5\uFF09\u3002",
9311
- default: 5
9312
+ description: "\u8FD4\u56DE\u7684\u7ED3\u679C\u6570\u91CF\uFF1B\u4E0D\u586B\u5219\u6309\u670D\u52A1\u7AEF\u5B9A\u6863\u53D6\u503C\u3002"
9312
9313
  },
9313
- useAutoprompt: {
9314
- type: "boolean",
9315
- description: "\u662F\u5426\u8BA9 Exa \u81EA\u52A8\u4F18\u5316\u67E5\u8BE2\u8BCD\uFF08\u63A8\u8350 true\uFF09\u3002",
9316
- default: true
9314
+ intent: {
9315
+ type: "string",
9316
+ enum: ["quick", "research", "exhaustive"],
9317
+ description: "\u68C0\u7D22\u610F\u56FE\u6863\u4F4D\uFF1Aquick\uFF1D\u5FEB\u901F\u626B\u4E00\u773C\uFF08\u9ED8\u8BA4\u6863\uFF0C\u591F\u7528\u5373\u53EF\uFF09\uFF1Bresearch\uFF1D\u6DF1\u5165\u8C03\u7814\uFF0C\u9700\u8981\u66F4\u5B8C\u6574\u7684\u7ED3\u679C\u4E0E\u66F4\u957F\u7684\u6458\u8981\uFF1Bexhaustive\uFF1D\u7A77\u5C3D\u5F0F\u68C0\u7D22\uFF0C\u7ED3\u679C\u6700\u591A\u3001\u5F00\u9500\u4E5F\u6700\u5927\u3002\u7EDD\u5927\u591A\u6570\u60C5\u51B5\u8BF7\u7701\u7565\u672C\u9879\u2014\u2014\u7701\u7565\u5373\u7531\u670D\u52A1\u7AEF\u6309\u573A\u666F\u81EA\u52A8\u5B9A\u6863\uFF0C\u4E0D\u8981\u4E3A\u4E86\u586B\u5B83\u800C\u731C\u6D4B\u3002"
9317
9318
  },
9318
- type: {
9319
+ category: {
9319
9320
  type: "string",
9320
- enum: ["neural", "keyword"],
9321
- description: "\u641C\u7D22\u7C7B\u578B\uFF1A'neural' (\u8BED\u4E49\u641C\u7D22\uFF0C\u9ED8\u8BA4) \u6216 'keyword' (\u7CBE\u786E\u5339\u914D)\u3002",
9322
- default: "neural"
9321
+ description: "\u5185\u5BB9\u7C7B\u76EE\u7B5B\u9009\u3002\u5E38\u89C1\u53D6\u503C\uFF1Apublication\uFF08\u8BBA\u6587/\u51FA\u7248\u7269\uFF09\u3001company\uFF08\u516C\u53F8\u4FE1\u606F\uFF09\u3001people\uFF08\u4EBA\u7269\uFF09\u3001news\uFF08\u65B0\u95FB\u8D44\u8BAF\uFF09\u3002\u4E0D\u786E\u5B9A\u7C7B\u76EE\u5C31\u522B\u586B\uFF0C\u7559\u7A7A\u5373\u53EF\u3002"
9323
9322
  },
9324
- includeContent: {
9325
- type: "boolean",
9326
- description: "\u662F\u5426\u76F4\u63A5\u8FD4\u56DE\u7F51\u9875\u7684\u6587\u672C\u5185\u5BB9\uFF08RAG \u6A21\u5F0F\uFF09\u3002\u5982\u679C\u4E3A true\uFF0C\u4E0D\u4EC5\u8FD4\u56DE\u94FE\u63A5\uFF0C\u8FD8\u4F1A\u8FD4\u56DE\u5DF2\u6E05\u6D17\u7684\u6B63\u6587\u3002",
9327
- default: true
9323
+ timeRange: {
9324
+ type: "string",
9325
+ enum: ["day", "week", "month", "year"],
9326
+ description: "\u53EA\u4FDD\u7559\u8BE5\u65F6\u95F4\u8303\u56F4\u5185\u53D1\u5E03\u7684\u7ED3\u679C\uFF08day\uFF1D24 \u5C0F\u65F6\u5185\uFF0Cweek\uFF1D\u4E00\u5468\u5185\uFF0Cmonth\uFF1D\u4E00\u6708\u5185\uFF0Cyear\uFF1D\u4E00\u5E74\u5185\uFF09\u3002\u4E0D\u586B\u5219\u4E0D\u9650\u65F6\u95F4\u3002"
9327
+ },
9328
+ includeDomains: {
9329
+ type: "array",
9330
+ items: { type: "string" },
9331
+ description: '\u53EA\u4FDD\u7559\u8FD9\u4E9B\u57DF\u540D\u4E0B\u7684\u7ED3\u679C\uFF08\u4F8B\u5982 ["arxiv.org"]\uFF09\u3002\u4E0D\u586B\u5219\u4E0D\u9650\u3002'
9332
+ },
9333
+ excludeDomains: {
9334
+ type: "array",
9335
+ items: { type: "string" },
9336
+ description: '\u6392\u9664\u8FD9\u4E9B\u57DF\u540D\u4E0B\u7684\u7ED3\u679C\uFF08\u4F8B\u5982 ["pinterest.com"]\uFF09\u3002\u4E0D\u586B\u5219\u4E0D\u6392\u9664\u3002'
9328
9337
  }
9329
9338
  },
9330
9339
  required: ["query"]
9331
9340
  }
9332
9341
  };
9333
- var exaSearchFunc = async (input, thunkApi) => {
9334
- const { query, numResults = 5, useAutoprompt = true, type = "neural", includeContent = true } = input;
9335
- const data = await callToolApi(thunkApi, "/api/exa-search", {
9342
+ var EXA_SEARCH_TOOL_NAME = "exa_search";
9343
+ var NON_COMPLETED_TOOL_STATUS = /* @__PURE__ */ new Set(["running", "pending"]);
9344
+ var collectDialogMessages = (state2, dialogId) => {
9345
+ if (!dialogId) return [];
9346
+ const slice = state2?.message ?? state2?.messages;
9347
+ const dialogState = slice?.[dialogId];
9348
+ const msgs = dialogState?.msgs ?? dialogState;
9349
+ if (!msgs || typeof msgs !== "object") return [];
9350
+ const entities = msgs.entities ?? {};
9351
+ const ids = Array.isArray(msgs.ids) ? msgs.ids : Object.keys(entities);
9352
+ const out = [];
9353
+ for (const id of ids) {
9354
+ const m = entities[id];
9355
+ if (m && typeof m === "object") out.push(m);
9356
+ }
9357
+ return out;
9358
+ };
9359
+ var isExaSearchRow = (m) => {
9360
+ if (!m || typeof m !== "object") return false;
9361
+ const payload = m.toolPayload;
9362
+ const name = m.toolName ?? payload?.toolName;
9363
+ const status = payload?.status;
9364
+ if (typeof status === "string" && NON_COMPLETED_TOOL_STATUS.has(status)) {
9365
+ return false;
9366
+ }
9367
+ return name === EXA_SEARCH_TOOL_NAME;
9368
+ };
9369
+ var readResultCount = (m) => {
9370
+ const candidates = [
9371
+ m?.content,
9372
+ m?.toolPayload?.rawData,
9373
+ m?.toolPayload?.output,
9374
+ m?.toolPayload?.result
9375
+ ];
9376
+ for (const candidate of candidates) {
9377
+ let value = candidate;
9378
+ if (typeof value === "string") {
9379
+ try {
9380
+ value = JSON.parse(value);
9381
+ } catch {
9382
+ continue;
9383
+ }
9384
+ }
9385
+ if (!value || typeof value !== "object") continue;
9386
+ const inner = value.rawData ?? value;
9387
+ const results = inner?.results;
9388
+ if (Array.isArray(results)) return results.length;
9389
+ }
9390
+ return void 0;
9391
+ };
9392
+ var resolvePlanSignals = (thunkApi, context2) => {
9393
+ let priorSearches = context2?.priorSearches;
9394
+ let lastResultCount = context2?.lastResultCount;
9395
+ if (priorSearches === void 0) {
9396
+ let rows = [];
9397
+ try {
9398
+ rows = collectDialogMessages(
9399
+ thunkApi?.getState?.(),
9400
+ context2?.dialogId
9401
+ );
9402
+ } catch {
9403
+ rows = [];
9404
+ }
9405
+ if (rows.length > 0) {
9406
+ const history = rows.filter(
9407
+ (m) => isExaSearchRow(m) && (!context2?.parentMessageId || m.parentMessageId !== context2.parentMessageId)
9408
+ );
9409
+ priorSearches = history.length;
9410
+ const last = history[history.length - 1];
9411
+ if (last) lastResultCount = readResultCount(last);
9412
+ }
9413
+ }
9414
+ return {
9415
+ ...typeof priorSearches === "number" && Number.isFinite(priorSearches) ? { priorSearches: Math.max(0, Math.trunc(priorSearches)) } : {},
9416
+ ...typeof lastResultCount === "number" && Number.isFinite(lastResultCount) ? { lastResultCount: Math.max(0, Math.trunc(lastResultCount)) } : {},
9417
+ ...context2?.origin ? { origin: context2.origin } : {}
9418
+ };
9419
+ };
9420
+ var exaSearchFunc = async (input, thunkApi, context2) => {
9421
+ const {
9336
9422
  query,
9337
9423
  numResults,
9338
- useAutoprompt,
9339
- type,
9340
- contents: includeContent ? { text: true } : void 0
9341
- }, { withAuth: true });
9342
- const results = (data.results || []).map((item) => ({
9343
- title: item.title,
9344
- url: item.url,
9345
- publishedDate: item.publishedDate,
9346
- author: item.author,
9347
- content: item.text ? item.text.slice(0, 2500) : void 0
9348
- }));
9424
+ intent,
9425
+ category,
9426
+ timeRange,
9427
+ includeDomains,
9428
+ excludeDomains,
9429
+ includeContent
9430
+ } = input;
9431
+ const body = { query };
9432
+ if (numResults !== void 0) body.numResults = numResults;
9433
+ if (typeof intent === "string" && intent) body.intent = intent;
9434
+ if (typeof category === "string" && category) body.category = category;
9435
+ if (typeof timeRange === "string" && timeRange) body.timeRange = timeRange;
9436
+ if (Array.isArray(includeDomains) && includeDomains.length > 0) {
9437
+ body.includeDomains = includeDomains;
9438
+ }
9439
+ if (Array.isArray(excludeDomains) && excludeDomains.length > 0) {
9440
+ body.excludeDomains = excludeDomains;
9441
+ }
9442
+ if (typeof includeContent === "boolean") body.includeContent = includeContent;
9443
+ const signals = resolvePlanSignals(thunkApi, context2);
9444
+ if (signals.priorSearches !== void 0) body.priorSearches = signals.priorSearches;
9445
+ if (signals.lastResultCount !== void 0) body.lastResultCount = signals.lastResultCount;
9446
+ if (signals.origin) body.origin = signals.origin;
9447
+ const data = await callToolApi(thunkApi, "/api/exa-search", body, { withAuth: true });
9448
+ const results = (data.results || []).map((item) => {
9449
+ const raw = item.text ?? (Array.isArray(item.highlights) ? item.highlights.join("\n") : void 0);
9450
+ return {
9451
+ title: item.title,
9452
+ url: item.url,
9453
+ publishedDate: item.publishedDate,
9454
+ author: item.author,
9455
+ content: typeof raw === "string" ? raw.slice(0, 2500) : void 0
9456
+ };
9457
+ });
9458
+ const warnings = Array.isArray(data.warnings) ? data.warnings : void 0;
9349
9459
  return {
9350
9460
  summary: `Found ${results.length} results for "${query}"`,
9351
9461
  results,
9352
- queryUsed: data.autopromptString || query
9462
+ queryUsed: data.queryUsed || data.autopromptString || query,
9463
+ ...warnings && warnings.length > 0 ? { warnings } : {},
9464
+ // plan.ruleId 让调用方能判断服务端这次命中的定档规则是否合预期。
9465
+ ...data.plan && typeof data.plan === "object" ? { plan: data.plan } : {}
9353
9466
  };
9354
9467
  };
9355
9468
 
@@ -10744,7 +10857,7 @@ var cloudflareCrawlStatusFunctionSchema = {
10744
10857
  async function cloudflareCrawlStatusFunc(args, thunkApi) {
10745
10858
  const { jobId, limit, status, cursor } = args;
10746
10859
  if (!jobId) throw new Error("\u5FC5\u987B\u63D0\u4F9B jobId");
10747
- const { getToolRequestContext: getToolRequestContext2 } = await import("./toolApiClient-7WSJJJBV.js");
10860
+ const { getToolRequestContext: getToolRequestContext2 } = await import("./toolApiClient-HGNO53TC.js");
10748
10861
  const { baseUrl, token } = getToolRequestContext2(thunkApi);
10749
10862
  const params = new URLSearchParams();
10750
10863
  if (limit !== void 0) params.set("limit", String(limit));
@@ -11522,7 +11635,7 @@ var selectUserIdFromState = (state2) => {
11522
11635
  var selectCurrentServerFromState = (state2) => typeof state2?.settings?.currentServer === "string" ? state2.settings.currentServer : null;
11523
11636
  async function addImageContentToSpace(input) {
11524
11637
  const injectedAddContentAction = input.thunkApi?.extra?.addContentAction;
11525
- const addContentAction2 = typeof injectedAddContentAction === "function" ? injectedAddContentAction : (await import("./addContentAction-TVHB4526.js")).addContentAction;
11638
+ const addContentAction2 = typeof injectedAddContentAction === "function" ? injectedAddContentAction : (await import("./addContentAction-XJQEJ4XW.js")).addContentAction;
11526
11639
  await addContentAction2(
11527
11640
  {
11528
11641
  spaceId: input.spaceId,
@@ -13460,6 +13573,7 @@ var runAgentBackground = createAsyncThunk("agent/runBackground", async (args, {
13460
13573
  idempotencyKey,
13461
13574
  ...parentDialogId ? { parentDialogId } : {},
13462
13575
  ...runtimeKey ? { runtimeKey } : {},
13576
+ ...args.subtaskBudgetLimits ? { subtaskBudgetLimits: args.subtaskBudgetLimits } : {},
13463
13577
  ...ephemeral ? { ephemeral: true } : {},
13464
13578
  ...runKind ? { runKind } : {},
13465
13579
  runtimeContext: {
@@ -13773,10 +13887,19 @@ function resolveCliLocalSpawnDispatch(input) {
13773
13887
  ...input,
13774
13888
  host: "cli-local"
13775
13889
  });
13890
+ const plan = resolvePlanForRequestedKey(requested, input.allowHostWrites, input.readOnly);
13891
+ assertExplicitCwdHonoredByDispatchTarget({
13892
+ cwd: input.cwd,
13893
+ target: plan.target,
13894
+ ...plan.runtimeKey !== void 0 ? { runtimeKey: plan.runtimeKey } : {}
13895
+ });
13896
+ return plan;
13897
+ }
13898
+ function resolvePlanForRequestedKey(requested, allowHostWrites, readOnly) {
13776
13899
  if (requested) {
13777
13900
  const capability = resolveCliLocalRuntimeKeyCapability(requested);
13778
13901
  const target = capability.target ?? (isDockerRuntimeKey(requested) ? "docker-sandbox" : "host");
13779
- if (target === "host" && input.allowHostWrites !== true) {
13902
+ if (target === "host" && allowHostWrites !== true) {
13780
13903
  throw new Error(HOST_WRITES_CONFIRMATION_REQUIRED_MESSAGE);
13781
13904
  }
13782
13905
  return {
@@ -13785,7 +13908,7 @@ function resolveCliLocalSpawnDispatch(input) {
13785
13908
  reason: target === "host" ? "requested-host-writes" : "requested"
13786
13909
  };
13787
13910
  }
13788
- if (input.readOnly === true) {
13911
+ if (readOnly === true) {
13789
13912
  return { target: "host", reason: "read-only-host" };
13790
13913
  }
13791
13914
  return {
@@ -13794,6 +13917,36 @@ function resolveCliLocalSpawnDispatch(input) {
13794
13917
  reason: "default-docker-sandbox"
13795
13918
  };
13796
13919
  }
13920
+ function normalizeExplicitHostCwd(rawCwd) {
13921
+ if (typeof rawCwd !== "string") return void 0;
13922
+ const trimmed2 = rawCwd.trim();
13923
+ if (!trimmed2 || !isAbsoluteRunCwd(trimmed2)) return void 0;
13924
+ return trimmed2;
13925
+ }
13926
+ var SANDBOX_DOES_NOT_HONOR_CWD_REASON = `\u6C99\u76D2\u540E\u7AEF\u4E0D\u5151\u73B0\u5BBF\u4E3B cwd\uFF1A\u6C99\u76D2\u91CC\u7684\u4ED3\u5E93\u6302\u5728\u6C99\u76D2\u5185\u81EA\u5DF1\u7684\u8DEF\u5F84\uFF08\u5982 /home/bun/app\uFF09\uFF0C\u4F20\u8FDB\u53BB\u7684 cwd \u4F1A\u88AB\u9759\u9ED8\u66FF\u6362\uFF1B\u5B50 run \u6539\u7684\u6587\u4EF6\u968F\u6C99\u76D2\u505C\u6B62\u4E00\u8D77\u6D88\u5931\uFF0C\u800C\u8C03\u7528\u65B9\u62FF\u5230\u7684\u662F\u300C\u6210\u529F\u300D\uFF082026-10-23 \u4E8B\u6545\uFF09\u3002`;
13927
+ function describeDispatchTarget(target, runtimeKey) {
13928
+ if (target === "docker-sandbox") {
13929
+ return `\u672C\u673A docker \u6C99\u76D2\uFF08runtimeKey="${runtimeKey ?? "docker"}"\uFF09`;
13930
+ }
13931
+ if (target === "instabox") return `Instabox \u6C99\u76D2\uFF08runtimeKey="instabox"\uFF09`;
13932
+ return "\u5BBF\u4E3B\u6267\u884C";
13933
+ }
13934
+ function buildExplicitCwdSandboxConflictMessage(input) {
13935
+ const landing = describeDispatchTarget(input.target, input.runtimeKey);
13936
+ return `startAgentRun \u663E\u5F0F\u4F20\u4E86 cwd="${input.cwd}"\uFF0C\u4F46\u672C\u6B21\u51B3\u7B56\u7684\u843D\u70B9\u662F${landing}\uFF1A` + SANDBOX_DOES_NOT_HONOR_CWD_REASON + `\u5DF2\u62D2\u7EDD\u6D3E\u53D1\uFF0C\u672A\u542F\u52A8\u4EFB\u4F55 run\uFF08\u4E0D\u9759\u9ED8\u66FF\u6362\u8DEF\u5F84\u3001\u4E5F\u4E0D\u9759\u9ED8\u964D\u7EA7\u5230\u5BBF\u4E3B\uFF09\u3002\u8981\u8BA9\u5B83\u771F\u7684\u5728 ${input.cwd} \u4E0A\u52A8\u624B\uFF1A\u6539\u7528 runtimeKey: "local" + allowHostWrites: true\uFF08\u5BBF\u4E3B\u6267\u884C\uFF0Ccwd \u4F1A\u88AB\u5982\u5B9E\u5151\u73B0\uFF09\uFF1B\u6216\u53BB\u6389 cwd\uFF0C\u8BA9\u5B50 run \u5728\u6C99\u76D2\u81EA\u5DF1\u7684\u4ED3\u5E93\u91CC\u5DE5\u4F5C\u3002`;
13937
+ }
13938
+ function assertExplicitCwdHonoredByDispatchTarget(input) {
13939
+ const explicitCwd = normalizeExplicitHostCwd(input.cwd);
13940
+ if (!explicitCwd) return;
13941
+ if (input.target === "host") return;
13942
+ throw new Error(
13943
+ buildExplicitCwdSandboxConflictMessage({
13944
+ cwd: explicitCwd,
13945
+ target: input.target,
13946
+ ...input.runtimeKey !== void 0 ? { runtimeKey: input.runtimeKey } : {}
13947
+ })
13948
+ );
13949
+ }
13797
13950
  function assertCliLocalSpawnArgvInvariant(argv, context2 = "cli-local spawn argv") {
13798
13951
  const indexes = [];
13799
13952
  for (let i = 0; i < argv.length; i += 1) {
@@ -13966,6 +14119,14 @@ function buildStartAgentRunFunctionSchema(opts) {
13966
14119
  type: "boolean",
13967
14120
  description: '\u53EF\u9009\u3002\u4E3A true \u65F6\u672C\u6B21 run \u4F1A\u88AB\u8BB0\u5F55\u8FDB runtime todo\uFF08~/.nolo/todos.json\uFF09\u3002\u4F20\u4E86 batchId \u65F6\u9ED8\u8BA4\u5373\u8BB0\u5F55\uFF08\u6BCF\u6279\u5BF9\u5E94\u4E00\u9879 todo\uFF09\u3002todo \u72B6\u6001\u7531\u5173\u8054 run \u72B6\u6001 + review \u7ED3\u8BBA\u63A8\u5BFC\uFF0C\u7528 controlAgentRun(action:"todo") \u67E5\u8BE2\u3002'
13968
14121
  },
14122
+ maxToolCalls: {
14123
+ type: "number",
14124
+ description: "\u53EF\u9009\u3002\u8FD9\u6B21\u5B50\u4EFB\u52A1\u7684\u5DE5\u5177\u8C03\u7528\u6388\u6743\u989D\u5EA6\uFF08\u786C\u4E0A\u9650\uFF09\u3002\u4E0D\u4F20\u5219\u7528 runtime \u9ED8\u8BA4 200\u3002\u5230\u9650\u5373\u505C\u6B62\u542F\u52A8\u65B0\u7684\u5DE5\u5177\u4E0E\u6A21\u578B\u8C03\u7528\u3001\u6709\u754C\u6536\u5C3E\uFF0C\u8FD4\u56DE\u4E2D\u95F4\u7ED3\u8BBA\u5E76\u6807\u8BB0 budget-exhausted\uFF08\u4E0D\u7B97 provider \u9519\u8BEF\uFF09\u3002\u5E94\u6309\u4EFB\u52A1\u610F\u56FE\u6536\u7D27\uFF1A\u6539\u4E00\u4E2A\u5E38\u91CF\u7ED9 10~20\uFF0C\u5355\u6587\u4EF6\u4FEE\u590D\u7ED9 40\uFF0C\u5BA1\u67E5\u7ED9 60\u3002\u6CE8\u610F\u9ED8\u8BA4 200 \u53EA\u7528\u6765\u515C\u65E0\u754C\u635F\u5931\uFF0C\u4E0D\u662F\u5931\u63A7\u8BC6\u522B\u2014\u2014\u8DD1\u5230\u4E0A\u9650\u4E0D\u4EE3\u8868\u4EFB\u52A1\u6B63\u5E38\u3002"
14125
+ },
14126
+ maxWallClockMs: {
14127
+ type: "number",
14128
+ description: "\u53EF\u9009\u3002\u8FD9\u6B21\u5B50\u4EFB\u52A1\u7684\u5899\u949F\u786C\u4E0A\u9650\uFF08\u6BEB\u79D2\uFF09\u3002\u4E0D\u4F20\u5219\u7528 runtime \u9ED8\u8BA4 3600000\uFF0860 \u5206\u949F\uFF09\u3002\u4E0E maxToolCalls \u4EFB\u4E00\u5148\u5230\u5373\u7EC8\u6B62\u3002\u4F5C\u7528\u662F\u515C\u4F4F\u300C\u5355\u6B21\u8C03\u7528\u91CC\u5957\u5FAA\u73AF\u300D\u8FD9\u7C7B\u5DE5\u5177\u8BA1\u6570\u6D4B\u4E0D\u51FA\u8017\u65F6\u7684\u573A\u666F\uFF0C\u4F8B\u5982\u4E00\u6761 shell \u91CC `for i in 1 2 3` \u53CD\u590D\u8DD1\u540C\u4E00\u5957\u6D4B\u8BD5\uFF0C\u8C03\u7528\u6570\u53EA\u6709 1 \u4F46\u8017\u65F6\u5F88\u957F\u3002"
14129
+ },
13969
14130
  ...supportsWait ? {
13970
14131
  wait: {
13971
14132
  type: "boolean",
@@ -14054,6 +14215,10 @@ async function startAgentRunFunc(args, thunkApi, _context) {
14054
14215
  if (!verdict.allowed) throw new Error(verdict.message);
14055
14216
  }
14056
14217
  const content = buildDelegatedTaskContent(task, input);
14218
+ const dispatchedSubtaskBudget = resolveDispatchedSubtaskBudget({
14219
+ ...typeof args.maxToolCalls === "number" ? { maxToolCalls: args.maxToolCalls } : {},
14220
+ ...typeof args.maxWallClockMs === "number" ? { maxWallClockMs: args.maxWallClockMs } : {}
14221
+ });
14057
14222
  const payloadMetrics = calculateDelegatedPayloadMetrics(task, input, content);
14058
14223
  const activeDialogKey = getActiveDialogKey();
14059
14224
  const explicitParentDialogId = typeof args.parentDialogId === "string" && args.parentDialogId.trim() ? args.parentDialogId.includes("-") ? extractCustomId(args.parentDialogId) : args.parentDialogId.trim() : void 0;
@@ -14076,6 +14241,8 @@ async function startAgentRunFunc(args, thunkApi, _context) {
14076
14241
  runKind: "subtask",
14077
14242
  runTitle: title,
14078
14243
  runtimeKey: "local",
14244
+ // 已解析的硬预算(子 run 只消费,不再自行读 env)。
14245
+ subtaskBudgetLimits: dispatchedSubtaskBudget.limits,
14079
14246
  allowHostWrites: true,
14080
14247
  ...args.readOnly === true ? { readOnly: true } : {},
14081
14248
  ...parentDialogId ? { parentDialogId } : {}
@@ -14090,6 +14257,8 @@ async function startAgentRunFunc(args, thunkApi, _context) {
14090
14257
  waitForCompletion: wait === true,
14091
14258
  runKind: "subtask",
14092
14259
  runTitle: title,
14260
+ // 已解析的硬预算(子 run 只消费,不再自行读 env)。
14261
+ subtaskBudgetLimits: dispatchedSubtaskBudget.limits,
14093
14262
  ...args.readOnly === true ? { readOnly: true } : {},
14094
14263
  ...parentDialogId ? { parentDialogId } : {},
14095
14264
  ...runtimeKey ? { runtimeKey } : {}
@@ -14649,9 +14818,29 @@ function buildRuntimeCatalog(deps) {
14649
14818
  reason: dockerReadiness.reason ?? "not-configured",
14650
14819
  ...dockerReadiness.details ? { details: dockerReadiness.details } : {}
14651
14820
  };
14821
+ const isInstaboxBound = deps.isInstaboxBound ? Boolean(deps.isInstaboxBound(ctx.owner)) : false;
14822
+ const instaboxReady = Boolean(isInstaboxBound && deps.instaboxReadiness?.ready === true);
14823
+ const instaboxKey = key(ctx.scope, ctx.owner, "instabox");
14824
+ const instaboxSummary = instaboxReady ? {
14825
+ runtimeKey: instaboxKey,
14826
+ kind: "instabox",
14827
+ name: "Instabox",
14828
+ status: "ready",
14829
+ selectable: true,
14830
+ ...deps.instaboxReadiness?.quotaSnapshot ? { quotaSnapshot: deps.instaboxReadiness.quotaSnapshot } : {}
14831
+ } : {
14832
+ runtimeKey: instaboxKey,
14833
+ kind: "instabox",
14834
+ name: "Instabox",
14835
+ status: "unavailable",
14836
+ selectable: false,
14837
+ reason: isInstaboxBound ? deps.instaboxReadiness?.reason ?? "quota-unverifiable" : "not-configured",
14838
+ ...isInstaboxBound && !deps.instaboxReadiness ? { details: "Instabox credentials configured but readiness not probed" } : deps.instaboxReadiness?.details ? { details: deps.instaboxReadiness.details } : {}
14839
+ };
14652
14840
  runtimes.push(
14653
14841
  summary("local", "Local (client only)", false, "unsupported-local"),
14654
14842
  dockerSummary,
14843
+ instaboxSummary,
14655
14844
  summary("cloudflare", "Cloudflare", false, "not-configured")
14656
14845
  );
14657
14846
  return { runtimes, selectableCount: runtimes.filter((runtime) => runtime.selectable).length };
@@ -14678,6 +14867,7 @@ function formatRuntimeSummaryCard(runtimes) {
14678
14867
  return `Available Runtimes:
14679
14868
  ${lines.join("\n")}`;
14680
14869
  }
14870
+ var serverHooks;
14681
14871
  async function resolveTrustedDockerReadiness(thunkApi, trustedContext) {
14682
14872
  const source = trustedContext?.dockerReadinessSource ?? thunkApi?.extra?.dockerReadinessSource;
14683
14873
  if (source && typeof source.get === "function") {
@@ -14698,19 +14888,66 @@ async function resolveTrustedDockerReadiness(thunkApi, trustedContext) {
14698
14888
  dockerQuotaSnapshot: trustedContext?.dockerQuotaSnapshot ?? thunkApi?.extra?.dockerQuotaSnapshot
14699
14889
  });
14700
14890
  }
14701
- async function loadDockerBindingIsBoundFallback() {
14702
- try {
14703
- const { getDockerBindingAuthorizer } = await import("../../../server/handlers/agentRun/dockerWorkloadLifecycle");
14704
- return (caller) => Boolean(getDockerBindingAuthorizer().isBound?.(caller));
14705
- } catch {
14706
- return void 0;
14891
+ function loadDockerBindingIsBoundFallback() {
14892
+ if (serverHooks?.getDockerBindingAuthorizer) {
14893
+ try {
14894
+ const authorizer = serverHooks.getDockerBindingAuthorizer();
14895
+ return (caller) => Boolean(authorizer?.isBound?.(caller));
14896
+ } catch {
14897
+ return void 0;
14898
+ }
14899
+ }
14900
+ return void 0;
14901
+ }
14902
+ async function loadInstaboxBoundFallback(callerUserId) {
14903
+ if (!callerUserId) return false;
14904
+ if (serverHooks?.isInstaboxBound) {
14905
+ try {
14906
+ return await serverHooks.isInstaboxBound(callerUserId);
14907
+ } catch {
14908
+ return false;
14909
+ }
14707
14910
  }
14911
+ return false;
14912
+ }
14913
+ async function resolveTrustedInstaboxReadiness(callerUserId, thunkApi, trustedContext, isInstaboxBound) {
14914
+ const source = trustedContext?.instaboxReadinessSource ?? thunkApi?.extra?.instaboxReadinessSource;
14915
+ if (source && typeof source.get === "function" && callerUserId) {
14916
+ try {
14917
+ return await source.get(callerUserId);
14918
+ } catch {
14919
+ return {
14920
+ ready: false,
14921
+ reason: "quota-unverifiable",
14922
+ details: "Instabox readiness source probe failed"
14923
+ };
14924
+ }
14925
+ }
14926
+ const injected = trustedContext?.instaboxReadiness ?? thunkApi?.extra?.instaboxReadiness;
14927
+ if (injected) return injected;
14928
+ if (callerUserId && isInstaboxBound?.(callerUserId)) {
14929
+ if (serverHooks?.getInstaboxReadiness) {
14930
+ try {
14931
+ return await serverHooks.getInstaboxReadiness(callerUserId);
14932
+ } catch {
14933
+ return void 0;
14934
+ }
14935
+ }
14936
+ }
14937
+ return void 0;
14708
14938
  }
14709
14939
  function resolveTrustedCallerUserId(thunkApi, trustedContext) {
14710
- const bound = trustedContext?.callerUserId;
14711
- if (bound !== void 0 && bound !== null) return bound;
14712
- const fromStore = selectIdentityUserId(thunkApi?.getState?.());
14713
- if (fromStore) return fromStore;
14940
+ if (trustedContext && "callerUserId" in trustedContext) {
14941
+ const bound = trustedContext.callerUserId;
14942
+ return typeof bound === "string" ? bound : "";
14943
+ }
14944
+ if (typeof thunkApi?.getState === "function") {
14945
+ const state2 = thunkApi.getState();
14946
+ if (state2 != null) {
14947
+ const fromStore = selectIdentityUserId(state2);
14948
+ if (fromStore) return fromStore;
14949
+ }
14950
+ }
14714
14951
  const fromExtra = thunkApi?.extra?.userId;
14715
14952
  return typeof fromExtra === "string" ? fromExtra : void 0;
14716
14953
  }
@@ -14727,6 +14964,18 @@ async function listRuntimesToolFunc(_args, thunkApi, trustedContext) {
14727
14964
  const connectorSurface = trustedContext?.connectorSurface ?? "cli";
14728
14965
  const dockerReadiness = await resolveTrustedDockerReadiness(thunkApi, trustedContext);
14729
14966
  const isDockerBound = trustedContext?.isDockerBound ?? thunkApi?.extra?.isDockerBound ?? (trustedContext?.dockerSelectable === true ? () => true : void 0) ?? (trustedContext?.dockerReadinessSource ? () => true : void 0) ?? await loadDockerBindingIsBoundFallback();
14967
+ const explicitInstaboxBound = trustedContext?.isInstaboxBound ?? thunkApi?.extra?.isInstaboxBound;
14968
+ let isInstaboxBound = explicitInstaboxBound;
14969
+ if (!isInstaboxBound && callerUserId) {
14970
+ const bound = await loadInstaboxBoundFallback(callerUserId);
14971
+ isInstaboxBound = (caller) => caller === callerUserId ? bound : false;
14972
+ }
14973
+ const instaboxReadiness = await resolveTrustedInstaboxReadiness(
14974
+ callerUserId,
14975
+ thunkApi,
14976
+ trustedContext,
14977
+ isInstaboxBound
14978
+ );
14730
14979
  if (!callerUserId || !callerUserId.trim()) {
14731
14980
  return {
14732
14981
  rawData: {
@@ -14746,7 +14995,9 @@ async function listRuntimesToolFunc(_args, thunkApi, trustedContext) {
14746
14995
  machineRegistry,
14747
14996
  connectorConnections,
14748
14997
  dockerReadiness,
14749
- isDockerBound
14998
+ isDockerBound,
14999
+ isInstaboxBound,
15000
+ instaboxReadiness
14750
15001
  });
14751
15002
  return {
14752
15003
  rawData: {
@@ -17758,6 +18009,8 @@ function toAppSummary(record, fallbackServerOrigin) {
17758
18009
  }
17759
18010
 
17760
18011
  // packages/app/utils/myContentItems.ts
18012
+ var dialogSummaryStatus = (value) => value === null || typeof value === "string" && ["pending", "running", "done", "completed", "failed", "cancelled"].includes(value) ? value : void 0;
18013
+ var dialogSummaryUnreadAt = (value) => value === null || typeof value === "number" && Number.isFinite(value) && value > 0 ? value : void 0;
17761
18014
  var MY_CONTENT_USER_DATA_TYPES = [
17762
18015
  "app" /* APP */,
17763
18016
  "page" /* DOC */,
@@ -17837,9 +18090,12 @@ function buildMyContentItemsFromUserData(records, currentServer, spaceNameById,
17837
18090
  fileSize: typeof record.fileSize === "number" ? record.fileSize : void 0,
17838
18091
  originalName: typeof record.originalName === "string" && record.originalName.trim().length > 0 ? record.originalName : void 0,
17839
18092
  contentKey,
18093
+ ...record.type === "dialog" ? { status: dialogSummaryStatus(record.status), unreadAt: dialogSummaryUnreadAt(record.unreadAt) } : {},
17840
18094
  pinned: Boolean(record.pinned),
17841
18095
  createdAt: record.createdAt ?? record.created ?? 0,
17842
18096
  updatedAt: timestamp,
18097
+ ...record.deletedAt !== void 0 ? { deletedAt: record.deletedAt } : {},
18098
+ ...record.restoredAt !== void 0 ? { restoredAt: record.restoredAt } : {},
17843
18099
  spaceId,
17844
18100
  spaceName,
17845
18101
  serverOrigin: typeof record.serverOrigin === "string" && record.serverOrigin.trim().length > 0 ? record.serverOrigin : void 0,
@@ -18079,7 +18335,7 @@ var getMessageSortValue = (message) => {
18079
18335
  const id = normalizeDialogSearchText(message.id);
18080
18336
  return id ? id : normalizeDialogSearchText(message.dbKey);
18081
18337
  };
18082
- async function collectDialogMessages(db, dialogId) {
18338
+ async function collectDialogMessages2(db, dialogId) {
18083
18339
  if (!db?.iterator) return [];
18084
18340
  const { start, end } = dialogMessageRange(dialogId);
18085
18341
  let iterator = db.iterator({
@@ -18128,7 +18384,7 @@ async function fetchDialogMessagesFromServer(args) {
18128
18384
  }));
18129
18385
  }
18130
18386
  async function collectBestAvailableDialogMessages(db, dialogId, thunkApi, scanLimit, dialogKey) {
18131
- const localMessages = await collectDialogMessages(db, dialogId);
18387
+ const localMessages = await collectDialogMessages2(db, dialogId);
18132
18388
  const state2 = thunkApi?.getState?.();
18133
18389
  const runtime = state2 ? selectRuntimeSnapshot(state2) : null;
18134
18390
  const serverBases = Array.from(new Set([
@@ -18307,7 +18563,7 @@ async function updateDocFunc(args, thunkApi) {
18307
18563
  updated_at: (/* @__PURE__ */ new Date()).toISOString()
18308
18564
  };
18309
18565
  await dispatch(write({ data: updatedPageData, customKey: id })).unwrap();
18310
- const { getDocState, applyExternalDocUpdate } = await import("./docStore-NIP7OO4I.js");
18566
+ const { getDocState, applyExternalDocUpdate } = await import("./docStore-7JPYT25V.js");
18311
18567
  if (getDocState().pageKey === id) {
18312
18568
  applyExternalDocUpdate({
18313
18569
  slateData: finalSlateData,
@@ -18332,7 +18588,7 @@ async function updateDocFunc(args, thunkApi) {
18332
18588
  // packages/ai/tools/updateUserPreferenceProfileTool.ts
18333
18589
  async function dispatchSetSettings(thunkApi, changes) {
18334
18590
  const injectedSetSettings = thunkApi?.extra?.setSettings;
18335
- const setSettings = typeof injectedSetSettings === "function" ? injectedSetSettings : (await import("./settingThunks-FTDRZNSJ.js")).setSettings;
18591
+ const setSettings = typeof injectedSetSettings === "function" ? injectedSetSettings : (await import("./settingThunks-N6XFWPOU.js")).setSettings;
18336
18592
  await thunkApi.dispatch(setSettings(changes)).unwrap();
18337
18593
  }
18338
18594
  var updateUserPreferenceProfileFunctionSchema = {
@@ -20155,7 +20411,7 @@ var baseToolDefinitions = [
20155
20411
  executor: exaSearchFunc,
20156
20412
  description: {
20157
20413
  name: "exa_search",
20158
- description: "\u4F7F\u7528 Exa \u795E\u7ECF\u7F51\u7EDC\u641C\u7D22\u5F15\u64CE\u83B7\u53D6\u9AD8\u8D28\u91CF\u3001\u7ED3\u6784\u5316\u7684\u7F51\u7EDC\u4FE1\u606F\uFF08\u5305\u542B\u6B63\u6587\uFF09\u3002",
20414
+ description: "\u4F7F\u7528 Exa \u667A\u80FD\u641C\u7D22\u5F15\u64CE\u83B7\u53D6\u9AD8\u8D28\u91CF\u3001\u7ED3\u6784\u5316\u7684\u7F51\u7EDC\u4FE1\u606F\uFF1B\u53EF\u6309\u68C0\u7D22\u610F\u56FE\u3001\u5185\u5BB9\u7C7B\u76EE\u3001\u65F6\u95F4\u8303\u56F4\u4E0E\u57DF\u540D\u6536\u7A84\uFF0C\u9ED8\u8BA4\u7531\u670D\u52A1\u7AEF\u6309\u573A\u666F\u81EA\u52A8\u5B9A\u6863\u3002",
20159
20415
  category: "\u7F51\u7EDC\u4E0E\u667A\u80FD"
20160
20416
  },
20161
20417
  behavior: "data"