@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.
Files changed (44) hide show
  1. package/README.md +46 -0
  2. package/agent-loader.js +1 -1
  3. package/agent-loader.js.map +2 -2
  4. package/main.js +315 -22
  5. package/main.js.map +2 -2
  6. package/package.json +1 -1
  7. package/resources/browser-tools/browser-click.js +74 -0
  8. package/resources/browser-tools/browser-client.js +236 -0
  9. package/resources/browser-tools/browser-close.js +19 -0
  10. package/resources/browser-tools/browser-console.js +73 -0
  11. package/resources/browser-tools/browser-content.js +36 -75
  12. package/resources/browser-tools/browser-cookies.js +19 -14
  13. package/resources/browser-tools/browser-daemon.js +452 -0
  14. package/resources/browser-tools/browser-devtools.js +62 -0
  15. package/resources/browser-tools/browser-eval.js +16 -22
  16. package/resources/browser-tools/browser-fill.js +70 -0
  17. package/resources/browser-tools/browser-info.js +13 -0
  18. package/resources/browser-tools/browser-nav.js +21 -22
  19. package/resources/browser-tools/browser-network.js +91 -0
  20. package/resources/browser-tools/browser-run-script.js +12 -30
  21. package/resources/browser-tools/browser-screenshot.js +22 -22
  22. package/resources/browser-tools/browser-select.js +59 -0
  23. package/resources/browser-tools/browser-snapshot.js +100 -0
  24. package/resources/browser-tools/browser-start.js +101 -85
  25. package/resources/browser-tools/browser-tabs.js +38 -0
  26. package/resources/browser-tools/browser-wait.js +50 -0
  27. package/resources/pi-agent/skills/docyrus-chrome-devtools-cli/SKILL.md +157 -46
  28. package/server-loader.js +17 -229
  29. package/server-loader.js.map +4 -4
  30. package/resources/browser-tools/browser-connect.js +0 -172
  31. package/resources/browser-tools/browser-pick.js +0 -143
  32. package/resources/pi-agent/extensions/docyrus-web-browser.ts +0 -31
  33. package/resources/pi-agent/shared/docyrusWebBrowserProtocol.ts +0 -169
  34. package/resources/pi-agent/skills/agent-browser/SKILL.md +0 -779
  35. package/resources/pi-agent/skills/agent-browser/references/authentication.md +0 -303
  36. package/resources/pi-agent/skills/agent-browser/references/commands.md +0 -295
  37. package/resources/pi-agent/skills/agent-browser/references/profiling.md +0 -120
  38. package/resources/pi-agent/skills/agent-browser/references/proxy-support.md +0 -194
  39. package/resources/pi-agent/skills/agent-browser/references/session-management.md +0 -193
  40. package/resources/pi-agent/skills/agent-browser/references/snapshot-refs.md +0 -219
  41. package/resources/pi-agent/skills/agent-browser/references/video-recording.md +0 -173
  42. package/resources/pi-agent/skills/agent-browser/templates/authenticated-session.sh +0 -105
  43. package/resources/pi-agent/skills/agent-browser/templates/capture-workflow.sh +0 -69
  44. 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 isRecord3(value2) {
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) => isRecord3(value2)).map((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) => isRecord3(value2)).map((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) => isRecord3(value2)).map((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) => isRecord3(value2)).map((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) => isRecord3(value2)).map((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) => isRecord3(value2)).map((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 (!isRecord3(rawValue)) {
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(["docyrus-web-browser", "server-auto-commit"]);
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, onDocyrusWebBrowserTool } = params;
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>", "<docyrus_web_browser>"];
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) && !maybeEmitDocyrusWebBrowserTool(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, includeDocyrusWebBrowser } = params;
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 pendingDocyrusWebBrowser = pendingDocyrusWebBrowserRequests.get(sessionId);
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" : docyrusWebBrowserResponse ? "No matching pending docyrus-web-browser request found" : "No user message 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 && !docyrusWebBrowserResponse) {
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;