nolo-cli 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_executeModel-UD44KGZ4.js +203 -0
- package/action-ZJWE3Y5S.js +28 -0
- package/addContentAction-TVDBNJM5.js +26 -0
- package/addDialogAgentAction-EKH774VT.js +68 -0
- package/agentDeleteCommand-TCPEFJTF.js +327 -0
- package/agentEmailCommands-CZ3UILZ4.js +626 -0
- package/agentListCommands-SJKO2FFB.js +223 -0
- package/agentMachineCommands-PSNABISZ.js +425 -0
- package/agentPullCommand-O2MTUAFR.js +122 -0
- package/agentRecordCommands-MH2JKFHS.js +94 -0
- package/agentRunCommand-4KH6MIZR.js +110 -0
- package/agentRunControl-K4VKNEHF.js +57 -0
- package/agentRuntimeLocal-SKHJUWSS.js +104 -0
- package/agentSlice-3WXXN4VK.js +42 -0
- package/authCommand-PXFX6JDT.js +581 -0
- package/authCommands-356AYWEK.js +35 -0
- package/chunk-2EISRLRC.js +238 -0
- package/chunk-2FTTDCD4.js +675 -0
- package/chunk-2K2ECKSG.js +222 -0
- package/chunk-2PUGVR6E.js +19 -0
- package/chunk-3ASDTTEI.js +1774 -0
- package/chunk-3EUW3WEO.js +8 -0
- package/chunk-3LY4F7SV.js +9293 -0
- package/chunk-3TZDXYSF.js +71 -0
- package/chunk-3WYQEUBI.js +34 -0
- package/chunk-4CQLVGRV.js +50 -0
- package/chunk-4IJYA27C.js +342 -0
- package/chunk-4K2KKCSD.js +577 -0
- package/chunk-4SN6J65J.js +38 -0
- package/chunk-4VNS5WPM.js +42 -0
- package/chunk-4ZDM73SD.js +34 -0
- package/chunk-5CS33IBL.js +301 -0
- package/chunk-5KLGBAAR.js +386 -0
- package/chunk-5MIDPSSK.js +206 -0
- package/chunk-5MMAK75Q.js +15 -0
- package/chunk-5PJ3VWCS.js +360 -0
- package/chunk-63SLEOLK.js +175 -0
- package/chunk-63W5N6P3.js +150 -0
- package/chunk-6GANEXVO.js +231 -0
- package/chunk-6HYVJV7B.js +102 -0
- package/chunk-6WD3OOJS.js +20 -0
- package/chunk-7OOXPE3N.js +628 -0
- package/chunk-7QRKCBOP.js +1078 -0
- package/chunk-ATNTHIZI.js +13 -0
- package/chunk-AUQ747NZ.js +902 -0
- package/chunk-AVMKZHBC.js +85 -0
- package/chunk-AZPCASRE.js +36 -0
- package/chunk-BBYVOSU2.js +792 -0
- package/chunk-C3RUNRHT.js +51 -0
- package/chunk-CF2WZF4N.js +134 -0
- package/chunk-CF7PE763.js +10 -0
- package/chunk-CKOJQDKR.js +198 -0
- package/chunk-COMXDWNM.js +807 -0
- package/chunk-CPB2YM4D.js +171 -0
- package/chunk-CWMSB67P.js +34 -0
- package/chunk-DCOA4QSN.js +105 -0
- package/chunk-DFFIZ25G.js +30 -0
- package/chunk-DWLEOOGR.js +8 -0
- package/chunk-DZ3XJVET.js +231 -0
- package/chunk-EHLHSX7R.js +1433 -0
- package/chunk-ELRRLDWI.js +478 -0
- package/chunk-EXTIQUCI.js +482 -0
- package/chunk-EYEEHCU4.js +3066 -0
- package/chunk-G3SUCT4W.js +8 -0
- package/chunk-G43KEVSC.js +1447 -0
- package/chunk-GAKEBQD6.js +30 -0
- package/chunk-GBRG75BQ.js +86 -0
- package/chunk-GG4AJPSR.js +191 -0
- package/chunk-H33743XH.js +25 -0
- package/chunk-HNMXYYJR.js +12 -0
- package/chunk-I42VC5KR.js +15 -0
- package/chunk-IDZTNRP2.js +85 -0
- package/chunk-ISNCLGUZ.js +146 -0
- package/chunk-IWX4UW2E.js +548 -0
- package/chunk-JBTJAPUF.js +35 -0
- package/chunk-JEXVIMYZ.js +55 -0
- package/chunk-JRKKFRAV.js +537 -0
- package/chunk-JZPBVBIY.js +94 -0
- package/chunk-KKY4B2Q2.js +21 -0
- package/chunk-KOCA5FCS.js +4750 -0
- package/chunk-KQHGZWSV.js +63 -0
- package/chunk-KTVVPRJS.js +138 -0
- package/chunk-KUG52IAP.js +8 -0
- package/chunk-KX6YBIHG.js +8 -0
- package/chunk-LARL2V6G.js +9017 -0
- package/chunk-LCBAMY2M.js +60 -0
- package/chunk-LM6IYQ3F.js +16 -0
- package/chunk-M76ECQRD.js +13658 -0
- package/chunk-MGOJ5R6J.js +113 -0
- package/chunk-MKMWT7SA.js +27196 -0
- package/chunk-MRC4Q34M.js +188 -0
- package/chunk-OLZBQWZU.js +6 -0
- package/chunk-OPZYGHUC.js +89 -0
- package/chunk-OWOHNGCN.js +50 -0
- package/chunk-PAKN26FP.js +239 -0
- package/chunk-PCWC3JTN.js +91 -0
- package/chunk-PG5PNA7Y.js +939 -0
- package/chunk-Q2YZULBH.js +104 -0
- package/chunk-QSJ3HFEF.js +8 -0
- package/chunk-QYXLLLGL.js +4519 -0
- package/chunk-ROWQEJRP.js +139 -0
- package/chunk-S7Z2HMCN.js +25 -0
- package/chunk-SBR32ZZS.js +1901 -0
- package/chunk-SH2CFQOH.js +3391 -0
- package/chunk-SL35K7AH.js +226 -0
- package/chunk-TILFE6LV.js +381 -0
- package/chunk-TSS3XJY4.js +2052 -0
- package/chunk-U4TRT5V4.js +246 -0
- package/chunk-U6VC4MU4.js +8 -0
- package/chunk-UAD2WT54.js +64 -0
- package/chunk-UUJDGGAK.js +421 -0
- package/chunk-VF4K2QE6.js +21 -0
- package/chunk-VHBWHNVT.js +59 -0
- package/chunk-VIDPVFP3.js +20 -0
- package/chunk-VP4WJWKW.js +8882 -0
- package/chunk-W4NVOSFF.js +37 -0
- package/chunk-WKM6FH35.js +190 -0
- package/chunk-WWC7I6TA.js +8 -0
- package/chunk-X7W4TNB4.js +1550 -0
- package/chunk-XE635NI4.js +1948 -0
- package/chunk-XKIMRZO2.js +221 -0
- package/chunk-XS466O7S.js +933 -0
- package/chunk-Y5GCAMGP.js +9 -0
- package/chunk-YBWOP46I.js +3272 -0
- package/chunk-YPRZSPF3.js +148 -0
- package/chunk-YYUCRDOK.js +69 -0
- package/chunk-Z4NR32XR.js +50 -0
- package/chunk-ZIG5LJ7X.js +24765 -0
- package/chunk-ZNFJWEN4.js +56 -0
- package/chunk-ZQ2UM4KG.js +2878 -0
- package/cliExecutor-DNE7TCC4.js +36 -0
- package/clipboardy-BVE3LVEH.js +12001 -0
- package/createAgentAutomationAction-63OIP6X5.js +866 -0
- package/createDialogAction-ZLYZDYBB.js +54 -0
- package/createPageAction-AL5FSDCK.js +171 -0
- package/db-HCJ5PRB5.js +271 -0
- package/dbSlice-PR44QPXY.js +60 -0
- package/deleteFile-4SKGPHOZ.js +41 -0
- package/dialogCommands-F6YI5742.js +63 -0
- package/dialogSlice-JSBNZRLR.js +148 -0
- package/docCreateCommands-4CTO7ERT.js +219 -0
- package/docDeleteCommands-VBWERDRG.js +180 -0
- package/docReadCommands-KNP4MFYB.js +133 -0
- package/docStore-ADP5VYY4.js +98 -0
- package/docUpdateCommands-4BCBJQHA.js +317 -0
- package/fetchMessages-U6ZHN56A.js +17 -0
- package/getPricing-3E6UNPKL.js +30 -0
- package/handleSendMessageAction-IJDQ6ARA.js +185 -0
- package/index.js +188 -112943
- package/lib-FYYBQIXS.js +19839 -0
- package/localDialogRead-Z5UTAJPU.js +26 -0
- package/localFirstLog-DHNOY2NA.js +19 -0
- package/localRuntimeAuthority-TEGCOWX4.js +471 -0
- package/localRuntimeDb-LGDF6FQP.js +12 -0
- package/machineCommands-EA3M4XTN.js +779 -0
- package/machineInfo-M6KB6HZN.js +10 -0
- package/machineWsRunDispatch-NAPKE5ZA.js +110 -0
- package/memoryCommands-O4MIPIWQ.js +476 -0
- package/models-4OPOOLFS.js +9 -0
- package/offlineMarxistsAgentCommand-BCPJITJL.js +242 -0
- package/package.json +3 -25
- package/read-RIJCIVKX.js +17 -0
- package/readDocTool-GZD2N3LO.js +16 -0
- package/readlineWorkspace-KMWT4T4S.js +5509 -0
- package/removeDialogAgentAction-GJQJNDW6.js +73 -0
- package/runAgentClientLoop-U5Q6NDTJ.js +291 -0
- package/runtimeDoctorCommands-LRHLPDRC.js +289 -0
- package/setDialogExtraReferencesAction-M7OQG54N.js +60 -0
- package/setPrimaryDialogAgentAction-46UNFJDL.js +80 -0
- package/settingSlice-FVUUH4JA.js +199 -0
- package/skillSummaryMarker-42HKSXYY.js +9 -0
- package/slateToRenderMarkdown-Y5IYN73U.js +7 -0
- package/slateUtils-2M7MUTWX.js +19 -0
- package/spaceCommands-E2CFRPZJ.js +454 -0
- package/spaceSlice-L3R6IMXE.js +147 -0
- package/streamAgentChatTurn-UBDAOQWE.js +4528 -0
- package/tableCommands-GOFP7QKA.js +1286 -0
- package/toolApiClient-QI3YBNWB.js +26 -0
- package/tools-TMJXZTCA.js +85 -0
- package/tuiSummaryLlmCaller-RV3THLZF.js +78 -0
- package/understanding-GQKNDDWM.js +271 -0
- package/updateCommands-VOSPKXFF.js +31 -0
- package/updateDialogTitleAction-ZTWRDXI2.js +188 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import {
|
|
2
|
+
i18n_default,
|
|
3
|
+
toolRegistry
|
|
4
|
+
} from "./chunk-MKMWT7SA.js";
|
|
5
|
+
import {
|
|
6
|
+
canonicalizeToolNames
|
|
7
|
+
} from "./chunk-AUQ747NZ.js";
|
|
8
|
+
import {
|
|
9
|
+
asTrimmedLowercaseString
|
|
10
|
+
} from "./chunk-QSJ3HFEF.js";
|
|
11
|
+
import {
|
|
12
|
+
isRecord
|
|
13
|
+
} from "./chunk-KUG52IAP.js";
|
|
14
|
+
|
|
15
|
+
// packages/ai/tools/toolSchemaCompatibility.ts
|
|
16
|
+
var COMPOSITION_KEYS = ["anyOf", "oneOf", "allOf"];
|
|
17
|
+
var LIMITED_JSON_SCHEMA_PROVIDERS = /* @__PURE__ */ new Set([
|
|
18
|
+
"fireworks"
|
|
19
|
+
]);
|
|
20
|
+
var sanitizeSchemaNode = (value) => {
|
|
21
|
+
if (Array.isArray(value)) {
|
|
22
|
+
return value.map((item) => sanitizeSchemaNode(item));
|
|
23
|
+
}
|
|
24
|
+
if (!isRecord(value)) {
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
const next = {};
|
|
28
|
+
for (const [key, child] of Object.entries(value)) {
|
|
29
|
+
if (COMPOSITION_KEYS.includes(key)) {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
next[key] = sanitizeSchemaNode(child);
|
|
33
|
+
}
|
|
34
|
+
return next;
|
|
35
|
+
};
|
|
36
|
+
var shouldSanitizeProviderSchema = (provider) => LIMITED_JSON_SCHEMA_PROVIDERS.has(asTrimmedLowercaseString(provider));
|
|
37
|
+
var sanitizeToolForProvider = (tool, provider) => {
|
|
38
|
+
if (!shouldSanitizeProviderSchema(provider)) {
|
|
39
|
+
return tool;
|
|
40
|
+
}
|
|
41
|
+
const parameters = tool?.function?.parameters;
|
|
42
|
+
if (!isRecord(parameters)) {
|
|
43
|
+
return tool;
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
...tool,
|
|
47
|
+
function: {
|
|
48
|
+
...tool.function,
|
|
49
|
+
parameters: sanitizeSchemaNode(parameters)
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// packages/ai/tools/prepareTools.ts
|
|
55
|
+
var translatedFunctionCache = /* @__PURE__ */ new Map();
|
|
56
|
+
var prepareToolsResultCache = /* @__PURE__ */ new Map();
|
|
57
|
+
var PREPARE_TOOLS_CACHE_LIMIT = 128;
|
|
58
|
+
function getTranslation(keys, defaultVal) {
|
|
59
|
+
for (const key of keys) {
|
|
60
|
+
if (i18n_default.exists(key)) {
|
|
61
|
+
return i18n_default.t(key);
|
|
62
|
+
}
|
|
63
|
+
const aiKey = key.startsWith("ai:") ? key : `ai:${key}`;
|
|
64
|
+
if (i18n_default.exists(aiKey)) {
|
|
65
|
+
return i18n_default.t(aiKey);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return defaultVal;
|
|
69
|
+
}
|
|
70
|
+
function translateSchema(schema) {
|
|
71
|
+
if (!schema || typeof schema !== "object") return schema;
|
|
72
|
+
const nextSchema = JSON.parse(JSON.stringify(schema));
|
|
73
|
+
const toolName = nextSchema.name;
|
|
74
|
+
if (!toolName) return nextSchema;
|
|
75
|
+
const walk = (node, path) => {
|
|
76
|
+
if (!node || typeof node !== "object") return;
|
|
77
|
+
if (typeof node.description === "string") {
|
|
78
|
+
const keysToTry = [
|
|
79
|
+
`${path}.description`,
|
|
80
|
+
`${path}.desc`,
|
|
81
|
+
path,
|
|
82
|
+
node.description
|
|
83
|
+
];
|
|
84
|
+
node.description = getTranslation(keysToTry, node.description);
|
|
85
|
+
}
|
|
86
|
+
if (node.parameters && typeof node.parameters === "object") {
|
|
87
|
+
walk(node.parameters, path);
|
|
88
|
+
}
|
|
89
|
+
if (node.properties && typeof node.properties === "object") {
|
|
90
|
+
for (const [key, child] of Object.entries(node.properties)) {
|
|
91
|
+
const nextPath = path.endsWith(".params") ? `${path}.${key}` : `${path}.params.${key}`;
|
|
92
|
+
walk(child, nextPath);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (node.items && typeof node.items === "object") {
|
|
96
|
+
walk(node.items, path);
|
|
97
|
+
}
|
|
98
|
+
const compositions = ["anyOf", "oneOf", "allOf"];
|
|
99
|
+
for (const comp of compositions) {
|
|
100
|
+
if (Array.isArray(node[comp])) {
|
|
101
|
+
node[comp].forEach((child, idx) => {
|
|
102
|
+
const suffix = child.type === "string" ? "stringDesc" : child.type === "object" ? "objectDesc" : `${idx}`;
|
|
103
|
+
walk(child, `${path}.${suffix}`);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
walk(nextSchema, `tools.${toolName}`);
|
|
109
|
+
return nextSchema;
|
|
110
|
+
}
|
|
111
|
+
function currentI18nLanguage() {
|
|
112
|
+
return typeof i18n_default.language === "string" ? i18n_default.language : "";
|
|
113
|
+
}
|
|
114
|
+
function translateSchemaCached(schema) {
|
|
115
|
+
if (!schema || typeof schema !== "object") return schema;
|
|
116
|
+
const toolName = typeof schema.name === "string" ? schema.name : "";
|
|
117
|
+
if (!toolName) return translateSchema(schema);
|
|
118
|
+
const cacheKey = `${currentI18nLanguage()}\0${toolName}`;
|
|
119
|
+
const hit = translatedFunctionCache.get(cacheKey);
|
|
120
|
+
if (hit) return hit;
|
|
121
|
+
const translated = translateSchema(schema);
|
|
122
|
+
translatedFunctionCache.set(cacheKey, translated);
|
|
123
|
+
return translated;
|
|
124
|
+
}
|
|
125
|
+
function buildPrepareToolsCacheKey(toolNames, disabledToolNames, provider) {
|
|
126
|
+
return [
|
|
127
|
+
currentI18nLanguage(),
|
|
128
|
+
provider ?? "",
|
|
129
|
+
disabledToolNames.join(""),
|
|
130
|
+
toolNames.join("")
|
|
131
|
+
].join("\0");
|
|
132
|
+
}
|
|
133
|
+
function rememberPrepareToolsResult(key, value) {
|
|
134
|
+
if (prepareToolsResultCache.size >= PREPARE_TOOLS_CACHE_LIMIT) {
|
|
135
|
+
const oldest = prepareToolsResultCache.keys().next().value;
|
|
136
|
+
if (oldest !== void 0) {
|
|
137
|
+
prepareToolsResultCache.delete(oldest);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
prepareToolsResultCache.set(key, value);
|
|
141
|
+
}
|
|
142
|
+
var prepareTools = (toolNames, options) => {
|
|
143
|
+
const disabledList = canonicalizeToolNames(options?.disabledToolNames ?? []);
|
|
144
|
+
const disabledToolNames = new Set(disabledList);
|
|
145
|
+
const canonicalNames = canonicalizeToolNames(toolNames).filter(
|
|
146
|
+
(toolName) => !disabledToolNames.has(toolName)
|
|
147
|
+
);
|
|
148
|
+
const cacheKey = buildPrepareToolsCacheKey(
|
|
149
|
+
canonicalNames,
|
|
150
|
+
disabledList,
|
|
151
|
+
options?.provider
|
|
152
|
+
);
|
|
153
|
+
const cached = prepareToolsResultCache.get(cacheKey);
|
|
154
|
+
if (cached) {
|
|
155
|
+
return cached.slice();
|
|
156
|
+
}
|
|
157
|
+
const prepared = canonicalNames.map((toolName) => {
|
|
158
|
+
const regTool = toolRegistry[toolName];
|
|
159
|
+
if (!regTool) return regTool;
|
|
160
|
+
return {
|
|
161
|
+
...regTool,
|
|
162
|
+
function: translateSchemaCached(regTool.function)
|
|
163
|
+
};
|
|
164
|
+
}).map((tool) => sanitizeToolForProvider(tool, options?.provider)).filter(Boolean);
|
|
165
|
+
rememberPrepareToolsResult(cacheKey, prepared);
|
|
166
|
+
return prepared.slice();
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
export {
|
|
170
|
+
prepareTools
|
|
171
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// packages/ai/llm/imagePricing.ts
|
|
2
|
+
var DEFAULT_IMAGE_SIZE = "1K";
|
|
3
|
+
var DEFAULT_IMAGE_QUALITY = "medium";
|
|
4
|
+
var hasEstimateForSize = (tokenEstimates, size) => typeof tokenEstimates[size] !== "undefined";
|
|
5
|
+
var resolveTokenEstimate = (estimate, requestedQuality) => {
|
|
6
|
+
if (typeof estimate === "number") return estimate;
|
|
7
|
+
if (!estimate) return void 0;
|
|
8
|
+
const quality = requestedQuality && typeof estimate[requestedQuality] === "number" ? requestedQuality : DEFAULT_IMAGE_QUALITY;
|
|
9
|
+
return estimate[quality];
|
|
10
|
+
};
|
|
11
|
+
var getApproxPricePerImage = (model, requestedSize, requestedQuality) => {
|
|
12
|
+
if (!model) return void 0;
|
|
13
|
+
if (typeof model.pricePerImage === "number") {
|
|
14
|
+
return model.pricePerImage;
|
|
15
|
+
}
|
|
16
|
+
if (typeof model.imageTokenPricePerMillion !== "number") {
|
|
17
|
+
return void 0;
|
|
18
|
+
}
|
|
19
|
+
const tokenEstimates = model.imageOutputTokenEstimateBySize;
|
|
20
|
+
if (!tokenEstimates) return void 0;
|
|
21
|
+
const resolvedSize = requestedSize && hasEstimateForSize(tokenEstimates, requestedSize) ? requestedSize : DEFAULT_IMAGE_SIZE;
|
|
22
|
+
const outputTokens = resolveTokenEstimate(
|
|
23
|
+
tokenEstimates[resolvedSize],
|
|
24
|
+
requestedQuality
|
|
25
|
+
);
|
|
26
|
+
if (typeof outputTokens !== "number") {
|
|
27
|
+
return void 0;
|
|
28
|
+
}
|
|
29
|
+
return model.imageTokenPricePerMillion * outputTokens / 1e6;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export {
|
|
33
|
+
getApproxPricePerImage
|
|
34
|
+
};
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OLLAMA_CLOUD_KIMI_K26_MODEL,
|
|
3
|
+
OLLAMA_CLOUD_KIMI_K27_CODE_MODEL,
|
|
4
|
+
OLLAMA_CLOUD_KIMI_K3_MODEL,
|
|
5
|
+
cloudflareModels,
|
|
6
|
+
deepSeekModels,
|
|
7
|
+
deepinfraModels,
|
|
8
|
+
fireworksModels,
|
|
9
|
+
gmiModels,
|
|
10
|
+
googleModels,
|
|
11
|
+
openAIModels,
|
|
12
|
+
openrouterModels,
|
|
13
|
+
xaiModels,
|
|
14
|
+
zaiModels
|
|
15
|
+
} from "./chunk-IWX4UW2E.js";
|
|
16
|
+
|
|
17
|
+
// packages/ai/llm/ollamaCloud.ts
|
|
18
|
+
var OLLAMA_CLOUD_KIMI_PRICE = {
|
|
19
|
+
input: 0.27,
|
|
20
|
+
output: 5.7
|
|
21
|
+
};
|
|
22
|
+
var OLLAMA_CLOUD_GLM_PRICE = {
|
|
23
|
+
input: 1.14,
|
|
24
|
+
output: 7.1
|
|
25
|
+
};
|
|
26
|
+
var OLLAMA_CLOUD_GLM_52_MODEL = "glm-5.2";
|
|
27
|
+
var OLLAMA_CLOUD_DEEPSEEK_FLASH_MODEL = "deepseek-v4-flash";
|
|
28
|
+
var OLLAMA_CLOUD_DEEPSEEK_FLASH_PRICE = {
|
|
29
|
+
input: 0.11,
|
|
30
|
+
output: 0.63
|
|
31
|
+
};
|
|
32
|
+
var OLLAMA_CLOUD_KIMI_K3_PRICE = {
|
|
33
|
+
input: 2.4,
|
|
34
|
+
output: 12
|
|
35
|
+
};
|
|
36
|
+
var ollamaCloudModels = [
|
|
37
|
+
{
|
|
38
|
+
name: OLLAMA_CLOUD_KIMI_K3_MODEL,
|
|
39
|
+
displayName: "Kimi K3",
|
|
40
|
+
hasVision: true,
|
|
41
|
+
price: { ...OLLAMA_CLOUD_KIMI_K3_PRICE },
|
|
42
|
+
maxOutputTokens: 262144,
|
|
43
|
+
contextWindow: 1e6,
|
|
44
|
+
supportsTool: true,
|
|
45
|
+
supportsReasoningEffort: true
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: OLLAMA_CLOUD_KIMI_K26_MODEL,
|
|
49
|
+
displayName: "Kimi K2.6",
|
|
50
|
+
hasVision: true,
|
|
51
|
+
price: { ...OLLAMA_CLOUD_KIMI_PRICE },
|
|
52
|
+
maxOutputTokens: 262144,
|
|
53
|
+
contextWindow: 262144,
|
|
54
|
+
supportsTool: true
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: OLLAMA_CLOUD_KIMI_K27_CODE_MODEL,
|
|
58
|
+
displayName: "Kimi K2.7 Coding",
|
|
59
|
+
hasVision: true,
|
|
60
|
+
price: { ...OLLAMA_CLOUD_KIMI_PRICE },
|
|
61
|
+
maxOutputTokens: 262144,
|
|
62
|
+
contextWindow: 256e3,
|
|
63
|
+
supportsTool: true
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: OLLAMA_CLOUD_GLM_52_MODEL,
|
|
67
|
+
displayName: "GLM 5.2",
|
|
68
|
+
hasVision: false,
|
|
69
|
+
price: { ...OLLAMA_CLOUD_GLM_PRICE },
|
|
70
|
+
maxOutputTokens: 131072,
|
|
71
|
+
contextWindow: 1e6,
|
|
72
|
+
supportsTool: true,
|
|
73
|
+
supportsReasoningEffort: true
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: OLLAMA_CLOUD_DEEPSEEK_FLASH_MODEL,
|
|
77
|
+
displayName: "DeepSeek V4 Flash",
|
|
78
|
+
hasVision: false,
|
|
79
|
+
price: { ...OLLAMA_CLOUD_DEEPSEEK_FLASH_PRICE },
|
|
80
|
+
maxOutputTokens: 384e3,
|
|
81
|
+
contextWindow: 1e6,
|
|
82
|
+
supportsTool: true,
|
|
83
|
+
supportsReasoningEffort: true
|
|
84
|
+
}
|
|
85
|
+
];
|
|
86
|
+
|
|
87
|
+
// packages/ai/llm/models.ts
|
|
88
|
+
var withProvider = (provider) => (models) => models.map((model) => ({ ...model, provider }));
|
|
89
|
+
var ALL_MODELS = [
|
|
90
|
+
...withProvider("nolo")(ollamaCloudModels),
|
|
91
|
+
...withProvider("google")(googleModels),
|
|
92
|
+
...withProvider("openai")(openAIModels),
|
|
93
|
+
...withProvider("openrouter")(openrouterModels),
|
|
94
|
+
...withProvider("xai")(xaiModels),
|
|
95
|
+
...withProvider("deepseek")(deepSeekModels),
|
|
96
|
+
...withProvider("deepinfra")(deepinfraModels),
|
|
97
|
+
...withProvider("fireworks")(fireworksModels),
|
|
98
|
+
...withProvider("cloudflare")(cloudflareModels),
|
|
99
|
+
...withProvider("gmi")(gmiModels),
|
|
100
|
+
...withProvider("zai")(zaiModels)
|
|
101
|
+
];
|
|
102
|
+
|
|
103
|
+
export {
|
|
104
|
+
ALL_MODELS
|
|
105
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// packages/core/prefix.ts
|
|
2
|
+
var extractKeyPart = (key, index) => {
|
|
3
|
+
const parts = key.split("-");
|
|
4
|
+
if (index < 2) {
|
|
5
|
+
return parts[index];
|
|
6
|
+
}
|
|
7
|
+
return parts.slice(index).join("-");
|
|
8
|
+
};
|
|
9
|
+
var extractUserId = (key) => {
|
|
10
|
+
const parts = key.split("-");
|
|
11
|
+
if (parts.length === 2) {
|
|
12
|
+
return parts[0];
|
|
13
|
+
}
|
|
14
|
+
if (parts[0] === "user" && parts[1] === "pref" && parts.length >= 3) {
|
|
15
|
+
return parts[2];
|
|
16
|
+
}
|
|
17
|
+
return extractKeyPart(key, 1);
|
|
18
|
+
};
|
|
19
|
+
var extractCustomId = (key) => {
|
|
20
|
+
if (key.startsWith("dialog-") && !key.includes("-msg-")) {
|
|
21
|
+
const lastDash = key.lastIndexOf("-");
|
|
22
|
+
return lastDash >= 0 ? key.slice(lastDash + 1) : key;
|
|
23
|
+
}
|
|
24
|
+
return extractKeyPart(key, 2);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export {
|
|
28
|
+
extractUserId,
|
|
29
|
+
extractCustomId
|
|
30
|
+
};
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import {
|
|
2
|
+
LOCAL_CODEX_AGENT_KEY,
|
|
3
|
+
isLocalCliAgentKey,
|
|
4
|
+
resolveCliAgentKeyInput
|
|
5
|
+
} from "./chunk-VHBWHNVT.js";
|
|
6
|
+
import {
|
|
7
|
+
DEFAULT_NOLO_SERVER_URL
|
|
8
|
+
} from "./chunk-OLZBQWZU.js";
|
|
9
|
+
import {
|
|
10
|
+
asTrimmedLowercaseString
|
|
11
|
+
} from "./chunk-QSJ3HFEF.js";
|
|
12
|
+
import {
|
|
13
|
+
normalizeServerOrigin
|
|
14
|
+
} from "./chunk-CF7PE763.js";
|
|
15
|
+
|
|
16
|
+
// packages/cli/agentRunArgs.ts
|
|
17
|
+
import { readFileSync } from "node:fs";
|
|
18
|
+
function readFlagValue(args, flag) {
|
|
19
|
+
const index = args.indexOf(flag);
|
|
20
|
+
if (index < 0) return void 0;
|
|
21
|
+
return args[index + 1];
|
|
22
|
+
}
|
|
23
|
+
function readRepeatedFlagValues(args, flag) {
|
|
24
|
+
const values = [];
|
|
25
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
26
|
+
if (args[index] === flag && args[index + 1]) {
|
|
27
|
+
values.push(args[index + 1]);
|
|
28
|
+
index += 1;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return values;
|
|
32
|
+
}
|
|
33
|
+
function runtimeModeFromArgs(args) {
|
|
34
|
+
if (args.includes("--local")) return "local";
|
|
35
|
+
if (args.includes("--server")) return "server";
|
|
36
|
+
if (args.includes("--auto")) return "auto";
|
|
37
|
+
return void 0;
|
|
38
|
+
}
|
|
39
|
+
function isFullstackCodingAgentRef(raw, resolved) {
|
|
40
|
+
const normalized = asTrimmedLowercaseString(raw);
|
|
41
|
+
return normalized === "fullstack" || normalized === "full-stack" || normalized === "nolo-fullstack" || normalized === "\u5168\u6808" || normalized === "nolo \u5168\u6808\u5DE5\u7A0B\u5E08" || resolved === "fullstack";
|
|
42
|
+
}
|
|
43
|
+
function parsePositiveInteger(value) {
|
|
44
|
+
if (!value) return void 0;
|
|
45
|
+
const parsed = Number(value);
|
|
46
|
+
if (!Number.isFinite(parsed) || parsed <= 0) return void 0;
|
|
47
|
+
return Math.floor(parsed);
|
|
48
|
+
}
|
|
49
|
+
function parseSubjectRef(raw) {
|
|
50
|
+
const value = raw.trim();
|
|
51
|
+
if (!value) return null;
|
|
52
|
+
const firstColon = value.indexOf(":");
|
|
53
|
+
if (firstColon <= 0 || firstColon === value.length - 1) return null;
|
|
54
|
+
const kind = value.slice(0, firstColon).trim();
|
|
55
|
+
const rest = value.slice(firstColon + 1).trim();
|
|
56
|
+
const lastColon = rest.lastIndexOf(":");
|
|
57
|
+
const id = lastColon > 0 ? rest.slice(0, lastColon).trim() : rest;
|
|
58
|
+
const role = lastColon > 0 ? rest.slice(lastColon + 1).trim() : "";
|
|
59
|
+
if (!kind || !id) return null;
|
|
60
|
+
return { kind, id, ...role ? { role } : {} };
|
|
61
|
+
}
|
|
62
|
+
var VALUELESS_FLAGS = {
|
|
63
|
+
"--local": true,
|
|
64
|
+
"--server": true,
|
|
65
|
+
"--auto": true,
|
|
66
|
+
"--dangerously-allow-shell": true,
|
|
67
|
+
"--trace-tools": true,
|
|
68
|
+
"--bg": true,
|
|
69
|
+
"--no-stream": true,
|
|
70
|
+
"--debug": true,
|
|
71
|
+
"--ephemeral": true,
|
|
72
|
+
"--memory-only": true
|
|
73
|
+
};
|
|
74
|
+
function isValuelessFlag(arg) {
|
|
75
|
+
return Object.prototype.hasOwnProperty.call(VALUELESS_FLAGS, arg);
|
|
76
|
+
}
|
|
77
|
+
function positionalArgs(args) {
|
|
78
|
+
const values = [];
|
|
79
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
80
|
+
const arg = args[index];
|
|
81
|
+
if (isValuelessFlag(arg)) continue;
|
|
82
|
+
if (arg.startsWith("--")) {
|
|
83
|
+
index += 1;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
values.push(arg);
|
|
87
|
+
}
|
|
88
|
+
return values;
|
|
89
|
+
}
|
|
90
|
+
function resolveRawAgentInput(args, commandPath) {
|
|
91
|
+
const positional = positionalArgs(args);
|
|
92
|
+
const isNoLogin = (commandPath?.join(" ") === "run" || commandPath?.join(" ") === "chat") && !readFlagValue(args, "--agent");
|
|
93
|
+
return readFlagValue(args, "--agent") ?? (isNoLogin ? LOCAL_CODEX_AGENT_KEY : positional[0]);
|
|
94
|
+
}
|
|
95
|
+
function parseDialogReference(rawInput) {
|
|
96
|
+
const normalized = rawInput.trim();
|
|
97
|
+
if (normalized.startsWith("dialog-")) {
|
|
98
|
+
const parts = normalized.split("-");
|
|
99
|
+
return {
|
|
100
|
+
dialogKey: normalized,
|
|
101
|
+
dialogId: parts.at(-1) ?? normalized
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
const dialogMatch = normalized.match(/dialog-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)/);
|
|
105
|
+
if (dialogMatch) {
|
|
106
|
+
return {
|
|
107
|
+
dialogKey: `dialog-${dialogMatch[1]}-${dialogMatch[2]}`,
|
|
108
|
+
dialogId: dialogMatch[2]
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
dialogId: normalized
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function resolveServerUrl(env) {
|
|
116
|
+
return normalizeServerOrigin(
|
|
117
|
+
env.NOLO_SERVER || env.BASE_URL || DEFAULT_NOLO_SERVER_URL
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
function buildLocalRunEnv(args) {
|
|
121
|
+
void args.allowShell;
|
|
122
|
+
return {
|
|
123
|
+
...args.env
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function writeUsage(output, commandPath) {
|
|
127
|
+
const commandName = commandPath?.join(" ");
|
|
128
|
+
if (commandName === "run") {
|
|
129
|
+
output.write(
|
|
130
|
+
"Usage: nolo run <message> [--cwd <path>] [--timeout-ms <n>] [--events jsonl]\n nolo run --msg <message> [--cwd <path>] [--image <url-or-path>] [--timeout-ms <n>]\nRuns local Codex in the current workspace; no Nolo login required.\n"
|
|
131
|
+
);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (commandName === "chat") {
|
|
135
|
+
output.write(
|
|
136
|
+
"Usage: nolo chat <message> [--cwd <path>] [--events jsonl]\n nolo chat --agent <agent> (--msg <message>|--msg-file <path>) [--local|--server|--auto]\nWithout --agent, this uses local Codex in the current workspace; no Nolo login required.\n"
|
|
137
|
+
);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
output.write(
|
|
141
|
+
"Usage: nolo agent run <agent> <message> [--local|--server|--auto] [--ephemeral|--memory-only] [--continue <dialogId>] [--cwd <path>]\n nolo agent run --agent <agent> (--msg <message>|--msg-file <path>) [--image <url-or-path>] [--space <spaceId>] [--category <name>] [--inherit-from-dialog <dialog>] [--parent-dialog <dialog>] [--subject-dialog <dialog>] [--subject-ref <kind:id[:role]>] [--task-row-dbkey <key>] [--allowed-child-agent <agent>] [--fallback-agent <agent>] (suggestions for agent to decide on quota) [--allowed-tool <tool>] [--blocked-tool <tool>] [--bg] [--timeout-ms <n>] [--events jsonl] [--no-stream] [--skill <dbKey-or-md-path>]\n"
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
function parseAgentRunArgs(args, options = {}) {
|
|
145
|
+
const positional = positionalArgs(args);
|
|
146
|
+
const isNoLoginRunShorthand = (options.commandPath?.join(" ") === "run" || options.commandPath?.join(" ") === "chat") && !readFlagValue(args, "--agent");
|
|
147
|
+
const rawAgentKey = readFlagValue(args, "--agent") ?? (isNoLoginRunShorthand ? LOCAL_CODEX_AGENT_KEY : positional[0]);
|
|
148
|
+
const agentKey = rawAgentKey ? resolveCliAgentKeyInput(rawAgentKey) : void 0;
|
|
149
|
+
const explicitMsg = readFlagValue(args, "--msg");
|
|
150
|
+
const msgFile = readFlagValue(args, "--msg-file");
|
|
151
|
+
const fileMessage = msgFile ? (options.readTextFile ?? ((path) => readFileSync(path, "utf8")))(msgFile) : void 0;
|
|
152
|
+
const rawMessage = explicitMsg ?? fileMessage ?? positional.slice(isNoLoginRunShorthand ? 0 : 1).join(" ");
|
|
153
|
+
if (!agentKey || !rawMessage.trim()) return null;
|
|
154
|
+
const message = rawMessage.trim();
|
|
155
|
+
const runtimeMode = runtimeModeFromArgs(args);
|
|
156
|
+
const continueDialogId = readFlagValue(args, "--continue") ?? readFlagValue(args, "--dialog");
|
|
157
|
+
const spaceId = readFlagValue(args, "--space");
|
|
158
|
+
const category = readFlagValue(args, "--category");
|
|
159
|
+
const inheritedFromDialog = readFlagValue(args, "--inherit-from-dialog");
|
|
160
|
+
const subjectDialog = readFlagValue(args, "--subject-dialog") ?? readFlagValue(args, "--reference-dialog");
|
|
161
|
+
const subjectDialogKey = subjectDialog?.trim();
|
|
162
|
+
const subjectRefs = readRepeatedFlagValues(args, "--subject-ref").map(parseSubjectRef).filter((ref) => Boolean(ref));
|
|
163
|
+
const allowedChildAgentKeys = readRepeatedFlagValues(args, "--allowed-child-agent").map((value) => resolveCliAgentKeyInput(value.trim())).filter(Boolean);
|
|
164
|
+
const fallbackAgentKeys = readRepeatedFlagValues(args, "--fallback-agent").map((value) => resolveCliAgentKeyInput(value.trim())).filter(Boolean);
|
|
165
|
+
const allowedToolNames = readRepeatedFlagValues(args, "--allowed-tool").map((value) => value.trim()).filter(Boolean);
|
|
166
|
+
const cwd = readFlagValue(args, "--cwd");
|
|
167
|
+
const timeoutMs = parsePositiveInteger(readFlagValue(args, "--timeout-ms"));
|
|
168
|
+
const rawEventsMode = readFlagValue(args, "--events");
|
|
169
|
+
const eventsMode = rawEventsMode === "jsonl" ? "jsonl" : void 0;
|
|
170
|
+
const inheritedRef = inheritedFromDialog ? parseDialogReference(inheritedFromDialog) : void 0;
|
|
171
|
+
const explicitLocalCliAgentDefault = isLocalCliAgentKey(agentKey) && runtimeMode !== "server";
|
|
172
|
+
const explicitParentDialog = readFlagValue(args, "--parent-dialog");
|
|
173
|
+
const parentDialogRef = explicitParentDialog ? parseDialogReference(explicitParentDialog) : void 0;
|
|
174
|
+
const blockedToolNames = readRepeatedFlagValues(args, "--blocked-tool").map((value) => value.trim()).filter(Boolean);
|
|
175
|
+
const imageUrls = [
|
|
176
|
+
...readRepeatedFlagValues(args, "--image"),
|
|
177
|
+
...readRepeatedFlagValues(args, "--image-url")
|
|
178
|
+
];
|
|
179
|
+
const fullstackLocalWorkspaceDefault = isFullstackCodingAgentRef(rawAgentKey, agentKey) && runtimeMode !== "server";
|
|
180
|
+
const ephemeral = args.includes("--ephemeral") || args.includes("--memory-only");
|
|
181
|
+
const workflowRef = readFlagValue(args, "--workflow");
|
|
182
|
+
const skillRefs = readRepeatedFlagValues(args, "--skill").map((v) => v.trim()).filter(Boolean);
|
|
183
|
+
const taskRowDbKey = readFlagValue(args, "--task-row-dbkey");
|
|
184
|
+
const artifactIds = readFlagValue(args, "--artifact-ids")?.split(",").map((item) => item.trim()).filter(Boolean);
|
|
185
|
+
return {
|
|
186
|
+
agentKey,
|
|
187
|
+
message,
|
|
188
|
+
imageUrls,
|
|
189
|
+
allowShell: args.includes("--dangerously-allow-shell") || fullstackLocalWorkspaceDefault || explicitLocalCliAgentDefault,
|
|
190
|
+
traceTools: args.includes("--trace-tools"),
|
|
191
|
+
ephemeral,
|
|
192
|
+
...eventsMode ? { eventsMode } : {},
|
|
193
|
+
injectFeatureWorktreeInstruction: fullstackLocalWorkspaceDefault,
|
|
194
|
+
...workflowRef ? { workflowRef } : {},
|
|
195
|
+
...skillRefs.length ? { skillRefs } : {},
|
|
196
|
+
...taskRowDbKey ? {
|
|
197
|
+
taskEvidence: {
|
|
198
|
+
rowDbKey: taskRowDbKey,
|
|
199
|
+
...artifactIds?.length ? { artifactIds } : {}
|
|
200
|
+
}
|
|
201
|
+
} : {},
|
|
202
|
+
...runtimeMode ? { runtimeMode } : fullstackLocalWorkspaceDefault || explicitLocalCliAgentDefault || args.includes("--dangerously-allow-shell") ? { runtimeMode: "local" } : {},
|
|
203
|
+
background: args.includes("--bg"),
|
|
204
|
+
noStream: args.includes("--no-stream"),
|
|
205
|
+
...continueDialogId ? { continueDialogId } : {},
|
|
206
|
+
...!continueDialogId && spaceId ? { spaceId } : {},
|
|
207
|
+
...category ? { category } : {},
|
|
208
|
+
...inheritedRef?.dialogKey ? { inheritedFromDialogKey: inheritedRef.dialogKey } : {},
|
|
209
|
+
...parentDialogRef?.dialogId || inheritedRef?.dialogId ? { parentDialogId: parentDialogRef?.dialogId ?? inheritedRef?.dialogId } : {},
|
|
210
|
+
...parentDialogRef?.dialogId ? { parentWakeOnTerminal: true } : {},
|
|
211
|
+
...subjectDialogKey ? { subjectDialogKey } : {},
|
|
212
|
+
...subjectRefs.length ? { subjectRefs } : {},
|
|
213
|
+
...allowedChildAgentKeys.length ? { allowedChildAgentKeys } : {},
|
|
214
|
+
...fallbackAgentKeys.length ? { fallbackAgentKeys } : {},
|
|
215
|
+
...allowedToolNames.length ? { allowedToolNames } : {},
|
|
216
|
+
...cwd ? { cwd } : {},
|
|
217
|
+
...blockedToolNames.length ? { blockedToolNames } : {},
|
|
218
|
+
...typeof timeoutMs === "number" ? { timeoutMs } : {}
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
export {
|
|
223
|
+
readFlagValue,
|
|
224
|
+
isFullstackCodingAgentRef,
|
|
225
|
+
positionalArgs,
|
|
226
|
+
resolveRawAgentInput,
|
|
227
|
+
resolveServerUrl,
|
|
228
|
+
buildLocalRunEnv,
|
|
229
|
+
writeUsage,
|
|
230
|
+
parseAgentRunArgs
|
|
231
|
+
};
|