@docyrus/docyrus 0.0.59 → 0.0.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -0
- package/agent-loader.js +1 -1
- package/agent-loader.js.map +2 -2
- package/main.js +315 -22
- package/main.js.map +2 -2
- package/package.json +1 -1
- package/resources/browser-tools/browser-click.js +74 -0
- package/resources/browser-tools/browser-client.js +236 -0
- package/resources/browser-tools/browser-close.js +19 -0
- package/resources/browser-tools/browser-console.js +73 -0
- package/resources/browser-tools/browser-content.js +36 -75
- package/resources/browser-tools/browser-cookies.js +19 -14
- package/resources/browser-tools/browser-daemon.js +452 -0
- package/resources/browser-tools/browser-devtools.js +62 -0
- package/resources/browser-tools/browser-eval.js +16 -22
- package/resources/browser-tools/browser-fill.js +70 -0
- package/resources/browser-tools/browser-info.js +13 -0
- package/resources/browser-tools/browser-nav.js +21 -22
- package/resources/browser-tools/browser-network.js +91 -0
- package/resources/browser-tools/browser-run-script.js +12 -30
- package/resources/browser-tools/browser-screenshot.js +22 -22
- package/resources/browser-tools/browser-select.js +59 -0
- package/resources/browser-tools/browser-snapshot.js +100 -0
- package/resources/browser-tools/browser-start.js +101 -85
- package/resources/browser-tools/browser-tabs.js +38 -0
- package/resources/browser-tools/browser-wait.js +50 -0
- package/resources/pi-agent/skills/docyrus-chrome-devtools-cli/SKILL.md +157 -46
- package/server-loader.js +17 -229
- package/server-loader.js.map +4 -4
- package/resources/browser-tools/browser-connect.js +0 -172
- package/resources/browser-tools/browser-pick.js +0 -143
- package/resources/pi-agent/extensions/docyrus-web-browser.ts +0 -31
- package/resources/pi-agent/shared/docyrusWebBrowserProtocol.ts +0 -169
- package/resources/pi-agent/skills/agent-browser/SKILL.md +0 -779
- package/resources/pi-agent/skills/agent-browser/references/authentication.md +0 -303
- package/resources/pi-agent/skills/agent-browser/references/commands.md +0 -295
- package/resources/pi-agent/skills/agent-browser/references/profiling.md +0 -120
- package/resources/pi-agent/skills/agent-browser/references/proxy-support.md +0 -194
- package/resources/pi-agent/skills/agent-browser/references/session-management.md +0 -193
- package/resources/pi-agent/skills/agent-browser/references/snapshot-refs.md +0 -219
- package/resources/pi-agent/skills/agent-browser/references/video-recording.md +0 -173
- package/resources/pi-agent/skills/agent-browser/templates/authenticated-session.sh +0 -105
- package/resources/pi-agent/skills/agent-browser/templates/capture-workflow.sh +0 -69
- package/resources/pi-agent/skills/agent-browser/templates/form-automation.sh +0 -62
package/server-loader.js
CHANGED
|
@@ -13610,7 +13610,7 @@ __export(graph_exports2, {
|
|
|
13610
13610
|
upsertProjectPlanTask: () => upsertProjectPlanTask,
|
|
13611
13611
|
validateProjectPlanGraph: () => validateProjectPlanGraph
|
|
13612
13612
|
});
|
|
13613
|
-
function
|
|
13613
|
+
function isRecord2(value2) {
|
|
13614
13614
|
return typeof value2 === "object" && value2 !== null && !Array.isArray(value2);
|
|
13615
13615
|
}
|
|
13616
13616
|
function isNonEmptyString2(value2) {
|
|
@@ -13721,14 +13721,14 @@ function migrateV1ToV2(v1) {
|
|
|
13721
13721
|
return { version: 2, projectVersion: "0.1.0", phases, features, tasks };
|
|
13722
13722
|
}
|
|
13723
13723
|
function parseV1Graph(rawValue) {
|
|
13724
|
-
const sections = Array.isArray(rawValue.sections) ? rawValue.sections.filter((value2) =>
|
|
13724
|
+
const sections = Array.isArray(rawValue.sections) ? rawValue.sections.filter((value2) => isRecord2(value2)).map((value2) => ({
|
|
13725
13725
|
id: isNonEmptyString2(value2.id) ? value2.id.trim() : "",
|
|
13726
13726
|
title: isNonEmptyString2(value2.title) ? value2.title.trim() : "",
|
|
13727
13727
|
slug: isNonEmptyString2(value2.slug) ? value2.slug.trim() : "",
|
|
13728
13728
|
summary: typeof value2.summary === "string" ? value2.summary.trim() : "",
|
|
13729
13729
|
...typeof value2.order === "number" ? { order: value2.order } : {}
|
|
13730
13730
|
})).filter((value2) => value2.id.length > 0) : [];
|
|
13731
|
-
const features = Array.isArray(rawValue.features) ? rawValue.features.filter((value2) =>
|
|
13731
|
+
const features = Array.isArray(rawValue.features) ? rawValue.features.filter((value2) => isRecord2(value2)).map((value2) => ({
|
|
13732
13732
|
id: isNonEmptyString2(value2.id) ? value2.id.trim() : "",
|
|
13733
13733
|
title: isNonEmptyString2(value2.title) ? value2.title.trim() : "",
|
|
13734
13734
|
slug: isNonEmptyString2(value2.slug) ? value2.slug.trim() : "",
|
|
@@ -13736,7 +13736,7 @@ function parseV1Graph(rawValue) {
|
|
|
13736
13736
|
sectionId: isNonEmptyString2(value2.sectionId) ? value2.sectionId.trim() : "",
|
|
13737
13737
|
...typeof value2.order === "number" ? { order: value2.order } : {}
|
|
13738
13738
|
})).filter((value2) => value2.id.length > 0) : [];
|
|
13739
|
-
const tasks = Array.isArray(rawValue.tasks) ? rawValue.tasks.filter((value2) =>
|
|
13739
|
+
const tasks = Array.isArray(rawValue.tasks) ? rawValue.tasks.filter((value2) => isRecord2(value2)).map((value2) => ({
|
|
13740
13740
|
id: isNonEmptyString2(value2.id) ? value2.id.trim() : "",
|
|
13741
13741
|
title: isNonEmptyString2(value2.title) ? value2.title.trim() : "",
|
|
13742
13742
|
summary: typeof value2.summary === "string" ? value2.summary.trim() : "",
|
|
@@ -13752,7 +13752,7 @@ function parseV1Graph(rawValue) {
|
|
|
13752
13752
|
}
|
|
13753
13753
|
function parseV2Graph(rawValue) {
|
|
13754
13754
|
const projectVersion = isNonEmptyString2(rawValue.projectVersion) ? rawValue.projectVersion.trim() : "0.1.0";
|
|
13755
|
-
const phases = Array.isArray(rawValue.phases) ? rawValue.phases.filter((value2) =>
|
|
13755
|
+
const phases = Array.isArray(rawValue.phases) ? rawValue.phases.filter((value2) => isRecord2(value2)).map((value2) => ({
|
|
13756
13756
|
id: isNonEmptyString2(value2.id) ? value2.id.trim() : "",
|
|
13757
13757
|
title: isNonEmptyString2(value2.title) ? value2.title.trim() : "",
|
|
13758
13758
|
slug: isNonEmptyString2(value2.slug) ? value2.slug.trim() : "",
|
|
@@ -13760,7 +13760,7 @@ function parseV2Graph(rawValue) {
|
|
|
13760
13760
|
...isNonEmptyString2(value2.projectVersion) ? { projectVersion: value2.projectVersion.trim() } : {},
|
|
13761
13761
|
...typeof value2.order === "number" ? { order: value2.order } : {}
|
|
13762
13762
|
})).filter((value2) => value2.id.length > 0) : [];
|
|
13763
|
-
const features = Array.isArray(rawValue.features) ? rawValue.features.filter((value2) =>
|
|
13763
|
+
const features = Array.isArray(rawValue.features) ? rawValue.features.filter((value2) => isRecord2(value2)).map((value2) => ({
|
|
13764
13764
|
id: isNonEmptyString2(value2.id) ? value2.id.trim() : "",
|
|
13765
13765
|
title: isNonEmptyString2(value2.title) ? value2.title.trim() : "",
|
|
13766
13766
|
slug: isNonEmptyString2(value2.slug) ? value2.slug.trim() : "",
|
|
@@ -13770,7 +13770,7 @@ function parseV2Graph(rawValue) {
|
|
|
13770
13770
|
...isNonEmptyString2(value2.projectVersion) ? { projectVersion: value2.projectVersion.trim() } : {},
|
|
13771
13771
|
...typeof value2.order === "number" ? { order: value2.order } : {}
|
|
13772
13772
|
})).filter((value2) => value2.id.length > 0) : [];
|
|
13773
|
-
const tasks = Array.isArray(rawValue.tasks) ? rawValue.tasks.filter((value2) =>
|
|
13773
|
+
const tasks = Array.isArray(rawValue.tasks) ? rawValue.tasks.filter((value2) => isRecord2(value2)).map((value2) => ({
|
|
13774
13774
|
id: isNonEmptyString2(value2.id) ? value2.id.trim() : "",
|
|
13775
13775
|
title: isNonEmptyString2(value2.title) ? value2.title.trim() : "",
|
|
13776
13776
|
summary: typeof value2.summary === "string" ? value2.summary.trim() : "",
|
|
@@ -13785,7 +13785,7 @@ function parseV2Graph(rawValue) {
|
|
|
13785
13785
|
return sortGraph({ version: 2, projectVersion, phases, features, tasks });
|
|
13786
13786
|
}
|
|
13787
13787
|
function parseProjectPlanGraph(rawValue) {
|
|
13788
|
-
if (!
|
|
13788
|
+
if (!isRecord2(rawValue)) {
|
|
13789
13789
|
return createEmptyProjectPlanGraph();
|
|
13790
13790
|
}
|
|
13791
13791
|
if (rawValue.version === 2) {
|
|
@@ -18724,7 +18724,7 @@ var AgentEnvStore = class {
|
|
|
18724
18724
|
// src/agent/packagedExtensions.ts
|
|
18725
18725
|
var import_node_fs = require("node:fs");
|
|
18726
18726
|
var import_node_path2 = require("node:path");
|
|
18727
|
-
var SERVER_ONLY_PACKAGED_EXTENSION_NAMES = /* @__PURE__ */ new Set(["
|
|
18727
|
+
var SERVER_ONLY_PACKAGED_EXTENSION_NAMES = /* @__PURE__ */ new Set(["server-auto-commit"]);
|
|
18728
18728
|
function isPackagedExtensionEntry(entryName, isDirectory) {
|
|
18729
18729
|
return isDirectory || entryName.endsWith(".ts") || entryName.endsWith(".js");
|
|
18730
18730
|
}
|
|
@@ -35486,122 +35486,9 @@ function parseAskUserResponseFromToolOutput(output) {
|
|
|
35486
35486
|
return normalizeAskUserResponse(output);
|
|
35487
35487
|
}
|
|
35488
35488
|
|
|
35489
|
-
// resources/pi-agent/shared/docyrusWebBrowserProtocol.ts
|
|
35490
|
-
var DOCYRUS_WEB_BROWSER_TAG = "docyrus_web_browser";
|
|
35491
|
-
var DOCYRUS_WEB_BROWSER_OPEN = `<${DOCYRUS_WEB_BROWSER_TAG}>`;
|
|
35492
|
-
var DOCYRUS_WEB_BROWSER_CLOSE = `</${DOCYRUS_WEB_BROWSER_TAG}>`;
|
|
35493
|
-
var DOCYRUS_WEB_BROWSER_RESULT_TAG = "docyrus_web_browser_result";
|
|
35494
|
-
var DOCYRUS_WEB_BROWSER_RESULT_OPEN = `<${DOCYRUS_WEB_BROWSER_RESULT_TAG}>`;
|
|
35495
|
-
var DOCYRUS_WEB_BROWSER_RESULT_CLOSE = `</${DOCYRUS_WEB_BROWSER_RESULT_TAG}>`;
|
|
35496
|
-
var WEB_PREVIEW_CONTEXT_TOOL = "web_preview_context";
|
|
35497
|
-
var WEB_PREVIEW_PLAYWRIGHT_TOOL = "web_preview_playwright";
|
|
35498
|
-
var DOCYRUS_WEB_BROWSER_TOOL_NAMES = [
|
|
35499
|
-
WEB_PREVIEW_CONTEXT_TOOL,
|
|
35500
|
-
WEB_PREVIEW_PLAYWRIGHT_TOOL
|
|
35501
|
-
];
|
|
35502
|
-
var DOCYRUS_WEB_BROWSER_CLIENT_TOOLS = [
|
|
35503
|
-
{
|
|
35504
|
-
name: WEB_PREVIEW_CONTEXT_TOOL,
|
|
35505
|
-
description: "Inspect the current Docyrus web preview state before automation. Prefer this first when preview availability or bridge state is unknown.",
|
|
35506
|
-
inputSchema: {
|
|
35507
|
-
type: "object",
|
|
35508
|
-
properties: {
|
|
35509
|
-
includeSnapshot: { type: "boolean" }
|
|
35510
|
-
},
|
|
35511
|
-
additionalProperties: false
|
|
35512
|
-
}
|
|
35513
|
-
},
|
|
35514
|
-
{
|
|
35515
|
-
name: WEB_PREVIEW_PLAYWRIGHT_TOOL,
|
|
35516
|
-
description: "Run Playwright-style actions against the Docyrus web preview. Prefer structured steps over raw scripts.",
|
|
35517
|
-
inputSchema: {
|
|
35518
|
-
type: "object",
|
|
35519
|
-
properties: {
|
|
35520
|
-
script: { type: "string" },
|
|
35521
|
-
steps: {
|
|
35522
|
-
type: "array",
|
|
35523
|
-
items: {
|
|
35524
|
-
type: "object",
|
|
35525
|
-
properties: {
|
|
35526
|
-
action: { type: "string" },
|
|
35527
|
-
selector: { type: "string" },
|
|
35528
|
-
url: { type: "string" },
|
|
35529
|
-
value: { type: "string" },
|
|
35530
|
-
values: {
|
|
35531
|
-
type: "array",
|
|
35532
|
-
items: { type: "string" }
|
|
35533
|
-
},
|
|
35534
|
-
key: { type: "string" },
|
|
35535
|
-
attribute: { type: "string" },
|
|
35536
|
-
timeoutMs: { type: "number" },
|
|
35537
|
-
state: { type: "string" }
|
|
35538
|
-
},
|
|
35539
|
-
additionalProperties: true
|
|
35540
|
-
}
|
|
35541
|
-
},
|
|
35542
|
-
timeoutMs: { type: "number" },
|
|
35543
|
-
stopOnError: { type: "boolean" }
|
|
35544
|
-
},
|
|
35545
|
-
additionalProperties: true
|
|
35546
|
-
}
|
|
35547
|
-
}
|
|
35548
|
-
];
|
|
35549
|
-
function hashString2(value2) {
|
|
35550
|
-
let hash2 = 0;
|
|
35551
|
-
for (let index2 = 0; index2 < value2.length; index2 += 1) {
|
|
35552
|
-
hash2 = (hash2 << 5) - hash2 + value2.charCodeAt(index2);
|
|
35553
|
-
hash2 |= 0;
|
|
35554
|
-
}
|
|
35555
|
-
return Math.abs(hash2).toString(36);
|
|
35556
|
-
}
|
|
35557
|
-
function isRecord2(value2) {
|
|
35558
|
-
return typeof value2 === "object" && value2 !== null && !Array.isArray(value2);
|
|
35559
|
-
}
|
|
35560
|
-
function isDocyrusWebBrowserToolName(value2) {
|
|
35561
|
-
return DOCYRUS_WEB_BROWSER_TOOL_NAMES.some((toolName) => toolName === value2);
|
|
35562
|
-
}
|
|
35563
|
-
function normalizeDocyrusWebBrowserToolRequest(value2) {
|
|
35564
|
-
if (!isRecord2(value2) || !isDocyrusWebBrowserToolName(value2.tool)) {
|
|
35565
|
-
return void 0;
|
|
35566
|
-
}
|
|
35567
|
-
return {
|
|
35568
|
-
tool: value2.tool,
|
|
35569
|
-
input: isRecord2(value2.input) ? value2.input : void 0
|
|
35570
|
-
};
|
|
35571
|
-
}
|
|
35572
|
-
function createDocyrusWebBrowserToolCallId(request) {
|
|
35573
|
-
return `docyrus_web_browser_${hashString2(JSON.stringify(request))}`;
|
|
35574
|
-
}
|
|
35575
|
-
function parseDocyrusWebBrowserRequestFromText(text3) {
|
|
35576
|
-
const trimmed = text3.trim();
|
|
35577
|
-
if (!trimmed.startsWith(DOCYRUS_WEB_BROWSER_OPEN) || !trimmed.endsWith(DOCYRUS_WEB_BROWSER_CLOSE)) {
|
|
35578
|
-
return void 0;
|
|
35579
|
-
}
|
|
35580
|
-
const body2 = trimmed.slice(DOCYRUS_WEB_BROWSER_OPEN.length, trimmed.length - DOCYRUS_WEB_BROWSER_CLOSE.length).trim();
|
|
35581
|
-
if (!body2) {
|
|
35582
|
-
return void 0;
|
|
35583
|
-
}
|
|
35584
|
-
try {
|
|
35585
|
-
return normalizeDocyrusWebBrowserToolRequest(JSON.parse(body2));
|
|
35586
|
-
} catch {
|
|
35587
|
-
return void 0;
|
|
35588
|
-
}
|
|
35589
|
-
}
|
|
35590
|
-
function formatDocyrusWebBrowserToolResponsePrompt(response) {
|
|
35591
|
-
return [
|
|
35592
|
-
"The docyrus-web-browser client tool returned a result.",
|
|
35593
|
-
"",
|
|
35594
|
-
`${DOCYRUS_WEB_BROWSER_RESULT_OPEN}`,
|
|
35595
|
-
JSON.stringify(response, null, 2),
|
|
35596
|
-
`${DOCYRUS_WEB_BROWSER_RESULT_CLOSE}`,
|
|
35597
|
-
"",
|
|
35598
|
-
"Continue the task using this result. If the tool reported an availability or bridge blocker, explain that blocker exactly and do not claim success."
|
|
35599
|
-
].join("\n");
|
|
35600
|
-
}
|
|
35601
|
-
|
|
35602
35489
|
// src/server/eventBridge.ts
|
|
35603
35490
|
function createEventBridge(params) {
|
|
35604
|
-
const { messageId, onChunk, onDone, onError, onAskUser
|
|
35491
|
+
const { messageId, onChunk, onDone, onError, onAskUser } = params;
|
|
35605
35492
|
const activeToolCalls = /* @__PURE__ */ new Map();
|
|
35606
35493
|
let activeTextBuffer = null;
|
|
35607
35494
|
function flushBufferedTextToStream(close2) {
|
|
@@ -35637,25 +35524,8 @@ function createEventBridge(params) {
|
|
|
35637
35524
|
});
|
|
35638
35525
|
return true;
|
|
35639
35526
|
}
|
|
35640
|
-
function maybeEmitDocyrusWebBrowserTool(text3) {
|
|
35641
|
-
const request = parseDocyrusWebBrowserRequestFromText(text3);
|
|
35642
|
-
if (!request) {
|
|
35643
|
-
return false;
|
|
35644
|
-
}
|
|
35645
|
-
const toolCallId = createDocyrusWebBrowserToolCallId(request);
|
|
35646
|
-
onDocyrusWebBrowserTool?.({ toolCallId, request });
|
|
35647
|
-
onChunk({ type: "tool-input-start", toolCallId, toolName: request.tool, dynamic: true });
|
|
35648
|
-
onChunk({
|
|
35649
|
-
type: "tool-input-available",
|
|
35650
|
-
toolCallId,
|
|
35651
|
-
toolName: request.tool,
|
|
35652
|
-
input: request.input ?? {},
|
|
35653
|
-
dynamic: true
|
|
35654
|
-
});
|
|
35655
|
-
return true;
|
|
35656
|
-
}
|
|
35657
35527
|
function shouldKeepBufferingDynamicToolText(text3) {
|
|
35658
|
-
const dynamicToolTags = ["<ask_user>"
|
|
35528
|
+
const dynamicToolTags = ["<ask_user>"];
|
|
35659
35529
|
return dynamicToolTags.some((tag) => tag.startsWith(text3) || text3.startsWith(tag));
|
|
35660
35530
|
}
|
|
35661
35531
|
function handleEvent(event) {
|
|
@@ -35712,7 +35582,7 @@ function createEventBridge(params) {
|
|
|
35712
35582
|
activeTextBuffer = null;
|
|
35713
35583
|
break;
|
|
35714
35584
|
}
|
|
35715
|
-
if (!maybeEmitAskUser(activeTextBuffer.text)
|
|
35585
|
+
if (!maybeEmitAskUser(activeTextBuffer.text)) {
|
|
35716
35586
|
flushBufferedTextToStream(true);
|
|
35717
35587
|
} else {
|
|
35718
35588
|
activeTextBuffer = null;
|
|
@@ -44061,7 +43931,7 @@ var BUILT_IN_TOOLS = {
|
|
|
44061
43931
|
]
|
|
44062
43932
|
};
|
|
44063
43933
|
async function listAllTools(params) {
|
|
44064
|
-
const { profile, agentDir, cwd
|
|
43934
|
+
const { profile, agentDir, cwd } = params;
|
|
44065
43935
|
const tools = [];
|
|
44066
43936
|
const builtIn = BUILT_IN_TOOLS[profile] ?? BUILT_IN_TOOLS.coder;
|
|
44067
43937
|
for (const tool of builtIn) {
|
|
@@ -44071,16 +43941,6 @@ async function listAllTools(params) {
|
|
|
44071
43941
|
source: "built-in"
|
|
44072
43942
|
});
|
|
44073
43943
|
}
|
|
44074
|
-
if (includeDocyrusWebBrowser) {
|
|
44075
|
-
for (const tool of DOCYRUS_WEB_BROWSER_CLIENT_TOOLS) {
|
|
44076
|
-
tools.push({
|
|
44077
|
-
name: tool.name,
|
|
44078
|
-
description: tool.description,
|
|
44079
|
-
source: "built-in",
|
|
44080
|
-
inputSchema: tool.inputSchema
|
|
44081
|
-
});
|
|
44082
|
-
}
|
|
44083
|
-
}
|
|
44084
43944
|
let config2;
|
|
44085
43945
|
let cache;
|
|
44086
43946
|
try {
|
|
@@ -44201,45 +44061,6 @@ function extractAskUserToolResponse(messages) {
|
|
|
44201
44061
|
}
|
|
44202
44062
|
return void 0;
|
|
44203
44063
|
}
|
|
44204
|
-
function extractDocyrusWebBrowserToolResponse(messages) {
|
|
44205
|
-
const message = getLastAssistantMessage(messages);
|
|
44206
|
-
if (!message) {
|
|
44207
|
-
return void 0;
|
|
44208
|
-
}
|
|
44209
|
-
for (let partIndex = message.parts.length - 1; partIndex >= 0; partIndex -= 1) {
|
|
44210
|
-
const part = message.parts[partIndex];
|
|
44211
|
-
if (part.type === "dynamic-tool" && isDocyrusWebBrowserToolName(part.toolName) && typeof part.toolCallId === "string" && (part.state === "output-available" || part.state === "output-error")) {
|
|
44212
|
-
const errorText = typeof part.errorText === "string" ? part.errorText : typeof part.output === "string" && part.state === "output-error" ? part.output : void 0;
|
|
44213
|
-
return {
|
|
44214
|
-
toolCallId: part.toolCallId,
|
|
44215
|
-
toolName: part.toolName,
|
|
44216
|
-
output: part.state === "output-available" ? part.output : void 0,
|
|
44217
|
-
errorText,
|
|
44218
|
-
isError: part.state === "output-error"
|
|
44219
|
-
};
|
|
44220
|
-
}
|
|
44221
|
-
}
|
|
44222
|
-
return void 0;
|
|
44223
|
-
}
|
|
44224
|
-
function extractDocyrusWebBrowserToolRequest(messages, toolCallId) {
|
|
44225
|
-
const message = getLastAssistantMessage(messages);
|
|
44226
|
-
if (!message) {
|
|
44227
|
-
return void 0;
|
|
44228
|
-
}
|
|
44229
|
-
for (let partIndex = message.parts.length - 1; partIndex >= 0; partIndex -= 1) {
|
|
44230
|
-
const part = message.parts[partIndex];
|
|
44231
|
-
if (part.type === "dynamic-tool" && isDocyrusWebBrowserToolName(part.toolName) && part.toolCallId === toolCallId) {
|
|
44232
|
-
const request = normalizeDocyrusWebBrowserToolRequest({
|
|
44233
|
-
tool: part.toolName,
|
|
44234
|
-
input: part.input
|
|
44235
|
-
});
|
|
44236
|
-
if (request) {
|
|
44237
|
-
return request;
|
|
44238
|
-
}
|
|
44239
|
-
}
|
|
44240
|
-
}
|
|
44241
|
-
return void 0;
|
|
44242
|
-
}
|
|
44243
44064
|
function normalizeSlashCommands(commands) {
|
|
44244
44065
|
const seen = /* @__PURE__ */ new Set();
|
|
44245
44066
|
return commands.filter((command) => typeof command.name === "string" && command.name.trim().length > 0).sort((left, right) => left.name.localeCompare(right.name)).filter((command) => {
|
|
@@ -44473,17 +44294,6 @@ function convertSessionEntriesToUIMessages(entries) {
|
|
|
44473
44294
|
});
|
|
44474
44295
|
continue;
|
|
44475
44296
|
}
|
|
44476
|
-
const docyrusWebBrowserRequest = parseDocyrusWebBrowserRequestFromText(block.text);
|
|
44477
|
-
if (docyrusWebBrowserRequest) {
|
|
44478
|
-
parts2.push({
|
|
44479
|
-
type: "dynamic-tool",
|
|
44480
|
-
toolCallId: createDocyrusWebBrowserToolCallId(docyrusWebBrowserRequest),
|
|
44481
|
-
toolName: docyrusWebBrowserRequest.tool,
|
|
44482
|
-
state: "input-available",
|
|
44483
|
-
input: docyrusWebBrowserRequest.input ?? {}
|
|
44484
|
-
});
|
|
44485
|
-
continue;
|
|
44486
|
-
}
|
|
44487
44297
|
parts2.push({ type: "text", text: block.text });
|
|
44488
44298
|
} else if (block.type === "thinking" && typeof block.thinking === "string") {
|
|
44489
44299
|
parts2.push({ type: "reasoning", text: block.thinking, state: "complete" });
|
|
@@ -44618,7 +44428,6 @@ async function createAgentServer(params) {
|
|
|
44618
44428
|
let activeSession = params.session;
|
|
44619
44429
|
let sessionMode = "normal";
|
|
44620
44430
|
const pendingAskUserRequests = /* @__PURE__ */ new Map();
|
|
44621
|
-
const pendingDocyrusWebBrowserRequests = /* @__PURE__ */ new Map();
|
|
44622
44431
|
const oauthFlowManager = new OAuthFlowManager();
|
|
44623
44432
|
const app = new Hono2();
|
|
44624
44433
|
const settingsRootPath = resolveServerSettingsRootPath(context.agentDir);
|
|
@@ -44679,33 +44488,18 @@ async function createAgentServer(params) {
|
|
|
44679
44488
|
}
|
|
44680
44489
|
const sessionId = body2.sessionId?.trim() || activeSession.id?.trim() || "active";
|
|
44681
44490
|
const askUserResponse = extractAskUserToolResponse(messages);
|
|
44682
|
-
const docyrusWebBrowserResponse = extractDocyrusWebBrowserToolResponse(messages);
|
|
44683
44491
|
const pendingAskUser = pendingAskUserRequests.get(sessionId);
|
|
44684
|
-
const
|
|
44685
|
-
const pendingDocyrusWebBrowserRequest = docyrusWebBrowserResponse ? pendingDocyrusWebBrowser?.get(docyrusWebBrowserResponse.toolCallId) ?? extractDocyrusWebBrowserToolRequest(messages, docyrusWebBrowserResponse.toolCallId) : void 0;
|
|
44686
|
-
const userMessage = askUserResponse ? pendingAskUser && pendingAskUser.toolCallId === askUserResponse.toolCallId ? formatAskUserResponsePrompt(askUserResponse.response) : void 0 : docyrusWebBrowserResponse ? pendingDocyrusWebBrowserRequest ? formatDocyrusWebBrowserToolResponsePrompt({
|
|
44687
|
-
tool: docyrusWebBrowserResponse.toolName,
|
|
44688
|
-
request: pendingDocyrusWebBrowserRequest.input,
|
|
44689
|
-
status: docyrusWebBrowserResponse.isError ? "error" : "success",
|
|
44690
|
-
output: docyrusWebBrowserResponse.output,
|
|
44691
|
-
errorText: docyrusWebBrowserResponse.errorText
|
|
44692
|
-
}) : void 0 : extractLastUserText(messages);
|
|
44492
|
+
const userMessage = askUserResponse ? pendingAskUser && pendingAskUser.toolCallId === askUserResponse.toolCallId ? formatAskUserResponsePrompt(askUserResponse.response) : void 0 : extractLastUserText(messages);
|
|
44693
44493
|
if (!userMessage) {
|
|
44694
44494
|
return c.json({
|
|
44695
|
-
error: askUserResponse ? "No matching pending ask_user request found" :
|
|
44495
|
+
error: askUserResponse ? "No matching pending ask_user request found" : "No user message found"
|
|
44696
44496
|
}, 400);
|
|
44697
44497
|
}
|
|
44698
44498
|
if (askUserResponse) {
|
|
44699
44499
|
pendingAskUserRequests.delete(sessionId);
|
|
44700
44500
|
}
|
|
44701
|
-
if (docyrusWebBrowserResponse && pendingDocyrusWebBrowser) {
|
|
44702
|
-
pendingDocyrusWebBrowser.delete(docyrusWebBrowserResponse.toolCallId);
|
|
44703
|
-
if (pendingDocyrusWebBrowser.size === 0) {
|
|
44704
|
-
pendingDocyrusWebBrowserRequests.delete(sessionId);
|
|
44705
|
-
}
|
|
44706
|
-
}
|
|
44707
44501
|
let promptText = userMessage;
|
|
44708
|
-
if (!askUserResponse
|
|
44502
|
+
if (!askUserResponse) {
|
|
44709
44503
|
const modeCmd = parseModeSlashCommand(userMessage);
|
|
44710
44504
|
if (modeCmd) {
|
|
44711
44505
|
if (activeSession.isStreaming) {
|
|
@@ -44753,11 +44547,6 @@ async function createAgentServer(params) {
|
|
|
44753
44547
|
onAskUser: ({ toolCallId, request }) => {
|
|
44754
44548
|
pendingAskUserRequests.set(sessionId, { toolCallId, request });
|
|
44755
44549
|
},
|
|
44756
|
-
onDocyrusWebBrowserTool: ({ toolCallId, request }) => {
|
|
44757
|
-
const pendingForSession = pendingDocyrusWebBrowserRequests.get(sessionId) ?? /* @__PURE__ */ new Map();
|
|
44758
|
-
pendingForSession.set(toolCallId, request);
|
|
44759
|
-
pendingDocyrusWebBrowserRequests.set(sessionId, pendingForSession);
|
|
44760
|
-
},
|
|
44761
44550
|
onDone: () => {
|
|
44762
44551
|
writeChunk({ type: "finish-step" });
|
|
44763
44552
|
writeChunk({ type: "finish" });
|
|
@@ -46280,8 +46069,7 @@ async function createAgentServer(params) {
|
|
|
46280
46069
|
const tools = await listAllTools({
|
|
46281
46070
|
profile: context.profile,
|
|
46282
46071
|
agentDir: context.agentDir,
|
|
46283
|
-
cwd: context.cwd
|
|
46284
|
-
includeDocyrusWebBrowser: true
|
|
46072
|
+
cwd: context.cwd
|
|
46285
46073
|
});
|
|
46286
46074
|
const builtInCount = tools.filter((t) => t.source === "built-in").length;
|
|
46287
46075
|
const mcpCount = tools.filter((t) => t.source !== "built-in").length;
|