nolo-cli 0.103.0-alpha.1 → 0.103.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 (209) hide show
  1. package/README.md +1 -1
  2. package/{_executeModel-3UCNJCQA.js → _executeModel-7J7Q3WXY.js} +75 -68
  3. package/action-C4KMTCJF.js +20 -0
  4. package/{addContentAction-O7R66HEX.js → addContentAction-7TNIOVZI.js} +12 -11
  5. package/{addDialogAgentAction-74OA7KYP.js → addDialogAgentAction-O47J3MVW.js} +18 -19
  6. package/{agentDeleteCommand-2YAHAZFJ.js → agentDeleteCommand-YPJHK7JA.js} +117 -42
  7. package/{agentEmailCommands-WLYF3JRS.js → agentEmailCommands-AWEXOHWM.js} +98 -88
  8. package/agentListCommands-2DTLLJZD.js +742 -0
  9. package/{agentMachineCommands-HNGAR5GI.js → agentMachineCommands-PGEEQ4JJ.js} +48 -43
  10. package/{agentProviderCommands-GNPTL5XR.js → agentProviderCommands-XPJYZSCE.js} +97 -2
  11. package/{agentPullCommand-O5MPVJ5E.js → agentPullCommand-B4T2DJ5H.js} +1 -1
  12. package/agentRecordCommands-DZVLCPLJ.js +138 -0
  13. package/agentRunCommand-AX5CYQ46.js +167 -0
  14. package/{agentRunControl-AVJR4JW4.js → agentRunControl-3HWA2LLQ.js} +2 -2
  15. package/{agentRuntimeLocal-VXZSDIGT.js → agentRuntimeLocal-PITRQ2EU.js} +48 -39
  16. package/{agentSlice-SICQBMCM.js → agentSlice-4TLSG6FB.js} +14 -13
  17. package/{appDeleteCommands-32MHLR4L.js → appDeleteCommands-UC2JW5FJ.js} +46 -41
  18. package/{appDeployCommands-WCQOUSOB.js → appDeployCommands-OL2RKVJ3.js} +46 -41
  19. package/{appDeployStatusCommands-6QKB7DYN.js → appDeployStatusCommands-B3PLC62M.js} +46 -41
  20. package/{appGetCommands-SFAPP5PB.js → appGetCommands-REESA2XQ.js} +46 -41
  21. package/{appListCommands-EKUBDRUO.js → appListCommands-UF6XX7HR.js} +46 -41
  22. package/{authCommand-F4EFRRX6.js → authCommand-NQPMGYHP.js} +118 -24
  23. package/{authCommands-RGOGCPP6.js → authCommands-LWLOZETU.js} +7 -5
  24. package/{builtinSkillRegistry-FUAVTRVZ.js → builtinSkillRegistry-GFY77VRN.js} +10 -8
  25. package/{chromeCommands-FZYAU75D.js → chromeCommands-K27J4OVZ.js} +124 -28
  26. package/{chromeOpsCommands-62P2Q2YB.js → chromeOpsCommands-IXRLN57H.js} +4 -3
  27. package/{chunk-UKZDAFYT.js → chunk-22RVE2PC.js} +6 -10
  28. package/{chunk-6OZ36FXI.js → chunk-27ONFIEY.js} +22 -4
  29. package/{chunk-HVURBGF3.js → chunk-2H6SEVDS.js} +6 -6
  30. package/{chunk-TOP2VXOR.js → chunk-2K4TM6AW.js} +5 -5
  31. package/{chunk-JEDZAO7L.js → chunk-2SYTUTLI.js} +257 -37
  32. package/{chunk-53HEEOTT.js → chunk-2WJ57RJA.js} +83 -16
  33. package/{chunk-OIVSQH2O.js → chunk-3BXNTXYI.js} +299 -5
  34. package/chunk-4A2R7KHG.js +13545 -0
  35. package/{chunk-EYAQT56M.js → chunk-4DPP773Q.js} +2 -2
  36. package/{chunk-JRQFUXY7.js → chunk-4G4C5SXT.js} +99 -22
  37. package/{chunk-DHDMC6FO.js → chunk-4HTMUQIZ.js} +14 -9
  38. package/{chunk-B3TVQ6PI.js → chunk-4IVA6UUE.js} +20 -11
  39. package/chunk-4LCOCOR5.js +50 -0
  40. package/{chunk-2GRGFCF6.js → chunk-4VJAC32I.js} +2 -1
  41. package/{chunk-MC4XLIJ7.js → chunk-523DITKR.js} +1 -1
  42. package/{chunk-H62HCIUP.js → chunk-56HJ2LAA.js} +35 -22
  43. package/{chunk-V4MJDUSR.js → chunk-5EPHWMP5.js} +2 -2
  44. package/{chunk-E4MARS3Q.js → chunk-5GVBDNTO.js} +1 -1
  45. package/{chunk-3WLK2JQ5.js → chunk-5IWONK6X.js} +68 -46
  46. package/chunk-5J3PYNUP.js +255 -0
  47. package/chunk-5MMAK75Q.js +15 -0
  48. package/{chunk-LW4VFPAY.js → chunk-5ZDLVKNG.js} +873 -228
  49. package/{chunk-42V6BK2E.js → chunk-62IL3KQV.js} +4 -34
  50. package/{chunk-AEOE4Z6Q.js → chunk-6UEJDFF7.js} +39 -15
  51. package/{chunk-JPGCXHNM.js → chunk-7JWCVINR.js} +1 -1
  52. package/{chunk-GQBOR3G6.js → chunk-7KVZ5LDQ.js} +2 -2
  53. package/{chunk-IIVGDG4I.js → chunk-7KWFIKKK.js} +13 -7
  54. package/chunk-A4SQRTZ6.js +15 -0
  55. package/chunk-AGIM7IMJ.js +147 -0
  56. package/{chunk-5UTFL4QJ.js → chunk-AOTBKDRK.js} +7 -0
  57. package/{chunk-L5UXH3B2.js → chunk-B455PEFD.js} +27 -8
  58. package/{chunk-XS5SWEDQ.js → chunk-BELZY72F.js} +1 -1
  59. package/chunk-BMQ2MJUK.js +153 -0
  60. package/{chunk-6YTOJY35.js → chunk-BZ7NPA6G.js} +35 -2
  61. package/chunk-CHOZJMJS.js +78 -0
  62. package/{chunk-3BMYXEUW.js → chunk-CUF4MYKI.js} +1 -1
  63. package/{chunk-ACTMNVHM.js → chunk-CYSYR67N.js} +1 -1
  64. package/{chunk-WV42OMV7.js → chunk-D2GQE6AF.js} +8 -8
  65. package/{chunk-GBRG75BQ.js → chunk-D2MDMY2M.js} +1 -0
  66. package/chunk-DZ7R5V3Y.js +164 -0
  67. package/{chunk-3VNWWVKB.js → chunk-E3YWHWCR.js} +50 -18
  68. package/{chunk-KQ4ONNQD.js → chunk-EKPKW6RM.js} +155 -8
  69. package/{chunk-ABQYVJBJ.js → chunk-EV235ILT.js} +5 -5
  70. package/{chunk-TRV2MIDW.js → chunk-EXAJ6DCR.js} +1 -0
  71. package/{chunk-AGVEIAQA.js → chunk-F442UK5V.js} +29 -78
  72. package/{chunk-HJUYAD4A.js → chunk-FBTNYNAL.js} +5 -5
  73. package/{chunk-2F7RJC6L.js → chunk-FOXQ7BAB.js} +1 -1
  74. package/{chunk-ETI2NYVF.js → chunk-GCTKWVLU.js} +4 -4
  75. package/chunk-GMZLP5DV.js +82 -0
  76. package/{chunk-FDTR4QJ6.js → chunk-H6A6X4EK.js} +32 -1
  77. package/{chunk-6VFARHZW.js → chunk-H7TQORR4.js} +994 -1079
  78. package/{chunk-5H7KJX7J.js → chunk-HD3S2F7U.js} +5 -5
  79. package/chunk-HDJRLWTG.js +8002 -0
  80. package/{chunk-DVINR3PL.js → chunk-HDLLCBRF.js} +1 -1
  81. package/{chunk-QOKAKDPE.js → chunk-HIM3FCLF.js} +0 -1
  82. package/{chunk-ONXOABJR.js → chunk-HNGRBWYF.js} +3 -0
  83. package/{chunk-VLTIYV3X.js → chunk-HP57OUJO.js} +4 -4
  84. package/{chunk-4OEFYTWL.js → chunk-IRZTHHNM.js} +67 -48
  85. package/{chunk-GPCZ7UXG.js → chunk-K6U4NKFJ.js} +1 -1
  86. package/{chunk-OZGZPSEG.js → chunk-KGRP4VOK.js} +47 -67
  87. package/{chunk-DNCEALKX.js → chunk-LB5A6JTU.js} +22 -29
  88. package/{chunk-LS2ZANRJ.js → chunk-LOCNXNOU.js} +1 -1
  89. package/{chunk-PUOC4YRO.js → chunk-M7VLQGQP.js} +11 -0
  90. package/{chunk-Z77CRGTW.js → chunk-MSFZ7FMO.js} +1 -1
  91. package/chunk-NKWIS6G2.js +442 -0
  92. package/{chunk-BFU6C242.js → chunk-NMFV26UG.js} +1 -1
  93. package/{chunk-FZGV4FGK.js → chunk-NUHHBEJC.js} +378 -187
  94. package/chunk-NWENLDMM.js +42 -0
  95. package/chunk-O7SVKKLY.js +875 -0
  96. package/chunk-OCZKATRC.js +129 -0
  97. package/{chunk-PQFHGD77.js → chunk-OM2RUOEU.js} +161 -14
  98. package/{chunk-KQHGZWSV.js → chunk-OXME3PEE.js} +1 -1
  99. package/{chunk-TQBHNYVR.js → chunk-PLRFCQ7C.js} +567 -519
  100. package/{chunk-6D6VBVEW.js → chunk-Q7O72MF5.js} +80 -14
  101. package/{chunk-J4MOO56S.js → chunk-RILRSUGC.js} +10 -2
  102. package/{chunk-RSONHHPE.js → chunk-RNUDNZJW.js} +10 -10
  103. package/{chunk-3N3W7KBB.js → chunk-RZJAZVCF.js} +11 -9
  104. package/{chunk-BYMV6QZG.js → chunk-TNIX77YM.js} +4 -0
  105. package/{chunk-GEPUP7OO.js → chunk-TSXNDTXL.js} +3 -3
  106. package/chunk-TY3TIUJK.js +89 -0
  107. package/{chunk-I3TQJXQ7.js → chunk-U3C3IA32.js} +9 -2
  108. package/{chunk-UZGQNTVW.js → chunk-UA324D4O.js} +8 -6
  109. package/{chunk-YYLHWIW6.js → chunk-UKZX3NHN.js} +1 -1
  110. package/{chunk-BP4XNZRM.js → chunk-UNAOTLKO.js} +4 -4
  111. package/{chunk-CUQEXCAU.js → chunk-UQ5P2WHS.js} +29 -9
  112. package/{chunk-NA35QHCF.js → chunk-V6YASAZR.js} +1 -1
  113. package/{chunk-3DII57IT.js → chunk-VCAQFMVN.js} +1 -1
  114. package/chunk-VIWDGTDA.js +8 -0
  115. package/chunk-VJVNU77E.js +83 -0
  116. package/{chunk-ZCYXJSTU.js → chunk-VL3H5ZU3.js} +66 -94
  117. package/{chunk-Q554LLSI.js → chunk-VLGL7FOL.js} +1 -1
  118. package/{chunk-UKWGR5SS.js → chunk-VY6VFGKR.js} +194 -1144
  119. package/{chunk-4EG4QFTK.js → chunk-WI6TUGLJ.js} +19 -17
  120. package/{chunk-QDSINZM3.js → chunk-WJ3B6FX6.js} +1 -14
  121. package/{chunk-OEVAY4J6.js → chunk-XMUZHRSB.js} +18 -20
  122. package/{chunk-O6OSWFZQ.js → chunk-XUWRURDF.js} +6 -0
  123. package/{chunk-Q67DOFOO.js → chunk-Y3PMXGLH.js} +2 -0
  124. package/{chunk-7S4YWN7P.js → chunk-YDO5ERB4.js} +4 -4
  125. package/chunk-YK5MHOWM.js +915 -0
  126. package/{chunk-SH43IESU.js → chunk-YUNJN43V.js} +44 -9
  127. package/chunk-YV25TM3R.js +780 -0
  128. package/{chunk-IONPPCL5.js → chunk-YZZREBID.js} +86 -16
  129. package/{chunk-DNUUJ45N.js → chunk-Z3WSAK6A.js} +23 -28
  130. package/chunk-ZRAU6T47.js +56 -0
  131. package/commandRegistry-VQPFWVDH.js +833 -0
  132. package/{contentThunks-S4S7QPSO.js → contentThunks-A26ME6OJ.js} +37 -35
  133. package/{cooldownCommands-REAWYVTY.js → cooldownCommands-ZLEPIB4A.js} +2 -2
  134. package/{createAgentAutomationAction-ODGL2YGP.js → createAgentAutomationAction-BSAMZJ5W.js} +39 -37
  135. package/createDialogAction-CMCQXYHD.js +69 -0
  136. package/{createPageAction-FBV3OWX7.js → createPageAction-ANGKJTK2.js} +46 -43
  137. package/{chunk-F2RNI7ZR.js → cursorProvider-YGGNMVWX.js} +2496 -9897
  138. package/{dbSlice-XVWBAGYN.js → dbSlice-QOLNF5GN.js} +11 -10
  139. package/{deleteFile-YG6QMJLU.js → deleteFile-KESP65GC.js} +7 -6
  140. package/{dialogCommands-5J56DFWN.js → dialogCommands-AMPAWLX4.js} +49 -45
  141. package/{dialogSlice-LEO27SQG.js → dialogSlice-DGWDEBYC.js} +41 -34
  142. package/{dist-VODFSGNG.js → dist-NJC2W7I4.js} +61 -54
  143. package/{docCreateCommands-KYI2DC2U.js → docCreateCommands-7NMIYL5D.js} +48 -43
  144. package/{docDeleteCommands-67REUSRY.js → docDeleteCommands-BD4OM5PV.js} +49 -44
  145. package/{docReadCommands-HOSVSBDJ.js → docReadCommands-5IOVAKU2.js} +47 -42
  146. package/{docStore-MNX5MHA5.js → docStore-TP4QDER4.js} +16 -12
  147. package/{docUpdateCommands-EMGCSMXY.js → docUpdateCommands-ZTKJ6UPC.js} +48 -43
  148. package/{fetchMessages-EIU7UFFK.js → fetchMessages-5L7OVM5Y.js} +5 -5
  149. package/{getPricing-LUSEABA6.js → getPricing-NMMFT3YI.js} +4 -4
  150. package/{handleSendMessageAction-YB6KQFJS.js → handleSendMessageAction-N4WKFRSQ.js} +111 -87
  151. package/index.js +87 -884
  152. package/{lib-FRRS27KN.js → lib-PU2G2MSO.js} +523 -191
  153. package/{localDialogRead-BTFJ4V2I.js → localDialogRead-O5A26FDK.js} +2 -2
  154. package/{localRuntimeAuthority-6IR6BBXE.js → localRuntimeAuthority-TU6OBC76.js} +9 -6
  155. package/{localRuntimeDb-SYQGUF4U.js → localRuntimeDb-VKWVOPPI.js} +1 -1
  156. package/{machineCommands-7GVQCUAK.js → machineCommands-47WKGY5Z.js} +92 -82
  157. package/machineWsRunDispatch-CYW5FJ52.js +154 -0
  158. package/{memberThunks-QGFLFVCI.js → memberThunks-25K6DDRA.js} +20 -18
  159. package/{models-T3SG6MJ5.js → models-ZPU5EDF4.js} +2 -2
  160. package/oauthTokenStore-ITEB663N.js +23 -0
  161. package/package.json +1 -1
  162. package/pdf-U6KSUEZZ.js +26435 -0
  163. package/processSpawn-SOAV3FEV.js +11 -0
  164. package/profileConfig-ZGOFORWV.js +43 -0
  165. package/{providerPresetApply-FG6NZ57W.js → providerPresetApply-TEBH7FDX.js} +7 -7
  166. package/{providerRegistry-757OWH3O.js → providerRegistry-CBJLNCET.js} +11 -7
  167. package/{read-COE3ZYR6.js → read-PJIT2YEJ.js} +7 -6
  168. package/{readDocTool-5USN4A6V.js → readDocTool-DRSXHGNL.js} +5 -3
  169. package/{readlineWorkspace-WA7JNI6J.js → readlineWorkspace-CK7GOVOC.js} +2698 -2055
  170. package/{removeDialogAgentAction-IX3MN2ZO.js → removeDialogAgentAction-VIWJL6MX.js} +21 -25
  171. package/{runAgentClientLoop-JGFQ6KIR.js → runAgentClientLoop-BGHGP5AR.js} +76 -70
  172. package/{runtimeDoctorCommands-X6WDBEQX.js → runtimeDoctorCommands-PIVSBZRZ.js} +4 -4
  173. package/runtimeModeArgs-2Y7BALTO.js +31 -0
  174. package/{setDialogExtraReferencesAction-X4HCPNZL.js → setDialogExtraReferencesAction-A7VA3NFM.js} +15 -13
  175. package/{setPrimaryDialogAgentAction-4GMIQLOD.js → setPrimaryDialogAgentAction-B4P7YQX2.js} +22 -26
  176. package/{chunk-AFUORTY4.js → settingThunks-KOYSAT65.js} +226 -940
  177. package/{skillDiscovery-CYUCJMAG.js → skillDiscovery-ZBU76COE.js} +3 -3
  178. package/{slateUtils-RIZES3PV.js → slateUtils-NGV2NMKM.js} +1 -1
  179. package/{spaceCommands-NKJVJCQQ.js → spaceCommands-QJCYG27F.js} +51 -46
  180. package/{streamAgentChatTurn-XLFZ66UC.js → streamAgentChatTurn-ANE7OTCZ.js} +214 -108
  181. package/{switchDialogAgentAction-N52LRPA3.js → switchDialogAgentAction-3VYWHZKH.js} +18 -19
  182. package/{tableCommands-O6NWHFKV.js → tableCommands-6U4BMLRR.js} +10 -10
  183. package/{toolApiClient-QVJ6HDNN.js → toolApiClient-EJT6TMFG.js} +3 -3
  184. package/tools-WPOVVP7M.js +116 -0
  185. package/{tuiSummaryLlmCaller-WFRWERGK.js → tuiSummaryLlmCaller-QCHCULPM.js} +25 -22
  186. package/{updateCommands-2M74UL7P.js → updateCommands-4EHDLF5J.js} +3 -3
  187. package/{updateDialogTitleAction-6MBTD4UE.js → updateDialogTitleAction-C4GRCXL4.js} +82 -44
  188. package/action-YVYQEAAV.js +0 -31
  189. package/agentListCommands-JP7S7PT2.js +0 -469
  190. package/agentRecordCommands-SXFPW3DL.js +0 -128
  191. package/agentRunCommand-JIQ4HY4D.js +0 -155
  192. package/browser-image-compression-MFDTD7K6.js +0 -1763
  193. package/chatQueueReduxAdapter-HHMUDNXL.js +0 -186
  194. package/chunk-CQ3WA2NE.js +0 -299
  195. package/chunk-M76ECQRD.js +0 -13658
  196. package/chunk-MEYIRKDN.js +0 -8967
  197. package/chunk-Q5FJJ6XI.js +0 -103
  198. package/chunk-S7Z2HMCN.js +0 -25
  199. package/chunk-XVZ22N6C.js +0 -20782
  200. package/chunk-Y5GCAMGP.js +0 -9
  201. package/chunk-YPREESF4.js +0 -225
  202. package/createDialogAction-GFKRXTK4.js +0 -65
  203. package/machineWsRunDispatch-XA7TD7Z7.js +0 -144
  204. package/settingSlice-ZQZVUPKK.js +0 -204
  205. package/syncMapping-N6RGXGBW.js +0 -437
  206. package/tools-NF5AB34X.js +0 -110
  207. package/{chunk-VMFTFOWF.js → chunk-ODAPITXL.js} +7 -7
  208. package/{chunk-X7HHHIOZ.js → chunk-Y6ROFCZO.js} +0 -0
  209. package/{db-WK5MDZVN.js → db-VQSAOWAO.js} +1 -1
@@ -6,10 +6,10 @@ import {
6
6
  } from "./chunk-AGGIDPCZ.js";
7
7
  import {
8
8
  getModelConfig
9
- } from "./chunk-OIVSQH2O.js";
9
+ } from "./chunk-3BXNTXYI.js";
10
10
  import {
11
11
  isPlatformHostedImageModel
12
- } from "./chunk-Q67DOFOO.js";
12
+ } from "./chunk-Y3PMXGLH.js";
13
13
  import {
14
14
  asOptionalFiniteNumber
15
15
  } from "./chunk-WWC7I6TA.js";
@@ -6,20 +6,20 @@ import {
6
6
  buildBuiltinObjectSkillDbKey,
7
7
  buildBuiltinObjectSkillPageContent,
8
8
  buildCodeWorkDiscipline
9
- } from "./chunk-DHDMC6FO.js";
9
+ } from "./chunk-4HTMUQIZ.js";
10
10
  import {
11
11
  buildSkillDocMarkdown,
12
12
  resolvePageSkillMetadata
13
- } from "./chunk-Q554LLSI.js";
14
- import {
15
- canonicalizeToolNames
16
- } from "./chunk-O6OSWFZQ.js";
13
+ } from "./chunk-VLGL7FOL.js";
17
14
  import {
18
15
  nolotusId
19
- } from "./chunk-QDSINZM3.js";
16
+ } from "./chunk-A4SQRTZ6.js";
17
+ import {
18
+ canonicalizeToolNames
19
+ } from "./chunk-XUWRURDF.js";
20
20
  import {
21
21
  asNonEmptyStringArray
22
- } from "./chunk-VMFTFOWF.js";
22
+ } from "./chunk-ODAPITXL.js";
23
23
  import {
24
24
  asOptionalTrimmedString
25
25
  } from "./chunk-G3SUCT4W.js";
@@ -242,7 +242,7 @@ var CODING_SKILL_SEEDS = [
242
242
  "## \u6D41\u7A0B",
243
243
  "1. Gather\uFF1A\u8BFB spec \u7ED9\u7684\u5BA1\u67E5\u547D\u4EE4\uFF08`git diff` \u6216 `git diff alpha...HEAD`\uFF09\uFF0C\u62FF\u5230 diff\uFF1B\u65E0\u6539\u52A8\u76F4\u63A5 Clean review\u3002",
244
244
  "2. Scope\uFF1A\u786E\u8BA4\u6539\u52A8\u8303\u56F4\uFF0C\u53EA\u5BA1 diff \u89E6\u53CA\u7684\u6587\u4EF6\uFF0C\u5F04\u6E05\u5BF9\u5E94\u4EC0\u4E48\u529F\u80FD/\u4FEE\u590D\u3002",
245
- "3. Context\uFF1A\u4E0D\u8981\u53EA\u770B hunk\uFF1B\u8BFB\u5468\u56F4\u5B9E\u73B0\u3001imports\u3001\u8C03\u7528\u65B9\u3002",
245
+ "3. Context\uFF1A\u4E0D\u8981\u53EA\u770B hunk\uFF1B\u8BFB\u5468\u56F4\u5B9E\u73B0\u3001imports\u3001\u8C03\u7528\u65B9\u3002**\u4EE3\u7801\u771F\u503C\u4F18\u5148**\uFF1Areview brief\u3001prompt\u3001\u6CE8\u91CA\u548C\u6D4B\u8BD5\u540D\u4E0D\u662F\u5B9E\u73B0\u771F\u503C\uFF1B\u6D89\u53CA\u884C\u4E3A\u5951\u7EA6\u65F6\u4EE5\u5B9E\u9645\u5B9E\u73B0\u3001\u7C7B\u578B\u548C\u53EF\u6267\u884C\u6D4B\u8BD5\u4E3A\u51C6\uFF0C\u51B2\u7A81\u5FC5\u987B\u62A5\u544A\uFF0C\u672A\u7ECF\u9A8C\u8BC1\u4E0D\u5F97 APPROVE\u3002",
246
246
  "4. Checklist\uFF1A\u6309\u89D2\u8272\u4ECE CRITICAL \u2192 LOW\uFF1B\u53EA\u62A5 >80% \u6709\u628A\u63E1\u7684\u771F\u5B9E\u95EE\u9898\u3002",
247
247
  "5. Report\uFF1A\u4EA7\u51FA finding \u8868 + Verdict\uFF1B\u540C\u7C7B\u95EE\u9898\u5408\u5E76\u3002",
248
248
  "",
@@ -252,8 +252,15 @@ var CODING_SKILL_SEEDS = [
252
252
  "\u4EFB\u4E00\u7B54\u300C\u5426\u300D\u6216\u300C\u4E0D\u786E\u5B9A\u300D\u5219\u964D\u7EA7\u6216\u4E22\u5F03\uFF1A",
253
253
  "1. \u80FD\u5F15\u7528\u786E\u5207\u884C\u53F7\uFF1F\uFF08\u6A21\u7CCA\u53D1\u73B0\u4E0D actionable\uFF09",
254
254
  "2. \u80FD\u63CF\u8FF0\u5177\u4F53\u5931\u8D25\u6A21\u5F0F\uFF1F\uFF08\u547D\u540D\u8F93\u5165\u3001\u72B6\u6001\u3001\u574F\u7ED3\u679C\uFF1B\u8BF4\u4E0D\u51FA\u89E6\u53D1\u6761\u4EF6 = \u6A21\u5F0F\u5339\u914D\uFF09",
255
- "3. \u80FD\u7ED9\u51FA\u5177\u4F53\u4FEE\u590D\u5EFA\u8BAE\uFF1F\uFF08\u4EE3\u7801\u7EA7\uFF0C\u4E0D\u662F\u9AD8\u5C42\u5EFA\u8BAE\uFF09",
256
- "4. \u5224\u65AD\u6807\u5C3A\u2014\u2014**\u8FD9\u4E2A\u56E2\u961F\u7684\u9AD8\u7EA7\u5DE5\u7A0B\u5E08\u771F\u4F1A\u5728 review \u91CC\u6539\u8FD9\u4E2A\u5417?** \u4E0D\u4F1A\u5C31\u8DF3\u8FC7\u3002",
255
+ "3. \u8BFB\u8FC7\u5468\u56F4\u4E0A\u4E0B\u6587\uFF1F\uFF08\u67E5\u8FC7\u8C03\u7528\u65B9\u3001imports\u3001\u6D4B\u8BD5\uFF1B\u5F88\u591A\u8868\u9762\u95EE\u9898\u4E0A\u4E00\u5C42\u5DF2\u5904\u7406\u6216\u6709\u7C7B\u578B guard\uFF09",
256
+ "4. \u4E25\u91CD\u5EA6\u7AD9\u5F97\u4F4F\uFF1F\uFF08\u7F3A JSDoc \u6C38\u8FDC\u4E0D\u662F HIGH\uFF1B\u6D4B\u8BD5 fixture \u91CC\u7684 `any` \u6C38\u8FDC\u4E0D\u662F CRITICAL\uFF1B\u4E25\u91CD\u5EA6\u81A8\u80C0\u6BD4\u6F0F\u62A5\u66F4\u4F24\u4FE1\u4EFB\uFF09",
257
+ "\u53E6\u6709\u5224\u65AD\u6807\u5C3A\u2014\u2014**\u8FD9\u4E2A\u56E2\u961F\u7684\u9AD8\u7EA7\u5DE5\u7A0B\u5E08\u771F\u4F1A\u5728 review \u91CC\u6539\u8FD9\u4E2A\u5417?** \u4E0D\u4F1A\u5C31\u8DF3\u8FC7\u3002\u6BCF\u6761 finding \u9644\u4EE3\u7801\u7EA7\u4FEE\u590D\u5EFA\u8BAE\uFF08Fix\uFF09\uFF0C\u4E0D\u662F\u9AD8\u5C42\u5EFA\u8BAE\u3002",
258
+ "",
259
+ "### HIGH / CRITICAL \u5FC5\u987B\u5E26\u8BC1\u636E",
260
+ "\u7F3A\u4EFB\u4E00\u6761\u5219\u964D\u7EA7\u5230 MEDIUM \u6216\u4E22\u5F03\uFF1A\u2460 \u786E\u5207\u4EE3\u7801\u7247\u6BB5 + \u884C\u53F7\uFF1B\u2461 \u5177\u4F53\u5931\u8D25\u573A\u666F\uFF08\u4EC0\u4E48\u8F93\u5165 \u2192 \u4EC0\u4E48\u72B6\u6001 \u2192 \u4EC0\u4E48\u574F\u7ED3\u679C\uFF09\uFF1B\u2462 \u4E3A\u4EC0\u4E48\u73B0\u6709\u9632\u62A4\uFF08\u7C7B\u578B\u7CFB\u7EDF/\u6821\u9A8C/\u6846\u67B6\u9ED8\u8BA4\uFF09\u6321\u4E0D\u4F4F\u3002",
261
+ "",
262
+ "### \u96F6\u53D1\u73B0\u662F\u5408\u6CD5\u7ED3\u679C",
263
+ "\u5E72\u51C0\u7684 review \u662F\u6709\u6548\u7684 review\uFF1Adiff \u5C0F\u3001\u7C7B\u578B\u5B8C\u5907\u3001\u6709\u6D4B\u8BD5\u3001\u9075\u5FAA\u9879\u76EE\u6A21\u5F0F\u65F6\uFF0C\u6B63\u786E\u8F93\u51FA\u662F\u96F6 finding + `Clean review`\u3002\u4E0D\u8981\u4E3A\u8BC1\u660E\u8DD1\u8FC7\u800C\u5236\u9020 finding\u3001\u586B\u5145\u5F0F nitpick \u6216\u65E0\u89E6\u53D1\u6761\u4EF6\u7684\u5047\u8BBE\u6027 edge case\u3002",
257
264
  "",
258
265
  "## \u5047\u9633\u6027\u6E05\u5355\uFF08\u8FD9\u4E9B\u4E0D\u62A5\uFF09",
259
266
  "- \u300C\u8003\u8651\u52A0\u9519\u8BEF\u5904\u7406\u300D\uFF1A\u5148\u67E5\u8C03\u7528\u65B9/\u6846\u67B6\u662F\u5426\u5DF2\u5904\u7406\u3002",
@@ -1112,9 +1119,72 @@ function buildSearchSpaceSkillContentBySlug(slug) {
1112
1119
  });
1113
1120
  }
1114
1121
 
1122
+ // packages/ai/skills/autoReviewSkill.ts
1123
+ var AUTO_REVIEW_SKILL_SLUGS = ["auto-review"];
1124
+ function deterministicId6(prefix, seed) {
1125
+ let h = 2166136261;
1126
+ for (let i = 0; i < seed.length; i++) {
1127
+ h ^= seed.charCodeAt(i);
1128
+ h = h * 16777619 >>> 0;
1129
+ }
1130
+ const suffix = h.toString(36).toUpperCase().padStart(14, "0");
1131
+ return (prefix + suffix).slice(0, 26);
1132
+ }
1133
+ function buildAutoReviewSkillId(slug) {
1134
+ return deterministicId6("01SK", slug);
1135
+ }
1136
+ function buildAutoReviewSkillPageKey(userId, slug) {
1137
+ return `page-${userId}-${buildAutoReviewSkillId(slug)}`;
1138
+ }
1139
+ function buildAutoReviewSkillConfig(slug) {
1140
+ return {
1141
+ version: "0.1",
1142
+ kind: "skill",
1143
+ id: buildAutoReviewSkillId(slug),
1144
+ name: "\u81EA\u52A8\u5BA1\u67E5\u5408\u5E76\uFF08auto-review\uFF09",
1145
+ triggerMode: "explicit",
1146
+ description: "\u6539\u52A8\u5B8C\u6210\u540E\u81EA\u52A8\u8D70\u5B8C\u300C\u72EC\u7ACB reviewer \u5BA1\u67E5 \u2192 \u4FEE\u590D \u2192 \u63D0\u4EA4 \u2192 \u5408\u5E76\u5230\u672C\u5730\u96C6\u6210\u5206\u652F\u300D\u3002\u5F00\u542F\u5373\u6388\u6743 review \u901A\u8FC7\u540E\u81EA\u52A8\u63D0\u4EA4\u4E0E\u672C\u5730\u5408\u5E76\uFF0C\u4F46\u7EDD\u4E0D\u81EA\u52A8 push\u3001\u4E0D\u5408\u5E76\u8FDC\u7AEF\u6216\u4E3B\u5E72\u3001\u4E0D\u53D1\u5E03\u3002\u89E6\u53D1\u8BCD\uFF1Aauto-review\u3001\u81EA\u52A8\u5BA1\u67E5\u3001review \u540E\u81EA\u52A8\u5408\u5E76\u3001\u5BA1\u5B8C\u76F4\u63A5\u63D0\u4EA4\u5408\u5E76\u3001auto review\u3002\u4E0D\u9002\u7528\uFF1A\u53EA\u8BFB\u4EFB\u52A1\u3001\u7528\u6237\u8981\u5148\u9A8C\u6536\u6548\u679C\u7684\u6539\u52A8\uFF08\u5148\u4EA4\u4ED8\u4EA7\u7269\u7B49\u53CD\u9988\uFF09\u3002"
1147
+ };
1148
+ }
1149
+ var BODY = [
1150
+ "\u4F60\u662F\u300C\u81EA\u52A8\u5BA1\u67E5\u5408\u5E76\u300D\u6D41\u7A0B\u7684\u6267\u884C\u8005\uFF1A\u6539\u52A8\u505A\u5B8C\u540E\uFF0C\u4E0D\u7B49\u7528\u6237\u9010\u6B65\u70B9\u5934\uFF0C\u81EA\u5DF1\u628A\u5BA1\u67E5\u3001\u63D0\u4EA4\u3001\u672C\u5730\u5408\u5E76\u8D70\u5B8C\u3002",
1151
+ "",
1152
+ "## \u5F00\u542F\u6761\u4EF6\u4E0E\u8FB9\u754C",
1153
+ "- \u4EC5\u5728\u7528\u6237\u663E\u5F0F\u5F00\u542F\uFF08\u8BF4 auto-review / \u81EA\u52A8\u5BA1\u67E5\u5408\u5E76\uFF09\u540E\u4F7F\u7528\uFF1B\u5F00\u542F\u53EA\u6388\u6743**\u672C\u5730\u63D0\u4EA4\u4E0E\u672C\u5730\u96C6\u6210\u5206\u652F\u5408\u5E76**\u3002",
1154
+ "- \u6C38\u8FDC\u9700\u8981\u5F53\u6B21\u660E\u786E\u6279\u51C6\uFF1A`git push`\u3001\u5408\u5E76\u5230\u8FDC\u7AEF\u6216\u4E3B\u5E72\u5206\u652F\u3001\u53D1\u5E03/\u90E8\u7F72\u3001\u56DE\u6EDA\u3002\u5F00\u542F\u672C skill \u4E0D\u653E\u5BBD\u8FD9\u4E9B\u3002",
1155
+ "- \u9700\u8981\u7528\u6237\u4EB2\u81EA\u9A8C\u6536\u7684\u6539\u52A8\uFF08UI\u3001\u4F53\u9A8C\u7C7B\uFF09\uFF1A\u5148\u4EA4\u4ED8\u53EF\u6D4B\u8BD5\u4EA7\u7269\u5E76\u505C\u4E0B\uFF0C\u7B49\u7528\u6237\u786E\u8BA4\u300C\u53EF\u4EE5\u300D\u518D\u8FDB\u5165\u4E0B\u9762\u6D41\u7A0B\u3002",
1156
+ "",
1157
+ "## \u6D41\u7A0B",
1158
+ "1. **\u9694\u79BB**\uFF1A\u6539\u52A8\u5E94\u5DF2\u5728\u72EC\u7ACB worktree/\u5206\u652F\u91CC\uFF08\u89C1 `worktree-isolation`\uFF09\uFF1B\u4E0D\u5728\u5C31\u5148\u5EFA\u3002",
1159
+ "2. **\u6D3E reviewer**\uFF1A\u4E0E\u4F5C\u8005\u4E0D\u540C\u7684 agent \u5B9E\u4F8B\uFF0C\u53EA\u8BFB\u5BA1 diff\uFF0C\u53EA\u4F20 worktree \u8DEF\u5F84\u4E0E\u6587\u4EF6\u6E05\u5355\uFF0C\u4E0D\u5185\u5D4C diff\u3002brief \u8981\u6C42\u6700\u7EC8\u6587\u672C\u542B Verdict\uFF08APPROVE / WARNING / BLOCK\uFF09\u4E0E\u5E26\u884C\u53F7\u7684 finding\u3002",
1160
+ "3. **\u5224\u5B9A**\uFF1A",
1161
+ " - \u6700\u7EC8\u6587\u672C\u542B\u660E\u786E APPROVE \u4E14\u65E0 CRITICAL/HIGH \u2192 \u7EE7\u7EED\uFF1B",
1162
+ " - BLOCK \u2192 \u4FEE\u590D\u540E\u590D\u5BA1\uFF0C\u5FAA\u73AF\u76F4\u5230 APPROVE\uFF1B",
1163
+ " - WARNING\uFF08\u6709 HIGH\uFF09\u2192 \u505C\u4E0B\uFF0C\u628A finding \u62A5\u7ED9\u7528\u6237\u51B3\u5B9A\uFF0C\u4E0D\u81EA\u52A8\u5408\u5E76\uFF1B",
1164
+ " - \u7A7A\u56DE\u590D\u3001\u8D85\u65F6\u3001\u53EA\u8BF4\u300C\u6211\u5148\u68C0\u67E5\u300D\u90FD\u4E0D\u662F\u5BA1\u67E5\u8BC1\u636E\uFF1A\u6700\u591A\u91CD\u8BD5\u4E00\u6B21\uFF0C\u4ECD\u65E0\u7ED3\u8BBA\u5C31\u62A5\u544A `review incomplete`\uFF0C\u4EA4\u7528\u6237\u5904\u7406\u3002",
1165
+ "4. **\u63D0\u4EA4**\uFF1A\u6309\u9879\u76EE\u7684\u63D0\u4EA4\u89C4\u8303\u5199 message\uFF1B\u5982\u5B9E\u8BB0\u5F55\u8C01\u5BA1\u7684\u3001\u7ED3\u8BBA\u662F\u4EC0\u4E48\u3002\u65E0 review \u4E0D\u63D0\u4EA4\uFF08\u22642 \u6B65\u96F6\u903B\u8F91\u98CE\u9669\u7684\u673A\u68B0\u6539\u52A8\u9664\u5916\uFF0C\u987B\u5728 message \u6CE8\u660E\u539F\u56E0\uFF09\u3002",
1166
+ "5. **\u5408\u5E76**\uFF1A\u5728\u4E3B\u4ED3\u7528 `git merge --no-ff <\u5206\u652F>` \u5408\u5E76\u5230\u672C\u5730\u96C6\u6210\u5206\u652F\uFF0C\u4FDD\u7559\u5206\u652F\u5386\u53F2\u3002",
1167
+ "6. **\u6E05\u7406**\uFF1A\u5408\u5E76\u6210\u529F\u540E\uFF0C\u4E3B\u52A8\u5217\u51FA\u672C\u6B21\u4EA7\u751F\u7684\u5F85\u6E05\u7406\u8D44\u6E90\u6E05\u5355\uFF08\u786E\u5207\u7684 worktree \u76F8\u5BF9\u8DEF\u5F84\u4E0E\u5206\u652F\u540D\u79F0\uFF09\uFF1B\u83B7\u5F97\u7528\u6237\u660E\u786E\u786E\u8BA4\u540E\uFF0C\u6267\u884C `git worktree remove <worktreePath>` \u4E0E `git branch -d <branchName>` \u5B8C\u6210\u6E05\u7406\u95ED\u73AF\uFF1B\u4E25\u7981\u9759\u9ED8\u5220\u9664\u6216\u5148\u5220\u540E\u62A5\u3002",
1168
+ "7. **\u6536\u5C3E**\uFF1A\u6C47\u62A5 commit\u3001\u5408\u5E76\u4E0E\u6E05\u7406\u7ED3\u679C\u3001reviewer \u4E0E Verdict\u3001\u672A\u5904\u7406\u7684 WARNING\u3002\u5230\u6B64\u4E3A\u6B62\uFF0C\u4E0D push\u3002",
1169
+ "",
1170
+ "## \u9009 reviewer",
1171
+ "- \u6309\u5E73\u53F0\u9009\u4EBA\u5951\u7EA6\uFF1A\u6536\u85CF\u7684\u79C1\u6709\u8BA2\u9605/\u81EA\u5E26 key agent \u4F18\u5148\uFF0C\u5176\u6B21\u5176\u4ED6\u6536\u85CF\uFF0C\u518D\u5176\u6B21\u672A\u6536\u85CF\u7684\u79C1\u6709 agent\uFF1B\u4F4E\u4EF7\u80DC\u4EFB\u8005\u5373\u53EF\u3002\u53EA\u6709\u67B6\u6784/\u8BA1\u8D39/\u5B89\u5168/\u6570\u636E\u5B8C\u6574\u6027\u9AD8\u98CE\u9669\u6539\u52A8\u624D\u7528\u9876\u6863\u3002",
1172
+ "- \u4F1A\u6D88\u8017\u5E73\u53F0\u79EF\u5206\u7684 agent \u5FC5\u987B\u5148\u5F81\u5F97\u7528\u6237\u5F53\u6B21\u540C\u610F\u3002",
1173
+ "",
1174
+ "## Boundaries",
1175
+ "- \u4E0D\u66FF\u4EE3 reviewer \u4FA7\u7684\u8D28\u91CF\u95E8\uFF0C\u4E5F\u4E0D\u66FF\u4EE3\u6D4B\u8BD5\uFF1B\u6D4B\u8BD5\u6CA1\u8DD1\u8FC7\u4E0D\u8981\u5408\u5E76\u3002",
1176
+ "- \u4E0D\u4F2A\u9020 review \u8BC1\u636E\uFF1B\u4E0D\u7528 `--no-verify` \u7ED5\u8FC7\u63D0\u4EA4\u6216\u5408\u5E76\u94A9\u5B50\u3002"
1177
+ ].join("\n");
1178
+ function buildAutoReviewSkillContentBySlug(slug) {
1179
+ return buildSkillDocMarkdown({
1180
+ body: BODY,
1181
+ skillConfig: buildAutoReviewSkillConfig(slug)
1182
+ });
1183
+ }
1184
+
1115
1185
  // packages/ai/skills/worktreeSkill.ts
1116
1186
  var WORKTREE_SKILL_SLUGS = ["worktree-isolation"];
1117
- function deterministicId6(prefix, seed) {
1187
+ function deterministicId7(prefix, seed) {
1118
1188
  let h = 2166136261;
1119
1189
  for (let i = 0; i < seed.length; i++) {
1120
1190
  h ^= seed.charCodeAt(i);
@@ -1127,7 +1197,7 @@ function normalizeSkillSeed6(input) {
1127
1197
  return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
1128
1198
  }
1129
1199
  function buildWorktreeSkillId(slug) {
1130
- return deterministicId6("01SK", normalizeSkillSeed6(slug) || slug);
1200
+ return deterministicId7("01SK", normalizeSkillSeed6(slug) || slug);
1131
1201
  }
1132
1202
  function buildWorktreeSkillPageKey(userId, slug) {
1133
1203
  return `page-${userId}-${buildWorktreeSkillId(slug)}`;
@@ -1194,7 +1264,7 @@ function buildWorktreeSkillContentBySlug(slug) {
1194
1264
 
1195
1265
  // packages/ai/skills/systematicInvestigationSkill.ts
1196
1266
  var SYSTEMATIC_INVESTIGATION_SKILL_SLUGS = ["systematic-investigation"];
1197
- function deterministicId7(prefix, seed) {
1267
+ function deterministicId8(prefix, seed) {
1198
1268
  let h = 2166136261;
1199
1269
  for (let i = 0; i < seed.length; i++) {
1200
1270
  h ^= seed.charCodeAt(i);
@@ -1207,7 +1277,7 @@ function normalizeSkillSeed7(input) {
1207
1277
  return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
1208
1278
  }
1209
1279
  function buildSystematicinvestigationSkillId(slug) {
1210
- return deterministicId7("01SK", normalizeSkillSeed7(slug) || slug);
1280
+ return deterministicId8("01SK", normalizeSkillSeed7(slug) || slug);
1211
1281
  }
1212
1282
  function buildSystematicinvestigationSkillPageKey(userId, slug) {
1213
1283
  return `page-${userId}-${buildSystematicinvestigationSkillId(slug)}`;
@@ -1231,7 +1301,7 @@ function buildSystematicinvestigationSkillContentBySlug(slug) {
1231
1301
 
1232
1302
  // packages/ai/skills/showMeSkill.ts
1233
1303
  var SHOW_ME_SKILL_SLUGS = ["show-me"];
1234
- function deterministicId8(prefix, seed) {
1304
+ function deterministicId9(prefix, seed) {
1235
1305
  let h = 2166136261;
1236
1306
  for (let i = 0; i < seed.length; i++) {
1237
1307
  h ^= seed.charCodeAt(i);
@@ -1244,7 +1314,7 @@ function normalizeSkillSeed8(input) {
1244
1314
  return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
1245
1315
  }
1246
1316
  function buildShowmeSkillId(slug) {
1247
- return deterministicId8("01SK", normalizeSkillSeed8(slug) || slug);
1317
+ return deterministicId9("01SK", normalizeSkillSeed8(slug) || slug);
1248
1318
  }
1249
1319
  function buildShowmeSkillPageKey(userId, slug) {
1250
1320
  return `page-${userId}-${buildShowmeSkillId(slug)}`;
@@ -1268,7 +1338,7 @@ function buildShowmeSkillContentBySlug(slug) {
1268
1338
 
1269
1339
  // packages/ai/skills/cavemanSkill.ts
1270
1340
  var CAVEMAN_SKILL_SLUGS = ["caveman"];
1271
- function deterministicId9(prefix, seed) {
1341
+ function deterministicId10(prefix, seed) {
1272
1342
  let h = 2166136261;
1273
1343
  for (let i = 0; i < seed.length; i++) {
1274
1344
  h ^= seed.charCodeAt(i);
@@ -1281,7 +1351,7 @@ function normalizeSkillSeed9(input) {
1281
1351
  return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
1282
1352
  }
1283
1353
  function buildCavemanSkillId(slug) {
1284
- return deterministicId9("01SK", normalizeSkillSeed9(slug) || slug);
1354
+ return deterministicId10("01SK", normalizeSkillSeed9(slug) || slug);
1285
1355
  }
1286
1356
  function buildCavemanSkillPageKey(userId, slug) {
1287
1357
  return `page-${userId}-${buildCavemanSkillId(slug)}`;
@@ -1305,7 +1375,7 @@ function buildCavemanSkillContentBySlug(slug) {
1305
1375
 
1306
1376
  // packages/ai/skills/skillCreatorSkill.ts
1307
1377
  var SKILL_CREATOR_SKILL_SLUGS = ["skill-creator"];
1308
- function deterministicId10(prefix, seed) {
1378
+ function deterministicId11(prefix, seed) {
1309
1379
  let h = 2166136261;
1310
1380
  for (let i = 0; i < seed.length; i++) {
1311
1381
  h ^= seed.charCodeAt(i);
@@ -1318,7 +1388,7 @@ function normalizeSkillSeed10(input) {
1318
1388
  return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
1319
1389
  }
1320
1390
  function buildSkillCreatorSkillId(slug) {
1321
- return deterministicId10("01SK", normalizeSkillSeed10(slug) || slug);
1391
+ return deterministicId11("01SK", normalizeSkillSeed10(slug) || slug);
1322
1392
  }
1323
1393
  function buildSkillCreatorSkillPageKey(userId, slug) {
1324
1394
  return `page-${userId}-${buildSkillCreatorSkillId(slug)}`;
@@ -1342,7 +1412,7 @@ function buildSkillCreatorSkillContentBySlug(slug) {
1342
1412
 
1343
1413
  // packages/ai/skills/agentProviderSetupSkill.ts
1344
1414
  var AGENT_PROVIDER_SETUP_SKILL_SLUGS = ["agent-provider-setup"];
1345
- function deterministicId11(prefix, seed) {
1415
+ function deterministicId12(prefix, seed) {
1346
1416
  let h = 2166136261;
1347
1417
  for (let i = 0; i < seed.length; i++) {
1348
1418
  h ^= seed.charCodeAt(i);
@@ -1355,7 +1425,7 @@ function normalizeSkillSeed11(input) {
1355
1425
  return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
1356
1426
  }
1357
1427
  function buildAgentProviderSetupSkillId(slug) {
1358
- return deterministicId11("01SK", normalizeSkillSeed11(slug) || slug);
1428
+ return deterministicId12("01SK", normalizeSkillSeed11(slug) || slug);
1359
1429
  }
1360
1430
  function buildAgentProviderSetupSkillPageKey(userId, slug) {
1361
1431
  return `page-${userId}-${buildAgentProviderSetupSkillId(slug)}`;
@@ -1486,6 +1556,13 @@ var SOURCES = [
1486
1556
  buildConfig: buildSearchSpaceSkillConfig,
1487
1557
  buildContent: buildSearchSpaceSkillContentBySlug
1488
1558
  },
1559
+ {
1560
+ slugs: AUTO_REVIEW_SKILL_SLUGS,
1561
+ buildSkillId: buildAutoReviewSkillId,
1562
+ buildPageKey: buildAutoReviewSkillPageKey,
1563
+ buildConfig: buildAutoReviewSkillConfig,
1564
+ buildContent: buildAutoReviewSkillContentBySlug
1565
+ },
1489
1566
  {
1490
1567
  slugs: WORKTREE_SKILL_SLUGS,
1491
1568
  buildSkillId: buildWorktreeSkillId,
@@ -1,13 +1,16 @@
1
- import {
2
- buildSkillDocMarkdown
3
- } from "./chunk-Q554LLSI.js";
4
1
  import {
5
2
  SYSTEM_AGENT_CAPABILITIES,
6
3
  SYSTEM_AGENT_CAPABILITY_IDS
7
- } from "./chunk-QDSINZM3.js";
4
+ } from "./chunk-WJ3B6FX6.js";
5
+ import {
6
+ buildSkillDocMarkdown
7
+ } from "./chunk-VLGL7FOL.js";
8
+ import {
9
+ CHROME_CONNECTOR_ACCEPTED_TOOL_NAMES
10
+ } from "./chunk-5J3PYNUP.js";
8
11
  import {
9
12
  createKey
10
- } from "./chunk-VMFTFOWF.js";
13
+ } from "./chunk-ODAPITXL.js";
11
14
 
12
15
  // packages/ai/tools/codeWorkDiscipline.ts
13
16
  var CODE_WORK_DISCIPLINE_BODY = `## \u6548\u7387\u4F18\u5148\uFF08\u7701 token\uFF09
@@ -30,7 +33,7 @@ var CODE_WORK_DISCIPLINE_BODY = `## \u6548\u7387\u4F18\u5148\uFF08\u7701 token\u
30
33
  - \u6309\u89D2\u8272\u52A0\u8F7D\u5BF9\u5E94 skill\uFF1Areviewer \u5148 \`loadSkill("coding-review")\` \u62FF\u901A\u7528\u6D41\u7A0B\uFF0C\u518D\u6309\u89D2\u8272 \`loadSkill("coding-review-<role>")\` \u62FF\u68C0\u67E5\u9879\u3002\u89D2\u8272\u6E05\u5355\uFF1Acode-quality\uFF08**\u5FC5\u8DD1**\uFF09/ architecture\uFF08**\u5355\u72EC\u6D3E\u53D1**\uFF0C\u4E2D\u7EA7\u4EE5\u4E0A\u95EE\u9898\uFF09/ security\uFF08\u6309\u9700 + \u5B89\u5168\u654F\u611F\u89E6\u53D1\u5FC5\u8DD1\uFF09/ frontend-ux\uFF08\u6D89\u53CA UI \u65F6\uFF09/ backend-data\uFF08\u6D89\u53CA server \u65F6\uFF09\u3002\u89D2\u8272\u5207\u5272\u7684\u76EE\u7684\u662F\u6CE8\u610F\u529B\u9694\u79BB\u2014\u2014\u6BCF\u4E2A\u89D2\u8272\u53EA\u76EF\u81EA\u5DF1\u7684\u68C0\u67E5\u9762\uFF0C\u6309\u9700\u542F\u7528\uFF0C\u907F\u514D\u4E00\u4E2A reviewer \u80CC\u6240\u6709\u89D2\u8272\u5BFC\u81F4\u6CE8\u610F\u529B\u7A00\u91CA\u3002
31
34
  - Verdict \u6807\u51C6\uFF1AAPPROVE\uFF08\u65E0 CRITICAL \u6216 HIGH\uFF09\u2192 \u53EF commit\uFF1BWARNING\uFF08\u4EC5 HIGH\uFF09\u2192 \u62A5\u544A owner \u51B3\u5B9A\uFF1BBLOCK\uFF08\u6709 CRITICAL\uFF09\u2192 \u5FC5\u987B\u5148\u4FEE\u3002
32
35
  - review \u662F\u591A\u8F6E\u6536\u655B\u7684\uFF1A\u6D3E reviewer \u5BA1\u5DE5\u4F5C\u533A diff \u2192 \u51FA finding \u5C31\u4FEE \u2192 \u590D\u5BA1\uFF0C\u76F4\u5230 APPROVE \u624D\u63D0\u4EA4\u3002\u6BCF\u8F6E review \u65E0\u4E0A\u4E0B\u6587\u2014\u2014reviewer \u53EA\u770B\u5F53\u524D\u5DE5\u4F5C\u533A diff\uFF0C\u4E0D\u5E26\u4E0A\u4E00\u8F6E finding \u8BB0\u5FC6\u3002
33
- - \u82E5\u5904\u4E8E\u5355 Agent \u72EC\u5360\u73AF\u5883\u3001\u5176\u4ED6 agent \u4E0D\u53EF\u8FBE\u3001\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u76F4\u63A5\u63D0\u4EA4\uFF0C\u5141\u8BB8\u5E26\u539F\u56E0\u8DF3\u8FC7\uFF08commit message \u6CE8\u660E [no-review: \u539F\u56E0]\uFF09\uFF0C\u4F46\u9ED8\u8BA4\u5FC5\u987B\u6D3E review\u3002`;
36
+ - \u82E5\u5904\u4E8E\u5355 Agent \u72EC\u5360\u73AF\u5883\u3001\u5176\u4ED6 agent \u4E0D\u53EF\u8FBE\u3001\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u76F4\u63A5\u63D0\u4EA4\uFF1A\u4E0D\u8981\u8865\u5199\u6216\u4F2A\u9020 review \u8BC1\u636E\uFF0C\u4E5F**\u4E0D\u8981\u7528 [no-review: \u539F\u56E0] \u8FD9\u7C7B\u5199\u6CD5**\u2014\u2014\u5B83\u4EFB\u4F55\u5224\u636E\u90FD\u89E3\u6790\u4E0D\u4E86\uFF0C\u5199\u4E86\u7167\u6837\u88AB\u62E6\u3002\u81EA\u6709\u95F8\u95E8\u8BA4\u7684\u5F62\u5F0F\u662F Reviewed-by: <\u975E\u7A7A\u7F72\u540D> \u52A0 Review: \u5E26\u7ED3\u8BBA\uFF08APPROVE / Approved / WARNING\uFF0C\u5360\u4F4D\u7B26\u5982 <pending> \u4E0D\u7B97\uFF09\uFF0Ccommit-msg \u4E0E pre-push / pre-merge \u90FD\u8D70\u8FD9\u4E00\u6761\u6B63\u5219\u3002pre-push / pre-merge **\u53E6**\u8BA4\u4E00\u6761 owner-only \u8C41\u514D\uFF1A\u6B63\u6587\u5199 No-Review: <\u539F\u56E0> \u4E14 commit author email \u547D\u4E2D packages/nolo-ci/core/src/mapping.ts \u7684 NO_REVIEW_OWNER_EMAILS \u767D\u540D\u5355\u2014\u2014agent \u8EAB\u4EFD\uFF08\u5982 app-builder@nolo.local\uFF09\u4E0D\u9002\u7528\u3002\u771F\u88AB\u5361\u4F4F\u5C31\u5982\u5B9E\u4E0A\u62A5\u5361\u70B9\u3001\u7531 owner \u51B3\u5B9A\uFF1Bgit push --no-verify \u4EC5\u9650\u7BA1\u7406\u5458/\u7D27\u6025\u6062\u590D\uFF0C\u670D\u52A1\u7AEF G2 \u4E0D\u53EF\u7ED5\u8FC7\u3002`;
34
37
  var buildCodeWorkDiscipline = (heading) => `# ${heading}
35
38
 
36
39
  ${CODE_WORK_DISCIPLINE_BODY}`;
@@ -61,6 +64,8 @@ var TOOL_PACKS = {
61
64
  "updateSelf",
62
65
  "ask_user",
63
66
  "createAgentAutomation",
67
+ "updateAgentAutomation",
68
+ "deleteAgentAutomation",
64
69
  "notifyUser"
65
70
  ],
66
71
  // L2 - 联网搜索:与 CAPABILITY_PACKS「web-search」对齐。
@@ -236,7 +241,7 @@ var CAPABILITY_PACKS = [
236
241
  {
237
242
  id: "video-transcription",
238
243
  label: "\u89C6\u9891\u8F6C\u5199",
239
- description: "\u8D34\u89C6\u9891\u94FE\u63A5\u5373\u53EF\u8F6C\u5199\u4E3A\u5E26\u6807\u70B9\u6587\u672C\u4E0E SRT\u3002\u652F\u6301 B \u7AD9\u5206 P\uFF08\u9ED8\u8BA4\u5168\u90E8\u5904\u7406\uFF09\u3001YouTube \u7B49\uFF1B\u6296\u97F3\u8BF7\u5728\u684C\u9762\u7AEF\u6D4F\u89C8\u5668\u4F7F\u7528\u3002",
244
+ description: "\u8D34\u89C6\u9891\u94FE\u63A5\u5373\u53EF\u8F6C\u5199\u4E3A\u5E26\u6807\u70B9\u6587\u672C\u4E0E SRT\u3002\u652F\u6301 B \u7AD9\u5206 P\uFF08\u9ED8\u8BA4\u5168\u90E8\u5904\u7406\uFF09\u3001YouTube \u7B49\uFF1B\u652F\u6301\u6296\u97F3\u5206\u4EAB\u6587\u6848/\u77ED\u94FE\uFF0C\u628A\u5206\u4EAB\u6587\u5B57\u91CC\u7684\u94FE\u63A5\u4F20\u7ED9 url\u3002",
240
245
  tools: ["transcribeVideo"],
241
246
  defaultEnabled: false,
242
247
  icon: "\u{1F3AC}",
@@ -246,7 +251,7 @@ var CAPABILITY_PACKS = [
246
251
  - \u7528\u6237\u8D34\u4E0A\u89C6\u9891\u94FE\u63A5\u65F6\uFF0C\u76F4\u63A5\u8C03\u7528 \`transcribeVideo({ url })\`\uFF0C\u4E0D\u8981\u5148\u95EE\u8981\u4E0D\u8981\u8F6C\u5199\u3002
247
252
  - B \u7AD9\u5206 P / \u5408\u96C6\uFF1A\u7F3A\u7701\u5904\u7406\u5168\u90E8\uFF1B\u82E5\u7528\u6237\u6307\u5B9A\u300C\u53EA\u8981\u7B2C 3\u30014 \u96C6\u300D\u5219\u4F20 \`p: [3, 4]\`\u3002
248
253
  - \u8FD4\u56DE\u91CC\u7684 \`processedParts\` / \`availableParts\` \u5FC5\u987B\u5411\u7528\u6237\u8BF4\u6E05\u695A\uFF0C\u907F\u514D\u9759\u9ED8\u4E22\u5206 P\u3002
249
- - \u6296\u97F3\u82E5\u62A5\u300C\u8BE5\u5E73\u53F0\u9700\u8981\u767B\u5F55\u6001\uFF0C\u8BF7\u5728\u684C\u9762\u7AEF\u6D4F\u89C8\u5668\u4E2D\u4F7F\u7528\u300D\uFF0C\u63D0\u793A\u7528\u6237\u6539\u8D70\u684C\u9762\u7AEF\u6D4F\u89C8\u80FD\u529B\uFF0C\u4E0D\u8981\u5C1D\u8BD5\u4F20 cookie\u3002
254
+ - \u652F\u6301\u6296\u97F3\u5206\u4EAB\u6587\u6848/\u77ED\u94FE\uFF0C\u628A\u5206\u4EAB\u6587\u5B57\u91CC\u7684\u94FE\u63A5\u4F20\u7ED9 url\u3002
250
255
  `
251
256
  }
252
257
  ];
@@ -353,7 +358,7 @@ function isWebSearchTool(name) {
353
358
  return WEB_SEARCH_TOOL_NAMES.has(name);
354
359
  }
355
360
  function isBrowserTool(name) {
356
- return name.startsWith("browser_");
361
+ return name.startsWith("browser_") && !CHROME_CONNECTOR_ACCEPTED_TOOL_NAMES.includes(name);
357
362
  }
358
363
  function addDefaultLightWebToolsForConfiguredAgents(toolNames, agentConfig) {
359
364
  const explicitToolNames = Array.isArray(
@@ -1,16 +1,16 @@
1
1
  import {
2
- require_date_fns
3
- } from "./chunk-M76ECQRD.js";
2
+ formatISO
3
+ } from "./chunk-ZRAU6T47.js";
4
4
  import {
5
5
  require_react
6
6
  } from "./chunk-YDH3FDFQ.js";
7
- import {
8
- toErrorMessage
9
- } from "./chunk-HNMXYYJR.js";
10
7
  import {
11
8
  patch,
12
9
  readAndWait
13
- } from "./chunk-H62HCIUP.js";
10
+ } from "./chunk-56HJ2LAA.js";
11
+ import {
12
+ toErrorMessage
13
+ } from "./chunk-HNMXYYJR.js";
14
14
  import {
15
15
  asOptionalTrimmedString
16
16
  } from "./chunk-G3SUCT4W.js";
@@ -20,7 +20,6 @@ import {
20
20
 
21
21
  // packages/render/page/docStore.ts
22
22
  var import_react = __toESM(require_react(), 1);
23
- var import_date_fns = __toESM(require_date_fns(), 1);
24
23
  var createInitialState = () => ({
25
24
  content: null,
26
25
  slateData: null,
@@ -52,6 +51,7 @@ var createInitialState = () => ({
52
51
  var listeners = /* @__PURE__ */ new Set();
53
52
  var version = 0;
54
53
  var state = createInitialState();
54
+ var latestInitRequestKey = null;
55
55
  var notify = () => {
56
56
  for (const listener of listeners) {
57
57
  try {
@@ -102,6 +102,9 @@ function getDocField(selector) {
102
102
  function getDocPageKey() {
103
103
  return state.pageKey;
104
104
  }
105
+ function isDocStateForPage(state2, pageKey) {
106
+ return Boolean(pageKey) && state2.pageKey === pageKey;
107
+ }
105
108
  function getDocIsInitialized() {
106
109
  return state.isInitialized;
107
110
  }
@@ -143,6 +146,7 @@ function updateDocTags(tags) {
143
146
  setState((prev) => ({ ...prev, tags }));
144
147
  }
145
148
  function resetDocState() {
149
+ latestInitRequestKey = null;
146
150
  setState(createInitialState());
147
151
  }
148
152
  function previewDocState(payload) {
@@ -190,6 +194,7 @@ function applyExternalDocUpdate(payload) {
190
194
  }
191
195
  async function initDocState(args, { dispatch }) {
192
196
  const { pageKey, isReadOnly } = args;
197
+ latestInitRequestKey = pageKey;
193
198
  setState((prev) => ({
194
199
  ...createInitialState(),
195
200
  isLoading: true,
@@ -198,6 +203,7 @@ async function initDocState(args, { dispatch }) {
198
203
  }));
199
204
  try {
200
205
  const readAction = await dispatch(readAndWait(pageKey));
206
+ if (latestInitRequestKey !== pageKey) return;
201
207
  if (readAndWait.fulfilled.match(readAction) && readAction.payload) {
202
208
  const data = readAction.payload;
203
209
  if (data.type !== "page" /* DOC */) {
@@ -247,6 +253,7 @@ async function initDocState(args, { dispatch }) {
247
253
  }));
248
254
  }
249
255
  } catch (e) {
256
+ if (latestInitRequestKey !== pageKey) return;
250
257
  setState((prev) => ({
251
258
  ...prev,
252
259
  isLoading: false,
@@ -300,7 +307,7 @@ async function saveDocState(arg, { dispatch, getState }) {
300
307
  { slateToRenderMarkdown },
301
308
  { buildSkillSummaryMarker }
302
309
  ] = await Promise.all([
303
- import("./slateUtils-RIZES3PV.js"),
310
+ import("./slateUtils-NGV2NMKM.js"),
304
311
  import("./slateToRenderMarkdown-Y5IYN73U.js"),
305
312
  import("./skillSummaryMarker-42HKSXYY.js")
306
313
  ]);
@@ -309,7 +316,7 @@ async function saveDocState(arg, { dispatch, getState }) {
309
316
  const skillSummary = buildSkillSummaryMarker(meta);
310
317
  const content = slateToRenderMarkdown(slateData);
311
318
  const now = /* @__PURE__ */ new Date();
312
- const updatedAt = (0, import_date_fns.formatISO)(now);
319
+ const updatedAt = formatISO(now);
313
320
  await dispatch(
314
321
  patch({
315
322
  dbKey: pageKey,
@@ -326,7 +333,7 @@ async function saveDocState(arg, { dispatch, getState }) {
326
333
  ).unwrap();
327
334
  if (dbSpaceId) {
328
335
  try {
329
- const { updateContentTitle } = await import("./contentThunks-S4S7QPSO.js");
336
+ const { updateContentTitle } = await import("./contentThunks-A26ME6OJ.js");
330
337
  await dispatch(
331
338
  updateContentTitle({
332
339
  spaceId: dbSpaceId,
@@ -365,7 +372,7 @@ async function saveDocState(arg, { dispatch, getState }) {
365
372
  }
366
373
  }
367
374
  async function createDocState(args, thunkApi) {
368
- const { createPageAction } = await import("./createPageAction-FBV3OWX7.js");
375
+ const { createPageAction } = await import("./createPageAction-ANGKJTK2.js");
369
376
  return createPageAction(args, thunkApi);
370
377
  }
371
378
  function subscribe(listener) {
@@ -387,6 +394,7 @@ function useDocField(selector) {
387
394
  }
388
395
  function resetDocStoreForTests() {
389
396
  state = createInitialState();
397
+ latestInitRequestKey = null;
390
398
  bump();
391
399
  }
392
400
 
@@ -394,6 +402,7 @@ export {
394
402
  getDocState,
395
403
  getDocField,
396
404
  getDocPageKey,
405
+ isDocStateForPage,
397
406
  getDocIsInitialized,
398
407
  getDocIsReadOnly,
399
408
  getDocHasPendingChanges,
@@ -0,0 +1,50 @@
1
+ // node_modules/date-fns/esm/_lib/requiredArgs/index.js
2
+ function requiredArgs(required, args) {
3
+ if (args.length < required) {
4
+ throw new TypeError(required + " argument" + (required > 1 ? "s" : "") + " required, but only " + args.length + " present");
5
+ }
6
+ }
7
+
8
+ // node_modules/@babel/runtime/helpers/esm/typeof.js
9
+ function _typeof(o) {
10
+ "@babel/helpers - typeof";
11
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) {
12
+ return typeof o2;
13
+ } : function(o2) {
14
+ return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2;
15
+ }, _typeof(o);
16
+ }
17
+
18
+ // node_modules/date-fns/esm/toDate/index.js
19
+ function toDate(argument) {
20
+ requiredArgs(1, arguments);
21
+ var argStr = Object.prototype.toString.call(argument);
22
+ if (argument instanceof Date || _typeof(argument) === "object" && argStr === "[object Date]") {
23
+ return new Date(argument.getTime());
24
+ } else if (typeof argument === "number" || argStr === "[object Number]") {
25
+ return new Date(argument);
26
+ } else {
27
+ if ((typeof argument === "string" || argStr === "[object String]") && typeof console !== "undefined") {
28
+ console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments");
29
+ console.warn(new Error().stack);
30
+ }
31
+ return /* @__PURE__ */ new Date(NaN);
32
+ }
33
+ }
34
+
35
+ // node_modules/date-fns/esm/_lib/addLeadingZeros/index.js
36
+ function addLeadingZeros(number, targetLength) {
37
+ var sign = number < 0 ? "-" : "";
38
+ var output = Math.abs(number).toString();
39
+ while (output.length < targetLength) {
40
+ output = "0" + output;
41
+ }
42
+ return sign + output;
43
+ }
44
+
45
+ export {
46
+ _typeof,
47
+ requiredArgs,
48
+ toDate,
49
+ addLeadingZeros
50
+ };
@@ -67,7 +67,8 @@ var wrapHistoricalSummaryWithReplayGuard = (summary) => {
67
67
  const trimmed = summary.trim();
68
68
  if (!trimmed) return "";
69
69
  return [
70
- "\u3010\u5386\u53F2\u53C2\u8003\uFF0C\u975E\u6D3B\u6307\u4EE4\u3011\u4EE5\u4E0B\u4E3A\u51BB\u7ED3\u6458\u8981\uFF0C\u5176\u4E2D\u7684\u4EFB\u52A1/skill/ARGUMENTS \u9ED8\u8BA4\u5DF2\u8FC7\u671F\uFF0C\u4E0D\u5F97\u91CD\u65B0\u6267\u884C\u3002",
70
+ "\u3010\u5386\u53F2\u53C2\u8003\uFF0C\u975E\u6D3B\u6307\u4EE4\u3011\u4EE5\u4E0B\u4E3A\u51BB\u7ED3\u6458\u8981\uFF1A\u5176\u4E2D\u7684**\u52A8\u4F5C\u6307\u4EE4**\u3001\u53C2\u6570\u4E0E skill \u8C03\u7528\u9ED8\u8BA4\u5DF2\u7ECF\u505A\u8FC7\uFF0C\u4E0D\u8981\u91CD\u653E\uFF08\u91CD\u590D\u5EFA\u5206\u652F/issue/\u4EFB\u52A1\u5C31\u662F\u91CD\u653E\uFF09\u3002",
71
+ "\u4F46**\u7528\u6237\u7684\u76EE\u6807\u4E0E\u610F\u56FE\u4ECD\u7136\u6709\u6548**\uFF1A\u5B83\u89E3\u91CA\u4E86\u8FD9\u6BB5\u5BF9\u8BDD\u4E3A\u4EC0\u4E48\u8981\u505A\u8FD9\u4E9B\u4E8B\uFF1B\u9047\u5230\u76F8\u5173\u8BDD\u9898\u65F6\u5148\u6309\u5B83\u7406\u89E3\u4E0A\u4E0B\u6587\uFF0C\u4E0D\u8981\u5F53\u6210\u5DF2\u8FC7\u671F\u7684\u80CC\u666F\u3002",
71
72
  `\u6458\u8981\u4E2D\u6807\u6CE8\u300C\uFF08\u5F85\u9A8C\u8BC1\uFF09\u300D\u7684\u9879\u9700\u590D\u6838\u786E\u8BA4\uFF1B\u672A\u5B8C\u6210\u5F85\u529E\u548C\u300C\u4E0B\u4E00\u6B65\u300D\u9700\u7EE7\u7EED\u63A8\u8FDB\u2014\u2014\u8FD9\u4E9B\u662F\u7EED\u4F5C\u65B9\u5411\uFF0C\u4E0D\u662F\u91CD\u653E\u6307\u4EE4\u3002`,
72
73
  trimmed
73
74
  ].join("\n");
@@ -21,7 +21,7 @@ var BUILTIN_SUMMARY_LLM_CONFIG = {
21
21
  model: "mimo-v2.6-flash",
22
22
  // @deprecated 用 COMPACTION_SUMMARY_SYSTEM_PROMPT(packages/ai/context/compactionShared.ts)。
23
23
  // 生产代码已全部迁移;此旧两段式 prompt 仅被 scripts/probes/dialog 探针脚本使用,待探针迁移后删除。
24
- prompt: "\u4F60\u662F\u4E00\u4E2A\u4E13\u4E1A\u7684\u5BF9\u8BDD\u8BB0\u5FC6\u52A9\u7406\u3002\u8BF7\u57FA\u4E8E\u3010\u73B0\u6709\u8BB0\u5FC6\u3011\u548C\u3010\u65B0\u589E\u5BF9\u8BDD\u3011\uFF0C\u8F93\u51FA\u4E00\u4EFD\u66F4\u65B0\u540E\u7684\u5BF9\u8BDD\u8BB0\u5FC6\u6863\u6848\u3002\u4E25\u683C\u53EA\u8F93\u51FA\u4E0B\u9762\u4E24\u90E8\u5206\uFF0C\u6807\u9898\u5FC5\u987B\u5B8C\u5168\u4E00\u81F4\uFF1A\n\u5173\u952E\u4E8B\u5B9E\u6863\u6848\n- ...\n\u5BF9\u8BDD\u5267\u60C5\u6458\u8981\n- ...\n\u8981\u6C42\uFF1A1) \u4F7F\u7528\u5BF9\u8BDD\u4E3B\u8BED\u8A00\uFF1B\u6DF7\u5408\u8BED\u8A00\u65F6\u4F18\u5148\u8DDF\u968F\u7528\u6237\u4E3B\u8981\u8BED\u8A00\uFF0C\u4E13\u6709\u540D\u8BCD\u4FDD\u7559\u539F\u6587\u30022) \u5173\u952E\u4E8B\u5B9E\u6863\u6848\u53EA\u4FDD\u7559\u4E4B\u540E\u7EE7\u7EED\u5BF9\u8BDD\u4ECD\u6709\u4EF7\u503C\u7684\u4FE1\u606F\uFF0C\u4F8B\u5982\u7528\u6237\u504F\u597D\u3001\u76EE\u6807\u3001\u7EA6\u675F\u3001\u6280\u672F\u6808\u3001\u786E\u5B9A\u7684\u6587\u4EF6\u540D/\u53D8\u91CF\u540D\u3001\u6838\u5FC3\u51B3\u7B56\u3001\u5F85\u529E\u4E8B\u9879\u30023) \u5BF9\u8BDD\u5267\u60C5\u6458\u8981\u5148\u6781\u7B80\u6982\u62EC\u65E7\u4E0A\u4E0B\u6587\uFF0C\u518D\u66F4\u8BE6\u7EC6\u8BB0\u5F55\u6700\u8FD1\u65B0\u589E\u7684\u8FDB\u5C55\u3001\u5206\u6B67\u3001\u7ED3\u8BBA\u548C\u4E0B\u4E00\u6B65\u30024) \u5FFD\u7565\u5BD2\u6684\u3001\u91CD\u590D\u5C1D\u8BD5\u3001\u5DF2\u653E\u5F03\u65B9\u6848\u548C\u65E0\u4EF7\u503C\u5E9F\u8BDD\u30025) \u4E0D\u8981\u7F16\u9020\u672A\u51FA\u73B0\u7684\u4FE1\u606F\uFF0C\u4E0D\u8981\u8F93\u51FA\u5F00\u573A\u767D\u3001\u7ED3\u675F\u8BED\u3001markdown \u4EE3\u7801\u5757\u6216\u989D\u5916\u7AE0\u8282\u3002"
24
+ prompt: "\u4F60\u662F\u4E00\u4E2A\u4E13\u4E1A\u7684\u5BF9\u8BDD\u8BB0\u5FC6\u52A9\u7406\u3002\u8BF7\u57FA\u4E8E\u3010\u73B0\u6709\u8BB0\u5FC6\u3011\u548C\u3010\u65B0\u589E\u5BF9\u8BDD\u3011\uFF0C\u8F93\u51FA\u4E00\u4EFD\u66F4\u65B0\u540E\u7684\u5BF9\u8BDD\u8BB0\u5FC6\u6863\u6848\u3002\u4E25\u683C\u53EA\u8F93\u51FA\u4E0B\u9762\u4E24\u90E8\u5206\uFF0C\u6807\u9898\u5FC5\u987B\u5B8C\u5168\u4E00\u81F4\uFF1A\n\u5173\u952E\u4E8B\u5B9E\u6863\u6848\n- ...\n\u5BF9\u8BDD\u5267\u60C5\u6458\u8981\n- ...\n\u8981\u6C42\uFF1A1) \u4F7F\u7528\u5BF9\u8BDD\u4E3B\u8BED\u8A00\uFF1B\u6DF7\u5408\u8BED\u8A00\u65F6\u4F18\u5148\u8DDF\u968F\u7528\u6237\u4E3B\u8981\u8BED\u8A00\uFF0C\u4E13\u6709\u540D\u8BCD\u4FDD\u7559\u539F\u6587\u30022) \u5173\u952E\u4E8B\u5B9E\u6863\u6848\u53EA\u4FDD\u7559\u4E4B\u540E\u7EE7\u7EED\u5BF9\u8BDD\u4ECD\u6709\u4EF7\u503C\u7684\u4FE1\u606F\uFF0C\u4F8B\u5982\u7528\u6237\u504F\u597D\u3001\u76EE\u6807\u3001\u7EA6\u675F\u3001\u6280\u672F\u6808\u3001\u786E\u5B9A\u7684\u6587\u4EF6\u540D/\u53D8\u91CF\u540D\u3001\u6838\u5FC3\u51B3\u7B56\u3001\u5F85\u529E\u4E8B\u9879\u3002\u5176\u4E2D\u5FC5\u987B\u5148\u5199\u300C\u539F\u59CB\u76EE\u6807\u300D\uFF08\u7528\u6237\u6700\u521D\u4E3A\u4EC0\u4E48\u5F00\u8FD9\u6BB5\u5BF9\u8BDD\uFF0C\u5C3D\u91CF\u4FDD\u7559\u539F\u8BDD\uFF1B\u589E\u91CF\u66F4\u65B0\u65F6\u6CBF\u7528\u5DF2\u6709\u539F\u6587\uFF0C\u4E0D\u8981\u88AB\u65B0\u589E\u5BF9\u8BDD\u6539\u5199\uFF1B\u4EC5\u5F53\u65B0\u5BF9\u8BDD\u660E\u786E\u8868\u660E\u539F\u6587\u6709\u4E8B\u5B9E\u6027\u9519\u8BEF\u65F6\u624D\u4FEE\u6B63\uFF0C\u5E76\u5728\u300C\u76EE\u6807\u6F14\u5316\u300D\u91CC\u6CE8\u660E\uFF09\u4E0E\u300C\u76EE\u6807\u6F14\u5316\u300D\uFF08\u4E2D\u9014\u8F6C\u5411\u4E86\u4EC0\u4E48\u3001\u56E0\u4E3A\u4EC0\u4E48\uFF1B\u6CA1\u6709\u8F6C\u5411\u5C31\u5199\u300C\u65E0\u8F6C\u5411\u300D\u6216\u7701\u7565\uFF09\u2014\u2014\u88AB\u53D6\u4EE3\u7684\u662F\u65B9\u6848\uFF0C\u4E0D\u662F\u7528\u6237\u7684\u521D\u59CB\u610F\u56FE\uFF0C\u521D\u59CB\u610F\u56FE\u4E0D\u5F97\u7701\u7565\u30023) \u5BF9\u8BDD\u5267\u60C5\u6458\u8981\u5148\u6781\u7B80\u6982\u62EC\u65E7\u4E0A\u4E0B\u6587\uFF0C\u518D\u66F4\u8BE6\u7EC6\u8BB0\u5F55\u6700\u8FD1\u65B0\u589E\u7684\u8FDB\u5C55\u3001\u5206\u6B67\u3001\u7ED3\u8BBA\u548C\u4E0B\u4E00\u6B65\u30024) \u5FFD\u7565\u5BD2\u6684\u3001\u91CD\u590D\u5C1D\u8BD5\u548C\u65E0\u4EF7\u503C\u5E9F\u8BDD\uFF1B\u5DF2\u653E\u5F03\u7684\u65B9\u6848/\u5C1D\u8BD5\u53EF\u7701\u7565\uFF0C\u4F46\u7528\u6237\u5F53\u521D\u7684\u610F\u56FE\u4E0E\u7406\u7531\u4E0D\u53EF\u7701\u7565\uFF08\u89C1\u7B2C 2 \u6761\uFF09\u30025) \u4E0D\u8981\u7F16\u9020\u672A\u51FA\u73B0\u7684\u4FE1\u606F\uFF0C\u4E0D\u8981\u8F93\u51FA\u5F00\u573A\u767D\u3001\u7ED3\u675F\u8BED\u3001markdown \u4EE3\u7801\u5757\u6216\u989D\u5916\u7AE0\u8282\u3002"
25
25
  };
26
26
 
27
27
  export {