nolo-cli 0.172.0-alpha.1 → 0.172.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{_executeModel-PVY4AXG4.js → _executeModel-P7OE5QLM.js} +16 -16
- package/{accountResolver-JS7QDNNL.js → accountResolver-YGMLY3WW.js} +2 -1
- package/{agentDeleteCommand-QYNICESQ.js → agentDeleteCommand-3CCYENZM.js} +21 -20
- package/{agentEmailCommands-QEJHRESH.js → agentEmailCommands-VH6GRZ4S.js} +22 -21
- package/{agentListCommands-MGMBNFAS.js → agentListCommands-FCSA7YV3.js} +12 -11
- package/{agentMachineCommands-SKOAHGVC.js → agentMachineCommands-VEBNXOLD.js} +10 -9
- package/{agentRecordCommands-2NVWBDQN.js → agentRecordCommands-MGCNHOJ3.js} +21 -20
- package/{agentRunCommand-2LHV37FZ.js → agentRunCommand-UMVA6KSF.js} +22 -21
- package/{agentRuntimeLocal-K3777H5R.js → agentRuntimeLocal-2JOFHEXA.js} +7 -6
- package/{agentSlice-QMOFHPJR.js → agentSlice-AXI53QZB.js} +1 -1
- package/{appDeleteCommands-3HZNWZ2V.js → appDeleteCommands-BNQKVEIA.js} +11 -10
- package/{appDeployCommands-Q5BIBQE2.js → appDeployCommands-V5WQ2ZBR.js} +11 -10
- package/{appDeployStatusCommands-ZZFFVM3W.js → appDeployStatusCommands-QA5GFIUU.js} +11 -10
- package/{appGetCommands-7AAOXZQK.js → appGetCommands-U3SDB4TE.js} +11 -10
- package/{appListCommands-H76IX2X5.js → appListCommands-DMHPABYC.js} +11 -10
- package/{chromeCommands-IY4NVSXZ.js → chromeCommands-Z5LDHMYN.js} +2 -1
- package/{chromeOpsCommands-6JHNTKXU.js → chromeOpsCommands-CHBIUDJD.js} +2 -1
- package/{chunk-TYQZRSL6.js → chunk-2FOT26E6.js} +1 -1
- package/{chunk-6J227QXV.js → chunk-2GRXE3YJ.js} +21 -0
- package/{chunk-CFLYUFMA.js → chunk-3RF4DIQW.js} +5 -5
- package/{chunk-VAQ3EGPC.js → chunk-3SF6NB4R.js} +2 -2
- package/{chunk-3XUE7WJA.js → chunk-4TTEZGP3.js} +47 -28
- package/{chunk-KUA3PPFK.js → chunk-55HS2GQD.js} +4 -4
- package/{chunk-UMVEB5QT.js → chunk-6KS4TTCI.js} +10 -10
- package/{chunk-ME7N4YHG.js → chunk-7YN3HYWC.js} +17 -81
- package/{chunk-MTAWQNSU.js → chunk-BIF4B4ON.js} +1 -1
- package/{chunk-JIGBVOHH.js → chunk-CDDFEVZ5.js} +8 -8
- package/{chunk-BE42X662.js → chunk-CK4GWPSD.js} +1 -1
- package/{chunk-7OQ7IDU3.js → chunk-CRQGEMKZ.js} +10 -10
- package/{chunk-BU2YQBV4.js → chunk-DPQYIS6D.js} +41 -1
- package/{chunk-2FAQDT6E.js → chunk-EEFX46WP.js} +2 -2
- package/{chunk-HBUKJB3W.js → chunk-EW6GOYKQ.js} +2 -1
- package/{chunk-YEOFTC2H.js → chunk-KSCX7GME.js} +1 -1
- package/{chunk-SHPY7A3P.js → chunk-QPUKYKMH.js} +16 -15
- package/{chunk-PJVGNB4L.js → chunk-RPZNVBA5.js} +1 -1
- package/{chunk-EK3LIELB.js → chunk-RU4KURIK.js} +2 -2
- package/{chunk-XUZQCRSA.js → chunk-S4SA4INB.js} +2 -2
- package/{chunk-MOOQN57G.js → chunk-SIZPFDPU.js} +2 -2
- package/chunk-SRZ6BQIP.js +68 -0
- package/{chunk-54YLFF7P.js → chunk-TOLFIE2I.js} +3 -3
- package/{chunk-SUBKVXFM.js → chunk-TY7GIRX6.js} +1 -1
- package/{chunk-ISMHFI2Y.js → chunk-TZ6CCFRL.js} +3 -3
- package/{chunk-UU4TLYRZ.js → chunk-U4C2R3PV.js} +2 -2
- package/{chunk-TI7ZIWYR.js → chunk-U5UZ7IPM.js} +3 -3
- package/{chunk-OPNHKULV.js → chunk-UVP7VL6F.js} +1 -1
- package/{chunk-CAAH5LNN.js → chunk-VVMACDVS.js} +2 -2
- package/{chunk-DNQ55DHN.js → chunk-XKL2RXV6.js} +8 -8
- package/{chunk-EWLPIR2S.js → chunk-XWEAIAO2.js} +1 -1
- package/{chunk-PPR6G2U2.js → chunk-ZCXK773F.js} +2 -2
- package/{chunk-RATR6VCP.js → chunk-ZEOR6XPJ.js} +1 -1
- package/{chunk-JCILHZJZ.js → chunk-ZQ545VNM.js} +4 -4
- package/{commandRegistry-D3V6AB3G.js → commandRegistry-FDWLTWIQ.js} +44 -44
- package/{contentThunks-P2GNXUKN.js → contentThunks-AAGKCQCZ.js} +3 -3
- package/{createAgentAutomationAction-PQA43W2W.js → createAgentAutomationAction-2K7M6ACJ.js} +3 -3
- package/{createDialogAction-ITOZ5TAM.js → createDialogAction-RFQJMLEO.js} +4 -4
- package/{createPageAction-IKB3LOMU.js → createPageAction-MBDADKFQ.js} +3 -3
- package/{dialogCommands-IZAQB6GY.js → dialogCommands-E5I4ORXJ.js} +11 -10
- package/{dialogSlice-Y6WIZWTC.js → dialogSlice-MHZCAC4E.js} +2 -2
- package/{docCreateCommands-U25MRSOL.js → docCreateCommands-SMX7DXUS.js} +10 -9
- package/{docDeleteCommands-F46A6FJZ.js → docDeleteCommands-MFPBAHFH.js} +11 -10
- package/{docReadCommands-DITPVWA3.js → docReadCommands-ZOWLKFAF.js} +10 -9
- package/{docStore-HRNZKKVS.js → docStore-IUFAMRVZ.js} +1 -1
- package/{docUpdateCommands-O447KO7Z.js → docUpdateCommands-4THL5VLI.js} +10 -9
- package/{handleSendMessageAction-4OVVUVJ4.js → handleSendMessageAction-OS6NNC3U.js} +7 -7
- package/index.js +4 -4
- package/{localRuntimeAdapter-CL3QW3OJ.js → localRuntimeAdapter-XQ4PAAIT.js} +19 -18
- package/{machineCommands-T3VQCFHT.js → machineCommands-UHGFVPD2.js} +20 -19
- package/{machineWsRunDispatch-IGX4UK4C.js → machineWsRunDispatch-BAFZOC6Z.js} +20 -19
- package/package.json +1 -1
- package/{readlineWorkspace-3IZBF57U.js → readlineWorkspace-ISBZZPR2.js} +25 -24
- package/{runAgentClientLoop-RUBF4JIP.js → runAgentClientLoop-H4KCCJOV.js} +14 -14
- package/{spaceCommands-FSATGIKW.js → spaceCommands-PVEPGFHX.js} +10 -9
- package/{streamAgentChatTurn-N7UJ6FFK.js → streamAgentChatTurn-4PX74Z36.js} +17 -17
- package/{tools-Z7EJ6KIM.js → tools-546KDFWP.js} +9 -9
- package/{tuiSummaryLlmCaller-ZETARZOH.js → tuiSummaryLlmCaller-LA7NUKUJ.js} +2 -2
- package/{updateDialogTitleAction-CEFNJE4T.js → updateDialogTitleAction-LIS3EPHP.js} +3 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
assembleAgentDiscoveryResult,
|
|
3
3
|
resolveDiscoveryScope
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-CK4GWPSD.js";
|
|
5
5
|
import {
|
|
6
6
|
fetchWithTransientRetry
|
|
7
7
|
} from "./chunk-KFHREHUQ.js";
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
toolRunUpdated,
|
|
21
21
|
uiCardFallback,
|
|
22
22
|
waitForAbortableDelay
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-SIZPFDPU.js";
|
|
24
24
|
import {
|
|
25
25
|
isGatewayHttpStatus
|
|
26
26
|
} from "./chunk-NF64D32W.js";
|
|
@@ -64,7 +64,7 @@ import {
|
|
|
64
64
|
} from "./chunk-VF4K2QE6.js";
|
|
65
65
|
import {
|
|
66
66
|
createDocState
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-3SF6NB4R.js";
|
|
68
68
|
import {
|
|
69
69
|
addMemberSpace,
|
|
70
70
|
fetchAuthoritativeRemoteSpace,
|
|
@@ -79,7 +79,7 @@ import {
|
|
|
79
79
|
} from "./chunk-BAWAKW7X.js";
|
|
80
80
|
import {
|
|
81
81
|
createDialogAction
|
|
82
|
-
} from "./chunk-
|
|
82
|
+
} from "./chunk-S4SA4INB.js";
|
|
83
83
|
import {
|
|
84
84
|
setDialogExtraReferencesAction
|
|
85
85
|
} from "./chunk-IF7V3CBU.js";
|
|
@@ -102,7 +102,7 @@ import {
|
|
|
102
102
|
updateContentCategory,
|
|
103
103
|
updateContentTitle,
|
|
104
104
|
writeStoredCollapsedCategories
|
|
105
|
-
} from "./chunk-
|
|
105
|
+
} from "./chunk-BIF4B4ON.js";
|
|
106
106
|
import {
|
|
107
107
|
buildDatabaseFileContentUrl,
|
|
108
108
|
deleteDialog,
|
|
@@ -115,7 +115,7 @@ import {
|
|
|
115
115
|
selectMsgById,
|
|
116
116
|
uiAskChoiceFunc,
|
|
117
117
|
uiAskChoiceFunctionSchema
|
|
118
|
-
} from "./chunk-
|
|
118
|
+
} from "./chunk-XKL2RXV6.js";
|
|
119
119
|
import {
|
|
120
120
|
buildMediaToolConfirmation,
|
|
121
121
|
normalizeMediaConfirmExecutionRevision
|
|
@@ -126,7 +126,7 @@ import {
|
|
|
126
126
|
runLlm,
|
|
127
127
|
streamAgentChatTurn,
|
|
128
128
|
updateAgent
|
|
129
|
-
} from "./chunk-
|
|
129
|
+
} from "./chunk-TOLFIE2I.js";
|
|
130
130
|
import {
|
|
131
131
|
getCurrentSpaceId,
|
|
132
132
|
getCurrentSpaceIdRaw,
|
|
@@ -229,7 +229,7 @@ import {
|
|
|
229
229
|
resolveNoloDialogInput,
|
|
230
230
|
resolveReadOnlyToolConstraints,
|
|
231
231
|
verifyNoloDialogSubjectRefQuery
|
|
232
|
-
} from "./chunk-
|
|
232
|
+
} from "./chunk-2GRXE3YJ.js";
|
|
233
233
|
import {
|
|
234
234
|
clipCompactText
|
|
235
235
|
} from "./chunk-5MMAK75Q.js";
|
|
@@ -3882,7 +3882,7 @@ async function deleteDialogsFunc(args, thunkApi) {
|
|
|
3882
3882
|
const deletedDialogIds = [];
|
|
3883
3883
|
const deletedDialogKeys = [];
|
|
3884
3884
|
const failures = [];
|
|
3885
|
-
const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-
|
|
3885
|
+
const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-MHZCAC4E.js");
|
|
3886
3886
|
for (const target of targets) {
|
|
3887
3887
|
try {
|
|
3888
3888
|
await thunkApi.dispatch(deleteDialog2(target.dbKey)).unwrap();
|
|
@@ -18563,7 +18563,7 @@ async function updateDocFunc(args, thunkApi) {
|
|
|
18563
18563
|
updated_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
18564
18564
|
};
|
|
18565
18565
|
await dispatch(write({ data: updatedPageData, customKey: id })).unwrap();
|
|
18566
|
-
const { getDocState, applyExternalDocUpdate } = await import("./docStore-
|
|
18566
|
+
const { getDocState, applyExternalDocUpdate } = await import("./docStore-IUFAMRVZ.js");
|
|
18567
18567
|
if (getDocState().pageKey === id) {
|
|
18568
18568
|
applyExternalDocUpdate({
|
|
18569
18569
|
slateData: finalSlateData,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
flushChatCompletionStream,
|
|
12
12
|
providerHttpFailure,
|
|
13
13
|
throwIfChatCompletionStreamFailed
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-KSCX7GME.js";
|
|
15
15
|
import {
|
|
16
16
|
readSseFrames
|
|
17
17
|
} from "./chunk-HNUWUO75.js";
|
|
@@ -22,10 +22,13 @@ import {
|
|
|
22
22
|
import {
|
|
23
23
|
EXECUTION_BACKEND_KINDS
|
|
24
24
|
} from "./chunk-PWTNI4N7.js";
|
|
25
|
+
import {
|
|
26
|
+
readLocalImage
|
|
27
|
+
} from "./chunk-SRZ6BQIP.js";
|
|
25
28
|
import {
|
|
26
29
|
hasImageInRuntimeMessages,
|
|
27
30
|
stripImagePartsFromMessages
|
|
28
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-EW6GOYKQ.js";
|
|
29
32
|
import {
|
|
30
33
|
clipToolText,
|
|
31
34
|
resolveHistoricalToolContentCap,
|
|
@@ -68,7 +71,7 @@ import {
|
|
|
68
71
|
hashStablePrefixContent,
|
|
69
72
|
resolveResponseGuidelines,
|
|
70
73
|
resolveToolGuidedSections
|
|
71
|
-
} from "./chunk-
|
|
74
|
+
} from "./chunk-ZEOR6XPJ.js";
|
|
72
75
|
import {
|
|
73
76
|
TOOL_HAD_IMAGES,
|
|
74
77
|
TOOL_IMAGES,
|
|
@@ -99,7 +102,7 @@ import {
|
|
|
99
102
|
toolImages,
|
|
100
103
|
transferDowngradedToolTurnOrigin,
|
|
101
104
|
withoutToolImages
|
|
102
|
-
} from "./chunk-
|
|
105
|
+
} from "./chunk-QPUKYKMH.js";
|
|
103
106
|
import {
|
|
104
107
|
BRIDGE_STREAM_MAX_CHARS,
|
|
105
108
|
CLI_NOLO_WORKSPACE_TOOL_NAMES,
|
|
@@ -119,7 +122,7 @@ import {
|
|
|
119
122
|
parseNoloWorkspaceToolArguments,
|
|
120
123
|
readTextStreamUpToChars,
|
|
121
124
|
resolveNoloDialogInput
|
|
122
|
-
} from "./chunk-
|
|
125
|
+
} from "./chunk-2GRXE3YJ.js";
|
|
123
126
|
import {
|
|
124
127
|
buildDialogFallbackTitleFromUserInput
|
|
125
128
|
} from "./chunk-2MBTWINN.js";
|
|
@@ -15716,74 +15719,7 @@ async function invokeCapability(capabilityOrName, input, ctx = {}) {
|
|
|
15716
15719
|
// packages/agent-runtime/localWorkspaceTools.ts
|
|
15717
15720
|
import { existsSync as existsSync4 } from "node:fs";
|
|
15718
15721
|
import { createHash as createHash4 } from "node:crypto";
|
|
15719
|
-
|
|
15720
|
-
// packages/agent-runtime/readImage.ts
|
|
15721
|
-
import { readFile } from "node:fs/promises";
|
|
15722
|
-
import { extname } from "node:path";
|
|
15723
|
-
var MAX_IMAGE_BASE64_BYTES = 2 * 1024 * 1024;
|
|
15724
|
-
var MAX_IMAGE_EDGE = 1568;
|
|
15725
|
-
var MIME_BY_EXTENSION = {
|
|
15726
|
-
".png": "image/png",
|
|
15727
|
-
".jpg": "image/jpeg",
|
|
15728
|
-
".jpeg": "image/jpeg",
|
|
15729
|
-
".webp": "image/webp",
|
|
15730
|
-
".gif": "image/gif"
|
|
15731
|
-
};
|
|
15732
|
-
function detectMime(bytes) {
|
|
15733
|
-
if (bytes.subarray(0, 8).equals(Buffer.from([137, 80, 78, 71, 13, 10, 26, 10]))) return "image/png";
|
|
15734
|
-
if (bytes[0] === 255 && bytes[1] === 216 && bytes[2] === 255) return "image/jpeg";
|
|
15735
|
-
if (["GIF87a", "GIF89a"].includes(bytes.toString("ascii", 0, 6))) return "image/gif";
|
|
15736
|
-
if (bytes.toString("ascii", 0, 4) === "RIFF" && bytes.toString("ascii", 8, 12) === "WEBP") return "image/webp";
|
|
15737
|
-
}
|
|
15738
|
-
async function readLocalImage(path, options) {
|
|
15739
|
-
const limit = options?.maxBase64Bytes ?? MAX_IMAGE_BASE64_BYTES;
|
|
15740
|
-
const expected = MIME_BY_EXTENSION[extname(path).toLowerCase()];
|
|
15741
|
-
if (!expected) throw new Error("read_image: unsupported image extension (PNG/JPEG/WebP/GIF only)");
|
|
15742
|
-
const bytes = await readFile(path);
|
|
15743
|
-
if (detectMime(bytes) !== expected) throw new Error("read_image: image extension and magic bytes do not match");
|
|
15744
|
-
const { default: sharp } = await import("./dist-Q2JSMAKA.js");
|
|
15745
|
-
const image = sharp(bytes, { limitInputPixels: 4e7, animated: false });
|
|
15746
|
-
const meta = await image.metadata();
|
|
15747
|
-
if (!meta.width || !meta.height) throw new Error("read_image: invalid image dimensions");
|
|
15748
|
-
const encoded = (length) => 4 * Math.ceil(length / 3);
|
|
15749
|
-
let output = bytes;
|
|
15750
|
-
let mimeType = expected;
|
|
15751
|
-
let width = meta.width;
|
|
15752
|
-
let height = meta.height;
|
|
15753
|
-
if (Math.max(width, height) > MAX_IMAGE_EDGE || encoded(output.length) > limit) {
|
|
15754
|
-
const resized = await image.rotate().resize({ width: MAX_IMAGE_EDGE, height: MAX_IMAGE_EDGE, fit: "inside", withoutEnlargement: true }).jpeg({ quality: 80 }).toBuffer({ resolveWithObject: true });
|
|
15755
|
-
output = resized.data;
|
|
15756
|
-
width = resized.info.width;
|
|
15757
|
-
height = resized.info.height;
|
|
15758
|
-
mimeType = "image/jpeg";
|
|
15759
|
-
}
|
|
15760
|
-
while (encoded(output.length) > limit) {
|
|
15761
|
-
const current = encoded(output.length);
|
|
15762
|
-
if (width === 1 && height === 1) {
|
|
15763
|
-
throw new Error(
|
|
15764
|
-
`read_image: compressed image ${width}x${height}, ${output.length} bytes (${current} base64 bytes) still exceeds ${limit} base64 bytes`
|
|
15765
|
-
);
|
|
15766
|
-
}
|
|
15767
|
-
const scale = Math.min(0.9, Math.sqrt(limit / current) * 0.95);
|
|
15768
|
-
const resized = await image.clone().rotate().resize({
|
|
15769
|
-
width: Math.max(1, Math.floor(width * scale)),
|
|
15770
|
-
height: Math.max(1, Math.floor(height * scale)),
|
|
15771
|
-
fit: "inside",
|
|
15772
|
-
withoutEnlargement: true
|
|
15773
|
-
}).jpeg({ quality: 80 }).toBuffer({ resolveWithObject: true });
|
|
15774
|
-
output = resized.data;
|
|
15775
|
-
width = resized.info.width;
|
|
15776
|
-
height = resized.info.height;
|
|
15777
|
-
mimeType = "image/jpeg";
|
|
15778
|
-
}
|
|
15779
|
-
return {
|
|
15780
|
-
content: `[image ${width}x${height} ${output.length} bytes \u2192 ${path}]`,
|
|
15781
|
-
images: [{ mimeType, dataBase64: output.toString("base64") }]
|
|
15782
|
-
};
|
|
15783
|
-
}
|
|
15784
|
-
|
|
15785
|
-
// packages/agent-runtime/localWorkspaceTools.ts
|
|
15786
|
-
import { lstat, mkdir, readdir as readdir2, readFile as readFile4, realpath, stat as stat3, writeFile } from "node:fs/promises";
|
|
15722
|
+
import { lstat, mkdir, readdir as readdir2, readFile as readFile3, realpath, stat as stat3, writeFile } from "node:fs/promises";
|
|
15787
15723
|
import { homedir } from "node:os";
|
|
15788
15724
|
import { dirname as dirname2, isAbsolute as isAbsolute2, relative as relative3, resolve as resolve4, sep } from "node:path";
|
|
15789
15725
|
import { spawn as spawnChildProcess3 } from "node:child_process";
|
|
@@ -15821,15 +15757,15 @@ function isLineRangeCovered(request3, covered) {
|
|
|
15821
15757
|
}
|
|
15822
15758
|
|
|
15823
15759
|
// packages/agent-runtime/fileTextSearch.ts
|
|
15824
|
-
import { readdir, readFile as
|
|
15760
|
+
import { readdir, readFile as readFile2, stat as stat2 } from "node:fs/promises";
|
|
15825
15761
|
import { basename, relative as relative2, resolve as resolve3 } from "node:path";
|
|
15826
15762
|
import { spawn as spawnChildProcess2 } from "node:child_process";
|
|
15827
15763
|
|
|
15828
15764
|
// packages/agent-runtime/gitignore.ts
|
|
15829
|
-
import { readFile
|
|
15765
|
+
import { readFile, stat } from "node:fs/promises";
|
|
15830
15766
|
import { resolve as resolve2 } from "node:path";
|
|
15831
15767
|
async function readRootGitignorePatterns(workspaceRoot) {
|
|
15832
|
-
const content = await
|
|
15768
|
+
const content = await readFile(resolve2(workspaceRoot, ".gitignore"), "utf8").catch(() => null);
|
|
15833
15769
|
if (content === null) return [];
|
|
15834
15770
|
return content.split(/\r?\n/).map((line) => line.trim()).filter((line) => line && !line.startsWith("#") && !line.startsWith("!")).flatMap((line) => {
|
|
15835
15771
|
const unanchored = line.replace(/^\//, "");
|
|
@@ -15909,7 +15845,7 @@ async function decorate(root, raw, context3, absolute = false) {
|
|
|
15909
15845
|
let lines = cache.get(x.file);
|
|
15910
15846
|
if (!lines) {
|
|
15911
15847
|
try {
|
|
15912
|
-
lines = (await
|
|
15848
|
+
lines = (await readFile2(x.file, "utf8")).split(/\r\n|\r|\n/);
|
|
15913
15849
|
} catch {
|
|
15914
15850
|
continue;
|
|
15915
15851
|
}
|
|
@@ -15938,7 +15874,7 @@ function globMatch(pattern, value) {
|
|
|
15938
15874
|
const r = new RegExp(`^${source}$`);
|
|
15939
15875
|
return r.test(value) || r.test(basename(value));
|
|
15940
15876
|
}
|
|
15941
|
-
var defaultReadTextFile = (filePath) =>
|
|
15877
|
+
var defaultReadTextFile = (filePath) => readFile2(filePath, "utf8").catch(() => "");
|
|
15942
15878
|
async function jsSearch(o, targetPath) {
|
|
15943
15879
|
const max4 = o.maxResults ?? Number.MAX_SAFE_INTEGER;
|
|
15944
15880
|
const excludes = o.exclude ?? [];
|
|
@@ -17010,7 +16946,7 @@ function readVisualStateCaptureArgs(args2) {
|
|
|
17010
16946
|
}
|
|
17011
16947
|
async function readWorkspacePackageScripts(workspaceRoot) {
|
|
17012
16948
|
try {
|
|
17013
|
-
const raw = await
|
|
16949
|
+
const raw = await readFile3(resolve4(workspaceRoot, "package.json"), "utf8");
|
|
17014
16950
|
const parsed = JSON.parse(raw);
|
|
17015
16951
|
const scripts = parsed && typeof parsed === "object" && parsed.scripts && typeof parsed.scripts === "object" ? Object.keys(parsed.scripts).sort() : [];
|
|
17016
16952
|
return { scripts };
|
|
@@ -17195,7 +17131,7 @@ async function readFileTool(args2) {
|
|
|
17195
17131
|
allowRuntimeOwnedSpill: true,
|
|
17196
17132
|
...args2.confirmExternalFileAccess ? { confirmExternalFileAccess: args2.confirmExternalFileAccess } : {}
|
|
17197
17133
|
});
|
|
17198
|
-
const content = await
|
|
17134
|
+
const content = await readFile3(absolutePath, "utf8");
|
|
17199
17135
|
const activity = extractActivity(parsed);
|
|
17200
17136
|
const sliced = sliceReadFileContent({
|
|
17201
17137
|
content,
|
|
@@ -17388,7 +17324,7 @@ async function editFileTool(args2) {
|
|
|
17388
17324
|
requestedPath,
|
|
17389
17325
|
...args2.confirmExternalFileAccess ? { confirmExternalFileAccess: args2.confirmExternalFileAccess } : {}
|
|
17390
17326
|
});
|
|
17391
|
-
const content = await
|
|
17327
|
+
const content = await readFile3(absolutePath, "utf8");
|
|
17392
17328
|
const { count: replacementCount, result: nextContent } = countAndReplaceEolTolerant({
|
|
17393
17329
|
content,
|
|
17394
17330
|
oldText,
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
inlineImageUrlsForCustomProvider,
|
|
6
6
|
prepareTools,
|
|
7
7
|
shouldInlineImageUrlsForAgent
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-ZCXK773F.js";
|
|
9
9
|
import {
|
|
10
10
|
CONFIRMATION_INPUT_KEYS,
|
|
11
11
|
INVALID_TOOL_ARGS_REPLACEMENT,
|
|
@@ -14,16 +14,16 @@ import {
|
|
|
14
14
|
performFetchRequest,
|
|
15
15
|
sanitizeOutboundMessages,
|
|
16
16
|
stripModelToolArgs
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-ZQ545VNM.js";
|
|
18
18
|
import {
|
|
19
19
|
findToolExecutor,
|
|
20
20
|
toolDefinitionsByName
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-6KS4TTCI.js";
|
|
22
22
|
import {
|
|
23
23
|
classifyApiError,
|
|
24
24
|
classifyGenerationError,
|
|
25
25
|
extractErrorDiagnostics
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-RU4KURIK.js";
|
|
27
27
|
import {
|
|
28
28
|
createSSEParser,
|
|
29
29
|
createToolRunId,
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
toolRunSetPending,
|
|
33
33
|
toolRunStarted,
|
|
34
34
|
toolRunSucceeded
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-SIZPFDPU.js";
|
|
36
36
|
import {
|
|
37
37
|
getPublicImageAgentMode
|
|
38
38
|
} from "./chunk-VIDPVFP3.js";
|
|
@@ -42,10 +42,10 @@ import {
|
|
|
42
42
|
messageStreaming,
|
|
43
43
|
toolResultNeedsUserConfirmation,
|
|
44
44
|
updateToolMessage
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-XKL2RXV6.js";
|
|
46
46
|
import {
|
|
47
47
|
streamAgentChatTurn
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-TOLFIE2I.js";
|
|
49
49
|
import {
|
|
50
50
|
getCurrentSpaceId
|
|
51
51
|
} from "./chunk-ZJ7UHBJS.js";
|
|
@@ -85,7 +85,7 @@ import {
|
|
|
85
85
|
} from "./chunk-56GBUMO5.js";
|
|
86
86
|
import {
|
|
87
87
|
normalizeChatCompletionsBodyForProvider
|
|
88
|
-
} from "./chunk-
|
|
88
|
+
} from "./chunk-QPUKYKMH.js";
|
|
89
89
|
import {
|
|
90
90
|
EMPTY_ASSISTANT_REPAIR_PROMPT
|
|
91
91
|
} from "./chunk-7TBARDLF.js";
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
resolveRawAgentInput,
|
|
10
10
|
resolveServerUrl,
|
|
11
11
|
writeUsage
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-EEFX46WP.js";
|
|
13
13
|
import {
|
|
14
14
|
getReadableCliDb
|
|
15
15
|
} from "./chunk-62TBKWTV.js";
|
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
resolveFileWriteGateEnabled,
|
|
32
32
|
resolveLocalUserId,
|
|
33
33
|
validateInstaboxWorkspaceSelection
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-4TTEZGP3.js";
|
|
35
35
|
import {
|
|
36
36
|
clearCredentialAvailability,
|
|
37
37
|
readEffectiveCredentialEntry,
|
|
@@ -64,7 +64,7 @@ import {
|
|
|
64
64
|
import {
|
|
65
65
|
readDbRecord,
|
|
66
66
|
resolveAgentRecordFromHybridStore
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-UVP7VL6F.js";
|
|
68
68
|
import {
|
|
69
69
|
isLocalCliAgentKey
|
|
70
70
|
} from "./chunk-NBTY7YJF.js";
|
|
@@ -79,14 +79,14 @@ import {
|
|
|
79
79
|
} from "./chunk-BMQ2MJUK.js";
|
|
80
80
|
import {
|
|
81
81
|
resolveCliLocalRuntimeKeyCapability
|
|
82
|
-
} from "./chunk-
|
|
82
|
+
} from "./chunk-6KS4TTCI.js";
|
|
83
83
|
import {
|
|
84
84
|
isTransientFetchError
|
|
85
85
|
} from "./chunk-KFHREHUQ.js";
|
|
86
86
|
import {
|
|
87
87
|
parseUiCard,
|
|
88
88
|
uiCardFallback
|
|
89
|
-
} from "./chunk-
|
|
89
|
+
} from "./chunk-SIZPFDPU.js";
|
|
90
90
|
import {
|
|
91
91
|
isGatewayHttpStatus
|
|
92
92
|
} from "./chunk-NF64D32W.js";
|
|
@@ -95,7 +95,7 @@ import {
|
|
|
95
95
|
chooseMemoryOwners,
|
|
96
96
|
loadMemoryCandidatesFromDb,
|
|
97
97
|
resolveAgentMemoryPolicy
|
|
98
|
-
} from "./chunk-
|
|
98
|
+
} from "./chunk-S4SA4INB.js";
|
|
99
99
|
import {
|
|
100
100
|
API_REPORTED_COST_MULTIPLIER,
|
|
101
101
|
estimateMessagesTokens,
|
|
@@ -103,7 +103,7 @@ import {
|
|
|
103
103
|
resolveAgentContextWindow,
|
|
104
104
|
resolveOccupancy,
|
|
105
105
|
resolveOccupancyWindow
|
|
106
|
-
} from "./chunk-
|
|
106
|
+
} from "./chunk-XKL2RXV6.js";
|
|
107
107
|
import {
|
|
108
108
|
buildSkillDiscoveryContextLayer
|
|
109
109
|
} from "./chunk-AU7AXHUL.js";
|
|
@@ -115,10 +115,10 @@ import {
|
|
|
115
115
|
LOCAL_AGENT_CONFIG_MISSING_CODE,
|
|
116
116
|
LOCAL_TURN_ABORTED_CODE,
|
|
117
117
|
readActionGate
|
|
118
|
-
} from "./chunk-
|
|
118
|
+
} from "./chunk-7YN3HYWC.js";
|
|
119
119
|
import {
|
|
120
120
|
resolveAgentRuntimeConfigFromRecord
|
|
121
|
-
} from "./chunk-
|
|
121
|
+
} from "./chunk-EW6GOYKQ.js";
|
|
122
122
|
import {
|
|
123
123
|
createThinkParserState,
|
|
124
124
|
flushThinkParser,
|
|
@@ -11376,7 +11376,7 @@ function isBalanceExhaustedError(error) {
|
|
|
11376
11376
|
|
|
11377
11377
|
// packages/cli/client/agentRun.ts
|
|
11378
11378
|
async function loadRunLocalAgentTurn() {
|
|
11379
|
-
const { runLocalAgentTurn } = await import("./agentRuntimeLocal-
|
|
11379
|
+
const { runLocalAgentTurn } = await import("./agentRuntimeLocal-2JOFHEXA.js");
|
|
11380
11380
|
return runLocalAgentTurn;
|
|
11381
11381
|
}
|
|
11382
11382
|
var stripDebugNoise = (s) => s.replace(/\s*raw="[\s\S]*"/g, "").replace(/\s*raw=\S+/g, "").replace(/\s*headers=\[[^\]]*\]/g, "").replace(/\s*headers=\S+/g, "").trim();
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
readLocalImage
|
|
3
|
+
} from "./chunk-SRZ6BQIP.js";
|
|
1
4
|
import {
|
|
2
5
|
isRecord
|
|
3
6
|
} from "./chunk-KUG52IAP.js";
|
|
@@ -220,6 +223,43 @@ function logUploadAudit(entry, logFn = console.warn) {
|
|
|
220
223
|
|
|
221
224
|
// packages/desktop-chrome-connector/chromeConnector.ts
|
|
222
225
|
import { existsSync as existsSync2, readFileSync } from "node:fs";
|
|
226
|
+
|
|
227
|
+
// packages/desktop-chrome-connector/screenshotResult.ts
|
|
228
|
+
import { mkdtemp, writeFile } from "node:fs/promises";
|
|
229
|
+
import { tmpdir } from "node:os";
|
|
230
|
+
import { join as join2 } from "node:path";
|
|
231
|
+
async function screenshotResult(result) {
|
|
232
|
+
const source = result;
|
|
233
|
+
if (!source?.savedTo && !source?.dataUrl) {
|
|
234
|
+
return { content: JSON.stringify({ ok: true, result }) };
|
|
235
|
+
}
|
|
236
|
+
let path = typeof source?.savedTo === "string" ? source.savedTo : void 0;
|
|
237
|
+
const { dataUrl: _dataUrl, ...summary } = source && typeof source === "object" ? source : {};
|
|
238
|
+
try {
|
|
239
|
+
if (!path && typeof source?.dataUrl === "string") {
|
|
240
|
+
const match = /^data:image\/(png|jpeg|webp|gif);base64,([\s\S]+)$/.exec(source.dataUrl);
|
|
241
|
+
if (!match) throw new Error("unsupported screenshot data URL");
|
|
242
|
+
const directory = await mkdtemp(join2(tmpdir(), "nolo-screenshot-"));
|
|
243
|
+
path = join2(directory, `screenshot.${match[1] === "jpeg" ? "jpg" : match[1]}`);
|
|
244
|
+
await writeFile(path, Buffer.from(match[2], "base64"));
|
|
245
|
+
}
|
|
246
|
+
if (!path) throw new Error("screenshot result has no savedTo or image data URL");
|
|
247
|
+
const image = await readLocalImage(path);
|
|
248
|
+
return {
|
|
249
|
+
content: `${JSON.stringify({ ok: true, result: { ...summary, savedTo: path } })}
|
|
250
|
+
${image.content.replace(/^\[image /, "[screenshot ")}`,
|
|
251
|
+
images: image.images
|
|
252
|
+
};
|
|
253
|
+
} catch (error) {
|
|
254
|
+
return {
|
|
255
|
+
content: `${JSON.stringify({ ok: true, result: { ...summary, ...path ? { savedTo: path } : {} } })}
|
|
256
|
+
${path ? `screenshot saved to ${path}
|
|
257
|
+
` : ""}Screenshot image not delivered (\u672A\u6295\u9012): ${toErrorMessage(error)}`
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// packages/desktop-chrome-connector/chromeConnector.ts
|
|
223
263
|
import { resolve as resolve2 } from "node:path";
|
|
224
264
|
var NOLO_CHROME_CONNECTOR_EXTENSION_ID = "ahpdoopadkamnglhlacfjdfnonpjdplg";
|
|
225
265
|
var NOLO_FIREFOX_CONNECTOR_EXTENSION_ID = "nolo-browser-connector@nolo.chat";
|
|
@@ -587,7 +627,7 @@ async function executeChromeConnectorTool(args) {
|
|
|
587
627
|
}) : args.client ?? createVerifiedChromeConnectorClient({ client: createChromeConnectorClient() }));
|
|
588
628
|
const result = await client.request(action, payload);
|
|
589
629
|
return {
|
|
590
|
-
content: JSON.stringify({ ok: true, result }),
|
|
630
|
+
...action === "screenshot" ? await screenshotResult(result) : { content: JSON.stringify({ ok: true, result }) },
|
|
591
631
|
metadata: {
|
|
592
632
|
chromeConnector: true,
|
|
593
633
|
action
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
} from "./chunk-NBTY7YJF.js";
|
|
6
6
|
import {
|
|
7
7
|
resolveCliLocalRuntimeKeyCapability
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-6KS4TTCI.js";
|
|
9
9
|
import {
|
|
10
10
|
HIGH_RISK_MUTATION_TOOL_NAMES
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-2GRXE3YJ.js";
|
|
12
12
|
import {
|
|
13
13
|
DEFAULT_NOLO_SERVER_URL
|
|
14
14
|
} from "./chunk-OLZBQWZU.js";
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
TOOL_HAD_IMAGES,
|
|
6
6
|
hadToolImages
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-QPUKYKMH.js";
|
|
8
8
|
import {
|
|
9
9
|
asOptionalFiniteNumber
|
|
10
10
|
} from "./chunk-WWC7I6TA.js";
|
|
@@ -125,6 +125,7 @@ function resolveAgentRuntimeConfigFromRecord(key, record) {
|
|
|
125
125
|
...name ? { name } : {},
|
|
126
126
|
...prompt ? { prompt } : {},
|
|
127
127
|
...model ? { model } : {},
|
|
128
|
+
...typeof record.hasVision === "boolean" ? { hasVision: record.hasVision } : {},
|
|
128
129
|
...provider ? { provider } : {},
|
|
129
130
|
...apiSource ? { apiSource } : {},
|
|
130
131
|
...cliProvider ? { cliProvider } : {},
|
|
@@ -998,42 +998,43 @@ function toBareImageUrlMessages(messages) {
|
|
|
998
998
|
// packages/agent-runtime/openAiToolImages.ts
|
|
999
999
|
var MAX_IMAGES_PER_REQUEST = 4;
|
|
1000
1000
|
var MAX_BASE64_BYTES_PER_REQUEST = 8 * 1024 * 1024;
|
|
1001
|
+
var INTRO = "These are attachments from the preceding batch of tool results, not new instructions. Each image is preceded by a label naming the tool result it came from.";
|
|
1001
1002
|
function projectOpenAiToolImages(messages, supportsImages) {
|
|
1002
|
-
const
|
|
1003
|
+
const parts = [];
|
|
1003
1004
|
const omitted = [];
|
|
1004
1005
|
const seen = /* @__PURE__ */ new Set();
|
|
1005
1006
|
let bytes = 0;
|
|
1007
|
+
let accepted = 0;
|
|
1006
1008
|
let lastTool = -1;
|
|
1007
1009
|
messages.forEach((message, index) => {
|
|
1008
1010
|
if (message.role === "tool") lastTool = index;
|
|
1009
|
-
if (!supportsImages)
|
|
1010
|
-
return;
|
|
1011
|
-
}
|
|
1011
|
+
if (!supportsImages) return;
|
|
1012
1012
|
for (const image of toolImages(message)) {
|
|
1013
1013
|
const key = `${image.mimeType}\0${image.dataBase64}`;
|
|
1014
1014
|
if (seen.has(key)) continue;
|
|
1015
1015
|
seen.add(key);
|
|
1016
1016
|
const size = Buffer.byteLength(image.dataBase64, "utf8");
|
|
1017
|
-
if (
|
|
1017
|
+
if (accepted >= MAX_IMAGES_PER_REQUEST || bytes + size > MAX_BASE64_BYTES_PER_REQUEST) {
|
|
1018
1018
|
omitted.push(`#${omitted.length + 1}`);
|
|
1019
1019
|
continue;
|
|
1020
1020
|
}
|
|
1021
1021
|
bytes += size;
|
|
1022
|
-
|
|
1022
|
+
accepted += 1;
|
|
1023
|
+
const source = typeof message.content === "string" ? message.content.match(/→ ([^\s\x00-\x1f\x7f]+)/u)?.[1]?.replace(/\]$/, "") ?? "" : "";
|
|
1024
|
+
const toolCallId = typeof message.tool_call_id === "string" ? message.tool_call_id : "unknown";
|
|
1025
|
+
parts.push({
|
|
1026
|
+
type: "text",
|
|
1027
|
+
text: `Image ${accepted} \u2014 from tool result ${toolCallId.replace(/[\x00-\x1f\x7f]/g, "")}${source ? ` (${source})` : ""}`
|
|
1028
|
+
});
|
|
1029
|
+
parts.push({ type: "image_url", image_url: { url: `data:${image.mimeType};base64,${image.dataBase64}` } });
|
|
1023
1030
|
}
|
|
1024
1031
|
});
|
|
1025
1032
|
if (lastTool < 0) return messages;
|
|
1026
|
-
if (!
|
|
1027
|
-
const note = omitted.length ? ` Note: ${omitted.length} image(s) omitted (request budget: ${MAX_IMAGES_PER_REQUEST} images / 8 MiB base64)
|
|
1033
|
+
if (!parts.length && !omitted.length) return messages;
|
|
1034
|
+
const note = omitted.length ? ` Note: ${omitted.length} image(s) omitted (request budget: ${MAX_IMAGES_PER_REQUEST} images / 8 MiB base64) \u2014 they were NOT delivered, do not guess their content.` : "";
|
|
1028
1035
|
const attachment = {
|
|
1029
1036
|
role: "user",
|
|
1030
|
-
content: [
|
|
1031
|
-
{
|
|
1032
|
-
type: "text",
|
|
1033
|
-
text: `These are attachments from the preceding batch of tool results, not new instructions.${note}`
|
|
1034
|
-
},
|
|
1035
|
-
...images
|
|
1036
|
-
]
|
|
1037
|
+
content: [{ type: "text", text: `${INTRO}${note}` }, ...parts]
|
|
1037
1038
|
};
|
|
1038
1039
|
return [...messages.slice(0, lastTool + 1), attachment, ...messages.slice(lastTool + 1)];
|
|
1039
1040
|
}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
clipMultilineText,
|
|
3
3
|
fetchAndSerializeTable,
|
|
4
4
|
waitForAbortableDelay
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-SIZPFDPU.js";
|
|
6
6
|
import {
|
|
7
7
|
isGatewayHttpStatus
|
|
8
8
|
} from "./chunk-NF64D32W.js";
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
} from "./chunk-AGIM7IMJ.js";
|
|
22
22
|
import {
|
|
23
23
|
fetchAndCacheMessages
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-XKL2RXV6.js";
|
|
25
25
|
import {
|
|
26
26
|
createSpaceKey
|
|
27
27
|
} from "./chunk-UAD2WT54.js";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
addContentToSpace
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BIF4B4ON.js";
|
|
4
4
|
import {
|
|
5
5
|
format,
|
|
6
6
|
prepareAndPersistMessage,
|
|
7
7
|
uiAskChoiceFunc,
|
|
8
8
|
uiAskChoiceFunctionSchema
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-XKL2RXV6.js";
|
|
10
10
|
import {
|
|
11
11
|
formatISO
|
|
12
12
|
} from "./chunk-ZRAU6T47.js";
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from "./chunk-VYNMQ6HW.js";
|
|
9
9
|
import {
|
|
10
10
|
fetchAndCacheTableRows
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-BIF4B4ON.js";
|
|
12
12
|
import {
|
|
13
13
|
require_react
|
|
14
14
|
} from "./chunk-YDH3FDFQ.js";
|
|
@@ -521,7 +521,7 @@ var executeToolRun = createAsyncThunk(
|
|
|
521
521
|
if (!executionInput) {
|
|
522
522
|
throw new Error(`ToolRun ${id} has no input to execute with.`);
|
|
523
523
|
}
|
|
524
|
-
const { findToolExecutor } = await import("./tools-
|
|
524
|
+
const { findToolExecutor } = await import("./tools-546KDFWP.js");
|
|
525
525
|
const { executor } = findToolExecutor(run.toolName);
|
|
526
526
|
toolRunStarted({
|
|
527
527
|
id: run.id,
|