nolo-cli 0.54.0-alpha.2 → 0.61.0-alpha.2

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 (172) hide show
  1. package/README.md +3 -3
  2. package/{_executeModel-ANY4SIAS.js → _executeModel-CKT6RGTL.js} +58 -49
  3. package/{action-Q4W5JPI5.js → action-76JX3JX3.js} +9 -8
  4. package/{addContentAction-O25HFR37.js → addContentAction-V3NAZRTJ.js} +9 -7
  5. package/{addDialogAgentAction-GH7AUPPB.js → addDialogAgentAction-RZOAF46K.js} +11 -9
  6. package/{agentDeleteCommand-JWIKNWWI.js → agentDeleteCommand-VN7NPXQ4.js} +37 -32
  7. package/{agentEmailCommands-PL22BEU5.js → agentEmailCommands-F2TNAV4A.js} +73 -65
  8. package/{agentGrantCommands-2LEZDADN.js → agentGrantCommands-R3VQEZJR.js} +1 -1
  9. package/{agentListCommands-6NR7AQEK.js → agentListCommands-OSM2ANI3.js} +78 -39
  10. package/{agentMachineCommands-TASPU6OA.js → agentMachineCommands-MTPWYVRV.js} +38 -33
  11. package/{agentPullCommand-M552CYSI.js → agentPullCommand-N7L2CT7L.js} +2 -2
  12. package/agentRecordCommands-VWAWTVVC.js +122 -0
  13. package/agentRunCommand-PLZOBNVK.js +149 -0
  14. package/{agentRunControl-4GHHSXFZ.js → agentRunControl-WECMOO6O.js} +13 -6
  15. package/{agentRuntimeLocal-PCJJ56J2.js → agentRuntimeLocal-XCJLRWQE.js} +35 -28
  16. package/{agentSlice-KYLDUSNN.js → agentSlice-F6DOP4IW.js} +10 -9
  17. package/{appDeleteCommands-WLHMJAVT.js → appDeleteCommands-3BCFTRFJ.js} +37 -32
  18. package/{appDeployCommands-CKON7N2E.js → appDeployCommands-B4GMHCYA.js} +37 -32
  19. package/{appDeployStatusCommands-PXRLDASH.js → appDeployStatusCommands-4MN36WIG.js} +37 -32
  20. package/{appGetCommands-RAB5RM4M.js → appGetCommands-4GJIEUAX.js} +37 -32
  21. package/{appListCommands-GU57FB62.js → appListCommands-CHU53GSX.js} +37 -32
  22. package/{authCommand-QOPOEYEK.js → authCommand-WOTWLJNF.js} +38 -32
  23. package/{authCommands-SBQVTD6V.js → authCommands-ILTBI6JV.js} +8 -6
  24. package/{chatQueueReduxAdapter-5O2WLITN.js → chatQueueReduxAdapter-HNSQXNIR.js} +29 -24
  25. package/{chunk-WL3UOGYO.js → chunk-22BTGNSP.js} +151 -155
  26. package/{chunk-7CH6U3FL.js → chunk-2GRGFCF6.js} +2 -4
  27. package/{chunk-V4KZGLOI.js → chunk-2HPRMEEZ.js} +3059 -1079
  28. package/{chunk-UNZDCI3O.js → chunk-2KDR4CWE.js} +35 -4
  29. package/{chunk-VRZIH5JO.js → chunk-2PGGC63K.js} +1 -1
  30. package/{chunk-T27IEBNQ.js → chunk-2QDDKFG5.js} +74 -1
  31. package/{chunk-7K5VMB4Q.js → chunk-37QVS7BU.js} +21 -8
  32. package/{chunk-UITMHBVK.js → chunk-37XDGCY7.js} +1 -1
  33. package/chunk-3BLB7QKO.js +433 -0
  34. package/{chunk-NQ4N4IGO.js → chunk-3JQ2NRYU.js} +33 -10
  35. package/{chunk-UW4INMD2.js → chunk-3JWKQDA4.js} +2 -2
  36. package/{chunk-IKTHA3JH.js → chunk-3QGUVVX5.js} +2 -2
  37. package/{chunk-WHVQA7PJ.js → chunk-45YO6H7P.js} +97 -35
  38. package/chunk-4C4ST2YE.js +20015 -0
  39. package/{chunk-32I5RVMY.js → chunk-4NJEIGBQ.js} +5 -5
  40. package/{chunk-KUUTWU4I.js → chunk-5ZYA4JJ3.js} +90 -22
  41. package/chunk-6YTOJY35.js +352 -0
  42. package/{chunk-INXBNYCG.js → chunk-7A3RRUCQ.js} +155 -12
  43. package/{chunk-GV35EHNA.js → chunk-7O7KH4X5.js} +1262 -971
  44. package/{chunk-Y7LNKP32.js → chunk-7UF7CQ6B.js} +4 -6
  45. package/{chunk-2BWU4ORW.js → chunk-AQMVUA7N.js} +2 -1
  46. package/{chunk-LA4IDAK7.js → chunk-AVE2YR4F.js} +1056 -3591
  47. package/{chunk-TI5BCZCH.js → chunk-B7DXRX7F.js} +59 -121
  48. package/chunk-BFU6C242.js +66 -0
  49. package/{chunk-FA4SY4F5.js → chunk-BYEJ7K2Z.js} +1 -1
  50. package/chunk-BYXBJQAS.js +0 -0
  51. package/{chunk-IA3A5373.js → chunk-C3FZR5EC.js} +1 -1
  52. package/{chunk-IWUMSAQF.js → chunk-CJCJF5XB.js} +26 -3
  53. package/{chunk-PAHILFNT.js → chunk-CP7VIDZ7.js} +4 -4
  54. package/{chunk-OYNDYVSE.js → chunk-CTCW7U7N.js} +1 -1
  55. package/{chunk-BJLYCOZK.js → chunk-D5XKNNUV.js} +135 -795
  56. package/{chunk-AV6KQCM5.js → chunk-DNNSCSA2.js} +19 -14
  57. package/{chunk-3AOLVADY.js → chunk-DVINR3PL.js} +1 -1
  58. package/{chunk-NI2BS6UD.js → chunk-DWUCB2A3.js} +1 -1
  59. package/{chunk-AA564GBL.js → chunk-DZZL7UBV.js} +1 -1
  60. package/{chunk-6FGXGFAH.js → chunk-E6RGHPDR.js} +6 -4
  61. package/chunk-EDKF7RX4.js +30 -0
  62. package/{chunk-6SZ52ORL.js → chunk-ES6CVKVD.js} +24 -30
  63. package/{chunk-DQLYEGP7.js → chunk-FHAGENAS.js} +3 -4
  64. package/{chunk-56W233KG.js → chunk-FKFMIBTT.js} +5 -1
  65. package/{chunk-INZZJSQF.js → chunk-FZGV4FGK.js} +24 -12
  66. package/{chunk-D3JQPONH.js → chunk-GAL47RNP.js} +1 -1
  67. package/{chunk-6FQ2552G.js → chunk-HBPV76EK.js} +1085 -1150
  68. package/{chunk-LN3OQJGG.js → chunk-HLU5Q2GV.js} +4 -4
  69. package/{chunk-U2A47SVI.js → chunk-HQP7HJDL.js} +7 -7
  70. package/{chunk-H2G6JXTR.js → chunk-HQUORJTM.js} +1 -1
  71. package/{chunk-3Z3DXZBD.js → chunk-IYCUMIYS.js} +24 -20
  72. package/{chunk-7APQB6R6.js → chunk-JX5PJCWS.js} +8 -6
  73. package/{chunk-LYGNQHUW.js → chunk-JYYZCK2Z.js} +2 -4
  74. package/{chunk-PYKV6FSC.js → chunk-KWSQR2KK.js} +16 -31
  75. package/{chunk-VULELK4T.js → chunk-L7B47JXR.js} +37 -64
  76. package/{chunk-4NN3EK7H.js → chunk-LAFC3B2I.js} +1 -1
  77. package/{chunk-VRJUIUIY.js → chunk-LJKICKVC.js} +2 -2
  78. package/chunk-M3JEW6N6.js +193 -0
  79. package/chunk-MBOEV4L2.js +301 -0
  80. package/{chunk-QDHZCAH3.js → chunk-MMZ6ZTVO.js} +229 -74
  81. package/{chunk-JDSUTNYY.js → chunk-MP64VFGD.js} +2 -2
  82. package/{chunk-U5Z7LFZF.js → chunk-MXUDQZXQ.js} +47 -8
  83. package/chunk-N4G4PKQ6.js +23 -0
  84. package/{chunk-SVEUG45B.js → chunk-NHRQCXIQ.js} +0 -24
  85. package/{chunk-KXKQO4Q6.js → chunk-NTW5GWDM.js} +58 -1
  86. package/chunk-ONXOABJR.js +215 -0
  87. package/{chunk-BANYWEYY.js → chunk-OZX2IPKM.js} +8 -3
  88. package/{chunk-Q24S4NDF.js → chunk-P7OOB7QP.js} +1 -1
  89. package/{chunk-GLGD2JGY.js → chunk-PEZJEQAO.js} +7 -7
  90. package/{chunk-GBADO3SM.js → chunk-PQDIDWGX.js} +1 -1
  91. package/chunk-PSCNXBYA.js +11 -0
  92. package/chunk-QEFJJS2I.js +508 -0
  93. package/{chunk-757BGY6Y.js → chunk-QEW2MFDQ.js} +1 -1
  94. package/{chunk-SP3DPVBH.js → chunk-RDBARW6T.js} +8 -3
  95. package/{chunk-TNPCQNGQ.js → chunk-RJ2SAFB5.js} +83 -41
  96. package/{chunk-FGEYVPPR.js → chunk-RVWRKFUB.js} +8 -65
  97. package/{chunk-43CXXVJD.js → chunk-RXX4GDIH.js} +1 -1
  98. package/chunk-SEJ5OS6F.js +49 -0
  99. package/{chunk-MFI4FGHX.js → chunk-SOJM57FX.js} +5 -2
  100. package/{chunk-EKLRRZIN.js → chunk-SPAQ4PVV.js} +0 -5
  101. package/{chunk-L7NG2M6H.js → chunk-TRV2MIDW.js} +89 -74
  102. package/chunk-UAD2WT54.js +64 -0
  103. package/{chunk-RTLJUGQH.js → chunk-UZPQSVM6.js} +2 -2
  104. package/{chunk-3QJTD6DO.js → chunk-VMWYBIXG.js} +9 -7
  105. package/{chunk-ZHXJ6M7T.js → chunk-W7XHHYWM.js} +4 -0
  106. package/{chunk-5WADL4O7.js → chunk-XAVSS3KE.js} +21 -3
  107. package/{chunk-CVT7L2WZ.js → chunk-XOKOSO35.js} +13 -22
  108. package/{chunk-6BYAXNH5.js → chunk-XTJTN3RW.js} +57 -4
  109. package/{chunk-T5HJEUQN.js → chunk-YCDWJX45.js} +1 -1
  110. package/{chunk-MRWGHF56.js → chunk-YDH3FDFQ.js} +12 -356
  111. package/{chunk-H4RYESI6.js → chunk-Z4QSJILV.js} +85 -13
  112. package/chunk-ZJ7UHBJS.js +89 -0
  113. package/{chunk-O5FLGN2L.js → chunk-ZRSJ3JEH.js} +6 -2
  114. package/{cliExecutor-BBUVQU4L.js → cliExecutor-HG3S345O.js} +1 -1
  115. package/{codingSkills-BCQXRZOI.js → codingSkills-VDXQYWX4.js} +2 -2
  116. package/contentThunks-7YG2ZYQC.js +73 -0
  117. package/{cooldownCommands-GI5NNWGL.js → cooldownCommands-BSCH2W7P.js} +2 -2
  118. package/{createAgentAutomationAction-UJLNFFFC.js → createAgentAutomationAction-PJQSCAIO.js} +32 -26
  119. package/createDialogAction-SFEJX6SP.js +64 -0
  120. package/{createPageAction-N3IYABHV.js → createPageAction-B7WRHOQO.js} +35 -28
  121. package/{dbSlice-D5CNGWPD.js → dbSlice-IBVOBVMS.js} +7 -6
  122. package/{deleteFile-44TUM34Y.js → deleteFile-FWP2PSBG.js} +4 -3
  123. package/{dialogCommands-35M6RBAC.js → dialogCommands-VL2X22QC.js} +38 -33
  124. package/{dialogSlice-KO7ADD7H.js → dialogSlice-ANMACABO.js} +29 -24
  125. package/{docCreateCommands-VXHZWQ3P.js → docCreateCommands-ITLGZ5YI.js} +40 -35
  126. package/{docDeleteCommands-4WFAJR6A.js → docDeleteCommands-LH3YNL4C.js} +37 -32
  127. package/{docReadCommands-OYREEFAR.js → docReadCommands-YAJ77F36.js} +36 -31
  128. package/{docStore-5BU76DFK.js → docStore-D4HGHPWI.js} +9 -33
  129. package/{docUpdateCommands-A7QERSME.js → docUpdateCommands-DQBOMH2G.js} +40 -35
  130. package/{fetchMessages-KZQVBXKY.js → fetchMessages-DRABNDPZ.js} +3 -3
  131. package/{getPricing-HAU62AFM.js → getPricing-NM3NUTAS.js} +5 -5
  132. package/handleSendMessageAction-DF2OABGW.js +675 -0
  133. package/index.js +79 -88
  134. package/{lib-2ZTNRXR4.js → lib-FRRS27KN.js} +63 -28
  135. package/{localDialogRead-NQ33HBSI.js → localDialogRead-PUQKFI73.js} +1 -1
  136. package/{localRuntimeAuthority-KQDAE64E.js → localRuntimeAuthority-R5UBODT3.js} +6 -4
  137. package/{localRuntimeDb-PF7CFKDL.js → localRuntimeDb-P37ZTX55.js} +1 -1
  138. package/{machineCommands-J43U3TX5.js → machineCommands-JXDYQ5LB.js} +309 -87
  139. package/{machineWsRunDispatch-Z2Z6STXZ.js → machineWsRunDispatch-3QHI7JX5.js} +67 -59
  140. package/memberThunks-VZI6G7YZ.js +640 -0
  141. package/{models-4QF4BJVY.js → models-FAMINFZ7.js} +2 -2
  142. package/package.json +3 -2
  143. package/{read-RGNPI5H2.js → read-2BYWW7AA.js} +4 -3
  144. package/{readDocTool-6ESWKTXD.js → readDocTool-LC3A7QTB.js} +1 -1
  145. package/{readlineWorkspace-YRPV6JPN.js → readlineWorkspace-KVZTEAHB.js} +4609 -2698
  146. package/{removeDialogAgentAction-JYT73FU2.js → removeDialogAgentAction-SFYZXHNK.js} +14 -12
  147. package/{runAgentClientLoop-5YM5WMAY.js → runAgentClientLoop-KGTEL7ZP.js} +60 -50
  148. package/{runtimeDoctorCommands-JKTTN723.js → runtimeDoctorCommands-CROTMULY.js} +7 -5
  149. package/{setDialogExtraReferencesAction-D564LMYQ.js → setDialogExtraReferencesAction-Q32RGFTA.js} +10 -8
  150. package/{setPrimaryDialogAgentAction-ACY3BLYA.js → setPrimaryDialogAgentAction-BFYJHUJS.js} +14 -12
  151. package/{settingSlice-MKI3MNZJ.js → settingSlice-IRUU4VFB.js} +8 -7
  152. package/{skillDiscovery-GPUDHDTZ.js → skillDiscovery-NTRLM6KP.js} +3 -3
  153. package/{spaceCommands-MY26V52L.js → spaceCommands-KNAYWMCZ.js} +40 -220
  154. package/{streamAgentChatTurn-XV5X5TNQ.js → streamAgentChatTurn-FLYPTXKZ.js} +140 -95
  155. package/{switchDialogAgentAction-CJ5H6SAR.js → switchDialogAgentAction-L2KOKCGG.js} +11 -9
  156. package/{tableCommands-R6WFRDYF.js → tableCommands-SUNTHAYX.js} +1 -1
  157. package/{toolApiClient-B2MFXMEG.js → toolApiClient-VGYUB4P5.js} +4 -2
  158. package/{tools-MIMELA2Y.js → tools-CVLUXK6P.js} +46 -38
  159. package/{tuiSummaryLlmCaller-XJ5BKNNS.js → tuiSummaryLlmCaller-F3DPFFZM.js} +20 -16
  160. package/{updateCommands-IYKLF3JX.js → updateCommands-AJYSD73Y.js} +2 -2
  161. package/{updateDialogTitleAction-EIZUSWHR.js → updateDialogTitleAction-HWJIZEIV.js} +33 -27
  162. package/agentRecordCommands-Z64TA63M.js +0 -114
  163. package/agentRunCommand-4QJQLPRW.js +0 -134
  164. package/agentSuperviseCommands-VB6BUS5H.js +0 -640
  165. package/chunk-6BGAQ3KR.js +0 -7081
  166. package/chunk-FD36SCCD.js +0 -105
  167. package/chunk-J3UALFHL.js +0 -370
  168. package/chunk-RU5D3B22.js +0 -230
  169. package/chunk-YBV6QJKM.js +0 -441
  170. package/createDialogAction-TJCX6GUE.js +0 -58
  171. package/handleSendMessageAction-OSGQJQ45.js +0 -406
  172. package/spaceSlice-JUIXC365.js +0 -127
@@ -0,0 +1,64 @@
1
+ // packages/create/space/spaceKeys.ts
2
+ var SEPARATOR = "-";
3
+ var SPACE_PREFIX = "space";
4
+ var SPACE_PREFIX_WITH_SEPARATOR = `${SPACE_PREFIX}${SEPARATOR}`;
5
+ var normalizeSpaceId = (spaceId) => {
6
+ if (!spaceId) return spaceId;
7
+ return spaceId.startsWith(SPACE_PREFIX_WITH_SEPARATOR) ? spaceId.slice(SPACE_PREFIX_WITH_SEPARATOR.length) : spaceId;
8
+ };
9
+ var createSpaceKey = {
10
+ // 空间基础信息的key
11
+ space: (spaceId) => {
12
+ return [SPACE_PREFIX, normalizeSpaceId(spaceId)].join(SEPARATOR);
13
+ },
14
+ // 空间成员的key
15
+ member: (userId, spaceId) => {
16
+ return [SPACE_PREFIX, "member", userId, normalizeSpaceId(spaceId)].join(
17
+ SEPARATOR
18
+ );
19
+ },
20
+ // 查询用户所在的所有空间的范围
21
+ memberRange: (userId) => {
22
+ return {
23
+ start: [SPACE_PREFIX, "member", userId, ""].join(SEPARATOR),
24
+ end: [SPACE_PREFIX, "member", userId, "\uFFFF"].join(SEPARATOR)
25
+ };
26
+ },
27
+ /**
28
+ * 预留:未来若出现“按用户、按空间、且必须跨设备同步”的空间级偏好,
29
+ * 统一使用这个 key family。当前产品主链不要依赖它。
30
+ */
31
+ setting: (userId, spaceId) => {
32
+ return [SPACE_PREFIX, "setting", userId, normalizeSpaceId(spaceId)].join(
33
+ SEPARATOR
34
+ );
35
+ },
36
+ /**
37
+ * 预留:未来如确实需要批量读取空间级远端偏好,再使用这个范围。
38
+ */
39
+ settingRange: (userId) => {
40
+ return {
41
+ start: [SPACE_PREFIX, "setting", userId, ""].join(SEPARATOR),
42
+ end: [SPACE_PREFIX, "setting", userId, "\uFFFF"].join(SEPARATOR)
43
+ };
44
+ },
45
+ // 从成员key中提取空间key
46
+ // 成员 key 格式: space-member-{userId}-{spaceId}
47
+ // userId 是单段(无连字符),spaceId 是 ULID(无连字符)
48
+ spaceFromMember: (memberKey) => {
49
+ const parts = memberKey.split(SEPARATOR);
50
+ if (parts.length < 4) return "";
51
+ const spaceId = parts[parts.length - 1];
52
+ return [SPACE_PREFIX, spaceId].join(SEPARATOR);
53
+ },
54
+ // 从成员key中提取空间ID
55
+ spaceIdFromMember: (memberKey) => {
56
+ const parts = memberKey.split(SEPARATOR);
57
+ return parts.length >= 4 ? parts[parts.length - 1] : "";
58
+ }
59
+ };
60
+
61
+ export {
62
+ normalizeSpaceId,
63
+ createSpaceKey
64
+ };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  readDbRecord,
3
3
  writeAgentRecord
4
- } from "./chunk-DQLYEGP7.js";
4
+ } from "./chunk-FHAGENAS.js";
5
5
  import {
6
6
  buildSkillSummaryMarker
7
7
  } from "./chunk-VF4K2QE6.js";
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-A7GB5UGH.js";
14
14
  import {
15
15
  createSpaceKey
16
- } from "./chunk-FGEYVPPR.js";
16
+ } from "./chunk-UAD2WT54.js";
17
17
  import {
18
18
  asTrimmedLowercaseString
19
19
  } from "./chunk-QSJ3HFEF.js";
@@ -13,31 +13,33 @@ import {
13
13
  toTimestampMs,
14
14
  upsert,
15
15
  write
16
- } from "./chunk-AV6KQCM5.js";
16
+ } from "./chunk-DNNSCSA2.js";
17
17
  import {
18
18
  createUserKey,
19
19
  createUserPreferenceKey,
20
20
  ulid
21
- } from "./chunk-SVEUG45B.js";
21
+ } from "./chunk-NHRQCXIQ.js";
22
22
  import {
23
23
  asTrimmedLowercaseString
24
24
  } from "./chunk-QSJ3HFEF.js";
25
25
  import {
26
26
  BUILTIN_NOLO_AGENT_KEY
27
- } from "./chunk-VULELK4T.js";
27
+ } from "./chunk-L7B47JXR.js";
28
28
  import {
29
29
  asyncThunkCreator,
30
30
  buildCreateSlice,
31
31
  createAction,
32
32
  createAsyncThunk,
33
- createSelector,
34
- selectIdentityUserId
35
- } from "./chunk-PYKV6FSC.js";
33
+ createSelector
34
+ } from "./chunk-KWSQR2KK.js";
36
35
  import {
37
36
  getAllServers,
38
37
  getIsDesktopApp,
39
38
  isProduction
40
39
  } from "./chunk-QOKAKDPE.js";
40
+ import {
41
+ selectIdentityUserId
42
+ } from "./chunk-SEJ5OS6F.js";
41
43
  import {
42
44
  SERVERS
43
45
  } from "./chunk-LCBAMY2M.js";
@@ -923,7 +925,7 @@ var initialState = {
923
925
  editorFontFamily: "SF Mono, Monaco, Cascadia Code, Roboto Mono, monospace",
924
926
  enableReadCurrentSpace: true,
925
927
  globalPrompt: "",
926
- userTonePreset: "",
928
+ userTonePreset: "default",
927
929
  knowledgeCaptureLevel: DEFAULT_USER_PREFERENCE_PROFILE.knowledgeCaptureLevel,
928
930
  spaceContextLevel: DEFAULT_USER_PREFERENCE_PROFILE.spaceContextLevel,
929
931
  autoApproveSelfUpdateFields: [...DEFAULT_AUTO_APPROVED_SELF_UPDATE_FIELDS],
@@ -25,3 +25,7 @@ var CLI_PROVIDER_OPTIONS = CLI_PROVIDER_VALUES.map((value) => ({
25
25
  value,
26
26
  label: CLI_PROVIDER_DISPLAY_LABELS[value]
27
27
  }));
28
+
29
+ export {
30
+ CLI_PROVIDER_VALUES
31
+ };
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  listUserRecordsFromServers,
3
3
  readLiveDbRecordAfterTombstoneMerge
4
- } from "./chunk-Q24S4NDF.js";
4
+ } from "./chunk-P7OOB7QP.js";
5
5
  import {
6
6
  agentRecordHasConfiguredCredential
7
- } from "./chunk-DQLYEGP7.js";
7
+ } from "./chunk-FHAGENAS.js";
8
8
  import {
9
9
  toSafeAgentSummary
10
- } from "./chunk-RU5D3B22.js";
10
+ } from "./chunk-3BLB7QKO.js";
11
11
  import {
12
12
  PUBLIC_AGENT_KEY_PREFIX,
13
13
  isOwnedAgentKey,
@@ -77,12 +77,18 @@ function sortListedAgents(agents) {
77
77
  });
78
78
  return agents;
79
79
  }
80
+ function readArgValue(args, flag) {
81
+ const index = args.indexOf(flag);
82
+ const value = index >= 0 ? args[index + 1] : void 0;
83
+ return value && !value.startsWith("--") ? value : void 0;
84
+ }
80
85
  function parseAgentListArgs(args) {
81
86
  return {
82
87
  wantJson: args.includes("--json"),
83
88
  wantSafe: args.includes("--safe"),
84
89
  publicOnly: args.includes("--public-only"),
85
90
  idsOnly: args.includes("--ids-only"),
91
+ scope: readArgValue(args, "--scope"),
86
92
  showUnavailable: args.includes("--show-unavailable"),
87
93
  // --safe 默认输出精简投影(与 server listAgents 一致,防大列表被截断);
88
94
  // --verbose 拿回完整字段集排障。
@@ -118,6 +124,17 @@ async function hasReadableRecord(args) {
118
124
  return false;
119
125
  }
120
126
  }
127
+ async function listRemotePublicAgents(args) {
128
+ const response = await args.fetchImpl(`${args.serverUrl}/rpc/getPublicAgents`, {
129
+ method: "POST",
130
+ headers: { "Content-Type": "application/json", Authorization: `Bearer ${args.authToken}` },
131
+ body: JSON.stringify({ limit: Math.min(args.limit ?? 500, 500), summary: true })
132
+ });
133
+ if (!response.ok) throw new Error(`Public agent catalog request failed (${response.status})`);
134
+ const payload = await response.json();
135
+ const records = Array.isArray(payload?.data?.data) ? payload.data.data : Array.isArray(payload?.data) ? payload.data : [];
136
+ return records.filter((record) => record?.isPublic === true).map((record) => normalizeListedAgent({ ...record, userId: record?.userId || "system" })).filter((agent) => agent != null).map((agent) => ({ ...agent, publicRecordExists: true }));
137
+ }
121
138
  async function listRemoteAgents(args) {
122
139
  const recordGroups = [await args.queryUserRecords({ ...args, type: "agent" })];
123
140
  const agents = sortListedAgents(
@@ -214,6 +231,7 @@ export {
214
231
  toSafeListedAgentSummary,
215
232
  parseAgentListArgs,
216
233
  listLocalCachedAgents,
234
+ listRemotePublicAgents,
217
235
  listRemoteAgents,
218
236
  listRemoteAgentsAcrossServers,
219
237
  listFavoriteAgentIdsAcrossServers,
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  findModelConfig,
3
3
  getProviderByModelName
4
- } from "./chunk-QDHZCAH3.js";
4
+ } from "./chunk-MMZ6ZTVO.js";
5
5
  import {
6
6
  asOptionalFiniteNumber
7
7
  } from "./chunk-WWC7I6TA.js";
8
8
  import {
9
9
  asTrimmedLowercaseString
10
10
  } from "./chunk-QSJ3HFEF.js";
11
- import {
12
- isRecord
13
- } from "./chunk-KUG52IAP.js";
14
11
  import {
15
12
  asTrimmedString
16
13
  } from "./chunk-3EUW3WEO.js";
14
+ import {
15
+ isRecord
16
+ } from "./chunk-KUG52IAP.js";
17
17
  import {
18
18
  asOptionalTrimmedString
19
19
  } from "./chunk-G3SUCT4W.js";
@@ -207,9 +207,7 @@ function resolveAgentRuntimeConfigFromRecord(key, record) {
207
207
  }
208
208
 
209
209
  // packages/ai/agent/toolOutputPolicy.ts
210
- var MAX_HISTORICAL_TOOL_CONTENT_CHARS = 1600;
211
210
  var MAX_IN_TURN_TOOL_CONTENT_CHARS = 4e3;
212
- var FRESH_TOOL_OUTPUT_MAX_CHARS = 32e3;
213
211
  var DEFAULT_TOOL_OUTPUT_PROFILE = {
214
212
  maxChars: MAX_IN_TURN_TOOL_CONTENT_CHARS,
215
213
  headRatio: 0.5
@@ -234,21 +232,16 @@ function resolveHistoricalToolContentCap(toolName, historicalMaxChars) {
234
232
  return profile?.historicalMaxChars !== void 0 ? Math.max(historicalMaxChars, profile.historicalMaxChars) : historicalMaxChars;
235
233
  }
236
234
  function projectToolMessageContent(input) {
237
- const { content, isFresh, toolName, historicalMaxChars } = input;
238
- if (isFresh) {
239
- if (content.length <= FRESH_TOOL_OUTPUT_MAX_CHARS) return content;
240
- return clipToolText(
241
- content,
242
- FRESH_TOOL_OUTPUT_MAX_CHARS,
243
- resolveToolOutputProfile(toolName).headRatio,
244
- `
235
+ const { content, toolName } = input;
236
+ const maxChars = resolveToolOutputProfile(toolName).maxChars;
237
+ if (content.length <= maxChars) return content;
238
+ return clipToolText(
239
+ content,
240
+ maxChars,
241
+ resolveToolOutputProfile(toolName).headRatio,
242
+ `
245
243
  \u2026[\u622A\u65AD\uFF0C\u539F\u59CB\u957F\u5EA6 ${content.length} \u5B57\u7B26]`
246
- );
247
- }
248
- const cap = resolveHistoricalToolContentCap(toolName, historicalMaxChars);
249
- if (content.length <= cap) return content;
250
- return content.slice(0, cap) + `
251
- \u2026[\u622A\u65AD\uFF0C\u539F\u59CB\u957F\u5EA6 ${content.length} \u5B57\u7B26]`;
244
+ );
252
245
  }
253
246
  function clipToolText(content, maxChars, headRatio, marker = "\n\n[... tool output middle omitted; head/tail preserved ...]\n\n") {
254
247
  const normalized = content.replace(/\r\n/g, "\n").trim();
@@ -543,8 +536,6 @@ export {
543
536
  hasImageInRuntimeMessages,
544
537
  stripImagePartsFromMessages,
545
538
  stripImagePartsForTextOnlyAgent,
546
- MAX_HISTORICAL_TOOL_CONTENT_CHARS,
547
- FRESH_TOOL_OUTPUT_MAX_CHARS,
548
539
  resolveToolOutputProfile,
549
540
  resolveHistoricalToolContentCap,
550
541
  projectToolMessageContent,
@@ -8,6 +8,19 @@ import {
8
8
  asOptionalTrimmedString
9
9
  } from "./chunk-G3SUCT4W.js";
10
10
 
11
+ // packages/core/ollamaEndpoint.ts
12
+ function isOllamaEndpoint(endpoint) {
13
+ if (!endpoint || typeof endpoint !== "string") return false;
14
+ try {
15
+ const url = new URL(endpoint.includes("://") ? endpoint : `http://${endpoint}`);
16
+ if (url.port === "11434") return true;
17
+ const host = url.hostname.toLowerCase();
18
+ return host === "ollama.com" || host.endsWith(".ollama.com") || host === "ollama.ai" || host.endsWith(".ollama.ai");
19
+ } catch {
20
+ return false;
21
+ }
22
+ }
23
+
11
24
  // packages/ai/llm/usageRequestOptions.ts
12
25
  var STREAM_USAGE_PROVIDERS = /* @__PURE__ */ new Set([
13
26
  "google",
@@ -40,13 +53,23 @@ var STREAM_USAGE_PROVIDERS = /* @__PURE__ */ new Set([
40
53
  // RunInfra hosted fallback channel: OpenAI-compatible chat.completions
41
54
  // endpoint, supports stream_options.include_usage (measured to return
42
55
  // prompt_tokens_details.cached_tokens).
43
- "runinfra"
56
+ "runinfra",
57
+ "baseten",
58
+ // Kimi For Coding subscription (api.kimi.com/coding/v1): OpenAI-compatible
59
+ // chat.completions streaming that only emits the terminal usage frame when
60
+ // stream_options.include_usage is requested (measured; the official
61
+ // kimi-code CLI also sends include_usage). Custom agents pointing at the
62
+ // same endpoint are covered by the endpoint check below, not here.
63
+ "kimi-code"
44
64
  ]);
65
+ var KIMI_CODE_ENDPOINT_MARKER = "api.kimi.com";
66
+ var isKimiCodeEndpoint = (endpoint) => typeof endpoint === "string" && endpoint.includes(KIMI_CODE_ENDPOINT_MARKER);
45
67
  var EXTRA_USAGE_FIELD_PROVIDERS = /* @__PURE__ */ new Set(["openrouter"]);
46
68
  var normalizeProviderName = (providerName) => asTrimmedLowercaseString(providerName);
47
69
  var getUsageRequestOptions = (providerName, options) => {
48
70
  const normalizedProvider = normalizeProviderName(providerName);
49
71
  const api = options?.api ?? "chat-completions";
72
+ const shouldRequestStreamUsage = STREAM_USAGE_PROVIDERS.has(normalizedProvider) || normalizedProvider === "custom" && (isKimiCodeEndpoint(options?.endpoint) || isOllamaEndpoint(options?.endpoint));
50
73
  if (api === "responses") {
51
74
  return EXTRA_USAGE_FIELD_PROVIDERS.has(normalizedProvider) ? {
52
75
  usage: {
@@ -55,7 +78,7 @@ var getUsageRequestOptions = (providerName, options) => {
55
78
  } : {};
56
79
  }
57
80
  return {
58
- ...STREAM_USAGE_PROVIDERS.has(normalizedProvider) ? {
81
+ ...shouldRequestStreamUsage ? {
59
82
  stream_options: {
60
83
  include_usage: true
61
84
  }
@@ -98,7 +121,7 @@ function shouldStripReasoningContentForOutbound(provider, model) {
98
121
  const m = model?.trim().toLowerCase();
99
122
  if (!p || !m) return false;
100
123
  if (p === "deepseek" || p === "nolo") {
101
- return m === "deepseek-v4-flash" || m === "deepseek-v4-flash-vision-exp" || m === "deepseek-v4-pro";
124
+ return m === "deepseek-flash" || m === "deepseek-v4-flash" || m === "deepseek-v4-flash-vision-exp" || m === "deepseek-v4-pro";
102
125
  }
103
126
  return false;
104
127
  }
@@ -319,6 +342,33 @@ var extractToolCallsFromResponseOutput = (response) => {
319
342
  return calls;
320
343
  };
321
344
 
345
+ // packages/agent-runtime/promptCacheKey.ts
346
+ function collectStablePromptPrefix(messages, fallbackPrompt) {
347
+ const systemTexts = [];
348
+ if (fallbackPrompt?.trim()) systemTexts.push(fallbackPrompt.trim());
349
+ for (const raw of messages) {
350
+ if (!raw || typeof raw !== "object") continue;
351
+ const message = raw;
352
+ const role = String(message.role ?? "");
353
+ if (role !== "system" && role !== "developer") continue;
354
+ if (typeof message.content === "string") {
355
+ const boundary = Number(message.stable_prefix_chars);
356
+ const text = Number.isFinite(boundary) && boundary > 0 ? message.content.slice(0, boundary) : message.content;
357
+ if (text.trim()) systemTexts.push(text.trim());
358
+ }
359
+ }
360
+ return systemTexts.join("\n\n");
361
+ }
362
+ function stablePromptCacheKey(parts, namespace) {
363
+ const value = JSON.stringify(parts);
364
+ let hash = 2166136261;
365
+ for (let index = 0; index < value.length; index += 1) {
366
+ hash ^= value.charCodeAt(index);
367
+ hash = Math.imul(hash, 16777619) >>> 0;
368
+ }
369
+ return `${namespace}-${hash.toString(16).padStart(8, "0")}`;
370
+ }
371
+
322
372
  // packages/core/chat/imageParts.ts
323
373
  function isImageUrlPart(part) {
324
374
  return isRecord(part) && part.type === "image_url";
@@ -330,6 +380,7 @@ function hasImageParts(messages) {
330
380
  }
331
381
 
332
382
  export {
383
+ isOllamaEndpoint,
333
384
  getUsageRequestOptions,
334
385
  isImageUrlPart,
335
386
  hasImageParts,
@@ -341,5 +392,7 @@ export {
341
392
  extractTextFromResponseOutput,
342
393
  extractReasoningFromResponseOutput,
343
394
  extractImagePartsFromResponseOutput,
344
- extractToolCallsFromResponseOutput
395
+ extractToolCallsFromResponseOutput,
396
+ collectStablePromptPrefix,
397
+ stablePromptCacheKey
345
398
  };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadProfileConfig
3
- } from "./chunk-UNZDCI3O.js";
3
+ } from "./chunk-2KDR4CWE.js";
4
4
  import {
5
5
  resolveDefaultSpawn
6
6
  } from "./chunk-IDZTNRP2.js";