nolo-cli 0.79.0-alpha.1 → 0.79.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 (152) hide show
  1. package/README.md +2 -2
  2. package/{_executeModel-T3FPYFVF.js → _executeModel-U5V7LOJX.js} +46 -46
  3. package/{action-D22U6CTH.js → action-EXQVY3UO.js} +11 -11
  4. package/{addContentAction-XAPUTGL4.js → addContentAction-6IXQSRD2.js} +9 -9
  5. package/{addDialogAgentAction-M7VLLBZM.js → addDialogAgentAction-FZOB4BYM.js} +8 -8
  6. package/{agentDeleteCommand-2TYFURBN.js → agentDeleteCommand-4MIJFQQB.js} +30 -28
  7. package/{agentEmailCommands-7P35ZMUA.js → agentEmailCommands-JUXT36BY.js} +62 -60
  8. package/{agentGrantCommands-R3VQEZJR.js → agentGrantCommands-YW6PQAQ2.js} +2 -2
  9. package/{agentListCommands-IFUOWXP3.js → agentListCommands-MUVKMMZ5.js} +38 -30
  10. package/{agentMachineCommands-G46ZZ2ZQ.js → agentMachineCommands-56FTZLYV.js} +30 -28
  11. package/{agentProviderCommands-65ZC2WB4.js → agentProviderCommands-TOMVKJOV.js} +87 -0
  12. package/{agentPullCommand-N7L2CT7L.js → agentPullCommand-GLOOXJ2E.js} +3 -3
  13. package/{agentRecordCommands-R74LTQEQ.js → agentRecordCommands-FST3KAKG.js} +59 -57
  14. package/{agentRunCommand-IRSZYCEU.js → agentRunCommand-UMUEVIY2.js} +60 -58
  15. package/{agentRunControl-T44MESII.js → agentRunControl-XLGD3UZ5.js} +1 -1
  16. package/{agentRuntimeLocal-PUZINLWJ.js → agentRuntimeLocal-NH6GSGAJ.js} +28 -26
  17. package/{agentSlice-EACXUOWW.js → agentSlice-YZK6KG73.js} +10 -10
  18. package/{appDeleteCommands-U4NTEJYQ.js → appDeleteCommands-U45KXYX7.js} +30 -28
  19. package/{appDeployCommands-FXF45Q7F.js → appDeployCommands-LWQIQCFX.js} +30 -28
  20. package/{appDeployStatusCommands-KONVRM53.js → appDeployStatusCommands-LZO33PGD.js} +30 -28
  21. package/{appGetCommands-3VOGIZ7T.js → appGetCommands-OJSO6BCF.js} +30 -28
  22. package/{appListCommands-A6ROBW7P.js → appListCommands-NE56V7DI.js} +30 -28
  23. package/{authCommand-EVGFLAHO.js → authCommand-U5LA6H4Y.js} +164 -24
  24. package/{authCommands-ILTBI6JV.js → authCommands-RGOGCPP6.js} +4 -5
  25. package/builtinSkillRegistry-4NB7PCOF.js +33 -0
  26. package/{chatQueueReduxAdapter-XEIJO5WR.js → chatQueueReduxAdapter-FRMSYX7N.js} +24 -24
  27. package/{chunk-C3FZR5EC.js → chunk-2F7RJC6L.js} +1 -1
  28. package/{chunk-U6LKJRJB.js → chunk-377KM42Z.js} +42 -26
  29. package/{chunk-HQUORJTM.js → chunk-3BMYXEUW.js} +1 -1
  30. package/{chunk-AFIWC5NH.js → chunk-3XMOAYRC.js} +1 -1
  31. package/{chunk-UJ63UXGE.js → chunk-4CAPEGHN.js} +1077 -752
  32. package/{chunk-DWPNOYMB.js → chunk-4JBZUECA.js} +1 -1
  33. package/{chunk-NG4UT4K4.js → chunk-4QKBQHPQ.js} +1 -1
  34. package/{chunk-UZ6XXCVR.js → chunk-546FPOW3.js} +15 -2
  35. package/{chunk-5XTOKQLW.js → chunk-5UTFL4QJ.js} +6 -2
  36. package/chunk-5ZUL4CUO.js +10 -0
  37. package/{chunk-E6RGHPDR.js → chunk-6D6VBVEW.js} +4 -6
  38. package/{chunk-G3NT6BM3.js → chunk-7IBK6MYW.js} +142 -59
  39. package/{chunk-BYEJ7K2Z.js → chunk-7S4YWN7P.js} +1 -1
  40. package/{chunk-SREASRV5.js → chunk-ABQYVJBJ.js} +1 -1
  41. package/{chunk-H7UKKEIS.js → chunk-AQDH76OK.js} +1 -1
  42. package/{chunk-L2Y24GRM.js → chunk-B4S7MR5S.js} +16 -12
  43. package/{chunk-E36HZARC.js → chunk-BF2K6MRF.js} +3 -3
  44. package/{chunk-MGU5ADIQ.js → chunk-BKP7CFUD.js} +10 -10
  45. package/{chunk-2KDR4CWE.js → chunk-BYMV6QZG.js} +24 -1
  46. package/{chunk-AFIKMMGC.js → chunk-COM7GG76.js} +1 -1
  47. package/{chunk-HH65VA5U.js → chunk-CPH3W5A7.js} +15 -3
  48. package/{chunk-XWNRAIUL.js → chunk-DM4UNXPK.js} +6 -16
  49. package/{chunk-ZLPA7K55.js → chunk-DSX6K7C2.js} +29 -10
  50. package/{chunk-QA6YKM3H.js → chunk-E2NP7ZQU.js} +32 -4
  51. package/{chunk-FSFQ3A7S.js → chunk-E3VQ6S3A.js} +10 -10
  52. package/{chunk-YFADVSZE.js → chunk-F3UTRUDO.js} +6 -6
  53. package/{chunk-KIS76A2P.js → chunk-G5X57NDE.js} +38 -4
  54. package/{chunk-BJIRLHJR.js → chunk-GII32WZW.js} +1 -0
  55. package/{chunk-DSRXPQWA.js → chunk-GRDSMV4V.js} +43 -43
  56. package/{chunk-733J6D44.js → chunk-HGRDL36J.js} +6 -6
  57. package/{chunk-OZX2IPKM.js → chunk-HQCSU3DI.js} +1 -1
  58. package/{chunk-3JQ2NRYU.js → chunk-HVURBGF3.js} +4 -4
  59. package/{chunk-QC5LGHYP.js → chunk-HWZAXNO7.js} +10 -5
  60. package/{chunk-Q6FF2MCK.js → chunk-IIKPWSPX.js} +1 -1
  61. package/{chunk-KC5FAHVS.js → chunk-JEDZAO7L.js} +1 -1
  62. package/{chunk-6XIE5ZGI.js → chunk-JPGCXHNM.js} +1 -1
  63. package/{chunk-AJHEFRGJ.js → chunk-JTYPAMGP.js} +155 -1
  64. package/{chunk-UDQWGU7F.js → chunk-KR3YI36B.js} +1 -1
  65. package/{chunk-RXX4GDIH.js → chunk-LS2ZANRJ.js} +1 -1
  66. package/{chunk-SZLVDREM.js → chunk-LSSBA2TN.js} +3 -3
  67. package/{chunk-CMH2SYHX.js → chunk-MBEEYLGL.js} +2 -2
  68. package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
  69. package/{chunk-PGSKWZCB.js → chunk-NKIH4Q7W.js} +1 -1
  70. package/{chunk-FPTQQSS6.js → chunk-OH7H6LPC.js} +26 -5
  71. package/{chunk-5J7W2VWW.js → chunk-OOLWKQSM.js} +6 -265
  72. package/{chunk-AETZ7AD6.js → chunk-Q554LLSI.js} +1 -1
  73. package/chunk-Q5FJJ6XI.js +103 -0
  74. package/{chunk-JYYZCK2Z.js → chunk-QFMFJZLO.js} +1 -1
  75. package/{chunk-P7FA2HMM.js → chunk-QMASIHYZ.js} +13 -15
  76. package/{chunk-ZY4K4CZR.js → chunk-R2YY6MWV.js} +909 -304
  77. package/chunk-RLEWGSM5.js +677 -0
  78. package/{chunk-PYXL2CJL.js → chunk-RZYQMSQA.js} +1 -1
  79. package/{chunk-XEEHSS64.js → chunk-S3UI4IUJ.js} +1200 -52
  80. package/{chunk-SPAQ4PVV.js → chunk-SAFZABH7.js} +1 -1
  81. package/{chunk-QRBAZ5PW.js → chunk-SASGLNUD.js} +3 -3
  82. package/{chunk-D74EWXL4.js → chunk-SUERPXJZ.js} +390 -47
  83. package/{chunk-3QPYFHAH.js → chunk-TMAZ3VHN.js} +1 -1
  84. package/{chunk-BJCWNHVU.js → chunk-U47DH2WO.js} +2 -2
  85. package/{chunk-MEVSATIF.js → chunk-UBNV6CS6.js} +66 -792
  86. package/{chunk-EXMHJN7C.js → chunk-UDEFS2PV.js} +4 -3
  87. package/{chunk-NHRQCXIQ.js → chunk-VMFTFOWF.js} +13 -3
  88. package/{chunk-4EJ5QYB5.js → chunk-VOOTT7HA.js} +1 -1
  89. package/{chunk-PZM3EENV.js → chunk-W2E6HIIK.js} +1 -1
  90. package/chunk-WKEUHK57.js +1625 -0
  91. package/{chunk-GBPZKFYK.js → chunk-WON762L4.js} +4 -4
  92. package/{chunk-X7Z7U4Z6.js → chunk-WP6BC7OF.js} +15 -15
  93. package/{chunk-QUH3XHL5.js → chunk-X2ZTVRXP.js} +7 -7
  94. package/{chunk-MYU3MJCF.js → chunk-XAQAF25W.js} +175 -7
  95. package/chunk-XGJAR4T5.js +283 -0
  96. package/{chunk-ZZCJUXUI.js → chunk-XLGHBHGP.js} +2 -2
  97. package/{chunk-V3ZKNK5D.js → chunk-YOXYA2GU.js} +10 -10
  98. package/{chunk-ALGK6TIE.js → chunk-YPYMGGPJ.js} +3 -3
  99. package/{chunk-K7AG465Q.js → chunk-ZHUTWJ3N.js} +4 -2
  100. package/{chunk-CDVGNZDA.js → chunk-ZKMYGRO7.js} +11 -173
  101. package/{contentThunks-3SPROFG5.js → contentThunks-TC3AENBY.js} +25 -25
  102. package/{createAgentAutomationAction-EIP2EG3O.js → createAgentAutomationAction-67EOD3WK.js} +25 -25
  103. package/{createDialogAction-RLUSTN4D.js → createDialogAction-4OCQC5MW.js} +28 -28
  104. package/{createPageAction-4Y52G7WG.js → createPageAction-JLGVP57B.js} +26 -26
  105. package/{dbSlice-GKGGFNOB.js → dbSlice-RDGCE5MU.js} +8 -8
  106. package/{deleteFile-LWSR674W.js → deleteFile-YG6QMJLU.js} +3 -3
  107. package/{dialogCommands-G223U5WU.js → dialogCommands-JHSDKCR5.js} +32 -30
  108. package/{dialogSlice-THY45JWM.js → dialogSlice-I2DK32ZT.js} +24 -24
  109. package/{docCreateCommands-2P47IJDK.js → docCreateCommands-QUL6VWK2.js} +31 -29
  110. package/{docDeleteCommands-N3EGDOIC.js → docDeleteCommands-DMQ2MU6I.js} +32 -30
  111. package/{docReadCommands-6BFV2HI7.js → docReadCommands-FVHENBU6.js} +31 -29
  112. package/{docStore-ZQ3ECOPY.js → docStore-OLC6MD7B.js} +9 -9
  113. package/{docUpdateCommands-ZTMPXHC5.js → docUpdateCommands-VA6V5C6L.js} +31 -29
  114. package/{fetchMessages-DRABNDPZ.js → fetchMessages-EIU7UFFK.js} +3 -4
  115. package/{getPricing-HRMSOF3E.js → getPricing-YYXTEPBP.js} +4 -4
  116. package/{handleSendMessageAction-CE4M5XIE.js → handleSendMessageAction-GRDIRXAK.js} +24 -24
  117. package/index.js +88 -80
  118. package/{localDialogRead-PUQKFI73.js → localDialogRead-BTFJ4V2I.js} +2 -2
  119. package/{localRuntimeDb-P37ZTX55.js → localRuntimeDb-SYQGUF4U.js} +1 -1
  120. package/{machineCommands-4OT7KVCD.js → machineCommands-IJJ66MYU.js} +59 -57
  121. package/{machineWsRunDispatch-TR3EYESP.js → machineWsRunDispatch-PP2ZBS6D.js} +57 -55
  122. package/{memberThunks-KATHH3F4.js → memberThunks-WQGQWYYT.js} +9 -9
  123. package/{models-GS72DVJS.js → models-UN7YGMPM.js} +2 -2
  124. package/{offlineMarxistsAgentCommand-GEH6SNNA.js → offlineMarxistsAgentCommand-JEWCIAWM.js} +1 -1
  125. package/package.json +1 -1
  126. package/providerPresetApply-NO73BG45.js +214 -0
  127. package/providerRegistry-OVY4VKNN.js +31 -0
  128. package/{read-LC6HVYBN.js → read-S4WC2OUK.js} +5 -4
  129. package/{readDocTool-N3ERJHHF.js → readDocTool-PQNM63KV.js} +1 -1
  130. package/{readlineWorkspace-GSL5CYNJ.js → readlineWorkspace-ASJECDJD.js} +196 -111
  131. package/{removeDialogAgentAction-F5GPTALR.js → removeDialogAgentAction-YJZ6XJV6.js} +11 -11
  132. package/{runAgentClientLoop-NE5EHXSS.js → runAgentClientLoop-KIOQSDRC.js} +45 -45
  133. package/{runtimeDoctorCommands-CROTMULY.js → runtimeDoctorCommands-X6WDBEQX.js} +2 -2
  134. package/{setDialogExtraReferencesAction-AY4ZCF3A.js → setDialogExtraReferencesAction-E6A3WL4E.js} +9 -9
  135. package/{setPrimaryDialogAgentAction-HPMG7V3R.js → setPrimaryDialogAgentAction-WBLIVICQ.js} +11 -11
  136. package/{settingSlice-OEJA4NQO.js → settingSlice-JR6S7TRD.js} +10 -10
  137. package/{spaceCommands-MRP5U3C3.js → spaceCommands-WDUNCAK5.js} +29 -27
  138. package/{streamAgentChatTurn-A6L6O22P.js → streamAgentChatTurn-EGQDPMAO.js} +57 -56
  139. package/{switchDialogAgentAction-HMDZTZ4I.js → switchDialogAgentAction-DTR36ZY2.js} +8 -8
  140. package/{tableCommands-SUNTHAYX.js → tableCommands-O6NWHFKV.js} +1 -1
  141. package/{toolApiClient-VGYUB4P5.js → toolApiClient-7PSIFQPJ.js} +2 -2
  142. package/{tools-JS475NYO.js → tools-AOVE5LKM.js} +41 -39
  143. package/tuiSummaryLlmCaller-XRQCSNYQ.js +127 -0
  144. package/{updateCommands-Y363MC3L.js → updateCommands-2M74UL7P.js} +2 -2
  145. package/{updateDialogTitleAction-GMZUT6RP.js → updateDialogTitleAction-T66TXHIR.js} +45 -28
  146. package/chunk-3IT2PFHL.js +0 -611
  147. package/chunk-I42VC5KR.js +0 -15
  148. package/codingSkills-E6KSDNSJ.js +0 -48
  149. package/tuiSummaryLlmCaller-3Z24VUWM.js +0 -116
  150. package/{chunk-3RAG2NAD.js → chunk-UKWGR5SS.js} +3 -3
  151. package/{db-VQSAOWAO.js → db-WK5MDZVN.js} +1 -1
  152. package/{localRuntimeAuthority-R5UBODT3.js → localRuntimeAuthority-6IR6BBXE.js} +3 -3
@@ -11,7 +11,7 @@ import {
11
11
  getAntigravityUserAgent,
12
12
  normalizeAntigravityTokenPayload,
13
13
  refreshAntigravityToken
14
- } from "./chunk-PGSKWZCB.js";
14
+ } from "./chunk-NKIH4Q7W.js";
15
15
  import {
16
16
  writeOAuthCredential
17
17
  } from "./chunk-ONXOABJR.js";
@@ -21,12 +21,12 @@ import {
21
21
  import {
22
22
  asOptionalFiniteNumber
23
23
  } from "./chunk-WWC7I6TA.js";
24
- import {
25
- asTrimmedString
26
- } from "./chunk-3EUW3WEO.js";
27
24
  import {
28
25
  isRecord
29
26
  } from "./chunk-KUG52IAP.js";
27
+ import {
28
+ asTrimmedString
29
+ } from "./chunk-3EUW3WEO.js";
30
30
 
31
31
  // packages/cli/oauth/callback-server.ts
32
32
  import { createServer } from "node:http";
@@ -5,14 +5,14 @@ import {
5
5
  inlineImageUrlsForCustomProvider,
6
6
  prepareTools,
7
7
  shouldInlineImageUrlsForAgent
8
- } from "./chunk-ALGK6TIE.js";
8
+ } from "./chunk-YPYMGGPJ.js";
9
9
  import {
10
10
  INVALID_TOOL_ARGS_REPLACEMENT,
11
11
  buildInvalidToolCallSelfHealResult,
12
12
  parseToolCallArguments,
13
13
  performFetchRequest,
14
14
  sanitizeOutboundMessages
15
- } from "./chunk-U6LKJRJB.js";
15
+ } from "./chunk-377KM42Z.js";
16
16
  import {
17
17
  createSSEParser,
18
18
  createToolRunId,
@@ -23,7 +23,7 @@ import {
23
23
  toolRunSetPending,
24
24
  toolRunStarted,
25
25
  toolRunSucceeded
26
- } from "./chunk-MEVSATIF.js";
26
+ } from "./chunk-UBNV6CS6.js";
27
27
  import {
28
28
  getPublicImageAgentMode
29
29
  } from "./chunk-VIDPVFP3.js";
@@ -35,10 +35,10 @@ import {
35
35
  messageStreamEnd,
36
36
  messageStreaming,
37
37
  updateToolMessage
38
- } from "./chunk-D74EWXL4.js";
38
+ } from "./chunk-SUERPXJZ.js";
39
39
  import {
40
40
  streamAgentChatTurn
41
- } from "./chunk-QUH3XHL5.js";
41
+ } from "./chunk-X2ZTVRXP.js";
42
42
  import {
43
43
  addActiveController,
44
44
  removeActiveController,
@@ -56,42 +56,42 @@ import {
56
56
  import {
57
57
  EMPTY_ASSISTANT_REPAIR_PROMPT,
58
58
  getModelInfo
59
- } from "./chunk-DSRXPQWA.js";
59
+ } from "./chunk-GRDSMV4V.js";
60
60
  import {
61
61
  getApiEndpoint
62
- } from "./chunk-UJ63UXGE.js";
62
+ } from "./chunk-4CAPEGHN.js";
63
63
  import {
64
64
  toErrorMessage
65
65
  } from "./chunk-HNMXYYJR.js";
66
66
  import {
67
67
  selectCurrentServer
68
- } from "./chunk-XWNRAIUL.js";
68
+ } from "./chunk-DM4UNXPK.js";
69
69
  import {
70
70
  write
71
- } from "./chunk-YFADVSZE.js";
71
+ } from "./chunk-F3UTRUDO.js";
72
72
  import {
73
73
  createDialogMessageKeyAndId,
74
74
  dialogMessageKey,
75
75
  toTrimmedString
76
- } from "./chunk-NHRQCXIQ.js";
76
+ } from "./chunk-VMFTFOWF.js";
77
77
  import {
78
78
  extractCustomId
79
- } from "./chunk-BJIRLHJR.js";
79
+ } from "./chunk-GII32WZW.js";
80
80
  import {
81
81
  createAsyncThunk
82
- } from "./chunk-3RAG2NAD.js";
82
+ } from "./chunk-UKWGR5SS.js";
83
83
  import {
84
84
  isAbortError
85
85
  } from "./chunk-QOKAKDPE.js";
86
86
  import {
87
87
  selectIdentityToken
88
88
  } from "./chunk-SEJ5OS6F.js";
89
- import {
90
- asTrimmedString
91
- } from "./chunk-3EUW3WEO.js";
92
89
  import {
93
90
  isRecord
94
91
  } from "./chunk-KUG52IAP.js";
92
+ import {
93
+ asTrimmedString
94
+ } from "./chunk-3EUW3WEO.js";
95
95
  import {
96
96
  asOptionalTrimmedString
97
97
  } from "./chunk-G3SUCT4W.js";
@@ -3,7 +3,7 @@ import {
3
3
  createFileCredentialBroker,
4
4
  migrateAgentSecrets,
5
5
  normalizeAgentRuntimeToolPolicy
6
- } from "./chunk-3JQ2NRYU.js";
6
+ } from "./chunk-HVURBGF3.js";
7
7
  import {
8
8
  asRecordOrEmpty
9
9
  } from "./chunk-KX6YBIHG.js";
@@ -11,16 +11,16 @@ import {
11
11
  patch,
12
12
  remove,
13
13
  write
14
- } from "./chunk-YFADVSZE.js";
14
+ } from "./chunk-F3UTRUDO.js";
15
15
  import {
16
16
  createAgentKey,
17
17
  toTrimmedString
18
- } from "./chunk-NHRQCXIQ.js";
18
+ } from "./chunk-VMFTFOWF.js";
19
19
  import {
20
20
  asyncThunkCreator,
21
21
  buildCreateSlice,
22
22
  getRuntimeServerContext
23
- } from "./chunk-3RAG2NAD.js";
23
+ } from "./chunk-UKWGR5SS.js";
24
24
  import {
25
25
  asTrimmedString
26
26
  } from "./chunk-3EUW3WEO.js";
@@ -304,7 +304,7 @@ var slice = createSliceWithThunks({
304
304
  const overrides = {};
305
305
  if (args.systemPromptOverride !== void 0) overrides.prompt = args.systemPromptOverride;
306
306
  if (args.toolsOverride !== void 0) overrides.tools = args.toolsOverride;
307
- const { _executeModel } = await import("./_executeModel-T3FPYFVF.js");
307
+ const { _executeModel } = await import("./_executeModel-U5V7LOJX.js");
308
308
  return _executeModel(
309
309
  {
310
310
  isStreaming: args.isStreaming ?? false,
@@ -325,7 +325,7 @@ var slice = createSliceWithThunks({
325
325
  * - 循环直到无工具调用或触发其他运行时停止条件
326
326
  */
327
327
  runAgent: create.asyncThunk(async (args, thunkApi) => {
328
- const { runAgentClientLoop } = await import("./runAgentClientLoop-NE5EHXSS.js");
328
+ const { runAgentClientLoop } = await import("./runAgentClientLoop-KIOQSDRC.js");
329
329
  const { content: loopContent, toolCallCount } = await runAgentClientLoop(
330
330
  {
331
331
  agentKey: args.agentKey,
@@ -341,7 +341,7 @@ var slice = createSliceWithThunks({
341
341
  * 聊天轮次流式 Agent 调用
342
342
  */
343
343
  streamAgentChatTurn: create.asyncThunk(async (args, thunkApi) => {
344
- const { streamAgentChatTurnHandler } = await import("./streamAgentChatTurn-A6L6O22P.js");
344
+ const { streamAgentChatTurnHandler } = await import("./streamAgentChatTurn-EGQDPMAO.js");
345
345
  return streamAgentChatTurnHandler(args, thunkApi);
346
346
  }),
347
347
  /**
@@ -1,7 +1,13 @@
1
+ import {
2
+ buildSkillDocMarkdown
3
+ } from "./chunk-Q554LLSI.js";
1
4
  import {
2
5
  SYSTEM_AGENT_CAPABILITIES,
3
6
  SYSTEM_AGENT_CAPABILITY_IDS
4
- } from "./chunk-UZ6XXCVR.js";
7
+ } from "./chunk-546FPOW3.js";
8
+ import {
9
+ createKey
10
+ } from "./chunk-VMFTFOWF.js";
5
11
 
6
12
  // packages/ai/tools/codeWorkDiscipline.ts
7
13
  var CODE_WORK_DISCIPLINE_BODY = `## \u6548\u7387\u4F18\u5148\uFF08\u7701 token\uFF09
@@ -44,6 +50,9 @@ var TOOL_PACKS = {
44
50
  // queryModelUsage / queryUserGrowthReport:server-only 工具(web/CLI executor
45
51
  // 直接返回 serverOnlyResult),不随 CORE 常驻——server 端由 agent 显式
46
52
  // tools 配置按需挂载(utilityServerTools 执行器),web 端不再挂死 schema。
53
+ // setTodoList 已移至「conversation-todo」系统能力包(defaultEnabled:true)
54
+ // 作为唯一 owner——single source of truth:普通 agent 默认仍有 setTodoList,
55
+ // 但关闭「对话 Todo」开关即可真正摘掉它(CORE 常驻时该开关形同虚设)。
47
56
  CORE: [
48
57
  "read",
49
58
  "createDoc",
@@ -52,8 +61,7 @@ var TOOL_PACKS = {
52
61
  "updateSelf",
53
62
  "ask_user",
54
63
  "createAgentAutomation",
55
- "notifyUser",
56
- "setTodoList"
64
+ "notifyUser"
57
65
  ],
58
66
  // L2 - 联网搜索:与 CAPABILITY_PACKS「web-search」对齐。
59
67
  // 社交读工具属于「social-reader」包,不得因 exa_search 被旁路注入。
@@ -73,9 +81,7 @@ var TOOL_PACKS = {
73
81
  "launchProcess",
74
82
  "listProcesses",
75
83
  "taskWait",
76
- "taskLogs",
77
84
  "taskStop",
78
- "tasks",
79
85
  // watchCompletion:push 后登记「业务终态订阅」,部署结束时服务端唤醒父对话
80
86
  // (等待期间 0 轮询 0 token)。与代码工作流同链路(push → CI → 通知),随
81
87
  // 「代码执行」能力包走。
@@ -274,7 +280,10 @@ function resolveEffectiveEnabledPacks(args) {
274
280
  ];
275
281
  }
276
282
  var SYSTEM_BUILTIN_SKILL_PACK_IDS = SYSTEM_AGENT_CAPABILITY_IDS;
277
- var DEFAULT_MOUNT_SYSTEM_CAPABILITY_IDS = ["agent-orchestration"];
283
+ var DEFAULT_MOUNT_SYSTEM_CAPABILITY_IDS = [
284
+ "agent-orchestration",
285
+ "conversation-todo"
286
+ ];
278
287
  function getDefaultSystemCapabilityTools() {
279
288
  const ids = DEFAULT_MOUNT_SYSTEM_CAPABILITY_IDS;
280
289
  return SYSTEM_AGENT_CAPABILITY_PACKS.filter((pack) => ids.includes(pack.id)).flatMap((pack) => [...pack.tools]);
@@ -367,6 +376,160 @@ function applyDefaultWebToolPacks(args) {
367
376
  return [...enhanced];
368
377
  }
369
378
 
379
+ // packages/ai/skills/builtinObjectSkills.ts
380
+ var BUILTIN_OBJECT_SKILL_IDS = {
381
+ table: "builtin-table-skill-v1",
382
+ doc: "builtin-doc-skill-v1",
383
+ // key 改名为 code-style(它本来就叫「编码风格技能」,"code" 这个名字是它抢的,
384
+ // 与「代码执行」能力包撞车)。**id 值保持不变**——skillId 与页面 key 都从它派生,
385
+ // 改了会让存量 agent.references 失配。
386
+ "code-style": "builtin-code-skill-v1",
387
+ image: "builtin-image-skill-v1",
388
+ file: "builtin-file-skill-v1",
389
+ pagebuilder: "builtin-pagebuilder-skill-v1"
390
+ };
391
+ var SKILL_DEFS = {
392
+ doc: {
393
+ id: BUILTIN_OBJECT_SKILL_IDS.doc,
394
+ name: "\u6587\u6863\u7F16\u8F91\u6280\u80FD",
395
+ 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",
396
+ toolNames: ["readDoc", "updateDoc"],
397
+ promptPatch: [
398
+ "\u6587\u6863\u7F16\u8F91\u6307\u5357\uFF1A",
399
+ "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",
400
+ "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"
401
+ ].join("\n")
402
+ },
403
+ table: {
404
+ id: BUILTIN_OBJECT_SKILL_IDS.table,
405
+ name: "\u8868\u683C\u7F16\u8F91\u6280\u80FD",
406
+ 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",
407
+ // 与 app-builder 能力包共用同一份清单(TOOL_PACKS.TABLE)。
408
+ // 以前两边各抄一份,改一个忘另一个就会静默不同步。
409
+ toolNames: [...TOOL_PACKS.TABLE],
410
+ promptPatch: [
411
+ "\u8868\u683C\u64CD\u4F5C\u6307\u5357\uFF1A",
412
+ "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",
413
+ "2. \u65B0\u589E\u8BB0\u5F55\u5FC5\u987B\u8C03\u7528 addTableRow / addTableRows\uFF0C\u4E0D\u8981\u53EA\u5728\u56DE\u7B54\u91CC\u53E3\u5934\u63CF\u8FF0\u3002",
414
+ "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",
415
+ "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"
416
+ ].join("\n")
417
+ },
418
+ "code-style": {
419
+ id: BUILTIN_OBJECT_SKILL_IDS["code-style"],
420
+ name: "\u7F16\u7801\u98CE\u683C\u6280\u80FD",
421
+ 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",
422
+ toolNames: [],
423
+ promptPatch: [
424
+ "\u7F16\u7801\u98CE\u683C\u4E0E\u89C4\u8303\u6307\u5357\uFF1A",
425
+ "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",
426
+ "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",
427
+ "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",
428
+ "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",
429
+ "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"
430
+ ].join("\n")
431
+ },
432
+ image: {
433
+ id: BUILTIN_OBJECT_SKILL_IDS.image,
434
+ name: "\u56FE\u7247\u5206\u6790\u6280\u80FD",
435
+ 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",
436
+ toolNames: [],
437
+ promptPatch: [
438
+ "\u56FE\u7247\u5206\u6790\u6307\u5357\uFF1A",
439
+ "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",
440
+ "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"
441
+ ].join("\n")
442
+ },
443
+ file: {
444
+ id: BUILTIN_OBJECT_SKILL_IDS.file,
445
+ name: "\u6587\u4EF6\u5904\u7406\u6280\u80FD",
446
+ 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",
447
+ toolNames: [],
448
+ promptPatch: [
449
+ "\u6587\u4EF6\u5904\u7406\u6307\u5357\uFF1A",
450
+ "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",
451
+ "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"
452
+ ].join("\n")
453
+ },
454
+ pagebuilder: {
455
+ id: BUILTIN_OBJECT_SKILL_IDS.pagebuilder,
456
+ name: "\u52A8\u6001\u4EA4\u4E92\u7EC4\u4EF6\u751F\u6210\u6280\u80FD",
457
+ 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",
458
+ toolNames: [],
459
+ promptPatch: [
460
+ "\u52A8\u6001\u4EA4\u4E92\u7EC4\u4EF6\u751F\u6210\u89C4\u5219\uFF1A",
461
+ "\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",
462
+ "",
463
+ "\u7EDD\u5BF9\u89C4\u5219\uFF1A",
464
+ "1. \u53EA\u8F93\u51FA\u4E00\u4E2A Markdown \u4EE3\u7801\u5757\uFF0C\u4EE3\u7801\u5757\u8BED\u8A00\u5FC5\u987B\u662F tsx preview\u3002",
465
+ "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",
466
+ "3. \u4EE3\u7801\u5FC5\u987B\u5B9A\u4E49\u9876\u5C42 function Example()\uFF0C\u4E0D\u8981\u8C03\u7528 render()\uFF0C\u4E0D\u8981 export default\u3002",
467
+ "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",
468
+ "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",
469
+ "6. \u4E3A\u4E3B\u8981\u533A\u5757\u52A0 data-artifact-section \u5C5E\u6027\u3002",
470
+ "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",
471
+ "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",
472
+ "",
473
+ "\u5404\u7C7B\u9875\u9762\u9ED8\u8BA4\u7ED3\u6784\uFF1A",
474
+ "- \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",
475
+ "- \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",
476
+ "- \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",
477
+ "- \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",
478
+ "- \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",
479
+ "- \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",
480
+ "- \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",
481
+ "",
482
+ "\u4EE3\u7801\u98CE\u683C\uFF1A",
483
+ "1. \u4F7F\u7528\u5185\u8054 style \u6216\u7EC4\u4EF6\u5185 <style>\uFF0C\u4E0D\u8981\u4F9D\u8D56 Tailwind \u6216\u5916\u90E8 CSS\u3002",
484
+ "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",
485
+ "3. \u989C\u8272\u8981\u514B\u5236\uFF0C\u6709\u5C42\u6B21\uFF1B\u907F\u514D\u6574\u9875\u5355\u4E00\u84DD\u7D2B\u6E10\u53D8\u3002",
486
+ "4. \u8868\u683C\u3001\u56FE\u8868\u3001\u5361\u7247\u3001\u6309\u94AE\u90FD\u8981\u6709 hover/active/focus \u7684\u7EC6\u8282\u3002",
487
+ "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",
488
+ "6. \u4EE3\u7801\u5C3D\u91CF\u77ED\u800C\u5B8C\u6574\uFF0C\u9ED8\u8BA4 150-260 \u884C\u4EE5\u5185\u3002",
489
+ "",
490
+ "\u8F93\u51FA\u683C\u5F0F\u793A\u4F8B\uFF1A",
491
+ "```tsx preview",
492
+ "function Example() {",
493
+ " const [tab, setTab] = useState('overview');",
494
+ " return <main><section data-artifact-section>...</section></main>;",
495
+ "}",
496
+ "```"
497
+ ].join("\n")
498
+ }
499
+ };
500
+ function buildBuiltinObjectSkillConfig(kind) {
501
+ const def = SKILL_DEFS[kind];
502
+ return {
503
+ version: "0.1",
504
+ kind: "skill",
505
+ id: def.id,
506
+ name: def.name,
507
+ description: def.description,
508
+ triggerMode: "explicit",
509
+ toolNames: def.toolNames,
510
+ promptPatch: def.promptPatch
511
+ };
512
+ }
513
+ function buildBuiltinObjectSkillDbKey(kind, userId) {
514
+ return createKey("page" /* DOC */, userId, BUILTIN_OBJECT_SKILL_IDS[kind]);
515
+ }
516
+ function buildBuiltinObjectSkillReference(kind, userId) {
517
+ return {
518
+ dbKey: buildBuiltinObjectSkillDbKey(kind, userId),
519
+ title: SKILL_DEFS[kind].name,
520
+ type: "instruction"
521
+ };
522
+ }
523
+ function buildBuiltinObjectSkillPageContent(kind) {
524
+ const def = SKILL_DEFS[kind];
525
+ return buildSkillDocMarkdown({
526
+ body: `# ${def.name}
527
+
528
+ ${def.description}`,
529
+ skillConfig: buildBuiltinObjectSkillConfig(kind)
530
+ });
531
+ }
532
+
370
533
  export {
371
534
  buildCodeWorkDiscipline,
372
535
  TOOL_PACKS,
@@ -380,5 +543,10 @@ export {
380
543
  FORCED_TOOLS,
381
544
  applyDisabledTools,
382
545
  addDefaultLightWebToolsForConfiguredAgents,
383
- applyDefaultWebToolPacks
546
+ applyDefaultWebToolPacks,
547
+ BUILTIN_OBJECT_SKILL_IDS,
548
+ buildBuiltinObjectSkillConfig,
549
+ buildBuiltinObjectSkillDbKey,
550
+ buildBuiltinObjectSkillReference,
551
+ buildBuiltinObjectSkillPageContent
384
552
  };