nolo-cli 0.29.2 → 0.30.0-alpha.10

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 (138) hide show
  1. package/{_executeModel-BFVTGZXE.js → _executeModel-5ARVVUIK.js} +64 -69
  2. package/{action-LG32A6DJ.js → action-HI3VRQLP.js} +15 -16
  3. package/{addContentAction-MPGMBJTQ.js → addContentAction-NCURJ6PK.js} +13 -13
  4. package/{addDialogAgentAction-ZH23WDID.js → addDialogAgentAction-RCY4ECF4.js} +12 -12
  5. package/{agentDeleteCommand-4S4STG42.js → agentDeleteCommand-5Q6TDCJU.js} +62 -40
  6. package/{agentEmailCommands-3F4IP4DI.js → agentEmailCommands-DSX4BJ2I.js} +77 -81
  7. package/{agentGrantCommands-JNDE4RWR.js → agentGrantCommands-E7ZZFRHK.js} +2 -1
  8. package/{agentListCommands-JCRV2XF6.js → agentListCommands-S66HL5RO.js} +59 -41
  9. package/{agentMachineCommands-KYXPYSFP.js → agentMachineCommands-ULCQ5ZNN.js} +55 -36
  10. package/{agentPullCommand-ZZGU5KOY.js → agentPullCommand-4V36XNGV.js} +4 -3
  11. package/{agentRecordCommands-UADUPIXO.js → agentRecordCommands-2AA3GEGO.js} +75 -79
  12. package/{agentRunCommand-MJWSR53W.js → agentRunCommand-3KOT77XY.js} +79 -83
  13. package/{agentRunControl-SNUKXN6J.js → agentRunControl-AKBN2366.js} +13 -1
  14. package/{agentRuntimeLocal-PC5RRRPT.js → agentRuntimeLocal-7TMDJD4S.js} +50 -31
  15. package/{agentSlice-C5OYLNBT.js → agentSlice-6IQRQZX3.js} +13 -14
  16. package/{appDeleteCommands-ZXODZ5AD.js → appDeleteCommands-UUDIWLNE.js} +55 -36
  17. package/{appDeployCommands-AWC6JPZH.js → appDeployCommands-CO6SZ7YP.js} +55 -36
  18. package/{appDeployStatusCommands-74NXMDAI.js → appDeployStatusCommands-QEVKVECJ.js} +55 -36
  19. package/{appGetCommands-6YGIAP5L.js → appGetCommands-3YSCCLK4.js} +55 -36
  20. package/{appListCommands-DZWBHMNK.js → appListCommands-FBJAFZKK.js} +55 -36
  21. package/{authCommand-XMQHBK5L.js → authCommand-3ADNCFKD.js} +16 -16
  22. package/{authCommands-JSOG2H4E.js → authCommands-CXJ6PI2O.js} +7 -7
  23. package/{chunk-TOGGHWHI.js → chunk-2CYGIPJH.js} +3 -3
  24. package/{chunk-HRJEPMZY.js → chunk-2HQ4OG6N.js} +2 -2
  25. package/{chunk-XMLRJUU5.js → chunk-2IJAKBK2.js} +12 -10
  26. package/{chunk-OLWMGSW2.js → chunk-2SOQY5L6.js} +41 -39
  27. package/{chunk-7H3UTGPM.js → chunk-3AUWC6EM.js} +82 -3
  28. package/{chunk-6HTWA77J.js → chunk-43EPBPZ2.js} +1 -1
  29. package/{chunk-RJBTU7AS.js → chunk-4F77PJBR.js} +302 -14
  30. package/{chunk-RZNYL4LW.js → chunk-4SAV7BD7.js} +65 -1
  31. package/{chunk-R5V5G73M.js → chunk-5RDLGLAP.js} +0 -1
  32. package/{chunk-VKBTAQWT.js → chunk-6JH2DF7J.js} +6 -6
  33. package/{chunk-DZ3XJVET.js → chunk-AOS5IN2I.js} +1 -1
  34. package/{chunk-5ZXNLOAG.js → chunk-ARPAHODF.js} +17 -10
  35. package/{chunk-IC7W63RM.js → chunk-ATK5WJOA.js} +4 -4
  36. package/{chunk-OEWEE4VW.js → chunk-BIPRFBC2.js} +4 -2
  37. package/{chunk-YTA2QOEE.js → chunk-CAENRKNJ.js} +15 -0
  38. package/chunk-CYRMUTGB.js +1707 -0
  39. package/chunk-DCDL3GC4.js +171 -0
  40. package/{chunk-WX3ZOSTL.js → chunk-EBNSAABL.js} +24 -26
  41. package/{chunk-2TYLTEAH.js → chunk-EDWM6D6L.js} +1 -1
  42. package/{chunk-GT3GG2H7.js → chunk-EIQDGAAE.js} +148 -2
  43. package/chunk-F3MP7CP6.js +73 -0
  44. package/{chunk-R7LOFGRE.js → chunk-G5GVZAXF.js} +19 -15
  45. package/{chunk-KEF5OBOZ.js → chunk-GKXS4F2I.js} +33 -27
  46. package/{chunk-R3JSTDQO.js → chunk-GVPMJPCT.js} +1 -1
  47. package/{chunk-WMB7GVPN.js → chunk-IPSPETAL.js} +152 -1177
  48. package/{chunk-MQRZ5QUH.js → chunk-IXZX5CJK.js} +1 -1
  49. package/{chunk-2FX23RGA.js → chunk-J3LHGBNO.js} +5 -5
  50. package/{chunk-VHBWHNVT.js → chunk-K6QEHQZ3.js} +8 -4
  51. package/{chunk-HRPWRVBI.js → chunk-KGEVMUMI.js} +11 -11
  52. package/{chunk-L65QKSVJ.js → chunk-L3GCUVOH.js} +1 -1
  53. package/{chunk-G2BZ43DV.js → chunk-LAXMH7JY.js} +14 -14
  54. package/chunk-LEVCXTDN.js +5558 -0
  55. package/{chunk-HEXXIS77.js → chunk-N2IX3ZYK.js} +1 -1
  56. package/{chunk-32ZM6HVI.js → chunk-NZBH7FTB.js} +95 -95
  57. package/{chunk-XOIF2TNF.js → chunk-OB6FBSH3.js} +13 -0
  58. package/{chunk-PSK2RUHV.js → chunk-OIW2RJ74.js} +360 -2
  59. package/{chunk-FRN5QOKN.js → chunk-PACNSC37.js} +19 -4
  60. package/{chunk-QC6ZWDSV.js → chunk-PIC6Z7VI.js} +3 -3
  61. package/{chunk-H5S4XUGI.js → chunk-Q243PXRU.js} +185 -158
  62. package/{chunk-BBGRJB5E.js → chunk-QBOW6RZN.js} +4 -4
  63. package/{chunk-FVOSIYXM.js → chunk-R5Y4XELF.js} +43 -394
  64. package/{chunk-DF7SMWEV.js → chunk-RWJPDKPB.js} +1 -1
  65. package/{chunk-NXMJ55RU.js → chunk-S2BMRBR2.js} +3 -3
  66. package/{chunk-GC34RRTQ.js → chunk-SWYMCHM7.js} +1 -69
  67. package/chunk-T27IEBNQ.js +149 -0
  68. package/{chunk-GMJS5AYP.js → chunk-T4X4GCYT.js} +19 -179
  69. package/{chunk-4BDPDTJU.js → chunk-TXVSNFHC.js} +8 -8
  70. package/{chunk-JSB4N6NU.js → chunk-V54H24CQ.js} +3 -3
  71. package/chunk-VQ4QPCKE.js +3226 -0
  72. package/{chunk-Q5RXHXKU.js → chunk-W3UDJJMA.js} +189 -122
  73. package/{chunk-L3QFIBZG.js → chunk-WTGCTVJG.js} +1 -1
  74. package/{chunk-XS7UPVR7.js → chunk-WTPC3XD4.js} +5 -5
  75. package/{chunk-WSQLK2KR.js → chunk-XFGM5PJP.js} +6 -6
  76. package/{chunk-HALKDXKP.js → chunk-XORE26Z4.js} +8 -4
  77. package/chunk-YLC42PIE.js +7889 -0
  78. package/{chunk-SKDNBYZK.js → chunk-ZJ2WITOO.js} +2 -2
  79. package/{chunk-L6RBX4L4.js → chunk-ZJH3LKEW.js} +21 -9
  80. package/{codingSkills-EN6Z6G6U.js → codingSkills-V35TRR4Y.js} +1 -2
  81. package/{createAgentAutomationAction-BK4UZJKU.js → createAgentAutomationAction-EYNYY2LB.js} +31 -37
  82. package/{createDialogAction-MJJUI2MK.js → createDialogAction-OUIRWYZP.js} +34 -39
  83. package/{createPageAction-YMZ7K363.js → createPageAction-2I5PHJFF.js} +45 -51
  84. package/{dbSlice-6QJYQUBV.js → dbSlice-BBL3PEVW.js} +12 -12
  85. package/{deleteFile-WDZ3VM7B.js → deleteFile-RJTEPOT4.js} +6 -6
  86. package/{dialogCommands-OKH45ASS.js → dialogCommands-5CL4QYQ7.js} +55 -38
  87. package/{dialogSlice-UDOKNDHB.js → dialogSlice-EKKVFKBJ.js} +28 -35
  88. package/{docCreateCommands-MCLMR4TE.js → docCreateCommands-QHCLYGNW.js} +54 -37
  89. package/{docDeleteCommands-ONDHI7JV.js → docDeleteCommands-DS6KOU6N.js} +56 -39
  90. package/{docReadCommands-FCXBMISW.js → docReadCommands-FRI5DAKH.js} +54 -37
  91. package/{docStore-N66O4CGH.js → docStore-V7EJS4PX.js} +30 -36
  92. package/{docUpdateCommands-T3XN6XOX.js → docUpdateCommands-RQO5ZTXT.js} +57 -40
  93. package/{fetchMessages-W4IKHPCS.js → fetchMessages-VPPQDDZ4.js} +3 -3
  94. package/{getPricing-X6I23RN6.js → getPricing-67TQVKFV.js} +6 -7
  95. package/{handleSendMessageAction-KC4AYUZP.js → handleSendMessageAction-KCF7KII4.js} +30 -37
  96. package/index.js +72 -72
  97. package/{localDialogRead-UFLBS6OT.js → localDialogRead-P72W2U2R.js} +1 -1
  98. package/{machineCommands-DIMRFA3Y.js → machineCommands-IAGAKTHV.js} +78 -82
  99. package/{machineWsRunDispatch-2DYJZI6Z.js → machineWsRunDispatch-JGKC2HEK.js} +73 -77
  100. package/{models-YT32CTT5.js → models-WDUTTYFS.js} +2 -2
  101. package/{offlineMarxistsAgentCommand-5OOWZLJI.js → offlineMarxistsAgentCommand-E6LUG63A.js} +6 -2
  102. package/package.json +1 -1
  103. package/{read-C7Y6LSBM.js → read-64OQDO3I.js} +7 -7
  104. package/{readDocTool-TOHRYJHP.js → readDocTool-MXM3T6PE.js} +2 -1
  105. package/{readlineWorkspace-HUPHMLDG.js → readlineWorkspace-5AQHHIBK.js} +209 -183
  106. package/{removeDialogAgentAction-WZXPOH5S.js → removeDialogAgentAction-NEKVAMSH.js} +16 -17
  107. package/{runAgentClientLoop-5TGSUKHV.js → runAgentClientLoop-6OGPS6SI.js} +63 -67
  108. package/{setDialogExtraReferencesAction-INZY2ENI.js → setDialogExtraReferencesAction-WTOHQDIV.js} +13 -13
  109. package/{setPrimaryDialogAgentAction-WCVLPYCF.js → setPrimaryDialogAgentAction-LDJOYC4F.js} +16 -17
  110. package/{settingSlice-IDUM4LWU.js → settingSlice-4M37TN7V.js} +14 -15
  111. package/{skillDiscovery-ITA7BI7A.js → skillDiscovery-I3QRA7NE.js} +2 -2
  112. package/{spaceCommands-XSSDB3YK.js → spaceCommands-VTDNKTSF.js} +240 -41
  113. package/{spaceSlice-BXDCO6PT.js → spaceSlice-LGUZMB7Y.js} +29 -35
  114. package/{streamAgentChatTurn-HRFMVSVC.js → streamAgentChatTurn-TIGCZUNZ.js} +133 -1301
  115. package/{switchDialogAgentAction-YBFFCBOD.js → switchDialogAgentAction-XVWGKR2Z.js} +12 -12
  116. package/{tableCommands-QSZILI7I.js → tableCommands-RJZ3V4TF.js} +7 -7
  117. package/{toolApiClient-WVTUYOFM.js → toolApiClient-ARGFDJAG.js} +2 -2
  118. package/{tools-5V6FHWQU.js → tools-BQAOPYMR.js} +51 -56
  119. package/{tuiSummaryLlmCaller-GCUPULOV.js → tuiSummaryLlmCaller-YQBN5IMG.js} +12 -12
  120. package/{updateDialogTitleAction-W62C4W4K.js → updateDialogTitleAction-E6HMEDPH.js} +39 -45
  121. package/chunk-5CS33IBL.js +0 -301
  122. package/chunk-5MMAK75Q.js +0 -15
  123. package/chunk-HYSJHRWD.js +0 -669
  124. package/chunk-MRC4Q34M.js +0 -188
  125. package/chunk-SIZQB7BD.js +0 -91
  126. package/chunk-UEOPA6MV.js +0 -641
  127. package/chunk-UFL6WHHJ.js +0 -15419
  128. package/chunk-VIDPVFP3.js +0 -20
  129. package/chunk-W2LZV5GE.js +0 -231
  130. package/chunk-Y5GCAMGP.js +0 -9
  131. package/chunk-YYLHWIW6.js +0 -48
  132. package/chunk-Z54ZAZZC.js +0 -1791
  133. package/chunk-ZZ2MH7LE.js +0 -84
  134. package/{chunk-OMP5L5NF.js → chunk-44HACRCK.js} +3 -3
  135. package/{chunk-ZVZMT3EA.js → chunk-KWCLUYGQ.js} +3 -3
  136. package/{chunk-NRY4GCKJ.js → chunk-WHLVPK32.js} +3 -3
  137. package/{chunk-RQSOAMPJ.js → chunk-Z5MXSEOJ.js} +2 -2
  138. package/{runtimeDoctorCommands-HSU632DY.js → runtimeDoctorCommands-E2OUORHK.js} +3 -3
@@ -0,0 +1,171 @@
1
+ import {
2
+ createKey
3
+ } from "./chunk-WHLVPK32.js";
4
+ import {
5
+ TOOL_PACKS
6
+ } from "./chunk-CF7S2RYZ.js";
7
+ import {
8
+ buildSkillDocMarkdown
9
+ } from "./chunk-ZWJOGMKH.js";
10
+
11
+ // packages/ai/skills/builtinObjectSkills.ts
12
+ var BUILTIN_OBJECT_SKILL_IDS = {
13
+ table: "builtin-table-skill-v1",
14
+ doc: "builtin-doc-skill-v1",
15
+ // key 改名为 code-style(它本来就叫「编码风格技能」,"code" 这个名字是它抢的,
16
+ // 与「代码执行」能力包撞车)。**id 值保持不变**——skillId 与页面 key 都从它派生,
17
+ // 改了会让存量 agent.references 失配。
18
+ "code-style": "builtin-code-skill-v1",
19
+ image: "builtin-image-skill-v1",
20
+ file: "builtin-file-skill-v1",
21
+ pagebuilder: "builtin-pagebuilder-skill-v1"
22
+ };
23
+ var SKILL_DEFS = {
24
+ doc: {
25
+ id: BUILTIN_OBJECT_SKILL_IDS.doc,
26
+ name: "\u6587\u6863\u7F16\u8F91\u6280\u80FD",
27
+ 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",
28
+ toolNames: ["readDoc", "updateDoc"],
29
+ promptPatch: [
30
+ "\u6587\u6863\u7F16\u8F91\u6307\u5357\uFF1A",
31
+ "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",
32
+ "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"
33
+ ].join("\n")
34
+ },
35
+ table: {
36
+ id: BUILTIN_OBJECT_SKILL_IDS.table,
37
+ name: "\u8868\u683C\u7F16\u8F91\u6280\u80FD",
38
+ 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",
39
+ // 与 app-builder 能力包共用同一份清单(TOOL_PACKS.TABLE)。
40
+ // 以前两边各抄一份,改一个忘另一个就会静默不同步。
41
+ toolNames: [...TOOL_PACKS.TABLE],
42
+ promptPatch: [
43
+ "\u8868\u683C\u64CD\u4F5C\u6307\u5357\uFF1A",
44
+ "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",
45
+ "2. \u65B0\u589E\u8BB0\u5F55\u5FC5\u987B\u8C03\u7528 addTableRow / addTableRows\uFF0C\u4E0D\u8981\u53EA\u5728\u56DE\u7B54\u91CC\u53E3\u5934\u63CF\u8FF0\u3002",
46
+ "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",
47
+ "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"
48
+ ].join("\n")
49
+ },
50
+ "code-style": {
51
+ id: BUILTIN_OBJECT_SKILL_IDS["code-style"],
52
+ name: "\u7F16\u7801\u98CE\u683C\u6280\u80FD",
53
+ 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",
54
+ toolNames: [],
55
+ promptPatch: [
56
+ "\u7F16\u7801\u98CE\u683C\u4E0E\u89C4\u8303\u6307\u5357\uFF1A",
57
+ "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",
58
+ "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",
59
+ "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",
60
+ "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",
61
+ "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"
62
+ ].join("\n")
63
+ },
64
+ image: {
65
+ id: BUILTIN_OBJECT_SKILL_IDS.image,
66
+ name: "\u56FE\u7247\u5206\u6790\u6280\u80FD",
67
+ 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",
68
+ toolNames: [],
69
+ promptPatch: [
70
+ "\u56FE\u7247\u5206\u6790\u6307\u5357\uFF1A",
71
+ "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",
72
+ "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"
73
+ ].join("\n")
74
+ },
75
+ file: {
76
+ id: BUILTIN_OBJECT_SKILL_IDS.file,
77
+ name: "\u6587\u4EF6\u5904\u7406\u6280\u80FD",
78
+ 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",
79
+ toolNames: [],
80
+ promptPatch: [
81
+ "\u6587\u4EF6\u5904\u7406\u6307\u5357\uFF1A",
82
+ "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",
83
+ "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"
84
+ ].join("\n")
85
+ },
86
+ pagebuilder: {
87
+ id: BUILTIN_OBJECT_SKILL_IDS.pagebuilder,
88
+ name: "\u52A8\u6001\u4EA4\u4E92\u7EC4\u4EF6\u751F\u6210\u6280\u80FD",
89
+ 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",
90
+ toolNames: [],
91
+ promptPatch: [
92
+ "\u52A8\u6001\u4EA4\u4E92\u7EC4\u4EF6\u751F\u6210\u89C4\u5219\uFF1A",
93
+ "\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",
94
+ "",
95
+ "\u7EDD\u5BF9\u89C4\u5219\uFF1A",
96
+ "1. \u53EA\u8F93\u51FA\u4E00\u4E2A Markdown \u4EE3\u7801\u5757\uFF0C\u4EE3\u7801\u5757\u8BED\u8A00\u5FC5\u987B\u662F tsx preview\u3002",
97
+ "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",
98
+ "3. \u4EE3\u7801\u5FC5\u987B\u5B9A\u4E49\u9876\u5C42 function Example()\uFF0C\u4E0D\u8981\u8C03\u7528 render()\uFF0C\u4E0D\u8981 export default\u3002",
99
+ "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",
100
+ "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",
101
+ "6. \u4E3A\u4E3B\u8981\u533A\u5757\u52A0 data-artifact-section \u5C5E\u6027\u3002",
102
+ "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",
103
+ "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",
104
+ "",
105
+ "\u5404\u7C7B\u9875\u9762\u9ED8\u8BA4\u7ED3\u6784\uFF1A",
106
+ "- \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",
107
+ "- \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",
108
+ "- \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",
109
+ "- \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",
110
+ "- \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",
111
+ "- \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",
112
+ "- \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",
113
+ "",
114
+ "\u4EE3\u7801\u98CE\u683C\uFF1A",
115
+ "1. \u4F7F\u7528\u5185\u8054 style \u6216\u7EC4\u4EF6\u5185 <style>\uFF0C\u4E0D\u8981\u4F9D\u8D56 Tailwind \u6216\u5916\u90E8 CSS\u3002",
116
+ "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",
117
+ "3. \u989C\u8272\u8981\u514B\u5236\uFF0C\u6709\u5C42\u6B21\uFF1B\u907F\u514D\u6574\u9875\u5355\u4E00\u84DD\u7D2B\u6E10\u53D8\u3002",
118
+ "4. \u8868\u683C\u3001\u56FE\u8868\u3001\u5361\u7247\u3001\u6309\u94AE\u90FD\u8981\u6709 hover/active/focus \u7684\u7EC6\u8282\u3002",
119
+ "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",
120
+ "6. \u4EE3\u7801\u5C3D\u91CF\u77ED\u800C\u5B8C\u6574\uFF0C\u9ED8\u8BA4 150-260 \u884C\u4EE5\u5185\u3002",
121
+ "",
122
+ "\u8F93\u51FA\u683C\u5F0F\u793A\u4F8B\uFF1A",
123
+ "```tsx preview",
124
+ "function Example() {",
125
+ " const [tab, setTab] = useState('overview');",
126
+ " return <main><section data-artifact-section>...</section></main>;",
127
+ "}",
128
+ "```"
129
+ ].join("\n")
130
+ }
131
+ };
132
+ function buildBuiltinObjectSkillConfig(kind) {
133
+ const def = SKILL_DEFS[kind];
134
+ return {
135
+ version: "0.1",
136
+ kind: "skill",
137
+ id: def.id,
138
+ name: def.name,
139
+ description: def.description,
140
+ triggerMode: "explicit",
141
+ toolNames: def.toolNames,
142
+ promptPatch: def.promptPatch
143
+ };
144
+ }
145
+ function buildBuiltinObjectSkillDbKey(kind, userId) {
146
+ return createKey("page" /* DOC */, userId, BUILTIN_OBJECT_SKILL_IDS[kind]);
147
+ }
148
+ function buildBuiltinObjectSkillReference(kind, userId) {
149
+ return {
150
+ dbKey: buildBuiltinObjectSkillDbKey(kind, userId),
151
+ title: SKILL_DEFS[kind].name,
152
+ type: "instruction"
153
+ };
154
+ }
155
+ function buildBuiltinObjectSkillPageContent(kind) {
156
+ const def = SKILL_DEFS[kind];
157
+ return buildSkillDocMarkdown({
158
+ body: `# ${def.name}
159
+
160
+ ${def.description}`,
161
+ skillConfig: buildBuiltinObjectSkillConfig(kind)
162
+ });
163
+ }
164
+
165
+ export {
166
+ BUILTIN_OBJECT_SKILL_IDS,
167
+ buildBuiltinObjectSkillConfig,
168
+ buildBuiltinObjectSkillDbKey,
169
+ buildBuiltinObjectSkillReference,
170
+ buildBuiltinObjectSkillPageContent
171
+ };
@@ -11,7 +11,7 @@ import {
11
11
  getAntigravityUserAgent,
12
12
  normalizeAntigravityTokenPayload,
13
13
  refreshAntigravityToken
14
- } from "./chunk-2FX23RGA.js";
14
+ } from "./chunk-J3LHGBNO.js";
15
15
  import {
16
16
  writeOAuthCredential
17
17
  } from "./chunk-JZPBVBIY.js";
@@ -142,27 +142,6 @@ async function startCallbackServer(options) {
142
142
  }
143
143
  }
144
144
 
145
- // packages/cli/oauth/pkce.ts
146
- import { createHash, randomBytes } from "node:crypto";
147
- var PKCE_VERIFIER_LENGTH = 64;
148
- function generatePkceVerifier(length = PKCE_VERIFIER_LENGTH) {
149
- if (length < 43 || length > 128) {
150
- throw new Error("PKCE verifier length must be between 43 and 128 characters.");
151
- }
152
- return randomBytes(length).toString("base64url").slice(0, length);
153
- }
154
- function computePkceChallenge(verifier) {
155
- return createHash("sha256").update(verifier).digest("base64url");
156
- }
157
- function generatePkcePair(length = PKCE_VERIFIER_LENGTH) {
158
- const verifier = generatePkceVerifier(length);
159
- return {
160
- verifier,
161
- challenge: computePkceChallenge(verifier),
162
- method: "S256"
163
- };
164
- }
165
-
166
145
  // packages/cli/oauth/flows/antigravity.ts
167
146
  var TIER_LEGACY = "legacy-tier";
168
147
  var PROJECT_ONBOARD_MAX_ATTEMPTS = 5;
@@ -312,7 +291,6 @@ async function runAntigravityOAuthLogin(deps = {}) {
312
291
  }
313
292
  try {
314
293
  const state = generateState();
315
- const pkce = await generatePkcePair();
316
294
  const authParams = new URLSearchParams({
317
295
  client_id: ANTIGRAVITY_CLIENT_ID,
318
296
  response_type: "code",
@@ -345,8 +323,7 @@ async function runAntigravityOAuthLogin(deps = {}) {
345
323
  client_secret: ANTIGRAVITY_CLIENT_SECRET,
346
324
  code: callback.code,
347
325
  grant_type: "authorization_code",
348
- redirect_uri: redirectUri,
349
- code_verifier: pkce.verifier
326
+ redirect_uri: redirectUri
350
327
  })
351
328
  });
352
329
  if (!tokenResponse.ok) {
@@ -506,6 +483,27 @@ async function refreshOpenAiCodexToken(credential, deps = {}) {
506
483
  });
507
484
  }
508
485
 
486
+ // packages/cli/oauth/pkce.ts
487
+ import { createHash, randomBytes } from "node:crypto";
488
+ var PKCE_VERIFIER_LENGTH = 64;
489
+ function generatePkceVerifier(length = PKCE_VERIFIER_LENGTH) {
490
+ if (length < 43 || length > 128) {
491
+ throw new Error("PKCE verifier length must be between 43 and 128 characters.");
492
+ }
493
+ return randomBytes(length).toString("base64url").slice(0, length);
494
+ }
495
+ function computePkceChallenge(verifier) {
496
+ return createHash("sha256").update(verifier).digest("base64url");
497
+ }
498
+ function generatePkcePair(length = PKCE_VERIFIER_LENGTH) {
499
+ const verifier = generatePkceVerifier(length);
500
+ return {
501
+ verifier,
502
+ challenge: computePkceChallenge(verifier),
503
+ method: "S256"
504
+ };
505
+ }
506
+
509
507
  // packages/cli/oauth/flows/openai-codex.ts
510
508
  var AUTHORIZATION_CODE_GRANT_TYPE = "authorization_code";
511
509
  var DEVICE_CODE_DEFAULT_INTERVAL_MS = 5e3;
@@ -1116,9 +1114,9 @@ var cursorRefresh = refreshCursorToken;
1116
1114
 
1117
1115
  export {
1118
1116
  startCallbackServer,
1119
- generatePkcePair,
1120
1117
  runAntigravityOAuthLogin,
1121
1118
  refreshAntigravityOAuthToken,
1119
+ generatePkcePair,
1122
1120
  runOpenAiCodexDeviceCode,
1123
1121
  runOpenAiCodexBrowserPkce,
1124
1122
  refreshOpenAiCodexToken2 as refreshOpenAiCodexToken,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generatePkcePair,
3
3
  startCallbackServer
4
- } from "./chunk-WX3ZOSTL.js";
4
+ } from "./chunk-EBNSAABL.js";
5
5
  import {
6
6
  toErrorMessage
7
7
  } from "./chunk-HNMXYYJR.js";
@@ -14,7 +14,7 @@ import {
14
14
  platformHostedModels,
15
15
  xaiModels,
16
16
  zaiModels
17
- } from "./chunk-YTA2QOEE.js";
17
+ } from "./chunk-CAENRKNJ.js";
18
18
  import {
19
19
  __export
20
20
  } from "./chunk-4VNS5WPM.js";
@@ -505,6 +505,150 @@ var kimiCodeModels = [
505
505
  }
506
506
  ];
507
507
 
508
+ // packages/integrations/opencode/models.ts
509
+ var opencodeGoModels = [
510
+ // ── OpenAI ──
511
+ {
512
+ name: "gpt-5.6-luna",
513
+ displayName: "GPT-5.6 Luna (Fast)",
514
+ hasVision: true,
515
+ contextWindow: 272e3,
516
+ maxOutputTokens: 128e3,
517
+ jsonOutput: true,
518
+ fnCall: true,
519
+ supportsTool: true,
520
+ price: { input: 0, output: 0 },
521
+ provider: "opencode-go",
522
+ description: "OpenAI GPT-5.6 Luna \u5FEB\u901F\u6A21\u578B\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
523
+ },
524
+ // gpt-5.6-sol 不在 Go 订阅内:GET /models 不返回它,直接调用返回
525
+ // 401 "Model gpt-5.6-sol is not supported"(实测 2026-08-03)。
526
+ // ── Grok ──
527
+ {
528
+ name: "grok-4.5",
529
+ displayName: "Grok 4.5",
530
+ hasVision: true,
531
+ contextWindow: 5e5,
532
+ maxOutputTokens: 262144,
533
+ jsonOutput: true,
534
+ fnCall: true,
535
+ supportsTool: true,
536
+ price: { input: 0, output: 0 },
537
+ provider: "opencode-go",
538
+ description: "xAI Grok 4.5\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
539
+ },
540
+ // ── Kimi ──
541
+ {
542
+ name: "kimi-k3",
543
+ displayName: "Kimi K3",
544
+ hasVision: true,
545
+ contextWindow: 1e6,
546
+ maxOutputTokens: 262144,
547
+ jsonOutput: true,
548
+ fnCall: true,
549
+ supportsTool: true,
550
+ price: { input: 0, output: 0 },
551
+ provider: "opencode-go",
552
+ description: "Kimi K3 \u65D7\u8230\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
553
+ },
554
+ // ── Qwen ──
555
+ {
556
+ name: "qwen3.8-max",
557
+ displayName: "Qwen3.8 Max",
558
+ hasVision: true,
559
+ contextWindow: 262144,
560
+ maxOutputTokens: 32768,
561
+ jsonOutput: true,
562
+ fnCall: true,
563
+ supportsTool: true,
564
+ price: { input: 0, output: 0 },
565
+ provider: "opencode-go",
566
+ description: "\u5343\u95EE 3.8 Max \u65D7\u8230\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
567
+ },
568
+ {
569
+ name: "qwen3.7-max",
570
+ displayName: "Qwen3.7 Max",
571
+ hasVision: false,
572
+ contextWindow: 262144,
573
+ maxOutputTokens: 32768,
574
+ jsonOutput: true,
575
+ fnCall: true,
576
+ supportsTool: true,
577
+ price: { input: 0, output: 0 },
578
+ provider: "opencode-go",
579
+ description: "\u5343\u95EE 3.7 Max\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
580
+ },
581
+ // ── GLM ──
582
+ {
583
+ name: "glm-5.2",
584
+ displayName: "GLM 5.2",
585
+ hasVision: false,
586
+ contextWindow: 1e6,
587
+ maxOutputTokens: 16384,
588
+ jsonOutput: true,
589
+ fnCall: true,
590
+ supportsTool: true,
591
+ price: { input: 0, output: 0 },
592
+ provider: "opencode-go",
593
+ description: "\u667A\u8C31 GLM 5.2\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
594
+ },
595
+ // ── MiMo ──
596
+ {
597
+ name: "mimo-v2.5-pro",
598
+ displayName: "MiMo V2.5 Pro",
599
+ hasVision: false,
600
+ contextWindow: 131072,
601
+ maxOutputTokens: 16384,
602
+ jsonOutput: true,
603
+ fnCall: true,
604
+ supportsTool: true,
605
+ price: { input: 0, output: 0 },
606
+ provider: "opencode-go",
607
+ description: "\u5C0F\u7C73 MiMo V2.5 Pro\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
608
+ },
609
+ // ── MiniMax ──
610
+ {
611
+ name: "minimax-m3",
612
+ displayName: "MiniMax M3",
613
+ hasVision: true,
614
+ contextWindow: 1e6,
615
+ maxOutputTokens: 262144,
616
+ jsonOutput: true,
617
+ fnCall: true,
618
+ supportsTool: true,
619
+ price: { input: 0, output: 0 },
620
+ provider: "opencode-go",
621
+ description: "MiniMax M3\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
622
+ },
623
+ // ── DeepSeek ──
624
+ {
625
+ name: "deepseek-v4-pro",
626
+ displayName: "DeepSeek V4 Pro",
627
+ hasVision: false,
628
+ contextWindow: 1e6,
629
+ maxOutputTokens: 384e3,
630
+ jsonOutput: true,
631
+ fnCall: true,
632
+ supportsTool: true,
633
+ price: { input: 0, output: 0 },
634
+ provider: "opencode-go",
635
+ description: "DeepSeek V4 Pro\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
636
+ },
637
+ {
638
+ name: "deepseek-v4-flash",
639
+ displayName: "DeepSeek V4 Flash",
640
+ hasVision: false,
641
+ contextWindow: 1e6,
642
+ maxOutputTokens: 384e3,
643
+ jsonOutput: true,
644
+ fnCall: true,
645
+ supportsTool: true,
646
+ price: { input: 0, output: 0 },
647
+ provider: "opencode-go",
648
+ description: "DeepSeek V4 Flash\uFF0COpenCode Go \u8BA2\u9605\u542B\u3002"
649
+ }
650
+ ];
651
+
508
652
  // node_modules/zod/dist/esm/v3/external.js
509
653
  var external_exports = {};
510
654
  __export(external_exports, {
@@ -4723,6 +4867,8 @@ var MODEL_MAP = {
4723
4867
  var MODEL_LOOKUP_MAP = {
4724
4868
  anthropic: [...anthropicModels, ...anthropicOAuthModels],
4725
4869
  xai: xaiModels,
4870
+ "opencode-go": opencodeGoModels,
4871
+ opencode: opencodeGoModels,
4726
4872
  ...MODEL_MAP
4727
4873
  };
4728
4874
  var ANTHROPIC_MODEL_ALIASES = {
@@ -4856,7 +5002,7 @@ function getModelConfig(provider, name) {
4856
5002
  return model;
4857
5003
  }
4858
5004
  function getProviderByModelName(modelName) {
4859
- for (const [provider, models] of Object.entries(MODEL_MAP)) {
5005
+ for (const [provider, models] of Object.entries(MODEL_LOOKUP_MAP)) {
4860
5006
  if (models.some((m) => m.name === modelName)) {
4861
5007
  return provider;
4862
5008
  }
@@ -0,0 +1,73 @@
1
+ import {
2
+ slateToSimplifiedMarkdown
3
+ } from "./chunk-SWYMCHM7.js";
4
+ import {
5
+ toErrorMessage
6
+ } from "./chunk-HNMXYYJR.js";
7
+
8
+ // packages/ai/tools/readDocTool.ts
9
+ var readDocFunctionSchema = {
10
+ name: "readDoc",
11
+ description: [
12
+ "\u8BFB\u53D6\u6307\u5B9A\u9875\u9762\u7684\u5185\u5BB9\uFF0C\u5E76\u5C06\u7ED3\u6784\u5316\u7684\u6570\u636E\u8F6C\u6362\u4E3A Markdown \u683C\u5F0F\u8FD4\u56DE\u3002",
13
+ "\u5982\u679C\u4F60\u62FF\u5230\u4E86\u9875\u9762\u7684 dbKey\uFF08\u5982 page-xxx\uFF09\uFF0C\u8BF7\u4F7F\u7528\u6B64\u5DE5\u5177\u67E5\u770B\u9875\u9762\u5185\u5BB9\u3002"
14
+ ].join("\n"),
15
+ parameters: {
16
+ type: "object",
17
+ properties: {
18
+ id: {
19
+ type: "string",
20
+ description: "\u9875\u9762/\u6587\u6863\u7684\u6570\u636E\u5E93\u952E\uFF08dbKey\uFF09\uFF0C\u4F8B\u5982 page-xxx\u3002"
21
+ }
22
+ },
23
+ required: ["id"]
24
+ }
25
+ };
26
+ var readPageFunctionSchema = {
27
+ ...readDocFunctionSchema,
28
+ name: "readPage"
29
+ };
30
+ var buildReadDocResult = (pageData) => {
31
+ const markdownContent = slateToSimplifiedMarkdown(pageData.slateData || []);
32
+ const rawData = {
33
+ success: true,
34
+ id: pageData.dbKey,
35
+ title: pageData.title,
36
+ content: markdownContent,
37
+ metadata: {
38
+ spaceId: pageData.spaceId,
39
+ created: pageData.created
40
+ }
41
+ };
42
+ const displayData = `\u5DF2\u6210\u529F\u8BFB\u53D6\u9875\u9762\u300A${pageData.title}\u300B\u3002
43
+
44
+ \u5185\u5BB9\u5982\u4E0B\uFF1A
45
+
46
+ ${markdownContent}`;
47
+ return { rawData, displayData };
48
+ };
49
+ async function readDocFunc(args, thunkApi) {
50
+ const id = args.id ?? args.doc ?? args.docKey ?? args.pageKey ?? args.key;
51
+ if (!id || !id.toLowerCase().startsWith("page-")) {
52
+ throw new Error(`\u65E0\u6548\u7684\u9875\u9762 ID: ${id}\u3002\u9875\u9762 ID \u901A\u5E38\u4EE5 "page-" \u5F00\u5934\u3002`);
53
+ }
54
+ try {
55
+ const { readAction } = await import("./read-64OQDO3I.js");
56
+ const pageData = await readAction({ dbKey: id }, thunkApi);
57
+ if (!pageData) {
58
+ throw new Error(`\u672A\u627E\u5230 ID \u4E3A ${id} \u7684\u9875\u9762\u3002`);
59
+ }
60
+ return buildReadDocResult(pageData);
61
+ } catch (error) {
62
+ throw new Error(`\u8BFB\u53D6\u9875\u9762\u65F6\u51FA\u9519: ${toErrorMessage(error)}`);
63
+ }
64
+ }
65
+ var readPageFunc = readDocFunc;
66
+
67
+ export {
68
+ readDocFunctionSchema,
69
+ readPageFunctionSchema,
70
+ buildReadDocResult,
71
+ readDocFunc,
72
+ readPageFunc
73
+ };
@@ -1,9 +1,3 @@
1
- import {
2
- parsePositiveFiniteNumberOrFallback
3
- } from "./chunk-Y5GCAMGP.js";
4
- import {
5
- DEFAULT_SYSTEM_AGENT_CAPABILITIES
6
- } from "./chunk-UZ6XXCVR.js";
7
1
  import {
8
2
  asRecordOrEmpty
9
3
  } from "./chunk-KX6YBIHG.js";
@@ -13,18 +7,13 @@ import {
13
7
  toTimestampMs,
14
8
  upsert,
15
9
  write
16
- } from "./chunk-G2BZ43DV.js";
17
- import {
18
- createUserKey,
19
- createUserPreferenceKey,
20
- ulid
21
- } from "./chunk-NRY4GCKJ.js";
10
+ } from "./chunk-LAXMH7JY.js";
22
11
  import {
23
12
  asTrimmedLowercaseString
24
13
  } from "./chunk-QSJ3HFEF.js";
25
14
  import {
26
15
  BUILTIN_NOLO_AGENT_KEY
27
- } from "./chunk-L6RBX4L4.js";
16
+ } from "./chunk-ZJH3LKEW.js";
28
17
  import {
29
18
  asyncThunkCreator,
30
19
  buildCreateSlice,
@@ -32,12 +21,12 @@ import {
32
21
  createAsyncThunk,
33
22
  createSelector,
34
23
  selectIdentityUserId
35
- } from "./chunk-XMLRJUU5.js";
24
+ } from "./chunk-2IJAKBK2.js";
36
25
  import {
37
26
  getAllServers,
38
27
  getIsDesktopApp,
39
28
  isProduction
40
- } from "./chunk-R5V5G73M.js";
29
+ } from "./chunk-5RDLGLAP.js";
41
30
  import {
42
31
  SERVERS
43
32
  } from "./chunk-LCBAMY2M.js";
@@ -47,6 +36,14 @@ import {
47
36
  import {
48
37
  normalizeServerOrigin
49
38
  } from "./chunk-CF7PE763.js";
39
+ import {
40
+ createUserKey,
41
+ createUserPreferenceKey,
42
+ ulid
43
+ } from "./chunk-WHLVPK32.js";
44
+ import {
45
+ DEFAULT_SYSTEM_AGENT_CAPABILITIES
46
+ } from "./chunk-UZ6XXCVR.js";
50
47
 
51
48
  // packages/ai/policy/types.ts
52
49
  var DEFAULT_AGENT_BASE_POLICY = {
@@ -1316,6 +1313,12 @@ var selectRemoteServers = createSelector(
1316
1313
  (currentServer, syncServers) => getAllServers(currentServer, syncServers)
1317
1314
  );
1318
1315
 
1316
+ // packages/core/positiveFiniteNumberOrFallback.ts
1317
+ function parsePositiveFiniteNumberOrFallback(value, fallback) {
1318
+ const parsed = Number(value);
1319
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
1320
+ }
1321
+
1319
1322
  // packages/app/settings/fieldSelectors.ts
1320
1323
  var selectPreferredAnimationSet = (state) => state.settings.preferredAnimationSet ?? 0;
1321
1324
  var selectShowThinking = (state) => state.settings.showThinking;
@@ -2010,6 +2013,7 @@ export {
2010
2013
  selectRemoteServer,
2011
2014
  selectRemoteSyncServers,
2012
2015
  selectRemoteServers,
2016
+ parsePositiveFiniteNumberOrFallback,
2013
2017
  selectPreferredAnimationSet,
2014
2018
  selectShowThinking,
2015
2019
  selectMaxCost,