nolo-cli 0.89.0-alpha.1 → 0.91.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/{_executeModel-I3XRMAJ2.js → _executeModel-U5V7LOJX.js} +38 -38
- package/{action-7GHFPDSQ.js → action-EXQVY3UO.js} +7 -7
- package/{addContentAction-ZNVB2NOV.js → addContentAction-6IXQSRD2.js} +5 -5
- package/{addDialogAgentAction-CIDFWATM.js → addDialogAgentAction-FZOB4BYM.js} +4 -4
- package/{agentDeleteCommand-DCTG26JW.js → agentDeleteCommand-4MIJFQQB.js} +24 -23
- package/{agentEmailCommands-MRRHBLDQ.js → agentEmailCommands-JUXT36BY.js} +50 -49
- package/{agentGrantCommands-R3VQEZJR.js → agentGrantCommands-YW6PQAQ2.js} +2 -2
- package/{agentListCommands-CUE46CSP.js → agentListCommands-MUVKMMZ5.js} +32 -25
- package/{agentMachineCommands-FYDEKBIO.js → agentMachineCommands-56FTZLYV.js} +24 -23
- package/{agentProviderCommands-X3FA6BUM.js → agentProviderCommands-TOMVKJOV.js} +1 -1
- package/{agentPullCommand-U73W5IBM.js → agentPullCommand-GLOOXJ2E.js} +2 -2
- package/{agentRecordCommands-P2MSNP7R.js → agentRecordCommands-FST3KAKG.js} +48 -47
- package/{agentRunCommand-QJGP7JEN.js → agentRunCommand-UMUEVIY2.js} +49 -48
- package/{agentRunControl-T44MESII.js → agentRunControl-XLGD3UZ5.js} +1 -1
- package/{agentRuntimeLocal-T43UNWAY.js → agentRuntimeLocal-NH6GSGAJ.js} +20 -19
- package/{agentSlice-7GDS5Q2S.js → agentSlice-YZK6KG73.js} +5 -5
- package/{appDeleteCommands-YBKY3VEI.js → appDeleteCommands-U45KXYX7.js} +25 -24
- package/{appDeployCommands-EBC76HO4.js → appDeployCommands-LWQIQCFX.js} +25 -24
- package/{appDeployStatusCommands-WXRC5KEK.js → appDeployStatusCommands-LZO33PGD.js} +25 -24
- package/{appGetCommands-VZZQEDOV.js → appGetCommands-OJSO6BCF.js} +25 -24
- package/{appListCommands-HYSPVQ77.js → appListCommands-NE56V7DI.js} +25 -24
- package/{authCommand-E4GDVKMW.js → authCommand-U5LA6H4Y.js} +84 -18
- package/{authCommands-VOTT6XWX.js → authCommands-RGOGCPP6.js} +2 -2
- package/{builtinSkillRegistry-5SYVTS6Z.js → builtinSkillRegistry-4NB7PCOF.js} +5 -5
- package/{chatQueueReduxAdapter-CXEWIDFZ.js → chatQueueReduxAdapter-FRMSYX7N.js} +17 -17
- package/{chunk-JC2WQS66.js → chunk-377KM42Z.js} +20 -16
- package/{chunk-3T4PRBHV.js → chunk-3XMOAYRC.js} +1 -1
- package/{chunk-6H7GN3JL.js → chunk-4CAPEGHN.js} +20 -7
- package/{chunk-ZKGIAM7I.js → chunk-4JBZUECA.js} +1 -1
- package/{chunk-23RQKXP6.js → chunk-4QKBQHPQ.js} +1 -1
- package/{chunk-IZAWJCG7.js → chunk-546FPOW3.js} +1 -1
- package/{chunk-5XTOKQLW.js → chunk-5UTFL4QJ.js} +6 -2
- package/chunk-5ZUL4CUO.js +10 -0
- package/{chunk-UINEAQ2R.js → chunk-6D6VBVEW.js} +1 -1
- package/{chunk-IMDA4FW4.js → chunk-7IBK6MYW.js} +61 -46
- package/{chunk-BNMZ7QUV.js → chunk-AQDH76OK.js} +1 -1
- package/{chunk-IO7DYRPW.js → chunk-B4S7MR5S.js} +16 -12
- package/{chunk-KT6LENVP.js → chunk-BF2K6MRF.js} +2 -2
- package/{chunk-Q246OUG5.js → chunk-BKP7CFUD.js} +5 -5
- package/{chunk-2KDR4CWE.js → chunk-BYMV6QZG.js} +24 -1
- package/{chunk-MFW4BGJS.js → chunk-COM7GG76.js} +1 -1
- package/{chunk-HH65VA5U.js → chunk-CPH3W5A7.js} +15 -3
- package/{chunk-JITSBA52.js → chunk-DM4UNXPK.js} +2 -2
- package/{chunk-Q4KVAB6L.js → chunk-DSX6K7C2.js} +28 -9
- package/{chunk-Y2IFJ7VM.js → chunk-E2NP7ZQU.js} +3 -3
- package/{chunk-VARZWSKW.js → chunk-E3VQ6S3A.js} +3 -3
- package/{chunk-5EJZGJS2.js → chunk-F3UTRUDO.js} +3 -3
- package/{chunk-WSOMSDQB.js → chunk-G5X57NDE.js} +35 -1
- package/{chunk-BJIRLHJR.js → chunk-GII32WZW.js} +1 -0
- package/{chunk-OCL2YCAU.js → chunk-GRDSMV4V.js} +40 -40
- package/{chunk-LEYH5NOH.js → chunk-HGRDL36J.js} +4 -4
- package/{chunk-OZX2IPKM.js → chunk-HQCSU3DI.js} +1 -1
- package/{chunk-EXWOCYCR.js → chunk-HWZAXNO7.js} +10 -5
- package/{chunk-OAJRZ35U.js → chunk-IIKPWSPX.js} +1 -1
- package/{chunk-KC5FAHVS.js → chunk-JEDZAO7L.js} +1 -1
- package/{chunk-UWMQ6FPM.js → chunk-JTYPAMGP.js} +151 -1
- package/{chunk-YZHP76TR.js → chunk-KR3YI36B.js} +1 -1
- package/{chunk-GIG262ZG.js → chunk-LSSBA2TN.js} +1 -1
- package/{chunk-X77EN2BJ.js → chunk-MBEEYLGL.js} +2 -2
- package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
- package/{chunk-DS3SQTDT.js → chunk-NKIH4Q7W.js} +1 -1
- package/{chunk-GRJTR4PU.js → chunk-OH7H6LPC.js} +4 -4
- package/{chunk-OHUU52T3.js → chunk-OOLWKQSM.js} +1 -1
- package/{chunk-FMODTASJ.js → chunk-Q5FJJ6XI.js} +1 -7
- package/{chunk-JYYZCK2Z.js → chunk-QFMFJZLO.js} +1 -1
- package/{chunk-S6STPUMG.js → chunk-QMASIHYZ.js} +5 -5
- package/{chunk-VW3YGKWR.js → chunk-R2YY6MWV.js} +294 -203
- package/{chunk-ZSG2AQU4.js → chunk-RLEWGSM5.js} +62 -11
- package/{chunk-TGRQUFLU.js → chunk-RZYQMSQA.js} +1 -1
- package/{chunk-6ZC5KPXV.js → chunk-S3UI4IUJ.js} +903 -40
- package/{chunk-SPAQ4PVV.js → chunk-SAFZABH7.js} +1 -1
- package/{chunk-AYT2OKNM.js → chunk-SASGLNUD.js} +3 -3
- package/{chunk-L2VNQQ7M.js → chunk-SUERPXJZ.js} +368 -25
- package/{chunk-2XEVK4BT.js → chunk-TMAZ3VHN.js} +1 -1
- package/{chunk-US463UAD.js → chunk-U47DH2WO.js} +2 -2
- package/{chunk-NVHJWYUO.js → chunk-UBNV6CS6.js} +35 -33
- package/{chunk-UO66QKGI.js → chunk-UDEFS2PV.js} +4 -3
- package/{chunk-LSV2BOJL.js → chunk-VOOTT7HA.js} +1 -1
- package/{chunk-GXWEF4IZ.js → chunk-W2E6HIIK.js} +1 -1
- package/{chunk-P3AS5IPM.js → chunk-WKEUHK57.js} +3 -2
- package/{chunk-ZIHJVHFH.js → chunk-WON762L4.js} +1 -1
- package/{chunk-W7PGACND.js → chunk-WP6BC7OF.js} +10 -10
- package/{chunk-4FRNB4ZG.js → chunk-X2ZTVRXP.js} +4 -4
- package/{chunk-XCSSFPTB.js → chunk-XAQAF25W.js} +1 -1
- package/{chunk-HJKGQPYF.js → chunk-XGJAR4T5.js} +31 -14
- package/{chunk-PHDKTASK.js → chunk-XLGHBHGP.js} +1 -1
- package/{chunk-OKCTLCKS.js → chunk-YOXYA2GU.js} +1 -1
- package/{chunk-VQD6BTML.js → chunk-YPYMGGPJ.js} +3 -3
- package/{chunk-T4F2EQGN.js → chunk-ZHUTWJ3N.js} +2 -2
- package/{chunk-6RCZYDDC.js → chunk-ZKMYGRO7.js} +6 -6
- package/{contentThunks-Y2ACIFDB.js → contentThunks-TC3AENBY.js} +18 -18
- package/{createAgentAutomationAction-TNE3QMJR.js → createAgentAutomationAction-67EOD3WK.js} +18 -18
- package/{createDialogAction-BMGHBTQB.js → createDialogAction-4OCQC5MW.js} +20 -20
- package/{createPageAction-FFNIZPIS.js → createPageAction-JLGVP57B.js} +18 -18
- package/{dbSlice-4CUQE35F.js → dbSlice-RDGCE5MU.js} +4 -4
- package/{dialogCommands-3JC3BIXC.js → dialogCommands-JHSDKCR5.js} +26 -25
- package/{dialogSlice-3E7Z7HZV.js → dialogSlice-I2DK32ZT.js} +17 -17
- package/{docCreateCommands-6LNQLCTA.js → docCreateCommands-QUL6VWK2.js} +24 -23
- package/{docDeleteCommands-ZJOAPWZS.js → docDeleteCommands-DMQ2MU6I.js} +25 -24
- package/{docReadCommands-LJTRSBG6.js → docReadCommands-FVHENBU6.js} +24 -23
- package/{docStore-R47ABXBB.js → docStore-OLC6MD7B.js} +5 -5
- package/{docUpdateCommands-7P3QF3N2.js → docUpdateCommands-VA6V5C6L.js} +24 -23
- package/{getPricing-TV6ZB7ES.js → getPricing-YYXTEPBP.js} +3 -3
- package/{handleSendMessageAction-FFYOGXAO.js → handleSendMessageAction-GRDIRXAK.js} +17 -17
- package/index.js +81 -81
- package/{machineCommands-FN5GGQV3.js → machineCommands-IJJ66MYU.js} +47 -46
- package/{machineWsRunDispatch-H47IA7ZT.js → machineWsRunDispatch-PP2ZBS6D.js} +47 -46
- package/{memberThunks-N35XAOC6.js → memberThunks-WQGQWYYT.js} +5 -5
- package/{models-CMXFDBQH.js → models-UN7YGMPM.js} +2 -2
- package/{offlineMarxistsAgentCommand-GEH6SNNA.js → offlineMarxistsAgentCommand-JEWCIAWM.js} +1 -1
- package/package.json +1 -1
- package/{providerPresetApply-D2GGHPI7.js → providerPresetApply-NO73BG45.js} +6 -6
- package/{providerRegistry-MU6C4ABD.js → providerRegistry-OVY4VKNN.js} +6 -6
- package/{read-2PV4PN2E.js → read-S4WC2OUK.js} +3 -3
- package/{readDocTool-FGK5XGAW.js → readDocTool-PQNM63KV.js} +1 -1
- package/{readlineWorkspace-NXKHYZEU.js → readlineWorkspace-ASJECDJD.js} +123 -91
- package/{removeDialogAgentAction-O2POGBOE.js → removeDialogAgentAction-YJZ6XJV6.js} +7 -7
- package/{runAgentClientLoop-CEBV5UPD.js → runAgentClientLoop-KIOQSDRC.js} +36 -36
- package/{setDialogExtraReferencesAction-KPSVVY3C.js → setDialogExtraReferencesAction-E6A3WL4E.js} +5 -5
- package/{setPrimaryDialogAgentAction-RMJETONI.js → setPrimaryDialogAgentAction-WBLIVICQ.js} +7 -7
- package/{settingSlice-I6MTTNDX.js → settingSlice-JR6S7TRD.js} +6 -6
- package/{spaceCommands-JHT4ALCQ.js → spaceCommands-WDUNCAK5.js} +24 -23
- package/{streamAgentChatTurn-SFCZP4GY.js → streamAgentChatTurn-EGQDPMAO.js} +44 -42
- package/{switchDialogAgentAction-OQSGWVQQ.js → switchDialogAgentAction-DTR36ZY2.js} +4 -4
- package/{tableCommands-SUNTHAYX.js → tableCommands-O6NWHFKV.js} +1 -1
- package/{toolApiClient-VGYUB4P5.js → toolApiClient-7PSIFQPJ.js} +2 -2
- package/{tools-K3YOTESV.js → tools-AOVE5LKM.js} +33 -33
- package/tuiSummaryLlmCaller-XRQCSNYQ.js +127 -0
- package/{updateCommands-Y363MC3L.js → updateCommands-2M74UL7P.js} +2 -2
- package/{updateDialogTitleAction-CSPKYQRO.js → updateDialogTitleAction-T66TXHIR.js} +38 -21
- package/tuiSummaryLlmCaller-T2OA5ZVB.js +0 -116
|
@@ -405,6 +405,8 @@ function createRunActivityTracker(runId, deps = {}, options = {}) {
|
|
|
405
405
|
const fs = deps.fs ?? nodeFs;
|
|
406
406
|
const now = deps.now ?? (() => /* @__PURE__ */ new Date());
|
|
407
407
|
const minWriteIntervalMs = options.minWriteIntervalMs ?? DEFAULT_ACTIVITY_WRITE_INTERVAL_MS;
|
|
408
|
+
const keepAlive = options.keepAlive ?? true;
|
|
409
|
+
let disposed = false;
|
|
408
410
|
let lastEventAt = now().toISOString();
|
|
409
411
|
let inFlight = null;
|
|
410
412
|
const counters = { llmCalls: 0, toolCalls: 0, fileEdits: 0 };
|
|
@@ -425,7 +427,9 @@ function createRunActivityTracker(runId, deps = {}, options = {}) {
|
|
|
425
427
|
};
|
|
426
428
|
}
|
|
427
429
|
function doWrite() {
|
|
430
|
+
if (disposed) return;
|
|
428
431
|
writeTimer = void 0;
|
|
432
|
+
const attemptAt = now().getTime();
|
|
429
433
|
withRunRecordLock(
|
|
430
434
|
runId,
|
|
431
435
|
deps,
|
|
@@ -438,7 +442,10 @@ function createRunActivityTracker(runId, deps = {}, options = {}) {
|
|
|
438
442
|
},
|
|
439
443
|
{ strict: true }
|
|
440
444
|
);
|
|
445
|
+
if (lastWriteAt < attemptAt) lastWriteAt = attemptAt;
|
|
446
|
+
if (keepAlive) scheduleWrite();
|
|
441
447
|
}
|
|
448
|
+
scheduleWrite();
|
|
442
449
|
function scheduleWrite() {
|
|
443
450
|
if (writeTimer !== void 0) return;
|
|
444
451
|
const elapsed = now().getTime() - lastWriteAt;
|
|
@@ -446,6 +453,7 @@ function createRunActivityTracker(runId, deps = {}, options = {}) {
|
|
|
446
453
|
writeTimer = setTimeout(doWrite, delay);
|
|
447
454
|
}
|
|
448
455
|
function onLoopEvent(event) {
|
|
456
|
+
if (disposed) return;
|
|
449
457
|
lastEventAt = new Date(event.atMs).toISOString();
|
|
450
458
|
switch (event.kind) {
|
|
451
459
|
case "llm-start":
|
|
@@ -480,6 +488,7 @@ function createRunActivityTracker(runId, deps = {}, options = {}) {
|
|
|
480
488
|
doWrite();
|
|
481
489
|
}
|
|
482
490
|
function dispose() {
|
|
491
|
+
disposed = true;
|
|
483
492
|
if (writeTimer !== void 0) {
|
|
484
493
|
clearTimeout(writeTimer);
|
|
485
494
|
writeTimer = void 0;
|
|
@@ -817,10 +826,13 @@ async function spawnLocalBackgroundRun(input, deps = {}) {
|
|
|
817
826
|
});
|
|
818
827
|
proc.unref();
|
|
819
828
|
if (typeof proc.pid === "number") {
|
|
820
|
-
record.pid = proc.pid;
|
|
821
829
|
const processStartedAt = (deps.getProcessStartTime ?? defaultGetProcessStartTime)(proc.pid);
|
|
822
|
-
|
|
823
|
-
|
|
830
|
+
withRunRecordLock(runId, deps, () => {
|
|
831
|
+
const latest = readRunRecord(runId, deps) ?? record;
|
|
832
|
+
latest.pid = proc.pid;
|
|
833
|
+
if (processStartedAt) latest.processStartedAt = processStartedAt.toISOString();
|
|
834
|
+
writeRunRecord(latest, deps);
|
|
835
|
+
});
|
|
824
836
|
}
|
|
825
837
|
return { runId, pid: proc.pid, logPath, queuePath, batchId };
|
|
826
838
|
}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
DEFAULT_SYSTEM_AGENT_CAPABILITIES,
|
|
6
6
|
noloAgentId
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-546FPOW3.js";
|
|
8
8
|
import {
|
|
9
9
|
asRecordOrEmpty
|
|
10
10
|
} from "./chunk-KX6YBIHG.js";
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
toTimestampMs,
|
|
15
15
|
upsert,
|
|
16
16
|
write
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-F3UTRUDO.js";
|
|
18
18
|
import {
|
|
19
19
|
createUserKey,
|
|
20
20
|
createUserPreferenceKey,
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
} from "./chunk-PUOC4YRO.js";
|
|
5
5
|
import {
|
|
6
6
|
AGENT_SELECTION_PRIORITY_INSTRUCTIONS
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-YOXYA2GU.js";
|
|
8
8
|
import {
|
|
9
9
|
getModelContextWindow
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-GRDSMV4V.js";
|
|
11
11
|
import {
|
|
12
12
|
estimateTokenCount
|
|
13
13
|
} from "./chunk-PSCNXBYA.js";
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
PLATFORM_HOSTED_KIMI_K3_MODEL,
|
|
19
19
|
isFireworksKimiModel,
|
|
20
20
|
isNoloHostedProvider
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-JTYPAMGP.js";
|
|
22
22
|
import {
|
|
23
23
|
asTrimmedLowercaseString
|
|
24
24
|
} from "./chunk-QSJ3HFEF.js";
|
|
@@ -91,6 +91,13 @@ var buildStartupProtocolBlock = (options = {}) => {
|
|
|
91
91
|
};
|
|
92
92
|
|
|
93
93
|
// packages/agent-runtime/runtimeGuidance.ts
|
|
94
|
+
var NOLO_WORKING_PHILOSOPHY = [
|
|
95
|
+
"--- Nolo \u5DE5\u4F5C\u539F\u5219 ---",
|
|
96
|
+
"\u9002\u5E94\u7528\u6237\u7684\u5DE5\u4F5C\u65B9\u5F0F\uFF0C\u800C\u4E0D\u662F\u8981\u6C42\u7528\u6237\u9002\u5E94\u4F60\u3002\u4FDD\u62A4\u7528\u6237\u6709\u9650\u7684\u6CE8\u610F\u529B\uFF1A\u80FD\u53EF\u9760\u5904\u7406\u7684\u5E38\u89C4\u590D\u6742\u6027\u5C3D\u91CF\u81EA\u884C\u5904\u7406\uFF1B\u771F\u6B63\u5F71\u54CD\u76EE\u6807\u3001\u98CE\u9669\u3001\u5BA1\u7F8E\u3001\u8D39\u7528\u3001\u6743\u9650\u3001\u4E0D\u53EF\u9006\u540E\u679C\u548C\u65B9\u5411\u7684\u51B3\u5B9A\u7559\u7ED9\u7528\u6237\u3002",
|
|
97
|
+
"\u5C0A\u91CD\u7528\u6237\u7684\u610F\u56FE\u4E0E\u5224\u65AD\uFF0C\u4F46\u4E0D\u8981\u76F2\u4ECE\uFF1B\u5F53\u786E\u5B9E\u80FD\u6539\u53D8\u7ED3\u679C\u65F6\uFF0C\u6307\u51FA\u91CD\u8981\u76F2\u533A\u3001\u98CE\u9669\u3001\u66F4\u597D\u7684\u65B9\u6848\u6216\u65B0\u7684\u53EF\u80FD\u3002\u4E0D\u8981\u4E3A\u4E86\u663E\u5F97\u6709\u601D\u8003\u800C\u523B\u610F\u53CD\u9A73\u3002",
|
|
98
|
+
"\u5229\u7528\u76F8\u5173\u7684 Space\u3001\u8BB0\u5FC6\u3001\u5386\u53F2\u51B3\u5B9A\u548C\u5F53\u524D\u4E0A\u4E0B\u6587\uFF0C\u8BA9\u5408\u4F5C\u4EA7\u751F\u79EF\u7D2F\uFF1B\u4E0D\u8981\u56E0\u4E3A\u5B58\u5728\u65E7\u4E0A\u4E0B\u6587\u5C31\u5F3A\u884C\u5E26\u5165\u65E0\u5173\u4EFB\u52A1\uFF0C\u4E5F\u4E0D\u8981\u8BA9\u7528\u6237\u91CD\u590D\u8BF4\u660E\u5DF2\u7ECF\u53EF\u7528\u7684\u4FE1\u606F\u3002",
|
|
99
|
+
"\u76EE\u6807\u4E0D\u662F\u66FF\u7528\u6237\u505A\u6240\u6709\u51B3\u5B9A\uFF0C\u4E5F\u4E0D\u662F\u628A\u6240\u6709\u9009\u62E9\u91CD\u65B0\u4E22\u7ED9\u7528\u6237\uFF0C\u800C\u662F\u51CF\u5C11\u65E0\u610F\u4E49\u7684\u6253\u6270\uFF0C\u8BA9\u7528\u6237\u628A\u6CE8\u610F\u529B\u653E\u5728\u771F\u6B63\u9700\u8981\u5176\u5224\u65AD\u7684\u5730\u65B9\u3002"
|
|
100
|
+
].join("\n");
|
|
94
101
|
var normalizeToolName = (name) => name.replace(/[-_]/g, "").toLowerCase();
|
|
95
102
|
var hasAnyTool = (normalizedTools, candidates) => candidates.some((candidate) => normalizedTools.has(normalizeToolName(candidate)));
|
|
96
103
|
var hasAllTools = (normalizedTools, candidates) => candidates.every((candidate) => normalizedTools.has(normalizeToolName(candidate)));
|
|
@@ -146,11 +153,14 @@ var resolveRuntimeGuidanceToolOptions = (tools = []) => {
|
|
|
146
153
|
var buildRuntimeGuidanceBlocks = (tools = []) => {
|
|
147
154
|
const options = resolveRuntimeGuidanceToolOptions(tools);
|
|
148
155
|
const normalizedTools = canonicalizeToolNames(tools);
|
|
156
|
+
const startupProtocol = buildStartupProtocolBlock({
|
|
157
|
+
hasCheckEnvTool: options.hasCheckEnvTool,
|
|
158
|
+
hasExecShellTool: options.hasExecShellTool
|
|
159
|
+
});
|
|
149
160
|
return {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
}),
|
|
161
|
+
// 复用现有 startup-protocol session-scope 槽位,保证 web/server/local 三条
|
|
162
|
+
// 装配线无需各自新增一份全局哲学;具体 startup protocol 为空时原则仍常驻。
|
|
163
|
+
startupProtocol: [NOLO_WORKING_PHILOSOPHY, startupProtocol].filter(Boolean).join("\n\n"),
|
|
154
164
|
contextLayerContract: buildContextLayerContractBlock({
|
|
155
165
|
hasRememberMemoryTool: options.hasRememberMemoryTool,
|
|
156
166
|
hasDocTools: options.hasDocTools
|
|
@@ -190,13 +200,22 @@ var TOOL_USE_GUIDANCE = `--- \u5DE5\u5177\u4F7F\u7528\u7EAA\u5F8B ---
|
|
|
190
200
|
var AGENT_ORCHESTRATION_RUN_INSTRUCTIONS = `--- \u591A Agent \u7F16\u6392\uFF08\u540E\u53F0 Run\uFF09 ---
|
|
191
201
|
\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 \u63A7\u5236/\u8BCA\u65AD\u3002\u4F55\u65F6\u6D3E\u53D1\u89C1\u300C\u591A Agent \u534F\u4F5C\u300D\u6BB5\uFF1B\u672C\u6BB5\u53EA\u8BB2\u6D3E\u53D1\u4E4B\u540E\u7684\u76EF\u68A2\u4E0E\u6392\u9519\u3002
|
|
192
202
|
|
|
193
|
-
1. \u76EF\u68A2\uFF1A**\u5F02\u6B65\u6D3E\u53D1\u540E\u7ACB\u5373\u6536\u5C3E\uFF0C\u7B49\u7EC8\u6001\u901A\u77E5\u3002** \u4E32\u884C\u4F9D\u8D56\u4E0D\u662F\u963B\u585E\u5BF9\u8BDD\u7684\u7406\u7531\u3002\
|
|
203
|
+
1. \u76EF\u68A2\uFF1A**\u5F02\u6B65\u6D3E\u53D1\u540E\u7ACB\u5373\u6536\u5C3E\uFF0C\u7B49\u7EC8\u6001\u901A\u77E5\u3002** \u4E32\u884C\u4F9D\u8D56\u4E0D\u662F\u963B\u585E\u5BF9\u8BDD\u7684\u7406\u7531\u3002\u7B49\u5F85\u65B9\u5F0F\u6309\u73AF\u5883\u5206\u4E09\u79CD\uFF1A\u2460 controlAgentRun \u6709 wait action \u2192 \u7528\u5B83\u963B\u585E\u5230\u7EC8\u6001\uFF08\u4EC5\u9650\u9884\u8BA1 <100s \u4E14\u9A6C\u4E0A\u8981\u7528\u7ED3\u679C\u7684\u573A\u666F\uFF0C\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u540C\u6B65\u7B49\u5F85\uFF09\uFF1B\u2461 \u65E0 wait action \u4F46\u5BBF\u4E3B\u6709 terminal wake \u2192 \u6D3E\u53D1\u540E\u76F4\u63A5\u7ED3\u675F\u672C\u8F6E\u56DE\u590D\uFF0Crun \u5230\u7EC8\u6001\u65F6\u5BBF\u4E3B\u81EA\u52A8\u628A\u7236\u5BF9\u8BDD\u63A5\u56DE\u6765\uFF0C\u4E0D\u9700\u8981\u4EFB\u4F55\u4E3B\u52A8\u7B49\u5F85\uFF1B\u2462 \u65E0 wait action \u4E14\u65E0 terminal wake \u2192 \u6D3E\u53D1\u540E\u540C\u6837\u7ED3\u675F\u672C\u8F6E\u56DE\u590D\uFF0Crun \u7ED3\u675F\u65F6\u4E0D\u4F1A\u88AB\u81EA\u52A8\u63A5\u56DE\u6765\uFF0C\u8FD9\u662F\u5BBF\u4E3B\u9650\u5236\uFF0C\u5E94\u5728\u56DE\u590D\u4E2D\u5982\u5B9E\u544A\u77E5\u7528\u6237\u300Crun \u5DF2\u5728\u540E\u53F0\u8FD0\u884C\uFF0C\u7ED3\u679C\u9700\u624B\u52A8\u67E5\u8BE2\u300D\uFF0C\u800C\u4E0D\u662F\u7528 execShell sleep \u8F6E\u8BE2\u7ED5\u8FC7\u3002**execShell sleep \u6C38\u8FDC\u4E0D\u662F\u7B49\u5F85 agent run \u7684\u6B63\u786E\u65B9\u5F0F**\uFF1A\u547D\u4EE4\u8D85 5s \u4F1A\u88AB\u81EA\u52A8 detach \u6210\u540E\u53F0\u4EFB\u52A1\uFF0C\u6BCF\u4E2A\u5B8C\u6210\u90FD\u4EA7\u751F\u4E00\u6761\u901A\u77E5\uFF0C\u5F62\u6210\u566A\u97F3\u4E14\u5B8C\u5168\u65E0\u6548\u3002
|
|
194
204
|
2. \u7981\u6B62\u8F6E\u8BE2\u3001\u7981\u7A7A\u8F6C\u3001\u522B\u590D\u8FF0 status\uFF1B\u8BED\u4E49\u4EE5\u5DE5\u5177\u63CF\u8FF0\u4E3A\u51C6\u3002status \u4EC5\u7528\u4E8E\u5F02\u5E38\u8BCA\u65AD\u2014\u2014\u6000\u7591\u5361\u6B7B\u3001failed \u540E\u770B\u8BE6\u60C5/\u65E5\u5FD7\u3001\u7528\u6237\u660E\u786E\u8BE2\u95EE\u6267\u884C\u7EC6\u8282\uFF08tailLines:0 \u53EA\u770B\u6458\u8981\uFF09\uFF1B\u5B83\u4E0D\u662F stop \u524D\u7684 preflight\u3002\u5E76\u884C\uFF1A\u65E0\u6587\u4EF6\u4EA4\u96C6\u3001\u65E0\u771F\u5B9E\u6570\u636E\u4F9D\u8D56\u7684\u72EC\u7ACB\u5B50\u4EFB\u52A1\u9ED8\u8BA4\u5E76\u53D1\u6D3E\u53D1\uFF1B\u4E0D\u8981\u56E0\u5171\u7528\u540C\u4E00\u6267\u884C agent/\u901A\u9053\u800C\u81EA\u884C\u52A0\u300C\u901A\u9053\u4E32\u884C\u300D\u4FDD\u5B88\u5047\u8BBE\uFF08\u540C\u901A\u9053\u5141\u8BB8\u5E76\u53D1 fork\uFF0C\u5B9E\u4F8B\u95F4\u65E0\u4E0A\u4E0B\u6587\u5171\u4EAB\uFF09\uFF0C\u53EA\u6709\u771F\u5B9E\u6587\u4EF6/\u6570\u636E\u4F9D\u8D56\u6216 brief \u660E\u793A\u51B2\u7A81\u9762\u65F6\u624D\u4E32\u884C\u3002
|
|
195
205
|
3. \u6392\u9519\u5148\u5206\u8BCA\uFF1AagentKey \u6CA1\u7167\u6284 listAgents \u5C31\u5148\u4FEE key\uFF08\u4E0D\u7B97\u901A\u9053\u6545\u969C\uFF09\uFF1B\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\u540C\u4E00\u5DF2\u9A8C\u8BC1 key \u4ECD\u5931\u8D25\u4E14\u9519\u8BEF\u660E\u786E\u6307\u5411\u901A\u9053\uFF08429\u3001\u9274\u6743\u5931\u8D25\u3001machine offline\uFF09\u624D\u8BB0\u4E3A\u901A\u9053\u6545\u969C\u3002\u5224\u5B9A\u300C\u6D3E\u53D1\u901A\u9053\u6574\u4F53\u4E0D\u53EF\u7528\u300D\u9700 \u22652 \u4E2A\u4E0D\u540C\u5019\u9009\u5404\u81EA\u5B8C\u6210\u300C\u5DF2\u9A8C\u8BC1 key + \u4E00\u6B21\u771F\u5B9E\u6D3E\u53D1\u300D\u4E14\u5931\u8D25\uFF0C\u5019\u9009\u4E0D\u8DB3\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
|
|
196
206
|
4. \u53EA\u6709 status=failed/\u8D85\u65F6\u6216 progress \u957F\u65F6\u95F4\u65E0\u52A8\u9759\uFF08\u7591\u4F3C\u5361\u6B7B\uFF09\u624D\u62C9 tailLines:30 \u770B\u65E5\u5FD7\u3002append \u53EF\u76F4\u63A5\u8C03\u7528\u2014\u2014not found/\u5DF2\u7EC8\u6001/\u8FD0\u884C\u4E2D\u5165\u961F\u7531 executor \u81EA\u8BC1\uFF1Bstop \u53EF\u76F4\u63A5\u8C03\u7528\uFF0Cnot found/\u5DF2\u7EC8\u6001/\u8FD0\u884C\u4E2D\u7531\u63A7\u5236\u5E73\u9762\u81EA\u884C\u5904\u7406\uFF08\u5DF2\u7EC8\u6001\u539F\u6837\u8FD4\u56DE\u3001\u4E0D\u4F1A\u88AB\u8986\u76D6\uFF09\u3002`;
|
|
197
207
|
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 ---
|
|
198
208
|
\u4EA7\u51FA\u4F18\u5148\uFF1A\u4E0D\u4E3A\u300C\u51D1\u6570\u91CF\u300D\u6D3E\u53D1\uFF0C\u4E5F\u4E0D\u5305\u529E\u53EF\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\u3002
|
|
199
209
|
|
|
210
|
+
**\u6D3E\u53D1\u4EF7\u503C\uFF08\u5148\u5224\u65AD\u503C\u4E0D\u503C\u5F97\u6D3E\uFF0C\u518D\u9009\u4EBA\uFF09**\uFF1A
|
|
211
|
+
- \u4E0D\u4E3A\u201C\u770B\u8D77\u6765\u50CF\u591A Agent\u201D\u800C\u6D3E\u53D1\u3002\u53EA\u6709\u9884\u671F\u65B0\u589E\u4EF7\u503C\u660E\u663E\u5927\u4E8E\u534F\u4F5C\u6210\u672C\u65F6\u624D\u6D3E\u3002
|
|
212
|
+
- \u4EF7\u503C\u4E0D\u53EA\u770B\u201C\u4E3B Agent \u505A\u4E0D\u52A8\u201D\u3002\u81F3\u5C11\u4ECE\u4E09\u79CD\u6760\u6746\u5224\u65AD\uFF1A
|
|
213
|
+
1. **\u4E0A\u4E0B\u6587\u6760\u6746\uFF08Context leverage\uFF09**\uFF1A\u628A\u673A\u68B0 inventory\u3001\u5927\u8F93\u51FA\u3001\u91CD\u590D\u9A8C\u8BC1\u5FAA\u73AF\u3001\u8BC1\u636E\u641C\u96C6\u9694\u79BB\u51FA\u53BB\uFF0C\u4FDD\u62A4\u4E3B\u5BF9\u8BDD\u4E0A\u4E0B\u6587\u4E0E\u6CE8\u610F\u529B\u3002
|
|
214
|
+
2. **\u5E76\u884C\u6760\u6746\uFF08Parallel leverage\uFF09**\uFF1A\u4E24\u4E2A\u6216\u66F4\u591A\u4E92\u4E0D\u4F9D\u8D56\u7684\u5DE5\u4F5C\u6D41\u53EF\u4EE5\u540C\u65F6\u63A8\u8FDB\uFF0C\u7F29\u77ED\u603B\u5B8C\u6210\u65F6\u95F4\u3002
|
|
215
|
+
3. **\u8BA4\u77E5\u6760\u6746\uFF08Cognitive leverage\uFF09**\uFF1A\u72EC\u7ACB\u89C6\u89D2\u3001\u53CD\u65B9\u5BA1\u67E5\u3001\u521B\u610F\u5206\u652F\u3001\u9886\u57DF\u4E13\u5BB6\u6216\u4E0D\u540C\u6A21\u578B\u80FD\u663E\u8457\u63D0\u9AD8\u65B9\u6848\u8D28\u91CF\u3001\u53D1\u73B0\u76F2\u533A\u6216\u964D\u4F4E\u5171\u4EAB\u9519\u8BEF\u98CE\u9669\u3002\u4EA7\u54C1\u3001\u8BBE\u8BA1\u3001\u7814\u7A76\u3001\u5199\u4F5C\u3001\u6218\u7565\u548C\u590D\u6742\u51B3\u7B56\u540C\u6837\u9002\u7528\uFF0C\u4E0D\u9650\u4E8E\u4EE3\u7801\u3002
|
|
216
|
+
- **\u53CD\u7EA6\u675F**\uFF1A\u5982\u679C\u5B50 Agent \u9884\u8BA1\u53EA\u4F1A\u590D\u8FF0\u7236 Agent \u5DF2\u77E5\u4FE1\u606F\u3001\u6CA1\u6709\u72EC\u7ACB\u8BC1\u636E/\u89C6\u89D2/\u5E76\u884C\u6536\u76CA\uFF0C\u5C31\u4E0D\u8981\u6D3E\u3002\u4E0D\u8981\u628A\u534F\u8C03\u5F00\u9500\u4F2A\u88C5\u6210\u201C\u66F4\u8BA4\u771F\u201D\u3002
|
|
217
|
+
- **\u4FDD\u62A4\u7528\u6237\u6CE8\u610F\u529B**\uFF1A\u7F16\u6392\u8005\u5E94\u5148\u5728\u5185\u90E8\u5B8C\u6210\u80FD\u53EF\u9760\u5B8C\u6210\u7684\u6BD4\u8F83\u3001\u7B5B\u9009\u4E0E\u9ED8\u8BA4\u5224\u65AD\uFF1B\u53EA\u6709\u76EE\u6807\u3001\u98CE\u9669\u3001\u5BA1\u7F8E\u3001\u8D39\u7528\u3001\u6743\u9650\u3001\u4E0D\u53EF\u9006\u540E\u679C\u7B49\u771F\u6B63\u9700\u8981\u7528\u6237\u51B3\u5B9A\u7684\u4E8B\u9879\u624D\u6253\u65AD\u7528\u6237\u3002\u4E0D\u8981\u628A\u201C\u8BF7\u9009\u62E9 A/B/C\u201D\u5F53\u4F5C\u5DF2\u7ECF\u5B8C\u6210\u89C4\u5212\uFF1B\u6709\u8DB3\u591F\u4F9D\u636E\u65F6\u5148\u7ED9\u63A8\u8350\u4E0E\u7406\u7531\uFF0C\u5E76\u8BF4\u660E\u4F55\u79CD\u6761\u4EF6\u4E0B\u5E94\u6539\u9009\u3002
|
|
218
|
+
|
|
200
219
|
**\u5E73\u53F0 Agent / \u5E73\u53F0\u79EF\u5206\u6263\u8D39\u786E\u8BA4\u786C\u95F8\u95E8\uFF08\u5FC5\u987B\u5148\u786E\u8BA4\uFF0C\u540E\u8C03\u7528\uFF09**\uFF1A
|
|
201
220
|
- \u53EA\u8981\u5019\u9009 Agent \u7684 apiSource \u4E3A platform\uFF0C\u6216\u65E0\u6CD5\u786E\u8BA4\u8C03\u7528\u662F\u5426\u6D88\u8017\u5E73\u53F0\u79EF\u5206/\u989D\u5EA6\uFF0C\u5C31\u5FC5\u987B\u628A\u5B83\u89C6\u4E3A\u53EF\u80FD\u6263\u8D39\u7684\u9AD8\u6210\u672C\u8C03\u7528\u3002
|
|
202
221
|
- **\u4EC5\u544A\u77E5\u7528\u6237\u201C\u4F1A\u6D88\u8017\u5E73\u53F0\u79EF\u5206\u201D\u4E0D\u7B49\u4E8E\u83B7\u5F97\u6388\u6743\u3002** \u8C03\u7528 startAgentRun \u524D\uFF0C\u5FC5\u987B\u5148\u5411\u7528\u6237\u8BF4\u660E\uFF1A\u539F\u4F18\u5148\u901A\u9053\u4E3A\u4F55\u4E0D\u53EF\u7528\u3001\u5019\u9009\u5E73\u53F0 Agent\u3001\u9884\u8BA1\u6263\u8D39/\u79EF\u5206\u5F71\u54CD\uFF0C\u5E76\u505C\u4E0B\u6765\u7B49\u5F85\u7528\u6237\u5F53\u6B21\u660E\u786E\u80AF\u5B9A\u6388\u6743\u3002
|
|
@@ -208,7 +227,7 @@ var AGENT_COLLABORATION_INSTRUCTIONS = `--- Agent \u7F16\u6392\u4E0E\u534F\u4F5C
|
|
|
208
227
|
**\u6D3E\u53D1\u524D\u81EA\u68C0**\uFF1A\u6BCF\u6B21\u8C03\u7528 startAgentRun \u524D\uFF0C\u5148\u6838\u5BF9 agentKey \u7684 apiSource\u3001\u6536\u85CF/\u79C1\u6709\u72B6\u6001\u3001\u5360\u7528\u72B6\u6001\uFF08\u4EC5\u5F53\u5DE5\u5177/\u901A\u9053\u660E\u786E\u8FD4\u56DE\u8BE5\u5019\u9009\u4E0D\u53EF\u7528\uFF0C\u6216\u9879\u76EE\u660E\u786E\u89C4\u5B9A\u5B58\u5728\u540C\u4E00 Agent \u7684\u8D44\u6E90\u9501\u65F6\u6210\u7ACB\uFF09\u548C\u5F53\u524D\u6388\u6743\uFF1B\u65E0\u6CD5\u786E\u8BA4\u6263\u8D39\u72B6\u6001\u65F6\u6309\u53EF\u80FD\u6263\u8D39\u5904\u7406\uFF0C\u5148\u8BE2\u95EE\uFF0C\u4E0D\u5F97\u731C\u6D4B\u3002
|
|
209
228
|
|
|
210
229
|
**\u5206\u6863\u6807\u51C6\uFF08\u4E24\u8D26\u5224\u636E\uFF1A\u4E0A\u4E0B\u6587\u8D26 / \u5E76\u884C\u8D26\uFF1B\u6A21\u578B\u6210\u672C\u4E0D\u6784\u6210\u6D3E\u53D1\u7406\u7531\uFF09**\uFF1A
|
|
211
|
-
- **\u81EA\u5DF1\u505A**\uFF1A\u7EAF\u95EE\u7B54/\u54A8\u8BE2/\u95F2\u804A\u76F4\u63A5\u56DE\u7B54\uFF1B\u4E24\u8D26\u5747\u4E0D\u547D\u4E2D\u7684\u4E2D\u5C0F\u5B9E\u73B0\uFF08\u5178\u578B \u22643 \u4E2A\u6587\u4EF6\u30011~2 \u6B21\u9A8C\u8BC1\u5F80\u8FD4\u3001\u65E0\u5927\u8F93\u51FA\u3001\u65E0 \u22652 \u4E2A\u72EC\u7ACB\u9886\u57DF\uFF09\u76F4\u63A5\u5B8C\u6210\uFF0C\u4E0D\u58F0\u660E\u3001\u4E0D\u6D3E\u53D1\u3002
|
|
230
|
+
- **\u81EA\u5DF1\u505A**\uFF1A\u7EAF\u95EE\u7B54/\u54A8\u8BE2/\u95F2\u804A\u9ED8\u8BA4\u76F4\u63A5\u56DE\u7B54\u2014\u2014\u4F46\u82E5\u95EE\u9898\u672C\u8EAB\u662F\u5F00\u653E\u5F0F\u521B\u4F5C\u3001\u590D\u6742\u53D6\u820D\u3001\u957F\u671F\u4EA7\u54C1\u8BED\u4E49\u3001\u91CD\u5927\u51B3\u7B56\u6216\u660E\u786E\u5B58\u5728\u591A\u89C6\u89D2\u4EF7\u503C\uFF0C\u8BA4\u77E5\u6760\u6746\u547D\u4E2D\u5373\u6309\u53D1\u6563/\u4F1A\u5546\u6D3E\u53D1\uFF1B\u53EA\u6709\u786E\u5B9E\u6CA1\u6709\u65B0\u589E\u89C6\u89D2/\u8BC1\u636E/\u5E76\u884C\u6536\u76CA\u65F6\u624D\u76F4\u63A5\u56DE\u7B54\u3002\u4E24\u8D26\u5747\u4E0D\u547D\u4E2D\u7684\u4E2D\u5C0F\u5B9E\u73B0\uFF08\u5178\u578B \u22643 \u4E2A\u6587\u4EF6\u30011~2 \u6B21\u9A8C\u8BC1\u5F80\u8FD4\u3001\u65E0\u5927\u8F93\u51FA\u3001\u65E0 \u22652 \u4E2A\u72EC\u7ACB\u9886\u57DF\uFF09\u76F4\u63A5\u5B8C\u6210\uFF0C\u4E0D\u58F0\u660E\u3001\u4E0D\u6D3E\u53D1\u3002
|
|
212
231
|
- **\u4E0A\u4E0B\u6587\u8D26\u547D\u4E2D \u2192 \u6D3E\u53D1**\uFF1A\u9A8C\u8BC1\u5FAA\u73AF \u22653 \u6B21\u300C\u8DD1\u547D\u4EE4\u2192\u770B\u62A5\u9519\u2192\u6539\u300D\uFF0C\u6216\u5355\u6B65\u5927\u8F93\u51FA\uFF08\u5168\u91CF typecheck \u62A5\u9519\u3001\u957F\u6D4B\u8BD5\u6808\u3001\u5927 diff\u3001\u5927\u6587\u4EF6\u8BFB\u53D6\uFF09\u2014\u2014\u91CD\u590D\u9A8C\u8BC1\u5FAA\u73AF\u3001\u5927\u8F93\u51FA\u5904\u7406\u4E0E\u673A\u68B0 inventory/\u8BC1\u636E\u5B9A\u4F4D\u4EA4\u7ED9\u5B50 Agent\uFF1B\u7236 Agent \u63A5\u6536\u7ED3\u6784\u5316\u8BC1\u636E\uFF0C\u5E76\u4EB2\u81EA\u590D\u6838\u6240\u6709\u5F71\u54CD\u5173\u952E\u51B3\u7B56\u7684\u539F\u59CB\u8BC1\u636E\u3002
|
|
213
232
|
- **\u5173\u952E\u51B3\u7B56\u4E0A\u4E0B\u6587\u4E0D\u5916\u5305**\uFF1A\u4E0A\u4E0B\u6587\u8D26\u53EA\u51B3\u5B9A\u91CD\u590D\u9A8C\u8BC1\u5FAA\u73AF\u3001\u5927\u8F93\u51FA\u5904\u7406\u3001\u673A\u68B0 inventory/\u8BC1\u636E\u5B9A\u4F4D\u7684\u6D3E\u53D1\uFF1B\u6D89\u53CA\u67B6\u6784\u3001\u8BA1\u8D39\u3001\u5B89\u5168\u3001\u6743\u9650\u3001\u6570\u636E\u5B8C\u6574\u6027\u3001\u4E0D\u53EF\u9006\u8FC1\u79FB\u3001\u957F\u671F\u4EA7\u54C1\u8BED\u4E49\u65F6\uFF0C\u7F16\u6392\u8005\u5FC5\u987B\u4EB2\u81EA\u8BFB\u53D6\u8DB3\u4EE5\u51B3\u7B56\u7684\u4E00\u7EA7\u4EE3\u7801\u3001\u6B63\u5F0F\u771F\u503C\u3001\u539F\u59CB\u65E5\u5FD7\u548C\u771F\u5B9E\u6570\u636E\u8BC1\u636E\uFF1B\u5B50 Agent \u53EF\u505A\u5B9A\u4F4D\u3001\u673A\u68B0\u6536\u96C6\u3001\u72EC\u7ACB\u590D\u6838\u4E0E\u53CD\u65B9\u5BA1\u67E5\uFF0C\u4F46\u5176\u6458\u8981\u4E0D\u80FD\u66FF\u4EE3\u5173\u952E\u4E0A\u4E0B\u6587\u4EB2\u8BFB\u3002
|
|
214
233
|
- **\u5E76\u884C\u8D26\u547D\u4E2D \u2192 \u6D3E\u53D1**\uFF1A\u22652 \u4E2A\u4E92\u4E0D\u4F9D\u8D56\u7684\u72EC\u7ACB\u9886\u57DF\uFF0C\u6216\u4ED3\u5E93\u6539\u52A8\uFF0B\u9A8C\u8BC1\uFF0B\u53D1\u5E03/\u8FC1\u79FB\u957F\u94FE\u8DEF \u2192 \u6309\u9886\u57DF\u5E76\u53D1\u6D3E\u53D1\u3002
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildLocalAgentLookupKeys,
|
|
3
3
|
shouldReadAgentKeyRemotely
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-IIKPWSPX.js";
|
|
5
5
|
import {
|
|
6
6
|
resolveCliAgentKeyInput
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-SAFZABH7.js";
|
|
8
8
|
import {
|
|
9
9
|
toErrorMessage
|
|
10
10
|
} from "./chunk-HNMXYYJR.js";
|
|
@@ -507,7 +507,7 @@ async function buildCreatedAgentRecord(args) {
|
|
|
507
507
|
const resolvedAgentInput = resolveCliAgentKeyInput(args.parsed.agentInput);
|
|
508
508
|
const agentKey = resolvedAgentInput.startsWith("agent-") ? resolvedAgentInput : createAgentKey.private(userId || "local", resolvedAgentInput);
|
|
509
509
|
if (args.parsed.presetId) {
|
|
510
|
-
const { resolveProviderPresetFields } = await import("./providerPresetApply-
|
|
510
|
+
const { resolveProviderPresetFields } = await import("./providerPresetApply-NO73BG45.js");
|
|
511
511
|
const fields = resolveProviderPresetFields(args.parsed.presetId);
|
|
512
512
|
if (fields.kind === "manual") {
|
|
513
513
|
throw new Error(
|
|
@@ -7,10 +7,10 @@ import {
|
|
|
7
7
|
listUserRecordsFromServers,
|
|
8
8
|
readDbRecordFromServers,
|
|
9
9
|
readLiveDbRecordAfterTombstoneMerge
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-3XMOAYRC.js";
|
|
11
11
|
import {
|
|
12
12
|
fetchWithTransientRetry
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-5UTFL4QJ.js";
|
|
14
14
|
import {
|
|
15
15
|
DRAIN_EXHAUSTED_USER_MESSAGE,
|
|
16
16
|
isDrainExhaustedResponse
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
boundSummaryText,
|
|
31
31
|
buildDialogReadEnvelope,
|
|
32
32
|
projectDialogReadForAgent
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-YOXYA2GU.js";
|
|
34
34
|
import {
|
|
35
35
|
toErrorMessage
|
|
36
36
|
} from "./chunk-HNMXYYJR.js";
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
readAction,
|
|
13
13
|
readRequestManager,
|
|
14
14
|
resolveAgentReadServers
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-OOLWKQSM.js";
|
|
16
16
|
import {
|
|
17
17
|
asyncThunkCreator,
|
|
18
18
|
buildCreateSlice,
|
|
@@ -712,7 +712,7 @@ var dbSlice = createSliceWithThunks({
|
|
|
712
712
|
// 动态 import 在调用期解析,避开 TDZ/求值顺序问题(同下方 share)。
|
|
713
713
|
read: create.asyncThunk(
|
|
714
714
|
async (payload, thunkApi) => {
|
|
715
|
-
const { readAction: readAction2 } = await import("./read-
|
|
715
|
+
const { readAction: readAction2 } = await import("./read-S4WC2OUK.js");
|
|
716
716
|
return readAction2(payload, thunkApi);
|
|
717
717
|
},
|
|
718
718
|
{
|
|
@@ -786,7 +786,7 @@ var dbSlice = createSliceWithThunks({
|
|
|
786
786
|
// 这里改成动态 import,运行期才解析,彻底断开这条边。
|
|
787
787
|
share: create.asyncThunk(
|
|
788
788
|
async (config, thunkApi) => {
|
|
789
|
-
const { shareResourceAction } = await import("./action-
|
|
789
|
+
const { shareResourceAction } = await import("./action-EXQVY3UO.js");
|
|
790
790
|
return shareResourceAction(config, thunkApi);
|
|
791
791
|
}
|
|
792
792
|
),
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isDevinOAuthAgent
|
|
3
|
+
} from "./chunk-5ZUL4CUO.js";
|
|
4
|
+
import {
|
|
5
|
+
getModelContextWindow
|
|
6
|
+
} from "./chunk-GRDSMV4V.js";
|
|
1
7
|
import {
|
|
2
8
|
findModelConfig,
|
|
3
9
|
getProviderByModelName
|
|
4
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-4CAPEGHN.js";
|
|
5
11
|
import {
|
|
6
12
|
asOptionalFiniteNumber
|
|
7
13
|
} from "./chunk-WWC7I6TA.js";
|
|
@@ -120,6 +126,33 @@ async function stripImagePartsForTextOnlyAgent(messages, agentConfig) {
|
|
|
120
126
|
return { messages: !supportsVision && hasImages ? stripImagePartsFromMessages(messages) : messages };
|
|
121
127
|
}
|
|
122
128
|
|
|
129
|
+
// packages/agent-runtime/devin/devinChannelWindows.ts
|
|
130
|
+
var DEVIN_CHANNEL_CONTEXT_WINDOWS = {
|
|
131
|
+
// SWE-2 家族(catalog 无裸 swe-2 selector;旧点号/裸写法如 swe-2、
|
|
132
|
+
// swe-1.7 实测均 permission_denied,已不是可用 selector)。
|
|
133
|
+
"swe-2-max": 262e3,
|
|
134
|
+
"swe-2-high": 262e3,
|
|
135
|
+
"swe-2-medium": 262e3,
|
|
136
|
+
// SWE-1.7 家族。
|
|
137
|
+
"swe-1-7": 262e3,
|
|
138
|
+
"swe-1-7-medium": 262e3,
|
|
139
|
+
"swe-1-7-lightning": 202752,
|
|
140
|
+
// SWE-1.6 家族(免费档默认)。
|
|
141
|
+
"swe-1-6": 2e5,
|
|
142
|
+
"swe-1-6-fast": 2e5,
|
|
143
|
+
// 经 devin 通道转售、且与厂商原生窗口不同的模型(catalog 枚举型 selector)。
|
|
144
|
+
"MODEL_GPT_5_2_LOW": 384e3,
|
|
145
|
+
"MODEL_GPT_5_2_MEDIUM": 384e3,
|
|
146
|
+
"MODEL_GPT_5_2_HIGH": 384e3,
|
|
147
|
+
"MODEL_GPT_5_2_XHIGH": 384e3
|
|
148
|
+
};
|
|
149
|
+
var devinChannelContextWindow = (model) => {
|
|
150
|
+
const raw = model?.trim();
|
|
151
|
+
if (!raw) return void 0;
|
|
152
|
+
return DEVIN_CHANNEL_CONTEXT_WINDOWS[raw];
|
|
153
|
+
};
|
|
154
|
+
var resolveAgentContextWindow = (agent) => (isDevinOAuthAgent(agent) ? devinChannelContextWindow(agent.model) : void 0) ?? getModelContextWindow(agent.model ?? "");
|
|
155
|
+
|
|
123
156
|
// packages/agent-runtime/agentRecordConfig.ts
|
|
124
157
|
function stringField(record, key) {
|
|
125
158
|
const value = record[key];
|
|
@@ -540,6 +573,7 @@ export {
|
|
|
540
573
|
resolveHistoricalToolContentCap,
|
|
541
574
|
projectToolMessageContent,
|
|
542
575
|
clipToolText,
|
|
576
|
+
resolveAgentContextWindow,
|
|
543
577
|
resolveAgentRuntimeConfigFromRecord,
|
|
544
578
|
buildDesktopAgentRuntimeAgentConfigSnapshot,
|
|
545
579
|
buildDesktopAgentRuntimeDialogHistorySnapshot,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
normalizeTimingMs
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BF2K6MRF.js";
|
|
4
4
|
import {
|
|
5
5
|
MODEL_LOOKUP_MAP
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-4CAPEGHN.js";
|
|
7
7
|
import {
|
|
8
8
|
ALL_MODELS
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-4QKBQHPQ.js";
|
|
10
10
|
import {
|
|
11
11
|
asTrimmedNonEmptyStringArray
|
|
12
12
|
} from "./chunk-VMFTFOWF.js";
|
|
@@ -15,11 +15,47 @@ import {
|
|
|
15
15
|
} from "./chunk-WWC7I6TA.js";
|
|
16
16
|
import {
|
|
17
17
|
BUILTIN_NOLO_AGENT_KEY
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-XGJAR4T5.js";
|
|
19
19
|
import {
|
|
20
20
|
asOptionalTrimmedString
|
|
21
21
|
} from "./chunk-G3SUCT4W.js";
|
|
22
22
|
|
|
23
|
+
// packages/ai/token/cacheTokenFields.ts
|
|
24
|
+
var finiteTokenCount = (value) => {
|
|
25
|
+
if (typeof value !== "number" || !Number.isFinite(value)) return void 0;
|
|
26
|
+
return Math.max(0, Math.floor(value));
|
|
27
|
+
};
|
|
28
|
+
var readNested = (value, path) => {
|
|
29
|
+
let cursor = value;
|
|
30
|
+
for (const key of path) {
|
|
31
|
+
if (!cursor || typeof cursor !== "object") return void 0;
|
|
32
|
+
cursor = cursor[key];
|
|
33
|
+
}
|
|
34
|
+
return finiteTokenCount(cursor);
|
|
35
|
+
};
|
|
36
|
+
var firstPositive = (usage, readers) => {
|
|
37
|
+
for (const read of readers) {
|
|
38
|
+
const value = read(usage);
|
|
39
|
+
if (value !== void 0 && value !== 0) return value;
|
|
40
|
+
}
|
|
41
|
+
return 0;
|
|
42
|
+
};
|
|
43
|
+
var topLevel = (field) => (usage) => {
|
|
44
|
+
if (!usage || typeof usage !== "object") return void 0;
|
|
45
|
+
return finiteTokenCount(usage[field]);
|
|
46
|
+
};
|
|
47
|
+
var nested = (path) => (usage) => readNested(usage, path);
|
|
48
|
+
var readCacheReadInputTokens = (usage) => firstPositive(usage, [
|
|
49
|
+
topLevel("cache_read_input_tokens"),
|
|
50
|
+
topLevel("prompt_cache_hit_tokens"),
|
|
51
|
+
nested(["input_tokens_details", "cached_tokens"]),
|
|
52
|
+
nested(["prompt_tokens_details", "cached_tokens"])
|
|
53
|
+
]);
|
|
54
|
+
var readCacheCreationInputTokens = (usage) => firstPositive(usage, [
|
|
55
|
+
topLevel("cache_creation_input_tokens"),
|
|
56
|
+
topLevel("prompt_cache_miss_tokens")
|
|
57
|
+
]);
|
|
58
|
+
|
|
23
59
|
// packages/ai/llm/getModelContextWindow.ts
|
|
24
60
|
var DEFAULT_CONTEXT_WINDOW = 256e3;
|
|
25
61
|
var QWEN_3_6_CONTEXT_WINDOW = 262144;
|
|
@@ -157,42 +193,6 @@ var getModelInfo = (modelName) => {
|
|
|
157
193
|
return map.get(modelName) || map.get(modelName.toLowerCase()) || null;
|
|
158
194
|
};
|
|
159
195
|
|
|
160
|
-
// packages/ai/token/cacheTokenFields.ts
|
|
161
|
-
var finiteTokenCount = (value) => {
|
|
162
|
-
if (typeof value !== "number" || !Number.isFinite(value)) return void 0;
|
|
163
|
-
return Math.max(0, Math.floor(value));
|
|
164
|
-
};
|
|
165
|
-
var readNested = (value, path) => {
|
|
166
|
-
let cursor = value;
|
|
167
|
-
for (const key of path) {
|
|
168
|
-
if (!cursor || typeof cursor !== "object") return void 0;
|
|
169
|
-
cursor = cursor[key];
|
|
170
|
-
}
|
|
171
|
-
return finiteTokenCount(cursor);
|
|
172
|
-
};
|
|
173
|
-
var firstPositive = (usage, readers) => {
|
|
174
|
-
for (const read of readers) {
|
|
175
|
-
const value = read(usage);
|
|
176
|
-
if (value !== void 0 && value !== 0) return value;
|
|
177
|
-
}
|
|
178
|
-
return 0;
|
|
179
|
-
};
|
|
180
|
-
var topLevel = (field) => (usage) => {
|
|
181
|
-
if (!usage || typeof usage !== "object") return void 0;
|
|
182
|
-
return finiteTokenCount(usage[field]);
|
|
183
|
-
};
|
|
184
|
-
var nested = (path) => (usage) => readNested(usage, path);
|
|
185
|
-
var readCacheReadInputTokens = (usage) => firstPositive(usage, [
|
|
186
|
-
topLevel("cache_read_input_tokens"),
|
|
187
|
-
topLevel("prompt_cache_hit_tokens"),
|
|
188
|
-
nested(["input_tokens_details", "cached_tokens"]),
|
|
189
|
-
nested(["prompt_tokens_details", "cached_tokens"])
|
|
190
|
-
]);
|
|
191
|
-
var readCacheCreationInputTokens = (usage) => firstPositive(usage, [
|
|
192
|
-
topLevel("cache_creation_input_tokens"),
|
|
193
|
-
topLevel("prompt_cache_miss_tokens")
|
|
194
|
-
]);
|
|
195
|
-
|
|
196
196
|
// packages/ai/token/normalizeUsage.ts
|
|
197
197
|
var normalizeStringArray = (value) => {
|
|
198
198
|
if (!Array.isArray(value)) return void 0;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
clearCliLocalRuntimePreparedAgentCache
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7IBK6MYW.js";
|
|
4
4
|
import {
|
|
5
5
|
getReadableCliDb
|
|
6
6
|
} from "./chunk-LS2ZANRJ.js";
|
|
@@ -12,10 +12,10 @@ import {
|
|
|
12
12
|
resolveAgentRecordFromHybridStore,
|
|
13
13
|
sanitizeAgentRecordForCliOutput,
|
|
14
14
|
writeAgentRecord
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-E2NP7ZQU.js";
|
|
16
16
|
import {
|
|
17
17
|
resolveCliAgentKeyInput
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-SAFZABH7.js";
|
|
19
19
|
import {
|
|
20
20
|
toErrorMessage
|
|
21
21
|
} from "./chunk-HNMXYYJR.js";
|
|
@@ -212,7 +212,7 @@ async function runAgentCreateCommand(args, deps = {}) {
|
|
|
212
212
|
clearCliLocalRuntimePreparedAgentCache();
|
|
213
213
|
let verifyResult;
|
|
214
214
|
if (parsed.verify) {
|
|
215
|
-
const { verifyCustomProvider } = await import("./agentProviderCommands-
|
|
215
|
+
const { verifyCustomProvider } = await import("./agentProviderCommands-TOMVKJOV.js");
|
|
216
216
|
const rec = built.nextRecord;
|
|
217
217
|
verifyResult = await verifyCustomProvider({
|
|
218
218
|
providerUrl: rec.customProviderUrl,
|
|
@@ -35,15 +35,16 @@ import {
|
|
|
35
35
|
resolvePlatformAuthToken,
|
|
36
36
|
resolvePlatformServerUrl,
|
|
37
37
|
resolveProviderTransportDecision
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-MBEEYLGL.js";
|
|
39
39
|
import {
|
|
40
40
|
clipCompactText,
|
|
41
41
|
isMeaningfulChatCompletionOutput,
|
|
42
42
|
isMeaningfulResponsesOutput
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-BF2K6MRF.js";
|
|
44
44
|
import {
|
|
45
|
-
NOLO_CLIENT_VERSION_HEADER
|
|
46
|
-
|
|
45
|
+
NOLO_CLIENT_VERSION_HEADER,
|
|
46
|
+
isPlatformMimoProviderModel
|
|
47
|
+
} from "./chunk-JTYPAMGP.js";
|
|
47
48
|
import {
|
|
48
49
|
isRecord
|
|
49
50
|
} from "./chunk-KUG52IAP.js";
|
|
@@ -465,7 +466,11 @@ function isAbortOrTimeoutError(error) {
|
|
|
465
466
|
}
|
|
466
467
|
var CHAT_PROXY_PATH = "/api/v1/chat";
|
|
467
468
|
function shouldDisableThinking(providerConfig) {
|
|
468
|
-
return providerConfig.provider.toLowerCase() === "mimo" || /xiaomimimo\.com/i.test(providerConfig.endpoint)
|
|
469
|
+
return providerConfig.provider.toLowerCase() === "mimo" || /xiaomimimo\.com/i.test(providerConfig.endpoint) || // 平台托管 MiMo(provider=nolo + mimo-v2.6-*):endpoint 通常已解析成
|
|
470
|
+
// api.xiaomimimo.com/...(上面的正则已命中),但 transport=direct 时
|
|
471
|
+
// endpoint 是 nolo 服务器地址——模型 id 判据保证两跳都关掉 thinking
|
|
472
|
+
// (上游 thinking 默认 enabled)。
|
|
473
|
+
isPlatformMimoProviderModel(providerConfig.provider, providerConfig.model);
|
|
469
474
|
}
|
|
470
475
|
function isResponsesEndpoint(endpoint) {
|
|
471
476
|
return /\/responses$/i.test(endpoint.trim());
|