nolo-cli 0.33.0-alpha.9 → 0.34.0-alpha.3
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-2WR4RTZZ.js → _executeModel-TMUXL7J5.js} +64 -65
- package/{action-OQWPNKAH.js → action-KMBZ3LCZ.js} +12 -12
- package/{addContentAction-YVINZQTF.js → addContentAction-KQ44UT2U.js} +10 -10
- package/{addDialogAgentAction-6IOCIEPI.js → addDialogAgentAction-ILSDCMYL.js} +9 -9
- package/{agentDeleteCommand-H22WRYC6.js → agentDeleteCommand-KA2IQAPG.js} +40 -39
- package/{agentEmailCommands-DGJVCMCG.js → agentEmailCommands-UIYBGCZW.js} +74 -75
- package/{agentListCommands-6NWMLIMQ.js → agentListCommands-L6JNUOLH.js} +47 -37
- package/{agentMachineCommands-5MUO6RDI.js → agentMachineCommands-5CQW5NZR.js} +37 -36
- package/agentProviderCommands-65ZC2WB4.js +122 -0
- package/{agentPullCommand-YH5GEBK4.js → agentPullCommand-TSWAJPS2.js} +1 -1
- package/agentRecordCommands-VUDJQIZH.js +112 -0
- package/agentRunCommand-EJWYF3BL.js +132 -0
- package/{agentRunControl-SCIVRZWX.js → agentRunControl-7MUPSYDQ.js} +7 -1
- package/{agentRuntimeLocal-PRAR3NCW.js → agentRuntimeLocal-XXBMDMBU.js} +33 -33
- package/{agentSlice-AMDSTXP5.js → agentSlice-HTIEYKIU.js} +12 -12
- package/agentSuperviseCommands-MKWW3ICX.js +640 -0
- package/{appDeleteCommands-L5PKC42V.js → appDeleteCommands-OUBL6VHB.js} +35 -34
- package/{appDeployCommands-3J7Z4XWV.js → appDeployCommands-BZSS2MX4.js} +35 -34
- package/{appDeployStatusCommands-YTRPXE72.js → appDeployStatusCommands-P2ZQOY5X.js} +35 -34
- package/{appGetCommands-JVXV5WXD.js → appGetCommands-WCFWQZZM.js} +35 -34
- package/{appListCommands-7KDEOJSO.js → appListCommands-FVJ3QNL7.js} +35 -34
- package/{authCommand-6Y5LTMZB.js → authCommand-B2XRHNJH.js} +19 -19
- package/{authCommands-EAPFGNHN.js → authCommands-GWABTFMR.js} +6 -6
- package/{chatQueueReduxAdapter-ZKSS6XRV.js → chatQueueReduxAdapter-ZP2ZS63U.js} +28 -28
- package/{chunk-UM4H3URE.js → chunk-23KKIMD5.js} +7 -7
- package/chunk-2BWU4ORW.js +2574 -0
- package/{chunk-2UECQ7RE.js → chunk-3AOLVADY.js} +1 -1
- package/{chunk-M2YMQOLC.js → chunk-4APLX2RT.js} +75 -10
- package/{chunk-ZHYK3N56.js → chunk-4AWH4LQA.js} +3 -1
- package/{chunk-3GZXL6FM.js → chunk-4DMPISV6.js} +7 -3
- package/{chunk-BQ3OHLR5.js → chunk-5GQ6XCJY.js} +1217 -691
- package/{chunk-GOIDVXK5.js → chunk-5LDKQUOT.js} +21 -8
- package/{chunk-OIQPORYI.js → chunk-64KIQZA2.js} +175 -2
- package/{chunk-6XIE5ZGI.js → chunk-6HIGYUBQ.js} +1 -1
- package/chunk-6XG52ZQ6.js +146 -0
- package/{chunk-FMEVI5TG.js → chunk-7CH6U3FL.js} +1 -1
- package/chunk-AA2YUJNV.js +54 -0
- package/{chunk-7INB7NXF.js → chunk-AE5GVFMG.js} +294 -54
- package/{chunk-UNOTBWZZ.js → chunk-B6H5XCT2.js} +8 -8
- package/{chunk-NNWHHCVP.js → chunk-BMB563Y6.js} +10 -4
- package/{chunk-DFUPZE6V.js → chunk-C6ELZQ7H.js} +249 -34
- package/{chunk-7KNERA53.js → chunk-E2OQ5N2F.js} +87 -13
- package/{chunk-6HYVJV7B.js → chunk-ESHYE7WU.js} +2 -1
- package/{chunk-KHCLMKZZ.js → chunk-EY7V7REW.js} +280 -6
- package/{chunk-JZPBVBIY.js → chunk-FD36SCCD.js} +19 -8
- package/{chunk-DKMOY3QI.js → chunk-FGLKRJDI.js} +54 -3
- package/{chunk-MQWVAOIU.js → chunk-FT4XBCK4.js} +33 -158
- package/{chunk-2QTEYCR7.js → chunk-FTM4KUOZ.js} +17 -17
- package/{chunk-U4TRT5V4.js → chunk-GEPHJJW4.js} +1 -1
- package/{chunk-7YYHKBJP.js → chunk-GKHV4UH5.js} +1 -1
- package/{chunk-2IVEXF7P.js → chunk-GUYMR3JL.js} +6 -33
- package/{chunk-YDTYDA5W.js → chunk-GZRMWK5R.js} +6 -4
- package/{chunk-X664KVEV.js → chunk-HHBXCRJS.js} +204 -123
- package/{chunk-AN7DGYMW.js → chunk-I7VDDN45.js} +4579 -3131
- package/{chunk-DSBGWT2C.js → chunk-IEEEWIVO.js} +10 -10
- package/{chunk-75U775RZ.js → chunk-IFS5CUEH.js} +1 -1
- package/{chunk-WLH5BAKX.js → chunk-IIOHYLIG.js} +9 -4
- package/{chunk-UEAUAXYS.js → chunk-ILZY5B4U.js} +2063 -214
- package/chunk-IMHO5LC6.js +370 -0
- package/{chunk-ADLYMQB6.js → chunk-IZCHPD7T.js} +52 -3
- package/{chunk-ITIA6OAQ.js → chunk-IZNJDUJ4.js} +5 -5
- package/{chunk-X2DAEZ3X.js → chunk-J5NMOM35.js} +1 -1
- package/{chunk-RPRRIFXV.js → chunk-JI2TIPLP.js} +1 -1
- package/{chunk-EGRJC4ZN.js → chunk-JIADXJYU.js} +1 -1
- package/{chunk-IHEC7VBF.js → chunk-K4KIFRIN.js} +1 -1
- package/{chunk-WJSW43QZ.js → chunk-L3JWI7WX.js} +0 -1
- package/{chunk-3RUW3ONU.js → chunk-LD6Y6RJY.js} +4 -4
- package/chunk-M3JQWYBC.js +387 -0
- package/{chunk-GM6PU7B6.js → chunk-MEYIRKDN.js} +0 -1
- package/{chunk-6YXDOOSH.js → chunk-MGIHZ5CJ.js} +4 -4
- package/{chunk-4F5M2MW5.js → chunk-MJWX4JQO.js} +2 -2
- package/{chunk-Q5ITEGIN.js → chunk-N4XRDM26.js} +1 -1
- package/{chunk-5CS33IBL.js → chunk-NQ4N4IGO.js} +11 -12
- package/{chunk-ZZ2MH7LE.js → chunk-O6OSWFZQ.js} +0 -1
- package/{chunk-RJKIB55Y.js → chunk-OSCSEJJR.js} +15 -8
- package/{chunk-HUCT7HID.js → chunk-P2I7ELDC.js} +3 -3
- package/{chunk-BXPBZVRE.js → chunk-PILJX4DH.js} +285 -251
- package/{chunk-SCUETSRP.js → chunk-PV734VZX.js} +1 -1
- package/{chunk-XLLTJXAD.js → chunk-QI3CHZUT.js} +39 -2672
- package/{chunk-WNHST4IE.js → chunk-RKRXAL3V.js} +5451 -5013
- package/{chunk-7E72JMBB.js → chunk-SMPAUSX5.js} +46 -5
- package/{chunk-5X4GQ53C.js → chunk-TLBZMLLJ.js} +7 -7
- package/{chunk-ASDXPOJH.js → chunk-U6QQLXWI.js} +1 -1
- package/{chunk-NUO3QFWD.js → chunk-UNHKVD2N.js} +1 -1
- package/{chunk-GE6IWA5N.js → chunk-UNZDCI3O.js} +126 -1
- package/{chunk-CPYYM4RJ.js → chunk-V5GA74HI.js} +19 -5
- package/{chunk-FXFGNOT2.js → chunk-VFVCYIRQ.js} +1 -1
- package/{chunk-G7E4NWFE.js → chunk-W445DPVT.js} +1 -1
- package/{chunk-EMW55KKX.js → chunk-WBZE7C6S.js} +1 -1
- package/{chunk-3UG2IIZ3.js → chunk-WN5AJG5I.js} +1 -1
- package/{chunk-KSRFVP36.js → chunk-WRN7L5CS.js} +1 -1
- package/{chunk-GJXRIOLS.js → chunk-WRP5TTM6.js} +4 -84
- package/chunk-X2K2JSO4.js +163 -0
- package/{chunk-OR2HNLVO.js → chunk-X6EN3KJX.js} +279 -477
- package/{chunk-VWY2CZD2.js → chunk-XMFDQYWA.js} +3 -3
- package/{chunk-IKWTTKWG.js → chunk-XQES6LXQ.js} +2 -2
- package/{chunk-IR6W62Q6.js → chunk-XT73C4VH.js} +18 -21
- package/{chunk-7L5CQQIT.js → chunk-Y5W623XU.js} +15 -15
- package/{chunk-RY57GLGW.js → chunk-YPREESF4.js} +42 -5
- package/{chunk-BQXOGBFN.js → chunk-YZ2WE6CW.js} +2 -2
- package/{chunk-DNQK7M7K.js → chunk-Z7COG62J.js} +4 -4
- package/{chunk-3WXRAHCG.js → chunk-ZBB3MZR3.js} +3 -3
- package/{cliExecutor-DW3PHGEL.js → cliExecutor-BBUVQU4L.js} +2 -2
- package/{clipboardy-MMBYVRLF.js → clipboardy-PRUHGPGC.js} +4 -3
- package/{codingSkills-DY5MINPG.js → codingSkills-6F4EQFCM.js} +4 -5
- package/cooldownCommands-C2SZLEEO.js +90 -0
- package/{createAgentAutomationAction-GVSJL2CI.js → createAgentAutomationAction-TGUXUZCY.js} +28 -30
- package/createDialogAction-FD5AEOUF.js +58 -0
- package/{createPageAction-M2VDKBYS.js → createPageAction-NPC3LYNK.js} +31 -34
- package/{dbSlice-UI2VCBLG.js → dbSlice-PIQGICNM.js} +9 -9
- package/{deleteFile-XQXPBFFB.js → deleteFile-NPZ64DFN.js} +4 -4
- package/{dialogCommands-26DBYNBT.js → dialogCommands-ZF2RSNCG.js} +37 -36
- package/{dialogSlice-FFGLRCBL.js → dialogSlice-6BINHWQT.js} +27 -27
- package/dist-VODFSGNG.js +7442 -0
- package/{docCreateCommands-F2ASWG6B.js → docCreateCommands-4VQ5MOHP.js} +36 -36
- package/{docDeleteCommands-A4URDZPI.js → docDeleteCommands-M7WLNVPB.js} +37 -37
- package/{docReadCommands-DO6VHDZD.js → docReadCommands-6LU6P2WT.js} +36 -36
- package/{docStore-EDAE7RNT.js → docStore-SIUFLABN.js} +29 -31
- package/{docUpdateCommands-ZTXZ3RTP.js → docUpdateCommands-S2LX4ENL.js} +39 -39
- package/{fetchMessages-7QRCCRYK.js → fetchMessages-CUEFN4GQ.js} +4 -4
- package/{getPricing-L2ENXWHV.js → getPricing-P3E2WRIH.js} +5 -5
- package/{handleSendMessageAction-CIRLGHOC.js → handleSendMessageAction-QVG5YNZY.js} +29 -29
- package/index.js +92 -77
- package/{localDialogRead-SLMPV5SK.js → localDialogRead-P7CHFMIC.js} +1 -1
- package/{localRuntimeAuthority-E3R24J4T.js → localRuntimeAuthority-S77B5QVB.js} +6 -2
- package/{localRuntimeDb-DDZCJFQZ.js → localRuntimeDb-N3H3HQ7G.js} +1 -1
- package/{machineCommands-NIQNCYJV.js → machineCommands-OSEBN7BZ.js} +76 -77
- package/{machineInfo-M6KB6HZN.js → machineInfo-66ZFUMLE.js} +1 -1
- package/{machineWsRunDispatch-EMTSQGAR.js → machineWsRunDispatch-NTJQCIIF.js} +68 -69
- package/{models-OX2S5C6Q.js → models-L7S2EKPM.js} +2 -2
- package/package.json +1 -1
- package/{read-2VHEHCAN.js → read-6C2XD3YZ.js} +5 -5
- package/{readDocTool-CSWD6NPC.js → readDocTool-Y7AB365O.js} +1 -1
- package/{readlineWorkspace-A2JBJWLI.js → readlineWorkspace-JPME5S7A.js} +4860 -3476
- package/{removeDialogAgentAction-2T7BPM3T.js → removeDialogAgentAction-KG5WMJRZ.js} +13 -13
- package/{runAgentClientLoop-BV4736ED.js → runAgentClientLoop-SOKEXCUF.js} +61 -61
- package/{runtimeDoctorCommands-KIKM6BIO.js → runtimeDoctorCommands-HT4O2PXL.js} +6 -6
- package/{setDialogExtraReferencesAction-GPT37HTW.js → setDialogExtraReferencesAction-O2NLXMSM.js} +10 -10
- package/{setPrimaryDialogAgentAction-3746P7IW.js → setPrimaryDialogAgentAction-FYYUY7PB.js} +13 -13
- package/{settingSlice-FIFOQ6OR.js → settingSlice-GPLI6E3M.js} +11 -11
- package/{skillDiscovery-KLLKXPUO.js → skillDiscovery-GPUDHDTZ.js} +3 -4
- package/{slateUtils-VO2FU36K.js → slateUtils-RIZES3PV.js} +1 -1
- package/{spaceCommands-AYZQHDB3.js → spaceCommands-Z5JLMFFJ.js} +223 -37
- package/{spaceSlice-43BNF22B.js → spaceSlice-Z3BGCLGX.js} +28 -30
- package/{streamAgentChatTurn-OLLRSITV.js → streamAgentChatTurn-INF5RGK4.js} +115 -129
- package/{switchDialogAgentAction-MQTUTQHL.js → switchDialogAgentAction-GH5P6Q3Z.js} +9 -9
- package/{chunk-IDAU4UFS.js → syncMapping-N6RGXGBW.js} +11 -11
- package/{tableCommands-QE47K72R.js → tableCommands-PQUJ55AS.js} +3 -3
- package/{tools-2SI3FXLL.js → tools-ZELMSJZ3.js} +45 -47
- package/{tuiSummaryLlmCaller-EAWQ3IZX.js → tuiSummaryLlmCaller-LH7F2SP7.js} +18 -18
- package/{updateCommands-AK2RDOFR.js → updateCommands-MNDUIKN7.js} +2 -2
- package/{updateDialogTitleAction-YJEQFYOA.js → updateDialogTitleAction-EDUCIB7G.js} +31 -33
- package/agentRecordCommands-YMGKT2WF.js +0 -113
- package/agentRunCommand-LYEMVQJH.js +0 -131
- package/chunk-AETZ7AD6.js +0 -274
- package/chunk-D5JI6VDM.js +0 -1800
- package/chunk-M3JEW6N6.js +0 -193
- package/chunk-ZURFOV5J.js +0 -105
- package/chunk-ZWS6DUHX.js +0 -480
- package/createDialogAction-VVR46Q2A.js +0 -61
- package/syncMapping-RK2MANUX.js +0 -43
- package/{chunk-KMSZPTM6.js → chunk-2WKUUY2E.js} +3 -3
- package/{chunk-CWMSB67P.js → chunk-AGGIDPCZ.js} +0 -0
- package/{chunk-SAQQLJZ5.js → chunk-JDSUTNYY.js} +3 -3
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isImageUrlPart
|
|
3
|
+
} from "./chunk-BMB563Y6.js";
|
|
4
|
+
import {
|
|
5
|
+
AGENT_SELECTION_PRIORITY_INSTRUCTIONS
|
|
6
|
+
} from "./chunk-IZCHPD7T.js";
|
|
7
|
+
import {
|
|
8
|
+
canonicalizeToolNames
|
|
9
|
+
} from "./chunk-O6OSWFZQ.js";
|
|
10
|
+
import {
|
|
11
|
+
asTrimmedLowercaseString
|
|
12
|
+
} from "./chunk-QSJ3HFEF.js";
|
|
13
|
+
import {
|
|
14
|
+
asTrimmedString
|
|
15
|
+
} from "./chunk-3EUW3WEO.js";
|
|
16
|
+
|
|
17
|
+
// packages/agent-runtime/identityBlock.ts
|
|
18
|
+
var buildIdentityBlock = (input) => {
|
|
19
|
+
const lines = [
|
|
20
|
+
"--- \u8EAB\u4EFD\u4FE1\u606F ---",
|
|
21
|
+
asTrimmedString(input.agentName) ? `\u540D\u79F0: ${asTrimmedString(input.agentName)}` : "",
|
|
22
|
+
asTrimmedString(input.agentId) ? `ID: ${asTrimmedString(input.agentId)}` : "",
|
|
23
|
+
asTrimmedString(input.model) ? `\u6A21\u578B: ${asTrimmedString(input.model)}` : ""
|
|
24
|
+
].filter(Boolean);
|
|
25
|
+
return lines.join("\n");
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// packages/agent-runtime/contextLayerContract.ts
|
|
29
|
+
var buildContextLayerContractBlock = (options = {}) => {
|
|
30
|
+
const lines = [
|
|
31
|
+
"--- \u77E5\u8BC6\u5B58\u50A8\u7EA6\u5B9A ---",
|
|
32
|
+
"\u4E0D\u8981\u628A\u6240\u6709\u4FE1\u606F\u585E\u8FDB\u540C\u4E00\u5C42\uFF0C\u5408\u7406\u5229\u7528\u5206\u5C42\u8FB9\u754C\uFF1A",
|
|
33
|
+
"1. memory layer\uFF1A\u77ED\u5230\u4E2D\u671F\u3001\u53EF\u590D\u7528\u4F46\u4E0D\u5FC5\u6C38\u4E45\u6302\u8F7D\u7684\u504F\u597D\u3001\u8FD1\u671F\u5171\u8BC6\u4E0E\u7ECF\u9A8C\uFF08\u77ED\u3001\u53EF\u68C0\u7D22\u3001\u53EF\u66FF\u6362\uFF09\u3002",
|
|
34
|
+
"2. knowledge layer\uFF1A\u7A33\u5B9A\u89C4\u5219\u3001\u957F\u671F\u6709\u6548\u4E8B\u5B9E\u4E0E\u6BCF\u8F6E\u4F9D\u8D56\u7684\u8BF4\u660E\uFF08\u901A\u8FC7 prompt / references \u81EA\u52A8\u52A0\u8F7D\uFF09\u3002",
|
|
35
|
+
"3. doc layer\uFF1A\u9700\u8DE8\u8F6E\u6B21\u7EF4\u62A4\u7684\u5916\u90E8\u5DE5\u4F5C\u53F0\uFF08runbook\u3001mission\u3001incident\u3001checkpoint\u3001idea backlog\u3001experiment log \u7B49\uFF0C\u663E\u5F0F\u6309\u9700\u8BFB\u5199\uFF09\u3002",
|
|
36
|
+
"",
|
|
37
|
+
"\u5199\u5165\u539F\u5219\uFF1A\u4E34\u65F6\u6B65\u9AA4\u3001\u539F\u59CB\u957F\u65E5\u5FD7\u3001\u4E00\u6B21\u6027\u601D\u8DEF\u4E0D\u8981\u76F4\u63A5\u5199\u8FDB memory/knowledge\uFF1B\u7A33\u5B9A\u89C4\u5219\u6C89\u6DC0\u5230 knowledge\u3001\u53EF\u590D\u7528\u504F\u597D/\u5171\u8BC6\u6C89\u6DC0\u5230 memory\u3001\u8DE8\u8F6E\u63A5\u529B\u72B6\u6001/\u6587\u6863\u5199\u5165 doc\u3002"
|
|
38
|
+
];
|
|
39
|
+
if (options.hasRememberMemoryTool) {
|
|
40
|
+
lines.push(
|
|
41
|
+
"- \u9047\u5230\u5BF9\u672A\u6765\u660E\u663E\u6709\u5E2E\u52A9\u7684\u504F\u597D/\u5171\u8BC6\u65F6\u8C03\u7528 rememberMemory\uFF08\u5199\u6210\u7B80\u6D01\u53EF\u590D\u7528\u7684\u4E00\u53E5\u8BDD\uFF1B\u7ED1\u5B9A space \u4E14\u5C5E\u5171\u4EAB\u89C4\u5219\u65F6\u4F20 scope=space\uFF0C\u8BB0\u4E3A space memory\uFF09\u3002"
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
if (options.hasDocTools) {
|
|
45
|
+
lines.push(
|
|
46
|
+
"- \u4EFB\u52A1\u9700 24h \u8FDE\u7EED\u8FD0\u884C\u3001\u8DE8 dialog \u63A5\u529B\u6216\u5171\u8BFB\u65F6\uFF0C\u4F18\u5148\u628A mission / runbook / incident / checkpoint / idea backlog / experiment log \u5199\u5165 doc layer\u3002"
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
return lines.join("\n");
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// packages/agent-runtime/startupProtocol.ts
|
|
53
|
+
var buildStartupProtocolBlock = (options = {}) => {
|
|
54
|
+
const lines = [
|
|
55
|
+
"--- \u542F\u52A8\u534F\u8BAE ---",
|
|
56
|
+
"\u542F\u52A8\u987A\u5E8F\uFF1A\u5148\u8BFB policy / knowledge \u2192 \u63D0\u70BC current mission \u2192 \u5438\u6536 recent memory\uFF08\u53EA\u7559\u5BF9\u672C\u8F6E\u6709\u7528\u7684\uFF09\u2192 \u9700\u8981\u8DE8\u8F6E\u63A5\u529B\u65F6\u518D\u8BFB doc\u3002",
|
|
57
|
+
"\u7B2C\u4E00\u6B21\u5DE5\u5177\u8C03\u7528\u524D\u5185\u5316 current_goal / constraints / missing_facts / next_action \u56DB\u9879\u5373\u53EF\u5F00\u59CB\u884C\u52A8\u3002",
|
|
58
|
+
"\u51B3\u7B56\u89C4\u5219\uFF1Apolicy/knowledge \u591F\u5C31\u76F4\u63A5\u7B54\u4E0D\u4E71\u8C03\u5DE5\u5177\uFF1Brecent memory \u4E0E\u5F53\u524D\u8F93\u5165\u51B2\u7A81\u4EE5\u8F93\u5165\u4E3A\u51C6\uFF1B\u4F9D\u8D56\u5916\u90E8\u73AF\u5883/\u6587\u4EF6/\u4E8B\u5B9E\u5148\u9A8C\u8BC1\u518D\u884C\u52A8\u3001\u5C0F\u6B65\u63A8\u8FDB\u3002"
|
|
59
|
+
];
|
|
60
|
+
if (options.hasCheckEnvTool || options.hasExecShellTool) {
|
|
61
|
+
lines.push(
|
|
62
|
+
"- \u4EFB\u52A1\u6D89\u53CA\u547D\u4EE4\u6267\u884C\u3001shell \u8BED\u6CD5\u3001\u8DEF\u5F84\u7EA6\u5B9A\u6216\u670D\u52A1\u72B6\u6001\u4E14\u4E8B\u5B9E\u4E0D\u660E\u786E\u65F6\uFF0C\u5148\u786E\u8BA4\u73AF\u5883\u3002"
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
if (options.hasCheckEnvTool) {
|
|
66
|
+
lines.push(
|
|
67
|
+
"- \u73AF\u5883\u4E0D\u660E\u786E\u65F6\uFF0C\u4F18\u5148\u8C03\u7528 checkEnv({ check: 'context' })\uFF0C\u518D\u51B3\u5B9A\u540E\u7EED\u547D\u4EE4\u548C\u5DE5\u5177\u8DEF\u5F84\u3002"
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
if (options.hasExecShellTool) {
|
|
71
|
+
lines.push(
|
|
72
|
+
"- \u6267\u884C\u547D\u4EE4\u65F6\u6839\u636E\u73AF\u5883\u9009 shell\uFF08Windows \u9ED8\u8BA4 PowerShell\uFF0CLinux/macOS \u9ED8\u8BA4 bash\uFF09\uFF1B\u6536\u96C6\u591A\u4E2A\u53EA\u8BFB\u4E8B\u5B9E\u4F18\u5148\u5408\u5E76\u4E3A\u4E00\u6B21 shell \u590D\u5408\u8C03\u7528\uFF0C\u907F\u514D\u62C6\u6210\u7EC6\u788E\u63A2\u9488\u3002"
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
return lines.join("\n");
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// packages/agent-runtime/runtimeGuidance.ts
|
|
79
|
+
var normalizeToolName = (name) => name.replace(/[-_]/g, "").toLowerCase();
|
|
80
|
+
var hasAnyTool = (normalizedTools, candidates) => candidates.some((candidate) => normalizedTools.has(normalizeToolName(candidate)));
|
|
81
|
+
var hasAllTools = (normalizedTools, candidates) => candidates.every((candidate) => normalizedTools.has(normalizeToolName(candidate)));
|
|
82
|
+
var buildEmailRegistrationWorkflowBlock = (enabled) => {
|
|
83
|
+
if (!enabled) return "";
|
|
84
|
+
return [
|
|
85
|
+
"--- \u90AE\u7BB1\u9A8C\u8BC1\u7801\u6CE8\u518C\u6D41\u7A0B ---",
|
|
86
|
+
"\u5F53\u7528\u6237\u8981\u6C42\u4F60\u6CE8\u518C\u7F51\u7AD9\u8D26\u53F7\u65F6\uFF0C\u53EA\u5141\u8BB8\u5904\u7406\u7528\u6237\u660E\u786E\u6307\u5B9A\u7684\u5F53\u524D\u76EE\u6807\u7F51\u7AD9\uFF0C\u4E0D\u8981\u81EA\u884C\u6269\u5C55\u5230\u5176\u4ED6\u7F51\u7AD9\u3001\u6279\u91CF\u6CE8\u518C\u6216\u89C4\u907F\u5E73\u53F0\u98CE\u63A7\u3002",
|
|
87
|
+
"",
|
|
88
|
+
"\u5206\u9636\u6BB5\u534F\u8BAE\uFF1Adiscover before acting -> assess supportability -> register -> verify -> closeout\u3002",
|
|
89
|
+
"",
|
|
90
|
+
"\u63A8\u8350\u6D41\u7A0B\uFF1A",
|
|
91
|
+
"1. discover before acting\uFF1A\u5148\u7528 browser_openSession / browser_readContent \u9605\u8BFB\u9875\u9762\uFF0C\u786E\u8BA4\u76EE\u6807\u6CE8\u518C\u9875 URL\u3001\u8D26\u53F7\u7528\u9014\u3001\u5FC5\u586B\u9879\u548C\u505C\u6B62\u6761\u4EF6\uFF1B\u4E0D\u8981\u4E00\u6253\u5F00\u9875\u9762\u5C31\u76F2\u70B9\u6309\u94AE\u3002\u5982\u679C\u7F3A\u5C11\u76EE\u6807\u7F51\u7AD9\uFF0C\u5148\u8BE2\u95EE\u7528\u6237\u3002",
|
|
92
|
+
"2. assess supportability\uFF1A\u5148\u5224\u65AD\u8BE5\u6D41\u7A0B\u662F\u5426\u652F\u6301\u5F53\u524D\u53D7\u63A7\u81EA\u52A8\u5316\u3002\u9047\u5230 CAPTCHA\u3001\u624B\u673A\u53F7\u9A8C\u8BC1\u3001\u652F\u4ED8\u3001\u8EAB\u4EFD/KYC\u3001OAuth-only\u3001\u670D\u52A1\u6761\u6B3E\u786E\u8BA4\u3001\u6216\u4EFB\u4F55\u770B\u8D77\u6765\u50CF\u89C4\u907F\u98CE\u63A7\u7684\u6B65\u9AA4\u65F6\uFF0C\u5FC5\u987B\u7ACB\u5373\u505C\u6B62\u5E76\u5411\u7528\u6237\u8BF4\u660E blockingReason\uFF1B\u4E0D\u8981\u786C\u95EF\u3002",
|
|
93
|
+
"3. register\uFF1A\u53EA\u6709\u5728\u786E\u8BA4\u652F\u6301\u540E\uFF0C\u624D\u4F7F\u7528 email_provision_identity \u4E3A\u5F53\u524D agent \u751F\u6210\u53D7\u63A7\u57DF\u540D\u90AE\u7BB1\u8EAB\u4EFD\uFF0C\u518D\u4F7F\u7528 browser_openSession / browser_typeText / browser_click / browser_readContent \u586B\u5199\u5E76\u63D0\u4EA4\u6CE8\u518C\u8868\u5355\u3002",
|
|
94
|
+
"4. verify\uFF1A\u63D0\u4EA4\u540E\u4F7F\u7528 email_wait_for \u7B49\u5F85\u8BE5 agent \u6536\u4EF6\u7BB1\u91CC\u7684\u9A8C\u8BC1\u90AE\u4EF6\uFF0C\u518D\u7528 email_extract_verification \u63D0\u53D6\u9A8C\u8BC1\u7801\u6216\u9A8C\u8BC1\u94FE\u63A5\uFF0C\u56DE\u586B\u9A8C\u8BC1\u7801\u6216\u6253\u5F00\u9A8C\u8BC1\u94FE\u63A5\u5B8C\u6210\u9A8C\u8BC1\u3002",
|
|
95
|
+
"5. closeout\uFF1A\u65E0\u8BBA\u6210\u529F\u8FD8\u662F\u5931\u8D25\u90FD\u8981 always close sessions\uFF0C\u4E3B\u52A8\u6E05\u7406\u6D4F\u89C8\u5668\u4F1A\u8BDD\uFF08\u4F8B\u5982 browser_closeSession\uFF09\u3002\u5982\u679C\u6D41\u7A0B\u5931\u8D25\uFF0C\u5FC5\u987B\u660E\u786E failedStage \u4E0E blockingReason\uFF0C\u5E76\u8BF4\u660E\u53EF\u6062\u590D\u9009\u9879\uFF1B\u4E0D\u8981\u76F2\u76EE\u5C1D\u8BD5\u65E0\u5173\u7F51\u7AD9\u6216\u7ED5\u8FC7\u9A8C\u8BC1\u3002",
|
|
96
|
+
"6. \u6700\u7EC8\u53EA\u5728\u5BF9\u8BDD\u4E2D\u8FD4\u56DE\u8D26\u53F7\u3001\u90AE\u7BB1\u548C\u4E00\u6B21\u6027\u751F\u6210\u7684\u5BC6\u7801\uFF1B\u4E0D\u8981\u6301\u4E45\u5316\u5BC6\u7801\uFF0C\u4E0D\u8981\u5199\u5165 agent metadata\u3001\u6570\u636E\u5E93\u3001\u6587\u6863\u6216\u8BB0\u5FC6\u3002",
|
|
97
|
+
"",
|
|
98
|
+
"\u5FC5\u987B\u6682\u505C\u5E76\u8BE2\u95EE\u7528\u6237\u7684\u60C5\u51B5\uFF1ACAPTCHA\u3001\u624B\u673A\u53F7\u9A8C\u8BC1\u3001\u652F\u4ED8\u3001\u8EAB\u4EFD/KYC\u3001OAuth \u6388\u6743\u3001OAuth-only\u3001\u670D\u52A1\u6761\u6B3E\u786E\u8BA4\u3001\u6216\u4EFB\u4F55\u770B\u8D77\u6765\u50CF\u89C4\u907F\u98CE\u63A7\u7684\u6B65\u9AA4\u3002",
|
|
99
|
+
"\u5982\u679C\u6D41\u7A0B\u5931\u8D25\uFF0C\u8BF4\u660E failedStage\u3001blockingReason \u548C\u53EF\u6062\u590D\u9009\u9879\uFF0C\u4E0D\u8981\u76F2\u76EE\u5C1D\u8BD5\u65E0\u5173\u7F51\u7AD9\u6216\u7ED5\u8FC7\u9A8C\u8BC1\u3002"
|
|
100
|
+
].join("\n");
|
|
101
|
+
};
|
|
102
|
+
var resolveRuntimeGuidanceToolOptions = (tools = []) => {
|
|
103
|
+
const normalizedTools = canonicalizeToolNames(tools);
|
|
104
|
+
const normalizedToolSet = new Set(normalizedTools.map(normalizeToolName));
|
|
105
|
+
const hasBrowserTools = hasAllTools(normalizedToolSet, [
|
|
106
|
+
"browser_openSession",
|
|
107
|
+
"browser_readContent",
|
|
108
|
+
"browser_typeText",
|
|
109
|
+
"browser_click",
|
|
110
|
+
"browser_closeSession"
|
|
111
|
+
]);
|
|
112
|
+
const hasBrowserProbe = hasAnyTool(normalizedToolSet, ["browser_probePage", "browserProbePage"]);
|
|
113
|
+
const hasEmailRegistrationTools = hasAllTools(normalizedToolSet, [
|
|
114
|
+
"email_provision_identity",
|
|
115
|
+
"email_wait_for",
|
|
116
|
+
"email_extract_verification"
|
|
117
|
+
]);
|
|
118
|
+
return {
|
|
119
|
+
hasCheckEnvTool: normalizedTools.includes("checkEnv"),
|
|
120
|
+
hasExecShellTool: normalizedTools.includes("execShell"),
|
|
121
|
+
hasRememberMemoryTool: normalizedTools.includes("rememberMemory"),
|
|
122
|
+
hasDocTools: normalizedTools.some(
|
|
123
|
+
(tool) => ["read", "readDoc", "readPage", "createDoc", "updateDoc"].includes(tool)
|
|
124
|
+
),
|
|
125
|
+
hasBrowserTools,
|
|
126
|
+
hasEmailRegistrationTools,
|
|
127
|
+
// Require browser_probePage to be present before enabling email registration workflow guidance.
|
|
128
|
+
hasEmailRegistrationWorkflow: hasBrowserTools && hasBrowserProbe && hasEmailRegistrationTools
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
var buildRuntimeGuidanceBlocks = (tools = []) => {
|
|
132
|
+
const options = resolveRuntimeGuidanceToolOptions(tools);
|
|
133
|
+
const normalizedTools = canonicalizeToolNames(tools);
|
|
134
|
+
return {
|
|
135
|
+
startupProtocol: buildStartupProtocolBlock({
|
|
136
|
+
hasCheckEnvTool: options.hasCheckEnvTool,
|
|
137
|
+
hasExecShellTool: options.hasExecShellTool
|
|
138
|
+
}),
|
|
139
|
+
contextLayerContract: buildContextLayerContractBlock({
|
|
140
|
+
hasRememberMemoryTool: options.hasRememberMemoryTool,
|
|
141
|
+
hasDocTools: options.hasDocTools
|
|
142
|
+
}),
|
|
143
|
+
emailRegistrationWorkflow: buildEmailRegistrationWorkflowBlock(
|
|
144
|
+
options.hasEmailRegistrationWorkflow
|
|
145
|
+
)
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
// packages/agent-runtime/menuUsage.ts
|
|
150
|
+
var MENU_USAGE_INSTRUCTIONS = `--- \u4EA4\u4E92\u8BF4\u660E ---
|
|
151
|
+
\u6240\u6709\u7528\u6237\u8F93\u5165\u5747\u4E3A\u7EAF\u6587\u672C\u6D88\u606F\uFF0C\u76F4\u63A5\u7406\u89E3\u5373\u53EF\uFF0C\u4E0D\u8981\u5728\u56DE\u590D\u4E2D\u63D0\u53CA\u6309\u94AE\u3001\u83DC\u5355\u3001\u754C\u9762\u7B49 UI \u5143\u7D20\u3002
|
|
152
|
+
|
|
153
|
+
## \u4F55\u65F6\u8C03\u7528 ask_user
|
|
154
|
+
\u9ED8\u8BA4\u76F4\u63A5\u884C\u52A8\uFF1A\u80FD\u57FA\u4E8E\u73B0\u6709\u4E0A\u4E0B\u6587\u7ED9\u51FA\u9AD8\u8D28\u91CF\u7B54\u6848\u65F6\u5C31\u76F4\u63A5\u505A\uFF0C\u4E0D\u8981\u4E3A\u4E86\u95EE\u800C\u95EE\uFF1B\u7528\u6237\u76EE\u6807\u5DF2\u5177\u4F53\u6E05\u6670\u65F6\uFF0C\u5373\u4FBF\u5F62\u5F0F\u4E0A\u6EE1\u8DB3\u4E0B\u5217\u6761\u4EF6\u4E5F\u4F18\u5148\u76F4\u63A5\u56DE\u7B54\uFF0C\u4E0D\u5F3A\u884C\u5F39\u83DC\u5355\u3002\u4EC5\u4E09\u79CD\u60C5\u51B5\u8C03\u7528\uFF1A1\uFF09\u9700\u6C42\u5BBD\u6CDB\u6216\u6A21\u7CCA\uFF0C\u7ED9\u51FA 2\uFF5E5 \u4E2A\u4E92\u65A5\u4E14\u90FD\u5408\u7406\u7684\u65B9\u5411\u8BA9\u7528\u6237\u5148\u9009\uFF1B2\uFF09\u8BA1\u5212\u5230\u8FBE\u771F\u6B63\u7684\u5206\u652F\u8282\u70B9\u2014\u2014\u4E0D\u540C\u9009\u62E9\u4F1A\u663E\u8457\u6539\u53D8\u6210\u672C\u3001\u9690\u79C1\u6216\u7ED3\u679C\u8D70\u5411\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u4E0A\u4E0B\u6587\u63A8\u65AD\u7528\u6237\u504F\u597D\uFF1B3\uFF09\u65B0\u4F1A\u8BDD\u5F00\u5934\u9700\u8981\u6309\u7528\u6237\u753B\u50CF\u505A\u529F\u80FD\u5BFC\u822A\u6216\u5F15\u5BFC\u3002
|
|
155
|
+
|
|
156
|
+
## \u8C03\u7528\u89C4\u8303
|
|
157
|
+
- \u5148\u5728\u666E\u901A\u56DE\u590D\u6587\u672C\u91CC\u5199\u6E05\u80CC\u666F\u3001\u7406\u7531\u4E0E\u6743\u8861\u518D\u8C03\u7528\u5DE5\u5177\uFF1B\u65E0\u660E\u786E\u63A8\u8350\u9879\u65F6\uFF0C\u5FC5\u987B\u9010\u4E2A\u7B80\u8FF0\u9009\u9879\u4F18\u7F3A\u70B9\u5E2E\u52A9\u6743\u8861\uFF1B
|
|
158
|
+
- \u6709\u63A8\u8350\u65B9\u5411\u5C31\u628A\u8BE5\u9879\u653E choices \u9996\u4F4D\u5E76\u6807 recommended: true\uFF1B
|
|
159
|
+
- \u9009\u9879\u53EA\u627F\u8F7D\u9002\u5EA6\u4FE1\u606F\uFF1Alabel \u4E3A\u77ED\u53E5\u3001detail \u81F3\u591A\u4E00\u53E5\u8BDD\u8865\u5145\uFF0CuserMessage \u5199\u6210\u5B8C\u6574\u7684\u4E0B\u4E00\u53E5\u8BDD\uFF1B\u4E0D\u5728\u9009\u9879\u5217\u8868\u91CC\u653E"\u5176\u4ED6/Other"\uFF08\u5BA2\u6237\u7AEF\u4F1A\u81EA\u52A8\u8FFD\u52A0\u81EA\u7531\u8F93\u5165\u9000\u8DEF\uFF09\uFF1B
|
|
160
|
+
- \u95EE\u9898\u5199\u5728 question \u5B57\u6BB5\uFF0C\u4E0D\u8981\u5728\u540C\u4E00\u8F6E assistant \u666E\u901A\u6587\u672C\u91CC\u91CD\u590D\u8FD9\u53E5\u8BDD\uFF08\u89E3\u91CA\u80CC\u666F\u2260\u91CD\u590D\u95EE\u9898\uFF09\u3002`;
|
|
161
|
+
|
|
162
|
+
// packages/ai/agent/toolGuidedSections.ts
|
|
163
|
+
var AGENT_ORCHESTRATION_RUN_INSTRUCTIONS = `--- \u591A Agent \u7F16\u6392\uFF08\u540E\u53F0 Run\uFF09 ---
|
|
164
|
+
\u7528 startAgentRun \u542F\u52A8\u5B50 Agent\uFF08wait:false \u5F02\u6B65 fork+exec \u8FD4\u56DE runId\uFF1Bwait:true \u540C\u6B65\u7B49\u7ED3\u679C\uFF09\uFF0C\u7528 controlAgentRun \u89C2\u5BDF/\u505C\u6B62\uFF08wait/signal/proc \u8BED\u4E49\uFF09\u3002\u4F55\u65F6\u6D3E\u53D1\u89C1\u300C\u591A Agent \u534F\u4F5C\u300D\u6BB5\uFF1B\u672C\u6BB5\u53EA\u8BB2\u6D3E\u53D1\u4E4B\u540E\u600E\u4E48\u76EF\u3001\u600E\u4E48\u6392\u9519\u3002
|
|
165
|
+
|
|
166
|
+
1. \u76EF\u68A2\uFF1A**\u5F02\u6B65\u6D3E\u53D1\u540E\u7ACB\u5373\u6536\u5C3E\uFF0C\u7B49\u7EC8\u6001\u901A\u77E5\u3002** \u8981\u7ACB\u5373\u62FF\u7ED3\u679C\u5C31\u522B\u7528\u5F02\u6B65\uFF1A<100s \u5B50\u4EFB\u52A1\u76F4\u63A5 startAgentRun({ wait: true })\uFF1B\u5DF2\u5F02\u6B65\u6D3E\u51FA\u7684\u7528 controlAgentRun(action:"wait", runId) \u963B\u585E\u5230\u7EC8\u6001\u3002\u652F\u6301\u7EC8\u6001\u5524\u9192\u7684\u73AF\u5883\uFF08\u684C\u9762 TUI\uFF09run \u5230\u7EC8\u6001\u81EA\u52A8\u6458\u8981\u5524\u9192\u4F60\uFF0C\u65E0\u5E76\u884C\u5DE5\u4F5C\u5219\u4E00\u53E5\u8BDD\u6536\u5C3E\uFF1B\u6CA1\u6709\u7EC8\u6001\u5524\u9192\u7684\u73AF\u5883\uFF08\u88F8 CLI\u3001\u670D\u52A1\u7AEF runtime\uFF09\u7528 wait \u963B\u585E\uFF0C\u540C\u6837\u4E0D\u8981\u81EA\u5DF1\u5FAA\u73AF\u67E5\u3002
|
|
167
|
+
2. \u7B49\u5F85/\u7981\u6B62\u8F6E\u8BE2/\u7981\u7A7A\u8F6C/\u522B\u590D\u8FF0 status \u7684\u8BED\u4E49\u4EE5 startAgentRun \u4E0E controlAgentRun \u5DE5\u5177\u63CF\u8FF0\u4E3A\u51C6\u3002controlAgentRun \u53EA\u5728\u300C\u7B54\u6848\u4F1A\u6539\u53D8\u4F60\u4E0B\u4E00\u6B65\u52A8\u4F5C\u300D\u65F6\u7528\uFF08\u80FD\u5426\u6C47\u603B\u3001\u8981\u4E0D\u8981\u53EB\u505C/\u8865\u6D3E\uFF09\uFF1B\u4E00\u6B21\u6027\u6B7B\u6D3B\u68C0\u67E5\u7528 status(runId, tailLines:0)\u3002\u5E76\u884C\uFF1A\u591A\u4E2A\u72EC\u7ACB\u5B50\u4EFB\u52A1\u4E00\u6B21\u6D3E\u5B8C\uFF0C\u4E4B\u540E\u7B49\u5404\u81EA\u7EC8\u6001\u9010\u4E2A\u6C47\u603B\u3002
|
|
168
|
+
3. \u6392\u9519\uFF1A\u5148\u5206\u8BCA\u518D\u4E0B\u7ED3\u8BBA\u3002\u2460 \u590D\u6838 agentKey \u662F\u5426\u7167\u6284\u81EA listAgents\uFF08\u4E0D\u662F\u5C31\u5148\u4FEE key\uFF0C\u4E0D\u7B97\u901A\u9053\u6545\u969C\uFF09\uFF1B\u2461 \u62A5\u9519\u542B not found / invalid ref / Local agent config not found \u2192 \u5148 readAgent \u590D\u6838\uFF0C**\u7981\u6B62**\u636E\u6B64\u63A8\u65AD\u51ED\u8BC1\u7F3A\u5931\u6216\u901A\u9053\u5168\u6302\uFF1B\u2462 \u540C\u4E00\u5DF2\u9A8C\u8BC1 key \u4E0A\u4ECD\u5931\u8D25\u4E14\u9519\u8BEF\u660E\u786E\u6307\u5411\u901A\u9053\uFF08429\u3001\u9274\u6743\u5931\u8D25\u3001machine offline\uFF09\u2192 \u624D\u8BB0\u4E3A\u901A\u9053\u6545\u969C\u3002
|
|
169
|
+
4. \u5224\u5B9A\u300C\u6D3E\u53D1\u901A\u9053\u6574\u4F53\u4E0D\u53EF\u7528\u300D\u524D\uFF0C\u81F3\u5C11\u5BF9 2 \u4E2A\u4E0D\u540C\u5019\u9009\u5404\u5B8C\u6210\u300C\u5DF2\u9A8C\u8BC1 key + \u4E00\u6B21\u771F\u5B9E\u6D3E\u53D1\u300D\uFF1B\u5019\u9009\u4E0D\u8DB3 2 \u4E2A\u5C31\u5982\u5B9E\u62A5\u544A\u300C\u4EC5\u6B64\u5019\u9009\u4E14\u901A\u9053\u5931\u8D25\u300D\uFF0C\u4E0D\u5F97\u5938\u5927\u6210\u5168\u5E93\u4E0D\u53EF\u7528\u3002\u53EA\u6709 status=failed/\u8D85\u65F6\u6216 progress \u957F\u65F6\u95F4\u6BEB\u65E0\u52A8\u9759\uFF08\u7591\u4F3C\u5361\u6B7B\uFF09\u624D\u62C9 tailLines:30 \u770B\u65E5\u5FD7\uFF1Bstop \u4E4B\u524D\u5148\u770B\u65E5\u5FD7\u786E\u8BA4\u662F\u771F\u5361\u6B7B\uFF0C\u5E76\u7528 list/status \u786E\u8BA4 run \u771F\u5B9E\u5B58\u5728\u4E14\u975E\u7EC8\u6001\u2014\u2014\u522B\u5047\u8BBE\u300C\u6D3E\u53D1\u4E86\u5C31\u5728\u8DD1\u300D\u3002`;
|
|
170
|
+
var AGENT_COLLABORATION_INSTRUCTIONS = `--- Agent \u7F16\u6392\u4E0E\u534F\u4F5C\uFF08\u591A Agent \u534F\u4F5C\uFF1A\u8BA1\u5212 \u2192 \u6309\u9700\u6D3E\u53D1 \u2192 \u5BA1\u67E5\uFF09 ---
|
|
171
|
+
\u7F16\u6392\u4E0D\u662F\u76EE\u7684\uFF0C\u4EA7\u51FA\u624D\u662F\u3002**\u6309\u590D\u6742\u5EA6\u5206\u6863\u51B3\u5B9A\u8C01\u6765\u505A**\uFF1A\u4E0D\u4E3A\u300C\u51D1\u6570\u91CF\u300D\u6D3E\u53D1\uFF0C\u4E5F\u4E0D\u5305\u529E\u672C\u8BE5\u5E76\u884C\u7684\u72EC\u7ACB\u9886\u57DF\uFF1B\u6BCF\u8F6E\u63A8\u8FDB\u5F53\u524D\u6700\u6709\u4EF7\u503C\u7684\u52A8\u4F5C\uFF0C\u62FF\u8BC1\u636E\u518D\u5224\u65AD\u4E0B\u4E00\u6B65\u3002
|
|
172
|
+
|
|
173
|
+
**\u5206\u6863\u6807\u51C6\uFF08\u6309\u903B\u8F91\u6B65\u9AA4\u6570\u4E0E\u89E6\u53CA\u6587\u4EF6\u6570\uFF0C\u9886\u57DF\u6570\u4F5C\u590D\u6742\u6863\u8F85\u52A9\u5224\u636E\uFF09**\uFF1A
|
|
174
|
+
- \u7B80\u5355\uFF1A\u903B\u8F91\u6B65\u9AA4 <5 \u4E14\u53EA\u8BFB/\u641C/\u6539 \u22642 \u4E2A\u6587\u4EF6 \u2192 \u81EA\u5DF1\u505A\uFF0C\u4E0D\u6D3E\u53D1\uFF1B\u7EAF\u95EE\u7B54/\u54A8\u8BE2/\u95F2\u804A\u9ED8\u8BA4\u76F4\u63A5\u56DE\u7B54\u3001\u4E0D\u59D4\u6D3E\uFF08\u4EC5\u9700\u4E13\u804C\u80FD\u529B\u6216\u7528\u6237\u660E\u786E\u6307\u6D3E\u65F6\u624D\u59D4\u6D3E\uFF09\u3002
|
|
175
|
+
- \u4E2D\u7B49\uFF1A\u8D85\u51FA\u7B80\u5355\u6863\u3001\u672A\u8DE8 3 \u4E2A\u72EC\u7ACB\u9886\u57DF \u2192 \u5148\u7ED9\u65B9\u6848\uFF0C\u8BA4\u53EF\u540E\u6D3E\u4F4E\u6210\u672C\u6267\u884C\u8005\uFF1B\u81EA\u5DF1\u53EA\u505A\u89C4\u5212\u3001review\u3001\u96C6\u6210\u3002
|
|
176
|
+
- \u590D\u6742\uFF1A\u8DE8 3 \u4E2A\u4EE5\u4E0A\u72EC\u7ACB\u9886\u57DF\uFF0C\u6216\u542B\u4ED3\u5E93\u6539\u52A8\uFF0B\u9A8C\u8BC1\uFF0B\u53D1\u5E03/\u8FC1\u79FB\u957F\u94FE\u8DEF \u2192 \u4E0E\u5019\u9009\u5BF9\u9F50\u540E\u6309\u9886\u57DF\u62C6\u5206\u6D3E\u53D1\uFF0C\u9ED8\u8BA4\u81F3\u5C11\u6D3E 2 \u4E2A\u72EC\u7ACB\u5B50\u4EFB\u52A1\u6216\u5BA1\u8BA1\uFF1B\u4E0D\u6D3E\u987B\u5728\u8BA1\u5212\u91CC\u5199\u660E\u6210\u672C/\u6536\u76CA\u7406\u7531\u3002
|
|
177
|
+
- \u964D\u7EA7\uFF1A\u7528\u6237\u660E\u786E\u8981\u6C42\u4F60\u4EB2\u81EA\u5B8C\u6210\u65F6\u6309\u7528\u6237\u8981\u6C42\u6267\u884C\uFF1B\u4EC5\u5F53\u6240\u6709\u5DF2\u9A8C\u8BC1\u6D3E\u53D1\u901A\u9053\u5747\u4E0D\u53EF\u7528\u65F6\uFF0C\u53EF\u4FDD\u7559\u539F\u59CB\u9519\u8BEF\u8BC1\u636E\u540E\u964D\u7EA7\u81EA\u884C\u5B8C\u6210\u5E76\u8BF4\u660E\u539F\u56E0\u3002
|
|
178
|
+
|
|
179
|
+
**\u6D3E\u53D1\u901A\u9053**\uFF1A
|
|
180
|
+
- \u76EE\u6807\u8BB0\u5F55\u5DF2\u58F0\u660E delegation.serverBase / runtimeServerBase \u2192 \u5DE5\u5177\u81EA\u52A8\u8DEF\u7531\u5230\u5BF9\u5E94 nolo server\uFF0C\u65E0\u9700\u91CD\u590D\u586B serverBase\uFF1B\u7528\u6237\u7ED9\u51FA\u53EF\u8BBF\u95EE\u7684 server origin \u65F6\u53EF\u4F20 serverBase \u8986\u76D6\u81EA\u52A8\u8DEF\u7531\uFF0C\u52FF\u81C6\u9020\u5730\u5740\u3001\u52FF\u628A localhost \u5F53\u8FDC\u7AEF\u673A\u5668\u3002
|
|
181
|
+
- \u901A\u9053\u8BED\u4E49\uFF1AstartAgentRun \u5F02\u6B65\uFF08wait:false\uFF09\u53EA\u8868\u793A\u5DF2\u542F\u52A8/\u6392\u961F\uFF0C**\u4E0D\u8868\u793A\u4EFB\u52A1\u5B8C\u6210**\uFF1Bdone/failed \u540E\u7CFB\u7EDF\u7528 terminal wake \u7EE7\u7EED\u7236\u5BF9\u8BDD\uFF0C\u4F60\u518D\u8BFB child evidence \u51B3\u5B9A\u4E0B\u4E00\u6B65\u3002\u8981\u77ED\u7ED3\u679C\u76F4\u63A5\u540C\u6B65\u7B49\uFF08wait:true\uFF09\uFF1B\u8981\u8BA9\u7528\u6237\u524D\u53F0\u5B9E\u65F6\u770B\u5230\u53D1\u8A00\uFF0C\u7528 runStreamingAgent\u3002
|
|
182
|
+
- \u591A Agent \u534F\u4F5C\u4E0D\u9650\u4E8E\u4EE3\u7801\u4EFB\u52A1\uFF1A\u6E38\u620F\u8BBE\u8BA1\u3001\u7535\u5F71\u7B56\u5212\u3001\u5199\u4F5C\u3001\u8FD0\u8425\u3001\u7814\u7A76\u7B49\u5F02\u6B65\u5206\u5DE5\u573A\u666F\u540C\u6837\u9002\u7528\u3002
|
|
183
|
+
|
|
184
|
+
**\u53D1\u6563 / \u4F1A\u5546\uFF08\u7CFB\u7EDF\u7EA7\u51B3\u7B56\u673A\u5236\uFF09**\uFF1A
|
|
185
|
+
- \u53D1\u6563\u6A21\u5F0F\uFF08Divergent Mode\uFF09\uFF1A\u521B\u610F\u63A2\u7D22/\u65B9\u6848\u679A\u4E3E/\u5F00\u653E\u5F0F\u591A\u89C6\u89D2\u5206\u6790 \u2192 \u5E76\u884C\u6D3E\u53D1\u5404\u5206\u652F\u76F4\u63A5\u56DE\u7B54\u539F\u95EE\u9898\uFF0C\u4FDD\u7559\u5F00\u653E\u6027\u4E0E\u4E0D\u540C\u6A21\u578B\u7279\u8272\u3002
|
|
186
|
+
- \u4F1A\u5546\u6A21\u5F0F\uFF08Deliberation Mode\uFF09\uFF1A\u590D\u6742\u51B3\u7B56/\u65B9\u6848\u8BBA\u8BC1/\u98CE\u9669\u8BC4\u4F30/\u51B2\u7A81\u534F\u8C03 \u2192 \u9996\u8F6E\u72EC\u7ACB\u4F5C\u7B54\uFF08\u521D\u59CB\u5224\u65AD+\u6838\u5FC3\u7406\u7531+\u6700\u5927\u98CE\u9669\uFF09\u2192 \u4EA4\u53C9\u590D\u8BAE\uFF08\u5185\u5D4C\u4E0A\u8F6E\u8981\u70B9\u3001\u56DE\u5E94\u5206\u6B67\u4FEE\u6B63\u7ACB\u573A\uFF09\u2192 \u6309\u30101. \u5171\u8BC6 2. \u4FDD\u7559\u5206\u6B67 3. \u4E0B\u4E00\u6B65\u5EFA\u8BAE\u3011\u6536\u655B\uFF0C\u4E0D\u5F3A\u884C\u62B9\u5E73\u5408\u7406\u5206\u6B67\u3002
|
|
187
|
+
|
|
188
|
+
**\u9009\u4EBA**\uFF1A\u53EA\u8BA4 listAgents \u8FD4\u56DE\u7684\u8BB0\u5F55\uFF0CagentKey \u5FC5\u987B\u539F\u6837\u590D\u5236\u5176\u5B57\u6BB5\uFF0C\u4E0D\u62FC\u63A5/\u4E0D\u63A8\u65AD/\u4E0D\u6362\u683C\u5F0F/\u4E0D\u4F20 name\uFF1B\u6362\u4EBA\u6216\u4E0A\u6B21 not found \u65F6\u91CD\u65B0 listAgents \u53D6\u6700\u65B0 key\u3002\u4EFB\u52A1\u573A\u666F\u4E0E\u6A21\u578B\u5206\u6863\uFF1A
|
|
189
|
+
${AGENT_SELECTION_PRIORITY_INSTRUCTIONS}
|
|
190
|
+
- \u4E2D\u6587\u5199\u7A3F/\u957F\u6587\u521B\u4F5C/\u4F4E AI \u5473\u5185\u5BB9\uFF1A\u4F18\u5148\u9009 \`gemini-3.7-flash\`\uFF08\u884C\u6587\u81EA\u7136\u3001\u9AD8\u6027\u4EF7\u6BD4\uFF09\u6216 \`kimi-k3\`\u3002
|
|
191
|
+
- \u9876\u6863\u6A21\u578B\uFF08Opus 5\u3001GPT-5.6 Sol \u53CA\u540C\u7EA7\uFF09\u81EA\u52A8\u59D4\u6258\u786C\u95E8\uFF1A\u4EC5\u7528\u4E8E\u590D\u6742\u67B6\u6784/\u8DE8\u57DF\u8BBE\u8BA1\u3001\u91CD\u5927\u4E8B\u6545\u3001\u5B89\u5168/\u6570\u636E\u5B8C\u6574\u6027\u9AD8\u98CE\u9669\u5206\u6790\u3001\u8FBE\u6807\u7684\u6DF1 review\uFF0C\u6216\u4F4E\u4EF7\u5019\u9009\u5DF2\u6709\u5931\u8D25\u8BC1\u636E\u540E\u7684\u5347\u7EA7\u3002\u6DF1 review \u8FBE\u6807\u7EBF\uFF1D\u6539\u52A8\u6587\u4EF6\u6570 \u2265 30 \u4E14\u89E6\u53CA\u8BA1\u8D39/\u5B89\u5168/\u6570\u636E\u5B8C\u6574\u6027/\u6838\u5FC3\u8DEF\u7531\uFF0C\u6216\u4F4E\u4EF7 reviewer \u5DF2 BLOCK/\u901A\u9053\u5931\u8D25\u3002\u666E\u901A review \u9ED8\u8BA4\u6D3E\u4F4E\u4EF7\u5019\u9009\u3002\u9009\u9876\u6863\u8981\u5728\u56DE\u590D\u91CC\u8BF4\u660E\u7406\u7531\uFF1B\u7528\u6237\u70B9\u540D\u4E0D\u53D7\u6B64\u9650\u3002
|
|
192
|
+
- \u4E0D\u51ED\u540D\u5B57\u7F16\u9020\u80FD\u529B\uFF0C\u4E0D\u7D22\u53D6 prompt/\u5BC6\u94A5/\u6570\u636E\u5E93 key \u6765\u9009\u4EBA\uFF1B\u6D3E\u53D1\u524D\u8DF3\u8FC7\u5DF2\u77E5\u574F\u901A\u9053\uFF08\u914D\u7F6E\u7F3A\u5931/\u533A\u57DF\u9650\u5236/\u7F51\u5173 400\uFF09\u3002
|
|
193
|
+
|
|
194
|
+
**\u62C6\u5206\u4E0E\u6D3E\u53D1\u8D28\u91CF**\uFF1A\u6309\u72EC\u7ACB\u9886\u57DF\u62C6\uFF0C\u4E0D\u6309\u6587\u4EF6\u6570\u91CF\u62C6\uFF1B\u5171\u4EAB\u63A5\u53E3/\u5F3A\u987A\u5E8F\u4F9D\u8D56\u7684\u5DE5\u4F5C\u5148\u56FA\u5316\u5951\u7EA6\u518D\u6D3E\u53D1\uFF0C\u52FF\u8BA9\u591A\u4E2A Agent \u5404\u81EA\u731C\u540C\u4E00\u63A5\u53E3\u3002\u5B50\u4EFB\u52A1\u81EA\u5305\u542B\u3001\u8FB9\u754C\u6E05\u6670\uFF0C\u53EA\u4F20\u5B8C\u6210\u8BE5\u5B50\u4EFB\u52A1\u6240\u9700\u7684\u6700\u5C0F\u5DE5\u4F5C\u96C6\uFF08\u4E0A\u4E0B\u6587\u6700\u5C0F\u5316\uFF09\uFF0C\u4E25\u7981\u8F6C\u53D1\u65E0\u5173\u5386\u53F2\u4E0E\u65E5\u5FD7\uFF1B\u7236 Agent \u4FDD\u7559\u76EE\u6807\u3001\u5951\u7EA6\u3001\u96C6\u6210\u3001\u6700\u7EC8\u9A8C\u8BC1\u548C\u7528\u6237\u6C9F\u901A\u3002
|
|
195
|
+
|
|
196
|
+
**\u72EC\u7ACB\u5BA1\u67E5\uFF08commit \u524D\u786C\u95E8\uFF09**\uFF1A\u9664 \u22642 \u6B65\u96F6\u903B\u8F91\u98CE\u9669\u7684\u673A\u68B0\u6539\u52A8\u5916\uFF0C\u6240\u6709\u4EE3\u7801\u53D8\u66F4 commit \u524D\u5FC5\u987B\u5148\u6D3E**\u5176\u4ED6 agent**\uFF08\u4E0D\u540C\u6A21\u578B\u5BB6\u65CF\u4F18\u5148\uFF09review\uFF0Creviewer \u4E0D\u53EF\u662F\u81EA\u5DF1\uFF1B\u65E0 review \u4E0D commit\u3002\u81EA\u52A8\u5FAA\u73AF\uFF1A\u6539\u5B8C \u2192 startAgentRun(ephemeral:true) \u6D3E reviewer \u5BA1 diff \u2192 \u6709 finding \u5219\u4FEE \u2192 \u590D\u5BA1\u76F4\u5230 APPROVE\uFF08\u65E0 CRITICAL/HIGH\uFF09\u624D\u63D0\u4EA4\uFF1BBLOCK \u5FC5\u4FEE\u3001WARNING \u62A5\u7528\u6237\u3002review \u8BC1\u636E\u786C\u95E8\uFF1A\u4EC5\u5F53 reviewer \u8FD4\u56DE\u53EF\u8BFB\u7684\u6700\u7EC8\u6587\u672C\u4E14\u660E\u786E\u542B APPROVE\u3001\u65E0 CRITICAL/HIGH \u624D\u7B97\u901A\u8FC7\uFF1Bdone\u3001exit 0\u3001\u7A7A dialog\u3001messagesCount=0\u3001agentReply=null\u3001\u8D85\u65F6\u5747\u89C6\u4E3A\u672A\u5BA1\u67E5\uFF0C\u4E25\u7981\u63D0\u4EA4\u3002review context contract\uFF1A\u6D3E reviewer \u524D\u6309\u6539\u52A8\u8303\u56F4\u8BFB\u53D6 AGENTS.md\u3001docs/workflow.md\u3001\u5F53\u524D plan/progress\u3001\u547D\u4E2D\u7684 SKILL.md\u3001references\u3001\u6D89\u53CA\u4EA7\u54C1\u53D6\u820D\u65F6\u7684 docs/product-positioning.md\uFF0C\u4EE5\u53CA touched files \u7684\u5B8C\u6574 diff\uFF0Cbrief \u91CC\u5217\u51FA\u5B9E\u9645\u52A0\u8F7D\u7684 context\u3002\u5BA1\u67E5\u6E05\u5355\uFF1A\u53EF\u8BFB\u6027/\u53EF\u641C\u7D22\u6027\u3001\u53EF\u7EF4\u62A4\u6027/\u5220\u9664\u6210\u672C\u3001\u53EF\u7EC4\u5408\u6027/\u590D\u7528\u3001\u91CD\u590D\u5B9E\u73B0\u3001\u53EF\u5220\u9664\u4EE3\u7801\u3002\u82E5\u5904\u4E8E\u5355 Agent \u72EC\u5360\u73AF\u5883\u3001\u5176\u4ED6 agent \u4E0D\u53EF\u8FBE\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u76F4\u63A5\u63D0\u4EA4\uFF0C\u5141\u8BB8\u5E26\u539F\u56E0\u8DF3\u8FC7\uFF08commit \u6CE8\u660E [no-review: \u539F\u56E0]\uFF09\u3002\u6D89\u53CA\u4ED3\u5E93\u6587\u4EF6\u5199\u5165\u5FC5\u987B\u7528\u72EC\u7ACB worktree\u3002\u4ED3\u5E93\u7EA7 plan / review / worktree \u7EAA\u5F8B\u4EE5 AGENTS.md \u4E3A\u51C6\u3002
|
|
197
|
+
|
|
198
|
+
**\u5371\u9669 / \u4E0D\u53EF\u9006\u64CD\u4F5C**\uFF1A
|
|
199
|
+
- \u6D89\u53CA\u4E0D\u53EF\u9006\u64CD\u4F5C\uFF08\u4FEE\u6539\u6587\u4EF6\u3001\u5220\u9664\u6570\u636E\u3001\u53D1\u9001\u6D88\u606F\u3001\u751F\u6210\u6B63\u5F0F\u6587\u4EF6\u3001\u6267\u884C\u4EA4\u6613\u7B49\uFF09\u65F6\uFF0C\u4F18\u5148\u9884\u89C8\u6216\u5411\u7528\u6237\u786E\u8BA4\u3002
|
|
200
|
+
- \u5DE5\u5177\u8FD4\u56DE"\u9884\u89C8"\u6216"\u5F85\u786E\u8BA4"\u72B6\u6001\u65F6\uFF0C\u6682\u505C\u8FDB\u4E00\u6B65\u81EA\u52A8\u4FEE\u6539\uFF0C\u7B49\u7528\u6237\u660E\u786E\u786E\u8BA4\u540E\u518D\u7EE7\u7EED\u3002\u4E0D\u8981\u5728\u7528\u6237\u672A\u786E\u8BA4\u524D\u8FDE\u7EED\u53D1\u51FA\u591A\u6B21\u7834\u574F\u6027\u4FEE\u6539\u3002
|
|
201
|
+
|
|
202
|
+
\u81EA\u68C0\uFF1A\u5148\u5B8C\u6210\u4EFB\u52A1\u7406\u89E3\u4E0E\u5206\u6863\uFF1F\u53EA\u4FDD\u7559\u5F53\u524D\u52A8\u4F5C\u9700\u8981\u7684\u5DE5\u5177/\u5386\u53F2/\u6587\u4EF6\u5185\u5BB9\uFF1F\u6D3E\u53D1\u7684\u8BDD\u5B50\u4EFB\u52A1\u8FB9\u754C\u548C\u9A8C\u6536\u8BC1\u636E\u5199\u6E05\u4E86\u5417\uFF1F\u82E5\u6536\u5230\u300C\u5B50\u5BF9\u8BDD\u7981\u6B62\u518D\u521B\u5EFA\u5B59\u5BF9\u8BDD\u300D\u9519\u8BEF\uFF0C\u8BF4\u660E\u4F60\u5DF2\u662F\u5B50\u5BF9\u8BDD\uFF0C\u7981\u6B62\u518D\u6D3E\u53D1\uFF0C\u628A\u5DF2\u5B8C\u6210\u7684\u7ED3\u679C\u8FD4\u56DE\u7ED9\u7236\u5BF9\u8BDD\u5373\u53EF\u3002`;
|
|
203
|
+
var WEBPAGE_ACCESS_INSTRUCTIONS = `--- \u7F51\u9875\u8BBF\u95EE\u80FD\u529B (Web Access) ---
|
|
204
|
+
\u83B7\u53D6\u5916\u90E8\u4FE1\u606F\u65F6\u7531\u7B80\u5165\u7E41\uFF1A
|
|
205
|
+
0. \u7528\u6237\u5DF2\u7ED9\u660E\u786E URL \u2192 \u5148\u76F4\u63A5 fetch \u8FD9\u4E9B URL\uFF0C\u4E0D\u8981\u5148\u641C\u7D22\u6216\u731C\u5907\u7528\u7F51\u5740\u3002\u5B83\u4EEC\u662F\u672C\u6B21\u4EFB\u52A1\u6700\u9AD8\u4F18\u5148\u7EA7\u7684\u7F51\u9875\u771F\u503C\u3002\u4EC5\u5F53\u6293\u53D6\u5931\u8D25\u3001\u7F3A\u5B57\u6BB5\u6216\u5185\u5BB9\u4E0D\u5339\u914D\u65F6\u624D\u989D\u5916\u641C\u7D22\uFF0C\u5E76\u5728\u56DE\u590D\u4E2D\u8BF4\u660E\u964D\u7EA7\u539F\u56E0\u3002
|
|
206
|
+
1. \u65E0\u660E\u786E URL \u2192 \u5148\u7528 exa_search \u53D1\u73B0\u6743\u5A01\u5165\u53E3\uFF08\u5C24\u5176\u964C\u751F docs \u7AD9\uFF0C\u4E0D\u8981\u76F4\u63A5\u731C\u5B50\u8DEF\u5F84\uFF09\u3002
|
|
207
|
+
2. \u5DF2\u6709\u660E\u786E URL \u4E14\u9700\u5B8C\u6574\u6E32\u67D3\u5185\u5BB9 \u2192 fetchWebpage\uFF08\u652F\u6301 JS/SPA\uFF1Bdocs.* \u4F1A\u81EA\u52A8\u68C0\u67E5 /llms.txt \u5E76\u89C4\u8303\u5316 URL\uFF09\u3002
|
|
208
|
+
3. \u9700\u767B\u5F55/\u586B\u8868/\u591A\u6B65\u4EA4\u4E92 \u2192 browser_openSession\uFF08openSession \u62FF ID \u2192 typeText/click/readContent\uFF09\u3002
|
|
209
|
+
4. YouTube/\u4E9A\u9A6C\u900A/Google \u7B49\u7ED3\u6784\u5316\u6570\u636E \u2192 \u7528\u5BF9\u5E94\u4E13\u7528 Scraper \u5DE5\u5177\uFF08youtubeScraper\u3001amazonProductScraper \u7B49\uFF09\u3002
|
|
210
|
+
5. \u751F\u4EA7\u73AF\u5883\u4E0D\u8981\u7528 execShell \u8C03 curl/grep/sed \u7B49\u547D\u4EE4\u6293\u7F51\u9875\u6216\u622A\u53D6\u7F51\u9875\u6BB5\u843D\uFF08dev shell \u5E38\u88AB\u7981\uFF0C\u53CD\u590D\u5C1D\u8BD5\u53EA\u4F1A\u6D6A\u8D39\u56DE\u5408\uFF09\uFF1B\u4F18\u5148\u7528 fetchWebpage\u3001\u7AD9\u70B9 Markdown / llms.txt\u3001\u6216\u4E13\u7528\u6D4F\u89C8/\u641C\u7D22\u5DE5\u5177\u3002
|
|
211
|
+
6. \u5185\u5BB9\u8FC7\u957F\u6216\u951A\u70B9\u6BB5\u843D\u672A\u88AB\u5355\u72EC\u63D0\u53D6\u65F6\uFF0C\u5148\u627E\u8BE5\u6587\u6863\u7AD9\u7684 Markdown \u7248\u672C\u3001\u72EC\u7ACB\u9875\u9762\u3001llms.txt \u7D22\u5F15\u6216\u66F4\u5177\u4F53 URL \u518D\u7EE7\u7EED\u56DE\u7B54\u3002`;
|
|
212
|
+
var KNOWLEDGE_MANAGEMENT_INSTRUCTIONS = `--- \u77E5\u8BC6\u7BA1\u7406 ---
|
|
213
|
+
- references\uFF1AAgent \u914D\u7F6E\u91CC\u6BCF\u6B21\u5BF9\u8BDD\u81EA\u52A8\u6CE8\u5165\uFF08type=instruction \u8FDB prompt \u9876\u90E8\u505A\u884C\u4E3A\u89C4\u5219\uFF1Btype=knowledge \u4F5C\u53C2\u8003\u8D44\u6599\uFF1Bpage \u91CC\u7684 @mention \u53EA\u5C55\u5F00\u5143\u4FE1\u606F\uFF08\u6807\u9898+dbKey\uFF09\uFF0C\u4E0D\u9012\u5F52\u5C55\u5F00\u5185\u5BB9\uFF09\u3002
|
|
214
|
+
- createDoc \u6587\u6863\u6309\u9700 read\uFF1A\u603B\u7D22\u5F15\u9875\u7528 @[page:PAGE-xxx|\u6807\u9898] \u6307\u5411\u7EC6\u5206\u9875\uFF1Bmention \u662F\u6307\u9488\uFF0C\u53D6\u5185\u5BB9\u5FC5\u987B read({ dbKey })\u3002\u8BFB\u53D6\u8DEF\u5F84\uFF1Aprompt/references \u6709 \u2192 \u76F4\u63A5\u7528\uFF1B\u6CA1\u6709 \u2192 read \u7D22\u5F15\u9875\u627E\u7EC6\u5206\u9875 dbKey \u2192 read \u7EC6\u5206\u9875\u53D6\u5B8C\u6574\u5185\u5BB9\u3002
|
|
215
|
+
- \u6C89\u6DC0\u65F6\u673A\uFF1A\u7528\u6237\u7ED9\u4E86\u53EF\u590D\u7528\u4FE1\u606F / \u5B8C\u6210\u6709\u4EF7\u503C\u8C03\u7814 \u2192 createDoc\uFF08\u5E76 updateAgent \u52A0\u5165 references\uFF09\uFF1B\u7D22\u5F15\u7F3A\u5165\u53E3 \u2192 updateDoc \u8865 @mention\u3002\u4E0D\u8981\u628A\u4E00\u6B21\u6027\u5185\u5BB9\u5199\u6210\u77E5\u8BC6\u9875\u3002`;
|
|
216
|
+
var MEMORY_CAPTURE_INSTRUCTIONS = `--- \u957F\u671F\u8BB0\u5FC6 ---
|
|
217
|
+
\u4F60\u53EF\u7528 rememberMemory \u628A\u503C\u5F97\u957F\u671F\u4FDD\u7559\u7684\u4FE1\u606F\u5199\u6210\u4E00\u6761 episodic memory\uFF1B\u8BB0\u5F55\u8303\u56F4\u4E0E scope \u5206\u5C42\u89C4\u5219\u8BE6\u89C1 rememberMemory \u5DE5\u5177 schema\u3002
|
|
218
|
+
- \u62FF\u4E0D\u51C6\u662F\u5426\u503C\u5F97\u8BB0\u65F6\uFF0C\u4F18\u5148\u8BB0\u4E0B\u53EF\u590D\u7528\u9879\uFF0C\u4E8B\u540E\u8FC7\u6EE4\u6BD4\u6F0F\u8BB0\u6613\u8865\u6551\u3002
|
|
219
|
+
- \u53EC\u56DE\u7684\u8BB0\u5FC6\u5FC5\u987B\u5E26\u5B8C\u6574\u5386\u53F2\u4E0A\u4E0B\u6587\uFF08\u6765\u6E90/\u7F6E\u4FE1\u5EA6/\u53D8\u66F4\u8BB0\u5F55\uFF09\uFF0C\u7981\u6B62\u81EA\u884C\u63A8\u7406\u586B\u8865\u3002
|
|
220
|
+
- \u65E5\u5E38\u9519\u8BEF\u8BB0\u5FC6\u4F18\u5148\u901A\u8FC7 rememberMemory \u4FEE\u6B63\u964D\u6743/\u5F52\u6863\u8986\u76D6\u800C\u975E\u7269\u7406\u5220\u9664\uFF1B\u7269\u7406\u5220\u9664\u4EC5\u5728\u7528\u6237\u660E\u786E\u8981\u6C42\u4E14\u5728\u5176\u6743\u9650\u8303\u56F4\u5185\uFF08deleteMemory\uFF09\u3002`;
|
|
221
|
+
var SELF_UPDATE_INSTRUCTIONS = `--- Agent \u81EA\u6211\u66F4\u65B0\u80FD\u529B ---
|
|
222
|
+
|
|
223
|
+
## \u4F55\u65F6\u66F4\u65B0\u81EA\u5DF1
|
|
224
|
+
- \u91CD\u8981\u51B3\u7B56/\u8FDB\u5EA6\u53D8\u5316 \u2192 updateDoc \u5199\u56DE\u72B6\u6001\u9875
|
|
225
|
+
- \u503C\u5F97\u590D\u7528\u7684\u77E5\u8BC6 \u2192 createDoc \u5EFA\u7EC6\u5206\u9875\uFF0C\u518D\u6309\u9700\u8981\u66F4\u65B0\u81EA\u5DF1\u7684 references / greeting / introduction
|
|
226
|
+
- \u5C0F\u5E45\u4F53\u9A8C\u4F18\u5316 \u2192 updateSelf \u8C03\u6574 greeting / introduction / tags
|
|
227
|
+
|
|
228
|
+
## \u66F4\u65B0\u539F\u5219
|
|
229
|
+
- \u4F18\u5148\u5F62\u6210\u6700\u5C0F\u3001\u53EF\u89E3\u91CA\u7684\u53D8\u66F4\uFF0C\u4E0D\u8981\u4E3A\u4E86\u201C\u663E\u5F97\u5728\u8FDB\u5316\u201D\u800C\u9891\u7E41\u6539\u81EA\u5DF1
|
|
230
|
+
- \u4F4E\u98CE\u9669\u6C89\u6DC0\u4F18\u5148\u5199\u5165 memory / doc\uFF1B\u53EA\u6709\u5F53\u8FD9\u4E9B\u77E5\u8BC6\u9700\u8981\u957F\u671F\u6539\u53D8\u4F60\u7684\u884C\u4E3A\u65B9\u5F0F\u65F6\uFF0C\u518D\u8003\u8651 updateSelf
|
|
231
|
+
- prompt / references / tools / model \u8FD9\u7C7B\u9AD8\u5F71\u54CD\u5B57\u6BB5\uFF0C\u9ED8\u8BA4\u6309\u9700\u8981\u786E\u8BA4\u6765\u5904\u7406\uFF0C\u4E0D\u8981\u9759\u9ED8\u5927\u6539
|
|
232
|
+
- \u5982\u679C\u5DE5\u5177\u8FD4\u56DE policy limit / ask / reject\uFF0C\u4E0D\u8981\u91CD\u590D\u5C1D\u8BD5\uFF0C\u5E94\u5148\u5411\u7528\u6237\u89E3\u91CA\u6216\u7B49\u5F85\u66F4\u9AD8\u6743\u9650\u786E\u8BA4
|
|
233
|
+
- \u6CA1\u6709\u53D1\u751F\u5B9E\u9645\u66F4\u65B0\u65F6\uFF0C\u4E0D\u8981\u5728\u56DE\u590D\u672B\u5C3E\u989D\u5916\u6C47\u62A5\u201C\u672A\u66F4\u65B0\u201D\u72B6\u6001`;
|
|
234
|
+
var GENERIC_AGENT_UPDATE_INSTRUCTIONS = `--- Agent \u7EF4\u62A4\u80FD\u529B ---
|
|
235
|
+
\u4F60\u62E5\u6709 updateAgent \u6743\u9650\uFF0C\u53EF\u4EE5\u66F4\u65B0\u6307\u5B9A\u7684 Agent\u3002
|
|
236
|
+
|
|
237
|
+
## \u4F55\u65F6\u66F4\u65B0\u522B\u7684 Agent
|
|
238
|
+
- \u7528\u6237\u660E\u786E\u8981\u6C42\u4F60\u7EF4\u62A4\u3001\u4FEE\u590D\u6216\u6279\u91CF\u8C03\u6574\u53E6\u4E00\u4E2A Agent
|
|
239
|
+
- \u4F60\u9700\u8981\u4FEE\u6539\u7684\u76EE\u6807\u4E0D\u662F\u5F53\u524D\u6B63\u5728\u8FD0\u884C\u7684\u81EA\u5DF1
|
|
240
|
+
|
|
241
|
+
## \u66F4\u65B0\u539F\u5219
|
|
242
|
+
- \u9ED8\u8BA4\u628A updateAgent \u5F53\u6210\u9AD8\u98CE\u9669\u7EF4\u62A4\u64CD\u4F5C\uFF0C\u4F18\u5148\u6700\u5C0F\u6539\u52A8
|
|
243
|
+
- \u4FEE\u6539\u524D\u5148\u786E\u8BA4\u76EE\u6807 Agent \u662F\u5426\u6B63\u786E\uFF0C\u907F\u514D\u8BEF\u6539
|
|
244
|
+
- \u5982\u679C\u5DE5\u5177\u8FD4\u56DE\u9700\u8981\u786E\u8BA4\uFF0C\u4E0D\u8981\u7ED5\u8FC7\u786E\u8BA4\u6D41\u7A0B`;
|
|
245
|
+
var TOOL_GUIDED_SECTIONS = [
|
|
246
|
+
{
|
|
247
|
+
id: "agentOrchestration",
|
|
248
|
+
triggerTools: [
|
|
249
|
+
"runStreamingAgent",
|
|
250
|
+
"startAgentRun",
|
|
251
|
+
"controlAgentRun"
|
|
252
|
+
],
|
|
253
|
+
build: (tools) => tools.includes("startAgentRun") || tools.includes("controlAgentRun") ? AGENT_ORCHESTRATION_RUN_INSTRUCTIONS : ""
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
id: "agentCollaboration",
|
|
257
|
+
triggerTools: [
|
|
258
|
+
"runStreamingAgent",
|
|
259
|
+
"startAgentRun",
|
|
260
|
+
"controlAgentRun"
|
|
261
|
+
],
|
|
262
|
+
build: () => AGENT_COLLABORATION_INSTRUCTIONS
|
|
263
|
+
},
|
|
264
|
+
{ id: "menuUsage", triggerTools: ["ask_user"], build: () => MENU_USAGE_INSTRUCTIONS },
|
|
265
|
+
{
|
|
266
|
+
id: "webAccess",
|
|
267
|
+
triggerTools: ["exa_search", "fetchWebpage", "browser_openSession", "read_x_post"],
|
|
268
|
+
build: () => WEBPAGE_ACCESS_INSTRUCTIONS
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
id: "knowledgeManagement",
|
|
272
|
+
triggerTools: ["createDoc", "updateDoc", "read", "readDoc", "readPage"],
|
|
273
|
+
build: () => KNOWLEDGE_MANAGEMENT_INSTRUCTIONS
|
|
274
|
+
},
|
|
275
|
+
{ id: "memoryCapture", triggerTools: ["rememberMemory"], build: () => MEMORY_CAPTURE_INSTRUCTIONS },
|
|
276
|
+
{ id: "selfUpdate", triggerTools: ["updateSelf"], build: () => SELF_UPDATE_INSTRUCTIONS },
|
|
277
|
+
{ id: "genericAgentUpdate", triggerTools: ["updateAgent"], build: () => GENERIC_AGENT_UPDATE_INSTRUCTIONS }
|
|
278
|
+
];
|
|
279
|
+
function resolveToolGuidedSections(agentTools) {
|
|
280
|
+
const out = {};
|
|
281
|
+
for (const section of TOOL_GUIDED_SECTIONS) {
|
|
282
|
+
if (section.triggerTools.some((t) => agentTools.includes(t))) {
|
|
283
|
+
out[section.id] = section.build(agentTools);
|
|
284
|
+
} else {
|
|
285
|
+
out[section.id] = "";
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return out;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// packages/agent-runtime/currentTimeContext.ts
|
|
292
|
+
var pad2 = (value) => String(value).padStart(2, "0");
|
|
293
|
+
var resolveDefaultTimeZone = () => {
|
|
294
|
+
try {
|
|
295
|
+
return Intl.DateTimeFormat().resolvedOptions().timeZone || "UTC";
|
|
296
|
+
} catch {
|
|
297
|
+
return "UTC";
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
var partsForTimeZone = (date, timeZone) => {
|
|
301
|
+
const parts = new Intl.DateTimeFormat("en-US", {
|
|
302
|
+
timeZone,
|
|
303
|
+
year: "numeric",
|
|
304
|
+
month: "2-digit",
|
|
305
|
+
day: "2-digit",
|
|
306
|
+
hour: "2-digit",
|
|
307
|
+
minute: "2-digit",
|
|
308
|
+
second: "2-digit",
|
|
309
|
+
hour12: false
|
|
310
|
+
}).formatToParts(date);
|
|
311
|
+
return Object.fromEntries(
|
|
312
|
+
parts.filter((part) => part.type !== "literal").map((part) => [part.type, part.value])
|
|
313
|
+
);
|
|
314
|
+
};
|
|
315
|
+
var zonedDateTime = (date, timeZone) => {
|
|
316
|
+
const parts = partsForTimeZone(date, timeZone);
|
|
317
|
+
return [
|
|
318
|
+
`${parts.year}-${parts.month}-${parts.day}`,
|
|
319
|
+
`${parts.hour}:${parts.minute}:${parts.second}`
|
|
320
|
+
].join(" ");
|
|
321
|
+
};
|
|
322
|
+
var timeZoneOffset = (date, timeZone) => {
|
|
323
|
+
const parts = partsForTimeZone(date, timeZone);
|
|
324
|
+
const utcMs = Date.UTC(
|
|
325
|
+
Number(parts.year),
|
|
326
|
+
Number(parts.month) - 1,
|
|
327
|
+
Number(parts.day),
|
|
328
|
+
Number(parts.hour),
|
|
329
|
+
Number(parts.minute),
|
|
330
|
+
Number(parts.second)
|
|
331
|
+
);
|
|
332
|
+
const offsetMinutes = Math.round((utcMs - date.getTime()) / 6e4);
|
|
333
|
+
const sign = offsetMinutes >= 0 ? "+" : "-";
|
|
334
|
+
const absolute = Math.abs(offsetMinutes);
|
|
335
|
+
return `UTC${sign}${pad2(Math.floor(absolute / 60))}:${pad2(absolute % 60)}`;
|
|
336
|
+
};
|
|
337
|
+
var toHourPrecision = (dateTime) => `${dateTime.slice(0, 13)}:00`;
|
|
338
|
+
var buildCurrentTimeBlock = (now = /* @__PURE__ */ new Date(), timeZone = resolveDefaultTimeZone()) => [
|
|
339
|
+
"--- \u5F53\u524D\u65F6\u95F4 ---",
|
|
340
|
+
`\u5F53\u524D\u65E5\u671F: ${zonedDateTime(now, timeZone).slice(0, 10)}`,
|
|
341
|
+
`\u5F53\u524D\u672C\u5730\u65F6\u95F4: ${toHourPrecision(zonedDateTime(now, timeZone))}`,
|
|
342
|
+
// hour precision — see toHourPrecision
|
|
343
|
+
`\u672C\u5730\u65F6\u533A: ${timeZone} / ${timeZoneOffset(now, timeZone)}`,
|
|
344
|
+
`UTC \u65F6\u95F4: ${toHourPrecision(now.toISOString())}`,
|
|
345
|
+
// hour precision; slice keeps the "T"
|
|
346
|
+
"\u6CE8\u610F\uFF1A\u4E0A\u9762\u7684\u65F6\u95F4\u53EA\u7CBE\u786E\u5230\u5C0F\u65F6\uFF08\u4E3A\u547D\u4E2D prompt \u7F13\u5B58\u800C\u964D\u4F4E\u7C92\u5EA6\uFF09\u3002\u9700\u8981\u7CBE\u786E\u5230\u5206\u949F\u6216\u79D2\u65F6\uFF0C\u7528 shell \u6267\u884C `date` \u83B7\u53D6\u3002",
|
|
347
|
+
"\u5F53\u7528\u6237\u95EE\u201C\u73B0\u5728\u201D\u201C\u5F53\u524D\u65F6\u95F4\u201D\u201C\u5317\u4EAC\u65F6\u95F4\u201D\u7B49\u65F6\u95F4\u95EE\u9898\u65F6\uFF0C\u76F4\u63A5\u4F7F\u7528\u8FD9\u91CC\u7684\u5F53\u524D\u65F6\u95F4\uFF1B\u4E0D\u8981\u53EA\u56DE\u7B54\u65E5\u671F\u3002",
|
|
348
|
+
"\u5F53\u7528\u6237\u8BF4\u201C\u4ECA\u5929\u201D\u201C\u4ECA\u65E5\u201D\u6216 today \u65F6\uFF0C\u9ED8\u8BA4\u6307\u5F53\u524D\u672C\u5730\u65E5\u671F\uFF0C\u9664\u975E\u7528\u6237\u660E\u786E\u7ED9\u51FA\u5176\u5B83\u65E5\u671F\u3002"
|
|
349
|
+
].join("\n");
|
|
350
|
+
|
|
351
|
+
// packages/core/chat/bareImageUrlShape.ts
|
|
352
|
+
function requiresBareImageUrl(args) {
|
|
353
|
+
const model = asTrimmedLowercaseString(args.model);
|
|
354
|
+
if (!model.startsWith("gpt-")) return false;
|
|
355
|
+
const provider = asTrimmedLowercaseString(args.provider);
|
|
356
|
+
if (provider === "opencode-go") return true;
|
|
357
|
+
return asTrimmedLowercaseString(args.endpoint).includes("opencode.ai/zen/go");
|
|
358
|
+
}
|
|
359
|
+
function toBareImageUrlContent(content) {
|
|
360
|
+
if (!Array.isArray(content)) return content;
|
|
361
|
+
let changed = false;
|
|
362
|
+
const parts = content.map((part) => {
|
|
363
|
+
if (!isImageUrlPart(part)) return part;
|
|
364
|
+
const imageUrl = part.image_url;
|
|
365
|
+
if (!imageUrl || typeof imageUrl !== "object") return part;
|
|
366
|
+
const url = imageUrl.url;
|
|
367
|
+
if (typeof url !== "string" || !url) return part;
|
|
368
|
+
changed = true;
|
|
369
|
+
return { ...part, image_url: url };
|
|
370
|
+
});
|
|
371
|
+
return changed ? parts : content;
|
|
372
|
+
}
|
|
373
|
+
function toBareImageUrlMessages(messages) {
|
|
374
|
+
return messages.map((message) => {
|
|
375
|
+
const content = toBareImageUrlContent(message.content);
|
|
376
|
+
return content === message.content ? message : { ...message, content };
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
export {
|
|
381
|
+
buildIdentityBlock,
|
|
382
|
+
buildRuntimeGuidanceBlocks,
|
|
383
|
+
resolveToolGuidedSections,
|
|
384
|
+
buildCurrentTimeBlock,
|
|
385
|
+
requiresBareImageUrl,
|
|
386
|
+
toBareImageUrlMessages
|
|
387
|
+
};
|
|
@@ -7,7 +7,6 @@ import {
|
|
|
7
7
|
var require_is_plain_object = __commonJS({
|
|
8
8
|
"node_modules/is-plain-object/dist/is-plain-object.js"(exports) {
|
|
9
9
|
"use strict";
|
|
10
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
10
|
function isObject(o) {
|
|
12
11
|
return Object.prototype.toString.call(o) === "[object Object]";
|
|
13
12
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
selectCurrentServer
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-B6H5XCT2.js";
|
|
4
4
|
import {
|
|
5
5
|
patch
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-23KKIMD5.js";
|
|
7
7
|
import {
|
|
8
8
|
selectIdentityToken
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-HHBXCRJS.js";
|
|
10
10
|
import {
|
|
11
11
|
getIsDesktopApp
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-L3JWI7WX.js";
|
|
13
13
|
|
|
14
14
|
// packages/ai/agent/cliChatClient.ts
|
|
15
15
|
function getCliChatRequestConfig(thunkApi) {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
patch,
|
|
3
3
|
read
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-23KKIMD5.js";
|
|
5
5
|
import {
|
|
6
6
|
DEVICE_LOCAL_OWNER_ID,
|
|
7
7
|
isDeviceLocalSpaceBody,
|
|
8
8
|
selectIdentityUserId
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-HHBXCRJS.js";
|
|
10
10
|
|
|
11
11
|
// packages/create/space/spaceKeys.ts
|
|
12
12
|
var SEPARATOR = "-";
|
|
@@ -14,7 +14,7 @@ function buildCliLocalRuntimeDbEnv(env = process.env) {
|
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
16
|
async function getDefaultCliLocalRuntimeDb(options = {}) {
|
|
17
|
-
const { getDefaultCliLocalRuntimeDb: getAuthorityBackedDb } = await import("./localRuntimeAuthority-
|
|
17
|
+
const { getDefaultCliLocalRuntimeDb: getAuthorityBackedDb } = await import("./localRuntimeAuthority-S77B5QVB.js");
|
|
18
18
|
return getAuthorityBackedDb(options);
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getCredentialsDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FD36SCCD.js";
|
|
4
4
|
import {
|
|
5
5
|
asNonEmptyStringArray
|
|
6
6
|
} from "./chunk-I42VC5KR.js";
|
|
7
|
+
import {
|
|
8
|
+
isRecord
|
|
9
|
+
} from "./chunk-KUG52IAP.js";
|
|
7
10
|
import {
|
|
8
11
|
asTrimmedString
|
|
9
12
|
} from "./chunk-3EUW3WEO.js";
|
|
10
13
|
import {
|
|
11
14
|
asOptionalPositiveFiniteNumber
|
|
12
15
|
} from "./chunk-U6VC4MU4.js";
|
|
13
|
-
import {
|
|
14
|
-
isRecord
|
|
15
|
-
} from "./chunk-KUG52IAP.js";
|
|
16
16
|
|
|
17
17
|
// packages/agent-runtime/fileCredentialBroker.ts
|
|
18
18
|
import {
|
|
@@ -23,7 +23,6 @@ import {
|
|
|
23
23
|
unlinkSync,
|
|
24
24
|
writeFileSync
|
|
25
25
|
} from "node:fs";
|
|
26
|
-
import { homedir } from "node:os";
|
|
27
26
|
import { join } from "node:path";
|
|
28
27
|
|
|
29
28
|
// packages/agent-runtime/credentialBroker.ts
|
|
@@ -39,7 +38,7 @@ function assertCredentialRef(ref) {
|
|
|
39
38
|
}
|
|
40
39
|
|
|
41
40
|
// packages/agent-runtime/fileCredentialBroker.ts
|
|
42
|
-
function getApiKeyCredentialsDir(homeDir
|
|
41
|
+
function getApiKeyCredentialsDir(homeDir) {
|
|
43
42
|
return join(getCredentialsDir(homeDir), "keys");
|
|
44
43
|
}
|
|
45
44
|
function credentialRefToFileName(ref) {
|
|
@@ -49,7 +48,7 @@ function credentialRefToFileName(ref) {
|
|
|
49
48
|
}
|
|
50
49
|
return `${safe}.json`;
|
|
51
50
|
}
|
|
52
|
-
function getApiKeyCredentialPath(ref, homeDir
|
|
51
|
+
function getApiKeyCredentialPath(ref, homeDir) {
|
|
53
52
|
return join(getApiKeyCredentialsDir(homeDir), credentialRefToFileName(ref));
|
|
54
53
|
}
|
|
55
54
|
function ensurePrivateDir(dir) {
|
|
@@ -66,7 +65,7 @@ function writePrivateFile(path, body) {
|
|
|
66
65
|
} catch {
|
|
67
66
|
}
|
|
68
67
|
}
|
|
69
|
-
function readApiKeyCredential(ref, homeDir
|
|
68
|
+
function readApiKeyCredential(ref, homeDir) {
|
|
70
69
|
const path = getApiKeyCredentialPath(ref, homeDir);
|
|
71
70
|
if (!existsSync(path)) return null;
|
|
72
71
|
try {
|
|
@@ -78,7 +77,7 @@ function readApiKeyCredential(ref, homeDir = homedir()) {
|
|
|
78
77
|
return null;
|
|
79
78
|
}
|
|
80
79
|
}
|
|
81
|
-
function writeApiKeyCredential(ref, secret, homeDir
|
|
80
|
+
function writeApiKeyCredential(ref, secret, homeDir, now = Date.now()) {
|
|
82
81
|
const trimmedSecret = secret.trim();
|
|
83
82
|
if (!trimmedSecret) {
|
|
84
83
|
throw new Error("Cannot store an empty credential secret.");
|
|
@@ -94,17 +93,17 @@ function writeApiKeyCredential(ref, secret, homeDir = homedir(), now = Date.now(
|
|
|
94
93
|
writePrivateFile(path, `${JSON.stringify(payload, null, 2)}
|
|
95
94
|
`);
|
|
96
95
|
}
|
|
97
|
-
function removeApiKeyCredential(ref, homeDir
|
|
96
|
+
function removeApiKeyCredential(ref, homeDir) {
|
|
98
97
|
assertCredentialRef(ref);
|
|
99
98
|
const path = getApiKeyCredentialPath(ref, homeDir);
|
|
100
99
|
if (!existsSync(path)) return;
|
|
101
100
|
unlinkSync(path);
|
|
102
101
|
}
|
|
103
|
-
function hasApiKeyCredential(ref, homeDir
|
|
102
|
+
function hasApiKeyCredential(ref, homeDir) {
|
|
104
103
|
return readApiKeyCredential(ref, homeDir) !== null;
|
|
105
104
|
}
|
|
106
105
|
function createFileCredentialBroker(options = {}) {
|
|
107
|
-
const homeDir = options.homeDir
|
|
106
|
+
const homeDir = options.homeDir;
|
|
108
107
|
const now = options.now ?? Date.now;
|
|
109
108
|
return {
|
|
110
109
|
get(ref) {
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
shouldStripReasoningContentForOutbound,
|
|
24
24
|
toOpenAiCompatibleMessages,
|
|
25
25
|
toResponsesTools
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-BMB563Y6.js";
|
|
27
27
|
import {
|
|
28
28
|
buildProviderExecutionPlan,
|
|
29
29
|
canUsePlatformChatProvider,
|
|
@@ -32,10 +32,10 @@ import {
|
|
|
32
32
|
resolvePlatformAuthToken,
|
|
33
33
|
resolvePlatformServerUrl,
|
|
34
34
|
resolveProviderTransportDecision
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-GKHV4UH5.js";
|
|
36
36
|
import {
|
|
37
37
|
clipCompactText
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-FGLKRJDI.js";
|
|
39
39
|
import {
|
|
40
40
|
isRecord
|
|
41
41
|
} from "./chunk-KUG52IAP.js";
|
|
@@ -339,15 +339,22 @@ async function* readSseFrames(response) {
|
|
|
339
339
|
const { done, value } = await reader.read();
|
|
340
340
|
if (done) break;
|
|
341
341
|
buffer += decoder.decode(value, { stream: true });
|
|
342
|
-
let boundary = buffer
|
|
343
|
-
while (boundary
|
|
344
|
-
yield buffer.slice(0, boundary);
|
|
345
|
-
buffer = buffer.slice(boundary +
|
|
346
|
-
boundary = buffer
|
|
342
|
+
let boundary = findSseFrameBoundary(buffer);
|
|
343
|
+
while (boundary) {
|
|
344
|
+
yield buffer.slice(0, boundary.index);
|
|
345
|
+
buffer = buffer.slice(boundary.index + boundary.separatorLength);
|
|
346
|
+
boundary = findSseFrameBoundary(buffer);
|
|
347
347
|
}
|
|
348
348
|
}
|
|
349
349
|
if (buffer.trim()) yield buffer;
|
|
350
350
|
}
|
|
351
|
+
function findSseFrameBoundary(buffer) {
|
|
352
|
+
const lfLf = buffer.indexOf("\n\n");
|
|
353
|
+
const crLfCrLf = buffer.indexOf("\r\n\r\n");
|
|
354
|
+
if (lfLf === -1 && crLfCrLf === -1) return null;
|
|
355
|
+
const useLf = lfLf !== -1 && (crLfCrLf === -1 || lfLf < crLfCrLf);
|
|
356
|
+
return useLf ? { index: lfLf, separatorLength: 2 } : { index: crLfCrLf, separatorLength: 4 };
|
|
357
|
+
}
|
|
351
358
|
async function* streamSseDataValues(response, parse) {
|
|
352
359
|
const reader = response.body?.getReader();
|
|
353
360
|
if (!reader) return;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TOOL_PACKS,
|
|
3
3
|
buildCodeWorkDiscipline
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-IIOHYLIG.js";
|
|
5
5
|
import {
|
|
6
6
|
buildSkillDocMarkdown,
|
|
7
7
|
resolvePageSkillMetadata
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-EY7V7REW.js";
|
|
9
9
|
import {
|
|
10
10
|
canonicalizeToolNames
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-O6OSWFZQ.js";
|
|
12
12
|
import {
|
|
13
13
|
asNonEmptyStringArray
|
|
14
14
|
} from "./chunk-I42VC5KR.js";
|