nolo-cli 0.85.0-alpha.1 → 0.87.0-alpha.1

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 (114) hide show
  1. package/{_executeModel-IULR47HG.js → _executeModel-TTE5HHOP.js} +36 -36
  2. package/{action-D22U6CTH.js → action-JZ62BXLX.js} +10 -10
  3. package/{addContentAction-XAPUTGL4.js → addContentAction-2ETXWERA.js} +8 -8
  4. package/{addDialogAgentAction-M7VLLBZM.js → addDialogAgentAction-COSPGJ4K.js} +7 -7
  5. package/{agentDeleteCommand-2S4WCDQC.js → agentDeleteCommand-RPQ3WNYP.js} +19 -19
  6. package/{agentEmailCommands-V3ADGHX7.js → agentEmailCommands-B3IGU43E.js} +44 -44
  7. package/{agentListCommands-EPK3S274.js → agentListCommands-JJ4PR6XR.js} +21 -21
  8. package/{agentMachineCommands-XMZWK7P3.js → agentMachineCommands-JHEX5T4S.js} +19 -19
  9. package/{agentRecordCommands-WFPWLWOF.js → agentRecordCommands-3VXZXFFS.js} +42 -42
  10. package/{agentRunCommand-VUWNWC7C.js → agentRunCommand-7QM6GYYP.js} +42 -42
  11. package/{agentRuntimeLocal-YRONTDLM.js → agentRuntimeLocal-EVIFTFXA.js} +16 -16
  12. package/{agentSlice-2P7OJFES.js → agentSlice-B5JSZNGT.js} +9 -9
  13. package/{appDeleteCommands-YS7UGMP3.js → appDeleteCommands-EW67CDHD.js} +20 -20
  14. package/{appDeployCommands-XIE5Z4BE.js → appDeployCommands-SUCPTFUI.js} +20 -20
  15. package/{appDeployStatusCommands-54UDVYET.js → appDeployStatusCommands-EWYFXTCU.js} +20 -20
  16. package/{appGetCommands-6XYLBCRN.js → appGetCommands-ITOUFAY4.js} +20 -20
  17. package/{appListCommands-VEGH7SF5.js → appListCommands-PYCZWROS.js} +20 -20
  18. package/{authCommand-JIEOFHXW.js → authCommand-NNFLRLGJ.js} +7 -8
  19. package/{authCommands-ILTBI6JV.js → authCommands-364ESL7K.js} +2 -3
  20. package/builtinSkillRegistry-H3VTDPXU.js +33 -0
  21. package/{chatQueueReduxAdapter-GPYCH5Z2.js → chatQueueReduxAdapter-34C6QPMS.js} +18 -18
  22. package/{chunk-NRALD3CC.js → chunk-2LX7X7HX.js} +2 -2
  23. package/{chunk-Y3NZYLPG.js → chunk-36VG7O3H.js} +1 -1
  24. package/{chunk-HQUORJTM.js → chunk-3BMYXEUW.js} +1 -1
  25. package/{chunk-4EJ5QYB5.js → chunk-4YIWJYIX.js} +1 -1
  26. package/{chunk-PF6O3GR3.js → chunk-542M2LFO.js} +25 -19
  27. package/{chunk-GHEJJGJI.js → chunk-5F37RGTR.js} +20 -20
  28. package/{chunk-D6XYLSOS.js → chunk-5HKWE6OQ.js} +1 -1
  29. package/{chunk-KEZNSFGD.js → chunk-5S7Q2W6J.js} +9 -171
  30. package/{chunk-U7YP7ECK.js → chunk-6IHWRTUK.js} +3 -3
  31. package/{chunk-NFT2AOK5.js → chunk-6LUUGZTS.js} +1 -1
  32. package/{chunk-BYEJ7K2Z.js → chunk-7S4YWN7P.js} +1 -1
  33. package/{chunk-URWDSZRW.js → chunk-7UQEDGCB.js} +3 -3
  34. package/{chunk-7FWPLK4M.js → chunk-A3GDWRW6.js} +1 -1
  35. package/{chunk-SREASRV5.js → chunk-ABQYVJBJ.js} +1 -1
  36. package/{chunk-EBKMQULC.js → chunk-B3RYNS4I.js} +12 -14
  37. package/{chunk-ETLZZQJE.js → chunk-B7W5GH7Z.js} +2 -2
  38. package/{chunk-UZ6XXCVR.js → chunk-BEQGQMYW.js} +14 -1
  39. package/{chunk-WL2RKIBF.js → chunk-BQKN5ZHZ.js} +1 -1
  40. package/{chunk-DM4FBSWG.js → chunk-BS4DOHEI.js} +7 -7
  41. package/{chunk-4SZ37KLL.js → chunk-C5GYGTUD.js} +14 -14
  42. package/{chunk-KRMWO2NN.js → chunk-DAWALEPB.js} +2 -2
  43. package/{chunk-E36HZARC.js → chunk-DJM4BCSB.js} +3 -3
  44. package/chunk-GNWFC7YT.js +1529 -0
  45. package/chunk-HJKGQPYF.js +266 -0
  46. package/{chunk-3JQ2NRYU.js → chunk-HVURBGF3.js} +4 -4
  47. package/{chunk-RZOJRTKR.js → chunk-IVWFJGEB.js} +56 -784
  48. package/{chunk-7QVPPOEC.js → chunk-IZWQKAGJ.js} +5 -5
  49. package/{chunk-6XIE5ZGI.js → chunk-JPGCXHNM.js} +1 -1
  50. package/{chunk-E6RGHPDR.js → chunk-KIAHQ37Z.js} +2 -4
  51. package/{chunk-ZZCJUXUI.js → chunk-M67M3AK5.js} +2 -2
  52. package/{chunk-SZLVDREM.js → chunk-N4X2KIYL.js} +3 -3
  53. package/{chunk-BOYUESO7.js → chunk-OAJRZ35U.js} +1 -1
  54. package/{chunk-5J7W2VWW.js → chunk-OHUU52T3.js} +6 -265
  55. package/{chunk-ZVN6I33J.js → chunk-OKCTLCKS.js} +4 -4
  56. package/{chunk-AETZ7AD6.js → chunk-Q554LLSI.js} +1 -1
  57. package/{chunk-3VPDELAP.js → chunk-R5TSWLOO.js} +13 -13
  58. package/{chunk-XWNRAIUL.js → chunk-S6FCVZ4I.js} +6 -16
  59. package/{chunk-IDGYOD2O.js → chunk-SDDLKP4V.js} +27 -27
  60. package/{chunk-GCJ3IS5M.js → chunk-SHMFFPY3.js} +167 -2
  61. package/{chunk-3QPYFHAH.js → chunk-SR2I44ML.js} +1 -1
  62. package/{chunk-PZM3EENV.js → chunk-T2EUOLNJ.js} +1 -1
  63. package/{chunk-FNGAF7C4.js → chunk-TR54UTFI.js} +9 -9
  64. package/{chunk-DUJWWUGV.js → chunk-UMYXJWI3.js} +1 -1
  65. package/{chunk-HTMVBPOF.js → chunk-UVSMQBOV.js} +13 -13
  66. package/{chunk-NHRQCXIQ.js → chunk-VMFTFOWF.js} +13 -3
  67. package/{chunk-73BR2IQT.js → chunk-WKJC6UOK.js} +2 -2
  68. package/{chunk-T25L377S.js → chunk-X2KZN5T7.js} +9 -9
  69. package/{chunk-YFADVSZE.js → chunk-X7WAX4JU.js} +6 -6
  70. package/{chunk-BJCWNHVU.js → chunk-XPMTSMUR.js} +2 -2
  71. package/{chunk-UDQWGU7F.js → chunk-YZHP76TR.js} +1 -1
  72. package/{chunk-BKJO7LDP.js → chunk-ZZ6MBROT.js} +2 -2
  73. package/{contentThunks-THSCADSK.js → contentThunks-65VJVF3F.js} +19 -19
  74. package/{createAgentAutomationAction-WGN3UQ5A.js → createAgentAutomationAction-F6TR5V5Z.js} +19 -19
  75. package/{createDialogAction-3EN2NLH7.js → createDialogAction-4PSBOUVA.js} +22 -22
  76. package/{createPageAction-4VK473QV.js → createPageAction-BHEWWPJK.js} +20 -20
  77. package/{dbSlice-GKGGFNOB.js → dbSlice-JNK4XZ27.js} +7 -7
  78. package/{deleteFile-LWSR674W.js → deleteFile-YG6QMJLU.js} +3 -3
  79. package/{dialogCommands-PS4NWYY7.js → dialogCommands-K3Y6JVJH.js} +21 -21
  80. package/{dialogSlice-CLV7SVOZ.js → dialogSlice-MSNQGQ7M.js} +18 -18
  81. package/{docCreateCommands-4KANZJR6.js → docCreateCommands-U6RYQCCY.js} +21 -21
  82. package/{docDeleteCommands-F2S2TRUF.js → docDeleteCommands-KQJTPJVD.js} +22 -22
  83. package/{docReadCommands-B2WDPZQE.js → docReadCommands-IY3PZ2E4.js} +21 -21
  84. package/{docStore-TDLCHWPF.js → docStore-32KUMVID.js} +8 -8
  85. package/{docUpdateCommands-E7TKHRIO.js → docUpdateCommands-FDH5RH2H.js} +21 -21
  86. package/{fetchMessages-DRABNDPZ.js → fetchMessages-EIU7UFFK.js} +3 -4
  87. package/getPricing-QVTUQQTM.js +1 -1
  88. package/{handleSendMessageAction-AHL3ZHE4.js → handleSendMessageAction-JV45R62M.js} +18 -18
  89. package/index.js +51 -51
  90. package/{localDialogRead-PUQKFI73.js → localDialogRead-GKTRZFAP.js} +1 -1
  91. package/{machineCommands-OTABVXOA.js → machineCommands-KZDKNEHA.js} +43 -43
  92. package/{machineWsRunDispatch-V4EVQSMZ.js → machineWsRunDispatch-7QG7MSF3.js} +41 -41
  93. package/{memberThunks-KATHH3F4.js → memberThunks-A6OAY77F.js} +8 -8
  94. package/package.json +1 -1
  95. package/{read-LC6HVYBN.js → read-2PV4PN2E.js} +4 -3
  96. package/{readDocTool-N3ERJHHF.js → readDocTool-FGK5XGAW.js} +1 -1
  97. package/{readlineWorkspace-IIT3FQ6I.js → readlineWorkspace-RRHH6B4U.js} +46 -46
  98. package/{removeDialogAgentAction-F5GPTALR.js → removeDialogAgentAction-6SGBZWSW.js} +10 -10
  99. package/{runAgentClientLoop-7TQM7IAR.js → runAgentClientLoop-V4ZIQNZV.js} +35 -35
  100. package/{setDialogExtraReferencesAction-AY4ZCF3A.js → setDialogExtraReferencesAction-LC3SOVJO.js} +8 -8
  101. package/{setPrimaryDialogAgentAction-HPMG7V3R.js → setPrimaryDialogAgentAction-XE2HIEVY.js} +10 -10
  102. package/{settingSlice-OEJA4NQO.js → settingSlice-GJYAXZZ6.js} +9 -9
  103. package/{spaceCommands-FSYH7AL4.js → spaceCommands-KSZU2DEA.js} +19 -19
  104. package/{streamAgentChatTurn-6EF6TVFK.js → streamAgentChatTurn-3SB6KVU7.js} +40 -41
  105. package/{switchDialogAgentAction-HMDZTZ4I.js → switchDialogAgentAction-EDYI5RLR.js} +7 -7
  106. package/{tools-R3QNWWTD.js → tools-CX7EVHKL.js} +31 -31
  107. package/{tuiSummaryLlmCaller-PWOXTCBF.js → tuiSummaryLlmCaller-CCYGQDGB.js} +10 -10
  108. package/{updateDialogTitleAction-F3EUOWOB.js → updateDialogTitleAction-5SZZXIIK.js} +19 -19
  109. package/chunk-I42VC5KR.js +0 -15
  110. package/chunk-NB5SIWC4.js +0 -611
  111. package/codingSkills-7S6523WH.js +0 -48
  112. package/{chunk-AX7RMXSH.js → chunk-5XV64MAU.js} +3 -3
  113. package/{chunk-BZNGCVAW.js → chunk-EDZAJS6E.js} +3 -3
  114. package/{chunk-3RAG2NAD.js → chunk-UKWGR5SS.js} +3 -3
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  buildDialogAttachmentPlan,
6
6
  extractFileContentIds
7
- } from "./chunk-HQUORJTM.js";
7
+ } from "./chunk-3BMYXEUW.js";
8
8
  import {
9
9
  isOAuthApiKeyRef
10
10
  } from "./chunk-YYLHWIW6.js";
@@ -13,10 +13,10 @@ import {
13
13
  } from "./chunk-AGGIDPCZ.js";
14
14
  import {
15
15
  runLlm
16
- } from "./chunk-DM4FBSWG.js";
16
+ } from "./chunk-BS4DOHEI.js";
17
17
  import {
18
18
  cleanupCliSessionForDialog
19
- } from "./chunk-BJCWNHVU.js";
19
+ } from "./chunk-XPMTSMUR.js";
20
20
  import {
21
21
  getActiveDialogAgentId,
22
22
  getDialogAgentIds,
@@ -54,7 +54,7 @@ import {
54
54
  getModelInfo,
55
55
  normalizeUsage,
56
56
  resolveAutoExecutionProfile
57
- } from "./chunk-7QVPPOEC.js";
57
+ } from "./chunk-IZWQKAGJ.js";
58
58
  import {
59
59
  COMPACTION_SUMMARY_SYSTEM_PROMPT,
60
60
  buildCompactionMetricsFromPlan,
@@ -65,7 +65,7 @@ import {
65
65
  normalizeAssistantContentBuffer,
66
66
  planCompression,
67
67
  serializeMessageContent
68
- } from "./chunk-E36HZARC.js";
68
+ } from "./chunk-DJM4BCSB.js";
69
69
  import {
70
70
  findModelConfig,
71
71
  getModelConfig
@@ -75,7 +75,7 @@ import {
75
75
  } from "./chunk-HNMXYYJR.js";
76
76
  import {
77
77
  fetchMessages
78
- } from "./chunk-BYEJ7K2Z.js";
78
+ } from "./chunk-7S4YWN7P.js";
79
79
  import {
80
80
  PLATFORM_HOSTED_DEEPSEEK_FLASH_MODEL,
81
81
  PLATFORM_HOSTED_DEEPSEEK_PRO_MODEL,
@@ -87,7 +87,7 @@ import {
87
87
  } from "./chunk-AJHEFRGJ.js";
88
88
  import {
89
89
  nolotusId
90
- } from "./chunk-XWNRAIUL.js";
90
+ } from "./chunk-BEQGQMYW.js";
91
91
  import {
92
92
  asRecordOrEmpty
93
93
  } from "./chunk-KX6YBIHG.js";
@@ -97,7 +97,7 @@ import {
97
97
  remove,
98
98
  selectById,
99
99
  write
100
- } from "./chunk-YFADVSZE.js";
100
+ } from "./chunk-X7WAX4JU.js";
101
101
  import {
102
102
  buildDialogAgentListIndexDeleteOps,
103
103
  createDialogMessageKeyAndId,
@@ -108,7 +108,7 @@ import {
108
108
  isDialogRecordKey,
109
109
  isPageKey,
110
110
  isTableMetaKey
111
- } from "./chunk-NHRQCXIQ.js";
111
+ } from "./chunk-VMFTFOWF.js";
112
112
  import {
113
113
  asOptionalFiniteNumber
114
114
  } from "./chunk-WWC7I6TA.js";
@@ -119,7 +119,7 @@ import {
119
119
  builtinAgentCatalogEntryById,
120
120
  builtinRuntimeFallbackEntries,
121
121
  isBuiltinPlatformAgentKey
122
- } from "./chunk-5J7W2VWW.js";
122
+ } from "./chunk-HJKGQPYF.js";
123
123
  import {
124
124
  extractCustomId,
125
125
  extractUserId,
@@ -135,7 +135,7 @@ import {
135
135
  getRuntimeServerContext,
136
136
  parseOwnerUserIdFromDbKey,
137
137
  scheduleDeleteReplication
138
- } from "./chunk-3RAG2NAD.js";
138
+ } from "./chunk-UKWGR5SS.js";
139
139
  import {
140
140
  createClientLogger,
141
141
  isAbortError
@@ -149,12 +149,12 @@ import {
149
149
  isTombstoneRecord,
150
150
  shouldReplaceWithNextRecord
151
151
  } from "./chunk-GBRG75BQ.js";
152
- import {
153
- asTrimmedString
154
- } from "./chunk-3EUW3WEO.js";
155
152
  import {
156
153
  isRecord
157
154
  } from "./chunk-KUG52IAP.js";
155
+ import {
156
+ asTrimmedString
157
+ } from "./chunk-3EUW3WEO.js";
158
158
  import {
159
159
  asOptionalTrimmedString
160
160
  } from "./chunk-G3SUCT4W.js";
@@ -17126,7 +17126,7 @@ var messageSlice = createSliceWithThunks({
17126
17126
  runtimeOptions: args.runtimeOptions
17127
17127
  });
17128
17128
  if (agentKeyToUse) {
17129
- const { streamAgentChatTurn } = await import("./agentSlice-2P7OJFES.js");
17129
+ const { streamAgentChatTurn } = await import("./agentSlice-B5JSZNGT.js");
17130
17130
  await dispatch(
17131
17131
  streamAgentChatTurn({
17132
17132
  agentKey: agentKeyToUse,
@@ -18197,7 +18197,7 @@ var deleteOwnedDialogAttachments = async (args) => {
18197
18197
  metadataReadFailures
18198
18198
  });
18199
18199
  if (!plan.deleteCandidates.length) return plan;
18200
- const { deleteFileAction } = await import("./deleteFile-LWSR674W.js");
18200
+ const { deleteFileAction } = await import("./deleteFile-YG6QMJLU.js");
18201
18201
  for (const candidate of plan.deleteCandidates) {
18202
18202
  if (candidate.fileDbKey) {
18203
18203
  await deleteFileAction(candidate.fileDbKey, args.thunkApi);
@@ -18259,7 +18259,7 @@ var deleteDialogThunk = async (payload, thunkApi) => {
18259
18259
  }
18260
18260
  if (isCurrentDialog) {
18261
18261
  await thunkApi.dispatch(resetMsgs());
18262
- const { clearPendingAttachments: clearPendingAttachments2 } = await import("./dialogSlice-CLV7SVOZ.js");
18262
+ const { clearPendingAttachments: clearPendingAttachments2 } = await import("./dialogSlice-MSNQGQ7M.js");
18263
18263
  dispatch(clearPendingAttachments2());
18264
18264
  }
18265
18265
  return { dialogKey, isCurrentDialog, attachmentPlan };
@@ -18267,39 +18267,39 @@ var deleteDialogThunk = async (payload, thunkApi) => {
18267
18267
 
18268
18268
  // packages/chat/dialog/dialogSlice.ts
18269
18269
  var runCreateDialogAction = async (args, thunkApi) => {
18270
- const { createDialogAction } = await import("./createDialogAction-3EN2NLH7.js");
18270
+ const { createDialogAction } = await import("./createDialogAction-4PSBOUVA.js");
18271
18271
  return createDialogAction(args, thunkApi);
18272
18272
  };
18273
18273
  var runCreateAgentAutomationAction = async (args, thunkApi) => {
18274
- const { createAgentAutomationAction } = await import("./createAgentAutomationAction-WGN3UQ5A.js");
18274
+ const { createAgentAutomationAction } = await import("./createAgentAutomationAction-F6TR5V5Z.js");
18275
18275
  return createAgentAutomationAction(args, thunkApi);
18276
18276
  };
18277
18277
  var runUpdateDialogTitleAction = async (args, thunkApi) => {
18278
- const { updateDialogTitleAction } = await import("./updateDialogTitleAction-F3EUOWOB.js");
18278
+ const { updateDialogTitleAction } = await import("./updateDialogTitleAction-5SZZXIIK.js");
18279
18279
  return updateDialogTitleAction(args, thunkApi);
18280
18280
  };
18281
18281
  var runAddDialogAgentAction = async (args, thunkApi) => {
18282
- const { addDialogAgentAction } = await import("./addDialogAgentAction-M7VLLBZM.js");
18282
+ const { addDialogAgentAction } = await import("./addDialogAgentAction-COSPGJ4K.js");
18283
18283
  return addDialogAgentAction(args, thunkApi);
18284
18284
  };
18285
18285
  var runRemoveDialogAgentAction = async (args, thunkApi) => {
18286
- const { removeDialogAgentAction } = await import("./removeDialogAgentAction-F5GPTALR.js");
18286
+ const { removeDialogAgentAction } = await import("./removeDialogAgentAction-6SGBZWSW.js");
18287
18287
  return removeDialogAgentAction(args, thunkApi);
18288
18288
  };
18289
18289
  var runSetPrimaryDialogAgentAction = async (args, thunkApi) => {
18290
- const { setPrimaryDialogAgentAction } = await import("./setPrimaryDialogAgentAction-HPMG7V3R.js");
18290
+ const { setPrimaryDialogAgentAction } = await import("./setPrimaryDialogAgentAction-XE2HIEVY.js");
18291
18291
  return setPrimaryDialogAgentAction(args, thunkApi);
18292
18292
  };
18293
18293
  var runSwitchDialogAgentAction = async (args, thunkApi) => {
18294
- const { switchDialogAgentAction } = await import("./switchDialogAgentAction-HMDZTZ4I.js");
18294
+ const { switchDialogAgentAction } = await import("./switchDialogAgentAction-EDYI5RLR.js");
18295
18295
  return switchDialogAgentAction(args, thunkApi);
18296
18296
  };
18297
18297
  var runSetDialogExtraReferencesAction = async (args, thunkApi) => {
18298
- const { setDialogExtraReferencesAction } = await import("./setDialogExtraReferencesAction-AY4ZCF3A.js");
18298
+ const { setDialogExtraReferencesAction } = await import("./setDialogExtraReferencesAction-LC3SOVJO.js");
18299
18299
  return setDialogExtraReferencesAction(args, thunkApi);
18300
18300
  };
18301
18301
  var runHandleSendMessageAction = async (args, thunkApi) => {
18302
- const { handleSendMessageAction } = await import("./handleSendMessageAction-AHL3ZHE4.js");
18302
+ const { handleSendMessageAction } = await import("./handleSendMessageAction-JV45R62M.js");
18303
18303
  return handleSendMessageAction(args, thunkApi);
18304
18304
  };
18305
18305
  function clearDialogState() {
@@ -18312,7 +18312,7 @@ var createPageAndAddReference = createAsyncThunk(
18312
18312
  async (payload, { dispatch, getState, rejectWithValue }) => {
18313
18313
  const { slateData, jsonData, title, type, fileId, groupId, dialogKey } = payload;
18314
18314
  try {
18315
- const { createDocState } = await import("./docStore-TDLCHWPF.js");
18315
+ const { createDocState } = await import("./docStore-32KUMVID.js");
18316
18316
  const pageKey = await createDocState(
18317
18317
  { slateData, title },
18318
18318
  { dispatch, getState }
@@ -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-BEQGQMYW.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
@@ -366,6 +372,160 @@ function applyDefaultWebToolPacks(args) {
366
372
  return [...enhanced];
367
373
  }
368
374
 
375
+ // packages/ai/skills/builtinObjectSkills.ts
376
+ var BUILTIN_OBJECT_SKILL_IDS = {
377
+ table: "builtin-table-skill-v1",
378
+ doc: "builtin-doc-skill-v1",
379
+ // key 改名为 code-style(它本来就叫「编码风格技能」,"code" 这个名字是它抢的,
380
+ // 与「代码执行」能力包撞车)。**id 值保持不变**——skillId 与页面 key 都从它派生,
381
+ // 改了会让存量 agent.references 失配。
382
+ "code-style": "builtin-code-skill-v1",
383
+ image: "builtin-image-skill-v1",
384
+ file: "builtin-file-skill-v1",
385
+ pagebuilder: "builtin-pagebuilder-skill-v1"
386
+ };
387
+ var SKILL_DEFS = {
388
+ doc: {
389
+ id: BUILTIN_OBJECT_SKILL_IDS.doc,
390
+ name: "\u6587\u6863\u7F16\u8F91\u6280\u80FD",
391
+ 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",
392
+ toolNames: ["readDoc", "updateDoc"],
393
+ promptPatch: [
394
+ "\u6587\u6863\u7F16\u8F91\u6307\u5357\uFF1A",
395
+ "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",
396
+ "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"
397
+ ].join("\n")
398
+ },
399
+ table: {
400
+ id: BUILTIN_OBJECT_SKILL_IDS.table,
401
+ name: "\u8868\u683C\u7F16\u8F91\u6280\u80FD",
402
+ 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",
403
+ // 与 app-builder 能力包共用同一份清单(TOOL_PACKS.TABLE)。
404
+ // 以前两边各抄一份,改一个忘另一个就会静默不同步。
405
+ toolNames: [...TOOL_PACKS.TABLE],
406
+ promptPatch: [
407
+ "\u8868\u683C\u64CD\u4F5C\u6307\u5357\uFF1A",
408
+ "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",
409
+ "2. \u65B0\u589E\u8BB0\u5F55\u5FC5\u987B\u8C03\u7528 addTableRow / addTableRows\uFF0C\u4E0D\u8981\u53EA\u5728\u56DE\u7B54\u91CC\u53E3\u5934\u63CF\u8FF0\u3002",
410
+ "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",
411
+ "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"
412
+ ].join("\n")
413
+ },
414
+ "code-style": {
415
+ id: BUILTIN_OBJECT_SKILL_IDS["code-style"],
416
+ name: "\u7F16\u7801\u98CE\u683C\u6280\u80FD",
417
+ 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",
418
+ toolNames: [],
419
+ promptPatch: [
420
+ "\u7F16\u7801\u98CE\u683C\u4E0E\u89C4\u8303\u6307\u5357\uFF1A",
421
+ "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",
422
+ "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",
423
+ "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",
424
+ "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",
425
+ "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"
426
+ ].join("\n")
427
+ },
428
+ image: {
429
+ id: BUILTIN_OBJECT_SKILL_IDS.image,
430
+ name: "\u56FE\u7247\u5206\u6790\u6280\u80FD",
431
+ 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",
432
+ toolNames: [],
433
+ promptPatch: [
434
+ "\u56FE\u7247\u5206\u6790\u6307\u5357\uFF1A",
435
+ "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",
436
+ "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"
437
+ ].join("\n")
438
+ },
439
+ file: {
440
+ id: BUILTIN_OBJECT_SKILL_IDS.file,
441
+ name: "\u6587\u4EF6\u5904\u7406\u6280\u80FD",
442
+ 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",
443
+ toolNames: [],
444
+ promptPatch: [
445
+ "\u6587\u4EF6\u5904\u7406\u6307\u5357\uFF1A",
446
+ "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",
447
+ "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"
448
+ ].join("\n")
449
+ },
450
+ pagebuilder: {
451
+ id: BUILTIN_OBJECT_SKILL_IDS.pagebuilder,
452
+ name: "\u52A8\u6001\u4EA4\u4E92\u7EC4\u4EF6\u751F\u6210\u6280\u80FD",
453
+ 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",
454
+ toolNames: [],
455
+ promptPatch: [
456
+ "\u52A8\u6001\u4EA4\u4E92\u7EC4\u4EF6\u751F\u6210\u89C4\u5219\uFF1A",
457
+ "\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",
458
+ "",
459
+ "\u7EDD\u5BF9\u89C4\u5219\uFF1A",
460
+ "1. \u53EA\u8F93\u51FA\u4E00\u4E2A Markdown \u4EE3\u7801\u5757\uFF0C\u4EE3\u7801\u5757\u8BED\u8A00\u5FC5\u987B\u662F tsx preview\u3002",
461
+ "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",
462
+ "3. \u4EE3\u7801\u5FC5\u987B\u5B9A\u4E49\u9876\u5C42 function Example()\uFF0C\u4E0D\u8981\u8C03\u7528 render()\uFF0C\u4E0D\u8981 export default\u3002",
463
+ "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",
464
+ "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",
465
+ "6. \u4E3A\u4E3B\u8981\u533A\u5757\u52A0 data-artifact-section \u5C5E\u6027\u3002",
466
+ "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",
467
+ "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",
468
+ "",
469
+ "\u5404\u7C7B\u9875\u9762\u9ED8\u8BA4\u7ED3\u6784\uFF1A",
470
+ "- \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",
471
+ "- \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",
472
+ "- \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",
473
+ "- \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",
474
+ "- \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",
475
+ "- \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",
476
+ "- \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",
477
+ "",
478
+ "\u4EE3\u7801\u98CE\u683C\uFF1A",
479
+ "1. \u4F7F\u7528\u5185\u8054 style \u6216\u7EC4\u4EF6\u5185 <style>\uFF0C\u4E0D\u8981\u4F9D\u8D56 Tailwind \u6216\u5916\u90E8 CSS\u3002",
480
+ "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",
481
+ "3. \u989C\u8272\u8981\u514B\u5236\uFF0C\u6709\u5C42\u6B21\uFF1B\u907F\u514D\u6574\u9875\u5355\u4E00\u84DD\u7D2B\u6E10\u53D8\u3002",
482
+ "4. \u8868\u683C\u3001\u56FE\u8868\u3001\u5361\u7247\u3001\u6309\u94AE\u90FD\u8981\u6709 hover/active/focus \u7684\u7EC6\u8282\u3002",
483
+ "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",
484
+ "6. \u4EE3\u7801\u5C3D\u91CF\u77ED\u800C\u5B8C\u6574\uFF0C\u9ED8\u8BA4 150-260 \u884C\u4EE5\u5185\u3002",
485
+ "",
486
+ "\u8F93\u51FA\u683C\u5F0F\u793A\u4F8B\uFF1A",
487
+ "```tsx preview",
488
+ "function Example() {",
489
+ " const [tab, setTab] = useState('overview');",
490
+ " return <main><section data-artifact-section>...</section></main>;",
491
+ "}",
492
+ "```"
493
+ ].join("\n")
494
+ }
495
+ };
496
+ function buildBuiltinObjectSkillConfig(kind) {
497
+ const def = SKILL_DEFS[kind];
498
+ return {
499
+ version: "0.1",
500
+ kind: "skill",
501
+ id: def.id,
502
+ name: def.name,
503
+ description: def.description,
504
+ triggerMode: "explicit",
505
+ toolNames: def.toolNames,
506
+ promptPatch: def.promptPatch
507
+ };
508
+ }
509
+ function buildBuiltinObjectSkillDbKey(kind, userId) {
510
+ return createKey("page" /* DOC */, userId, BUILTIN_OBJECT_SKILL_IDS[kind]);
511
+ }
512
+ function buildBuiltinObjectSkillReference(kind, userId) {
513
+ return {
514
+ dbKey: buildBuiltinObjectSkillDbKey(kind, userId),
515
+ title: SKILL_DEFS[kind].name,
516
+ type: "instruction"
517
+ };
518
+ }
519
+ function buildBuiltinObjectSkillPageContent(kind) {
520
+ const def = SKILL_DEFS[kind];
521
+ return buildSkillDocMarkdown({
522
+ body: `# ${def.name}
523
+
524
+ ${def.description}`,
525
+ skillConfig: buildBuiltinObjectSkillConfig(kind)
526
+ });
527
+ }
528
+
369
529
  export {
370
530
  buildCodeWorkDiscipline,
371
531
  TOOL_PACKS,
@@ -379,5 +539,10 @@ export {
379
539
  FORCED_TOOLS,
380
540
  applyDisabledTools,
381
541
  addDefaultLightWebToolsForConfiguredAgents,
382
- applyDefaultWebToolPacks
542
+ applyDefaultWebToolPacks,
543
+ BUILTIN_OBJECT_SKILL_IDS,
544
+ buildBuiltinObjectSkillConfig,
545
+ buildBuiltinObjectSkillDbKey,
546
+ buildBuiltinObjectSkillReference,
547
+ buildBuiltinObjectSkillPageContent
383
548
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DEFAULT_AGENT_BASE_POLICY,
3
3
  DEFAULT_USER_PREFERENCE_PROFILE
4
- } from "./chunk-XWNRAIUL.js";
4
+ } from "./chunk-S6FCVZ4I.js";
5
5
 
6
6
  // packages/ai/policy/runtimePolicy.ts
7
7
  var clampLevel = (value, fallback) => {
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-UAD2WT54.js";
8
8
  import {
9
9
  toTimestampMs
10
- } from "./chunk-YFADVSZE.js";
10
+ } from "./chunk-X7WAX4JU.js";
11
11
  import {
12
12
  fetchFromServer,
13
13
  getAllServers
@@ -7,7 +7,7 @@ import {
7
7
  listUserRecordsFromServers,
8
8
  readDbRecordFromServers,
9
9
  readLiveDbRecordAfterTombstoneMerge
10
- } from "./chunk-WL2RKIBF.js";
10
+ } from "./chunk-BQKN5ZHZ.js";
11
11
  import {
12
12
  fetchWithTransientRetry
13
13
  } from "./chunk-5XTOKQLW.js";
@@ -18,7 +18,7 @@ import {
18
18
  import {
19
19
  buildDialogAttachmentPlan,
20
20
  extractFileContentIds
21
- } from "./chunk-HQUORJTM.js";
21
+ } from "./chunk-3BMYXEUW.js";
22
22
  import {
23
23
  isLevelLockError
24
24
  } from "./chunk-URMS4XY2.js";
@@ -30,7 +30,7 @@ import {
30
30
  boundSummaryText,
31
31
  buildDialogReadEnvelope,
32
32
  projectDialogReadForAgent
33
- } from "./chunk-ZVN6I33J.js";
33
+ } from "./chunk-OKCTLCKS.js";
34
34
  import {
35
35
  toErrorMessage
36
36
  } from "./chunk-HNMXYYJR.js";
@@ -51,19 +51,19 @@ import {
51
51
  import {
52
52
  asNonEmptyStringArray,
53
53
  asTrimmedNonEmptyStringArray
54
- } from "./chunk-I42VC5KR.js";
54
+ } from "./chunk-VMFTFOWF.js";
55
55
  import {
56
56
  createClientLogger
57
57
  } from "./chunk-QOKAKDPE.js";
58
58
  import {
59
59
  isLevelNotFoundError
60
60
  } from "./chunk-OW765XBU.js";
61
- import {
62
- asTrimmedString
63
- } from "./chunk-3EUW3WEO.js";
64
61
  import {
65
62
  isRecord
66
63
  } from "./chunk-KUG52IAP.js";
64
+ import {
65
+ asTrimmedString
66
+ } from "./chunk-3EUW3WEO.js";
67
67
  import {
68
68
  DEFAULT_LOCAL_API_ORIGIN
69
69
  } from "./chunk-4SN6J65J.js";
@@ -724,7 +724,7 @@ function isExplicitDialogIdMismatch(meta, dialogId) {
724
724
  return meta && typeof meta === "object" && "id" in meta && meta.id != null && String(meta.id) !== dialogId;
725
725
  }
726
726
  async function readDialogFromLocalDb(dialogKey, dialogId, limit, readLocalDialog) {
727
- const reader = readLocalDialog ?? (await import("./localDialogRead-PUQKFI73.js")).readDialogFromLocalDb;
727
+ const reader = readLocalDialog ?? (await import("./localDialogRead-GKTRZFAP.js")).readDialogFromLocalDb;
728
728
  const result = await reader({ dialogKey, dialogId, limit });
729
729
  return {
730
730
  ...result,
@@ -741,7 +741,7 @@ async function readLocalDialogAtDbPathDefault(args) {
741
741
  const [{ Level }, { safeJsonEncoding }, { fetchMessages }] = await Promise.all([
742
742
  import("./levelLazyShim-GZBKODGI.js"),
743
743
  import("./serverStoreFactory-YMXDF4NI.js"),
744
- import("./fetchMessages-DRABNDPZ.js")
744
+ import("./fetchMessages-EIU7UFFK.js")
745
745
  ]);
746
746
  const db = new Level(args.dbPath, {
747
747
  valueEncoding: safeJsonEncoding,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  requireTokenUser
3
- } from "./chunk-D6XYLSOS.js";
3
+ } from "./chunk-5HKWE6OQ.js";
4
4
  import {
5
5
  resolveServerUrl
6
6
  } from "./chunk-A7GB5UGH.js";
@@ -5,14 +5,14 @@ import {
5
5
  inlineImageUrlsForCustomProvider,
6
6
  prepareTools,
7
7
  shouldInlineImageUrlsForAgent
8
- } from "./chunk-KRMWO2NN.js";
8
+ } from "./chunk-DAWALEPB.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-4SZ37KLL.js";
15
+ } from "./chunk-C5GYGTUD.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-RZOJRTKR.js";
26
+ } from "./chunk-IVWFJGEB.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-IDGYOD2O.js";
38
+ } from "./chunk-SDDLKP4V.js";
39
39
  import {
40
40
  streamAgentChatTurn
41
- } from "./chunk-DM4FBSWG.js";
41
+ } from "./chunk-BS4DOHEI.js";
42
42
  import {
43
43
  addActiveController,
44
44
  removeActiveController,
@@ -56,7 +56,7 @@ import {
56
56
  import {
57
57
  EMPTY_ASSISTANT_REPAIR_PROMPT,
58
58
  getModelInfo
59
- } from "./chunk-7QVPPOEC.js";
59
+ } from "./chunk-IZWQKAGJ.js";
60
60
  import {
61
61
  getApiEndpoint
62
62
  } from "./chunk-MXUSPS2N.js";
@@ -65,33 +65,33 @@ import {
65
65
  } from "./chunk-HNMXYYJR.js";
66
66
  import {
67
67
  selectCurrentServer
68
- } from "./chunk-XWNRAIUL.js";
68
+ } from "./chunk-S6FCVZ4I.js";
69
69
  import {
70
70
  write
71
- } from "./chunk-YFADVSZE.js";
71
+ } from "./chunk-X7WAX4JU.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,9 +1,6 @@
1
1
  import {
2
2
  asOptionalFiniteNumber
3
3
  } from "./chunk-WWC7I6TA.js";
4
- import {
5
- asNonEmptyStringArray
6
- } from "./chunk-I42VC5KR.js";
7
4
  import {
8
5
  asTrimmedString
9
6
  } from "./chunk-3EUW3WEO.js";
@@ -2393,6 +2390,17 @@ var require_rambda = __commonJS({
2393
2390
  }
2394
2391
  });
2395
2392
 
2393
+ // packages/core/stringArray.ts
2394
+ function asNonEmptyStringArray(value) {
2395
+ if (!Array.isArray(value)) return [];
2396
+ return value.filter(
2397
+ (item) => typeof item === "string" && !!item.trim()
2398
+ );
2399
+ }
2400
+ function asTrimmedNonEmptyStringArray(value) {
2401
+ return asNonEmptyStringArray(value).map((item) => item.trim());
2402
+ }
2403
+
2396
2404
  // packages/core/toTrimmedString.ts
2397
2405
  function toTrimmedString(value) {
2398
2406
  return typeof value === "string" ? value.trim() : value == null ? "" : String(value).trim();
@@ -3169,6 +3177,8 @@ var sanitizeShareData = (data) => {
3169
3177
  };
3170
3178
 
3171
3179
  export {
3180
+ asNonEmptyStringArray,
3181
+ asTrimmedNonEmptyStringArray,
3172
3182
  ulid,
3173
3183
  toTrimmedString,
3174
3184
  toNonEmptyString,
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-YYLHWIW6.js";
4
4
  import {
5
5
  compareAgentSelection
6
- } from "./chunk-ZVN6I33J.js";
6
+ } from "./chunk-OKCTLCKS.js";
7
7
  import {
8
8
  isAntigravityOAuthAgent
9
9
  } from "./chunk-LHDV2QUI.js";
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-BJIRLHJR.js";
18
18
  import {
19
19
  fnv1a32Hex
20
- } from "./chunk-3RAG2NAD.js";
20
+ } from "./chunk-UKWGR5SS.js";
21
21
 
22
22
  // packages/ai/agent/agentBilling.ts
23
23
  function resolveBillingSource(candidate) {
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  createCliLocalRuntimeAdapter,
3
3
  summarizeEndpoint
4
- } from "./chunk-GHEJJGJI.js";
4
+ } from "./chunk-5F37RGTR.js";
5
5
  import {
6
6
  clipMultilineText
7
- } from "./chunk-RZOJRTKR.js";
7
+ } from "./chunk-IVWFJGEB.js";
8
8
  import {
9
9
  runLocalAgentTurn
10
- } from "./chunk-PF6O3GR3.js";
10
+ } from "./chunk-542M2LFO.js";
11
11
  import {
12
12
  applyToolSurfaceConstraints
13
- } from "./chunk-ZVN6I33J.js";
13
+ } from "./chunk-OKCTLCKS.js";
14
14
  import {
15
15
  resolveLocalRuntimeEnvFromPolicy
16
- } from "./chunk-3JQ2NRYU.js";
16
+ } from "./chunk-HVURBGF3.js";
17
17
  import {
18
18
  toErrorMessage
19
19
  } from "./chunk-HNMXYYJR.js";
@@ -32,19 +32,19 @@ import {
32
32
  } from "./chunk-KX6YBIHG.js";
33
33
  import {
34
34
  asTrimmedNonEmptyStringArray
35
- } from "./chunk-I42VC5KR.js";
35
+ } from "./chunk-VMFTFOWF.js";
36
36
  import {
37
37
  ownedAgentKey
38
38
  } from "./chunk-BJIRLHJR.js";
39
+ import {
40
+ isRecord
41
+ } from "./chunk-KUG52IAP.js";
39
42
  import {
40
43
  asTrimmedString
41
44
  } from "./chunk-3EUW3WEO.js";
42
45
  import {
43
46
  asOptionalPositiveFiniteNumber
44
47
  } from "./chunk-U6VC4MU4.js";
45
- import {
46
- isRecord
47
- } from "./chunk-KUG52IAP.js";
48
48
  import {
49
49
  asOptionalTrimmedString
50
50
  } from "./chunk-G3SUCT4W.js";