nolo-cli 0.38.0-alpha.2 → 0.47.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/{_executeModel-2S6HNTBF.js → _executeModel-JWAASOOT.js} +43 -45
- package/{action-KMBZ3LCZ.js → action-FLLC2SIX.js} +7 -7
- package/{addContentAction-KQ44UT2U.js → addContentAction-SVSPUUK4.js} +6 -6
- package/{addDialogAgentAction-ILSDCMYL.js → addDialogAgentAction-W3JGU4F7.js} +5 -5
- package/{agentDeleteCommand-6XYC7JVL.js → agentDeleteCommand-QL7TF5F2.js} +26 -27
- package/{agentEmailCommands-NGL5B3UC.js → agentEmailCommands-AC3XQM53.js} +57 -59
- package/{agentListCommands-R7TKN3DL.js → agentListCommands-4YMFHDU6.js} +33 -31
- package/{agentMachineCommands-AXOO4OKN.js → agentMachineCommands-MFQKYUV4.js} +25 -26
- package/{agentPullCommand-TSWAJPS2.js → agentPullCommand-M552CYSI.js} +2 -2
- package/{agentRecordCommands-GJHH5GYI.js → agentRecordCommands-QG3YBSTQ.js} +53 -55
- package/{agentRunCommand-4MEMHFT5.js → agentRunCommand-B4PGT36L.js} +56 -58
- package/{agentRunControl-7MUPSYDQ.js → agentRunControl-LHXOP4IU.js} +43 -1
- package/{agentRuntimeLocal-CPEWDR3Z.js → agentRuntimeLocal-V2UKJPNE.js} +21 -22
- package/{agentSlice-LAILHBMM.js → agentSlice-B5O3RTRP.js} +6 -6
- package/{agentSuperviseCommands-MKWW3ICX.js → agentSuperviseCommands-IMRZ56RC.js} +2 -2
- package/{appDeleteCommands-6SYOAMTR.js → appDeleteCommands-BQCRRHOM.js} +25 -26
- package/{appDeployCommands-ZNMFUV2K.js → appDeployCommands-UMJ67TUR.js} +25 -26
- package/{appDeployStatusCommands-G5FIZT64.js → appDeployStatusCommands-KASPUR4V.js} +25 -26
- package/{appGetCommands-4RIFLLZZ.js → appGetCommands-FFT2LTGF.js} +25 -26
- package/{appListCommands-DK2JJ65T.js → appListCommands-TAVWFRZZ.js} +25 -26
- package/{authCommand-B2XRHNJH.js → authCommand-OY2E2VQK.js} +12 -12
- package/{authCommands-GWABTFMR.js → authCommands-SBQVTD6V.js} +5 -5
- package/{chatQueueReduxAdapter-DQWFZYNL.js → chatQueueReduxAdapter-OVDKLHLD.js} +20 -20
- package/chunk-25J3BB35.js +6041 -0
- package/chunk-2BWU4ORW.js +2574 -0
- package/{chunk-U6QQLXWI.js → chunk-2X5S4IBZ.js} +1 -1
- package/{chunk-MJWX4JQO.js → chunk-3EEK7T3D.js} +1 -1
- package/{chunk-UNHKVD2N.js → chunk-43CXXVJD.js} +1 -1
- package/{chunk-WRP5TTM6.js → chunk-4MXGXSYN.js} +83 -3
- package/{chunk-2KO5QQFV.js → chunk-5IQX2XPA.js} +2 -2
- package/{chunk-ARFXKWJH.js → chunk-5PFBRLJN.js} +157 -51
- package/{chunk-W445DPVT.js → chunk-5QRCPERU.js} +1 -1
- package/{chunk-GKHV4UH5.js → chunk-5UOBIU5G.js} +31 -3
- package/{chunk-BMB563Y6.js → chunk-6BYAXNH5.js} +3 -3
- package/{chunk-SMPAUSX5.js → chunk-6FGXGFAH.js} +2 -2
- package/{chunk-6XIE5ZGI.js → chunk-6HIGYUBQ.js} +1 -1
- package/{chunk-NT3QRCVS.js → chunk-7US2USK7.js} +7 -7
- package/{chunk-FTM4KUOZ.js → chunk-7XTC3KRG.js} +1 -1
- package/{chunk-IMHO5LC6.js → chunk-7XZ5GXSN.js} +1 -1
- package/{chunk-E2OQ5N2F.js → chunk-AEXP2UZT.js} +341 -16
- package/{chunk-MZZZYUZS.js → chunk-AV2CELZZ.js} +37 -12
- package/{chunk-JI2TIPLP.js → chunk-AYXSUBVC.js} +1 -1
- package/{chunk-KR74XLMV.js → chunk-BIMCW2CC.js} +3 -3
- package/{chunk-GEGSCLZZ.js → chunk-C5UWCCLI.js} +3 -3
- package/{chunk-J6WH4PYZ.js → chunk-CIF4X6ZM.js} +1 -1
- package/{chunk-LZZQTQPY.js → chunk-CTXR4SRT.js} +3 -3
- package/{chunk-GZRMWK5R.js → chunk-DQLYEGP7.js} +2 -2
- package/{chunk-45NBTCS2.js → chunk-DROE55W3.js} +216 -48
- package/{chunk-GUYMR3JL.js → chunk-E2QH2AYX.js} +69 -3
- package/{chunk-B6H5XCT2.js → chunk-EMEUU5IY.js} +3 -3
- package/{chunk-X6EN3KJX.js → chunk-ENYDQKOB.js} +319 -71
- package/{chunk-RCFIB45Q.js → chunk-EVBFYPDC.js} +2 -2
- package/{chunk-PV734VZX.js → chunk-EXLOROHG.js} +1 -1
- package/{chunk-KHCLMKZZ.js → chunk-EY7V7REW.js} +280 -6
- package/{chunk-WRN7L5CS.js → chunk-FA4SY4F5.js} +1 -1
- package/{chunk-IFS5CUEH.js → chunk-FJHLA6SX.js} +1 -1
- package/{chunk-D72M3G32.js → chunk-FM6ZGNMV.js} +12 -12
- package/{chunk-T2BZICLK.js → chunk-G46DB6KG.js} +49 -6
- package/{chunk-FGLKRJDI.js → chunk-GK74OOFT.js} +2 -2
- package/{chunk-LM6IYQ3F.js → chunk-GLKOYSRU.js} +8 -1
- package/{chunk-YNAGAUJT.js → chunk-GYSVYO35.js} +61 -49
- package/{chunk-JIADXJYU.js → chunk-H2G6JXTR.js} +1 -1
- package/{chunk-MGIHZ5CJ.js → chunk-HAPCUPEO.js} +2 -2
- package/{chunk-LD6Y6RJY.js → chunk-HGDOIDQ4.js} +2 -2
- package/{chunk-IZNJDUJ4.js → chunk-I4JISVWK.js} +1 -1
- package/{chunk-N4XRDM26.js → chunk-IA3A5373.js} +2 -2
- package/{chunk-X2K2JSO4.js → chunk-IWUMSAQF.js} +5 -1
- package/{chunk-GEPHJJW4.js → chunk-L7NG2M6H.js} +1 -1
- package/{chunk-XQES6LXQ.js → chunk-LFLWZX76.js} +2 -2
- package/{chunk-IIOHYLIG.js → chunk-LGUQHYAL.js} +1 -1
- package/{chunk-4AWH4LQA.js → chunk-LYGNQHUW.js} +3 -1
- package/{db-3H3JECGY.js → chunk-M5PVFLD4.js} +11 -158
- package/{chunk-WN5AJG5I.js → chunk-MKZRKDQM.js} +1 -1
- package/{chunk-V5GA74HI.js → chunk-MZXZJVVD.js} +20 -39
- package/{chunk-EJAL5LSG.js → chunk-NC3CSWVT.js} +2 -2
- package/{chunk-6XG52ZQ6.js → chunk-NI2BS6UD.js} +22 -3
- package/{chunk-FXZBSLFK.js → chunk-NSQNNYGW.js} +20 -51
- package/{chunk-VOXNBPLB.js → chunk-OFSVXPQS.js} +651 -43
- package/{chunk-ZBB3MZR3.js → chunk-OLNC7AWK.js} +7 -4
- package/{chunk-J5NMOM35.js → chunk-OYNDYVSE.js} +1 -1
- package/{chunk-C6ELZQ7H.js → chunk-OZVGA4SY.js} +1 -1
- package/{chunk-K4KIFRIN.js → chunk-Q24S4NDF.js} +1 -1
- package/{chunk-HRSIJO5A.js → chunk-RNNAJ34U.js} +1 -1
- package/{chunk-JK7UM3LT.js → chunk-SEIOEDBB.js} +110 -49
- package/{chunk-2WKUUY2E.js → chunk-SVEUG45B.js} +5 -3
- package/{chunk-IZCHPD7T.js → chunk-TNPCQNGQ.js} +11 -6
- package/{chunk-4DMPISV6.js → chunk-URBGEE42.js} +2 -2
- package/{chunk-23KKIMD5.js → chunk-WVGEBWA6.js} +4 -4
- package/{chunk-TH7ZZKPJ.js → chunk-XIRSTDYF.js} +275 -134
- package/{chunk-64KIQZA2.js → chunk-XO3G35OV.js} +1 -1
- package/{chunk-CVXDBLYH.js → chunk-XOFZEJGM.js} +5 -5
- package/{chunk-XT73C4VH.js → chunk-Z5NW3O7V.js} +1 -1
- package/{codingSkills-H6N5EKSX.js → codingSkills-QLDAXJRA.js} +3 -4
- package/{cooldownCommands-C2SZLEEO.js → cooldownCommands-GI5NNWGL.js} +5 -3
- package/{createAgentAutomationAction-767ZITQJ.js → createAgentAutomationAction-TQ7PYONU.js} +21 -21
- package/{createDialogAction-H75NDXYH.js → createDialogAction-EOQFCM3K.js} +24 -25
- package/{createPageAction-KYJYZPLC.js → createPageAction-ZG5PH6BI.js} +22 -23
- package/db-VQSAOWAO.js +162 -0
- package/{dbSlice-PIQGICNM.js → dbSlice-XWUM4QOF.js} +5 -5
- package/deleteFile-NPZ64DFN.js +1 -1
- package/{dialogCommands-SSQLOBRU.js → dialogCommands-DCGMVLBA.js} +29 -27
- package/{dialogSlice-YJV3AVFM.js → dialogSlice-YHGPDBAZ.js} +20 -20
- package/{docCreateCommands-WYP6MQ56.js → docCreateCommands-A2LVLROP.js} +26 -28
- package/{docDeleteCommands-6YNU4LZ7.js → docDeleteCommands-ENMROKH6.js} +27 -29
- package/{docReadCommands-PFJMIPYU.js → docReadCommands-XSRUV4EM.js} +26 -28
- package/{docStore-JOODSWDW.js → docStore-WIKRGVQJ.js} +22 -22
- package/{docUpdateCommands-KAP6JSGT.js → docUpdateCommands-5B5NBORA.js} +26 -28
- package/{fetchMessages-CUEFN4GQ.js → fetchMessages-KZQVBXKY.js} +3 -3
- package/{getPricing-P3E2WRIH.js → getPricing-X3HXP6VQ.js} +3 -3
- package/{handleSendMessageAction-DGL6H4E4.js → handleSendMessageAction-WT4FDMQS.js} +21 -21
- package/index.js +70 -70
- package/levelLazyShim-GZBKODGI.js +7 -0
- package/{localDialogRead-P7CHFMIC.js → localDialogRead-NQ33HBSI.js} +2 -2
- package/{localRuntimeAuthority-S77B5QVB.js → localRuntimeAuthority-KQDAE64E.js} +4 -4
- package/{localRuntimeDb-N3H3HQ7G.js → localRuntimeDb-PF7CFKDL.js} +2 -2
- package/{machineCommands-NAFWPMLI.js → machineCommands-BFLTBAK6.js} +51 -53
- package/{machineWsRunDispatch-EWA7J37I.js → machineWsRunDispatch-VCJB5LHO.js} +51 -53
- package/{models-L7S2EKPM.js → models-7LWATQFH.js} +2 -2
- package/package.json +1 -1
- package/{read-6C2XD3YZ.js → read-DQQ75VI3.js} +2 -2
- package/{readDocTool-Y7AB365O.js → readDocTool-HCQQFAZD.js} +1 -1
- package/{readlineWorkspace-BCQVDX4V.js → readlineWorkspace-VBJLMU6V.js} +5168 -5003
- package/{removeDialogAgentAction-KG5WMJRZ.js → removeDialogAgentAction-DNONRKST.js} +7 -7
- package/{runAgentClientLoop-B3TTKXIX.js → runAgentClientLoop-4QOEJOJP.js} +41 -42
- package/{runtimeDoctorCommands-HT4O2PXL.js → runtimeDoctorCommands-JKTTN723.js} +4 -4
- package/serverStoreFactory-YMXDF4NI.js +20 -0
- package/{setDialogExtraReferencesAction-O2NLXMSM.js → setDialogExtraReferencesAction-ERHUPT3F.js} +6 -6
- package/{setPrimaryDialogAgentAction-FYYUY7PB.js → setPrimaryDialogAgentAction-6C2HYNEC.js} +7 -7
- package/{settingSlice-GPLI6E3M.js → settingSlice-YVRJFKQX.js} +6 -6
- package/{skillDiscovery-COX56OBO.js → skillDiscovery-GPUDHDTZ.js} +1 -2
- package/{spaceCommands-VHOKUADK.js → spaceCommands-FBB7XSAW.js} +24 -25
- package/{spaceSlice-ZKUZSVYD.js → spaceSlice-YMDZ4G6H.js} +21 -21
- package/{streamAgentChatTurn-PLTB7RMV.js → streamAgentChatTurn-5NBWQHY6.js} +93 -52
- package/{switchDialogAgentAction-GH5P6Q3Z.js → switchDialogAgentAction-HP57XYFP.js} +5 -5
- package/{tools-KQXDW66A.js → tools-37H5A4OG.js} +34 -35
- package/{tuiSummaryLlmCaller-SHRB4RWM.js → tuiSummaryLlmCaller-NBTWT57U.js} +25 -14
- package/{updateDialogTitleAction-OTYEQJAK.js → updateDialogTitleAction-XAGMXHW5.js} +24 -23
- package/chunk-4APLX2RT.js +0 -1514
- package/chunk-AETZ7AD6.js +0 -274
- package/chunk-OFZPJ3NT.js +0 -114
- package/chunk-P66M7LSQ.js +0 -58
- package/{chunk-6WD3OOJS.js → chunk-UV6VISQJ.js} +0 -0
- package/{tableCommands-PQUJ55AS.js → tableCommands-P2TXJ3CF.js} +1 -1
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
import {
|
|
2
|
+
asTrimmedNonEmptyStringArray
|
|
3
|
+
} from "./chunk-I42VC5KR.js";
|
|
4
|
+
import {
|
|
5
|
+
asOptionalTrimmedString
|
|
6
|
+
} from "./chunk-G3SUCT4W.js";
|
|
7
|
+
|
|
8
|
+
// packages/ai/node_modules/js-yaml/dist/js-yaml.mjs
|
|
2
9
|
function getDefaultExportFromCjs(x) {
|
|
3
10
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
|
|
4
11
|
}
|
|
@@ -1276,16 +1283,21 @@ function requireLoader() {
|
|
|
1276
1283
|
state.result += _result;
|
|
1277
1284
|
}
|
|
1278
1285
|
}
|
|
1286
|
+
function chargeMergeWork(state) {
|
|
1287
|
+
state.totalMergeKeys++;
|
|
1288
|
+
if (state.maxTotalMergeKeys !== -1 && state.totalMergeKeys > state.maxTotalMergeKeys) {
|
|
1289
|
+
throwError(state, "merge keys exceeded maxTotalMergeKeys (" + state.maxTotalMergeKeys + ")");
|
|
1290
|
+
}
|
|
1291
|
+
}
|
|
1279
1292
|
function mergeMappings(state, destination, source, overridableKeys) {
|
|
1280
1293
|
if (!common2.isObject(source)) {
|
|
1281
1294
|
throwError(state, "cannot merge mappings; the provided source object is unacceptable");
|
|
1282
1295
|
}
|
|
1296
|
+
chargeMergeWork(state);
|
|
1283
1297
|
const sourceKeys = Object.keys(source);
|
|
1284
1298
|
for (let index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {
|
|
1285
1299
|
const key = sourceKeys[index];
|
|
1286
|
-
|
|
1287
|
-
throwError(state, "merge keys exceeded maxTotalMergeKeys (" + state.maxTotalMergeKeys + ")");
|
|
1288
|
-
}
|
|
1300
|
+
chargeMergeWork(state);
|
|
1289
1301
|
if (!_hasOwnProperty.call(destination, key)) {
|
|
1290
1302
|
setProperty(destination, key, source[key]);
|
|
1291
1303
|
overridableKeys[key] = true;
|
|
@@ -1313,6 +1325,9 @@ function requireLoader() {
|
|
|
1313
1325
|
}
|
|
1314
1326
|
if (keyTag === "tag:yaml.org,2002:merge") {
|
|
1315
1327
|
if (Array.isArray(valueNode)) {
|
|
1328
|
+
if (valueNode.length > 100) {
|
|
1329
|
+
throwError(state, "abnormal merge sequence size");
|
|
1330
|
+
}
|
|
1316
1331
|
for (let index = 0, quantity = valueNode.length; index < quantity; index += 1) {
|
|
1317
1332
|
mergeMappings(state, _result, valueNode[index], overridableKeys);
|
|
1318
1333
|
}
|
|
@@ -3056,7 +3071,266 @@ var {
|
|
|
3056
3071
|
safeDump
|
|
3057
3072
|
} = yaml;
|
|
3058
3073
|
|
|
3074
|
+
// packages/ai/skills/skillDocProtocol.ts
|
|
3075
|
+
var SKILL_DOC_ENUMS = {
|
|
3076
|
+
triggerMode: ["explicit", "required", "recommended"],
|
|
3077
|
+
// budgetTier 只服务 WorkflowReferenceConfig;skill 侧已移除(零读点)。
|
|
3078
|
+
budgetTier: ["low", "medium", "high"],
|
|
3079
|
+
modality: ["text", "image", "video", "audio", "3d"],
|
|
3080
|
+
docKind: ["knowledge", "instruction", "skill"]
|
|
3081
|
+
};
|
|
3082
|
+
var SKILL_CONFIG_BLOCK = "skill-config";
|
|
3083
|
+
var EVAL_CONFIG_BLOCK = "eval-config";
|
|
3084
|
+
var WORKFLOW_CONFIG_BLOCK = "workflow-config";
|
|
3085
|
+
var normalizeStringArray = (value) => {
|
|
3086
|
+
if (!Array.isArray(value)) return void 0;
|
|
3087
|
+
const items = [...new Set(asTrimmedNonEmptyStringArray(value))];
|
|
3088
|
+
return items.length > 0 ? items : void 0;
|
|
3089
|
+
};
|
|
3090
|
+
var normalizeSkillEnumValue = (key, value) => typeof value === "string" && SKILL_DOC_ENUMS[key].includes(value) ? value : void 0;
|
|
3091
|
+
var normalizeSkillModalities = (value) => {
|
|
3092
|
+
const raw = normalizeStringArray(value);
|
|
3093
|
+
if (!raw) return void 0;
|
|
3094
|
+
const filtered = raw.flatMap((item) => {
|
|
3095
|
+
const modality = normalizeSkillEnumValue("modality", item);
|
|
3096
|
+
return modality ? [modality] : [];
|
|
3097
|
+
});
|
|
3098
|
+
return filtered.length > 0 ? Array.from(new Set(filtered)) : void 0;
|
|
3099
|
+
};
|
|
3100
|
+
var normalizeSkillConfig = (value, fallbackTools) => {
|
|
3101
|
+
if (!value || typeof value !== "object") return void 0;
|
|
3102
|
+
const record = value;
|
|
3103
|
+
const name = asOptionalTrimmedString(record.name) ?? "";
|
|
3104
|
+
const description = asOptionalTrimmedString(record.description) ?? "";
|
|
3105
|
+
if (!name || !description) return void 0;
|
|
3106
|
+
const triggerMode = normalizeSkillEnumValue("triggerMode", record.triggerMode);
|
|
3107
|
+
const modalities = normalizeSkillModalities(record.modalities);
|
|
3108
|
+
const toolNames = normalizeStringArray(record.toolNames) ?? normalizeStringArray(fallbackTools) ?? void 0;
|
|
3109
|
+
return {
|
|
3110
|
+
version: "0.1",
|
|
3111
|
+
kind: "skill",
|
|
3112
|
+
id: asOptionalTrimmedString(record.id),
|
|
3113
|
+
name,
|
|
3114
|
+
description,
|
|
3115
|
+
triggerMode,
|
|
3116
|
+
toolNames,
|
|
3117
|
+
modalities,
|
|
3118
|
+
requiredSkills: normalizeStringArray(record.requiredSkills),
|
|
3119
|
+
recommendedSkills: normalizeStringArray(record.recommendedSkills),
|
|
3120
|
+
promptPatch: asOptionalTrimmedString(record.promptPatch)
|
|
3121
|
+
};
|
|
3122
|
+
};
|
|
3123
|
+
var normalizeEvalConfig = (value) => {
|
|
3124
|
+
if (!value || typeof value !== "object") return void 0;
|
|
3125
|
+
const record = value;
|
|
3126
|
+
if (!Array.isArray(record.cases)) return void 0;
|
|
3127
|
+
const cases = [];
|
|
3128
|
+
for (const item of record.cases) {
|
|
3129
|
+
if (!item || typeof item !== "object") continue;
|
|
3130
|
+
const testCase = item;
|
|
3131
|
+
const input = asOptionalTrimmedString(testCase.input) ?? "";
|
|
3132
|
+
if (!input) continue;
|
|
3133
|
+
cases.push({
|
|
3134
|
+
input,
|
|
3135
|
+
expectedTools: normalizeStringArray(testCase.expectedTools),
|
|
3136
|
+
expectedSignals: normalizeStringArray(testCase.expectedSignals),
|
|
3137
|
+
forbiddenSignals: normalizeStringArray(testCase.forbiddenSignals)
|
|
3138
|
+
});
|
|
3139
|
+
}
|
|
3140
|
+
return cases.length > 0 ? {
|
|
3141
|
+
version: "0.1",
|
|
3142
|
+
cases
|
|
3143
|
+
} : void 0;
|
|
3144
|
+
};
|
|
3145
|
+
var normalizeWorkflowConfig = (value) => {
|
|
3146
|
+
if (!value || typeof value !== "object") return void 0;
|
|
3147
|
+
const record = value;
|
|
3148
|
+
const name = asOptionalTrimmedString(record.name) ?? "";
|
|
3149
|
+
const description = asOptionalTrimmedString(record.description) ?? "";
|
|
3150
|
+
if (!name || !description) return void 0;
|
|
3151
|
+
const budgetTier = normalizeSkillEnumValue("budgetTier", record.budgetTier);
|
|
3152
|
+
return {
|
|
3153
|
+
version: "0.1",
|
|
3154
|
+
kind: "workflow",
|
|
3155
|
+
id: asOptionalTrimmedString(record.id),
|
|
3156
|
+
name,
|
|
3157
|
+
description,
|
|
3158
|
+
defaultAgent: asOptionalTrimmedString(record.defaultAgent),
|
|
3159
|
+
inputs: normalizeStringArray(record.inputs),
|
|
3160
|
+
recommendedTools: normalizeStringArray(record.recommendedTools),
|
|
3161
|
+
requiredTools: normalizeStringArray(record.requiredTools),
|
|
3162
|
+
requiredOutputs: normalizeStringArray(record.requiredOutputs),
|
|
3163
|
+
gates: normalizeStringArray(record.gates),
|
|
3164
|
+
budgetTier,
|
|
3165
|
+
contextStrategy: asOptionalTrimmedString(record.contextStrategy),
|
|
3166
|
+
failureProtocol: asOptionalTrimmedString(record.failureProtocol)
|
|
3167
|
+
};
|
|
3168
|
+
};
|
|
3169
|
+
var normalizePageSkillMetadata = (value, fallbackTools) => {
|
|
3170
|
+
if (!value || typeof value !== "object") return void 0;
|
|
3171
|
+
const record = value;
|
|
3172
|
+
const kind = normalizeSkillEnumValue("docKind", record.kind);
|
|
3173
|
+
const meta = {
|
|
3174
|
+
kind,
|
|
3175
|
+
requiredSkills: normalizeStringArray(record.requiredSkills),
|
|
3176
|
+
recommendedSkills: normalizeStringArray(record.recommendedSkills),
|
|
3177
|
+
skillConfig: normalizeSkillConfig(record.skillConfig, fallbackTools),
|
|
3178
|
+
evalConfig: normalizeEvalConfig(record.evalConfig),
|
|
3179
|
+
workflowConfig: normalizeWorkflowConfig(record.workflowConfig)
|
|
3180
|
+
};
|
|
3181
|
+
if (meta.skillConfig && !meta.kind) {
|
|
3182
|
+
meta.kind = "skill";
|
|
3183
|
+
}
|
|
3184
|
+
if (meta.workflowConfig && !meta.kind) {
|
|
3185
|
+
meta.kind = "instruction";
|
|
3186
|
+
}
|
|
3187
|
+
return meta.kind || meta.requiredSkills || meta.recommendedSkills || meta.skillConfig || meta.evalConfig || meta.workflowConfig ? meta : void 0;
|
|
3188
|
+
};
|
|
3189
|
+
var extractCommentBlock = (markdown, blockName) => {
|
|
3190
|
+
if (!markdown) return void 0;
|
|
3191
|
+
const matcher = new RegExp(
|
|
3192
|
+
`<!--\\s*${blockName}\\s*\\n([\\s\\S]*?)-->`,
|
|
3193
|
+
"i"
|
|
3194
|
+
);
|
|
3195
|
+
const match = markdown.match(matcher);
|
|
3196
|
+
return asOptionalTrimmedString(match?.[1]);
|
|
3197
|
+
};
|
|
3198
|
+
var removeCommentBlock = (markdown, blockName) => markdown.replace(
|
|
3199
|
+
new RegExp(`\\n?<!--\\s*${blockName}\\s*\\n[\\s\\S]*?-->\\s*`, "gi"),
|
|
3200
|
+
"\n\n"
|
|
3201
|
+
);
|
|
3202
|
+
var parseYamlObject = (raw) => {
|
|
3203
|
+
if (!raw) return void 0;
|
|
3204
|
+
try {
|
|
3205
|
+
const parsed = load(raw);
|
|
3206
|
+
return parsed && typeof parsed === "object" ? parsed : void 0;
|
|
3207
|
+
} catch {
|
|
3208
|
+
return void 0;
|
|
3209
|
+
}
|
|
3210
|
+
};
|
|
3211
|
+
var parseSkillDocProtocol = (markdown, existingMeta, fallbackTools) => {
|
|
3212
|
+
const source = typeof markdown === "string" ? markdown : "";
|
|
3213
|
+
const skillBlock = parseYamlObject(extractCommentBlock(source, SKILL_CONFIG_BLOCK));
|
|
3214
|
+
const evalBlock = parseYamlObject(extractCommentBlock(source, EVAL_CONFIG_BLOCK));
|
|
3215
|
+
const workflowBlock = parseYamlObject(extractCommentBlock(source, WORKFLOW_CONFIG_BLOCK));
|
|
3216
|
+
const cleanedContent = removeCommentBlock(
|
|
3217
|
+
removeCommentBlock(
|
|
3218
|
+
removeCommentBlock(source, SKILL_CONFIG_BLOCK),
|
|
3219
|
+
EVAL_CONFIG_BLOCK
|
|
3220
|
+
),
|
|
3221
|
+
WORKFLOW_CONFIG_BLOCK
|
|
3222
|
+
).replace(/\n{3,}/g, "\n\n").trim();
|
|
3223
|
+
const parsedMeta = normalizePageSkillMetadata(
|
|
3224
|
+
{
|
|
3225
|
+
...existingMeta ?? {},
|
|
3226
|
+
...skillBlock ? {
|
|
3227
|
+
kind: existingMeta?.kind === "skill" || skillBlock.kind === "skill" ? "skill" : existingMeta?.kind,
|
|
3228
|
+
requiredSkills: skillBlock.requiredSkills ?? existingMeta?.requiredSkills,
|
|
3229
|
+
recommendedSkills: skillBlock.recommendedSkills ?? existingMeta?.recommendedSkills,
|
|
3230
|
+
skillConfig: skillBlock
|
|
3231
|
+
} : {},
|
|
3232
|
+
...evalBlock ? { evalConfig: evalBlock } : {},
|
|
3233
|
+
...workflowBlock ? { workflowConfig: workflowBlock } : {}
|
|
3234
|
+
},
|
|
3235
|
+
fallbackTools
|
|
3236
|
+
);
|
|
3237
|
+
return {
|
|
3238
|
+
content: cleanedContent,
|
|
3239
|
+
meta: parsedMeta
|
|
3240
|
+
};
|
|
3241
|
+
};
|
|
3242
|
+
var resolvePageSkillMetadata = (page) => {
|
|
3243
|
+
if (!page) return void 0;
|
|
3244
|
+
const existingMeta = normalizePageSkillMetadata(page.meta, page.tools);
|
|
3245
|
+
return parseSkillDocProtocol(page.content ?? "", existingMeta, page.tools).meta;
|
|
3246
|
+
};
|
|
3247
|
+
var yamlBlock = (value) => dump(value, { lineWidth: 120, noRefs: true }).trim();
|
|
3248
|
+
var buildSkillConfigComment = (config) => {
|
|
3249
|
+
const payload = {
|
|
3250
|
+
version: config.version,
|
|
3251
|
+
kind: config.kind,
|
|
3252
|
+
...config.id ? { id: config.id } : {},
|
|
3253
|
+
name: config.name,
|
|
3254
|
+
description: config.description,
|
|
3255
|
+
...config.triggerMode ? { triggerMode: config.triggerMode } : {},
|
|
3256
|
+
...config.requiredSkills?.length ? { requiredSkills: config.requiredSkills } : {},
|
|
3257
|
+
...config.recommendedSkills?.length ? { recommendedSkills: config.recommendedSkills } : {},
|
|
3258
|
+
...config.toolNames?.length ? { toolNames: config.toolNames } : {},
|
|
3259
|
+
...config.modalities?.length ? { modalities: config.modalities } : {},
|
|
3260
|
+
...config.promptPatch ? { promptPatch: config.promptPatch } : {}
|
|
3261
|
+
};
|
|
3262
|
+
return `<!-- ${SKILL_CONFIG_BLOCK}
|
|
3263
|
+
${yamlBlock(payload)}
|
|
3264
|
+
-->`;
|
|
3265
|
+
};
|
|
3266
|
+
var buildEvalConfigComment = (config) => `<!-- ${EVAL_CONFIG_BLOCK}
|
|
3267
|
+
${yamlBlock({
|
|
3268
|
+
version: config.version,
|
|
3269
|
+
cases: config.cases
|
|
3270
|
+
})}
|
|
3271
|
+
-->`;
|
|
3272
|
+
var buildWorkflowConfigComment = (config) => `<!-- ${WORKFLOW_CONFIG_BLOCK}
|
|
3273
|
+
${yamlBlock({
|
|
3274
|
+
version: config.version,
|
|
3275
|
+
kind: config.kind,
|
|
3276
|
+
...config.id ? { id: config.id } : {},
|
|
3277
|
+
name: config.name,
|
|
3278
|
+
description: config.description,
|
|
3279
|
+
...config.defaultAgent ? { defaultAgent: config.defaultAgent } : {},
|
|
3280
|
+
...config.inputs?.length ? { inputs: config.inputs } : {},
|
|
3281
|
+
...config.recommendedTools?.length ? { recommendedTools: config.recommendedTools } : {},
|
|
3282
|
+
...config.requiredTools?.length ? { requiredTools: config.requiredTools } : {},
|
|
3283
|
+
...config.requiredOutputs?.length ? { requiredOutputs: config.requiredOutputs } : {},
|
|
3284
|
+
...config.gates?.length ? { gates: config.gates } : {},
|
|
3285
|
+
...config.budgetTier ? { budgetTier: config.budgetTier } : {},
|
|
3286
|
+
...config.contextStrategy ? { contextStrategy: config.contextStrategy } : {},
|
|
3287
|
+
...config.failureProtocol ? { failureProtocol: config.failureProtocol } : {}
|
|
3288
|
+
})}
|
|
3289
|
+
-->`;
|
|
3290
|
+
var buildSkillDocMarkdown = (options) => {
|
|
3291
|
+
const sections = [
|
|
3292
|
+
asOptionalTrimmedString(options.body) ?? "",
|
|
3293
|
+
buildSkillConfigComment(options.skillConfig),
|
|
3294
|
+
options.evalConfig ? buildEvalConfigComment(options.evalConfig) : "",
|
|
3295
|
+
options.workflowConfig ? buildWorkflowConfigComment(options.workflowConfig) : ""
|
|
3296
|
+
].filter(Boolean);
|
|
3297
|
+
return sections.join("\n\n").trim();
|
|
3298
|
+
};
|
|
3299
|
+
var extractFrontmatter = (markdown) => {
|
|
3300
|
+
const match = markdown.match(/^\s*---\s*\n([\s\S]*?)\n\s*---\s*\n?/);
|
|
3301
|
+
if (!match) return { body: markdown.trim() };
|
|
3302
|
+
const frontmatter = parseYamlObject(match[1]);
|
|
3303
|
+
const body = markdown.slice(match[0].length).trim();
|
|
3304
|
+
return { frontmatter, body };
|
|
3305
|
+
};
|
|
3306
|
+
var normalizeAllowedTools = (value) => {
|
|
3307
|
+
if (Array.isArray(value)) {
|
|
3308
|
+
return normalizeStringArray(value) ?? [];
|
|
3309
|
+
}
|
|
3310
|
+
if (typeof value === "string") {
|
|
3311
|
+
return value.split(/\s+/).map((item) => item.trim()).filter(Boolean);
|
|
3312
|
+
}
|
|
3313
|
+
return [];
|
|
3314
|
+
};
|
|
3315
|
+
var parseExternalSkillMarkdown = (markdown) => {
|
|
3316
|
+
const { frontmatter, body } = extractFrontmatter(markdown);
|
|
3317
|
+
return {
|
|
3318
|
+
name: asOptionalTrimmedString(frontmatter?.name),
|
|
3319
|
+
description: asOptionalTrimmedString(frontmatter?.description),
|
|
3320
|
+
compatibility: asOptionalTrimmedString(frontmatter?.compatibility),
|
|
3321
|
+
allowedTools: normalizeAllowedTools(frontmatter?.["allowed-tools"]),
|
|
3322
|
+
metadata: frontmatter?.metadata && typeof frontmatter.metadata === "object" ? Object.fromEntries(
|
|
3323
|
+
Object.entries(frontmatter.metadata).filter(([, value]) => typeof value === "string").map(([key, value]) => [key, String(value)])
|
|
3324
|
+
) : void 0,
|
|
3325
|
+
body
|
|
3326
|
+
};
|
|
3327
|
+
};
|
|
3328
|
+
|
|
3059
3329
|
export {
|
|
3060
|
-
|
|
3061
|
-
|
|
3330
|
+
normalizeStringArray,
|
|
3331
|
+
normalizeSkillModalities,
|
|
3332
|
+
parseSkillDocProtocol,
|
|
3333
|
+
resolvePageSkillMetadata,
|
|
3334
|
+
buildSkillDocMarkdown,
|
|
3335
|
+
parseExternalSkillMarkdown
|
|
3062
3336
|
};
|
|
@@ -199,7 +199,7 @@ async function readDocFunc(args, thunkApi) {
|
|
|
199
199
|
throw new Error(`\u65E0\u6548\u7684\u9875\u9762 ID: ${id}\u3002\u9875\u9762 ID \u901A\u5E38\u4EE5 "page-" \u5F00\u5934\u3002`);
|
|
200
200
|
}
|
|
201
201
|
try {
|
|
202
|
-
const { readAction } = await import("./read-
|
|
202
|
+
const { readAction } = await import("./read-DQQ75VI3.js");
|
|
203
203
|
const pageData = await readAction({ dbKey: id }, thunkApi);
|
|
204
204
|
if (!pageData) {
|
|
205
205
|
throw new Error(`\u672A\u627E\u5230 ID \u4E3A ${id} \u7684\u9875\u9762\u3002`);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
deleteDialog,
|
|
3
3
|
toast
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-5PFBRLJN.js";
|
|
5
5
|
import {
|
|
6
6
|
deleteServerSyncedCredential
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-XOFZEJGM.js";
|
|
8
8
|
import {
|
|
9
9
|
require_date_fns
|
|
10
10
|
} from "./chunk-M76ECQRD.js";
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
} from "./chunk-HNMXYYJR.js";
|
|
20
20
|
import {
|
|
21
21
|
isSystemAdmin
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-EMEUU5IY.js";
|
|
23
23
|
import {
|
|
24
24
|
asRecordOrEmpty
|
|
25
25
|
} from "./chunk-KX6YBIHG.js";
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
createSpaceKey,
|
|
31
31
|
localSpaceAuthorityPatchStamp,
|
|
32
32
|
normalizeSpaceId
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-3EEK7T3D.js";
|
|
34
34
|
import {
|
|
35
35
|
patch,
|
|
36
36
|
read,
|
|
@@ -43,7 +43,7 @@ import {
|
|
|
43
43
|
uploadFileAction,
|
|
44
44
|
upsertSSREntity,
|
|
45
45
|
write
|
|
46
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-WVGEBWA6.js";
|
|
47
47
|
import {
|
|
48
48
|
DB_PREFIX,
|
|
49
49
|
SEPARATOR,
|
|
@@ -62,17 +62,17 @@ import {
|
|
|
62
62
|
splitKey,
|
|
63
63
|
toTrimmedString,
|
|
64
64
|
ulid
|
|
65
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-SVEUG45B.js";
|
|
66
|
+
import {
|
|
67
|
+
asOptionalFiniteNumber
|
|
68
|
+
} from "./chunk-WWC7I6TA.js";
|
|
66
69
|
import {
|
|
67
70
|
asNonEmptyStringArray,
|
|
68
71
|
asTrimmedNonEmptyStringArray
|
|
69
72
|
} from "./chunk-I42VC5KR.js";
|
|
70
|
-
import {
|
|
71
|
-
asOptionalFiniteNumber
|
|
72
|
-
} from "./chunk-WWC7I6TA.js";
|
|
73
73
|
import {
|
|
74
74
|
readAction
|
|
75
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-Z5NW3O7V.js";
|
|
76
76
|
import {
|
|
77
77
|
extractUserId
|
|
78
78
|
} from "./chunk-BJIRLHJR.js";
|
|
@@ -7053,7 +7053,7 @@ var fetchSpaceAction = async (input, thunkAPI) => {
|
|
|
7053
7053
|
const spaceKey = createSpaceKey.space(spaceId);
|
|
7054
7054
|
const readSpace = async (dbKey) => {
|
|
7055
7055
|
try {
|
|
7056
|
-
const { read: read2, readAndWait: readAndWait2 } = await import("./dbSlice-
|
|
7056
|
+
const { read: read2, readAndWait: readAndWait2 } = await import("./dbSlice-XWUM4QOF.js");
|
|
7057
7057
|
if (fresh) {
|
|
7058
7058
|
return await dispatch(readAndWait2(dbKey)).unwrap();
|
|
7059
7059
|
}
|
|
@@ -7467,7 +7467,7 @@ var spaceSlice = createSliceWithThunks2({
|
|
|
7467
7467
|
markDialogRead: create.asyncThunk(
|
|
7468
7468
|
async (payload, thunkAPI) => {
|
|
7469
7469
|
if (payload.dialogKey) {
|
|
7470
|
-
const { patch: patch2 } = await import("./dbSlice-
|
|
7470
|
+
const { patch: patch2 } = await import("./dbSlice-XWUM4QOF.js");
|
|
7471
7471
|
try {
|
|
7472
7472
|
await thunkAPI.dispatch(
|
|
7473
7473
|
patch2({ dbKey: payload.dialogKey, changes: { unreadAt: null } })
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isImageUrlPart
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-6BYAXNH5.js";
|
|
4
4
|
import {
|
|
5
5
|
AGENT_SELECTION_PRIORITY_INSTRUCTIONS
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-TNPCQNGQ.js";
|
|
7
7
|
import {
|
|
8
8
|
canonicalizeToolNames
|
|
9
9
|
} from "./chunk-O6OSWFZQ.js";
|
|
10
|
+
import {
|
|
11
|
+
PLATFORM_HOSTED_KIMI_K3_MODEL,
|
|
12
|
+
isFireworksKimiModel,
|
|
13
|
+
isNoloHostedProvider
|
|
14
|
+
} from "./chunk-ENYDQKOB.js";
|
|
10
15
|
import {
|
|
11
16
|
asTrimmedLowercaseString
|
|
12
17
|
} from "./chunk-QSJ3HFEF.js";
|
|
@@ -166,7 +171,7 @@ var AGENT_ORCHESTRATION_RUN_INSTRUCTIONS = `--- \u591A Agent \u7F16\u6392\uFF08\
|
|
|
166
171
|
\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
|
|
167
172
|
|
|
168
173
|
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
|
|
169
|
-
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
|
|
174
|
+
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\u65E0\u6587\u4EF6\u4EA4\u96C6\u3001\u65E0\u771F\u5B9E\u6570\u636E\u4F9D\u8D56\u7684\u4EFB\u52A1\u9ED8\u8BA4\u5E76\u53D1\u6D3E\u53D1\u2014\u2014\u4E0D\u8981\u56E0\u5B83\u4EEC\u6070\u597D\u5171\u7528\u540C\u4E00\u6267\u884C agent/\u901A\u9053\u800C\u81EA\u884C\u52A0\u300C\u901A\u9053\u4E32\u884C\u300D\u7684\u4FDD\u5B88\u5047\u8BBE\uFF08\u540C\u901A\u9053\u5141\u8BB8\u5E76\u53D1 fork \u591A\u5B9E\u4F8B\uFF0C\u5B9E\u4F8B\u95F4\u65E0\u4E0A\u4E0B\u6587\u5171\u4EAB\uFF09\uFF1B\u53EA\u6709\u4EFB\u52A1\u95F4\u5B58\u5728\u771F\u5B9E\u6587\u4EF6/\u6570\u636E\u4F9D\u8D56\u6216 brief \u660E\u793A\u51B2\u7A81\u9762\u65F6\u624D\u4E32\u884C\u3002
|
|
170
175
|
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
|
|
171
176
|
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`;
|
|
172
177
|
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 ---
|
|
@@ -191,11 +196,12 @@ var AGENT_COLLABORATION_INSTRUCTIONS = `--- Agent \u7F16\u6392\u4E0E\u534F\u4F5C
|
|
|
191
196
|
${AGENT_SELECTION_PRIORITY_INSTRUCTIONS}
|
|
192
197
|
- \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
|
|
193
198
|
- \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
|
|
199
|
+
- \u901A\u9053\u6392\u9664\u5224\u636E\uFF1A\u53EA\u6392\u9664\u300C\u672C\u6B21\u6539\u52A8\u7684\u4F5C\u8005\u300D\u4E0E\u300C\u5F53\u65F6\u5B9E\u6D4B\u6B7B\u56E0\u7684\u574F\u901A\u9053\u300D\uFF08\u914D\u989D\u8017\u5C3D/\u4F59\u989D\u4E0D\u8DB3/\u9650\u6D41\uFF0C\u987B\u6709\u5F53\u6B21\u9519\u8BEF\u8BC1\u636E\uFF09\u3002\u7F16\u6392\u8005\u81EA\u8EAB\u7684 agent \u8EAB\u4EFD\u6D3E\u51FA\u7684\u65B0\u5B9E\u4F8B\u4E0D\u5E26\u7F16\u6392\u8005\u4E0A\u4E0B\u6587\uFF1A\u4E0E\u4F5C\u8005\u8DE8\u6A21\u578B\u5BB6\u65CF\u65F6\u662F\u5408\u6CD5 reviewer\uFF0C\u4E14 flash \u6863\u5E38\u662F\u6700\u4FBF\u5B9C\u7684 review \u901A\u9053\uFF1B\u300C\u4E0D\u70E7\u5E73\u53F0\u79EF\u5206\u300D\u4F18\u5148\u7EA7\u5BF9\u5927\u8DD1\u91CF\u6267\u884C\u8005\u6210\u7ACB\uFF0C\u5BF9 flash \u6863 review\uFF08\u6210\u672C\u53EF\u5FFD\u7565\uFF09\u4E0D\u9002\u7528\u3002
|
|
194
200
|
- \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
|
|
195
201
|
|
|
196
|
-
**\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
|
|
202
|
+
**\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\u3002brief \u5BF9\u6D4B\u8BD5\u7C7B DoD \u5FC5\u987B\u9489\u6B7B\u57FA\u7EBF\u7CBE\u786E\u6570\u5B57\uFF08\u6D3E\u53D1\u524D\u4EB2\u81EA\u8DD1 bun test <scope> \u8BB0\u4E0B pass/fail\uFF0C\u5199\u660E\u65E2\u6709\u5931\u8D25\u5F52\u5C5E\uFF09\uFF0C\u9A8C\u6536\u65F6\u4EB2\u81EA\u590D\u8DD1\u5BF9\u7167\u2014\u2014fail \u8D85\u57FA\u7EBF\u5373\u6267\u884C\u8005\u5F15\u5165\u56DE\u5F52\uFF08flaky \u53E6\u884C\u7504\u522B\uFF09\uFF1B\u65E0\u6570\u5B57\u7684\u300C\u6D4B\u8BD5\u901A\u8FC7\u300D\u81EA\u8FF0\u6309\u672A\u9A8C\u8BC1\u5904\u7406\u3002
|
|
197
203
|
|
|
198
|
-
**\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
|
|
204
|
+
**\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\u672C\u6B21\u6539\u52A8\u7684\u4F5C\u8005\uFF08\u7F16\u6392\u8005\u4EE5\u81EA\u8EAB agent \u8EAB\u4EFD\u6D3E\u51FA\u7684\u5168\u65B0\u5B9E\u4F8B\u4E0D\u5171\u4EAB\u7F16\u6392\u8005\u4E0A\u4E0B\u6587\uFF0C\u4E0E\u4F5C\u8005\u8DE8\u6A21\u578B\u5BB6\u65CF\u65F6\u4E0D\u7B97\u300C\u81EA\u5DF1\u300D\uFF09\uFF1B\u5168\u90E8\u8DE8\u5BB6\u65CF\u901A\u9053\u4E0D\u53EF\u7528\u65F6\uFF0C\u540C\u6A21\u578B\u5BB6\u65CF\u7684\u6D3E\u53D1\u65B0\u5B9E\u4F8B\uFF08\u4E0A\u4E0B\u6587\u4ECD\u9694\u79BB\uFF09\u7ECF owner \u6388\u6743\u53EF\u4F5C\u964D\u7EA7 reviewer\uFF0Ctrailer \u6CE8\u660E\u5B9E\u9645\u5BA1\u67E5\u8005\u4E0E\u539F\u56E0\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
|
|
199
205
|
|
|
200
206
|
**\u5371\u9669 / \u4E0D\u53EF\u9006\u64CD\u4F5C**\uFF1A
|
|
201
207
|
- \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
|
|
@@ -379,11 +385,48 @@ function toBareImageUrlMessages(messages) {
|
|
|
379
385
|
});
|
|
380
386
|
}
|
|
381
387
|
|
|
388
|
+
// packages/integrations/openai/providerBodyCompatibility.ts
|
|
389
|
+
var MOONSHOT_KIMI_K3_MODEL = "kimi-k3";
|
|
390
|
+
var isKimiK3ProviderModel = (provider, model) => {
|
|
391
|
+
const normalizedModel = asTrimmedLowercaseString(model);
|
|
392
|
+
if (asTrimmedLowercaseString(provider) === "moonshot") {
|
|
393
|
+
return normalizedModel === MOONSHOT_KIMI_K3_MODEL;
|
|
394
|
+
}
|
|
395
|
+
return isNoloHostedProvider(provider) && normalizedModel === PLATFORM_HOSTED_KIMI_K3_MODEL;
|
|
396
|
+
};
|
|
397
|
+
var normalizeChatCompletionsBodyForProvider = ({
|
|
398
|
+
body,
|
|
399
|
+
provider,
|
|
400
|
+
model
|
|
401
|
+
}) => {
|
|
402
|
+
const nextBody = { ...body, model };
|
|
403
|
+
const normalizedProvider = asTrimmedLowercaseString(provider);
|
|
404
|
+
if (normalizedProvider === "fireworks" && isFireworksKimiModel(model)) {
|
|
405
|
+
delete nextBody.reasoning;
|
|
406
|
+
delete nextBody.reasoning_effort;
|
|
407
|
+
}
|
|
408
|
+
if (isKimiK3ProviderModel(provider, model)) {
|
|
409
|
+
delete nextBody.temperature;
|
|
410
|
+
delete nextBody.top_p;
|
|
411
|
+
delete nextBody.frequency_penalty;
|
|
412
|
+
delete nextBody.presence_penalty;
|
|
413
|
+
if (typeof nextBody.max_tokens === "number") {
|
|
414
|
+
nextBody.max_completion_tokens = nextBody.max_tokens;
|
|
415
|
+
delete nextBody.max_tokens;
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
if (Array.isArray(nextBody.messages) && requiresBareImageUrl({ provider, model })) {
|
|
419
|
+
nextBody.messages = toBareImageUrlMessages(nextBody.messages);
|
|
420
|
+
}
|
|
421
|
+
return nextBody;
|
|
422
|
+
};
|
|
423
|
+
|
|
382
424
|
export {
|
|
383
425
|
buildIdentityBlock,
|
|
384
426
|
buildRuntimeGuidanceBlocks,
|
|
385
427
|
resolveToolGuidedSections,
|
|
386
428
|
buildCurrentTimeBlock,
|
|
387
429
|
requiresBareImageUrl,
|
|
388
|
-
toBareImageUrlMessages
|
|
430
|
+
toBareImageUrlMessages,
|
|
431
|
+
normalizeChatCompletionsBodyForProvider
|
|
389
432
|
};
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
} from "./chunk-DWLEOOGR.js";
|
|
4
4
|
import {
|
|
5
5
|
addContentAction
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-3EEK7T3D.js";
|
|
7
7
|
import {
|
|
8
8
|
upload
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-WVGEBWA6.js";
|
|
10
10
|
import {
|
|
11
11
|
getRuntimeServerContext
|
|
12
12
|
} from "./chunk-HHBXCRJS.js";
|
|
@@ -9,8 +9,15 @@ function resolveNoloHome(options = {}) {
|
|
|
9
9
|
const env = options.env ?? process.env;
|
|
10
10
|
return env.NOLO_HOME?.trim() || path.join(options.homeDir ?? homedir(), ".nolo");
|
|
11
11
|
}
|
|
12
|
+
function resolveLocalDialogDbCandidates(options = {}) {
|
|
13
|
+
const candidates = [resolveServerDbPath(options)];
|
|
14
|
+
const noloHomeDb = path.join(resolveNoloHome(options), "data", "leveldb");
|
|
15
|
+
if (!candidates.includes(noloHomeDb)) candidates.push(noloHomeDb);
|
|
16
|
+
return candidates;
|
|
17
|
+
}
|
|
12
18
|
|
|
13
19
|
export {
|
|
14
20
|
resolveServerDbPath,
|
|
15
|
-
resolveNoloHome
|
|
21
|
+
resolveNoloHome,
|
|
22
|
+
resolveLocalDialogDbCandidates
|
|
16
23
|
};
|