nolo-cli 0.32.0 → 0.33.0-alpha.11

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 (179) hide show
  1. package/README.md +6 -12
  2. package/{_executeModel-LTMSIBS4.js → _executeModel-YXWAXPWQ.js} +77 -67
  3. package/{action-HI3VRQLP.js → action-OQWPNKAH.js} +17 -15
  4. package/{addContentAction-NCURJ6PK.js → addContentAction-YVINZQTF.js} +14 -13
  5. package/{addDialogAgentAction-RCY4ECF4.js → addDialogAgentAction-6IOCIEPI.js} +14 -13
  6. package/{agentDeleteCommand-D3MYZK6E.js → agentDeleteCommand-VGHWJN5T.js} +44 -60
  7. package/{agentEmailCommands-6BXS574I.js → agentEmailCommands-ZLRF35I3.js} +91 -81
  8. package/{agentGrantCommands-E7ZZFRHK.js → agentGrantCommands-2LEZDADN.js} +2 -2
  9. package/{agentListCommands-SF3HEUTT.js → agentListCommands-OHZJ7AFP.js} +75 -79
  10. package/{agentMachineCommands-YARVXRR6.js → agentMachineCommands-62PHPGTK.js} +43 -59
  11. package/{agentPullCommand-ARSIDNVC.js → agentPullCommand-TSWAJPS2.js} +5 -5
  12. package/agentRecordCommands-CW2JWERD.js +113 -0
  13. package/agentRunCommand-O4HV7YWA.js +131 -0
  14. package/{agentRuntimeLocal-ATGJY6WC.js → agentRuntimeLocal-4PSBNUOE.js} +37 -51
  15. package/{agentSlice-4XWW344Y.js → agentSlice-OUTQ5O72.js} +16 -14
  16. package/{appDeleteCommands-63JO7RXS.js → appDeleteCommands-VTDBVHYR.js} +40 -56
  17. package/{appDeployCommands-Y7EWYUGM.js → appDeployCommands-WOUP7MDA.js} +40 -56
  18. package/{appDeployStatusCommands-ZBEY3DWB.js → appDeployStatusCommands-N2NWZKEN.js} +40 -56
  19. package/{appGetCommands-QSSOSEYL.js → appGetCommands-GYKLWWCA.js} +40 -56
  20. package/{appListCommands-PH3XWNDX.js → appListCommands-RUWBSEJK.js} +40 -56
  21. package/{authCommand-BBDHMSO6.js → authCommand-YVXVH25I.js} +21 -20
  22. package/{authCommands-4UDEKRE6.js → authCommands-WTW6MEYS.js} +10 -10
  23. package/chatQueueReduxAdapter-2QJAD4KQ.js +181 -0
  24. package/{chunk-EEF23OOK.js → chunk-266VUBLK.js} +7 -7
  25. package/{chunk-TEYN42N3.js → chunk-2IVEXF7P.js} +11 -4
  26. package/{chunk-2HXKAPH7.js → chunk-2QLAVHVK.js} +6 -6
  27. package/{chunk-WTGCTVJG.js → chunk-2QTEYCR7.js} +3 -6
  28. package/{chunk-DOISARTV.js → chunk-2UECQ7RE.js} +1 -1
  29. package/{chunk-E3APEOIM.js → chunk-3GZXL6FM.js} +4 -19
  30. package/{chunk-KGEVMUMI.js → chunk-3RUW3ONU.js} +11 -11
  31. package/{chunk-RXVX5LFR.js → chunk-3UG2IIZ3.js} +1 -1
  32. package/{chunk-O5OMJPPF.js → chunk-3WXRAHCG.js} +6 -5
  33. package/{chunk-V54H24CQ.js → chunk-4F5M2MW5.js} +3 -3
  34. package/{chunk-2ZRP5RUG.js → chunk-4OV7DXFJ.js} +12 -11
  35. package/{chunk-W367V5CH.js → chunk-54BAYVCY.js} +404 -117
  36. package/{chunk-GAF5X6B7.js → chunk-5QW3O3ET.js} +284 -310
  37. package/{chunk-DLWCWUNW.js → chunk-64OVNZXE.js} +1197 -757
  38. package/{chunk-ODS2MVMU.js → chunk-66CWPJK2.js} +19 -303
  39. package/{chunk-PTHDLIRB.js → chunk-6KOS7ZBZ.js} +1 -1
  40. package/{chunk-MXFQHRSS.js → chunk-6XIE5ZGI.js} +1 -1
  41. package/{chunk-ATK5WJOA.js → chunk-6YXDOOSH.js} +4 -4
  42. package/{chunk-SWYMCHM7.js → chunk-75U775RZ.js} +69 -1
  43. package/{chunk-UDA3ZYLW.js → chunk-7YYHKBJP.js} +31 -72
  44. package/chunk-ADLYMQB6.js +642 -0
  45. package/{chunk-ZWJOGMKH.js → chunk-AETZ7AD6.js} +1 -1
  46. package/{chunk-43EPBPZ2.js → chunk-ASDXPOJH.js} +2 -2
  47. package/{chunk-44HACRCK.js → chunk-BANYWEYY.js} +4 -4
  48. package/chunk-BFPSVRCQ.js +1799 -0
  49. package/{chunk-TOW4E763.js → chunk-BJIRLHJR.js} +2 -0
  50. package/{chunk-ZJ2WITOO.js → chunk-BQXOGBFN.js} +2 -2
  51. package/{chunk-4PNU7W7K.js → chunk-C7H5GMXT.js} +107 -125
  52. package/chunk-CPYYM4RJ.js +98 -0
  53. package/{chunk-3GZT3L6F.js → chunk-DDVIBKIB.js} +326 -481
  54. package/{chunk-2K4NDPT5.js → chunk-DFUPZE6V.js} +20 -12
  55. package/{chunk-BGTUGS3T.js → chunk-DKMOY3QI.js} +4 -30
  56. package/chunk-EGRJC4ZN.js +91 -0
  57. package/{chunk-K6QEHQZ3.js → chunk-EKLRRZIN.js} +1 -1
  58. package/{chunk-6HYVJV7B.js → chunk-ESHYE7WU.js} +2 -1
  59. package/{chunk-XFG3BAKN.js → chunk-FMEVI5TG.js} +65 -0
  60. package/{chunk-U4TRT5V4.js → chunk-GEPHJJW4.js} +1 -1
  61. package/chunk-GJXRIOLS.js +241 -0
  62. package/{chunk-VP4WJWKW.js → chunk-GM6PU7B6.js} +431 -345
  63. package/chunk-HS7MLR74.js +38 -0
  64. package/{chunk-3AUWC6EM.js → chunk-HUCT7HID.js} +5 -84
  65. package/chunk-IDAU4UFS.js +437 -0
  66. package/{chunk-Q76I4SXI.js → chunk-IHEC7VBF.js} +1 -1
  67. package/{chunk-OWHNFZNW.js → chunk-IKWTTKWG.js} +4 -4
  68. package/{chunk-3LY4F7SV.js → chunk-INZZJSQF.js} +348 -331
  69. package/{chunk-ZJH3LKEW.js → chunk-IR6W62Q6.js} +102 -15
  70. package/{chunk-RH53LMEJ.js → chunk-J44TVX2O.js} +2 -4
  71. package/{chunk-CF2WZF4N.js → chunk-J6WH4PYZ.js} +0 -8
  72. package/chunk-KHCLMKZZ.js +3062 -0
  73. package/{chunk-WHLVPK32.js → chunk-KMSZPTM6.js} +27 -3
  74. package/{chunk-L3GCUVOH.js → chunk-KSRFVP36.js} +1 -1
  75. package/{chunk-XDHHF73Q.js → chunk-LUIHOUZC.js} +95 -95
  76. package/{chunk-UOJRKY5J.js → chunk-M2YMQOLC.js} +44 -53
  77. package/chunk-M3JEW6N6.js +193 -0
  78. package/{chunk-MITD7CON.js → chunk-MDIAECHA.js} +1461 -301
  79. package/{chunk-IXZX5CJK.js → chunk-MQRZ5QUH.js} +1 -1
  80. package/{chunk-3ASDTTEI.js → chunk-MRWGHF56.js} +2 -0
  81. package/{chunk-Q3CSL43H.js → chunk-N4XRDM26.js} +1 -1
  82. package/{chunk-D34RI6NI.js → chunk-NNWHHCVP.js} +75 -1
  83. package/{chunk-CAENRKNJ.js → chunk-OR2HNLVO.js} +126 -88
  84. package/chunk-OW765XBU.js +10 -0
  85. package/{chunk-VMWR7VNI.js → chunk-PRMMCFIN.js} +13 -9
  86. package/{chunk-JZPBVBIY.js → chunk-QTZD6HBK.js} +18 -8
  87. package/chunk-RCFIB45Q.js +28 -0
  88. package/{chunk-7S54ZGF6.js → chunk-RJKIB55Y.js} +256 -12
  89. package/chunk-RPRRIFXV.js +231 -0
  90. package/chunk-RQFO3CAF.js +300 -0
  91. package/chunk-RY57GLGW.js +188 -0
  92. package/{chunk-YHGHADBQ.js → chunk-SCUETSRP.js} +4 -4
  93. package/{chunk-TA6EA2A3.js → chunk-TFK3HUNQ.js} +182 -20
  94. package/{chunk-LAXMH7JY.js → chunk-UM4H3URE.js} +18 -15
  95. package/{chunk-6YABCOFU.js → chunk-UNHKVD2N.js} +1 -1
  96. package/{chunk-G5GVZAXF.js → chunk-UNOTBWZZ.js} +15 -19
  97. package/{chunk-GE6IWA5N.js → chunk-UNZDCI3O.js} +126 -1
  98. package/chunk-URMS4XY2.js +10 -0
  99. package/{chunk-SFWZUTCI.js → chunk-VBUQYOX7.js} +2 -2
  100. package/{chunk-FXFGNOT2.js → chunk-VFVCYIRQ.js} +1 -1
  101. package/chunk-VIDPVFP3.js +20 -0
  102. package/{chunk-5RDLGLAP.js → chunk-WJSW43QZ.js} +4 -7
  103. package/{chunk-CF7S2RYZ.js → chunk-WLH5BAKX.js} +6 -6
  104. package/{chunk-VVEH6XUE.js → chunk-X2DAEZ3X.js} +1 -1
  105. package/{chunk-2IJAKBK2.js → chunk-X664KVEV.js} +426 -246
  106. package/{chunk-3FCNXC2J.js → chunk-XRO5VGQ6.js} +3735 -1394
  107. package/chunk-Y5GCAMGP.js +9 -0
  108. package/{chunk-O3JR45Q2.js → chunk-YBMI5JAH.js} +44 -44
  109. package/{chunk-V42OE5HT.js → chunk-YDTYDA5W.js} +3 -3
  110. package/chunk-YYLHWIW6.js +48 -0
  111. package/{chunk-AOS5IN2I.js → chunk-ZHYK3N56.js} +1 -1
  112. package/{chunk-PJ2DDQQM.js → chunk-ZURFOV5J.js} +2 -2
  113. package/{chunk-3UGKATZQ.js → chunk-ZWS6DUHX.js} +26 -435
  114. package/chunk-ZZ2MH7LE.js +84 -0
  115. package/{cliExecutor-BBUVQU4L.js → cliExecutor-DW3PHGEL.js} +2 -2
  116. package/{clipboardy-BVE3LVEH.js → clipboardy-MMBYVRLF.js} +166 -372
  117. package/{codingSkills-V35TRR4Y.js → codingSkills-DY5MINPG.js} +5 -4
  118. package/{createAgentAutomationAction-WLRNE7C4.js → createAgentAutomationAction-H6ZRPXBR.js} +41 -31
  119. package/createDialogAction-UJ6LFJYM.js +61 -0
  120. package/{createPageAction-7YROVZ3W.js → createPageAction-KVPT3IRK.js} +57 -47
  121. package/{db-6DPSJ6WT.js → db-3H3JECGY.js} +45 -5
  122. package/{dbSlice-BBL3PEVW.js → dbSlice-UI2VCBLG.js} +13 -12
  123. package/{deleteFile-RJTEPOT4.js → deleteFile-XQXPBFFB.js} +7 -6
  124. package/dialogCommands-6ASXJP3H.js +82 -0
  125. package/{dialogSlice-N4HPG6HM.js → dialogSlice-B7KCGHMY.js} +37 -29
  126. package/{docCreateCommands-GRA5BHSA.js → docCreateCommands-S4E4MKVC.js} +42 -56
  127. package/{docDeleteCommands-ONIJM5MD.js → docDeleteCommands-M7XLKWRM.js} +44 -58
  128. package/{docReadCommands-H55VQ2US.js → docReadCommands-LSCMW2FR.js} +42 -56
  129. package/{docStore-B5AHDNW5.js → docStore-ZYWZWIRB.js} +40 -30
  130. package/{docUpdateCommands-ZQIQVGC2.js → docUpdateCommands-OMRBAFOB.js} +45 -59
  131. package/{fetchMessages-VPPQDDZ4.js → fetchMessages-7QRCCRYK.js} +3 -3
  132. package/{getPricing-QO5TYNCK.js → getPricing-L2ENXWHV.js} +7 -6
  133. package/{handleSendMessageAction-IN5XX5U7.js → handleSendMessageAction-Y2XKODRT.js} +39 -31
  134. package/index.js +74 -74
  135. package/{lib-FYYBQIXS.js → lib-2ZTNRXR4.js} +432 -183
  136. package/{localDialogRead-3DBXVYXS.js → localDialogRead-SLMPV5SK.js} +2 -2
  137. package/{localRuntimeAuthority-NDUA2D7Y.js → localRuntimeAuthority-S77B5QVB.js} +10 -4
  138. package/{localRuntimeDb-GKYRBWLQ.js → localRuntimeDb-N3H3HQ7G.js} +1 -1
  139. package/{machineCommands-H3UMKE76.js → machineCommands-62RUZVSW.js} +95 -85
  140. package/{machineInfo-M6KB6HZN.js → machineInfo-66ZFUMLE.js} +1 -1
  141. package/machineWsRunDispatch-L3HD3FSF.js +129 -0
  142. package/{models-WDUTTYFS.js → models-OX2S5C6Q.js} +2 -2
  143. package/{offlineMarxistsAgentCommand-E6LUG63A.js → offlineMarxistsAgentCommand-GEH6SNNA.js} +1 -1
  144. package/package.json +1 -4
  145. package/{read-64OQDO3I.js → read-2VHEHCAN.js} +8 -7
  146. package/{readDocTool-MXM3T6PE.js → readDocTool-CSWD6NPC.js} +1 -2
  147. package/{readlineWorkspace-XVJZDCSC.js → readlineWorkspace-3MOJWFM7.js} +3358 -3409
  148. package/{removeDialogAgentAction-NEKVAMSH.js → removeDialogAgentAction-2T7BPM3T.js} +19 -17
  149. package/{runAgentClientLoop-H7U53QB6.js → runAgentClientLoop-Y5UW544I.js} +73 -64
  150. package/{runtimeDoctorCommands-WI2YZUSJ.js → runtimeDoctorCommands-KHGQKT3B.js} +6 -6
  151. package/{setDialogExtraReferencesAction-WTOHQDIV.js → setDialogExtraReferencesAction-GPT37HTW.js} +15 -14
  152. package/{setPrimaryDialogAgentAction-LDJOYC4F.js → setPrimaryDialogAgentAction-3746P7IW.js} +19 -17
  153. package/{settingSlice-4M37TN7V.js → settingSlice-FIFOQ6OR.js} +16 -14
  154. package/{skillDiscovery-5U6RYAHN.js → skillDiscovery-KLLKXPUO.js} +4 -4
  155. package/{slateUtils-2M7MUTWX.js → slateUtils-VO2FU36K.js} +1 -1
  156. package/{spaceCommands-7VVKJBDV.js → spaceCommands-NKSBD5G3.js} +45 -241
  157. package/{spaceSlice-T6YK6D34.js → spaceSlice-L44CI2QR.js} +39 -61
  158. package/{streamAgentChatTurn-RQ63QFQ7.js → streamAgentChatTurn-7DU4Z2VJ.js} +1262 -150
  159. package/{switchDialogAgentAction-XVWGKR2Z.js → switchDialogAgentAction-MQTUTQHL.js} +14 -13
  160. package/syncMapping-RK2MANUX.js +43 -0
  161. package/{tableCommands-RJZ3V4TF.js → tableCommands-64FZBAI3.js} +9 -8
  162. package/{toolApiClient-ARGFDJAG.js → toolApiClient-B2MFXMEG.js} +3 -3
  163. package/tools-2JI52WJP.js +99 -0
  164. package/{tuiSummaryLlmCaller-SRZ4QQUP.js → tuiSummaryLlmCaller-EAWQ3IZX.js} +25 -21
  165. package/{updateCommands-AK2RDOFR.js → updateCommands-MNDUIKN7.js} +2 -2
  166. package/{updateDialogTitleAction-BBDSWHNG.js → updateDialogTitleAction-HW33OIJI.js} +49 -38
  167. package/agentRecordCommands-JFZRQJQ4.js +0 -103
  168. package/agentRunCommand-NOX5FLKO.js +0 -121
  169. package/chunk-AYMOSAHE.js +0 -3158
  170. package/chunk-D2BPX6DQ.js +0 -1707
  171. package/chunk-DCDL3GC4.js +0 -171
  172. package/chunk-F3MP7CP6.js +0 -73
  173. package/chunk-WZSRQNQG.js +0 -2587
  174. package/createDialogAction-Y6YV64QB.js +0 -52
  175. package/dialogCommands-XLO5CAHZ.js +0 -95
  176. package/machineWsRunDispatch-HONRUK3R.js +0 -119
  177. package/tools-KYZX3BGO.js +0 -90
  178. package/{chunk-Z5MXSEOJ.js → chunk-RQSOAMPJ.js} +2 -2
  179. package/{chunk-JDSUTNYY.js → chunk-SAQQLJZ5.js} +3 -3
@@ -1,52 +1,56 @@
1
- import {
2
- buildBuiltinObjectSkillReference
3
- } from "./chunk-DCDL3GC4.js";
4
1
  import {
5
2
  addContentToSpace
6
- } from "./chunk-3FCNXC2J.js";
3
+ } from "./chunk-XRO5VGQ6.js";
7
4
  import {
8
5
  prepareAndPersistMessage,
9
6
  uiAskChoiceFunc,
10
7
  uiAskChoiceFunctionSchema
11
- } from "./chunk-3GZT3L6F.js";
8
+ } from "./chunk-DDVIBKIB.js";
12
9
  import {
13
10
  require_date_fns
14
11
  } from "./chunk-M76ECQRD.js";
12
+ import {
13
+ TOOL_PACKS
14
+ } from "./chunk-WLH5BAKX.js";
15
+ import {
16
+ buildSkillDocMarkdown
17
+ } from "./chunk-AETZ7AD6.js";
15
18
  import {
16
19
  PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL,
17
- PLATFORM_HOSTED_DEEPSEEK_FLASH_PRICE,
20
+ PLATFORM_HOSTED_DEEPSEEK_FLASH_PEAK_PRICE,
18
21
  PLATFORM_HOSTED_KIMI_PROVIDER
19
- } from "./chunk-CAENRKNJ.js";
22
+ } from "./chunk-OR2HNLVO.js";
20
23
  import {
21
24
  read,
22
25
  readAndWait,
23
26
  removeCachedEntity,
24
27
  upsertSSREntity,
25
28
  write
26
- } from "./chunk-LAXMH7JY.js";
27
- import {
28
- extractCustomId
29
- } from "./chunk-TOW4E763.js";
30
- import {
31
- selectIdentityUserId
32
- } from "./chunk-2IJAKBK2.js";
33
- import {
34
- isDevelopment
35
- } from "./chunk-5RDLGLAP.js";
29
+ } from "./chunk-UM4H3URE.js";
36
30
  import {
37
31
  createAgentKey,
38
32
  createDialogKey,
33
+ createKey,
39
34
  createMemoryKey,
40
35
  dialogMessageRange,
41
36
  memoryOwnerRange,
42
37
  memorySubjectKindRange
43
- } from "./chunk-WHLVPK32.js";
38
+ } from "./chunk-KMSZPTM6.js";
39
+ import {
40
+ selectIdentityUserId
41
+ } from "./chunk-X664KVEV.js";
42
+ import {
43
+ isDevelopment
44
+ } from "./chunk-WJSW43QZ.js";
44
45
  import {
45
46
  asTrimmedString
46
47
  } from "./chunk-3EUW3WEO.js";
47
48
  import {
48
49
  asOptionalPositiveFiniteNumber
49
50
  } from "./chunk-U6VC4MU4.js";
51
+ import {
52
+ extractCustomId
53
+ } from "./chunk-BJIRLHJR.js";
50
54
  import {
51
55
  isRecord
52
56
  } from "./chunk-KUG52IAP.js";
@@ -60,6 +64,160 @@ import {
60
64
  // packages/chat/dialog/actions/createDialogAction.ts
61
65
  var import_date_fns = __toESM(require_date_fns());
62
66
 
67
+ // packages/ai/skills/builtinObjectSkills.ts
68
+ var BUILTIN_OBJECT_SKILL_IDS = {
69
+ table: "builtin-table-skill-v1",
70
+ doc: "builtin-doc-skill-v1",
71
+ // key 改名为 code-style(它本来就叫「编码风格技能」,"code" 这个名字是它抢的,
72
+ // 与「代码执行」能力包撞车)。**id 值保持不变**——skillId 与页面 key 都从它派生,
73
+ // 改了会让存量 agent.references 失配。
74
+ "code-style": "builtin-code-skill-v1",
75
+ image: "builtin-image-skill-v1",
76
+ file: "builtin-file-skill-v1",
77
+ pagebuilder: "builtin-pagebuilder-skill-v1"
78
+ };
79
+ var SKILL_DEFS = {
80
+ doc: {
81
+ id: BUILTIN_OBJECT_SKILL_IDS.doc,
82
+ name: "\u6587\u6863\u7F16\u8F91\u6280\u80FD",
83
+ description: "\u63D0\u4F9B\u6587\u6863\u8BFB\u53D6\u4E0E\u66F4\u65B0\u80FD\u529B\uFF0C\u4F9B\u6587\u6863\u52A9\u624B\u4F7F\u7528\u3002\u89E6\u53D1\u8BCD\uFF1A\u6587\u6863\u3001\u6DA6\u8272\u3001\u6539\u5199\u3001\u7EED\u5199\u3001\u6392\u7248\u3001\u6587\u7AE0\u3001document\u3001polish\u3002",
84
+ toolNames: ["readDoc", "updateDoc"],
85
+ promptPatch: [
86
+ "\u6587\u6863\u7F16\u8F91\u6307\u5357\uFF1A",
87
+ "1. \u4FEE\u6539\u524D\u5148 readDoc \u8BFB\u53D6\u5F53\u524D\u6587\u6863\u771F\u503C\uFF0C\u518D\u57FA\u4E8E\u73B0\u6709\u5185\u5BB9\u7528 updateDoc \u505A\u5B9A\u70B9\u589E\u91CF\u7F16\u8F91\u3002",
88
+ "2. \u4E0D\u8981\u8131\u79BB\u73B0\u6709\u5185\u5BB9\u7A7A\u60F3\u91CD\u5199\uFF1B\u6DA6\u8272/\u6539\u5199/\u7EED\u5199\u90FD\u5E94\u4FDD\u7559\u7528\u6237\u539F\u6709\u7684\u7ED3\u6784\u4E0E\u4E8B\u5B9E\u3002"
89
+ ].join("\n")
90
+ },
91
+ table: {
92
+ id: BUILTIN_OBJECT_SKILL_IDS.table,
93
+ name: "\u8868\u683C\u7F16\u8F91\u6280\u80FD",
94
+ description: "\u63D0\u4F9B\u8868\u683C\u521B\u5EFA\u3001\u67E5\u8BE2\u3001\u65B0\u589E\u3001\u66F4\u65B0\u4E0E\u5220\u9664\u80FD\u529B\uFF0C\u4F9B\u8868\u683C\u52A9\u624B\u4F7F\u7528\u3002\u89E6\u53D1\u8BCD\uFF1A\u8868\u683C\u3001\u5EFA\u8868\u3001\u65B0\u589E\u4E00\u884C\u3001\u8BB0\u5F55\u3001\u5B57\u6BB5\u3001table\u3001spreadsheet\u3001csv\u3002",
95
+ // 与 app-builder 能力包共用同一份清单(TOOL_PACKS.TABLE)。
96
+ // 以前两边各抄一份,改一个忘另一个就会静默不同步。
97
+ toolNames: [...TOOL_PACKS.TABLE],
98
+ promptPatch: [
99
+ "\u8868\u683C\u64CD\u4F5C\u6307\u5357\uFF1A",
100
+ "1. \u7528\u6237\u8981\u65B0\u5EFA\u8868\u683C\u65F6\uFF0C\u8C03\u7528 createTable\uFF0C\u5E76\u4ECE\u9700\u6C42\u63A8\u65AD\u5408\u7406\u7684\u5B57\u6BB5\u8BBE\u8BA1\uFF08\u5B57\u6BB5\u540D\u3001\u7C7B\u578B\u3001\u5FC5\u586B\u3001\u53EF\u9009\u503C\uFF09\u3002",
101
+ "2. \u65B0\u589E\u8BB0\u5F55\u5FC5\u987B\u8C03\u7528 addTableRow / addTableRows\uFF0C\u4E0D\u8981\u53EA\u5728\u56DE\u7B54\u91CC\u53E3\u5934\u63CF\u8FF0\u3002",
102
+ "3. addTableRow \u7684 values \u662F\u5BF9\u8C61\uFF0Ckey \u5FC5\u987B\u7528\u5B57\u6BB5\u540D\uFF08name\uFF0C\u4E0D\u662F\u663E\u793A\u540D label\uFF09\uFF1B\u5C3D\u91CF\u4ECE\u7528\u6237\u81EA\u7136\u8BED\u8A00\u63A8\u65AD\u5E76\u586B\u6EE1\u76F8\u5173\u5B57\u6BB5\uFF0C\u5FC5\u586B\u5B57\u6BB5\u5C24\u5176\u6CE8\u610F\uFF1B\u7528\u6237\u6CA1\u63D0\u5230\u7684\u5B57\u6BB5\u53EF\u7528\u7A7A\u5B57\u7B26\u4E32\u6216 null \u5360\u4F4D\uFF1B\u7EDD\u4E0D\u8981\u4F20\u7A7A\u5BF9\u8C61 {}\u3002",
103
+ "4. \u66F4\u65B0\u6216\u5220\u9664\u524D\uFF0C\u5148\u7528 queryTableRows \u786E\u8BA4\u76EE\u6807\u884C\uFF0C\u5FC5\u8981\u65F6\u5411\u7528\u6237\u786E\u8BA4\u76EE\u6807\u884C/\u5B57\u6BB5\u3002"
104
+ ].join("\n")
105
+ },
106
+ "code-style": {
107
+ id: BUILTIN_OBJECT_SKILL_IDS["code-style"],
108
+ name: "\u7F16\u7801\u98CE\u683C\u6280\u80FD",
109
+ description: "\u63D0\u4F9B\u7F16\u7801\u89C4\u8303\u4E0E\u98CE\u683C\u7EA6\u675F\uFF0C\u4F9B\u4EE3\u7801\u4EFB\u52A1\u4F7F\u7528\u3002\u89E6\u53D1\u8BCD\uFF1A\u4EE3\u7801\u3001\u7F16\u7801\u3001\u91CD\u6784\u3001\u4FEEbug\u3001code\u3001refactor\u3001bugfix\u3001coding-style\u3002",
110
+ toolNames: [],
111
+ promptPatch: [
112
+ "\u7F16\u7801\u98CE\u683C\u4E0E\u89C4\u8303\u6307\u5357\uFF1A",
113
+ "1. \u6587\u4EF6\u62C6\u5206\uFF1A\u4F18\u5148\u62C6\u5206\u4E3A\u591A\u6587\u4EF6\uFF08MANY SMALL FILES\uFF09\uFF0C\u5178\u578B\u957F\u5EA6 200-400 \u884C\uFF0C\u5355\u6587\u4EF6\u6700\u591A 800 \u884C\uFF08800 max\uFF09\u3002",
114
+ "2. \u51FD\u6570\u4E0E\u5D4C\u5957\uFF1A\u51FD\u6570\u4FDD\u6301\u77ED\u5C0F\uFF08<50 lines\uFF09\uFF0C\u4F18\u5148\u4F7F\u7528 early returns \u63D0\u524D\u8FD4\u56DE\uFF0C\u5D4C\u5957\u5C42\u7EA7\u4E0D\u8D85\u8FC7 4 \u5C42\uFF08nesting \u22644\uFF09\u3002",
115
+ "3. \u4E0D\u53EF\u53D8\u6027\uFF08immutability\uFF09\uFF1A\u4FDD\u6301\u6570\u636E\u4E0D\u53EF\u53D8\uFF0C\u4E0D\u8981\u539F\u5730 mutate \u73B0\u6709\u5BF9\u8C61\u6216\u6570\u7EC4\uFF0C\u5FC5\u987B\u8FD4\u56DE\u65B0\u5BF9\u8C61/\u6570\u7EC4\u3002",
116
+ "4. \u9519\u8BEF\u5904\u7406\u4E0E\u6821\u9A8C\uFF1A\u663E\u5F0F\u5904\u7406\u6240\u6709\u9519\u8BEF\uFF08explicit error handling\uFF09\uFF0C\u5728\u7CFB\u7EDF\u8FB9\u754C\u5B8C\u6210\u6821\u9A8C\uFF08validate at boundaries\uFF09\uFF0C\u4E0D\u9690\u5F0F\u541E\u9519\u3002",
117
+ "5. \u5B8C\u6210\u524D Checklist\uFF1A\u5B8C\u6210\u524D\u81EA\u67E5\u51FD\u6570/\u6587\u4EF6\u5C3A\u5BF8\u3001\u5D4C\u5957\u6DF1\u5EA6\u3001\u4E0D\u53EF\u53D8\u6027\u4E0E\u8FB9\u754C\u9519\u8BEF\u5904\u7406\u3002"
118
+ ].join("\n")
119
+ },
120
+ image: {
121
+ id: BUILTIN_OBJECT_SKILL_IDS.image,
122
+ name: "\u56FE\u7247\u5206\u6790\u6280\u80FD",
123
+ description: "\u63D0\u4F9B\u56FE\u7247\u7406\u89E3\u3001\u63CF\u8FF0\u4E0E\u6574\u7406\u5EFA\u8BAE\u80FD\u529B\uFF0C\u4F9B\u56FE\u7247\u52A9\u624B\u4F7F\u7528\u3002\u89E6\u53D1\u8BCD\uFF1A\u56FE\u7247\u3001\u56FE\u50CF\u3001\u5206\u6790\u3001\u63CF\u8FF0\u3001\u547D\u540D\u3001\u6574\u7406\u3001image\u3001photo\u3001picture\u3002",
124
+ toolNames: [],
125
+ promptPatch: [
126
+ "\u56FE\u7247\u5206\u6790\u6307\u5357\uFF1A",
127
+ "1. \u5F53\u524D\u9636\u6BB5\u91CD\u70B9\u56F4\u7ED5\u5F53\u524D\u56FE\u7247\u505A\u7406\u89E3\u3001\u63CF\u8FF0\u3001\u63D0\u70BC\u91CD\u70B9\u3001\u7ED9\u51FA\u547D\u540D/\u6574\u7406\u5EFA\u8BAE\u548C\u540E\u7EED\u5904\u7406\u5EFA\u8BAE\u3002",
128
+ "2. \u4E0D\u8981\u5047\u88C5\u5DF2\u7ECF\u5177\u5907\u590D\u6742\u56FE\u7247\u7F16\u8F91\u80FD\u529B\uFF1B\u5982\u679C\u7528\u6237\u8981\u66F4\u5F3A\u64CD\u4F5C\uFF0C\u660E\u786E\u8BF4\u660E\u5F53\u524D\u53EF\u505A\u7684\u662F\u5206\u6790\u4E0E\u7EC4\u7EC7\u3002"
129
+ ].join("\n")
130
+ },
131
+ file: {
132
+ id: BUILTIN_OBJECT_SKILL_IDS.file,
133
+ name: "\u6587\u4EF6\u5904\u7406\u6280\u80FD",
134
+ description: "\u63D0\u4F9B\u6587\u4EF6\u7406\u89E3\u3001\u6574\u7406\u4E0E\u5904\u7406\u5EFA\u8BAE\u80FD\u529B\uFF0C\u4F9B\u6587\u4EF6\u52A9\u624B\u4F7F\u7528\u3002\u89E6\u53D1\u8BCD\uFF1A\u6587\u4EF6\u3001\u89E3\u6790\u3001\u63D0\u53D6\u3001\u6574\u7406\u3001\u5904\u7406\u3001file\u3001document\u3001pdf\u3002",
135
+ toolNames: [],
136
+ promptPatch: [
137
+ "\u6587\u4EF6\u5904\u7406\u6307\u5357\uFF1A",
138
+ "1. \u5F53\u524D\u9636\u6BB5\u91CD\u70B9\u56F4\u7ED5\u5F53\u524D\u6587\u4EF6\u63D0\u4F9B\u7406\u89E3\u3001\u6574\u7406\u3001\u63D0\u53D6\u4E0E\u540E\u7EED\u5904\u7406\u5EFA\u8BAE\u3002",
139
+ "2. \u4E0D\u8981\u5047\u88C5\u5DF2\u7ECF\u5B8C\u6210\u6587\u4EF6\u5185\u5BB9\u89E3\u6790\uFF1B\u5FC5\u8981\u65F6\u660E\u786E\u544A\u8BC9\u7528\u6237\u5F53\u524D\u66F4\u591A\u662F\u5360\u4F4D\u578B\u5DE5\u4F5C\u6D41\u5165\u53E3\uFF0C\u7B49\u5F85\u540E\u7EED\u63A5\u5165\u66F4\u5B8C\u6574\u7684\u6587\u4EF6\u5904\u7406\u80FD\u529B\u3002"
140
+ ].join("\n")
141
+ },
142
+ pagebuilder: {
143
+ id: BUILTIN_OBJECT_SKILL_IDS.pagebuilder,
144
+ name: "\u52A8\u6001\u4EA4\u4E92\u7EC4\u4EF6\u751F\u6210\u6280\u80FD",
145
+ description: "\u628A\u4E00\u53E5\u8BDD\u9700\u6C42\u53D8\u6210\u53EF\u770B\u7684\u4EA4\u4E92\u9875\u9762\u3001\u62A5\u544A\u3001\u770B\u677F\u3001\u4E3B\u9875\u3001\u6559\u7A0B\u3001\u5BF9\u6BD4\u9875\u6216\u8BA1\u5212\u9875\u3002\u4EFB\u4F55 agent \u5728\u9700\u8981\u8F93\u51FA\u53EF\u4EA4\u4E92\u53EF\u89C6\u5316\u6D88\u606F\u65F6\u6309\u9700\u52A0\u8F7D\u3002\u89E6\u53D1\u8BCD\uFF1A\u9875\u9762\u3001\u62A5\u8868\u3001\u770B\u677F\u3001\u65E5\u62A5\u3001\u5468\u62A5\u3001\u4E3B\u9875\u3001\u6559\u7A0B\u3001\u5BF9\u6BD4\u9875\u3001\u8BA1\u5212\u9875\u3001\u53EF\u89C6\u5316\u3001\u4EA4\u4E92\u9875\u9762\u3001\u4EEA\u8868\u76D8\u3001dashboard\u3001report\u3001page\u3001landing\u3002",
146
+ toolNames: [],
147
+ promptPatch: [
148
+ "\u52A8\u6001\u4EA4\u4E92\u7EC4\u4EF6\u751F\u6210\u89C4\u5219\uFF1A",
149
+ "\u4F60\u73B0\u5728\u7684\u4EFB\u52A1\u662F\u628A\u7528\u6237\u9700\u6C42\u53D8\u6210\u4E00\u4E2A\u53EF\u770B\u7684\u4EA4\u4E92\u9875\u9762/\u62A5\u544A/\u770B\u677F/\u4E3B\u9875/\u6559\u7A0B/\u5BF9\u6BD4\u9875/\u8BA1\u5212\u9875\u3002\u7528\u6237\u770B\u4E0D\u5230\u6E90\u7801\uFF0C\u53EA\u4F1A\u770B\u5230\u9875\u9762\u7ED3\u679C\u3002",
150
+ "",
151
+ "\u7EDD\u5BF9\u89C4\u5219\uFF1A",
152
+ "1. \u53EA\u8F93\u51FA\u4E00\u4E2A Markdown \u4EE3\u7801\u5757\uFF0C\u4EE3\u7801\u5757\u8BED\u8A00\u5FC5\u987B\u662F tsx preview\u3002",
153
+ "2. \u4EE3\u7801\u5757\u5916\u4E0D\u8981\u8F93\u51FA\u89E3\u91CA\u3001\u524D\u8A00\u3001\u7ED3\u5C3E\u3001\u6E05\u5355\u6216\u601D\u8003\u8FC7\u7A0B\u3002",
154
+ "3. \u4EE3\u7801\u5FC5\u987B\u5B9A\u4E49\u9876\u5C42 function Example()\uFF0C\u4E0D\u8981\u8C03\u7528 render()\uFF0C\u4E0D\u8981 export default\u3002",
155
+ "4. \u4E0D\u8981\u5199 import\u3002\u8FD0\u884C\u73AF\u5883\u5DF2\u7ECF\u63D0\u4F9B React\u3001useState\u3001useEffect\u3001useMemo\u3001useCallback\u3001useRef\u3001ReactECharts\u3001react-icons/lu \u7684\u56FE\u6807\u7EC4\u4EF6\u3002",
156
+ "5. \u6240\u6709\u4EA4\u4E92\u5FC5\u987B\u5728 Example \u5185\u7528 React state \u5B9E\u73B0\uFF0C\u6309\u94AE\u3001Tab\u3001FAQ\u3001\u6B65\u9AA4\u5207\u6362\u3001\u7B5B\u9009\u90FD\u8981\u771F\u7684\u53EF\u70B9\u51FB\u3002",
157
+ "6. \u4E3A\u4E3B\u8981\u533A\u5757\u52A0 data-artifact-section \u5C5E\u6027\u3002",
158
+ "7. \u751F\u6210\u7ED3\u679C\u4F18\u5148\u662F\u4E00\u9875\u5B8C\u6574\u53EF\u7528\u7684\u9875\u9762\uFF0C\u4E0D\u8981\u53EA\u505A\u5B64\u7ACB\u5361\u7247\u6216\u4E00\u4E2A\u56FE\u3002",
159
+ "8. \u5982\u679C\u7528\u6237\u6CA1\u6709\u7ED9\u5177\u4F53\u6570\u636E\uFF0C\u53EF\u4EE5\u751F\u6210\u5408\u7406\u7684\u793A\u4F8B\u6570\u636E\uFF0C\u4F46\u8981\u4FDD\u6301\u4E1A\u52A1\u53EF\u4FE1\u3002",
160
+ "",
161
+ "\u5404\u7C7B\u9875\u9762\u9ED8\u8BA4\u7ED3\u6784\uFF1A",
162
+ "- \u4FE1\u606F\u5C55\u793A\u7C7B\uFF08\u4E3B\u9875\u3001\u4EA7\u54C1\u4ECB\u7ECD\u3001\u670D\u52A1\u9875\u3001\u4F5C\u54C1\u96C6\u3001\u6D3B\u52A8\u9875\uFF09\uFF1A\u9996\u5C4F\u5B9A\u4F4D\u3001\u670D\u52A1/\u80FD\u529B\u5361\u7247\u3001\u4EE3\u8868\u6210\u679C\u5361\u7247\u3001\u53EF\u4FE1\u80CC\u4E66\u3001\u8054\u7CFB\u6216\u884C\u52A8\u6309\u94AE\u3002",
163
+ "- \u6570\u636E\u5206\u6790\u7C7B\uFF08\u65E5\u62A5\u3001\u5468\u62A5\u3001\u770B\u677F\u3001\u8D28\u68C0\u3001\u9500\u552E\u6F0F\u6597\u3001\u53CD\u9988\u5206\u6790\uFF09\uFF1A\u9876\u90E8\u6458\u8981\u3001\u6838\u5FC3\u6307\u6807\u3001\u8D8B\u52BF\u56FE\u3001\u660E\u7EC6\u8868\u683C\u6216\u5F02\u5E38\u5217\u8868\u3001\u4E0B\u4E00\u6B65\u5EFA\u8BAE\u3002",
164
+ "- \u6D41\u7A0B\u8BF4\u660E\u7C7B\uFF08\u6559\u7A0B\u3001SOP\u3001onboarding\u3001\u64CD\u4F5C\u6307\u5357\u3001\u8BFE\u7A0B\u6B65\u9AA4\uFF09\uFF1A\u5B66\u4E60\u76EE\u6807\u3001\u6B65\u9AA4\u5361\u7247\u3001\u793A\u4F8B/\u7EC3\u4E60\u3001\u68C0\u67E5\u6E05\u5355\u6216\u4E0B\u4E00\u6B65\u6309\u94AE\u3002",
165
+ "- \u51B3\u7B56\u6BD4\u8F83\u7C7B\uFF08\u65B9\u6848\u5BF9\u6BD4\u3001\u4EA7\u54C1\u9009\u578B\u3001\u7ADE\u54C1\u5206\u6790\u3001\u91C7\u8D2D\u5EFA\u8BAE\uFF09\uFF1A\u5BF9\u6BD4\u7EF4\u5EA6\u8868\u683C\u3001\u4F18\u7F3A\u70B9\u5361\u7247\u3001\u8BC4\u5206\u6216\u9002\u914D\u5EA6\u3001\u63A8\u8350\u7ED3\u8BBA\u3002",
166
+ "- \u8BA1\u5212\u6392\u5E03\u7C7B\uFF08\u9879\u76EE\u8BA1\u5212\u3001\u5B66\u4E60\u8BA1\u5212\u3001\u5185\u5BB9\u65E5\u5386\u3001\u53D1\u5E03\u8282\u594F\uFF09\uFF1A\u9636\u6BB5\u76EE\u6807\u3001\u4EFB\u52A1\u5217\u8868\u3001\u4F18\u5148\u7EA7\u3001\u91CC\u7A0B\u7891\u5361\u7247\u3001\u98CE\u9669\u63D0\u9192\u3002",
167
+ "- \u6DF7\u5408\u6C47\u62A5\u7C7B\uFF08\u878D\u8D44\u9875\u3001\u9879\u76EE\u6982\u89C8\u3001\u590D\u6742\u6C47\u62A5\uFF09\uFF1A\u81F3\u5C11\u5305\u542B MetricCard\u3001Chart\u3001Table \u548C Section\uFF0C\u4E0D\u8981\u53EA\u505A\u5355\u4E00\u5217\u8868\u3002",
168
+ "- \u6559\u7A0B/\u6B65\u9AA4/FAQ/Tab/\u7B5B\u9009/\u9875\u9762\u5185\u8DF3\u8F6C\u5FC5\u987B\u505A\u6210\u771F\u5B9E\u53EF\u70B9\u51FB\u4EA4\u4E92\u3002",
169
+ "",
170
+ "\u4EE3\u7801\u98CE\u683C\uFF1A",
171
+ "1. \u4F7F\u7528\u5185\u8054 style \u6216\u7EC4\u4EF6\u5185 <style>\uFF0C\u4E0D\u8981\u4F9D\u8D56 Tailwind \u6216\u5916\u90E8 CSS\u3002",
172
+ "2. \u9875\u9762\u5BBD\u5EA6\u3001\u95F4\u8DDD\u3001\u5B57\u53F7\u8981\u9002\u5408\u6D88\u606F\u5185\u9884\u89C8\uFF1B\u4E0D\u8981\u7528\u8FC7\u5927\u7684\u843D\u5730\u9875 hero\u3002",
173
+ "3. \u989C\u8272\u8981\u514B\u5236\uFF0C\u6709\u5C42\u6B21\uFF1B\u907F\u514D\u6574\u9875\u5355\u4E00\u84DD\u7D2B\u6E10\u53D8\u3002",
174
+ "4. \u8868\u683C\u3001\u56FE\u8868\u3001\u5361\u7247\u3001\u6309\u94AE\u90FD\u8981\u6709 hover/active/focus \u7684\u7EC6\u8282\u3002",
175
+ "5. \u5FC5\u8981\u65F6\u4F7F\u7528 ReactECharts \u753B\u56FE\uFF1B\u7B80\u5355\u67F1\u72B6\u56FE\u4E5F\u53EF\u4EE5\u7528 div \u5B9E\u73B0\uFF0C\u4FDD\u8BC1\u7A33\u5B9A\u3002",
176
+ "6. \u4EE3\u7801\u5C3D\u91CF\u77ED\u800C\u5B8C\u6574\uFF0C\u9ED8\u8BA4 150-260 \u884C\u4EE5\u5185\u3002",
177
+ "",
178
+ "\u8F93\u51FA\u683C\u5F0F\u793A\u4F8B\uFF1A",
179
+ "```tsx preview",
180
+ "function Example() {",
181
+ " const [tab, setTab] = useState('overview');",
182
+ " return <main><section data-artifact-section>...</section></main>;",
183
+ "}",
184
+ "```"
185
+ ].join("\n")
186
+ }
187
+ };
188
+ function buildBuiltinObjectSkillConfig(kind) {
189
+ const def = SKILL_DEFS[kind];
190
+ return {
191
+ version: "0.1",
192
+ kind: "skill",
193
+ id: def.id,
194
+ name: def.name,
195
+ description: def.description,
196
+ triggerMode: "explicit",
197
+ toolNames: def.toolNames,
198
+ promptPatch: def.promptPatch
199
+ };
200
+ }
201
+ function buildBuiltinObjectSkillDbKey(kind, userId) {
202
+ return createKey("page" /* DOC */, userId, BUILTIN_OBJECT_SKILL_IDS[kind]);
203
+ }
204
+ function buildBuiltinObjectSkillReference(kind, userId) {
205
+ return {
206
+ dbKey: buildBuiltinObjectSkillDbKey(kind, userId),
207
+ title: SKILL_DEFS[kind].name,
208
+ type: "instruction"
209
+ };
210
+ }
211
+ function buildBuiltinObjectSkillPageContent(kind) {
212
+ const def = SKILL_DEFS[kind];
213
+ return buildSkillDocMarkdown({
214
+ body: `# ${def.name}
215
+
216
+ ${def.description}`,
217
+ skillConfig: buildBuiltinObjectSkillConfig(kind)
218
+ });
219
+ }
220
+
63
221
  // packages/chat/dialog/objectAssistantRegistry.ts
64
222
  var OBJECT_ASSISTANT_TO_SKILL = {
65
223
  page: "doc",
@@ -97,8 +255,8 @@ var buildBuiltinObjectAssistantAgent = (kind, userId) => {
97
255
  model: PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL,
98
256
  apiSource: "platform",
99
257
  useServerProxy: true,
100
- inputPrice: PLATFORM_HOSTED_DEEPSEEK_FLASH_PRICE.input,
101
- outputPrice: PLATFORM_HOSTED_DEEPSEEK_FLASH_PRICE.output,
258
+ inputPrice: PLATFORM_HOSTED_DEEPSEEK_FLASH_PEAK_PRICE.input,
259
+ outputPrice: PLATFORM_HOSTED_DEEPSEEK_FLASH_PEAK_PRICE.output,
102
260
  createdAt: now,
103
261
  updatedAt: String(now),
104
262
  dialogCount: 0,
@@ -972,6 +1130,10 @@ var createDialogAction = async (args, thunkApi) => {
972
1130
  };
973
1131
 
974
1132
  export {
1133
+ BUILTIN_OBJECT_SKILL_IDS,
1134
+ buildBuiltinObjectSkillConfig,
1135
+ buildBuiltinObjectSkillDbKey,
1136
+ buildBuiltinObjectSkillPageContent,
975
1137
  resolveAgentMemoryPolicy,
976
1138
  buildMemorySubjectsForAgent,
977
1139
  chooseMemoryOwners,
@@ -1,13 +1,19 @@
1
+ import {
2
+ DataType,
3
+ fileKey,
4
+ getFileIdFromKey,
5
+ ulid
6
+ } from "./chunk-KMSZPTM6.js";
1
7
  import {
2
8
  loadFileFromIndexedDb,
3
9
  removeAction,
4
10
  saveFileToIndexedDb
5
- } from "./chunk-ZJ2WITOO.js";
11
+ } from "./chunk-BQXOGBFN.js";
6
12
  import {
7
13
  readAction,
8
14
  readRequestManager,
9
15
  resolveAgentReadServers
10
- } from "./chunk-ZJH3LKEW.js";
16
+ } from "./chunk-IR6W62Q6.js";
11
17
  import {
12
18
  asyncThunkCreator,
13
19
  buildCreateSlice,
@@ -27,27 +33,22 @@ import {
27
33
  shouldReplaceLocalWithRemoteRecord,
28
34
  shouldReplicateLocalRecord,
29
35
  uploadToCurrentServer
30
- } from "./chunk-2IJAKBK2.js";
36
+ } from "./chunk-X664KVEV.js";
31
37
  import {
32
38
  fetchFromClientDb,
33
39
  fetchFromServer,
34
40
  logger,
35
41
  normalizeTimeFields
36
- } from "./chunk-5RDLGLAP.js";
37
- import {
38
- API_ENDPOINTS
39
- } from "./chunk-LCBAMY2M.js";
40
- import {
41
- fileKey,
42
- getFileIdFromKey,
43
- ulid
44
- } from "./chunk-WHLVPK32.js";
42
+ } from "./chunk-WJSW43QZ.js";
45
43
  import {
46
44
  isTombstoneRecord
47
45
  } from "./chunk-GBRG75BQ.js";
48
46
  import {
49
47
  isRecord
50
48
  } from "./chunk-KUG52IAP.js";
49
+ import {
50
+ API_ENDPOINTS
51
+ } from "./chunk-LCBAMY2M.js";
51
52
 
52
53
  // packages/database/actions/readAndWait.ts
53
54
  var hashTokenScope = (currentToken) => {
@@ -251,7 +252,9 @@ var writeAction = async (writeConfig, thunkApi) => {
251
252
  "setting" /* SETTING */,
252
253
  "table" /* TABLE */,
253
254
  "table_row" /* TABLE_ROW */,
254
- "email" /* EMAIL */
255
+ "email" /* EMAIL */,
256
+ "agent" /* AGENT */,
257
+ DataType.AUTOMATION
255
258
  ];
256
259
  if (!data.type || !VALID_TYPES.includes(data.type)) {
257
260
  logger.warn(
@@ -704,7 +707,7 @@ var dbSlice = createSliceWithThunks({
704
707
  // 动态 import 在调用期解析,避开 TDZ/求值顺序问题(同下方 share)。
705
708
  read: create.asyncThunk(
706
709
  async (payload, thunkApi) => {
707
- const { readAction: readAction2 } = await import("./read-64OQDO3I.js");
710
+ const { readAction: readAction2 } = await import("./read-2VHEHCAN.js");
708
711
  return readAction2(payload, thunkApi);
709
712
  },
710
713
  {
@@ -778,7 +781,7 @@ var dbSlice = createSliceWithThunks({
778
781
  // 这里改成动态 import,运行期才解析,彻底断开这条边。
779
782
  share: create.asyncThunk(
780
783
  async (config, thunkApi) => {
781
- const { shareResourceAction } = await import("./action-HI3VRQLP.js");
784
+ const { shareResourceAction } = await import("./action-OQWPNKAH.js");
782
785
  return shareResourceAction(config, thunkApi);
783
786
  }
784
787
  ),
@@ -4,7 +4,7 @@ import {
4
4
 
5
5
  // packages/cli/agentCommandSupport.ts
6
6
  async function getDefaultCliDb() {
7
- const { getDefaultCliLocalRuntimeDb } = await import("./localRuntimeDb-GKYRBWLQ.js");
7
+ const { getDefaultCliLocalRuntimeDb } = await import("./localRuntimeDb-N3H3HQ7G.js");
8
8
  return getDefaultCliLocalRuntimeDb();
9
9
  }
10
10
  function createNullCliDb() {
@@ -1,19 +1,30 @@
1
+ import {
2
+ parsePositiveFiniteNumberOrFallback
3
+ } from "./chunk-Y5GCAMGP.js";
1
4
  import {
2
5
  asRecordOrEmpty
3
6
  } from "./chunk-KX6YBIHG.js";
7
+ import {
8
+ DEFAULT_SYSTEM_AGENT_CAPABILITIES
9
+ } from "./chunk-UZ6XXCVR.js";
4
10
  import {
5
11
  patch,
6
12
  readAndWait,
7
13
  toTimestampMs,
8
14
  upsert,
9
15
  write
10
- } from "./chunk-LAXMH7JY.js";
16
+ } from "./chunk-UM4H3URE.js";
17
+ import {
18
+ createUserKey,
19
+ createUserPreferenceKey,
20
+ ulid
21
+ } from "./chunk-KMSZPTM6.js";
11
22
  import {
12
23
  asTrimmedLowercaseString
13
24
  } from "./chunk-QSJ3HFEF.js";
14
25
  import {
15
26
  BUILTIN_NOLO_AGENT_KEY
16
- } from "./chunk-ZJH3LKEW.js";
27
+ } from "./chunk-IR6W62Q6.js";
17
28
  import {
18
29
  asyncThunkCreator,
19
30
  buildCreateSlice,
@@ -21,12 +32,12 @@ import {
21
32
  createAsyncThunk,
22
33
  createSelector,
23
34
  selectIdentityUserId
24
- } from "./chunk-2IJAKBK2.js";
35
+ } from "./chunk-X664KVEV.js";
25
36
  import {
26
37
  getAllServers,
27
38
  getIsDesktopApp,
28
39
  isProduction
29
- } from "./chunk-5RDLGLAP.js";
40
+ } from "./chunk-WJSW43QZ.js";
30
41
  import {
31
42
  SERVERS
32
43
  } from "./chunk-LCBAMY2M.js";
@@ -36,14 +47,6 @@ import {
36
47
  import {
37
48
  normalizeServerOrigin
38
49
  } from "./chunk-CF7PE763.js";
39
- import {
40
- createUserKey,
41
- createUserPreferenceKey,
42
- ulid
43
- } from "./chunk-WHLVPK32.js";
44
- import {
45
- DEFAULT_SYSTEM_AGENT_CAPABILITIES
46
- } from "./chunk-UZ6XXCVR.js";
47
50
 
48
51
  // packages/ai/policy/types.ts
49
52
  var DEFAULT_AGENT_BASE_POLICY = {
@@ -1313,12 +1316,6 @@ var selectRemoteServers = createSelector(
1313
1316
  (currentServer, syncServers) => getAllServers(currentServer, syncServers)
1314
1317
  );
1315
1318
 
1316
- // packages/core/positiveFiniteNumberOrFallback.ts
1317
- function parsePositiveFiniteNumberOrFallback(value, fallback) {
1318
- const parsed = Number(value);
1319
- return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
1320
- }
1321
-
1322
1319
  // packages/app/settings/fieldSelectors.ts
1323
1320
  var selectPreferredAnimationSet = (state) => state.settings.preferredAnimationSet ?? 0;
1324
1321
  var selectShowThinking = (state) => state.settings.showThinking;
@@ -2013,7 +2010,6 @@ export {
2013
2010
  selectRemoteServer,
2014
2011
  selectRemoteSyncServers,
2015
2012
  selectRemoteServers,
2016
- parsePositiveFiniteNumberOrFallback,
2017
2013
  selectPreferredAnimationSet,
2018
2014
  selectShowThinking,
2019
2015
  selectMaxCost,
@@ -1,5 +1,13 @@
1
1
  // packages/cli/client/profileConfig.ts
2
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import {
3
+ appendFileSync,
4
+ chmodSync,
5
+ existsSync,
6
+ mkdirSync,
7
+ readFileSync,
8
+ statSync,
9
+ writeFileSync
10
+ } from "node:fs";
3
11
  import { dirname, join } from "node:path";
4
12
  import { homedir } from "node:os";
5
13
 
@@ -27,6 +35,10 @@ function canonicalizeNoloServerUrl(value) {
27
35
 
28
36
  // packages/cli/client/profileConfig.ts
29
37
  var normalizeProfileServerUrl = canonicalizeNoloServerUrl;
38
+ function isProtectedHomeProfileWrite(path) {
39
+ if (process.env.NODE_ENV !== "test") return false;
40
+ return path === join(homedir(), ".nolo", "config.json");
41
+ }
30
42
  function getDefaultProfileConfigPath() {
31
43
  const noloHome = process.env.NOLO_HOME?.trim();
32
44
  return noloHome ? join(noloHome, "config.json") : join(homedir(), ".nolo", "config.json");
@@ -43,6 +55,7 @@ function loadProfileConfig(path = getDefaultProfileConfigPath()) {
43
55
  return parsed;
44
56
  }
45
57
  function clearProfileAuthToken(path = getDefaultProfileConfigPath()) {
58
+ if (isProtectedHomeProfileWrite(path)) return false;
46
59
  const config = loadProfileConfig(path);
47
60
  if (!config) return false;
48
61
  const profile = config.profiles[config.currentProfile];
@@ -54,6 +67,11 @@ function clearProfileAuthToken(path = getDefaultProfileConfigPath()) {
54
67
  return true;
55
68
  }
56
69
  function saveDefaultProfile(path, profile) {
70
+ if (isProtectedHomeProfileWrite(path)) {
71
+ throw new Error(
72
+ `Refusing to write the developer's real profile from a test process: ${path}. Pass a temp path or set NOLO_HOME.`
73
+ );
74
+ }
57
75
  const existing = loadProfileConfig(path);
58
76
  const mergedDefault = {
59
77
  ...existing?.profiles?.default ?? {},
@@ -89,9 +107,11 @@ function buildCliRuntimeEnv(processEnv, config) {
89
107
  const profileEnv = buildEnvFromProfile(config);
90
108
  const explicitAuthToken = processEnv.AUTH_TOKEN || processEnv.AUTH;
91
109
  const explicitServerUrl = processEnv.NOLO_SERVER || processEnv.NOLO_SERVER_URL || processEnv.BASE_URL;
110
+ const agentSource = processEnv.NOLO_AGENT?.trim() ? "env" : profileEnv.NOLO_AGENT ? "profile" : void 0;
92
111
  return {
93
112
  ...profileEnv,
94
113
  ...processEnv,
114
+ NOLO_AGENT_SOURCE: agentSource,
95
115
  ...explicitAuthToken ? { AUTH_TOKEN: explicitAuthToken } : {},
96
116
  ...explicitServerUrl ? {
97
117
  NOLO_SERVER: explicitServerUrl,
@@ -104,6 +124,7 @@ function getCurrentProfile(config) {
104
124
  return config.profiles[config.currentProfile] ?? null;
105
125
  }
106
126
  function saveProfileLocale(locale, path = getDefaultProfileConfigPath()) {
127
+ if (isProtectedHomeProfileWrite(path)) return null;
107
128
  const config = loadProfileConfig(path);
108
129
  if (!config) return null;
109
130
  const profile = config.profiles[config.currentProfile];
@@ -114,13 +135,115 @@ function saveProfileLocale(locale, path = getDefaultProfileConfigPath()) {
114
135
  `, "utf8");
115
136
  return config;
116
137
  }
138
+ function getAgentSelectionAuditPath(configPath = getDefaultProfileConfigPath()) {
139
+ return join(dirname(configPath), "agent-selection.log");
140
+ }
141
+ var AGENT_SELECTION_AUDIT_MAX_BYTES = 512 * 1024;
142
+ var AGENT_SELECTION_AUDIT_KEEP_LINES = 200;
143
+ var SECRET_ARGV_FLAGS = /* @__PURE__ */ new Set([
144
+ "--token",
145
+ "--auth",
146
+ "--auth-token",
147
+ "--key",
148
+ "--api-key",
149
+ "--app-key",
150
+ "--machine-key",
151
+ "--provider-api-key",
152
+ "--invite-token",
153
+ "--password",
154
+ "--secret"
155
+ ]);
156
+ function redactArgvSecrets(argv) {
157
+ const redacted = [];
158
+ let maskNext = false;
159
+ for (const arg of argv) {
160
+ if (maskNext) {
161
+ maskNext = false;
162
+ redacted.push("[REDACTED]");
163
+ continue;
164
+ }
165
+ const equals = arg.indexOf("=");
166
+ if (equals > 0 && SECRET_ARGV_FLAGS.has(arg.slice(0, equals))) {
167
+ redacted.push(`${arg.slice(0, equals)}=[REDACTED]`);
168
+ continue;
169
+ }
170
+ maskNext = SECRET_ARGV_FLAGS.has(arg);
171
+ redacted.push(arg);
172
+ }
173
+ return redacted;
174
+ }
175
+ function appendAgentSelectionAudit(entry, auditPath = getAgentSelectionAuditPath(entry.configPath)) {
176
+ try {
177
+ const stack = (new Error().stack ?? "").split("\n").slice(2, 8).map((line2) => line2.trim()).filter(Boolean);
178
+ const line = `${JSON.stringify({
179
+ at: (/* @__PURE__ */ new Date()).toISOString(),
180
+ pid: process.pid,
181
+ // Distinguishes repo source / installed binary / bundled desktop build —
182
+ // the field that says whether a stale build is doing the writing.
183
+ execPath: process.execPath,
184
+ argv: redactArgvSecrets(process.argv),
185
+ cwd: process.cwd(),
186
+ previous: entry.previous,
187
+ next: entry.next,
188
+ stack
189
+ })}
190
+ `;
191
+ mkdirSync(dirname(auditPath), { recursive: true });
192
+ const auditMode = 384;
193
+ if (existsSync(auditPath) && statSync(auditPath).size > AGENT_SELECTION_AUDIT_MAX_BYTES) {
194
+ const kept = readFileSync(auditPath, "utf8").split("\n").filter((entry2) => entry2.trim()).slice(-AGENT_SELECTION_AUDIT_KEEP_LINES).join("\n");
195
+ writeFileSync(auditPath, `${kept}
196
+ `, {
197
+ encoding: "utf8",
198
+ mode: auditMode
199
+ });
200
+ }
201
+ appendFileSync(auditPath, line, { encoding: "utf8", mode: auditMode });
202
+ try {
203
+ chmodSync(auditPath, auditMode);
204
+ } catch {
205
+ }
206
+ } catch {
207
+ }
208
+ }
209
+ function readLastAgentSelectionAudit(auditPath = getAgentSelectionAuditPath()) {
210
+ try {
211
+ if (!existsSync(auditPath)) return { logExists: false, last: null };
212
+ const lines = readFileSync(auditPath, "utf8").trim().split("\n");
213
+ for (let index = lines.length - 1; index >= 0; index -= 1) {
214
+ const raw = lines[index]?.trim();
215
+ if (!raw) continue;
216
+ const parsed = JSON.parse(raw);
217
+ if (!parsed.next) continue;
218
+ return {
219
+ logExists: true,
220
+ last: {
221
+ agentKey: parsed.next.agentKey ?? "",
222
+ agentName: parsed.next.agentName ?? ""
223
+ }
224
+ };
225
+ }
226
+ return { logExists: true, last: null };
227
+ } catch {
228
+ return { logExists: false, last: null };
229
+ }
230
+ }
117
231
  function saveProfileAgentSelection(selection, path = getDefaultProfileConfigPath()) {
232
+ if (isProtectedHomeProfileWrite(path)) return null;
118
233
  const config = loadProfileConfig(path);
119
234
  if (!config) return null;
120
235
  const profile = config.profiles[config.currentProfile];
121
236
  if (!profile) return null;
122
237
  const agentKey = selection.agentKey.trim();
123
238
  const agentName = selection.agentName.trim();
239
+ appendAgentSelectionAudit({
240
+ previous: {
241
+ ...profile.agentKey ? { agentKey: profile.agentKey } : {},
242
+ ...profile.agentName ? { agentName: profile.agentName } : {}
243
+ },
244
+ next: { agentKey, agentName },
245
+ configPath: path
246
+ });
124
247
  if (!agentKey) {
125
248
  delete profile.agentKey;
126
249
  delete profile.agentName;
@@ -143,5 +266,7 @@ export {
143
266
  buildCliRuntimeEnv,
144
267
  getCurrentProfile,
145
268
  saveProfileLocale,
269
+ getAgentSelectionAuditPath,
270
+ readLastAgentSelectionAudit,
146
271
  saveProfileAgentSelection
147
272
  };
@@ -0,0 +1,10 @@
1
+ // packages/database/levelLockError.ts
2
+ function isLevelLockError(error) {
3
+ if (error == null) return false;
4
+ const text = typeof error === "object" ? `${error.code ?? ""} ${error.message ?? error}` : String(error);
5
+ return /LEVEL_LOCKED|Resource temporarily unavailable|\/LOCK|LOCK:/.test(text);
6
+ }
7
+
8
+ export {
9
+ isLevelLockError
10
+ };
@@ -11,10 +11,10 @@ import {
11
11
  getAntigravityUserAgent,
12
12
  normalizeAntigravityTokenPayload,
13
13
  refreshAntigravityToken
14
- } from "./chunk-YHGHADBQ.js";
14
+ } from "./chunk-SCUETSRP.js";
15
15
  import {
16
16
  writeOAuthCredential
17
- } from "./chunk-JZPBVBIY.js";
17
+ } from "./chunk-QTZD6HBK.js";
18
18
  import {
19
19
  toErrorMessage
20
20
  } from "./chunk-HNMXYYJR.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadProfileConfig
3
- } from "./chunk-GE6IWA5N.js";
3
+ } from "./chunk-UNZDCI3O.js";
4
4
  import {
5
5
  resolveDefaultSpawn
6
6
  } from "./chunk-IDZTNRP2.js";