nolo-cli 0.76.0-alpha.1 → 0.76.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 (134) hide show
  1. package/{_executeModel-MONX3AUM.js → _executeModel-I3XRMAJ2.js} +42 -42
  2. package/{action-D22U6CTH.js → action-7GHFPDSQ.js} +10 -10
  3. package/{addContentAction-XAPUTGL4.js → addContentAction-ZNVB2NOV.js} +8 -8
  4. package/{addDialogAgentAction-M7VLLBZM.js → addDialogAgentAction-CIDFWATM.js} +7 -7
  5. package/{agentDeleteCommand-2TYFURBN.js → agentDeleteCommand-DCTG26JW.js} +27 -26
  6. package/{agentEmailCommands-HXIX4KJE.js → agentEmailCommands-MRRHBLDQ.js} +54 -53
  7. package/{agentListCommands-IFUOWXP3.js → agentListCommands-CUE46CSP.js} +29 -28
  8. package/{agentMachineCommands-NEJEQV5S.js → agentMachineCommands-FYDEKBIO.js} +27 -26
  9. package/{agentProviderCommands-65ZC2WB4.js → agentProviderCommands-X3FA6BUM.js} +87 -0
  10. package/{agentPullCommand-N7L2CT7L.js → agentPullCommand-U73W5IBM.js} +1 -1
  11. package/{agentRecordCommands-USSLZKED.js → agentRecordCommands-P2MSNP7R.js} +52 -51
  12. package/{agentRunCommand-WZZSCEEP.js → agentRunCommand-YJOW3VB3.js} +52 -51
  13. package/{agentRuntimeLocal-PUZINLWJ.js → agentRuntimeLocal-T43UNWAY.js} +26 -25
  14. package/{agentSlice-BLCUNM5V.js → agentSlice-7GDS5Q2S.js} +9 -9
  15. package/{appDeleteCommands-U4NTEJYQ.js → appDeleteCommands-YBKY3VEI.js} +27 -26
  16. package/{appDeployCommands-FXF45Q7F.js → appDeployCommands-EBC76HO4.js} +27 -26
  17. package/{appDeployStatusCommands-KONVRM53.js → appDeployStatusCommands-WXRC5KEK.js} +27 -26
  18. package/{appGetCommands-3VOGIZ7T.js → appGetCommands-VZZQEDOV.js} +27 -26
  19. package/{appListCommands-A6ROBW7P.js → appListCommands-HYSPVQ77.js} +27 -26
  20. package/{authCommand-EVGFLAHO.js → authCommand-E4GDVKMW.js} +91 -17
  21. package/{authCommands-ILTBI6JV.js → authCommands-VOTT6XWX.js} +3 -4
  22. package/builtinSkillRegistry-5SYVTS6Z.js +33 -0
  23. package/{chatQueueReduxAdapter-ROFM5SW7.js → chatQueueReduxAdapter-CXEWIDFZ.js} +22 -22
  24. package/{chunk-NG4UT4K4.js → chunk-23RQKXP6.js} +1 -1
  25. package/{chunk-C3FZR5EC.js → chunk-2F7RJC6L.js} +1 -1
  26. package/{chunk-3QPYFHAH.js → chunk-2XEVK4BT.js} +1 -1
  27. package/{chunk-HQUORJTM.js → chunk-3BMYXEUW.js} +1 -1
  28. package/{chunk-AFIWC5NH.js → chunk-3T4PRBHV.js} +1 -1
  29. package/{chunk-ZDONXM5U.js → chunk-4FRNB4ZG.js} +7 -7
  30. package/{chunk-YFADVSZE.js → chunk-5EJZGJS2.js} +6 -6
  31. package/{chunk-UJ63UXGE.js → chunk-6H7GN3JL.js} +1064 -752
  32. package/{chunk-BGIWMGSP.js → chunk-6RCZYDDC.js} +10 -172
  33. package/{chunk-BYEJ7K2Z.js → chunk-7S4YWN7P.js} +1 -1
  34. package/{chunk-SREASRV5.js → chunk-ABQYVJBJ.js} +1 -1
  35. package/{chunk-MQ25G6VQ.js → chunk-AYT2OKNM.js} +3 -3
  36. package/{chunk-ERD7UXVL.js → chunk-BNMZ7QUV.js} +1 -1
  37. package/{chunk-PGSKWZCB.js → chunk-DS3SQTDT.js} +1 -1
  38. package/{chunk-QC5LGHYP.js → chunk-EXWOCYCR.js} +3 -3
  39. package/chunk-FMODTASJ.js +109 -0
  40. package/{chunk-SZLVDREM.js → chunk-GIG262ZG.js} +3 -3
  41. package/{chunk-FPTQQSS6.js → chunk-GRJTR4PU.js} +25 -4
  42. package/{chunk-PZM3EENV.js → chunk-GXWEF4IZ.js} +1 -1
  43. package/chunk-HJKGQPYF.js +266 -0
  44. package/{chunk-3JQ2NRYU.js → chunk-HVURBGF3.js} +4 -4
  45. package/{chunk-UPQF3C7O.js → chunk-IMDA4FW4.js} +102 -34
  46. package/{chunk-L2Y24GRM.js → chunk-IO7DYRPW.js} +3 -3
  47. package/{chunk-UZ6XXCVR.js → chunk-IZAWJCG7.js} +15 -2
  48. package/{chunk-2SFNAHL6.js → chunk-JC2WQS66.js} +34 -22
  49. package/{chunk-XWNRAIUL.js → chunk-JITSBA52.js} +6 -16
  50. package/{chunk-6XIE5ZGI.js → chunk-JPGCXHNM.js} +1 -1
  51. package/{chunk-PI4DWFYV.js → chunk-KO7QCXLL.js} +1132 -31
  52. package/{chunk-E36HZARC.js → chunk-KT6LENVP.js} +3 -3
  53. package/{chunk-N7DNNV6J.js → chunk-L2VNQQ7M.js} +78 -74
  54. package/{chunk-2R5EVB2O.js → chunk-LEYH5NOH.js} +5 -5
  55. package/{chunk-RXX4GDIH.js → chunk-LS2ZANRJ.js} +1 -1
  56. package/{chunk-4EJ5QYB5.js → chunk-LSV2BOJL.js} +1 -1
  57. package/{chunk-AFIKMMGC.js → chunk-MFW4BGJS.js} +1 -1
  58. package/{chunk-QH6NK22I.js → chunk-NVHJWYUO.js} +60 -788
  59. package/{chunk-Q6FF2MCK.js → chunk-OAJRZ35U.js} +1 -1
  60. package/{chunk-DSRXPQWA.js → chunk-OCL2YCAU.js} +7 -7
  61. package/{chunk-5J7W2VWW.js → chunk-OHUU52T3.js} +6 -265
  62. package/{chunk-V3ZKNK5D.js → chunk-OKCTLCKS.js} +9 -9
  63. package/chunk-P3AS5IPM.js +1624 -0
  64. package/{chunk-ZZCJUXUI.js → chunk-PHDKTASK.js} +2 -2
  65. package/{chunk-RILY7TKG.js → chunk-Q246OUG5.js} +9 -9
  66. package/{chunk-ZLPA7K55.js → chunk-Q4KVAB6L.js} +4 -4
  67. package/{chunk-AETZ7AD6.js → chunk-Q554LLSI.js} +1 -1
  68. package/{chunk-CGRJWXTE.js → chunk-S6STPUMG.js} +19 -15
  69. package/{chunk-K7AG465Q.js → chunk-T4F2EQGN.js} +4 -2
  70. package/{chunk-PYXL2CJL.js → chunk-TGRQUFLU.js} +1 -1
  71. package/{chunk-E6RGHPDR.js → chunk-UINEAQ2R.js} +3 -5
  72. package/{chunk-EXMHJN7C.js → chunk-UO66QKGI.js} +2 -2
  73. package/{chunk-BJCWNHVU.js → chunk-US463UAD.js} +2 -2
  74. package/{chunk-AJHEFRGJ.js → chunk-UWMQ6FPM.js} +4 -0
  75. package/{chunk-FSFQ3A7S.js → chunk-VARZWSKW.js} +9 -9
  76. package/{chunk-NHRQCXIQ.js → chunk-VMFTFOWF.js} +13 -3
  77. package/{chunk-3SPWIDHH.js → chunk-VQD6BTML.js} +3 -3
  78. package/{chunk-ZY4K4CZR.js → chunk-VW3YGKWR.js} +605 -91
  79. package/{chunk-G3O3PD6Q.js → chunk-W7PGACND.js} +14 -14
  80. package/{chunk-KIS76A2P.js → chunk-WSOMSDQB.js} +4 -4
  81. package/{chunk-CMH2SYHX.js → chunk-X77EN2BJ.js} +2 -2
  82. package/{chunk-MYU3MJCF.js → chunk-XCSSFPTB.js} +175 -7
  83. package/{chunk-QA6YKM3H.js → chunk-Y2IFJ7VM.js} +31 -3
  84. package/{chunk-UDQWGU7F.js → chunk-YZHP76TR.js} +1 -1
  85. package/{chunk-GBPZKFYK.js → chunk-ZIHJVHFH.js} +4 -4
  86. package/{chunk-DWPNOYMB.js → chunk-ZKGIAM7I.js} +1 -1
  87. package/chunk-ZSG2AQU4.js +626 -0
  88. package/{contentThunks-3BFZJFHI.js → contentThunks-Y2ACIFDB.js} +23 -23
  89. package/{createAgentAutomationAction-YCWUKLMK.js → createAgentAutomationAction-TNE3QMJR.js} +23 -23
  90. package/{createDialogAction-VULS2PKA.js → createDialogAction-BMGHBTQB.js} +26 -26
  91. package/{createPageAction-MZZLQPFE.js → createPageAction-FFNIZPIS.js} +24 -24
  92. package/{dbSlice-GKGGFNOB.js → dbSlice-4CUQE35F.js} +7 -7
  93. package/{deleteFile-LWSR674W.js → deleteFile-YG6QMJLU.js} +3 -3
  94. package/{dialogCommands-G223U5WU.js → dialogCommands-3JC3BIXC.js} +28 -27
  95. package/{dialogSlice-NQO5ZETL.js → dialogSlice-3E7Z7HZV.js} +22 -22
  96. package/{docCreateCommands-2P47IJDK.js → docCreateCommands-6LNQLCTA.js} +28 -27
  97. package/{docDeleteCommands-N3EGDOIC.js → docDeleteCommands-ZJOAPWZS.js} +29 -28
  98. package/{docReadCommands-6BFV2HI7.js → docReadCommands-LJTRSBG6.js} +28 -27
  99. package/{docStore-AEJONTM4.js → docStore-R47ABXBB.js} +8 -8
  100. package/{docUpdateCommands-ZTMPXHC5.js → docUpdateCommands-7P3QF3N2.js} +28 -27
  101. package/{fetchMessages-DRABNDPZ.js → fetchMessages-EIU7UFFK.js} +3 -4
  102. package/{getPricing-HRMSOF3E.js → getPricing-TV6ZB7ES.js} +4 -4
  103. package/{handleSendMessageAction-WIUO466V.js → handleSendMessageAction-FFYOGXAO.js} +22 -22
  104. package/index.js +61 -53
  105. package/{localDialogRead-PUQKFI73.js → localDialogRead-BTFJ4V2I.js} +2 -2
  106. package/{localRuntimeDb-P37ZTX55.js → localRuntimeDb-SYQGUF4U.js} +1 -1
  107. package/{machineCommands-FUA7HBND.js → machineCommands-FN5GGQV3.js} +52 -51
  108. package/{machineWsRunDispatch-URIG5N2V.js → machineWsRunDispatch-H47IA7ZT.js} +50 -49
  109. package/{memberThunks-KATHH3F4.js → memberThunks-N35XAOC6.js} +8 -8
  110. package/{models-GS72DVJS.js → models-CMXFDBQH.js} +2 -2
  111. package/package.json +1 -1
  112. package/providerPresetApply-D2GGHPI7.js +214 -0
  113. package/providerRegistry-MU6C4ABD.js +31 -0
  114. package/{read-LC6HVYBN.js → read-2PV4PN2E.js} +4 -3
  115. package/{readDocTool-N3ERJHHF.js → readDocTool-FGK5XGAW.js} +1 -1
  116. package/{readlineWorkspace-HVQLD7T3.js → readlineWorkspace-2RP77YDN.js} +133 -74
  117. package/{removeDialogAgentAction-F5GPTALR.js → removeDialogAgentAction-O2POGBOE.js} +10 -10
  118. package/{runAgentClientLoop-QHL2HNAI.js → runAgentClientLoop-CEBV5UPD.js} +41 -41
  119. package/{runtimeDoctorCommands-CROTMULY.js → runtimeDoctorCommands-X6WDBEQX.js} +2 -2
  120. package/{setDialogExtraReferencesAction-AY4ZCF3A.js → setDialogExtraReferencesAction-KPSVVY3C.js} +8 -8
  121. package/{setPrimaryDialogAgentAction-HPMG7V3R.js → setPrimaryDialogAgentAction-RMJETONI.js} +10 -10
  122. package/{settingSlice-OEJA4NQO.js → settingSlice-I6MTTNDX.js} +9 -9
  123. package/{spaceCommands-MRP5U3C3.js → spaceCommands-JHT4ALCQ.js} +26 -25
  124. package/{streamAgentChatTurn-CE2H23VD.js → streamAgentChatTurn-SFCZP4GY.js} +49 -50
  125. package/{switchDialogAgentAction-HMDZTZ4I.js → switchDialogAgentAction-OQSGWVQQ.js} +7 -7
  126. package/{tools-F25QG6XS.js → tools-K3YOTESV.js} +37 -35
  127. package/{tuiSummaryLlmCaller-3Z24VUWM.js → tuiSummaryLlmCaller-T2OA5ZVB.js} +14 -14
  128. package/{updateDialogTitleAction-Z333XUN4.js → updateDialogTitleAction-CSPKYQRO.js} +23 -23
  129. package/chunk-3IT2PFHL.js +0 -611
  130. package/chunk-I42VC5KR.js +0 -15
  131. package/codingSkills-E6KSDNSJ.js +0 -48
  132. package/{chunk-3RAG2NAD.js → chunk-UKWGR5SS.js} +3 -3
  133. package/{db-VQSAOWAO.js → db-WK5MDZVN.js} +1 -1
  134. package/{localRuntimeAuthority-R5UBODT3.js → localRuntimeAuthority-6IR6BBXE.js} +3 -3
@@ -5,14 +5,14 @@ import {
5
5
  inlineImageUrlsForCustomProvider,
6
6
  prepareTools,
7
7
  shouldInlineImageUrlsForAgent
8
- } from "./chunk-3SPWIDHH.js";
8
+ } from "./chunk-VQD6BTML.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-2SFNAHL6.js";
15
+ } from "./chunk-JC2WQS66.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-QH6NK22I.js";
26
+ } from "./chunk-NVHJWYUO.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-N7DNNV6J.js";
38
+ } from "./chunk-L2VNQQ7M.js";
39
39
  import {
40
40
  streamAgentChatTurn
41
- } from "./chunk-ZDONXM5U.js";
41
+ } from "./chunk-4FRNB4ZG.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-OCL2YCAU.js";
60
60
  import {
61
61
  getApiEndpoint
62
- } from "./chunk-UJ63UXGE.js";
62
+ } from "./chunk-6H7GN3JL.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-JITSBA52.js";
69
69
  import {
70
70
  write
71
- } from "./chunk-YFADVSZE.js";
71
+ } from "./chunk-5EJZGJS2.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
79
  } from "./chunk-BJIRLHJR.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";
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  findModelConfig,
3
3
  getProviderByModelName
4
- } from "./chunk-UJ63UXGE.js";
4
+ } from "./chunk-6H7GN3JL.js";
5
5
  import {
6
6
  asOptionalFiniteNumber
7
7
  } from "./chunk-WWC7I6TA.js";
8
8
  import {
9
9
  asTrimmedLowercaseString
10
10
  } from "./chunk-QSJ3HFEF.js";
11
- import {
12
- asTrimmedString
13
- } from "./chunk-3EUW3WEO.js";
14
11
  import {
15
12
  isRecord
16
13
  } from "./chunk-KUG52IAP.js";
14
+ import {
15
+ asTrimmedString
16
+ } from "./chunk-3EUW3WEO.js";
17
17
  import {
18
18
  asOptionalTrimmedString
19
19
  } from "./chunk-G3SUCT4W.js";
@@ -3,7 +3,7 @@ import {
3
3
  resolvePlatformChatCompletionsEndpoint,
4
4
  resolvePlatformHostedCredentialProvider,
5
5
  resolvePlatformResponsesEndpoint
6
- } from "./chunk-K7AG465Q.js";
6
+ } from "./chunk-T4F2EQGN.js";
7
7
  import {
8
8
  CLI_PROVIDER_VALUES
9
9
  } from "./chunk-W7XHHYWM.js";
@@ -11,7 +11,7 @@ import {
11
11
  CLIENT_VERSION_TOO_OLD_CODE,
12
12
  buildClientVersionGateErrorDetail,
13
13
  evaluatePlatformHostedClientVersionGate
14
- } from "./chunk-AJHEFRGJ.js";
14
+ } from "./chunk-UWMQ6FPM.js";
15
15
  import {
16
16
  asTrimmedLowercaseString
17
17
  } from "./chunk-QSJ3HFEF.js";
@@ -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-IZAWJCG7.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
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  buildLocalAgentLookupKeys,
3
3
  shouldReadAgentKeyRemotely
4
- } from "./chunk-Q6FF2MCK.js";
4
+ } from "./chunk-OAJRZ35U.js";
5
5
  import {
6
6
  resolveCliAgentKeyInput
7
7
  } from "./chunk-SPAQ4PVV.js";
@@ -21,7 +21,7 @@ import {
21
21
  } from "./chunk-A7GB5UGH.js";
22
22
  import {
23
23
  createAgentKey
24
- } from "./chunk-NHRQCXIQ.js";
24
+ } from "./chunk-VMFTFOWF.js";
25
25
 
26
26
  // packages/cli/agentRecordHelpers.ts
27
27
  import { readFileSync } from "node:fs";
@@ -459,6 +459,7 @@ function parseAgentUpdateArgs(args) {
459
459
  const name = readOption(args, "--name");
460
460
  const customProviderUrl = readOption(args, "--custom-provider-url");
461
461
  const apiKey = readOption(args, "--api-key") ?? readOption(args, "--provider-api-key");
462
+ const presetId = readOption(args, "--preset") ?? readOption(args, "--provider-preset");
462
463
  const verify = args.includes("--verify");
463
464
  const verifyPrompt = readOption(args, "--verify-prompt");
464
465
  const maxConcurrent = parsePositiveIntegerOption(
@@ -498,13 +499,40 @@ function parseAgentUpdateArgs(args) {
498
499
  throw new Error("No updates provided. Use --model / --cli-provider / --api-source / --field key=value.");
499
500
  }
500
501
  }
501
- return { agentInput, updates, promptDoc, copyProviderFrom, verify, verifyPrompt };
502
+ return { agentInput, updates, promptDoc, copyProviderFrom, verify, verifyPrompt, presetId };
502
503
  }
503
504
  async function buildCreatedAgentRecord(args) {
504
505
  const serverUrl = args.cliArgs ? resolveServerUrl(args.cliArgs, args.env) : resolveServerUrl(args.env);
505
506
  const userId = parseUserIdFromAuthToken(args.authToken);
506
507
  const resolvedAgentInput = resolveCliAgentKeyInput(args.parsed.agentInput);
507
508
  const agentKey = resolvedAgentInput.startsWith("agent-") ? resolvedAgentInput : createAgentKey.private(userId || "local", resolvedAgentInput);
509
+ if (args.parsed.presetId) {
510
+ const { resolveProviderPresetFields } = await import("./providerPresetApply-D2GGHPI7.js");
511
+ const fields = resolveProviderPresetFields(args.parsed.presetId);
512
+ if (fields.kind === "manual") {
513
+ throw new Error(
514
+ `unknown --preset "${args.parsed.presetId}". Run \`nolo agent providers\` to list preset ids.`
515
+ );
516
+ }
517
+ if (fields.kind === "oauth" || fields.requiresDesktopOAuth) {
518
+ throw new Error(
519
+ `--preset "${args.parsed.presetId}" is an OAuth subscription; create it in Nolo Desktop (OAuth login required).`
520
+ );
521
+ }
522
+ const u = args.parsed.updates;
523
+ u.apiSource = "custom";
524
+ u.provider = u.provider ?? fields.provider;
525
+ if (fields.customProviderUrl && !u.customProviderUrl) {
526
+ u.customProviderUrl = fields.customProviderUrl;
527
+ }
528
+ if (fields.apiKeyHeader && !u.apiKeyHeader) {
529
+ u.apiKeyHeader = fields.apiKeyHeader;
530
+ }
531
+ if (!u.model && fields.model) u.model = fields.model;
532
+ if (fields.defaultReasoningEffort && u.reasoning_effort == null) {
533
+ u.reasoning_effort = fields.defaultReasoningEffort;
534
+ }
535
+ }
508
536
  if (args.parsed.copyProviderFrom) {
509
537
  const providerSource = await resolveAgentRecordFromHybridStore({
510
538
  agentInput: args.parsed.copyProviderFrom,
@@ -199,7 +199,7 @@ async function readDocFunc(args, thunkApi) {
199
199
  throw new Error(`\u65E0\u6548\u7684\u9875\u9762 ID: ${id}\u3002\u9875\u9762 ID \u901A\u5E38\u4EE5 "page-" \u5F00\u5934\u3002`);
200
200
  }
201
201
  try {
202
- const { readAction } = await import("./read-LC6HVYBN.js");
202
+ const { readAction } = await import("./read-2PV4PN2E.js");
203
203
  const pageData = await readAction({ dbKey: id }, thunkApi);
204
204
  if (!pageData) {
205
205
  throw new Error(`\u672A\u627E\u5230 ID \u4E3A ${id} \u7684\u9875\u9762\u3002`);
@@ -11,7 +11,7 @@ import {
11
11
  getAntigravityUserAgent,
12
12
  normalizeAntigravityTokenPayload,
13
13
  refreshAntigravityToken
14
- } from "./chunk-PGSKWZCB.js";
14
+ } from "./chunk-DS3SQTDT.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";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  requireTokenUser
3
- } from "./chunk-AFIKMMGC.js";
3
+ } from "./chunk-MFW4BGJS.js";
4
4
  import {
5
5
  resolveServerUrl
6
6
  } from "./chunk-A7GB5UGH.js";