nolo-cli 0.153.0-alpha.1 → 0.153.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.
- package/{_executeModel-4KHFMQT4.js → _executeModel-YAHIA3TR.js} +44 -45
- package/{accountResolver-7RYB4D2P.js → accountResolver-55EDKEIK.js} +1 -1
- package/{action-SXJD5N5R.js → action-GPPJC5TI.js} +4 -4
- package/{addContentAction-ZV774PHH.js → addContentAction-BI6RDRTQ.js} +8 -8
- package/{addDialogAgentAction-A6SMKAGH.js → addDialogAgentAction-4RJYUSIK.js} +7 -7
- package/{agentDeleteCommand-EKFV5FC7.js → agentDeleteCommand-6W2VQADC.js} +57 -57
- package/{agentEmailCommands-MNV3MUH5.js → agentEmailCommands-ZTS5JSP5.js} +59 -59
- package/{agentListCommands-E6FYKXC3.js → agentListCommands-MM5OLPBY.js} +23 -23
- package/{agentMachineCommands-2GFUU7GF.js → agentMachineCommands-WPFV4TSD.js} +22 -21
- package/{agentProviderCommands-HL6MBLCL.js → agentProviderCommands-MKG2OOEY.js} +2 -2
- package/{agentRecordCommands-LPHHTEPM.js → agentRecordCommands-YW7XO5CX.js} +57 -57
- package/{agentRunCommand-JSPW7W32.js → agentRunCommand-R2JTIRPZ.js} +59 -58
- package/{agentRunControl-IFM7IGMG.js → agentRunControl-2C5GM3BW.js} +5 -5
- package/{agentRuntimeLocal-ARS4TV77.js → agentRuntimeLocal-RJKTDWNN.js} +16 -16
- package/{agentSlice-IP4DZNNV.js → agentSlice-7FNTOPHE.js} +8 -8
- package/{appDeleteCommands-JHTLKQSX.js → appDeleteCommands-7EOM274T.js} +21 -21
- package/{appDeployCommands-5V26M2KA.js → appDeployCommands-2I3QYJ5G.js} +21 -21
- package/{appDeployStatusCommands-SBSPS627.js → appDeployStatusCommands-LEML7FPR.js} +21 -21
- package/{appGetCommands-NKPD2L45.js → appGetCommands-ZQSVHGQM.js} +21 -21
- package/{appListCommands-ZOGRZFYY.js → appListCommands-BVA7XKQO.js} +21 -21
- package/{authCommand-QYN47CQD.js → authCommand-NIV3DKPF.js} +13 -293
- package/{authCommands-77CHYBGF.js → authCommands-AMNIAKEG.js} +2 -2
- package/{builtinSkillRegistry-TDQ6JB2E.js → builtinSkillRegistry-H3AY27TR.js} +3 -3
- package/{chromeCommands-OBBNJCLS.js → chromeCommands-IY4NVSXZ.js} +17 -10
- package/{chunk-SW4S4XYB.js → chunk-2AB2HA4M.js} +84 -34
- package/{chunk-VNP54NZL.js → chunk-2EROINJB.js} +14 -14
- package/{chunk-4PXHOOFA.js → chunk-2MTE2PEH.js} +3 -3
- package/{chunk-4YRTZIVN.js → chunk-2SGAI64X.js} +2 -2
- package/{chunk-QFEW2ULV.js → chunk-32ZKZET7.js} +1 -1
- package/{chunk-GQV5KHJU.js → chunk-3C2QLERX.js} +1 -1
- package/{chunk-XPWGOTBQ.js → chunk-3L2WKC3W.js} +1 -8
- package/{chunk-WD4XYDYC.js → chunk-3WIXU4XO.js} +224 -1
- package/{chunk-MZHOLWW5.js → chunk-4J4RVSHE.js} +3 -3
- package/{chunk-YBNHPX4S.js → chunk-4RJJDA57.js} +1 -1
- package/{chunk-OFVFQYIE.js → chunk-6COBMDV4.js} +19 -13
- package/{chunk-HL3O3PCQ.js → chunk-6TF64IF2.js} +2 -2
- package/{chunk-BNDETALN.js → chunk-7NSQJKGA.js} +45 -13
- package/{chunk-UUPR3TD7.js → chunk-7RF4O6AT.js} +1 -3
- package/{chunk-LC23WBCU.js → chunk-ACTR4SH2.js} +6 -6
- package/{chunk-HSJPKBLC.js → chunk-ANJTRG52.js} +2 -2
- package/{chunk-2GGXHQIW.js → chunk-BLVSFYQ3.js} +4 -2
- package/{chunk-ISQL4V7C.js → chunk-C3OK72G3.js} +1 -1
- package/{chunk-CHCS6XPJ.js → chunk-CGFNDIKK.js} +65 -0
- package/{chunk-F32Z66T4.js → chunk-CON6SI7N.js} +1 -1
- package/{chunk-HIQ4GF53.js → chunk-DC3SZCRR.js} +7 -3
- package/{chunk-RQ6E3G5L.js → chunk-DRPDGHQB.js} +18 -2
- package/{chunk-RVWMAFIT.js → chunk-FYYSDHVQ.js} +1 -1
- package/{chunk-XTWDF6RU.js → chunk-GLUL4C5S.js} +21 -17
- package/{chunk-TYYRSFBG.js → chunk-HB4XPBC7.js} +3 -35
- package/{chunk-6MJNEXUU.js → chunk-HGDKT2D6.js} +4 -0
- package/{chunk-UBUH2TCC.js → chunk-I2RMFLLH.js} +2 -2
- package/{chunk-VJXHL6MH.js → chunk-ICRRXBRN.js} +3 -3
- package/{chunk-XS47QOFV.js → chunk-IE5PXKVU.js} +2 -264
- package/{chunk-KMM2X7LP.js → chunk-ILVOUUMR.js} +3 -3
- package/{chunk-KFHQQ3NO.js → chunk-INFHX73M.js} +1 -1
- package/{chunk-XRUSXPCQ.js → chunk-IPAW7XLD.js} +57 -4
- package/{chunk-PLSVXHSA.js → chunk-IRTOYSA2.js} +3 -3
- package/{chunk-GCKHQECX.js → chunk-IYBIRCQV.js} +1 -1
- package/{chunk-ILU2NPWY.js → chunk-J2ATF74A.js} +2 -2
- package/{chunk-XZNCX52W.js → chunk-JGRPBIZZ.js} +1 -1
- package/{chunk-E2AKSW7L.js → chunk-JPJGMOIM.js} +2 -2
- package/{chunk-6LIKQYG4.js → chunk-JZYIISJB.js} +21 -23
- package/{chunk-44WXLHFI.js → chunk-K43ZF2C3.js} +1 -1
- package/{chunk-I2ZMGXXF.js → chunk-KFHREHUQ.js} +1 -1
- package/{chunk-JKMLSTZK.js → chunk-KLA62VVE.js} +3 -3
- package/{chunk-AHYBQP3M.js → chunk-L57R6PFF.js} +3 -3
- package/{chunk-DYYMIUN4.js → chunk-L6EQV5OC.js} +4 -4
- package/{chunk-EZVK3N5L.js → chunk-LOEO7LRC.js} +56 -0
- package/{chunk-EDX5XSJM.js → chunk-M2P3OGXZ.js} +3 -3
- package/{chunk-YVLQXTUB.js → chunk-MM3662RS.js} +1 -1
- package/{chunk-CBHGZRCE.js → chunk-MYOH447Z.js} +1 -1
- package/{chunk-A4MW3YZL.js → chunk-NDZOXXIM.js} +18 -4
- package/{chunk-EHFS4XZO.js → chunk-NKBMD4TC.js} +12 -8
- package/{chunk-64PFYIAY.js → chunk-OJ2PQXBV.js} +674 -637
- package/{chunk-36OMEXXR.js → chunk-OON4OBWI.js} +1 -1
- package/{chunk-SEJ5OS6F.js → chunk-PXYBUFDB.js} +4 -0
- package/{chunk-XCA6HQGS.js → chunk-QEONMOV7.js} +5 -5
- package/{chunk-USHQX6VT.js → chunk-QPY264HO.js} +1 -1
- package/{chunk-PFBIXTFB.js → chunk-QSKN3E7Q.js} +52 -26
- package/{chunk-TNIX77YM.js → chunk-R5GO3YZP.js} +34 -1
- package/{chunk-I5V3V2H4.js → chunk-RL2OOQUM.js} +37 -25
- package/{chunk-AIZE5TDM.js → chunk-SPKLALBU.js} +2 -2
- package/{chunk-K2AER7RX.js → chunk-SUKSWFLP.js} +2 -2
- package/{chunk-I4SN4NUQ.js → chunk-TRW43TSC.js} +1 -1
- package/{chunk-D2QN6CTI.js → chunk-UCLSOLX4.js} +8 -6
- package/{chunk-TYJ5XFEA.js → chunk-UFYBYB26.js} +1 -1
- package/{chunk-SCMHQUMK.js → chunk-US6MKPE7.js} +1 -1
- package/{chunk-ZIWPQEFU.js → chunk-VYNMQ6HW.js} +1 -28
- package/{chunk-PPU323UE.js → chunk-W2NNEHHW.js} +183 -66
- package/{chunk-IJERIUXS.js → chunk-WRCZXJ4N.js} +6 -3
- package/chunk-Y5GCAMGP.js +9 -0
- package/{chunk-GKXCHNTE.js → chunk-Y6ORVLSS.js} +1 -1
- package/{chunk-RSHPU4PD.js → chunk-YANF2RR4.js} +2 -2
- package/{chunk-EYWJT7A2.js → chunk-YPG7TUQD.js} +3 -3
- package/{chunk-PMYAE4OZ.js → chunk-YPY2S3DV.js} +3 -3
- package/{chunk-ZF6526IQ.js → chunk-ZEY4NJRE.js} +2 -2
- package/{chunk-JWTSWUPS.js → chunk-ZGG7BBVE.js} +7 -6
- package/{chunk-T5BHHWA5.js → chunk-ZGSW3HWM.js} +7 -7
- package/{chunk-74RAWNQN.js → chunk-ZVQHBIWV.js} +6 -6
- package/{chunk-DTODXBHK.js → chunk-ZWG3C7VI.js} +2 -2
- package/{commandRegistry-VBALU4Q4.js → commandRegistry-ZPK4AUWM.js} +79 -87
- package/{contentThunks-HPY2QNWZ.js → contentThunks-SXEQLAFP.js} +20 -20
- package/{createAgentAutomationAction-6ADGPGY6.js → createAgentAutomationAction-INVACTI3.js} +20 -20
- package/{createDialogAction-6ABMSEW2.js → createDialogAction-FDO3DYW4.js} +21 -21
- package/{createPageAction-OC4NNRPC.js → createPageAction-Q5CQPEQH.js} +20 -20
- package/{dbSlice-J37OGIXH.js → dbSlice-DC2J53RC.js} +7 -7
- package/{deleteFile-6JWDDRVP.js → deleteFile-KYWEMNFX.js} +4 -4
- package/{dialogCommands-EIGBRSQP.js → dialogCommands-MUFYPVMP.js} +24 -23
- package/{dialogSlice-SI45KJOH.js → dialogSlice-DS22VO6X.js} +19 -19
- package/{docCreateCommands-3JDBBMU5.js → docCreateCommands-OPWOKG62.js} +19 -19
- package/{docDeleteCommands-5M6C7UUB.js → docDeleteCommands-IBV3WMKI.js} +20 -20
- package/{docReadCommands-DUB57F6V.js → docReadCommands-LVALHMLZ.js} +19 -19
- package/{docStore-L43MDEK4.js → docStore-UFEWRQ5W.js} +8 -8
- package/{docUpdateCommands-WF7MAMPK.js → docUpdateCommands-Z5OUEAK7.js} +19 -19
- package/{getPricing-FKK3F5EJ.js → getPricing-TX35D7PI.js} +3 -3
- package/{handleSendMessageAction-BSMU7SVS.js → handleSendMessageAction-AOPC2RYQ.js} +33 -33
- package/index.js +7 -7
- package/{localRuntimeAdapter-N5PDR26F.js → localRuntimeAdapter-OK722XHN.js} +57 -55
- package/{machineCommands-TMXJKZCE.js → machineCommands-NW3KT5RE.js} +61 -59
- package/{machineWsRunDispatch-25H63KEH.js → machineWsRunDispatch-EWQDI6TL.js} +56 -56
- package/{memberThunks-66DH6ABQ.js → memberThunks-2DWKLE6W.js} +8 -8
- package/{models-LAS4B2B5.js → models-PZQC7VV4.js} +2 -2
- package/package.json +1 -1
- package/{profileConfig-ZGOFORWV.js → profileConfig-KN3N2BLF.js} +7 -1
- package/{providerPresetApply-MY66I6NT.js → providerPresetApply-GSJI4JBJ.js} +6 -6
- package/{providerRegistry-QOE2FT57.js → providerRegistry-TSSTPGWF.js} +6 -6
- package/{read-DC4NUGN6.js → read-L7QEJETH.js} +5 -5
- package/{readDocTool-NCJ5NT25.js → readDocTool-QELXV2GW.js} +1 -1
- package/{readlineWorkspace-BS7WVCL2.js → readlineWorkspace-ZTNEFMTX.js} +330 -118
- package/{removeDialogAgentAction-E2H3OZU6.js → removeDialogAgentAction-376XSUP2.js} +9 -9
- package/{runAgentClientLoop-BVKRI4SY.js → runAgentClientLoop-PQTFXXFA.js} +48 -44
- package/{runtimeDoctorCommands-GIOGC5SC.js → runtimeDoctorCommands-56NWKNON.js} +5 -5
- package/{secretCommands-ZXZRLR3R.js → secretCommands-DNY56NSU.js} +11 -1
- package/{setDialogExtraReferencesAction-SITRPMYU.js → setDialogExtraReferencesAction-QBDSH63D.js} +8 -8
- package/{setPrimaryDialogAgentAction-U7N45TGC.js → setPrimaryDialogAgentAction-537QFGW3.js} +9 -9
- package/settingThunks-4Z43ZSAT.js +923 -0
- package/{spaceCommands-5EWREUWS.js → spaceCommands-AWIIP7J5.js} +19 -19
- package/{streamAgentChatTurn-B4VFUV52.js → streamAgentChatTurn-I4M3CUBF.js} +53 -103
- package/{switchDialogAgentAction-OMGBD3N2.js → switchDialogAgentAction-CSO6AKRL.js} +7 -7
- package/{tableCommands-U3QDY4L6.js → tableCommands-LBH3QPPO.js} +1 -1
- package/{toolApiClient-7WSJJJBV.js → toolApiClient-HGNO53TC.js} +2 -2
- package/{tools-5WYAUKMK.js → tools-TOSN72UD.js} +37 -37
- package/{tuiSummaryLlmCaller-PPU7YDBG.js → tuiSummaryLlmCaller-KLK6K3Q3.js} +8 -8
- package/{updateCommands-NQXAGFM7.js → updateCommands-LXZLG44Y.js} +2 -2
- package/{updateDialogTitleAction-YJHDKHFX.js → updateDialogTitleAction-TJWFUJX4.js} +20 -20
- package/{workloadLifecycle-36DXRZKU.js → workloadLifecycle-6O6PMISX.js} +2 -2
- package/chunk-W4S6OTSC.js +0 -35
- package/settingThunks-Y7SVJOMZ.js +0 -1371
|
@@ -4,12 +4,78 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
canonicalizeToolNames
|
|
6
6
|
} from "./chunk-5EBLANFT.js";
|
|
7
|
+
import {
|
|
8
|
+
BUILTIN_AGENT_CATALOG
|
|
9
|
+
} from "./chunk-LOEO7LRC.js";
|
|
10
|
+
import {
|
|
11
|
+
publicAgentKey
|
|
12
|
+
} from "./chunk-M2EJHDJP.js";
|
|
7
13
|
import {
|
|
8
14
|
estimateTokenCount
|
|
9
15
|
} from "./chunk-PSCNXBYA.js";
|
|
16
|
+
import {
|
|
17
|
+
getModelConfig
|
|
18
|
+
} from "./chunk-TRW43TSC.js";
|
|
10
19
|
import {
|
|
11
20
|
asTrimmedString
|
|
12
21
|
} from "./chunk-3EUW3WEO.js";
|
|
22
|
+
import {
|
|
23
|
+
asTrimmedLowercaseString
|
|
24
|
+
} from "./chunk-QSJ3HFEF.js";
|
|
25
|
+
|
|
26
|
+
// packages/core/gptProTier.ts
|
|
27
|
+
var GPT_PRO_REQUIRED_RECHARGE_AMOUNT = 199;
|
|
28
|
+
var SUPPORTED_TIER_PROVIDERS = /* @__PURE__ */ new Set([
|
|
29
|
+
"nolo",
|
|
30
|
+
"openai",
|
|
31
|
+
"deepinfra"
|
|
32
|
+
]);
|
|
33
|
+
var CLAUDE_PREMIUM_RE = /^(?:anthropic\/)?claude-(opus|fable)(?:-\d+(?:[.-]\d+)*(?:-[a-z0-9]+)*)?$/i;
|
|
34
|
+
var GPT_PRO_RE = /^(?:openai\/)?gpt-[a-z0-9.-]+-pro(?:-[a-z0-9]+(?:[.-][a-z0-9]+)*)?$/i;
|
|
35
|
+
var GPT_SOL_RE = /^(?:openai\/)?gpt-\d+(?:\.\d+)*-sol(?:-[a-z0-9]+(?:[.-][a-z0-9]+)*)?$/i;
|
|
36
|
+
var GPT_ASTRA_RE = /^(?:openai\/)?gpt-\d+(?:\.\d+)*-astra(?:-[a-z0-9]+(?:[.-][a-z0-9]+)*)?$/i;
|
|
37
|
+
var KIMI_K3_MODELS = /* @__PURE__ */ new Set([
|
|
38
|
+
"kimi-k3",
|
|
39
|
+
"moonshotai/kimi-k3"
|
|
40
|
+
]);
|
|
41
|
+
function classifyPremiumModel(model) {
|
|
42
|
+
const normalizedModel = asTrimmedLowercaseString(model);
|
|
43
|
+
if (!normalizedModel) return void 0;
|
|
44
|
+
const claudeMatch = CLAUDE_PREMIUM_RE.exec(normalizedModel);
|
|
45
|
+
if (claudeMatch) {
|
|
46
|
+
return claudeMatch[1].toLowerCase() === "opus" ? "claude-opus" : "claude-fable";
|
|
47
|
+
}
|
|
48
|
+
if (GPT_PRO_RE.test(normalizedModel)) {
|
|
49
|
+
return "gpt-pro";
|
|
50
|
+
}
|
|
51
|
+
if (GPT_SOL_RE.test(normalizedModel)) {
|
|
52
|
+
return "gpt-sol";
|
|
53
|
+
}
|
|
54
|
+
if (GPT_ASTRA_RE.test(normalizedModel)) {
|
|
55
|
+
return "gpt-astra";
|
|
56
|
+
}
|
|
57
|
+
if (KIMI_K3_MODELS.has(normalizedModel)) {
|
|
58
|
+
return "kimi-k3";
|
|
59
|
+
}
|
|
60
|
+
return void 0;
|
|
61
|
+
}
|
|
62
|
+
function isGptProModel(provider, model) {
|
|
63
|
+
const normalizedProvider = asTrimmedLowercaseString(provider);
|
|
64
|
+
if (!SUPPORTED_TIER_PROVIDERS.has(normalizedProvider)) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
return classifyPremiumModel(model) !== void 0;
|
|
68
|
+
}
|
|
69
|
+
var GPT_PRO_BLOCKED_MESSAGE = `GPT Pro / Kimi K3 \u7B49\u9AD8\u7EA7\u6A21\u578B\u9700\u8981\u5148\u5F00\u901A ${GPT_PRO_REQUIRED_RECHARGE_AMOUNT} \u79EF\u5206\u6863\u4F4D\u3002`;
|
|
70
|
+
function shouldBlockForGptPro(input) {
|
|
71
|
+
if (input?.premium !== true || input?.platformPaid !== true) {
|
|
72
|
+
return { blocked: false };
|
|
73
|
+
}
|
|
74
|
+
if (asTrimmedLowercaseString(input.gptProStatus) === "active") {
|
|
75
|
+
return { blocked: false };
|
|
76
|
+
}
|
|
77
|
+
return { blocked: true, message: GPT_PRO_BLOCKED_MESSAGE };
|
|
78
|
+
}
|
|
13
79
|
|
|
14
80
|
// packages/agent-runtime/identityBlock.ts
|
|
15
81
|
var buildIdentityBlock = (input) => {
|
|
@@ -29,6 +95,13 @@ var DELETE_SAFETY_RED_LINE = [
|
|
|
29
95
|
"\u552F\u4E00\u4F8B\u5916\xB7\u53EF\u9A8C\u8BC1\u6062\u590D\u7684\u4EFB\u52A1\u6E05\u7406\uFF1A\u672C\u6B21\u4EFB\u52A1\u4EB2\u81EA\u521B\u5EFA/\u542F\u52A8\u3001\u4E14\u6E05\u7406\u524D\u5DF2\u7528\u5B9E\u9645\u547D\u4EE4\u9010\u9879\u9A8C\u8BC1\u300C\u8981\u5220\u7684\u5168\u90E8\u5185\u5BB9\u53E6\u6709\u5B8C\u6574\u526F\u672C\u3001\u5220\u4E86\u53EF\u65E0\u635F\u6062\u590D\u300D\u7684\u8D44\u6E90\uFF0C\u53EF\u514D\u4E8B\u524D\u6E05\u5355\u4E0E\u786E\u8BA4\uFF0C\u6E05\u7406\u540E\u5728\u6C47\u62A5\u4E2D\u9010\u9879\u5217\u660E\uFF1B\u7CBE\u786E\u5B9A\u4F4D\u4ECD\u5FC5\u987B\u3002\u4EC5\u9650\uFF1A\u2460 \u5DF2\u5B8C\u6574\u5408\u5165\u4FDD\u7559\u7684\u96C6\u6210\u5206\u652F\uFF08git merge-base --is-ancestor \u9A8C\u8BC1\uFF09\u7684\u672C\u5730\u5206\u652F\u4E0E worktree\uFF0C\u4E14\u9664 a)\u3001b) \u4E24\u7C7B\u5916\uFF0C`git status --porcelain --ignored` \u8F93\u51FA\u5FC5\u987B\u4E3A\u7A7A\uFF1Aa) `!! node_modules/`\u2014\u2014\u987B\u5148\u7528 find \u6838\u5B9E\u5176\u4E2D\u53EA\u6709\u6307\u5411\u672C worktree \u5185\u7684\u5DE5\u4F5C\u533A\u5305\u7B26\u53F7\u94FE\u63A5\u3001\u4EE5\u53CA\u53EA\u88C5\u8FD9\u7C7B\u94FE\u63A5\u7684 scope \u5BB9\u5668\u76EE\u5F55\uFF0C\u65E0\u4EFB\u4F55\u666E\u901A\u6587\u4EF6\u6216\u5176\u4ED6\u7C7B\u578B\u6761\u76EE\uFF0C\u94FE\u63A5\u65E0\u6CD5\u89E3\u6790\u5373\u4E0D\u901A\u8FC7\uFF1Bb) \u88AB\u5FFD\u7565\u7684**\u53EF\u518D\u751F\u6784\u5EFA\u4EA7\u7269**\uFF08\u5982 `*.tsbuildinfo`\u3001\u6784\u5EFA/\u7F16\u8BD1\u7F13\u5B58\uFF09\u2014\u2014\u987B\u9010\u9879\u5217\u51FA\u8DEF\u5F84\uFF0C\u5E76\u7ED9\u51FA\u80FD\u91CD\u65B0\u751F\u6210\u5B83\u7684**\u4ED3\u5E93\u5185\u65E2\u6709\u547D\u4EE4**\uFF08\u5F53\u6B21\u5B9E\u9645\u6267\u884C\u901A\u8FC7\uFF1B\u6307\u4E0D\u51FA\u547D\u4EE4\u6216\u8DD1\u4E0D\u901A\u7684\u4E00\u5F8B\u4E0D\u653E\u884C\uFF09\uFF0C\u786E\u8BA4\u53EF\u7531\u8BE5\u547D\u4EE4\u65E0\u635F\u518D\u751F\u3001\u4E0D\u542B\u552F\u4E00\u7ED3\u679C\u6216\u7528\u6237\u6570\u636E\u3001\u4E14\u4E0D\u662F\u624B\u5DE5\u6539\u52A8\u8FC7\u7684\u4EA7\u7269\uFF1B\u4E0B\u5217\u4E00\u5F8B\u4E0D\u5C5E\u6B64\u7C7B\uFF1A`.env*` \u7B49\u51ED\u8BC1\u3001`data/`\u3001`nolo/`\u3001`.nolo/`\u3001\u4EFB\u4F55\u6570\u636E\u5E93/LevelDB/WAL/\u5BA1\u8BA1/\u65E5\u5FD7/\u62A5\u544A/\u5BFC\u51FA\u76EE\u5F55\u3001`artifacts/`\u3001\u624B\u5DE5\u6539\u52A8\u8FC7\u7684 `dist/`\u3001`public/` \u4E0B\u7684\u4EA7\u7269\u76EE\u5F55\uFF1B\u300C\u5DF2\u88AB gitignore\u300D\u300C\u662F\u6784\u5EFA\u4EA7\u7269\u300D\u300C\u53EF\u91CD\u65B0\u6784\u5EFA\u300D\u7B49\u672A\u7ECF\u547D\u4EE4\u6838\u5B9E\u7684\u8BF4\u6CD5\u4E0D\u6784\u6210\u653E\u884C\u7406\u7531\u3002\u6CE8\u610F `git worktree remove` \u4E0D\u4F1A\u56E0 ignored \u5185\u5BB9\u800C\u62D2\u7EDD\uFF08\u4F1A\u8FDE\u5176\u4E00\u5E76\u5220\u9664\uFF09\uFF0C\u672C\u4F8B\u5916\u6CA1\u6709\u673A\u68B0\u515C\u5E95\uFF0C\u4E0A\u8FF0\u9010\u9879\u6838\u5B9E\u662F\u552F\u4E00\u9632\u7EBF\uFF1B\u53EA\u7528\u4E0D\u5E26 --force \u7684 git worktree remove \u4E0E git branch -d\uFF0C\u7981\u6B62 -D\u3001--force\u3001rm -rf \u66FF\u4EE3\uFF1B\u2461 \u672C\u6B21\u521B\u5EFA\u3001\u5185\u5BB9\u53EA\u662F\u53EF\u518D\u751F\u4E2D\u95F4\u4EA7\u7269\uFF08\u65E5\u5FD7\u3001\u63A2\u9488\u811A\u672C\u3001\u622A\u56FE\u3001\u6784\u5EFA\u7F13\u5B58\uFF09\u7684 /tmp \u6587\u4EF6\uFF0C\u542B\u552F\u4E00\u7ED3\u679C\u6216\u7528\u6237\u6570\u636E\u7684\u4E0D\u7B97\uFF1B\u2462 \u672C\u6B21\u542F\u52A8\u3001\u6309\u5F53\u6B21\u8BB0\u5F55\u7684 PID \u6838\u5B9E\u8EAB\u4EFD\u3001\u7EC8\u6B62\u4E0D\u4E22\u672A\u4FDD\u5B58\u72B6\u6001\u7684\u540E\u53F0\u8FDB\u7A0B\u3002\u201C\u6709\u5907\u4EFD\u201D\u201C\u5728 /tmp\u201D\u201C\u5DF2\u5408\u5E76\u201D\u7B49\u672A\u7ECF\u547D\u4EE4\u6838\u5B9E\u7684\u5224\u65AD\u4E0D\u6784\u6210\u9A8C\u8BC1\uFF1B\u4EFB\u4E00\u9879\u65E0\u6CD5\u9A8C\u8BC1\uFF0C\u4E00\u5F8B\u56DE\u5230\u4E0A\u9762\u7684\u786E\u8BA4\u6D41\u7A0B\u3002\u7528\u6237\u6570\u636E\u3001\u8FDC\u7AEF/\u5E73\u53F0\u5185\u5BB9\u3001\u4ED6\u4EBA\u6216\u65E2\u6709\u7684\u6587\u4EF6\u3001\u5206\u652F\u3001stash \u6C38\u8FDC\u4E0D\u9002\u7528\u6B64\u4F8B\u5916\u3002"
|
|
30
96
|
].join("\n");
|
|
31
97
|
|
|
98
|
+
// packages/agent-runtime/credentialHygiene.ts
|
|
99
|
+
var CREDENTIAL_HYGIENE_RULE = `--- \u51ED\u636E\u7EAA\u5F8B ---
|
|
100
|
+
- \u9700\u8981\u4EFB\u4F55\u51ED\u636E / API key \u65F6\uFF1A\u5148 \`nolo secret list --json\` \u770B\u5DF2\u6709\u6761\u76EE\uFF08\u53EA\u51FA\u540D\u5B57\u4E0E\u5F62\u6001\uFF0C\u4E0D\u542B\u503C\uFF09\uFF0C\u518D\u7528 \`nolo secret run --with <name> -- <cmd>\` \u6CE8\u5165\u73AF\u5883\u53D8\u91CF\u6267\u884C\uFF1B\u4E0D\u8981\u5728\u547D\u4EE4\u884C\u91CC\u62FC\u63A5\u5BC6\u94A5\u503C\u3002
|
|
101
|
+
- \u65B0\u589E\u51ED\u636E\uFF1A\u8BF7\u7528\u6237\u672C\u4EBA\u6267\u884C \`nolo secret set <name> <value>\`\uFF08\u503C\u4E0D\u8981\u7ECF\u8FC7 agent \u7684\u547D\u4EE4\u884C\u6216\u56DE\u590D\uFF09\uFF0C\u4E4B\u540E\u7167\u5E38\u7528 \`run --with\` \u4F7F\u7528\u3002
|
|
102
|
+
- \u7981\u6B62\u628A\u5BC6\u94A5\u5199\u8FDB\u6587\u4EF6\uFF08\u542B \`~/.config/*.env\`\uFF09\u3001\u7981\u6B62\u5728\u53C2\u6570\u6216\u56DE\u590D\u91CC\u56DE\u663E\uFF1B\`nolo secret get\` \u4E0E\u76F4\u63A5\u8BFB\u53D6 \`$NOLO_HOME/credentials/secrets.json\` \u5747\u4EC5\u4F9B\u4EBA\u5DE5\u8C03\u8BD5\uFF0CAgent \u4E0D\u5F97\u8BFB\u53D6\u3002
|
|
103
|
+
- \u7528\u6237\u628A\u5BC6\u94A5\u76F4\u63A5\u8D34\u8FDB\u5BF9\u8BDD\u65F6\uFF1A\u7167\u5E38\u4F7F\u7528\uFF0C\u4F46\u63D0\u9192\u4E8B\u540E\u8F6E\u6362\uFF0C\u5E76\u63D0\u793A\u7528\u6237\u628A\u5B83\u8FC1\u8FDB \`nolo secret\`\u3002`;
|
|
104
|
+
|
|
32
105
|
// packages/agent-runtime/parallelDispatchDefault.ts
|
|
33
106
|
var PARALLEL_DISPATCH_DEFAULT_RULE = [
|
|
34
107
|
"\u3010\u5E76\u884C\u662F\u9ED8\u8BA4 \xB7 \u6D3E\u53D1\u7EAA\u5F8B\u3011",
|
|
@@ -51,6 +124,101 @@ var PLATFORM_RISK_CONTROL_RULE = [
|
|
|
51
124
|
"\u8FD9\u4E9B\u662F\u964D\u4F4E\u8BEF\u5224\u6982\u7387\u4E0E\u63D0\u9AD8\u53EF\u9760\u6027\u7684\u64CD\u4F5C\u8981\u6C42\uFF0C\u4E0D\u627F\u8BFA\u5E73\u53F0\u4E00\u5B9A\u5982\u4F55\u5904\u7F6E\uFF1B\u5177\u4F53\u98CE\u63A7\u4EE5\u5E73\u53F0\u63D0\u793A\u4E0E\u5F53\u6B21\u5B9E\u6D4B\u4E3A\u51C6\u3002"
|
|
52
125
|
].join("\n");
|
|
53
126
|
|
|
127
|
+
// packages/core/consultantTier.ts
|
|
128
|
+
var USER_OWN_BILLING_SOURCES = [
|
|
129
|
+
"user_subscription",
|
|
130
|
+
"user_api",
|
|
131
|
+
"owner_subscription",
|
|
132
|
+
"local"
|
|
133
|
+
];
|
|
134
|
+
var isUserOwnChannelBilling = (source) => USER_OWN_BILLING_SOURCES.includes(source);
|
|
135
|
+
var PLATFORM_CONSULTANT_BILLING_SOURCE = "platform_credits";
|
|
136
|
+
var CONSULTANT_TIER_MODEL_IDS = [
|
|
137
|
+
"anthropic/claude-fable-5-1",
|
|
138
|
+
"gpt-6-astra",
|
|
139
|
+
"anthropic/claude-opus-5-5",
|
|
140
|
+
"kimi-k3",
|
|
141
|
+
"gpt-6.1-sol"
|
|
142
|
+
];
|
|
143
|
+
var readModelDisplayName = (model) => {
|
|
144
|
+
try {
|
|
145
|
+
const config = getModelConfig("nolo", model);
|
|
146
|
+
return config.displayName?.trim() || model;
|
|
147
|
+
} catch {
|
|
148
|
+
return model;
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
var readModelPrice = (model) => {
|
|
152
|
+
try {
|
|
153
|
+
const config = getModelConfig("nolo", model);
|
|
154
|
+
const price = config?.price;
|
|
155
|
+
return {
|
|
156
|
+
input: typeof price?.input === "number" ? price.input : null,
|
|
157
|
+
output: typeof price?.output === "number" ? price.output : null
|
|
158
|
+
};
|
|
159
|
+
} catch {
|
|
160
|
+
return { input: null, output: null };
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
var readModelSupportsTool = (model) => {
|
|
164
|
+
try {
|
|
165
|
+
const config = getModelConfig("nolo", model);
|
|
166
|
+
return typeof config.supportsTool === "boolean" ? config.supportsTool : null;
|
|
167
|
+
} catch {
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
var lookupConsultantAgentKey = (model) => {
|
|
172
|
+
const entry = BUILTIN_AGENT_CATALOG.find((item) => item.model === model);
|
|
173
|
+
if (!entry) return null;
|
|
174
|
+
return publicAgentKey(entry.id);
|
|
175
|
+
};
|
|
176
|
+
var resolveConsultantTier = () => CONSULTANT_TIER_MODEL_IDS.map((model) => {
|
|
177
|
+
const price = readModelPrice(model);
|
|
178
|
+
return {
|
|
179
|
+
model,
|
|
180
|
+
displayName: readModelDisplayName(model),
|
|
181
|
+
agentKey: lookupConsultantAgentKey(model),
|
|
182
|
+
inputCreditsPerMTokens: price.input,
|
|
183
|
+
outputCreditsPerMTokens: price.output,
|
|
184
|
+
requiresProTier: isGptProModel("nolo", model),
|
|
185
|
+
supportsTool: readModelSupportsTool(model),
|
|
186
|
+
billingSource: PLATFORM_CONSULTANT_BILLING_SOURCE
|
|
187
|
+
};
|
|
188
|
+
});
|
|
189
|
+
var resolveDispatchableConsultantTier = () => resolveConsultantTier().filter(
|
|
190
|
+
(entry) => typeof entry.agentKey === "string" && entry.agentKey.length > 0
|
|
191
|
+
);
|
|
192
|
+
|
|
193
|
+
// packages/agent-runtime/consultationMode.ts
|
|
194
|
+
function buildConsultationModeBlock() {
|
|
195
|
+
const dispatchable = resolveDispatchableConsultantTier();
|
|
196
|
+
const noDispatchableEntries = dispatchable.length === 0;
|
|
197
|
+
const targets = noDispatchableEntries ? resolveConsultantTier() : dispatchable;
|
|
198
|
+
const targetLines = targets.map((entry) => {
|
|
199
|
+
const pricing = entry.inputCreditsPerMTokens === null || entry.outputCreditsPerMTokens === null ? "\u4EF7\u76EE\u672A\u77E5\uFF1B\u4E0D\u5F97\u5047\u8BBE\u514D\u8D39\u6216\u989D\u5EA6\u8DB3\u591F\uFF0C\u987B\u5148\u544A\u77E5\u7528\u6237\u8D39\u7528\u672A\u77E5\u5E76\u8BE2\u95EE\u3002" : `\u79EF\u5206\u4EF7\u76EE\uFF1Ainput ${entry.inputCreditsPerMTokens} / output ${entry.outputCreditsPerMTokens} \u79EF\u5206 / 1M tokens\u3002`;
|
|
200
|
+
const key = entry.agentKey ? `\uFF0CagentKey: ${entry.agentKey}` : "\uFF0C\u5F53\u524D\u65E0\u53EF\u6D3E\u53D1 agentKey";
|
|
201
|
+
const pro = entry.requiresProTier ? "\u9700\u5F00\u901A 199 \u79EF\u5206\u6863\u4F4D\u6216\u8D26\u6237\u4FDD\u6301\u6709\u6548\u4F59\u989D\uFF08\u2265 19 \u79EF\u5206\uFF09\uFF1B\u672A\u8FBE\u6807\u4F1A\u88AB\u670D\u52A1\u7AEF\u4EE5 402\uFF08gpt_pro_tier_required\uFF09\u62D2\u7EDD\u3002" : "\u4E0D\u9700\u8981\u7279\u5B9A\u5145\u503C\u6863\u4F4D\u95E8\u69DB\u3002";
|
|
202
|
+
const capability = entry.supportsTool === true ? "\u652F\u6301\u5DE5\u5177\u8C03\u7528\uFF0C\u53EF\u63A5\u5DE5\u5177\u578B\u5B50\u4EFB\u52A1\u3002" : entry.supportsTool === false ? "\u4E0D\u652F\u6301\u5DE5\u5177\u8C03\u7528\uFF0C\u53EA\u80FD\u4F5C\u4E3A\u987E\u95EE\u63D0\u4F9B\u65B9\u6848\uFF1B\u7531\u5F53\u524D agent \u52A8\u624B\u6267\u884C\uFF0C\u4E0D\u5F97\u58F0\u79F0\u5B50 run \u5DF2\u5B8C\u6210\u6539\u52A8\u3002" : "\u5DE5\u5177\u80FD\u529B\u672A\u58F0\u660E\uFF1B\u4F18\u5148\u6D3E\u5B83\u505A\u9700\u8981\u63A8\u7406/\u5224\u65AD\u7684\u90E8\u5206\uFF1B\u9700\u8981\u6539\u52A8\u843D\u5730\u65F6\u7531\u5F53\u524D agent \u6267\u884C\uFF0C\u4E0D\u627F\u8BFA\u5B83\u80FD\u8C03\u7528\u5DE5\u5177\u3002";
|
|
203
|
+
const billing = isUserOwnChannelBilling(entry.billingSource) ? "\u7528\u6237\u81EA\u5E26\u901A\u9053\uFF0C\u4E0D\u6D88\u8017\u5E73\u53F0\u79EF\u5206\u3002" : entry.billingSource === PLATFORM_CONSULTANT_BILLING_SOURCE ? "\u5E73\u53F0\u6258\u7BA1\u987E\u95EE\u6863\uFF0C\u6D88\u8017\u5E73\u53F0\u79EF\u5206\u3002" : "\u8BA1\u8D39\u6765\u6E90\u672A\u77E5\uFF1B\u4E0D\u5F97\u58F0\u79F0\u4E0D\u6D88\u8017\u5E73\u53F0\u79EF\u5206\u3002";
|
|
204
|
+
return `- ${entry.displayName}\uFF08model: ${entry.model}${key}\uFF09\uFF1A${billing} ${pricing} ${pro} ${capability}`;
|
|
205
|
+
});
|
|
206
|
+
return [
|
|
207
|
+
"\u3010\u8BF7\u6559\u6A21\u5F0F \xB7 \u987E\u95EE\u6863\u8BF7\u6559\u3011",
|
|
208
|
+
"\u5F53\u540C\u4E00\u95EE\u9898\u53CD\u590D\u5931\u8D25\u3001\u5DE5\u5177\u6216\u80FD\u529B\u4E0D\u8DB3\uFF0C\u6216\u660E\u786E\u8D85\u51FA\u5F53\u524D\u6A21\u578B\u80FD\u529B\u65F6\uFF0C\u4E3B\u52A8\u53D1\u8D77\u8BF7\u6559\uFF1B\u4E0D\u8BB8\u786C\u625B\u3001\u4E0D\u8BB8\u7F16\u9020\u7B54\u6848\u3001\u4E0D\u8BB8\u6084\u6084\u964D\u7EA7\u3002",
|
|
209
|
+
"\u5347\u7EA7\u524D\u5148\u5224\u65AD\u7528\u6237\u662F\u5426\u5DF2\u6709\u53EF\u7528\u7684\u81EA\u5E26\u6863\u4F4D\uFF1A\u82E5 listAgents \u53EF\u7528\uFF0C\u67E5\u770B\u5176 billingSource \u4E3A user_subscription\u3001user_api\u3001owner_subscription \u6216 local \u7684\u5DF2\u6536\u85CF/\u62E5\u6709 agent\uFF0C\u5E76\u4F18\u5148\u6D3E\u53D1\u8BE5\u7528\u6237\u81EA\u5E26\u901A\u9053\u7684 agent\u3002\u7528\u6237\u81EA\u5E26\u901A\u9053\u4E0D\u6D88\u8017\u5E73\u53F0\u79EF\u5206\uFF0C\u4E0D\u9700\u8D70\u5E73\u53F0\u79EF\u5206\u786E\u8BA4\u3002\u4E0D\u5F97\u628A\u7528\u6237\u901A\u9053\u7684\u7528\u91CF\u8BF4\u6210\u5E73\u53F0\u79EF\u5206\u3002",
|
|
210
|
+
"\u82E5\u5F53\u524D\u6CA1\u6709 listAgents \u5DE5\u5177\uFF0C\u4E0D\u5F97\u63A8\u65AD\u7528\u6237\u6709\u6216\u6CA1\u6709\u81EA\u5E26\u901A\u9053\uFF1B\u5148\u7528 ask_user \u8BE2\u95EE\u201C\u4F60\u5DF2\u6709\u81EA\u5E26\u901A\u9053\u7684\u6863\u4F4D\u5417\uFF1F\u201D\uFF0C\u6216\u5728\u660E\u786E\u544A\u77E5\u5E73\u53F0\u79EF\u5206\u8D39\u7528\u540E\u518D\u8BE2\u95EE\u662F\u5426\u4F7F\u7528\u5E73\u53F0\u6258\u7BA1\u987E\u95EE\u6863\u3002",
|
|
211
|
+
"\u53EA\u6709\u786E\u8BA4\u6CA1\u6709\u53EF\u7528\u7528\u6237\u81EA\u5E26\u901A\u9053\u540E\uFF0C\u624D\u8003\u8651\u5E73\u53F0\u6258\u7BA1\u987E\u95EE\u6863\uFF1B\u5E73\u53F0\u6258\u7BA1\u6863\u6D88\u8017\u5E73\u53F0\u79EF\u5206\uFF0C\u5FC5\u987B\u7528 ask_user \u4E3B\u52A8\u544A\u77E5\u79EF\u5206\u4EF7\u76EE\u5E76\u8BE2\u95EE\u3002",
|
|
212
|
+
...noDispatchableEntries ? ["\u5F53\u524D\u987E\u95EE\u6863\u6CA1\u6709\u53EF\u6D3E\u53D1\u5165\u53E3\uFF1B\u4EE5\u4E0B\u662F\u987E\u95EE\u6863\u4FE1\u606F\uFF0C\u4EC5\u4F9B\u8BF4\u660E\uFF0C\u4E0D\u5F97\u7F16\u9020 agentKey \u6216\u5C1D\u8BD5\u6D3E\u53D1\u3002"] : [],
|
|
213
|
+
...targetLines.length ? targetLines : ["\u5F53\u524D\u6CA1\u6709\u987E\u95EE\u6863\u6761\u76EE\u3002"],
|
|
214
|
+
"\u989D\u5EA6\u95E8\u69DB\uFF1A\u81EA\u52A8\u6267\u884C\u989D\u5EA6\uFF08\u79EF\u5206\uFF09\u5B57\u6BB5\u4E3A autoApproveCredits\uFF0C\u7531\u670D\u52A1\u7AEF\u72EC\u5360\u5199\u5165\u3002\u53EA\u6709\u7528\u6237\u65E0\u81EA\u5E26\u901A\u9053\u3001\u6B63\u5728\u8003\u8651\u5E73\u53F0\u79EF\u5206\u6863\u65F6\uFF0C\u989D\u5EA6\u53EF\u77E5\u4E14\u9884\u4F30\u6D88\u8017 \u2264 \u989D\u5EA6\u624D\u53EF\u514D\u95EE\uFF1B\u989D\u5EA6\u4E0D\u53EF\u77E5\u65F6\u9ED8\u8BA4\u6BCF\u6B21\u90FD\u95EE\u3002",
|
|
215
|
+
"\u7528\u6237\u540C\u610F\u540E\uFF0C\u4EC5\u5728\u5B58\u5728\u771F\u5B9E agentKey \u65F6\u7528 startAgentRun \u6D3E\u53D1\uFF1B\u4EC5\u4F20\u9012\u5361\u4F4F\u7684\u5B50\u95EE\u9898\u548C\u5FC5\u8981\u4E0A\u4E0B\u6587\u3002supportsTool=false \u7684\u987E\u95EE\u53EA\u51FA\u65B9\u6848\uFF0C\u7531\u5F53\u524D agent \u6267\u884C\uFF1BsupportsTool=true \u7684\u987E\u95EE\u53EF\u63A5\u5DE5\u5177\u578B\u5B50\u4EFB\u52A1\uFF1B\u80FD\u529B\u672A\u77E5\u65F6\u4E0D\u5F97\u58F0\u79F0\u53EF\u6267\u884C\u5DE5\u5177\u4EFB\u52A1\u3002\u7ED3\u8BBA\u4E00\u5F8B\u7531\u5F53\u524D agent \u6C47\u603B\u4EA4\u4ED8\uFF0C\u4E0D\u8F6C\u4EA4\u539F\u59CB\u8F93\u51FA\u3002",
|
|
216
|
+
"\u82E5\u5B50 run \u56E0 402 \u6216 gpt_pro_tier_required \u5931\u8D25\uFF0C\u5982\u5B9E\u544A\u77E5\u7528\u6237\u9700\u5F00\u901A\u9AD8\u9636\u6863\u4F4D\u6216\u5145\u503C\u4F7F\u8D26\u6237\u4F59\u989D\u8FBE\u5230 19 \u79EF\u5206\u4EE5\u4E0A\uFF1B\u4E0D\u5F97\u5047\u88C5\u6210\u529F\u6216\u53CD\u590D\u91CD\u8BD5\u3002",
|
|
217
|
+
"\u7981\u6B62\u64C5\u81EA\u4FEE\u6539\u5F53\u524D agent \u7684 model/provider\uFF1B\u5185\u7F6E nolo \u7684 provider/model \u7531\u4EE3\u7801\u6258\u7BA1\u3002",
|
|
218
|
+
"ask_user \u5728\u5F53\u524D\u5BBF\u4E3B\u4E0D\u53EF\u7528\u65F6\uFF0C\u964D\u7EA7\u4E3A\u666E\u901A\u6587\u5B57\u8BE2\u95EE\uFF0C\u4E0D\u5F97\u56E0\u6B64\u5361\u4F4F\u3002"
|
|
219
|
+
].join("\n");
|
|
220
|
+
}
|
|
221
|
+
|
|
54
222
|
// packages/agent-runtime/contextLayerContract.ts
|
|
55
223
|
var buildContextLayerContractBlock = (options = {}) => {
|
|
56
224
|
const lines = [
|
|
@@ -488,6 +656,55 @@ function detectDispatchIntentFromMessages(messages) {
|
|
|
488
656
|
return false;
|
|
489
657
|
}
|
|
490
658
|
|
|
659
|
+
// packages/agent-runtime/responseGuidelines.ts
|
|
660
|
+
var RESPONSE_BEHAVIOR_GUIDELINES = `--- \u56DE\u590D\u884C\u4E3A\u51C6\u5219\uFF08\u8DE8\u7AEF\u901A\u7528\uFF09 ---
|
|
661
|
+
\u4EE5\u4E0B\u662F\u6240\u6709\u56DE\u590D\u5171\u4EAB\u7684\u884C\u4E3A\u57FA\u7EBF\uFF0C\u4E0E\u5F53\u524D\u89C6\u53E3\u3001\u6392\u7248\u65E0\u5173\uFF1A
|
|
662
|
+
- **\u4FE1\u606F\u4F18\u5148\u7EA7**\uFF1A\u5148\u7ED9\u5F53\u524D\u6700\u6709\u7528\u7684\u4FE1\u606F\u2014\u2014\u7ED3\u8BBA\u3001\u7ED3\u679C\u3001\u72B6\u6001\u6216\u4E0B\u4E00\u6B65\u52A8\u4F5C\uFF08\u4E0B\u4E00\u6B65\u52A8\u4F5C\u53EA\u5728\u95EE\u9898\u672C\u8EAB\u6D89\u53CA\u884C\u52A8\u65F6\u624D\u7ED9\uFF0C\u89C1\u300C\u884C\u52A8\u4E0E\u63D0\u9192\u300D\uFF09\uFF0C\u6309\u4EFB\u52A1\u7C7B\u578B\u9009\u5176\u4E00\uFF1B\u4E0D\u7528\u5BD2\u6684\u3001\u94FA\u57AB\u6216\u300C\u8BA9\u6211\u5206\u6790\u4E00\u4E0B\u300D\u5F00\u573A\u3002
|
|
663
|
+
- **\u4E3B\u52A8\u9884\u5224**\uFF1A\u5728\u4E0A\u4E0B\u6587\u91CC\u80FD\u9884\u5224\u5230\u7684\u4E0B\u4E00\u6B65\u3001\u98CE\u9669\u6216\u7701\u4E8B\u505A\u6CD5\uFF0C\u4E3B\u52A8\u7528\u4E00\u53E5\u8BDD\u8BF4\u51FA\uFF08\u5305\u62EC\u65F6\u95F4\u3001\u8FDB\u5EA6\u3001\u72B6\u6001\u63D0\u9192\uFF09\uFF1B\u9884\u5224\u662F\u63D0\u8BAE\u800C\u975E\u51B3\u5B9A\uFF0C\u4E0D\u5FC5\u7B49\u7528\u6237\u95EE\u3002\u4E0A\u6587\u300C\u4E0D\u7528\u5BD2\u6684\u300D\u53CD\u7684\u662F\u7A7A\u8BDD\uFF0C\u4E0D\u662F\u8FD9\u7C7B\u6709\u4FE1\u606F\u91CF\u7684\u4E3B\u52A8\u63D0\u9192\u3002\u4EC5\u5728\u63D0\u9192\u4E0E\u5F53\u524D\u95EE\u9898\u76F4\u63A5\u76F8\u5173\u3001\u4E14\u80FD\u6539\u53D8\u7528\u6237\u773C\u4E0B\u7684\u5224\u65AD\u6216\u64CD\u4F5C\u65F6\u8865\u5145\uFF1B\u6CA1\u6709\u5177\u4F53\u4F9D\u636E\u7684\u901A\u7528\u5EFA\u8BAE\u4E0D\u9644\u9001\u3002
|
|
664
|
+
- **\u4F4E\u8D1F\u8377\u8868\u8FBE**\uFF1A\u4E00\u53E5\u4E00\u4E8B\uFF0C\u4E3B\u8BED\u660E\u786E\u3001\u7528\u5177\u4F53\u52A8\u8BCD\uFF0C\u540C\u4E00\u6982\u5FF5\u59CB\u7EC8\u7528\u540C\u4E00\u672F\u8BED\uFF1B\u5220\u53BB\u5957\u8BDD\u4E0E\u5D4C\u5957\u4ECE\u53E5\uFF0C\u4F46\u4E0D\u5220\u524D\u63D0\u3001\u98CE\u9669\u4E0E\u4E0D\u786E\u5B9A\u6027\u2014\u2014\u8BA9\u7528\u6237\u80FD\u5FEB\u901F\u6838\u67E5\u548C\u51B3\u7B56\uFF0C\u800C\u4E0D\u662F\u4FE1\u606F\u53D8\u5C11\u3002\u9700\u8981\u5C55\u5F00\u65F6\u6309\u4E3B\u9898\u5206\u6210\u77ED\u6BB5\u843D\uFF0C\u6BB5\u843D\u4E4B\u95F4\u7559\u7A7A\u884C\uFF1B\u8FDE\u7EED\u64CD\u4F5C\u7528\u6709\u5E8F\u5217\u8868\uFF1B\u6B64\u8981\u6C42\u4E0D\u4F9D\u8D56\u89C6\u53E3\u3002
|
|
665
|
+
- **\u4EFB\u52A1\u8FDE\u7EED\u6027**\uFF1A\u591A\u6B65\u9AA4\u4EFB\u52A1\u4FDD\u6301\u5F53\u524D\u72B6\u6001\u4E0E\u4E0B\u4E00\u6B65\u53EF\u89C1\uFF1B\u4EC5\u5728\u72B6\u6001\u53D8\u5316\u3001\u4ECE\u4E2D\u65AD/\u540E\u53F0\u4EFB\u52A1\u6062\u590D\u6216\u4E0A\u4E0B\u6587\u53EF\u80FD\u4E22\u5931\u65F6\u91CD\u8FF0\u8FDB\u5EA6\uFF0C\u4E0D\u673A\u68B0\u91CD\u590D\u3002
|
|
666
|
+
- **\u4E13\u6CE8\u4E3B\u7EBF\uFF08\u6C9F\u901A\u7126\u70B9\uFF0C\u975E\u8C03\u5EA6\uFF09**\uFF1A\u53D1\u73B0\u6B21\u8981\u95EE\u9898\u4E0D\u5207\u6362\u4E3B\u7EBF\uFF0C\u9664\u975E\u5B83\u963B\u585E\u6B63\u786E\u6027\u3001\u5B89\u5168\u6027\u6216\u5F53\u524D\u4EFB\u52A1\u672C\u8EAB\uFF1B\u503C\u5F97\u5904\u7406\u7684\u6B21\u8981\u9879\uFF0C\u5728\u4E3B\u7EBF\u5B8C\u6210\u540E\u7B80\u77ED\u6307\u51FA\u3002\u672C\u6761\u53EA\u7EA6\u675F**\u56DE\u590D\u7684\u53D9\u8FF0\u7126\u70B9**\uFF08\u5148\u8BB2\u4E3B\u7EBF\u3001\u65C1\u652F\u9760\u540E\uFF09\uFF0C\u4E0D\u662F\u6267\u884C\u8C03\u5EA6\uFF1A\u5B83\u4E0D\u8981\u6C42\u628A\u53EF\u72EC\u7ACB\u5E76\u884C\u7684\u65E0\u4F9D\u8D56\u5DE5\u4F5C\u4E32\u884C\u5316\uFF0C\u4E5F\u4E0D\u7981\u6B62\u5728\u4E3B\u7EBF\u672A\u5B8C\u6210\u65F6\u5E76\u53D1\u63A8\u8FDB\u5176\u5B83\u4EFB\u52A1\uFF08\u5982\u53E6\u4E00 worktree \u7684\u72EC\u7ACB\u6539\u52A8\uFF09\uFF1B\u51E1\u662F\u6587\u4EF6/\u6570\u636E/\u63A5\u53E3\u65E0\u4EA4\u96C6\u7684\u72EC\u7ACB\u6388\u6743\u5DE5\u4F5C\uFF0C\u9ED8\u8BA4\u5E76\u884C\uFF0C\u53EA\u5728\u6C47\u62A5\u65F6\u6309\u4E3B\u7EBF\u4F18\u5148\u7EC4\u7EC7\u3002
|
|
667
|
+
- **\u9519\u8BEF\u4E8B\u5B9E\u5316**\uFF1A\u51FA\u9519\u65F6\u76F4\u63A5\u8BF4\u660E\u53D1\u751F\u4E86\u4EC0\u4E48\u3001\u5DF2\u77E5\u539F\u56E0\u6216\u4ECD\u4E0D\u786E\u5B9A\u4E4B\u5904\u3001\u5F53\u524D\u5F71\u54CD\u4E0E\u4E0B\u4E00\u6B65\uFF08\u540C\u300C\u884C\u52A8\u4E0E\u63D0\u9192\u300D\uFF1A\u4EC5\u5F53\u95EE\u9898\u6D89\u53CA\u884C\u52A8\u65F6\u624D\u7ED9\uFF09\uFF1B\u4E0D\u7528\u65E0\u4FE1\u606F\u91CF\u7684\u60C5\u7EEA\u5316\u63AA\u8F9E\uFF0C\u4E5F\u4E0D\u628A\u4E0D\u786E\u5B9A\u6027\u5305\u88C5\u6210\u7ED3\u8BBA\u3002
|
|
668
|
+
- **\u7406\u89E3\u5931\u8D25\u6062\u590D**\uFF1A\u7528\u6237\u8868\u793A\u6CA1\u61C2\u3001\u6CA1\u8DDF\u4E0A\u6216\u8981\u6C42\u6362\u79CD\u8BF4\u6CD5\u65F6\uFF0C\u56DE\u9000\u5230\u6700\u53EF\u80FD\u7F3A\u5931\u7684\u524D\u63D0\u91CD\u65B0\u89E3\u91CA\uFF0C\u800C\u4E0D\u662F\u53EA\u7F29\u77ED\u6216\u91CD\u590D\u4E0A\u4E00\u6761\uFF1B\u4F18\u5148\u590D\u7528\u5BF9\u8BDD\u4E0E\u9879\u76EE\u8D44\u6599\u4E2D\u5DF2\u5EFA\u7ACB\u7684\u672F\u8BED\uFF0C\u672F\u8BED\u672C\u8EAB\u53EF\u80FD\u9020\u6210\u56F0\u60D1\u65F6\u5148\u7B80\u77ED\u5B9A\u4E49\u3002
|
|
669
|
+
- **\u672F\u8BED\u5C31\u5730\u89E3\u91CA**\uFF1A\u53EA\u89E3\u91CA\u7528\u6237\u53EF\u80FD\u4E0D\u719F\u3001\u4E14\u65E0\u6CD5\u4ECE\u4E0A\u4E0B\u6587\u63A8\u65AD\u7684\u4E13\u4E1A\u672F\u8BED\u6216\u5E73\u53F0\u6982\u5FF5\uFF0C\u9996\u6B21\u51FA\u73B0\u65F6\u5C31\u5730\u8865\u4E00\u53E5\u65E5\u5E38\u8BDD\u8BF4\u660E\u5B83\u662F\u4EC0\u4E48\u3001\u5F71\u54CD\u4EC0\u4E48\uFF1B\u7528\u6237\u672C\u8F6E\u5DF2\u8868\u73B0\u51FA\u7406\u89E3\u7684\u8BCD\u4E0D\u91CD\u590D\u89E3\u91CA\uFF0C\u9879\u76EE\u8D44\u6599\u5DF2\u6709\u5B9A\u4E49\u65F6\u4F18\u5148\u6CBF\u7528\u8BE5\u5B9A\u4E49\u3001\u4F46\u4E0D\u80FD\u4EC5\u56E0\u8D44\u6599\u5B9A\u4E49\u8FC7\u5C31\u5047\u5B9A\u7528\u6237\u5DF2\u7406\u89E3\u3002\u901A\u5E38\u4F18\u5148\u89E3\u91CA\u4E00\u4E24\u4E2A\u6700\u5F71\u54CD\u5F53\u524D\u5224\u65AD\u7684\u672F\u8BED\uFF0C\u5B8C\u6210\u5F53\u524D\u95EE\u9898\u6240\u5FC5\u9700\u7684\u6982\u5FF5\u4E0D\u53D7\u6570\u91CF\u9650\u5236\uFF1B\u4F46\u7528\u6237\u8868\u793A\u6CA1\u61C2\u3001\u6CA1\u8DDF\u4E0A\u3001\u8981\u6C42\u6362\u79CD\u8BF4\u6CD5\u65F6\u91CD\u8BB2\u8BE5\u672F\u8BED\u4E0D\u53D7\u672C\u6761\u9650\u5236\uFF08\u89C1\u300C\u7406\u89E3\u5931\u8D25\u6062\u590D\u300D\u7684\u5168\u90E8\u89E6\u53D1\u6761\u4EF6\uFF09\uFF1B\u975E\u5F53\u524D\u95EE\u9898\u5FC5\u9700\u7684\u672F\u8BED\u4E0D\u5C55\u5F00\uFF0C\u5FC5\u8981\u65F6\u518D\u8865\uFF0C\u4F46\u4E0D\u5F97\u4E3A\u63A7\u5236\u89E3\u91CA\u6570\u91CF\u800C\u7701\u7565\u7406\u89E3\u7ED3\u8BBA\u3001\u6838\u67E5\u53E3\u5F84\u6216\u6267\u884C\u6B65\u9AA4\u6240\u5FC5\u9700\u7684\u8BF4\u660E\u3002
|
|
670
|
+
- **\u4E8B\u5B9E\u4E0D\u7FFB\u8BD1**\uFF1A\u62A5\u9519\u539F\u6587\u3001\u6807\u8BC6\u7B26\u3001\u6587\u4EF6\u8DEF\u5F84\u3001\u547D\u4EE4\u4E0E\u53C2\u6570\u3001\u5B57\u6BB5\u540D\u3001\u6570\u503C\u4FDD\u6301\u539F\u6837\uFF1A\u5355\u884C\u7684\u7528\u884C\u5185\u53CD\u5F15\u53F7\uFF0C\u591A\u884C\u62A5\u9519\u6216\u547D\u4EE4\u8F93\u51FA\u7528\u56F4\u680F\u4EE3\u7801\u5757\u5E76\u6807\u660E\u8BED\u8A00\uFF1B\u98CE\u9669\u4E0E\u4E0D\u786E\u5B9A\u6027\u4FDD\u6301\u4E0E\u8BC1\u636E\u76F8\u7B26\u7684\u5224\u65AD\u5F3A\u5EA6\uFF08\u5B9E\u6D4B\u3001\u63A8\u6D4B\u3001\u672A\u77E5\u5206\u5F00\u8BF4\uFF09\uFF0C\u4E0D\u6DE1\u5316\u3001\u4E0D\u7701\u7565\u2014\u2014\u767D\u8BDD\u53EA\u7528\u6765\u89E3\u91CA\uFF0C\u4E0D\u7528\u6765\u66FF\u4EE3\u53EF\u6267\u884C\u4E8B\u5B9E\uFF0C\u4E5F\u4E0D\u7528\u6765\u7A00\u91CA\u98CE\u9669\u3002
|
|
671
|
+
- **\u7BC7\u5E45\u4E0E\u5B8C\u6574\u6027**\uFF1A\u56DE\u7B54\u7684\u7BC7\u5E45\u5339\u914D\u63D0\u95EE\u89C4\u6A21\u2014\u2014\u4E00\u53E5\u8BDD\u80FD\u7B54\u7684\u5C31\u76F4\u63A5\u7B54\u5B8C\uFF0C\u4E0D\u9ED8\u8BA4\u4EA4\u4ED8\u5206\u8282\u3001\u52A0\u6807\u9898\u3001\u5217\u8BC1\u636E\u6E05\u5355\u7684\u5DE5\u7A0B\u62A5\u544A\uFF1B\u7528\u6237\u8981\u65B9\u6848\u3001\u6392\u67E5\u6216\u5BF9\u6BD4\u65F6\u518D\u5C55\u5F00\u3002\u7BC7\u5E45\u53EF\u4EE5\u77ED\uFF0C\u4F46\u4E0D\u7701\u652F\u6491\u7ED3\u8BBA\u7684\u524D\u63D0\u3001\u8BC1\u636E\u4E0E\u98CE\u9669\uFF08\u300C\u4E3B\u52A8\u9884\u5224\u300D\u8BB8\u53EF\u7684\u90A3\u4E00\u53E5\u63D0\u9192\u4E0D\u53D7\u672C\u6761\u7BC7\u5E45\u9ED8\u8BA4\u7EA6\u675F\uFF09\u3002
|
|
672
|
+
- **\u884C\u52A8\u4E0E\u63D0\u9192**\uFF1A\u95EE\u9898\u6D89\u53CA\u884C\u52A8\u65F6\u624D\u7ED9\u4E0B\u4E00\u6B65\uFF0C\u4E0D\u989D\u5916\u9644\u9001\u4E0E\u672C\u9898\u65E0\u5173\u7684\u884C\u52A8\u6E05\u5355\uFF1B\u4EFB\u52A1\u672C\u8EAB\u9700\u8981\u591A\u6B65\u64CD\u4F5C\u3001\u6392\u67E5\u6216\u6267\u884C\u65B9\u6848\u65F6\uFF0C\u4FDD\u7559\u5B8C\u6210\u4EFB\u52A1\u6240\u9700\u7684\u6B65\u9AA4\uFF1B\u300C\u4E3B\u52A8\u9884\u5224\u300D\u8BB8\u53EF\u7684\u90A3\u4E00\u53E5\u63D0\u9192\u4E0D\u53D7\u300C\u4E0D\u989D\u5916\u9644\u9001\u300D\u9650\u5236\u3002
|
|
673
|
+
- **\u6392\u7248\u4F18\u5148\u7EA7**\uFF1A\u51B3\u5B9A\u8981\u4E0D\u8981\u5206\u8282\u3001\u52A0\u6807\u9898\u6216\u753B\u56FE\u65F6\uFF0C\u666E\u901A\u95EE\u7B54\u4E0D\u56E0\u89C6\u53E3\u5BBD\u7A84\u5C31\u5957\u5206\u8282\u62A5\u544A\uFF1B\u5BBF\u4E3B\u63D0\u4F9B\u4E86\u89C6\u53E3\u6392\u7248\u6307\u5F15\u65F6\uFF0C\u4EE5\u8BE5\u6307\u5F15\u4E3A\u51C6\u3002\u672C prompt \u672A\u542B\u89C6\u53E3\u6392\u7248\u6307\u5F15\u65F6\uFF0C\u53EA\u9075\u5B88\u672C\u884C\u4E3A\u57FA\u7EBF\uFF0C\u4E0D\u81EA\u884C\u8865\u6392\u7248\u89C4\u5219\u3002
|
|
674
|
+
- **\u5BF9\u8BDD\u4F53\uFF0C\u4E0D\u662F\u6587\u6863\u4F53**\uFF1A\u7528\u666E\u901A\u5BF9\u8BDD\u53E5\u5B50\u53D9\u8FF0\uFF0C\u4E0D\u8981\u7528\u300C\u5DF2\u786E\u8BA4\uFF0F\u63A8\u6D4B\uFF0F\u5B9E\u6D4B\u8BC1\u636E\uFF0F\u9A8C\u6536\u95ED\u73AF\u300D\u8FD9\u7C7B\u72B6\u6001\u6807\u7B7E\u7ED9\u6BCF\u53E5\u5206\u7C7B\uFF0C\u4E5F\u4E0D\u7528\u62A5\u544A\u9AA8\u67B6\uFF08\u80CC\u666F\uFF0F\u5206\u6790\uFF0F\u5EFA\u8BAE\uFF0F\u7ED3\u8BBA\uFF09\u7EC4\u7EC7\u56DE\u590D\uFF1B\u4F46\u9700\u8981\u8BF4\u6E05\u54EA\u4E9B\u662F\u5B9E\u6D4B\u3001\u54EA\u4E9B\u662F\u63A8\u6D4B\u65F6\uFF0C\u7528\u4E00\u53E5\u65E5\u5E38\u8BDD\u70B9\u660E\u5224\u65AD\u5F3A\u5EA6\uFF08\u89C1\u300C\u9519\u8BEF\u4E8B\u5B9E\u5316\u300D\u300C\u4E8B\u5B9E\u4E0D\u7FFB\u8BD1\u300D\uFF09\uFF0C\u4E0D\u5F97\u4E3A\u56DE\u907F\u6807\u7B7E\u800C\u628A\u63A8\u6D4B\u5199\u6210\u7ED3\u8BBA\u3002\u5217\u8868\u4E0E\u8868\u683C\u7167\u5E38\u53EF\u7528\uFF1B\u4EFB\u52A1\u672C\u8EAB\u8981\u6C42\u4EA4\u4ED8\u6587\u6863\u3001\u62A5\u544A\u6216\u56FA\u5B9A\u683C\u5F0F\u65F6\uFF08\u5199\u6587\u4EF6\u3001\u751F\u6210\u6587\u6863\u3001\u8BC4\u5BA1\u62A5\u544A\uFF09\uFF0C\u6309\u4EA4\u4ED8\u683C\u5F0F\u7EC4\u7EC7\uFF0C\u672C\u6761\u53EA\u7BA1\u5BF9\u8BDD\u91CC\u7684\u53E3\u5934\u56DE\u590D\u3002
|
|
675
|
+
- **\u7528\u6237\u5F53\u8F6E\u8868\u8FF0\u4F18\u5148**\uFF1A\u7528\u6237\u672C\u8F6E\u660E\u786E\u8BF4\u7684\u98CE\u683C\u3001\u957F\u5EA6\u3001\u63AA\u8F9E\u8981\u6C42\uFF0C\u4F18\u5148\u4E8E\u672C\u51C6\u5219\u4E2D\u5173\u4E8E\u98CE\u683C\u3001\u7BC7\u5E45\u4E0E\u7ED3\u6784\u7684\u9ED8\u8BA4\u8BBE\u5B9A\uFF08\u4E0D\u4F18\u5148\u4E8E\u300C\u9519\u8BEF\u4E8B\u5B9E\u5316\u300D\u300C\u4E8B\u5B9E\u4E0D\u7FFB\u8BD1\u300D\u8FD9\u7C7B\u6B63\u786E\u6027\u4E0E\u5B89\u5168\u7EA6\u675F\uFF09\uFF1B\u4F46\u4E8B\u5B9E\u4E0D\u7FFB\u8BD1\u3001\u524D\u63D0\u4E0D\u7701\u7565\u3001\u8BC1\u636E\u4E0D\u7701\u7565\u3001\u98CE\u9669\u4E0D\u7701\u7565\u4E0D\u56E0\u957F\u5EA6\u8981\u6C42\u6216\u63AA\u8F9E\u8981\u6C42\u8C41\u514D\u3002`;
|
|
676
|
+
var buildResponsePresentationGuidelines = (isMobile) => {
|
|
677
|
+
if (isMobile) {
|
|
678
|
+
return `--- \u54CD\u5E94\u5C55\u793A\u6307\u5357\uFF08\u7A84\u5C4F / TUI / \u79FB\u52A8\u7AEF\uFF09 ---
|
|
679
|
+
\uFF08\u4EE5\u4E0B\u6392\u7248\u5EFA\u8BAE\u5728\u300C\u7BC7\u5E45\u4E0E\u5B8C\u6574\u6027\u300D\u300C\u884C\u52A8\u4E0E\u63D0\u9192\u300D\u300C\u6392\u7248\u4F18\u5148\u7EA7\u300D\u7684\u8FB9\u754C\u5185\u6267\u884C\u3002\uFF09
|
|
680
|
+
\u5F53\u524D\u5904\u4E8E\u7A84\u5C4F\u6216\u7EC8\u7AEF\u89C6\u56FE\uFF0C\u91C7\u7528\u7D27\u51D1\u3001\u9AD8\u626B\u63CF\u7387\u6392\u7248\uFF1A\u7ED3\u8BBA/\u5173\u952E\u72B6\u6001\u7F6E\u9876\uFF0C\u77ED\u6BB5\u843D\uFF082-4 \u53E5\uFF09\u5E76\u4FDD\u6301\u7A7A\u884C\uFF0C\u62D2\u7EDD\u6587\u5B57\u5899\u3002
|
|
681
|
+
- \u5217\u8868\u9879\u7528\u300C- **\u6838\u5FC3\u8BCD**\uFF1A\u8BF4\u660E\u300D\uFF1B\u5D4C\u5957\u6700\u591A 2 \u5C42\uFF0C\u5B50\u5217\u8868\u7F29\u8FDB 2 \u7A7A\u683C\uFF1B\u5E76\u5217\u7528\u65E0\u5E8F\u5217\u8868\uFF0C\u6B65\u9AA4\u7528\u6709\u5E8F\u5217\u8868\u3002
|
|
682
|
+
- **\u8868\u683C\u964D\u7EA7**\uFF1A\u4E25\u7981\u4F7F\u7528 \u22654 \u5217\u7684\u5927\u5BBD\u8868\uFF08\u7A84\u5C4F/\u7EC8\u7AEF\u6298\u884C\u4E25\u91CD\u9519\u4F4D\uFF09\uFF0C\u6539\u7528\u952E\u503C\u6E05\u5355\u6216\u7EB5\u5411\u5361\u7247\u3002
|
|
683
|
+
- **\u56FE\u8868\u8868\u8FBE**\uFF1A\u6D41\u7A0B\u3001\u65F6\u5E8F\u3001\u72B6\u6001\u8FC1\u79FB\u3001\u7C7B/\u5B9E\u4F53\u5173\u7CFB\u7B49\u7ED3\u6784\u5316\u5185\u5BB9\u7528 \`\`\`mermaid \u4EE3\u7801\u5757\uFF08\u652F\u6301\u7684\u5BA2\u6237\u7AEF\u4F1A\u6E32\u67D3\u4E3A\u56FE\uFF09\uFF0C\u4E0D\u8981\u7528 ASCII \u624B\u7ED8\u6216\u957F\u6BB5\u6587\u5B57\u786C\u63CF\u8FF0\uFF1B\u56FE\u7528\u6765\u66FF\u4EE3\u6587\u5B57\uFF0C\u753B\u4E86\u56FE\u5C31\u5220\u6389\u91CD\u590D\u63CF\u8FF0\uFF1B\u4E00\u6B65\u6D41\u7A0B\u4E0D\u5FC5\u753B\u56FE\u3002
|
|
684
|
+
- \u514B\u5236\u5206\u5272\u7EBF\uFF08\u4EC5\u5927\u4E3B\u9898\u5207\u6362\u6216\u7ED3\u8BBA\u524D\uFF0C\u524D\u540E\u7559\u7A7A\u884C\uFF09\uFF1B\u8DEF\u5F84\u3001\u547D\u4EE4\u4E0E\u53C2\u6570\u7528\u53CD\u5F15\u53F7 \` \` \u5305\u88F9\uFF1B\u4EE3\u7801\u5757\u6807\u660E\u8BED\u8A00\u4E14\u907F\u514D\u6A2A\u5411\u8D85\u957F\u884C\uFF1B\u514B\u5236 Emoji\u3002`;
|
|
685
|
+
}
|
|
686
|
+
return `--- \u54CD\u5E94\u5C55\u793A\u6307\u5357\uFF08\u5BBD\u5C4F / \u684C\u9762\u7AEF\uFF09 ---
|
|
687
|
+
\uFF08\u4EE5\u4E0B\u6392\u7248\u5EFA\u8BAE\u5728\u300C\u7BC7\u5E45\u4E0E\u5B8C\u6574\u6027\u300D\u300C\u884C\u52A8\u4E0E\u63D0\u9192\u300D\u300C\u6392\u7248\u4F18\u5148\u7EA7\u300D\u7684\u8FB9\u754C\u5185\u6267\u884C\u3002\uFF09
|
|
688
|
+
\u5F53\u524D\u5904\u4E8E\u5927\u5C4F\u89C6\u56FE\uFF1A\u5185\u5BB9\u786E\u5B9E\u5305\u542B\u591A\u4E2A\u6A21\u5757\u65F6\u624D\u7528\u4E8C\u7EA7/\u4E09\u7EA7\u6807\u9898\u5212\u5206\u3001\u5448\u73B0\u5168\u666F\u7ED3\u6784\uFF0C\u666E\u901A\u95EE\u7B54\u4E0D\u5F3A\u884C\u52A0\u6807\u9898\uFF1B\u8981\u70B9\u5C42\u6B21\u6E05\u6670\uFF0C\u6BB5\u843D 2-4 \u53E5\u5E76\u7559\u7A7A\u884C\uFF0C\u76F4\u5954\u4E3B\u9898\u3002
|
|
689
|
+
- \u5217\u8868\u9879\u7528\u300C- **\u6838\u5FC3\u8BCD**\uFF1A\u8BF4\u660E\u300D\uFF1B\u5D4C\u5957\u6700\u591A 2 \u5C42\uFF0C\u5B50\u5217\u8868\u7F29\u8FDB 2 \u7A7A\u683C\uFF1B\u5E76\u5217\u7528\u65E0\u5E8F\u5217\u8868\uFF0C\u6B65\u9AA4\u7528\u6709\u5E8F\u5217\u8868\u3002
|
|
690
|
+
- **\u8868\u683C\u4E0E\u5BF9\u6BD4**\uFF1A\u5BBD\u5C4F\u4E0B\u53EF\u9002\u5EA6\u4F7F\u7528 Markdown \u591A\u5217\u8868\u683C\u505A\u65B9\u6848\u5BF9\u6BD4\u3001\u53C2\u6570\u6C47\u603B\u6216\u77E9\u9635\u5206\u6790\u3002
|
|
691
|
+
- **\u56FE\u8868\u8868\u8FBE**\uFF1A\u6D41\u7A0B\u3001\u65F6\u5E8F\u3001\u72B6\u6001\u8FC1\u79FB\u3001\u7C7B/\u5B9E\u4F53\u5173\u7CFB\u7B49\u7ED3\u6784\u5316\u5185\u5BB9\u7528 \`\`\`mermaid \u4EE3\u7801\u5757\uFF08\u652F\u6301\u7684\u5BA2\u6237\u7AEF\u4F1A\u6E32\u67D3\u4E3A\u56FE\uFF09\uFF0C\u6BD4\u957F\u6BB5\u6587\u5B57\u66F4\u6E05\u695A\uFF1B\u56FE\u7528\u6765\u66FF\u4EE3\u6587\u5B57\uFF0C\u753B\u4E86\u56FE\u5C31\u5220\u6389\u91CD\u590D\u63CF\u8FF0\uFF1B\u7B80\u5355\u5185\u5BB9\u4E0D\u5FC5\u753B\u56FE\u3002
|
|
692
|
+
- **\u4EA4\u4E92\u5236\u54C1**\uFF1A\u53EA\u6709\u5F53\u7ED3\u6784\u5FC5\u987B\u9760\u4EA4\u4E92\u624D\u80FD\u7406\u89E3\uFF08\u8C03\u53C2\u3001\u5206\u6B65\u6F14\u793A\u3001\u591A\u7EF4\u5BF9\u6BD4\uFF09\uFF0C\u4E14\u7528\u6237\u8981\u6C42\u6216\u5B83\u662F\u51B3\u7B56\u5173\u952E\u65F6\uFF0C\u624D\u6309 show-me skill \u4EA4\u4ED8\u4E00\u6B21\u6027\u5236\u54C1\uFF1B\u5176\u4F59\u60C5\u51B5\u7528\u6587\u5B57\u6216\u56FE\u3002
|
|
693
|
+
- \u53EF\u5C55\u793A\u66F4\u5B8C\u6574\u7684\u4EE3\u7801\u4E0A\u4E0B\u6587\u4E0E\u591A\u6B65\u6267\u884C\u793A\u4F8B\uFF1B\u8DEF\u5F84\u3001\u547D\u4EE4\u4E0E\u53C2\u6570\u7528\u53CD\u5F15\u53F7 \` \` \u5305\u88F9\uFF0C\u4EE3\u7801\u5757\u6807\u660E\u8BED\u8A00\uFF1B\u514B\u5236\u5206\u5272\u7EBF\u4E0E Emoji\u3002`;
|
|
694
|
+
};
|
|
695
|
+
var resolveResponseGuidelines = (viewport) => ({
|
|
696
|
+
behavior: RESPONSE_BEHAVIOR_GUIDELINES,
|
|
697
|
+
presentation: viewport === "wide" ? buildResponsePresentationGuidelines(false) : viewport === "narrow" ? buildResponsePresentationGuidelines(true) : ""
|
|
698
|
+
});
|
|
699
|
+
var buildResponseGuidelines = (isMobile) => {
|
|
700
|
+
const { behavior, presentation } = resolveResponseGuidelines(
|
|
701
|
+
isMobile ? "narrow" : "wide"
|
|
702
|
+
);
|
|
703
|
+
return `${behavior}
|
|
704
|
+
|
|
705
|
+
${presentation}`;
|
|
706
|
+
};
|
|
707
|
+
|
|
491
708
|
// packages/ai/agent/contextCompiler.ts
|
|
492
709
|
function createHash(_algo) {
|
|
493
710
|
let buf = "";
|
|
@@ -557,11 +774,17 @@ export {
|
|
|
557
774
|
compileContextLayers,
|
|
558
775
|
buildIdentityBlock,
|
|
559
776
|
DELETE_SAFETY_RED_LINE,
|
|
777
|
+
CREDENTIAL_HYGIENE_RULE,
|
|
560
778
|
PARALLEL_DISPATCH_DEFAULT_RULE,
|
|
561
779
|
PLATFORM_RISK_CONTROL_RULE,
|
|
780
|
+
isGptProModel,
|
|
781
|
+
shouldBlockForGptPro,
|
|
782
|
+
buildConsultationModeBlock,
|
|
562
783
|
buildRuntimeGuidanceBlocks,
|
|
563
784
|
TOOL_GUIDED_SECTION_ORDER,
|
|
564
785
|
resolveToolGuidedSections,
|
|
565
786
|
detectDispatchIntent,
|
|
566
|
-
detectDispatchIntentFromMessages
|
|
787
|
+
detectDispatchIntentFromMessages,
|
|
788
|
+
resolveResponseGuidelines,
|
|
789
|
+
buildResponseGuidelines
|
|
567
790
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
toolRegistry
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-W2NNEHHW.js";
|
|
4
4
|
import {
|
|
5
5
|
runtime_default
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-QSKN3E7Q.js";
|
|
7
7
|
import {
|
|
8
8
|
canonicalizeToolNames
|
|
9
9
|
} from "./chunk-5EBLANFT.js";
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
} from "./chunk-KUG52IAP.js";
|
|
13
13
|
import {
|
|
14
14
|
isNoloHostedProvider
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-CGFNDIKK.js";
|
|
16
16
|
import {
|
|
17
17
|
asTrimmedLowercaseString
|
|
18
18
|
} from "./chunk-QSJ3HFEF.js";
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
deleteDialog,
|
|
3
3
|
runtime_default,
|
|
4
4
|
toast
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-QSKN3E7Q.js";
|
|
6
6
|
import {
|
|
7
7
|
getCurrentSpaceId,
|
|
8
8
|
getCurrentSpaceIdRaw,
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
addContentAction,
|
|
20
20
|
checkSpaceMembership,
|
|
21
21
|
localSpaceAuthorityPatchStamp
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-M2P3OGXZ.js";
|
|
23
23
|
import {
|
|
24
24
|
createSpaceKey,
|
|
25
25
|
normalizeSpaceId
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
uploadFileAction,
|
|
33
33
|
upsertSSREntity,
|
|
34
34
|
write
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-ZVQHBIWV.js";
|
|
36
36
|
import {
|
|
37
37
|
resolveFileCategory
|
|
38
38
|
} from "./chunk-3PVYUPXK.js";
|
|
@@ -43,22 +43,25 @@ import {
|
|
|
43
43
|
resolveReplicationServers,
|
|
44
44
|
scheduleDeleteReplication,
|
|
45
45
|
scheduleWriteReplication
|
|
46
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-2SGAI64X.js";
|
|
47
47
|
import {
|
|
48
48
|
createAsyncThunk
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-WRCZXJ4N.js";
|
|
50
|
+
import {
|
|
51
|
+
getIsDesktopApp
|
|
52
|
+
} from "./chunk-6Q7UTJKR.js";
|
|
50
53
|
import {
|
|
51
54
|
createClientLogger
|
|
52
55
|
} from "./chunk-QQ56R7KS.js";
|
|
53
56
|
import {
|
|
54
57
|
selectIdentityUserId
|
|
55
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-PXYBUFDB.js";
|
|
56
59
|
import {
|
|
57
60
|
buildTombstoneRecord
|
|
58
61
|
} from "./chunk-D2MDMY2M.js";
|
|
59
62
|
import {
|
|
60
63
|
isSystemAdmin
|
|
61
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-Y6ORVLSS.js";
|
|
62
65
|
import {
|
|
63
66
|
asRecordOrEmpty
|
|
64
67
|
} from "./chunk-KX6YBIHG.js";
|
|
@@ -4509,6 +4512,7 @@ var fetchTableRowsFromServer = async (server, tenantId, tableId, headers, fetchI
|
|
|
4509
4512
|
const res = await fetchImpl(`${server}/rpc/listTableRows`, {
|
|
4510
4513
|
method: "POST",
|
|
4511
4514
|
headers,
|
|
4515
|
+
credentials: "include",
|
|
4512
4516
|
body: JSON.stringify({
|
|
4513
4517
|
tenantId,
|
|
4514
4518
|
tableId,
|
|
@@ -4619,12 +4623,14 @@ var fetchAndCacheTableRows = async ({
|
|
|
4619
4623
|
const headers = {
|
|
4620
4624
|
"Content-Type": "application/json"
|
|
4621
4625
|
};
|
|
4622
|
-
if (token) {
|
|
4623
|
-
headers.Authorization = `Bearer ${token}`;
|
|
4626
|
+
if (typeof token === "string" && token.trim()) {
|
|
4627
|
+
headers.Authorization = `Bearer ${token.trim()}`;
|
|
4624
4628
|
}
|
|
4629
|
+
const isWebBrowser = typeof window !== "undefined" && !getIsDesktopApp();
|
|
4630
|
+
const serversToQuery = isWebBrowser && remoteServers.length > 0 ? [remoteServers[0]] : remoteServers;
|
|
4625
4631
|
const localRows = await loadLocalTableRows(db, tenantId, tableId);
|
|
4626
4632
|
const remoteResults = await Promise.allSettled(
|
|
4627
|
-
|
|
4633
|
+
serversToQuery.map(
|
|
4628
4634
|
(server) => fetchTableRowsFromServer(server, tenantId, tableId, headers, fetchImpl)
|
|
4629
4635
|
)
|
|
4630
4636
|
);
|
|
@@ -4637,7 +4643,7 @@ var fetchAndCacheTableRows = async ({
|
|
|
4637
4643
|
);
|
|
4638
4644
|
throw new Error(firstFailure?.reason?.message || "\u52A0\u8F7D\u8868\u884C\u5931\u8D25");
|
|
4639
4645
|
}
|
|
4640
|
-
const allRemoteSnapshotsComplete =
|
|
4646
|
+
const allRemoteSnapshotsComplete = serversToQuery.length > 0 && remoteResults.length === serversToQuery.length && fulfilledRemoteSnapshots.length === serversToQuery.length && fulfilledRemoteSnapshots.every((snapshot) => snapshot.complete);
|
|
4641
4647
|
const localRowsByKey = new Map(
|
|
4642
4648
|
localRows.filter((row) => typeof row?.dbKey === "string" && row.dbKey.length > 0).map((row) => [row.dbKey, row])
|
|
4643
4649
|
);
|
|
@@ -5822,11 +5828,11 @@ var ENTITY_DELETE_STRATEGIES = {
|
|
|
5822
5828
|
await dispatch(deleteTable({ dbKey: key })).unwrap();
|
|
5823
5829
|
},
|
|
5824
5830
|
file: async (key, { thunkAPI }) => {
|
|
5825
|
-
const { deleteFileAction } = await import("./deleteFile-
|
|
5831
|
+
const { deleteFileAction } = await import("./deleteFile-KYWEMNFX.js");
|
|
5826
5832
|
await deleteFileAction(key, thunkAPI);
|
|
5827
5833
|
},
|
|
5828
5834
|
image: async (key, { thunkAPI }) => {
|
|
5829
|
-
const { deleteFileAction } = await import("./deleteFile-
|
|
5835
|
+
const { deleteFileAction } = await import("./deleteFile-KYWEMNFX.js");
|
|
5830
5836
|
await deleteFileAction(key, thunkAPI);
|
|
5831
5837
|
},
|
|
5832
5838
|
agent: async (key, { dispatch, userId, sourceServerOrigin }) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getModelContextWindow
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-2MTE2PEH.js";
|
|
4
4
|
import {
|
|
5
5
|
isRecord
|
|
6
6
|
} from "./chunk-KUG52IAP.js";
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
PLATFORM_HOSTED_KIMI_K3_MODEL,
|
|
12
12
|
isFireworksKimiModel,
|
|
13
13
|
isNoloHostedProvider
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-CGFNDIKK.js";
|
|
15
15
|
import {
|
|
16
16
|
asTrimmedLowercaseString
|
|
17
17
|
} from "./chunk-QSJ3HFEF.js";
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
DEVIN_CONNECT_URL,
|
|
3
3
|
parseSseDataLineJson,
|
|
4
4
|
parseSseDataLineObject
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-3C2QLERX.js";
|
|
6
6
|
import {
|
|
7
7
|
applyChatCompletionDelta,
|
|
8
8
|
applyResponsesToolEvent,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
flushChatCompletionStream,
|
|
12
12
|
providerHttpFailure,
|
|
13
13
|
throwIfChatCompletionStreamFailed
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-L6EQV5OC.js";
|
|
15
15
|
import {
|
|
16
16
|
readSseFrames
|
|
17
17
|
} from "./chunk-HNUWUO75.js";
|
|
@@ -26,13 +26,13 @@ import {
|
|
|
26
26
|
hasImageInRuntimeMessages,
|
|
27
27
|
resolveAgentContextWindow,
|
|
28
28
|
stripImagePartsFromMessages
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-ANJTRG52.js";
|
|
30
30
|
import {
|
|
31
31
|
clipToolText,
|
|
32
32
|
resolveAgentImageInputSupport,
|
|
33
33
|
resolveHistoricalToolContentCap,
|
|
34
34
|
resolveToolOutputProfile
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-IYBIRCQV.js";
|
|
36
36
|
import {
|
|
37
37
|
applyShapingCounts,
|
|
38
38
|
attachProjectionFacts,
|
|
@@ -52,18 +52,21 @@ import {
|
|
|
52
52
|
finalizeAccumulatedToolCalls
|
|
53
53
|
} from "./chunk-56GBUMO5.js";
|
|
54
54
|
import {
|
|
55
|
+
CREDENTIAL_HYGIENE_RULE,
|
|
55
56
|
DELETE_SAFETY_RED_LINE,
|
|
56
57
|
PARALLEL_DISPATCH_DEFAULT_RULE,
|
|
57
58
|
PLATFORM_RISK_CONTROL_RULE,
|
|
58
59
|
TOOL_GUIDED_SECTION_ORDER,
|
|
60
|
+
buildConsultationModeBlock,
|
|
59
61
|
buildIdentityBlock,
|
|
60
62
|
buildRuntimeGuidanceBlocks,
|
|
61
63
|
detectDispatchIntent,
|
|
62
64
|
detectDispatchIntentFromMessages,
|
|
63
65
|
estimateContextTokens,
|
|
64
66
|
hashStablePrefixContent,
|
|
67
|
+
resolveResponseGuidelines,
|
|
65
68
|
resolveToolGuidedSections
|
|
66
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-3WIXU4XO.js";
|
|
67
70
|
import {
|
|
68
71
|
classifyUnparsableToolArgs,
|
|
69
72
|
collectStablePromptPrefix,
|
|
@@ -87,7 +90,7 @@ import {
|
|
|
87
90
|
toOpenAiCompatibleMessages,
|
|
88
91
|
toResponsesTools,
|
|
89
92
|
transferDowngradedToolTurnOrigin
|
|
90
|
-
} from "./chunk-
|
|
93
|
+
} from "./chunk-6TF64IF2.js";
|
|
91
94
|
import {
|
|
92
95
|
BRIDGE_STREAM_MAX_CHARS,
|
|
93
96
|
DEFAULT_READ_DIALOG_MAX_RESPONSE_CHARS,
|
|
@@ -116,7 +119,7 @@ import {
|
|
|
116
119
|
resolveEmptyAssistantFallbackMessage,
|
|
117
120
|
resolveEmptyAssistantOutcome,
|
|
118
121
|
resolveTruncatedReasoningTailLog
|
|
119
|
-
} from "./chunk-
|
|
122
|
+
} from "./chunk-ZWG3C7VI.js";
|
|
120
123
|
import {
|
|
121
124
|
COMPACTION_SUMMARY_SCHEMA_VERSION,
|
|
122
125
|
COMPACTION_SUMMARY_SYSTEM_PROMPT,
|
|
@@ -139,7 +142,7 @@ import {
|
|
|
139
142
|
sha256Hex,
|
|
140
143
|
truncateToolOutputForContext,
|
|
141
144
|
withProviderCallTimingFields
|
|
142
|
-
} from "./chunk-
|
|
145
|
+
} from "./chunk-2MTE2PEH.js";
|
|
143
146
|
import {
|
|
144
147
|
clipCompactText
|
|
145
148
|
} from "./chunk-5MMAK75Q.js";
|
|
@@ -172,7 +175,7 @@ import {
|
|
|
172
175
|
import {
|
|
173
176
|
buildProviderAuthHeaders,
|
|
174
177
|
buildProviderExecutionPlan
|
|
175
|
-
} from "./chunk-
|
|
178
|
+
} from "./chunk-SUKSWFLP.js";
|
|
176
179
|
import {
|
|
177
180
|
isRecord
|
|
178
181
|
} from "./chunk-KUG52IAP.js";
|
|
@@ -15098,7 +15101,7 @@ async function runWorkspaceCommand(args2) {
|
|
|
15098
15101
|
proc.stdin.write(args2.stdin);
|
|
15099
15102
|
proc.stdin.end();
|
|
15100
15103
|
}
|
|
15101
|
-
const label = deriveLabel(args2.command.join(" "));
|
|
15104
|
+
const label = args2.label?.trim() || deriveLabel(args2.command.join(" "));
|
|
15102
15105
|
const registry2 = getProcessRegistry();
|
|
15103
15106
|
if (typeof proc.pid === "number") {
|
|
15104
15107
|
registry2.add({
|
|
@@ -15343,6 +15346,10 @@ function buildExecShellToolDefinition(toolName = "execShell") {
|
|
|
15343
15346
|
background: {
|
|
15344
15347
|
type: "boolean",
|
|
15345
15348
|
description: "Immediately detach this command into a tracked background task (no 120s synchronous wait): returns {detached: true, taskId}, and on completion the platform resumes this conversation with a bounded result capsule (exitCode, duration, stdout/stderr tail). Default false. Use for finite jobs (tests, builds, batch) whose result you need later; NOT for dev servers/watchers \u2014 use launchProcess for those."
|
|
15349
|
+
},
|
|
15350
|
+
label: {
|
|
15351
|
+
type: "string",
|
|
15352
|
+
description: "Optional human-readable label for the resulting background task, shown in the task list and completion notices. Defaults to the command's last token, which is unhelpful for pipelines (e.g. '| tail -25' yields '-25')."
|
|
15346
15353
|
}
|
|
15347
15354
|
}
|
|
15348
15355
|
}
|
|
@@ -15391,7 +15398,8 @@ function normalizeExecShellInput(input) {
|
|
|
15391
15398
|
...login !== void 0 ? { login } : {},
|
|
15392
15399
|
...activity ? { activity } : {},
|
|
15393
15400
|
...record2.input !== void 0 ? { input: record2.input } : {},
|
|
15394
|
-
...background ? { background: true } : {}
|
|
15401
|
+
...background ? { background: true } : {},
|
|
15402
|
+
...typeof record2.label === "string" && record2.label.trim() ? { label: record2.label.trim() } : {}
|
|
15395
15403
|
};
|
|
15396
15404
|
}
|
|
15397
15405
|
throw new Error("execShell requires a non-empty command.");
|
|
@@ -15456,6 +15464,7 @@ var execShellCapability = {
|
|
|
15456
15464
|
abortSignal: ctx.abortSignal,
|
|
15457
15465
|
detachMs: background ? 0 : isImmediateDetachShellCommand({ command }) ? 0 : ctx.detachMs,
|
|
15458
15466
|
stdin: typeof normalized.input === "string" ? normalized.input : void 0,
|
|
15467
|
+
label: typeof normalized.label === "string" ? normalized.label : void 0,
|
|
15459
15468
|
// Ownership of the turn that invoked this command: an auto-detached
|
|
15460
15469
|
// command keeps its parent dialog so its terminal can resume that
|
|
15461
15470
|
// conversation (see processOwnership.ts). Absent ctx.owner = unowned.
|
|
@@ -18456,7 +18465,11 @@ async function executeToolCall(args2) {
|
|
|
18456
18465
|
...userInputText ? { userInput: userInputText } : {},
|
|
18457
18466
|
...input.runtimeContext ? { runtimeContext: input.runtimeContext } : {},
|
|
18458
18467
|
...args2.runToolNames ? { runToolNames: args2.runToolNames } : {},
|
|
18459
|
-
...input.abortSignal ? { abortSignal: input.abortSignal } : {}
|
|
18468
|
+
...input.abortSignal ? { abortSignal: input.abortSignal } : {},
|
|
18469
|
+
// 定档信号:来源只由 turn 输入推导,不让模型/参数层参与。
|
|
18470
|
+
// 三级判据见 plan §10——后台运行优先于子 run(后台派发的子 run 仍是
|
|
18471
|
+
// 无人值守的,按 automation 报更保守)。
|
|
18472
|
+
origin: input.background ? "automation" : input.runKind === "subtask" ? "agent" : "chat"
|
|
18460
18473
|
}, {
|
|
18461
18474
|
...input.abortSignal ? { abortSignal: input.abortSignal } : {},
|
|
18462
18475
|
...input.runtimeContext ? { runtimeContext: input.runtimeContext } : {}
|
|
@@ -19749,17 +19762,36 @@ async function runLocalAgentTurn(input) {
|
|
|
19749
19762
|
input.contextBlocks,
|
|
19750
19763
|
input.contextBlockScopes
|
|
19751
19764
|
);
|
|
19765
|
+
const responseGuidelines = resolveResponseGuidelines(
|
|
19766
|
+
input.responseViewport ?? "unknown"
|
|
19767
|
+
);
|
|
19768
|
+
const responseGuidelineScopes = [
|
|
19769
|
+
{ content: responseGuidelines.behavior, cacheScope: "session" },
|
|
19770
|
+
...responseGuidelines.presentation.trim().length > 0 ? [
|
|
19771
|
+
{
|
|
19772
|
+
content: responseGuidelines.presentation,
|
|
19773
|
+
cacheScope: "session"
|
|
19774
|
+
}
|
|
19775
|
+
] : []
|
|
19776
|
+
];
|
|
19752
19777
|
const mergedContextBlockScopes = [
|
|
19753
19778
|
// 删除安全红线:系统层最高优先级约束,位于所有块之前(含身份信息块),
|
|
19754
19779
|
// owner 要求常驻「根本提示词」的最顶部(2026-09-26 批量误删事故)。
|
|
19755
19780
|
{ content: DELETE_SAFETY_RED_LINE, cacheScope: "session" },
|
|
19781
|
+
// 凭据纪律:与红线同为系统层固定块,紧随其后(四条装配线同源)。
|
|
19782
|
+
{ content: CREDENTIAL_HYGIENE_RULE, cacheScope: "session" },
|
|
19756
19783
|
// 并行是默认:系统层固定块,紧随红线(localLoop 无 static 作用域,用 session 占位,
|
|
19757
19784
|
// 「最顶」由数组首位保证——与红线同一约定)。
|
|
19758
19785
|
{ content: PARALLEL_DISPATCH_DEFAULT_RULE, cacheScope: "session" },
|
|
19759
19786
|
// 平台风控纪律:无条件系统层块,沿用 session 占位约定。
|
|
19760
19787
|
{ content: PLATFORM_RISK_CONTROL_RULE, cacheScope: "session" },
|
|
19788
|
+
{ content: buildConsultationModeBlock(), cacheScope: "session" },
|
|
19761
19789
|
{ content: identityBlock, cacheScope: "session" },
|
|
19762
19790
|
...guidanceScopes,
|
|
19791
|
+
// 回复行为准则:local 线(CLI 非交互 / 桌面 / TUI)的唯一注入边界。
|
|
19792
|
+
// 行为段恒注入;排版段只在宿主声明了可确认的展示能力时追加一份
|
|
19793
|
+
// (unknown = 拿不到视口信息,不得猜成宽屏或窄屏)。两块同属 session scope。
|
|
19794
|
+
...responseGuidelineScopes,
|
|
19763
19795
|
...callerScopes
|
|
19764
19796
|
];
|
|
19765
19797
|
loopTiming.mark("buildContextBlocks", 0);
|
|
@@ -21669,7 +21701,7 @@ function buildLoadSkillExecutor(args2) {
|
|
|
21669
21701
|
const { resolveSkillByName } = await import("./skillDiscovery-QC35EQY4.js");
|
|
21670
21702
|
const resolved = resolveSkillByName(args2.cwd, name);
|
|
21671
21703
|
if (!resolved) {
|
|
21672
|
-
const { resolveBuiltinSkillByName } = await import("./builtinSkillRegistry-
|
|
21704
|
+
const { resolveBuiltinSkillByName } = await import("./builtinSkillRegistry-H3AY27TR.js");
|
|
21673
21705
|
const builtin = resolveBuiltinSkillByName(name);
|
|
21674
21706
|
if (builtin) {
|
|
21675
21707
|
return {
|
|
@@ -10,9 +10,7 @@ var OAUTH_PROVIDER_REFS = [
|
|
|
10
10
|
"antigravity",
|
|
11
11
|
"claude",
|
|
12
12
|
"cursor",
|
|
13
|
-
"devin"
|
|
14
|
-
"workbuddy",
|
|
15
|
-
"workbuddy-ai"
|
|
13
|
+
"devin"
|
|
16
14
|
];
|
|
17
15
|
var METERED_API_KEY_REF_PREFIX = "api-key:";
|
|
18
16
|
var normalizeRef = (ref) => typeof ref === "string" ? ref.trim().toLowerCase() : "";
|