nolo-cli 0.74.0-alpha.1 → 0.74.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-YEVZAJYX.js → _executeModel-IULR47HG.js} +20 -20
- package/{agentDeleteCommand-FSIMTL4K.js → agentDeleteCommand-2S4WCDQC.js} +16 -15
- package/{agentEmailCommands-HQT4EUOA.js → agentEmailCommands-V3ADGHX7.js} +30 -28
- package/{agentListCommands-2YWZYH52.js → agentListCommands-EPK3S274.js} +18 -17
- package/{agentMachineCommands-3TR7DVYO.js → agentMachineCommands-XMZWK7P3.js} +16 -15
- package/{agentRecordCommands-TRUY7Z6N.js → agentRecordCommands-WFPWLWOF.js} +29 -27
- package/{agentRunCommand-EHJOESHA.js → agentRunCommand-VUWNWC7C.js} +29 -27
- package/{agentRuntimeLocal-O6DZDTK4.js → agentRuntimeLocal-YRONTDLM.js} +15 -14
- package/{agentSlice-RRZS2UII.js → agentSlice-2P7OJFES.js} +1 -1
- package/{appDeleteCommands-HIJNWSK7.js → appDeleteCommands-YS7UGMP3.js} +17 -16
- package/{appDeployCommands-XULV2ZN6.js → appDeployCommands-XIE5Z4BE.js} +17 -16
- package/{appDeployStatusCommands-ETY4Z7K6.js → appDeployStatusCommands-54UDVYET.js} +17 -16
- package/{appGetCommands-M253LKDA.js → appGetCommands-6XYLBCRN.js} +17 -16
- package/{appListCommands-XYFXJMNP.js → appListCommands-VEGH7SF5.js} +17 -16
- package/{authCommand-EVGFLAHO.js → authCommand-JIEOFHXW.js} +84 -9
- package/{chatQueueReduxAdapter-LSBTGZW2.js → chatQueueReduxAdapter-GPYCH5Z2.js} +5 -5
- package/chromeCommands-VOIRNJBL.js +499 -0
- package/chromeOpsCommands-M7DPCX2T.js +258 -0
- package/{chunk-FARB62OB.js → chunk-3VPDELAP.js} +42 -31
- package/{chunk-CS36XM4N.js → chunk-4SZ37KLL.js} +21 -9
- package/{chunk-FPTQQSS6.js → chunk-73BR2IQT.js} +23 -2
- package/{chunk-PYXL2CJL.js → chunk-7FWPLK4M.js} +1 -1
- package/{chunk-DSRXPQWA.js → chunk-7QVPPOEC.js} +1 -1
- package/{chunk-KIS76A2P.js → chunk-AX7RMXSH.js} +1 -1
- package/{chunk-OXY5PKLG.js → chunk-BKJO7LDP.js} +2 -2
- package/{chunk-Q6FF2MCK.js → chunk-BOYUESO7.js} +1 -1
- package/{chunk-GBPZKFYK.js → chunk-BZNGCVAW.js} +1 -1
- package/{chunk-EXMHJN7C.js → chunk-CADAR6QU.js} +1 -1
- package/{chunk-2QDDKFG5.js → chunk-CQ3WA2NE.js} +77 -0
- package/{chunk-B62OSA77.js → chunk-D6XYLSOS.js} +1 -1
- package/{chunk-TI4CCL34.js → chunk-DM4FBSWG.js} +3 -3
- package/{chunk-JWO3RQSH.js → chunk-DUJWWUGV.js} +1 -1
- package/{chunk-XGZM6BTX.js → chunk-EBKMQULC.js} +66 -120
- package/{chunk-ZLPA7K55.js → chunk-ETLZZQJE.js} +2 -2
- package/chunk-FMODTASJ.js +109 -0
- package/{chunk-T7PQFKJU.js → chunk-FNGAF7C4.js} +2 -2
- package/{chunk-MYU3MJCF.js → chunk-GCJ3IS5M.js} +0 -1
- package/{chunk-XPQJXIF5.js → chunk-GHEJJGJI.js} +125 -25
- package/{chunk-DFY6PUV4.js → chunk-HTMVBPOF.js} +7 -7
- package/{chunk-VOEW2KF3.js → chunk-IDGYOD2O.js} +59 -55
- package/{chunk-YCDWJX45.js → chunk-KC5FAHVS.js} +1 -1
- package/{chunk-2JCTE5UN.js → chunk-KEZNSFGD.js} +3 -3
- package/{chunk-I4UWPYBH.js → chunk-KRMWO2NN.js} +2 -2
- package/{chunk-PGSKWZCB.js → chunk-LHDV2QUI.js} +1 -1
- package/{chunk-UJ63UXGE.js → chunk-MXUSPS2N.js} +289 -2
- package/{chunk-3IT2PFHL.js → chunk-NB5SIWC4.js} +1 -1
- package/{chunk-HXAINXPQ.js → chunk-NFT2AOK5.js} +2 -2
- package/{chunk-AUKZOZFG.js → chunk-NRALD3CC.js} +2 -2
- package/{chunk-CJ23A7U4.js → chunk-PF6O3GR3.js} +533 -57
- package/{chunk-K7AG465Q.js → chunk-PZCTYKGU.js} +3 -1
- package/chunk-QCZX4FTW.js +242 -0
- package/{chunk-QBA5KMJI.js → chunk-RZOJRTKR.js} +29 -15
- package/{chunk-OH5WRY7G.js → chunk-T25L377S.js} +18 -6
- package/{chunk-CMH2SYHX.js → chunk-TMPLPCVX.js} +1 -1
- package/{chunk-3U3EA3BO.js → chunk-U7YP7ECK.js} +3 -3
- package/{chunk-AWPU7GXU.js → chunk-URWDSZRW.js} +2 -2
- package/{chunk-Q4OT2DC7.js → chunk-WL2RKIBF.js} +1 -1
- package/{chunk-IDZTNRP2.js → chunk-X7HHHIOZ.js} +10 -2
- package/{chunk-57VRXRLF.js → chunk-Y3NZYLPG.js} +1 -1
- package/{chunk-V3ZKNK5D.js → chunk-ZVN6I33J.js} +5 -5
- package/{codingSkills-E6KSDNSJ.js → codingSkills-7S6523WH.js} +2 -2
- package/{contentThunks-476Y6CFR.js → contentThunks-THSCADSK.js} +6 -6
- package/{createAgentAutomationAction-DN4SFTP5.js → createAgentAutomationAction-WGN3UQ5A.js} +6 -6
- package/{createDialogAction-2GS4JCMU.js → createDialogAction-3EN2NLH7.js} +8 -8
- package/{createPageAction-44WTUMZ5.js → createPageAction-4VK473QV.js} +6 -6
- package/{dialogCommands-PE5FEFJ5.js → dialogCommands-PS4NWYY7.js} +17 -16
- package/{dialogSlice-7HEVCJFT.js → dialogSlice-CLV7SVOZ.js} +5 -5
- package/{docCreateCommands-IPDFZVPG.js → docCreateCommands-4KANZJR6.js} +16 -15
- package/{docDeleteCommands-VQ4Y66CM.js → docDeleteCommands-F2S2TRUF.js} +17 -16
- package/{docReadCommands-PD33VV27.js → docReadCommands-B2WDPZQE.js} +16 -15
- package/{docStore-LJ7KNKFB.js → docStore-TDLCHWPF.js} +1 -1
- package/{docUpdateCommands-CGUQ2JY3.js → docUpdateCommands-E7TKHRIO.js} +16 -15
- package/{getPricing-HRMSOF3E.js → getPricing-QVTUQQTM.js} +2 -2
- package/{handleSendMessageAction-ETA5QZIN.js → handleSendMessageAction-AHL3ZHE4.js} +5 -5
- package/index.js +118 -54
- package/{machineCommands-INAP62WH.js → machineCommands-OTABVXOA.js} +28 -26
- package/{machineWsRunDispatch-MT7VRNKX.js → machineWsRunDispatch-V4EVQSMZ.js} +28 -26
- package/package.json +1 -1
- package/{readlineWorkspace-5TV6ES57.js → readlineWorkspace-IIT3FQ6I.js} +439 -117
- package/{runAgentClientLoop-2PGZSCET.js → runAgentClientLoop-7TQM7IAR.js} +18 -18
- package/{spaceCommands-Y47DDAQD.js → spaceCommands-FSYH7AL4.js} +16 -15
- package/{streamAgentChatTurn-I6FUM6RV.js → streamAgentChatTurn-6EF6TVFK.js} +22 -22
- package/{tools-KU4X5HGZ.js → tools-R3QNWWTD.js} +15 -13
- package/{tuiSummaryLlmCaller-J5BEPLW5.js → tuiSummaryLlmCaller-PWOXTCBF.js} +5 -5
- package/{updateCommands-AJYSD73Y.js → updateCommands-Y363MC3L.js} +2 -2
- package/{updateDialogTitleAction-E3SNB75W.js → updateDialogTitleAction-F3EUOWOB.js} +6 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getModelConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MXUSPS2N.js";
|
|
4
4
|
import {
|
|
5
5
|
isPlatformHostedDeepseekModel,
|
|
6
6
|
isPlatformHostedOpenAIImageModel,
|
|
@@ -25,6 +25,8 @@ var PLATFORM_CHAT_COMPLETIONS_ENDPOINTS = {
|
|
|
25
25
|
qwen: "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions",
|
|
26
26
|
// Moonshot AI(月之暗面)开放平台 OpenAI 兼容模式(按量计费)
|
|
27
27
|
moonshot: "https://api.moonshot.cn/v1/chat/completions",
|
|
28
|
+
// 阶跃星辰(StepFun)开放平台 OpenAI 兼容模式
|
|
29
|
+
stepfun: "https://api.stepfun.com/v1/chat/completions",
|
|
28
30
|
// 平台托管 GLM 5.3 Flash 的实际上游(RunInfra 独家廉价快档)
|
|
29
31
|
runinfra: "https://api.runinfra.ai/v1/chat/completions"
|
|
30
32
|
// 无 nolo 默认上游:平台托管模型全部显式分流,未识别模型返回 undefined
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import {
|
|
2
|
+
toErrorMessage
|
|
3
|
+
} from "./chunk-HNMXYYJR.js";
|
|
4
|
+
import {
|
|
5
|
+
isRecord
|
|
6
|
+
} from "./chunk-KUG52IAP.js";
|
|
7
|
+
|
|
8
|
+
// packages/desktop-chrome-connector/chromeConnector.ts
|
|
9
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
10
|
+
import { resolve } from "node:path";
|
|
11
|
+
var NOLO_CHROME_CONNECTOR_EXTENSION_ID = "ahpdoopadkamnglhlacfjdfnonpjdplg";
|
|
12
|
+
var NOLO_CHROME_CONNECTOR_PROTOCOL_VERSION = "2";
|
|
13
|
+
function defaultTokenPath() {
|
|
14
|
+
return resolve(
|
|
15
|
+
process.env.HOME || "",
|
|
16
|
+
"Library/Application Support/Nolo/ChromeConnector/token"
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
function readConnectorToken(tokenPath = defaultTokenPath()) {
|
|
20
|
+
if (process.env.NOLO_CHROME_CONNECTOR_TOKEN) return process.env.NOLO_CHROME_CONNECTOR_TOKEN;
|
|
21
|
+
if (!existsSync(tokenPath)) return "";
|
|
22
|
+
return readFileSync(tokenPath, "utf8").trim();
|
|
23
|
+
}
|
|
24
|
+
var CHROME_TOOL_ACTIONS = {
|
|
25
|
+
chrome_list_tabs: "list_tabs",
|
|
26
|
+
chrome_open_tab: "open_tab",
|
|
27
|
+
chrome_close_tab: "close_tab",
|
|
28
|
+
chrome_read_page: "read_page",
|
|
29
|
+
chrome_click: "click",
|
|
30
|
+
chrome_type: "type",
|
|
31
|
+
chrome_press: "press",
|
|
32
|
+
chrome_scroll: "scroll",
|
|
33
|
+
chrome_screenshot: "screenshot",
|
|
34
|
+
chrome_read_console: "read_console",
|
|
35
|
+
chrome_read_network: "read_network"
|
|
36
|
+
};
|
|
37
|
+
function createConnectorError(code, message, details) {
|
|
38
|
+
const error = new Error(message);
|
|
39
|
+
error.code = code;
|
|
40
|
+
if (details !== void 0) error.details = details;
|
|
41
|
+
return error;
|
|
42
|
+
}
|
|
43
|
+
function parseArguments(raw) {
|
|
44
|
+
try {
|
|
45
|
+
const parsed = JSON.parse(raw || "{}");
|
|
46
|
+
if (!isRecord(parsed)) {
|
|
47
|
+
throw createConnectorError("INVALID_ARGUMENTS", "Chrome connector tool arguments must be a JSON object.");
|
|
48
|
+
}
|
|
49
|
+
return parsed;
|
|
50
|
+
} catch (error) {
|
|
51
|
+
if (error.code) throw error;
|
|
52
|
+
throw createConnectorError("INVALID_ARGUMENTS", "Chrome connector tool arguments must be valid JSON.");
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function errorPayload(error) {
|
|
56
|
+
return {
|
|
57
|
+
code: error?.code ?? "CHROME_CONNECTOR_ERROR",
|
|
58
|
+
message: toErrorMessage(error),
|
|
59
|
+
...error?.details !== void 0 ? { details: error.details } : {}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
var TARGET_REQUIRED_ACTIONS = /* @__PURE__ */ new Set(["click", "type"]);
|
|
63
|
+
var TAB_ID_REQUIRED_ACTIONS = /* @__PURE__ */ new Set(["close_tab", "detach"]);
|
|
64
|
+
function validateChromeConnectorPayload(action, payload) {
|
|
65
|
+
if (TAB_ID_REQUIRED_ACTIONS.has(action)) {
|
|
66
|
+
const raw = payload.tabId;
|
|
67
|
+
const tabId = typeof raw === "string" ? raw.trim() : typeof raw === "number" && Number.isFinite(raw) ? String(raw) : "";
|
|
68
|
+
if (!tabId) {
|
|
69
|
+
throw createConnectorError(
|
|
70
|
+
"TAB_ID_REQUIRED",
|
|
71
|
+
`Provide the tabId from chrome_list_tabs before calling ${action}.`
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (!TARGET_REQUIRED_ACTIONS.has(action)) return;
|
|
77
|
+
const elementRef = typeof payload.elementRef === "string" ? payload.elementRef.trim() : "";
|
|
78
|
+
const selector = typeof payload.selector === "string" ? payload.selector.trim() : "";
|
|
79
|
+
if (elementRef || selector) return;
|
|
80
|
+
throw createConnectorError(
|
|
81
|
+
"ELEMENT_TARGET_REQUIRED",
|
|
82
|
+
"Provide elementRef from chrome_read_page or a CSS selector."
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
function createChromeConnectorClient(args) {
|
|
86
|
+
if (args?.request) return { request: args.request };
|
|
87
|
+
const defaultPort = process.env.NOLO_CHROME_CONNECTOR_PORT || "38947";
|
|
88
|
+
const endpoint = args?.endpoint ?? process.env.NOLO_CHROME_CONNECTOR_RPC_URL ?? `http://127.0.0.1:${defaultPort}/rpc`;
|
|
89
|
+
const fetchImpl = args?.fetchImpl ?? fetch;
|
|
90
|
+
const token = args?.token ?? readConnectorToken(args?.tokenPath);
|
|
91
|
+
return {
|
|
92
|
+
async request(action, payload) {
|
|
93
|
+
let response;
|
|
94
|
+
try {
|
|
95
|
+
response = await fetchImpl(endpoint, {
|
|
96
|
+
method: "POST",
|
|
97
|
+
headers: {
|
|
98
|
+
"Content-Type": "application/json",
|
|
99
|
+
...token ? { "X-Nolo-Chrome-Connector-Token": token } : {}
|
|
100
|
+
},
|
|
101
|
+
body: JSON.stringify({ action, payload })
|
|
102
|
+
});
|
|
103
|
+
} catch (error) {
|
|
104
|
+
throw createConnectorError(
|
|
105
|
+
"CHROME_CONNECTOR_UNAVAILABLE",
|
|
106
|
+
`Chrome connector RPC endpoint is unavailable at ${endpoint}.`,
|
|
107
|
+
{ cause: toErrorMessage(error) }
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
const data = await response.json().catch(() => ({}));
|
|
111
|
+
if (!response.ok || data?.ok === false) {
|
|
112
|
+
throw createConnectorError(
|
|
113
|
+
typeof data?.error?.code === "string" ? data.error.code : "CHROME_CONNECTOR_RPC_ERROR",
|
|
114
|
+
typeof data?.error?.message === "string" ? data.error.message : `Chrome connector RPC failed with HTTP ${response.status}.`,
|
|
115
|
+
data?.error?.details
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
return data?.result;
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
var REQUIRED_CHROME_CONNECTOR_FEATURES = {
|
|
123
|
+
list_tabs: ["tabs"],
|
|
124
|
+
open_tab: ["tabs"],
|
|
125
|
+
close_tab: ["tabs"],
|
|
126
|
+
read_page: ["compact_observation_v2"],
|
|
127
|
+
click: ["compact_observation_v2", "action_gate"],
|
|
128
|
+
type: ["compact_observation_v2", "action_gate"],
|
|
129
|
+
press: ["compact_observation_v2", "action_gate"],
|
|
130
|
+
scroll: ["compact_observation_v2"],
|
|
131
|
+
screenshot: ["browser_debug"],
|
|
132
|
+
read_console: ["browser_debug"],
|
|
133
|
+
read_network: ["browser_debug"],
|
|
134
|
+
detach: ["browser_debug"]
|
|
135
|
+
};
|
|
136
|
+
function requiredFeaturesForConnectorAction(action) {
|
|
137
|
+
return [...REQUIRED_CHROME_CONNECTOR_FEATURES[action] ?? []];
|
|
138
|
+
}
|
|
139
|
+
function createVerifiedChromeConnectorClient(args) {
|
|
140
|
+
const client = args?.client ?? createChromeConnectorClient();
|
|
141
|
+
const expectedExtensionId = args?.expectedExtensionId ?? NOLO_CHROME_CONNECTOR_EXTENSION_ID;
|
|
142
|
+
let verified = null;
|
|
143
|
+
let negotiatedFeatures = [];
|
|
144
|
+
const verify = async () => {
|
|
145
|
+
const connectorInfo = await client.request("connector_info", {});
|
|
146
|
+
const receivedExtensionId = connectorInfo?.extensionId;
|
|
147
|
+
if (receivedExtensionId !== expectedExtensionId) {
|
|
148
|
+
throw createConnectorError(
|
|
149
|
+
"CHROME_CONNECTOR_EXTENSION_MISMATCH",
|
|
150
|
+
`Chrome connector extension id mismatch: expected ${expectedExtensionId}, received ${typeof receivedExtensionId === "string" ? receivedExtensionId : "unknown"}.`,
|
|
151
|
+
{ expectedExtensionId, receivedExtensionId }
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
const receivedProtocolVersion = connectorInfo?.protocolVersion;
|
|
155
|
+
if (receivedProtocolVersion !== NOLO_CHROME_CONNECTOR_PROTOCOL_VERSION) {
|
|
156
|
+
throw createConnectorError(
|
|
157
|
+
"CHROME_CONNECTOR_PROTOCOL_MISMATCH",
|
|
158
|
+
`Chrome connector protocol mismatch: expected ${NOLO_CHROME_CONNECTOR_PROTOCOL_VERSION}, received ${typeof receivedProtocolVersion === "string" ? receivedProtocolVersion : "unknown"}. Reload the Nolo Desktop Chrome Connector extension.`,
|
|
159
|
+
{
|
|
160
|
+
expectedProtocolVersion: NOLO_CHROME_CONNECTOR_PROTOCOL_VERSION,
|
|
161
|
+
receivedProtocolVersion
|
|
162
|
+
}
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
const rawFeatures = connectorInfo?.features;
|
|
166
|
+
negotiatedFeatures = Array.isArray(rawFeatures) ? rawFeatures.filter((entry) => typeof entry === "string") : [];
|
|
167
|
+
};
|
|
168
|
+
return {
|
|
169
|
+
async request(action, payload) {
|
|
170
|
+
verified ??= verify().catch((error) => {
|
|
171
|
+
verified = null;
|
|
172
|
+
throw error;
|
|
173
|
+
});
|
|
174
|
+
await verified;
|
|
175
|
+
const missing = requiredFeaturesForConnectorAction(action).filter(
|
|
176
|
+
(feature) => !negotiatedFeatures.includes(feature)
|
|
177
|
+
);
|
|
178
|
+
if (missing.length > 0) {
|
|
179
|
+
throw createConnectorError(
|
|
180
|
+
"CAPABILITY_UNSUPPORTED",
|
|
181
|
+
`The installed Nolo Browser Connector extension does not support ${missing.join(", ")} (needed by ${action}). Reload or update the extension, then try again.`,
|
|
182
|
+
{ action, missingFeatures: missing, requiredFeatures: requiredFeaturesForConnectorAction(action), features: [...negotiatedFeatures] }
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
return client.request(action, payload);
|
|
186
|
+
},
|
|
187
|
+
features() {
|
|
188
|
+
return [...negotiatedFeatures];
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
async function executeChromeConnectorTool(args) {
|
|
193
|
+
const action = CHROME_TOOL_ACTIONS[args.call.name];
|
|
194
|
+
if (!action) {
|
|
195
|
+
return {
|
|
196
|
+
content: JSON.stringify({
|
|
197
|
+
ok: false,
|
|
198
|
+
error: {
|
|
199
|
+
code: "UNKNOWN_CHROME_TOOL",
|
|
200
|
+
message: `Unknown Chrome connector tool: ${args.call.name}`
|
|
201
|
+
}
|
|
202
|
+
}),
|
|
203
|
+
metadata: {
|
|
204
|
+
chromeConnector: true,
|
|
205
|
+
error: true,
|
|
206
|
+
code: "UNKNOWN_CHROME_TOOL"
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
try {
|
|
211
|
+
const payload = parseArguments(args.call.arguments);
|
|
212
|
+
validateChromeConnectorPayload(action, payload);
|
|
213
|
+
const result = await (args.client ?? createChromeConnectorClient()).request(action, payload);
|
|
214
|
+
return {
|
|
215
|
+
content: JSON.stringify({ ok: true, result }),
|
|
216
|
+
metadata: {
|
|
217
|
+
chromeConnector: true,
|
|
218
|
+
action
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
} catch (error) {
|
|
222
|
+
const payload = errorPayload(error);
|
|
223
|
+
return {
|
|
224
|
+
content: JSON.stringify({ ok: false, error: payload }),
|
|
225
|
+
metadata: {
|
|
226
|
+
chromeConnector: true,
|
|
227
|
+
error: true,
|
|
228
|
+
code: payload.code
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
var CHROME_CONNECTOR_TOOL_ACTIONS = { ...CHROME_TOOL_ACTIONS };
|
|
234
|
+
|
|
235
|
+
export {
|
|
236
|
+
NOLO_CHROME_CONNECTOR_EXTENSION_ID,
|
|
237
|
+
NOLO_CHROME_CONNECTOR_PROTOCOL_VERSION,
|
|
238
|
+
createChromeConnectorClient,
|
|
239
|
+
REQUIRED_CHROME_CONNECTOR_FEATURES,
|
|
240
|
+
createVerifiedChromeConnectorClient,
|
|
241
|
+
executeChromeConnectorTool
|
|
242
|
+
};
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
toCompactAgentSummary,
|
|
30
30
|
toSafeAgentSummary,
|
|
31
31
|
toUnavailableAgentSummary
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-73BR2IQT.js";
|
|
33
33
|
import {
|
|
34
34
|
getUserDataItemTimestamp,
|
|
35
35
|
mergeAndDedupUserData
|
|
@@ -81,14 +81,14 @@ import {
|
|
|
81
81
|
} from "./chunk-VF4K2QE6.js";
|
|
82
82
|
import {
|
|
83
83
|
createDocState
|
|
84
|
-
} from "./chunk-
|
|
84
|
+
} from "./chunk-URWDSZRW.js";
|
|
85
85
|
import {
|
|
86
86
|
BUILTIN_OBJECT_SKILL_IDS,
|
|
87
87
|
buildBuiltinObjectSkillConfig,
|
|
88
88
|
buildBuiltinObjectSkillDbKey,
|
|
89
89
|
buildBuiltinObjectSkillPageContent,
|
|
90
90
|
createDialogAction
|
|
91
|
-
} from "./chunk-
|
|
91
|
+
} from "./chunk-KEZNSFGD.js";
|
|
92
92
|
import {
|
|
93
93
|
DEFAULT_COLLAPSED_CATEGORIES,
|
|
94
94
|
addContentToSpace,
|
|
@@ -106,7 +106,7 @@ import {
|
|
|
106
106
|
updateContentCategory,
|
|
107
107
|
updateContentTitle,
|
|
108
108
|
writeStoredCollapsedCategories
|
|
109
|
-
} from "./chunk-
|
|
109
|
+
} from "./chunk-EBKMQULC.js";
|
|
110
110
|
import {
|
|
111
111
|
getCurrentSpaceId,
|
|
112
112
|
getCurrentSpaceIdRaw,
|
|
@@ -128,14 +128,14 @@ import {
|
|
|
128
128
|
selectMsgById,
|
|
129
129
|
uiAskChoiceFunc,
|
|
130
130
|
uiAskChoiceFunctionSchema
|
|
131
|
-
} from "./chunk-
|
|
131
|
+
} from "./chunk-IDGYOD2O.js";
|
|
132
132
|
import {
|
|
133
133
|
createAgent,
|
|
134
134
|
deleteServerSyncedCredential,
|
|
135
135
|
runLlm,
|
|
136
136
|
streamAgentChatTurn,
|
|
137
137
|
updateAgent
|
|
138
|
-
} from "./chunk-
|
|
138
|
+
} from "./chunk-DM4FBSWG.js";
|
|
139
139
|
import {
|
|
140
140
|
getActiveDialogKey,
|
|
141
141
|
selectCurrentDialogKey,
|
|
@@ -150,10 +150,10 @@ import {
|
|
|
150
150
|
buildCodingSkillContentBySlug,
|
|
151
151
|
buildCodingSkillId,
|
|
152
152
|
buildCodingSkillPageKey
|
|
153
|
-
} from "./chunk-
|
|
153
|
+
} from "./chunk-NB5SIWC4.js";
|
|
154
154
|
import {
|
|
155
155
|
CAPABILITY_PACKS
|
|
156
|
-
} from "./chunk-
|
|
156
|
+
} from "./chunk-GCJ3IS5M.js";
|
|
157
157
|
import {
|
|
158
158
|
buildSkillDocMarkdown,
|
|
159
159
|
normalizeSkillModalities,
|
|
@@ -178,7 +178,7 @@ import {
|
|
|
178
178
|
redactAgentRecordForWorkspaceTool,
|
|
179
179
|
resolveNoloDialogInput,
|
|
180
180
|
verifyNoloDialogSubjectRefQuery
|
|
181
|
-
} from "./chunk-
|
|
181
|
+
} from "./chunk-ZVN6I33J.js";
|
|
182
182
|
import {
|
|
183
183
|
isAgentUnavailableNow
|
|
184
184
|
} from "./chunk-CJCJF5XB.js";
|
|
@@ -187,7 +187,7 @@ import {
|
|
|
187
187
|
} from "./chunk-E36HZARC.js";
|
|
188
188
|
import {
|
|
189
189
|
DEFAULT_MODEL
|
|
190
|
-
} from "./chunk-
|
|
190
|
+
} from "./chunk-MXUSPS2N.js";
|
|
191
191
|
import {
|
|
192
192
|
compactWhitespace
|
|
193
193
|
} from "./chunk-DWLEOOGR.js";
|
|
@@ -1164,7 +1164,7 @@ var buildPlatformFormDataFromArgs = async (args) => {
|
|
|
1164
1164
|
const trimmedModel = toTrimmedString(model);
|
|
1165
1165
|
const trimmedProvider = toTrimmedString(provider);
|
|
1166
1166
|
const modelConfig = await findModelConfig(trimmedModel, trimmedProvider);
|
|
1167
|
-
const { getModelPricing } = await import("./getPricing-
|
|
1167
|
+
const { getModelPricing } = await import("./getPricing-QVTUQQTM.js");
|
|
1168
1168
|
const normalizedTools = tools ?? [];
|
|
1169
1169
|
const resolvedRuntimeToolPolicy = runtimeToolPolicy ?? (normalizedTools.includes("execShell") ? HOSTED_EXEC_RUNTIME_TOOL_POLICY : void 0);
|
|
1170
1170
|
const formData = {
|
|
@@ -4672,7 +4672,7 @@ async function deleteDialogsFunc(args, thunkApi) {
|
|
|
4672
4672
|
const deletedDialogIds = [];
|
|
4673
4673
|
const deletedDialogKeys = [];
|
|
4674
4674
|
const failures = [];
|
|
4675
|
-
const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-
|
|
4675
|
+
const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-CLV7SVOZ.js");
|
|
4676
4676
|
for (const target of targets) {
|
|
4677
4677
|
try {
|
|
4678
4678
|
await thunkApi.dispatch(deleteDialog2(target.dbKey)).unwrap();
|
|
@@ -4756,7 +4756,7 @@ function formatAgentListCard(agents, maxDisplay = 8) {
|
|
|
4756
4756
|
}
|
|
4757
4757
|
var listAgentsFunctionSchema = {
|
|
4758
4758
|
name: "listAgents",
|
|
4759
|
-
description: "List Nolo agents available for delegation as safe summaries. By default (scope='preferred'), returns the user's preferred agents (favorites, self-owned, OAuth subscriptions, custom API, and local agents). Note: favorited public agents stay in preferred and may still consume platform credits - check each agent's billingSource before dispatching. If no suitable preferred candidate is found or the user explicitly asks to explore public/shared agents, call with scope='public' (public agents may consume platform credits). scope='all' returns the deduplicated union for troubleshooting/management. listAgents does not automatically fallback to public agents. The payload returns `credentialGroups` summarizing independent credential capacities (credentialGroup, credentialKind, agentCount, and availableAt recovery timestamps). Orchestration discipline: Never fan out parallel runs on one credential; fan out only across distinct credentialGroups. A channel verdict is valid for the current dispatch attempt only; always re-read availability before dispatching, and never reuse a failure verdict from an earlier attempt. On config_unresolved-class errors, retry once before degrading. Reserve the strongest private channels for review; execution should use cheap channels. The `agents` array carries a compact agent-selection projection per agent: runnable `agentKey` (agent-<userId>-<id> owned, agent-pub-<id> public), name, model, provider, apiSource, billingSource ('user_subscription' | 'user_api' | 'platform_credits' | 'local'), tools, isFavorite, isOAuth, isOwned, isPublic, credentialGroup, credentialKind. Copy `agentKey` verbatim into startAgentRun. Rate-limited agents (429, nextAvailableAt in the future) are hidden by default; unavailableCount and unavailableAgents carry their nextAvailableAt recovery timestamps; pass `showUnavailable: true` to include them. Set `verbose: true` for full safe summary details.",
|
|
4759
|
+
description: "List Nolo agents available for delegation as safe summaries. By default (scope='preferred'), returns the user's preferred agents (favorites, self-owned, OAuth subscriptions, custom API, and local agents). Note: favorited public agents stay in preferred and may still consume platform credits - check each agent's billingSource before dispatching. If no suitable preferred candidate is found or the user explicitly asks to explore public/shared agents, call with scope='public' (public agents may consume platform credits). scope='all' returns the deduplicated union for troubleshooting/management. listAgents does not automatically fallback to public agents. The payload returns `credentialGroups` summarizing independent credential capacities (credentialGroup, credentialKind, agentCount, and availableAt recovery timestamps). Orchestration discipline: Never fan out parallel runs on one credential; fan out only across distinct credentialGroups. A channel verdict is valid for the current dispatch attempt only; always re-read availability before dispatching, and never reuse a failure verdict from an earlier attempt. On config_unresolved-class errors, retry once before degrading. Reserve the strongest private channels for review; execution should use cheap channels. The `agents` array carries a compact agent-selection projection per agent: runnable `agentKey` (agent-<userId>-<id> owned, agent-pub-<id> public), name, model, provider, apiSource, billingSource ('user_subscription' | 'owner_subscription' | 'user_api' | 'platform_credits' | 'local'), tools, isFavorite, isOAuth, isOwned, isPublic, credentialGroup, credentialKind. Copy `agentKey` verbatim into startAgentRun. Rate-limited agents (429, nextAvailableAt in the future) are hidden by default; unavailableCount and unavailableAgents carry their nextAvailableAt recovery timestamps; pass `showUnavailable: true` to include them. Set `verbose: true` for full safe summary details.",
|
|
4760
4760
|
parameters: {
|
|
4761
4761
|
type: "object",
|
|
4762
4762
|
properties: {
|
|
@@ -9933,6 +9933,19 @@ ${preview}`
|
|
|
9933
9933
|
}
|
|
9934
9934
|
|
|
9935
9935
|
// packages/ai/tools/chromeConnectorTools.ts
|
|
9936
|
+
var CHROME_CONNECTOR_TOOL_NAMES = [
|
|
9937
|
+
"chrome_list_tabs",
|
|
9938
|
+
"chrome_open_tab",
|
|
9939
|
+
"chrome_close_tab",
|
|
9940
|
+
"chrome_read_page",
|
|
9941
|
+
"chrome_click",
|
|
9942
|
+
"chrome_type",
|
|
9943
|
+
"chrome_press",
|
|
9944
|
+
"chrome_scroll",
|
|
9945
|
+
"chrome_screenshot",
|
|
9946
|
+
"chrome_read_console",
|
|
9947
|
+
"chrome_read_network"
|
|
9948
|
+
];
|
|
9936
9949
|
var CHROME_CONNECTOR_READ_TOOL_NAMES = [
|
|
9937
9950
|
"chrome_list_tabs",
|
|
9938
9951
|
"chrome_read_page",
|
|
@@ -15533,7 +15546,7 @@ var executeToolRun = createAsyncThunk(
|
|
|
15533
15546
|
if (!executionInput) {
|
|
15534
15547
|
throw new Error(`ToolRun ${id} has no input to execute with.`);
|
|
15535
15548
|
}
|
|
15536
|
-
const { findToolExecutor: findToolExecutor2 } = await import("./tools-
|
|
15549
|
+
const { findToolExecutor: findToolExecutor2 } = await import("./tools-R3QNWWTD.js");
|
|
15537
15550
|
const { executor } = findToolExecutor2(run.toolName);
|
|
15538
15551
|
toolRunStarted({
|
|
15539
15552
|
id: run.id,
|
|
@@ -18040,7 +18053,7 @@ async function updateDocFunc(args, thunkApi) {
|
|
|
18040
18053
|
updated_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
18041
18054
|
};
|
|
18042
18055
|
await dispatch(write({ data: updatedPageData, customKey: id })).unwrap();
|
|
18043
|
-
const { getDocState, applyExternalDocUpdate } = await import("./docStore-
|
|
18056
|
+
const { getDocState, applyExternalDocUpdate } = await import("./docStore-TDLCHWPF.js");
|
|
18044
18057
|
if (getDocState().pageKey === id) {
|
|
18045
18058
|
applyExternalDocUpdate({
|
|
18046
18059
|
slateData: finalSlateData,
|
|
@@ -20343,6 +20356,7 @@ export {
|
|
|
20343
20356
|
readXPostFunc,
|
|
20344
20357
|
readXhsProfileFunctionSchema,
|
|
20345
20358
|
readXhsProfileFunc,
|
|
20359
|
+
CHROME_CONNECTOR_TOOL_NAMES,
|
|
20346
20360
|
rememberMemoryFunctionSchema,
|
|
20347
20361
|
deleteMemoryFunctionSchema,
|
|
20348
20362
|
queryMemoryFunctionSchema,
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createCliLocalRuntimeAdapter,
|
|
3
3
|
summarizeEndpoint
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-GHEJJGJI.js";
|
|
5
5
|
import {
|
|
6
6
|
clipMultilineText
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-RZOJRTKR.js";
|
|
8
8
|
import {
|
|
9
9
|
runLocalAgentTurn
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-PF6O3GR3.js";
|
|
11
11
|
import {
|
|
12
12
|
applyToolSurfaceConstraints
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-ZVN6I33J.js";
|
|
14
14
|
import {
|
|
15
15
|
resolveLocalRuntimeEnvFromPolicy
|
|
16
16
|
} from "./chunk-3JQ2NRYU.js";
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
import {
|
|
21
21
|
readPipeText,
|
|
22
22
|
spawnProcess
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-X7HHHIOZ.js";
|
|
24
24
|
import {
|
|
25
25
|
parseUserIdFromAuthToken
|
|
26
26
|
} from "./chunk-A7GB5UGH.js";
|
|
@@ -133,6 +133,7 @@ function resolveConnectorRunCwd(args) {
|
|
|
133
133
|
}
|
|
134
134
|
return cwd;
|
|
135
135
|
}
|
|
136
|
+
var RUN_GIT_TIMEOUT_MS = 1e4;
|
|
136
137
|
async function runGit(args, cwd, options = {}) {
|
|
137
138
|
const proc = spawnProcess({
|
|
138
139
|
cmd: ["git", ...args],
|
|
@@ -147,7 +148,18 @@ async function runGit(args, cwd, options = {}) {
|
|
|
147
148
|
// 不消费 stderr 会让 git 阻塞在写满的 stderr 管道上永不退出(bun:child_process),
|
|
148
149
|
// proc.exited 随之永不 resolve——connector 收尾整体挂死(2026-09-16 实测)。
|
|
149
150
|
readPipeText(proc.stderr),
|
|
150
|
-
|
|
151
|
+
// 超时保险丝:该路径历史上出过「进程不退出」类挂死(见上);超时 kill 后流关闭、
|
|
152
|
+
// Promise.all 收敛,-1 与真实非零退出一样走「无数据」降级。
|
|
153
|
+
new Promise((resolve2) => {
|
|
154
|
+
const timer = setTimeout(() => {
|
|
155
|
+
proc.kill();
|
|
156
|
+
resolve2(-1);
|
|
157
|
+
}, RUN_GIT_TIMEOUT_MS);
|
|
158
|
+
void proc.exited.then((code) => {
|
|
159
|
+
clearTimeout(timer);
|
|
160
|
+
resolve2(code);
|
|
161
|
+
});
|
|
162
|
+
})
|
|
151
163
|
]);
|
|
152
164
|
if (exitCode !== 0) return null;
|
|
153
165
|
return options.trim === false ? stdout.replace(/\r?\n$/, "") : stdout.trim();
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
listUserRecordsFromServers,
|
|
3
3
|
readLiveDbRecordAfterTombstoneMerge
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-WL2RKIBF.js";
|
|
5
5
|
import {
|
|
6
6
|
agentRecordHasConfiguredCredential
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-NRALD3CC.js";
|
|
8
8
|
import {
|
|
9
9
|
deriveCredentialGroup,
|
|
10
10
|
toSafeAgentSummary
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-73BR2IQT.js";
|
|
12
12
|
import {
|
|
13
13
|
PUBLIC_AGENT_KEY_PREFIX,
|
|
14
14
|
isOwnedAgentKey,
|
|
@@ -326,7 +326,7 @@ async function saveDocState(arg, { dispatch, getState }) {
|
|
|
326
326
|
).unwrap();
|
|
327
327
|
if (dbSpaceId) {
|
|
328
328
|
try {
|
|
329
|
-
const { updateContentTitle } = await import("./contentThunks-
|
|
329
|
+
const { updateContentTitle } = await import("./contentThunks-THSCADSK.js");
|
|
330
330
|
await dispatch(
|
|
331
331
|
updateContentTitle({
|
|
332
332
|
spaceId: dbSpaceId,
|
|
@@ -365,7 +365,7 @@ async function saveDocState(arg, { dispatch, getState }) {
|
|
|
365
365
|
}
|
|
366
366
|
}
|
|
367
367
|
async function createDocState(args, thunkApi) {
|
|
368
|
-
const { createPageAction } = await import("./createPageAction-
|
|
368
|
+
const { createPageAction } = await import("./createPageAction-4VK473QV.js");
|
|
369
369
|
return createPageAction(args, thunkApi);
|
|
370
370
|
}
|
|
371
371
|
function subscribe(listener) {
|
|
@@ -24,7 +24,9 @@ function spawnProcess(options) {
|
|
|
24
24
|
exited: Promise.resolve(127),
|
|
25
25
|
stdin: null,
|
|
26
26
|
stdout: null,
|
|
27
|
-
stderr: null
|
|
27
|
+
stderr: null,
|
|
28
|
+
kill: () => {
|
|
29
|
+
}
|
|
28
30
|
};
|
|
29
31
|
}
|
|
30
32
|
const exited = new Promise((resolve) => {
|
|
@@ -35,7 +37,13 @@ function spawnProcess(options) {
|
|
|
35
37
|
exited,
|
|
36
38
|
stdin: child.stdin,
|
|
37
39
|
stdout: child.stdout,
|
|
38
|
-
stderr: child.stderr
|
|
40
|
+
stderr: child.stderr,
|
|
41
|
+
kill: () => {
|
|
42
|
+
try {
|
|
43
|
+
child.kill("SIGKILL");
|
|
44
|
+
} catch {
|
|
45
|
+
}
|
|
46
|
+
}
|
|
39
47
|
};
|
|
40
48
|
}
|
|
41
49
|
async function readPipeText(stream) {
|
|
@@ -752,16 +752,16 @@ function compareAgentSelection(left, right) {
|
|
|
752
752
|
}
|
|
753
753
|
var AGENT_SELECTION_PRIORITY_INSTRUCTIONS = ` - \u4F18\u5148\u7EA7\u5951\u7EA6\uFF1A\u4E24\u9636\u6BB5\u53D1\u73B0\u4E0E\u9009\u4EBA\u5951\u7EA6\uFF08listAgents \u9ED8\u8BA4 scope="preferred"\uFF09\uFF1A
|
|
754
754
|
1. \u9996\u8F6E\u53D1\u73B0\uFF1A\u9ED8\u8BA4\u8C03\u7528 listAgents()\uFF08\u5373 scope="preferred"\uFF09\uFF0C\u4EC5\u53D1\u73B0\u7528\u6237\u5DF2\u6709\u5173\u7CFB\u7684 preferred Agent\uFF08\u6536\u85CF\u3001\u81EA\u6709\u3001OAuth \u8BA2\u9605\u3001\u81EA\u5B9A\u4E49 API\u3001\u672C\u5730 Agent\uFF09\u3002
|
|
755
|
-
2. \u6210\u672C\u5F52\u5C5E\u8BC6\u522B\uFF1A\u6839\u636E billingSource \u660E\u786E\u5224\u5B9A\uFF08user_subscription\uFF1A\u7528\u6237\u8BA2\u9605/OAuth\uFF1Buser_api\uFF1A\u7528\u6237\u81EA\u5B9A\u4E49 API\uFF1Blocal\uFF1A\u672C\u5730\u8FD0\u884C\uFF1Bplatform_credits\uFF1A\u5E73\u53F0\u79EF\u5206\uFF09\u3002
|
|
755
|
+
2. \u6210\u672C\u5F52\u5C5E\u8BC6\u522B\uFF1A\u6839\u636E billingSource \u660E\u786E\u5224\u5B9A\uFF08user_subscription\uFF1A\u7528\u6237\u8BA2\u9605/OAuth\uFF1Buser_api\uFF1A\u7528\u6237\u81EA\u5B9A\u4E49 API\uFF1Blocal\uFF1A\u672C\u5730\u8FD0\u884C\uFF1Bowner_subscription\uFF1A\u975E\u81EA\u6709 Agent\uFF0C\u8DD1\u5176 owner \u7684\u8BA2\u9605\u901A\u9053\u2014\u2014\u4F60\u4E0E\u5E73\u53F0\u90FD\u4E0D\u51FA\u94B1\uFF0C\u4E0D\u9002\u7528\u5E73\u53F0\u79EF\u5206\u6263\u8D39\u544A\u77E5/\u6388\u6743\u95E8\uFF0C\u4E5F\u4E0D\u5360\u4F60\u7684\u989D\u5EA6\uFF0C\u53EF\u76F4\u63A5\u4F7F\u7528\uFF1Bplatform_credits\uFF1A\u5E73\u53F0\u79EF\u5206\uFF09\u3002
|
|
756
756
|
3. \u4F18\u5148\u7EA7\u6392\u5E8F\uFF08\u4E0E\u5217\u8868\u6392\u5E8F\u771F\u503C\u4E00\u81F4\uFF09\uFF1A
|
|
757
|
-
(1) \u6536\u85CF\u7684 OAuth / \u81EA\u5B9A\u4E49 Agent\uFF08billingSource="user_subscription" \u6216 "user_api"\uFF0CisFavorite=true\uFF1A\u79C1\u6709\u8BA2\u9605/\u51ED\u636E\u4F18\u5148\uFF09
|
|
757
|
+
(1) \u6536\u85CF\u7684 OAuth / \u81EA\u5B9A\u4E49 Agent\uFF08billingSource="user_subscription"\uFF0F"owner_subscription" \u6216 "user_api"\uFF0CisFavorite=true\uFF1A\u79C1\u6709\u8BA2\u9605/\u51ED\u636E\u4F18\u5148\uFF09
|
|
758
758
|
(2) \u5176\u4ED6\u6536\u85CF Agent\uFF08isFavorite=true\uFF09
|
|
759
|
-
(3) \u672A\u6536\u85CF\u7684 OAuth / \u81EA\u5B9A\u4E49 Agent\uFF08billingSource="user_subscription" \u6216 "user_api"\uFF09
|
|
759
|
+
(3) \u672A\u6536\u85CF\u7684 OAuth / \u81EA\u5B9A\u4E49 Agent\uFF08billingSource="user_subscription"\uFF0F"owner_subscription" \u6216 "user_api"\uFF09
|
|
760
760
|
(4) \u5176\u4ED6\u81EA\u5EFA Agent\uFF08isOwned=true\uFF09
|
|
761
761
|
(5) \u516C\u5F00 / \u5E73\u53F0 Agent\uFF08billingSource="platform_credits" \u6216\u793E\u533A\u516C\u5F00\uFF09
|
|
762
762
|
\u540C\u6863\u4F4D\u4E0B\u6536\u85CF\u9879\u6309\u6700\u8FD1\u6536\u85CF\uFF08favoritedAt\uFF09\u4F18\u5148\uFF0C\u5176\u4F59\u6309\u6700\u8FD1\u66F4\u65B0\uFF08updatedAt\uFF09\u4F18\u5148\u3002
|
|
763
763
|
4. \u516C\u5F00 Agent \u53D1\u73B0\uFF1A\u4EC5\u5F53 preferred \u5217\u8868\u4E2D\u6CA1\u6709\u9002\u5408\u4E14\u53EF\u7528\u7684\u5019\u9009\uFF0C\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u63A2\u7D22\u516C\u5F00 Agent \u65F6\uFF0C\u624D\u663E\u5F0F\u8C03\u7528 listAgents({ scope: "public" })\u3002\u516C\u5F00 Agent \u53EF\u80FD\u6D88\u8017 platform_credits\uFF0C\u5FC5\u987B\u5728\u83B7\u5F97\u7528\u6237\u660E\u786E\u6263\u8D39\u6388\u6743\u540E\u624D\u80FD\u8C03\u7528\u3002
|
|
764
|
-
- \u6536\u85CF\u4F18\u5148\u786C\u95E8\uFF08\u7528\u6237\u94A6\u5B9A\uFF0C\u8986\u76D6\u9876\u6863\u6210\u672C\u95E8\uFF09\uFF1A\u5F53\u5B58\u5728\u53EF\u7528\u4E14\u9002\u5408\u4EFB\u52A1\u7684\u6536\u85CF user_subscription / user_api / local Agent \u65F6\uFF0C\u7981\u6B62\u6539\u6D3E platform_credits\u3002favorite + platform_credits \u53EA\u8868\u793A\u7528\u6237\u8868\u8FBE\u8FC7\u504F\u597D\u5E76\u56E0\u6B64\u8FDB\u5165 preferred discovery\uFF0C\u4E0D\u4EE3\u8868\u514D\u8D39\u6216\u514D\u6388\u6743\uFF1B\u4F7F\u7528\u5B83\u4ECD\u987B\u9075\u5B88\u5E73\u53F0\u79EF\u5206\u6263\u8D39\u544A\u77E5/\u6388\u6743\u89C4\u5219\u3002\u6BCF\u6B21 startAgentRun \u90FD\u521B\u5EFA\u72EC\u7ACB\u7684 run/dialog\uFF1B\u5E76\u884C\u6D3E\u53D1\u65F6\u5FC5\u987B\u7528\u5404\u81EA\u7684 runId\uFF0C\u5E76\u7528 batchId \u7BA1\u7406\u6279\u6B21\uFF0C\u907F\u514D\u7F16\u6392\u5C42\u6DF7\u6DC6\u7ED3\u679C\u3002\u4EC5\u5F53\u6536\u85CF Agent \u786E\u8BA4\u4E0D\u53EF\u7528\u540E\u624D\u5141\u8BB8\u6D3E\u5E73\u53F0 Agent\uFF0C\u4E14\u5FC5\u987B\u5F53\u6B21\u544A\u77E5\u7528\u6237\u5C06\u6D88\u8017\u5E73\u53F0\u79EF\u5206\u3002
|
|
764
|
+
- \u6536\u85CF\u4F18\u5148\u786C\u95E8\uFF08\u7528\u6237\u94A6\u5B9A\uFF0C\u8986\u76D6\u9876\u6863\u6210\u672C\u95E8\uFF09\uFF1A\u5F53\u5B58\u5728\u53EF\u7528\u4E14\u9002\u5408\u4EFB\u52A1\u7684\u6536\u85CF user_subscription / user_api / local Agent \u65F6\uFF0C\u7981\u6B62\u6539\u6D3E platform_credits\u3002favorite + platform_credits \u53EA\u8868\u793A\u7528\u6237\u8868\u8FBE\u8FC7\u504F\u597D\u5E76\u56E0\u6B64\u8FDB\u5165 preferred discovery\uFF0C\u4E0D\u4EE3\u8868\u514D\u8D39\u6216\u514D\u6388\u6743\uFF1B\u4F7F\u7528\u5B83\u4ECD\u987B\u9075\u5B88\u5E73\u53F0\u79EF\u5206\u6263\u8D39\u544A\u77E5/\u6388\u6743\u89C4\u5219\u3002\u4F46\u6CE8\u610F\u533A\u5206\uFF1AbillingSource="owner_subscription" \u7684\u6536\u85CF Agent\uFF08\u975E\u81EA\u6709\u3001\u8DD1 owner \u7684\u8BA2\u9605\u901A\u9053\uFF09\u4E0D\u5C5E\u4E8E\u6B64\u5217\u2014\u2014\u5B83\u662F\u53EF\u76F4\u63A5\u4F7F\u7528\u7684\uFF0C\u4E0D\u4EA7\u751F\u4EFB\u4F55\u6263\u8D39\uFF0C\u4E0D\u8981\u5BF9\u5B83\u7D22\u53D6\u6263\u8D39\u6388\u6743\u3001\u4E5F\u4E0D\u8981\u56E0\u6B64\u6539\u6D3E\u5E73\u53F0 Agent\u3002\u6BCF\u6B21 startAgentRun \u90FD\u521B\u5EFA\u72EC\u7ACB\u7684 run/dialog\uFF1B\u5E76\u884C\u6D3E\u53D1\u65F6\u5FC5\u987B\u7528\u5404\u81EA\u7684 runId\uFF0C\u5E76\u7528 batchId \u7BA1\u7406\u6279\u6B21\uFF0C\u907F\u514D\u7F16\u6392\u5C42\u6DF7\u6DC6\u7ED3\u679C\u3002\u4EC5\u5F53\u6536\u85CF Agent \u786E\u8BA4\u4E0D\u53EF\u7528\u540E\u624D\u5141\u8BB8\u6D3E\u5E73\u53F0 Agent\uFF0C\u4E14\u5FC5\u987B\u5F53\u6B21\u544A\u77E5\u7528\u6237\u5C06\u6D88\u8017\u5E73\u53F0\u79EF\u5206\u3002
|
|
765
765
|
- \u5339\u914D\u53C2\u8003\uFF1A\u6309\u4EFB\u52A1\u6240\u9700\u80FD\u529B\u7B5B tools \u5B57\u6BB5\uFF1B\u540C\u6863\u5019\u9009\u4F18\u5148\u6210\u672C\u4F4E\uFF08\u4F4E inputPrice\uFF09\u6216\u8D70\u7528\u6237\u79C1\u6709\u51ED\u636E\u7684\u901A\u9053\u3002tools \u5B57\u6BB5\u53EA\u53CD\u6620\u989D\u5916\u80FD\u529B\uFF0C\u4E0D\u53CD\u6620 coding \u80FD\u529B\u2014\u2014\u4EE3\u7801\u5DE5\u5177\u7531 host \u81EA\u52A8\u6CE8\u5165\uFF0Ctools=[] \u4E0D\u4EE3\u8868\u4E0D\u80FD\u5199\u4EE3\u7801\uFF0C\u4E0D\u8981\u636E\u6B64\u6392\u9664\u5019\u9009\u3002
|
|
766
766
|
- isOwned=true\u3001isOAuth=true \u6216 apiSource="custom" \u7684\u5019\u9009\u6309\u4F18\u5148\u7EA7\u5951\u7EA6\u5904\u7406\u3002
|
|
767
767
|
- qualityContext \u662F task-domain-specific supporting evidence\uFF1A\u53EA\u5728\u5339\u914D\u7684 task domain \u5185\u3001suitable candidates \u4E2D\uFF0C\u5E76\u4E14\u4ECD\u6392\u5728\u73B0\u6709\u4F18\u5148\u7EA7 / \u6210\u672C / \u53EF\u7528\u6027\u89C4\u5219\u4E4B\u540E\u53C2\u8003\u3002
|
|
@@ -769,7 +769,7 @@ var AGENT_SELECTION_PRIORITY_INSTRUCTIONS = ` - \u4F18\u5148\u7EA7\u5951\u7EA6
|
|
|
769
769
|
direction \u53EA\u662F\u6307\u6807\u65B9\u5411\uFF1Ahigher_better \u8D8A\u9AD8\u8D8A\u597D\uFF0Clower_better \u8D8A\u4F4E\u8D8A\u597D\uFF0Cneutral \u53EA\u63CF\u8FF0\u884C\u4E3A\u7279\u5F81\uFF08\u5982\u8F93\u51FA\u957F\u5EA6\uFF09\uFF0C\u4E0D\u4EE3\u8868\u4F18\u52A3\u3002
|
|
770
770
|
\u7981\u6B62\u628A\u4E0D\u540C dimension \u76F8\u52A0 / \u5E73\u5747 / \u5F52\u4E00\u5316\uFF0C\u6216\u751F\u6210 overall score / winner / rank\uFF1B\u7981\u6B62\u8DE8 benchmark identity \u6BD4\u8F83 raw score\uFF1B\u540C\u4E00 dimension \u5185\u53EA\u6BD4\u8F83\u540C\u4E00\u884C\u7684\u540C\u7C7B benchmark evidence\u3002
|
|
771
771
|
\u672A\u5217\u51FA\u7684 model \u6216 dimension \u8868\u793A\u6CA1\u6709 curated evidence\uFF1A\u4E0D\u662F 0\uFF0C\u4E5F\u4E0D\u662F\u8F83\u5F31\u3002\u54EA\u4E9B dimension \u66F4\u91CD\u8981\u7531\u5F53\u524D\u4EFB\u52A1\u51B3\u5B9A\uFF0C\u4E0D\u8981\u5199\u6B7B\u6743\u91CD\u3002
|
|
772
|
-
- 429 \u9650\u6D41\u4E0E\u77E5\u60C5\u6743\u5951\u7EA6\uFF1A\u4EFB\u4F55\u7528\u6237\u79C1\u6709\u51ED\u636E\u4E0E\u81EA\u5EFA Agent\uFF08billingSource \u4E3A user_subscription / user_api / local\uFF0C\u6216 isOwned=true\uFF09\u51FA\u73B0\u5728 listAgents \u7684 unavailableAgents\uFF08429 \u51B7\u5374\u671F\uFF09\u4E2D\u65F6\uFF0C\u7981\u6B62\u9759\u9ED8\u8DF3\u8FC7\uFF1B\u6539\u6D3E\u5E73\u53F0 Agent\uFF08\u6D88\u8017\u5E73\u53F0\u79EF\u5206\uFF09\u524D\u5FC5\u987B\u5728\u56DE\u590D\u4E2D\u544A\u77E5\u7528\u6237\uFF1A\u54EA\u4E2A\u8BA2\u9605/\u81EA\u5EFA agent \u9650\u6D41\u3001\u9884\u8BA1\u4F55\u65F6\u6062\u590D\uFF08nextAvailableAt\uFF09\u3001\u672C\u6B21\u5C06\u6263\u5E73\u53F0\u79EF\u5206\uFF1B\u4EFB\u52A1\u4E0D\u7D27\u6025\u5EFA\u8BAE\u7B49\u6062\u590D\u6216\u8BE2\u95EE\u7528\u6237\u3002`;
|
|
772
|
+
- 429 \u9650\u6D41\u4E0E\u77E5\u60C5\u6743\u5951\u7EA6\uFF1A\u4EFB\u4F55\u7528\u6237\u79C1\u6709\u51ED\u636E\u4E0E\u81EA\u5EFA Agent\uFF08billingSource \u4E3A user_subscription / owner_subscription / user_api / local\uFF0C\u6216 isOwned=true\uFF09\u51FA\u73B0\u5728 listAgents \u7684 unavailableAgents\uFF08429 \u51B7\u5374\u671F\uFF09\u4E2D\u65F6\uFF0C\u7981\u6B62\u9759\u9ED8\u8DF3\u8FC7\uFF1B\u6539\u6D3E\u5E73\u53F0 Agent\uFF08\u6D88\u8017\u5E73\u53F0\u79EF\u5206\uFF09\u524D\u5FC5\u987B\u5728\u56DE\u590D\u4E2D\u544A\u77E5\u7528\u6237\uFF1A\u54EA\u4E2A\u8BA2\u9605/\u81EA\u5EFA agent \u9650\u6D41\u3001\u9884\u8BA1\u4F55\u65F6\u6062\u590D\uFF08nextAvailableAt\uFF09\u3001\u672C\u6B21\u5C06\u6263\u5E73\u53F0\u79EF\u5206\uFF1B\u4EFB\u52A1\u4E0D\u7D27\u6025\u5EFA\u8BAE\u7B49\u6062\u590D\u6216\u8BE2\u95EE\u7528\u6237\u3002`;
|
|
773
773
|
|
|
774
774
|
// packages/agent-runtime/noloWorkspaceTools.ts
|
|
775
775
|
var NOLO_WORKSPACE_TOOL_NAMES = [
|
|
@@ -17,8 +17,8 @@ import {
|
|
|
17
17
|
compileCodingEffectiveTools,
|
|
18
18
|
resolveCodingBuiltinSlug,
|
|
19
19
|
resolveCodingEffectiveTools
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-NB5SIWC4.js";
|
|
21
|
+
import "./chunk-GCJ3IS5M.js";
|
|
22
22
|
import "./chunk-AETZ7AD6.js";
|
|
23
23
|
import "./chunk-KHCLMKZZ.js";
|
|
24
24
|
import "./chunk-O6OSWFZQ.js";
|
|
@@ -7,25 +7,25 @@ import {
|
|
|
7
7
|
updateContentPinned,
|
|
8
8
|
updateContentTitle,
|
|
9
9
|
uploadAndAddFileToSpace
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-EBKMQULC.js";
|
|
11
11
|
import "./chunk-ZJ7UHBJS.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-IDGYOD2O.js";
|
|
13
13
|
import "./chunk-EVBFYPDC.js";
|
|
14
14
|
import "./chunk-HQUORJTM.js";
|
|
15
15
|
import "./chunk-YYLHWIW6.js";
|
|
16
16
|
import "./chunk-AGGIDPCZ.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-DM4FBSWG.js";
|
|
18
18
|
import "./chunk-BJCWNHVU.js";
|
|
19
19
|
import "./chunk-5RGU3J7P.js";
|
|
20
20
|
import "./chunk-6YTOJY35.js";
|
|
21
21
|
import "./chunk-M76ECQRD.js";
|
|
22
22
|
import "./chunk-YDH3FDFQ.js";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-7QVPPOEC.js";
|
|
24
24
|
import "./chunk-E36HZARC.js";
|
|
25
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-PZCTYKGU.js";
|
|
26
26
|
import "./chunk-PSCNXBYA.js";
|
|
27
27
|
import "./chunk-BYXBJQAS.js";
|
|
28
|
-
import "./chunk-
|
|
28
|
+
import "./chunk-MXUSPS2N.js";
|
|
29
29
|
import "./chunk-DWLEOOGR.js";
|
|
30
30
|
import "./chunk-3JQ2NRYU.js";
|
|
31
31
|
import "./chunk-ONXOABJR.js";
|