local-cli-agent 5.0.12 → 5.0.16

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 (46) hide show
  1. package/README.md +42 -1
  2. package/dist/agents/browser/browser-profile-manager.d.ts +4 -1
  3. package/dist/agents/browser/browser-profile-manager.d.ts.map +1 -1
  4. package/dist/agents/browser/browser-profile-manager.js +10 -6
  5. package/dist/agents/browser/browser-profile-manager.js.map +1 -1
  6. package/dist/agents/browser/browser-sub-agent.d.ts +1 -0
  7. package/dist/agents/browser/browser-sub-agent.d.ts.map +1 -1
  8. package/dist/agents/browser/browser-sub-agent.js +4 -4
  9. package/dist/agents/browser/browser-sub-agent.js.map +1 -1
  10. package/dist/agents/browser/prompts.d.ts +1 -1
  11. package/dist/agents/browser/prompts.d.ts.map +1 -1
  12. package/dist/agents/browser/prompts.js +145 -56
  13. package/dist/agents/browser/prompts.js.map +1 -1
  14. package/dist/agents/browser/search-agent.d.ts.map +1 -1
  15. package/dist/agents/browser/search-agent.js +7 -4
  16. package/dist/agents/browser/search-agent.js.map +1 -1
  17. package/dist/agents/planner/index.d.ts.map +1 -1
  18. package/dist/agents/planner/index.js +2 -1
  19. package/dist/agents/planner/index.js.map +1 -1
  20. package/dist/constants.d.ts +1 -1
  21. package/dist/constants.js +1 -1
  22. package/dist/core/llm/providers.js +7 -7
  23. package/dist/core/llm/providers.js.map +1 -1
  24. package/dist/orchestration/plan-executor.d.ts.map +1 -1
  25. package/dist/orchestration/plan-executor.js +7 -2
  26. package/dist/orchestration/plan-executor.js.map +1 -1
  27. package/dist/prompts/agents/planning.d.ts +1 -1
  28. package/dist/prompts/agents/planning.d.ts.map +1 -1
  29. package/dist/prompts/agents/planning.js +7 -3
  30. package/dist/prompts/agents/planning.js.map +1 -1
  31. package/dist/prompts/system/plan-execute.d.ts +1 -1
  32. package/dist/prompts/system/plan-execute.d.ts.map +1 -1
  33. package/dist/prompts/system/plan-execute.js +6 -3
  34. package/dist/prompts/system/plan-execute.js.map +1 -1
  35. package/dist/tools/browser/browser-client.d.ts +1 -0
  36. package/dist/tools/browser/browser-client.d.ts.map +1 -1
  37. package/dist/tools/browser/browser-client.js +46 -0
  38. package/dist/tools/browser/browser-client.js.map +1 -1
  39. package/dist/tools/office/word-tools/section-builders.d.ts.map +1 -1
  40. package/dist/tools/office/word-tools/section-builders.js +38 -36
  41. package/dist/tools/office/word-tools/section-builders.js.map +1 -1
  42. package/dist/utils/platform-utils.d.ts +1 -0
  43. package/dist/utils/platform-utils.d.ts.map +1 -1
  44. package/dist/utils/platform-utils.js +40 -0
  45. package/dist/utils/platform-utils.js.map +1 -1
  46. package/package.json +2 -1
package/README.md CHANGED
@@ -9,9 +9,50 @@
9
9
 
10
10
  > Use your own LLM (vLLM, Ollama, LM Studio, Azure OpenAI, or any OpenAI-compatible API) as a full coding agent - no cloud dependency, no API key costs.
11
11
 
12
+ ### Quick Demo — Tool Usage
13
+
14
+ [![Quick Demo](https://img.youtube.com/vi/4pfKEyp2RQE/maxresdefault.jpg)](https://www.youtube.com/watch?v=4pfKEyp2RQE)
15
+
16
+ > **Quick Demo**: Watch Local CLI use tools to automate real tasks.
17
+
12
18
  https://github.com/user-attachments/assets/77cc96c9-cb22-4411-8744-3a006b00c580
13
19
 
14
- > **Demo**: The video above shows Local CLI autonomously editing code with Plan & Execute.
20
+ > **Plan & Execute Demo**: Local CLI autonomously editing code with Plan & Execute.
21
+
22
+ ### Office Automation Demos
23
+
24
+ Create professional Word, Excel, and PowerPoint documents with AI:
25
+
26
+ <table>
27
+ <tr>
28
+ <td align="center">
29
+ <a href="https://www.youtube.com/watch?v=ZOZ9Gg3FWZ8">
30
+ <img src="https://img.youtube.com/vi/ZOZ9Gg3FWZ8/maxresdefault.jpg" width="400" alt="Word Creation Demo"/>
31
+ <br/><b>Word Document Creation</b>
32
+ </a>
33
+ </td>
34
+ <td align="center">
35
+ <a href="https://www.youtube.com/watch?v=00RhfMNDn6c">
36
+ <img src="https://img.youtube.com/vi/00RhfMNDn6c/maxresdefault.jpg" width="400" alt="Excel Creation Demo"/>
37
+ <br/><b>Excel Spreadsheet Creation</b>
38
+ </a>
39
+ </td>
40
+ </tr>
41
+ <tr>
42
+ <td align="center">
43
+ <a href="https://www.youtube.com/watch?v=xgy6aRGm7fU">
44
+ <img src="https://img.youtube.com/vi/xgy6aRGm7fU/maxresdefault.jpg" width="400" alt="PowerPoint Creation Demo"/>
45
+ <br/><b>PowerPoint Presentation Creation</b>
46
+ </a>
47
+ </td>
48
+ <td align="center">
49
+ <a href="https://www.youtube.com/watch?v=VmvmUn1_TdU">
50
+ <img src="https://img.youtube.com/vi/VmvmUn1_TdU/maxresdefault.jpg" width="400" alt="Windows Auto Update Demo"/>
51
+ <br/><b>Windows Auto Update</b>
52
+ </a>
53
+ </td>
54
+ </tr>
55
+ </table>
15
56
 
16
57
  ---
17
58
 
@@ -7,7 +7,10 @@ export declare const ATLASSIAN_LOGIN_INDICATORS: LoginIndicators;
7
7
  export declare function getProfileDir(): string;
8
8
  export declare function getSubAgentCdpPort(): number;
9
9
  export declare function getSubAgentBrowserClient(): BrowserClient;
10
- export declare function launchSubAgentBrowser(headless?: boolean): Promise<boolean>;
10
+ export declare function launchSubAgentBrowser(headless?: boolean): Promise<{
11
+ success: boolean;
12
+ error?: string;
13
+ }>;
11
14
  export declare function closeSubAgentBrowser(): Promise<void>;
12
15
  export declare function ensureAuthenticated(baseUrl: string, indicators: LoginIndicators): Promise<{
13
16
  success: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"browser-profile-manager.d.ts","sourceRoot":"","sources":["../../../src/agents/browser/browser-profile-manager.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAOtE,MAAM,WAAW,eAAe;IAE9B,WAAW,EAAE,MAAM,EAAE,CAAC;IAEtB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,eAAO,MAAM,0BAA0B,EAAE,eAGxC,CAAC;AAKF,wBAAgB,aAAa,IAAI,MAAM,CAwCtC;AAKD,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAQD,wBAAgB,wBAAwB,IAAI,aAAa,CAKxD;AAKD,wBAAsB,qBAAqB,CAAC,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CActF;AAKD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK1D;AAUD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,eAAe,GAC1B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiF/C"}
1
+ {"version":3,"file":"browser-profile-manager.d.ts","sourceRoot":"","sources":["../../../src/agents/browser/browser-profile-manager.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAOtE,MAAM,WAAW,eAAe;IAE9B,WAAW,EAAE,MAAM,EAAE,CAAC;IAEtB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,eAAO,MAAM,0BAA0B,EAAE,eAGxC,CAAC;AAKF,wBAAgB,aAAa,IAAI,MAAM,CAwCtC;AAKD,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAQD,wBAAgB,wBAAwB,IAAI,aAAa,CAKxD;AAMD,wBAAsB,qBAAqB,CAAC,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmBnH;AAKD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK1D;AAUD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,eAAe,GAC1B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiF/C"}
@@ -63,14 +63,18 @@ export function getSubAgentBrowserClient() {
63
63
  export async function launchSubAgentBrowser(headless = true) {
64
64
  const client = getSubAgentBrowserClient();
65
65
  if (await client.isRunning()) {
66
- return true;
66
+ return { success: true };
67
67
  }
68
68
  const result = await client.launch({
69
69
  headless,
70
70
  userDataDir: getProfileDir(),
71
71
  cdpPort: SUB_AGENT_CDP_PORT,
72
72
  });
73
- return result.success;
73
+ if (!result.success) {
74
+ const errorMsg = result.details || result.error || 'Unknown browser launch error';
75
+ return { success: false, error: errorMsg };
76
+ }
77
+ return { success: true };
74
78
  }
75
79
  export async function closeSubAgentBrowser() {
76
80
  const client = getSubAgentBrowserClient();
@@ -82,8 +86,8 @@ export async function ensureAuthenticated(baseUrl, indicators) {
82
86
  const client = getSubAgentBrowserClient();
83
87
  if (!(await client.isRunning())) {
84
88
  const launched = await launchSubAgentBrowser(true);
85
- if (!launched) {
86
- return { success: false, error: 'Failed to launch browser' };
89
+ if (!launched.success) {
90
+ return { success: false, error: launched.error || 'Failed to launch browser' };
87
91
  }
88
92
  }
89
93
  const navResult = await client.navigate(baseUrl);
@@ -124,8 +128,8 @@ export async function ensureAuthenticated(baseUrl, indicators) {
124
128
  await client.close();
125
129
  await new Promise(resolve => setTimeout(resolve, 1000));
126
130
  const headlessLaunched = await launchSubAgentBrowser(true);
127
- if (!headlessLaunched) {
128
- return { success: false, error: 'Failed to relaunch headless after login' };
131
+ if (!headlessLaunched.success) {
132
+ return { success: false, error: headlessLaunched.error || 'Failed to relaunch headless after login' };
129
133
  }
130
134
  return { success: true };
131
135
  }
@@ -1 +1 @@
1
- {"version":3,"file":"browser-profile-manager.js","sourceRoot":"","sources":["../../../src/agents/browser/browser-profile-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-profile-manager.js","sourceRoot":"","sources":["../../../src/agents/browser/browser-profile-manager.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAC3C,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAShC,MAAM,CAAC,MAAM,0BAA0B,GAAoB;IACzD,WAAW,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,CAAC;IAC3D,aAAa,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC;CACnD,CAAC;AAKF,MAAM,UAAU,aAAa;IAC3B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QAGvB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,gKAAgK,CAAC;YAClL,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE;gBACrE,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAChD,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5C,OAAO,UAAU,CAAC;YACpB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAgC,CAAC;QAE1C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3F,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAClD,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,GAAG,YAAY,6BAA6B,CAAC;YACtD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAoB,CAAC;QAC9B,OAAO,+DAA+D,CAAC;IACzE,CAAC;IACD,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,cAAc,EAAE,gBAAgB,CAAC,CAAC;QACvF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAKD,MAAM,UAAU,kBAAkB;IAChC,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAGD,IAAI,cAAc,GAAyB,IAAI,CAAC;AAKhD,MAAM,UAAU,wBAAwB;IACtC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,IAAI,aAAa,EAAE,CAAC;IACvC,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,WAAoB,IAAI;IAClE,MAAM,MAAM,GAAG,wBAAwB,EAAE,CAAC;IAE1C,IAAI,MAAM,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;QAC7B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;QACjC,QAAQ;QACR,WAAW,EAAE,aAAa,EAAE;QAC5B,OAAO,EAAE,kBAAkB;KAC5B,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,IAAI,8BAA8B,CAAC;QAClF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC7C,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAKD,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,MAAM,GAAG,wBAAwB,EAAE,CAAC;IAC1C,IAAI,MAAM,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;QAC7B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAUD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAe,EACf,UAA2B;IAE3B,MAAM,MAAM,GAAG,wBAAwB,EAAE,CAAC;IAG1C,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,0BAA0B,EAAE,CAAC;QACjF,CAAC;IACH,CAAC;IAGD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;IAC5E,CAAC;IAGD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAGxD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAI,QAA6B,CAAC,GAAG,IAAI,EAAE,CAAC;IAC5D,MAAM,YAAY,GAAI,QAA+B,CAAC,KAAK,IAAI,EAAE,CAAC;IAElE,MAAM,WAAW,GAAG,aAAa,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;IAExE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAGD,MAAM,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;IACpF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAExD,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;QAC1C,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,aAAa,EAAE;QAC5B,OAAO,EAAE,kBAAkB;KAC5B,CAAC,CAAC;IAEH,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC;IACjF,CAAC;IAGD,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAG/B,MAAM,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IAClF,MAAM,YAAY,GAAG,OAAO,CAAC;IAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE9B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,YAAY,EAAE,CAAC;QAC9C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAExD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,GAAG,GAAI,IAAyB,CAAC,GAAG,IAAI,EAAE,CAAC;QACjD,MAAM,KAAK,GAAI,IAA2B,CAAC,KAAK,IAAI,EAAE,CAAC;QAEvD,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;YAGrF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAExD,MAAM,gBAAgB,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC3D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBAC9B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,IAAI,yCAAyC,EAAE,CAAC;YACxG,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAGD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;AAC9E,CAAC;AAKD,SAAS,aAAa,CAAC,GAAW,EAAE,KAAa,EAAE,UAA2B;IAC5E,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAEvC,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;IAC5D,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;QAC/C,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;IAC9D,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -5,6 +5,7 @@ export interface BrowserSubAgentConfig {
5
5
  requiresAuth: boolean;
6
6
  serviceType: 'confluence' | 'jira' | 'search';
7
7
  loginIndicators?: LoginIndicators;
8
+ maxIterations?: number;
8
9
  }
9
10
  export declare class BrowserSubAgent {
10
11
  private llmClient;
@@ -1 +1 @@
1
- {"version":3,"file":"browser-sub-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/browser/browser-sub-agent.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIjE,OAAO,EAKL,eAAe,EAChB,MAAM,8BAA8B,CAAC;AAGtC,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC9C,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,qBAAa,eAAe;IAExB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;gBAJN,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,aAAa,EAAE,EACtB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,qBAAqB;IAGjC,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA0EvE,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,0BAA0B;IAiBlC,OAAO,CAAC,iBAAiB;YAaX,qBAAqB;CAyEpC"}
1
+ {"version":3,"file":"browser-sub-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/browser/browser-sub-agent.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIjE,OAAO,EAKL,eAAe,EAChB,MAAM,8BAA8B,CAAC;AAGtC,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC9C,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,eAAe;IAExB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;gBAJN,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,aAAa,EAAE,EACtB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,qBAAqB;IAGjC,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA0EvE,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,0BAA0B;IAiBlC,OAAO,CAAC,iBAAiB;YAaX,qBAAqB;CAyEpC"}
@@ -25,11 +25,11 @@ export class BrowserSubAgent {
25
25
  error: this.getUrlNotConfiguredMessage(),
26
26
  };
27
27
  }
28
- const launched = await launchSubAgentBrowser(true);
29
- if (!launched) {
28
+ const launchResult = await launchSubAgentBrowser(true);
29
+ if (!launchResult.success) {
30
30
  return {
31
31
  success: false,
32
- error: 'Failed to launch browser. Chrome or Edge must be installed.',
32
+ error: launchResult.error || 'Failed to launch browser. Chrome or Edge must be installed.',
33
33
  };
34
34
  }
35
35
  if (this.config.requiresAuth && url) {
@@ -47,7 +47,7 @@ export class BrowserSubAgent {
47
47
  : instruction;
48
48
  const client = getSubAgentBrowserClient();
49
49
  const boundTools = this.bindToolsToClient(client);
50
- const agent = new SubAgent(this.llmClient, this.serviceName, boundTools, this.systemPrompt, { maxIterations: 25 });
50
+ const agent = new SubAgent(this.llmClient, this.serviceName, boundTools, this.systemPrompt, { maxIterations: this.config.maxIterations ?? 25 });
51
51
  const result = await agent.run(enrichedInstruction);
52
52
  const duration = Date.now() - startTime;
53
53
  logger.info(`BrowserSubAgent[${this.serviceName}] completed`, {
@@ -1 +1 @@
1
- {"version":3,"file":"browser-sub-agent.js","sourceRoot":"","sources":["../../../src/agents/browser/browser-sub-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-sub-agent.js","sourceRoot":"","sources":["../../../src/agents/browser/browser-sub-agent.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  export declare const CONFLUENCE_SYSTEM_PROMPT = "You are an elite browser automation agent.\nExecute the user's instruction using the available browser tools.\nWhen the task is complete, you MUST call the \"complete\" tool with a detailed summary.\nCall only one tool at a time. After each tool result, decide the next step.\nAlways respond in the same language as the user's instruction.\n\n\u2550\u2550\u2550 TOOL USAGE \u2550\u2550\u2550\n\u2022 browser_navigate: Navigate to a URL\n\u2022 browser_click: Click an element by CSS selector\n\u2022 browser_fill: Fill a value into an input field\n\u2022 browser_type: Type text character by character\n\u2022 browser_get_text: Get text from page/element (omit selector for full page)\n\u2022 browser_get_html: Get the page HTML\n\u2022 browser_get_page_info: Get current URL, title, and basic info\n\u2022 browser_screenshot: Take a screenshot (for debugging)\n\u2022 browser_execute_script: Execute JavaScript (DOM manipulation, data extraction)\n\u2022 browser_wait: Wait until a CSS selector appears\n\u2022 browser_press_key: Press a keyboard key (Enter, Tab, Escape, etc.)\n\u2022 browser_focus: Focus the browser window\n\u2022 browser_send: Send a raw CDP command\n\n\u2550\u2550\u2550 NAVIGATION STRATEGY \u2550\u2550\u2550\n1. If [Target URL] is provided, use that URL as the starting point\n2. After page load, always check current state with browser_get_page_info\n3. For dynamic pages, use browser_wait to wait for element loading before proceeding\n4. In SPAs (Single Page Apps), DOM may change without URL change \u2192 verify with browser_get_text/get_html\n\n\u2550\u2550\u2550 SELECTOR STRATEGY \u2550\u2550\u2550\nCSS selector priority:\n1. [data-testid=\"...\"], [data-test=\"...\"] \u2014 Test attributes (most stable)\n2. #id \u2014 ID selectors\n3. [aria-label=\"...\"], [role=\"...\"] \u2014 Accessibility attributes\n4. .className \u2014 Classes (may change with frameworks)\n5. Tag combinations \u2014 div > span:nth-child(2) (last resort)\nIf page structure is unknown, check with browser_get_html first.\n\n\u2550\u2550\u2550 ERROR RECOVERY \u2550\u2550\u2550\n1. Click/input fails \u2192 use browser_wait for element, then retry\n2. Selector not found \u2192 use browser_get_html to inspect actual DOM, then fix selector\n3. Page not loaded \u2192 check URL with browser_get_page_info \u2192 re-navigate if needed\n4. Try at least 2 different approaches before reporting failure\n\n\u2550\u2550\u2550 CONFLUENCE EXPERT \u2550\u2550\u2550\nYou are a Confluence automation specialist.\n\n\u2550\u2550\u2550 COMMON CONFLUENCE URLS \u2550\u2550\u2550\n\u2022 Main page: {baseUrl}/wiki/spaces/{spaceKey}/overview\n\u2022 View page: {baseUrl}/wiki/spaces/{spaceKey}/pages/{pageId}\n\u2022 Create page: {baseUrl}/wiki/spaces/{spaceKey}/pages/create\n\u2022 Search: {baseUrl}/wiki/search?text={query}\n\u2022 Space list: {baseUrl}/wiki/spaces\n\n\u2550\u2550\u2550 PAGE VIEWING \u2550\u2550\u2550\nSTEP 1: browser_navigate \u2192 target page URL\nSTEP 2: browser_wait \u2192 \"#content\" or \".wiki-content\" (wait for page content to load)\nSTEP 3: browser_get_text \u2192 \"#content\" or \"#main-content\" (extract body text)\nSTEP 4: complete \u2192 return organized content\n\n\u2550\u2550\u2550 PAGE EDITING \u2550\u2550\u2550\nSTEP 1: browser_navigate \u2192 page URL\nSTEP 2: Click edit button: browser_click \u2192 \"#editPageLink\" or \"button[aria-label='Edit']\" or \"a[href*='editpage']\"\n \u26A0 Confluence Cloud: \".css-1vdy7v\" or \"[data-testid='edit-button']\"\n \u26A0 Confluence Server: \"#editPageLink\"\nSTEP 3: Wait for editor: browser_wait \u2192 \".ProseMirror\" or \"#tinymce\" or \"#wysiwygTextarea\"\nSTEP 4: Modify content:\n \u2022 Confluence Cloud (ProseMirror editor):\n - browser_click \u2192 \".ProseMirror\" (focus editor)\n - browser_execute_script \u2192 document.querySelector('.ProseMirror').innerHTML to check current content\n - browser_type or browser_execute_script to modify content\n \u2022 Confluence Server (TinyMCE):\n - browser_execute_script \u2192 tinymce.activeEditor.getContent() to check current content\n - browser_execute_script \u2192 tinymce.activeEditor.setContent(html) to set content\nSTEP 5: Save:\n \u2022 browser_click \u2192 \"#rte-button-publish\" or \"[data-testid='publish-button']\" or \"button:has-text('Publish')\"\n \u2022 or browser_press_key \u2192 \"Control+s\" (shortcut)\nSTEP 6: Verify save, then complete\n\n\u2550\u2550\u2550 PAGE CREATION \u2550\u2550\u2550\nSTEP 1: browser_navigate \u2192 {baseUrl}/wiki/spaces/{spaceKey}/pages/create\n or \"+\" button: browser_click \u2192 \"[data-testid='create-button']\"\nSTEP 2: Wait for editor: browser_wait \u2192 \".ProseMirror\" or \"#tinymce\"\nSTEP 3: Enter title: browser_fill \u2192 \"[data-testid='title-text-area']\" or \"#content-title\"\nSTEP 4: Write body (same as EDITING STEP 4)\nSTEP 5: Save (same as EDITING STEP 5)\n\n\u2550\u2550\u2550 SEARCH \u2550\u2550\u2550\nbrowser_navigate \u2192 {baseUrl}/wiki/search?text={encodedQuery}\nbrowser_wait \u2192 \".search-results\" or \"[data-testid='search-results']\"\nbrowser_get_text \u2192 search results area\n\n\u2550\u2550\u2550 COMMENT \u2550\u2550\u2550\nPage bottom comment area:\nbrowser_click \u2192 \"#comments-section-title\" or \"button:has-text('Add comment')\"\nbrowser_wait \u2192 wait for comment editor to load\nbrowser_type \u2192 comment content\nbrowser_click \u2192 save button\n\n\u2550\u2550\u2550 IMPORTANT \u2550\u2550\u2550\n\u2022 Confluence Cloud vs Server have different DOM structures \u2192 check with browser_get_html first\n\u2022 Editor content may be inside an iframe \u2192 use browser_execute_script to access iframe content\n\u2022 After saving, always verify the page displays correctly \u2192 check URL with browser_get_page_info";
2
2
  export declare const JIRA_SYSTEM_PROMPT = "You are an elite browser automation agent.\nExecute the user's instruction using the available browser tools.\nWhen the task is complete, you MUST call the \"complete\" tool with a detailed summary.\nCall only one tool at a time. After each tool result, decide the next step.\nAlways respond in the same language as the user's instruction.\n\n\u2550\u2550\u2550 TOOL USAGE \u2550\u2550\u2550\n\u2022 browser_navigate: Navigate to a URL\n\u2022 browser_click: Click an element by CSS selector\n\u2022 browser_fill: Fill a value into an input field\n\u2022 browser_type: Type text character by character\n\u2022 browser_get_text: Get text from page/element (omit selector for full page)\n\u2022 browser_get_html: Get the page HTML\n\u2022 browser_get_page_info: Get current URL, title, and basic info\n\u2022 browser_screenshot: Take a screenshot (for debugging)\n\u2022 browser_execute_script: Execute JavaScript (DOM manipulation, data extraction)\n\u2022 browser_wait: Wait until a CSS selector appears\n\u2022 browser_press_key: Press a keyboard key (Enter, Tab, Escape, etc.)\n\u2022 browser_focus: Focus the browser window\n\u2022 browser_send: Send a raw CDP command\n\n\u2550\u2550\u2550 NAVIGATION STRATEGY \u2550\u2550\u2550\n1. If [Target URL] is provided, use that URL as the starting point\n2. After page load, always check current state with browser_get_page_info\n3. For dynamic pages, use browser_wait to wait for element loading before proceeding\n4. In SPAs (Single Page Apps), DOM may change without URL change \u2192 verify with browser_get_text/get_html\n\n\u2550\u2550\u2550 SELECTOR STRATEGY \u2550\u2550\u2550\nCSS selector priority:\n1. [data-testid=\"...\"], [data-test=\"...\"] \u2014 Test attributes (most stable)\n2. #id \u2014 ID selectors\n3. [aria-label=\"...\"], [role=\"...\"] \u2014 Accessibility attributes\n4. .className \u2014 Classes (may change with frameworks)\n5. Tag combinations \u2014 div > span:nth-child(2) (last resort)\nIf page structure is unknown, check with browser_get_html first.\n\n\u2550\u2550\u2550 ERROR RECOVERY \u2550\u2550\u2550\n1. Click/input fails \u2192 use browser_wait for element, then retry\n2. Selector not found \u2192 use browser_get_html to inspect actual DOM, then fix selector\n3. Page not loaded \u2192 check URL with browser_get_page_info \u2192 re-navigate if needed\n4. Try at least 2 different approaches before reporting failure\n\n\u2550\u2550\u2550 JIRA EXPERT \u2550\u2550\u2550\nYou are a Jira automation specialist.\n\n\u2550\u2550\u2550 COMMON JIRA URLS \u2550\u2550\u2550\n\u2022 Issue detail: {baseUrl}/browse/{issueKey} (e.g., PROJ-1234)\n\u2022 Board: {baseUrl}/jira/software/projects/{projectKey}/board\n\u2022 Backlog: {baseUrl}/jira/software/projects/{projectKey}/backlog\n\u2022 JQL search: {baseUrl}/issues/?jql={encodedJQL}\n\u2022 Create issue: {baseUrl}/secure/CreateIssue!default.jspa\n\u2022 Dashboard: {baseUrl}/jira/dashboards\n\n\u2550\u2550\u2550 ISSUE VIEWING \u2550\u2550\u2550\nSTEP 1: browser_navigate \u2192 {baseUrl}/browse/{issueKey}\nSTEP 2: browser_wait \u2192 \"#summary-val\" or \"[data-testid='issue.views.issue-base.foundation.summary.heading']\"\nSTEP 3: Collect information:\n \u2022 Title: browser_get_text \u2192 \"#summary-val\" or \"h1[data-testid*='summary']\"\n \u2022 Status: browser_get_text \u2192 \"#status-val\" or \"[data-testid='issue.views.issue-base.foundation.status.status-field-wrapper']\"\n \u2022 Assignee: browser_get_text \u2192 \"#assignee-val\" or \"[data-testid*='assignee']\"\n \u2022 Description: browser_get_text \u2192 \"#description-val\" or \"[data-testid*='description']\"\n \u2022 Comments: browser_get_text \u2192 \"#activitymodule\" or \".issue-body-content\"\nSTEP 4: complete \u2192 return organized information\n\n\u2550\u2550\u2550 JQL SEARCH \u2550\u2550\u2550\nSTEP 1: browser_navigate \u2192 {baseUrl}/issues/?jql={encodedJQL}\n \u2022 e.g.: status=\"In Progress\" AND assignee=currentUser()\n \u2022 e.g.: project=PROJ AND type=Bug AND status!=Done\nSTEP 2: browser_wait \u2192 \".issue-list\" or \"[data-testid='issue-navigator']\"\nSTEP 3: browser_get_text \u2192 search results area\n or browser_execute_script to extract structured table data\nSTEP 4: complete \u2192 organize results\n\n\u2550\u2550\u2550 ISSUE CREATION \u2550\u2550\u2550\nSTEP 1: browser_navigate \u2192 {baseUrl}/secure/CreateIssue!default.jspa\n or browser_click \u2192 \"[data-testid='global-create-button']\" or \"#create-menu\"\nSTEP 2: browser_wait \u2192 \"#create-issue-dialog\" or \"[data-testid='create-issue-dialog']\"\nSTEP 3: Fill fields:\n \u2022 Project: browser_fill or browser_click \u2192 project selector\n \u2022 Issue type: browser_fill \u2192 \"#issuetype-field\" or dropdown\n \u2022 Summary: browser_fill \u2192 \"#summary\" or \"[data-testid*='summary']\"\n \u2022 Description: browser_fill/type \u2192 \"#description\" or editor area\n \u2022 Assignee: browser_fill \u2192 \"#assignee-field\"\n \u2022 Priority: browser_fill \u2192 \"#priority-field\"\nSTEP 4: browser_click \u2192 \"#create-issue-submit\" or \"button:has-text('Create')\"\nSTEP 5: Verify creation \u2192 complete\n\n\u2550\u2550\u2550 ISSUE EDITING \u2550\u2550\u2550\nInline editing on issue detail page:\n\u2022 Edit summary: click title \u2192 editor activates \u2192 edit \u2192 Enter/check button\n\u2022 Edit description: click description area \u2192 editor \u2192 edit \u2192 save\n\u2022 Change status: click status button \u2192 select transition\n\u2022 Change assignee: click assignee field \u2192 search \u2192 select\n\n\u2550\u2550\u2550 COMMENT \u2550\u2550\u2550\nSTEP 1: browser_navigate \u2192 {baseUrl}/browse/{issueKey}\nSTEP 2: Scroll to comment area: browser_click \u2192 \"#footer-comment-button\" or \"button:has-text('Add a comment')\"\nSTEP 3: browser_wait \u2192 wait for comment editor to load\nSTEP 4: browser_type \u2192 comment content\nSTEP 5: browser_click \u2192 save button\nSTEP 6: Verify save \u2192 complete\n\n\u2550\u2550\u2550 STATUS TRANSITION \u2550\u2550\u2550\nSTEP 1: Click status button on issue detail page\n browser_click \u2192 \"#action_id_*\" or \"[data-testid*='status']\" or \".aui-lozenge\"\nSTEP 2: If transition dialog appears, fill required fields\nSTEP 3: browser_click \u2192 confirm/transition button\n\n\u2550\u2550\u2550 IMPORTANT \u2550\u2550\u2550\n\u2022 Jira Cloud vs Server/Data Center have different DOM structures \u2192 check with browser_get_html first\n\u2022 Next-gen (Team-managed) vs Classic (Company-managed) projects have different UIs\n\u2022 Inline editing: Escape to cancel, Enter/checkmark to save\n\u2022 Special characters in JQL need URL encoding";
3
- export declare const SEARCH_SYSTEM_PROMPT = "You are an elite browser automation agent.\nExecute the user's instruction using the available browser tools.\nWhen the task is complete, you MUST call the \"complete\" tool with a detailed summary.\nCall only one tool at a time. After each tool result, decide the next step.\nAlways respond in the same language as the user's instruction.\n\n\u2550\u2550\u2550 TOOL USAGE \u2550\u2550\u2550\n\u2022 browser_navigate: Navigate to a URL\n\u2022 browser_click: Click an element by CSS selector\n\u2022 browser_fill: Fill a value into an input field\n\u2022 browser_type: Type text character by character\n\u2022 browser_get_text: Get text from page/element (omit selector for full page)\n\u2022 browser_get_html: Get the page HTML\n\u2022 browser_get_page_info: Get current URL, title, and basic info\n\u2022 browser_screenshot: Take a screenshot (for debugging)\n\u2022 browser_execute_script: Execute JavaScript (DOM manipulation, data extraction)\n\u2022 browser_wait: Wait until a CSS selector appears\n\u2022 browser_press_key: Press a keyboard key (Enter, Tab, Escape, etc.)\n\u2022 browser_focus: Focus the browser window\n\u2022 browser_send: Send a raw CDP command\n\n\u2550\u2550\u2550 NAVIGATION STRATEGY \u2550\u2550\u2550\n1. If [Target URL] is provided, use that URL as the starting point\n2. After page load, always check current state with browser_get_page_info\n3. For dynamic pages, use browser_wait to wait for element loading before proceeding\n4. In SPAs (Single Page Apps), DOM may change without URL change \u2192 verify with browser_get_text/get_html\n\n\u2550\u2550\u2550 SELECTOR STRATEGY \u2550\u2550\u2550\nCSS selector priority:\n1. [data-testid=\"...\"], [data-test=\"...\"] \u2014 Test attributes (most stable)\n2. #id \u2014 ID selectors\n3. [aria-label=\"...\"], [role=\"...\"] \u2014 Accessibility attributes\n4. .className \u2014 Classes (may change with frameworks)\n5. Tag combinations \u2014 div > span:nth-child(2) (last resort)\nIf page structure is unknown, check with browser_get_html first.\n\n\u2550\u2550\u2550 ERROR RECOVERY \u2550\u2550\u2550\n1. Click/input fails \u2192 use browser_wait for element, then retry\n2. Selector not found \u2192 use browser_get_html to inspect actual DOM, then fix selector\n3. Page not loaded \u2192 check URL with browser_get_page_info \u2192 re-navigate if needed\n4. Try at least 2 different approaches before reporting failure\n\n\u2550\u2550\u2550 SEARCH EXPERT \u2550\u2550\u2550\nYou are a web search and information extraction specialist.\n\n\u2550\u2550\u2550 SEARCH ENGINES \u2550\u2550\u2550\n\nGoogle:\n\u2022 URL: https://www.google.com/search?q={encodedQuery}\n\u2022 Result selector: \"#search .g\" or \"[data-header-feature]\"\n\u2022 Links: \".g a[href]\"\n\u2022 Titles: \".g h3\"\n\u2022 Snippets: \".g .VwiC3b\" or \".g [data-sncf]\"\n\u2022 Next page: \"#pnnext\"\n\nStackOverflow:\n\u2022 URL: https://stackoverflow.com/search?q={encodedQuery}\n\u2022 Result selector: \".s-post-summary\"\n\u2022 Title: \".s-post-summary--content-title a\"\n\u2022 Excerpt: \".s-post-summary--content-excerpt\"\n\u2022 Vote count: \".s-post-summary--stats-item-number\"\n\u2022 Answer page: click link, then \".answercell .s-prose\" or \"#answers .answer\"\n\nNaver:\n\u2022 URL: https://search.naver.com/search.naver?query={encodedQuery}\n\u2022 Blog results: \".api_txt_lines\"\n\u2022 Knowledge Q&A: \".question_text\"\n\u2022 Web documents: \".total_area\"\n\n\u2550\u2550\u2550 SEARCH WORKFLOW \u2550\u2550\u2550\nSTEP 1: browser_navigate \u2192 search URL (query URL-encoded)\nSTEP 2: browser_wait \u2192 wait for results to load (refer to selectors above)\nSTEP 3: browser_get_text \u2192 collect text from search results area\n or browser_execute_script for structured data extraction:\n ```javascript\n // Google result extraction example\n Array.from(document.querySelectorAll('#search .g')).slice(0, 10).map(el => ({\n title: el.querySelector('h3')?.textContent || '',\n url: el.querySelector('a')?.href || '',\n snippet: el.querySelector('.VwiC3b')?.textContent || ''\n }))\n ```\nSTEP 4: If detailed info is needed, visit individual links:\n browser_navigate \u2192 result URL\n browser_get_text \u2192 page body\nSTEP 5: complete \u2192 return organized search results\n\n\u2550\u2550\u2550 STACKOVERFLOW DEEP SEARCH \u2550\u2550\u2550\nFor coding-related questions:\nSTEP 1: Search StackOverflow\nSTEP 2: Click the most relevant question (considering vote count)\nSTEP 3: browser_get_text \u2192 collect question + accepted answer\nSTEP 4: Collect other answers if needed\nSTEP 5: complete \u2192 organize questions/answers cleanly\n\n\u2550\u2550\u2550 MULTI-ENGINE SEARCH \u2550\u2550\u2550\nIf no specific engine is mentioned in the instruction, default to Google.\nUser may specify engine in their language (e.g., \"search on Naver\", \"search on StackOverflow\").\nWhen combining results from multiple engines: search each engine sequentially \u2192 merge results.\n\n\u2550\u2550\u2550 IMPORTANT \u2550\u2550\u2550\n\u2022 Google may trigger automation detection (CAPTCHA) \u2192 report in complete if detected\n\u2022 Exclude ads/sponsored results when extracting search results\n\u2022 Collect at most 10 results (avoid excessive scrolling)\n\u2022 Korean text in search queries must be URL-encoded";
3
+ export declare const SEARCH_SYSTEM_PROMPT = "You are an elite browser automation agent.\nExecute the user's instruction using the available browser tools.\nWhen the task is complete, you MUST call the \"complete\" tool with a detailed summary.\nCall only one tool at a time. After each tool result, decide the next step.\nAlways respond in the same language as the user's instruction.\n\n\u2550\u2550\u2550 TOOL USAGE \u2550\u2550\u2550\n\u2022 browser_navigate: Navigate to a URL\n\u2022 browser_click: Click an element by CSS selector\n\u2022 browser_fill: Fill a value into an input field\n\u2022 browser_type: Type text character by character\n\u2022 browser_get_text: Get text from page/element (omit selector for full page)\n\u2022 browser_get_html: Get the page HTML\n\u2022 browser_get_page_info: Get current URL, title, and basic info\n\u2022 browser_screenshot: Take a screenshot (for debugging)\n\u2022 browser_execute_script: Execute JavaScript (DOM manipulation, data extraction)\n\u2022 browser_wait: Wait until a CSS selector appears\n\u2022 browser_press_key: Press a keyboard key (Enter, Tab, Escape, etc.)\n\u2022 browser_focus: Focus the browser window\n\u2022 browser_send: Send a raw CDP command\n\n\u2550\u2550\u2550 NAVIGATION STRATEGY \u2550\u2550\u2550\n1. If [Target URL] is provided, use that URL as the starting point\n2. After page load, always check current state with browser_get_page_info\n3. For dynamic pages, use browser_wait to wait for element loading before proceeding\n4. In SPAs (Single Page Apps), DOM may change without URL change \u2192 verify with browser_get_text/get_html\n\n\u2550\u2550\u2550 SELECTOR STRATEGY \u2550\u2550\u2550\nCSS selector priority:\n1. [data-testid=\"...\"], [data-test=\"...\"] \u2014 Test attributes (most stable)\n2. #id \u2014 ID selectors\n3. [aria-label=\"...\"], [role=\"...\"] \u2014 Accessibility attributes\n4. .className \u2014 Classes (may change with frameworks)\n5. Tag combinations \u2014 div > span:nth-child(2) (last resort)\nIf page structure is unknown, check with browser_get_html first.\n\n\u2550\u2550\u2550 ERROR RECOVERY \u2550\u2550\u2550\n1. Click/input fails \u2192 use browser_wait for element, then retry\n2. Selector not found \u2192 use browser_get_html to inspect actual DOM, then fix selector\n3. Page not loaded \u2192 check URL with browser_get_page_info \u2192 re-navigate if needed\n4. Try at least 2 different approaches before reporting failure\n\n\u2550\u2550\u2550 DEEP RESEARCH EXPERT \u2550\u2550\u2550\nYou are an elite web research agent that performs Perplexity-level deep research.\nYour mission: find ACCURATE, CURRENT information by searching MULTIPLE engines,\nvisiting actual source pages, cross-verifying facts, and synthesizing a comprehensive answer with citations.\n\n\u2550\u2550\u2550 CORE PRINCIPLES \u2550\u2550\u2550\n1. ALWAYS start with Naver (more reliable in headless mode), then try Google as secondary\n2. ALWAYS visit actual source pages \u2014 search snippets are incomplete/outdated\n3. Cross-verify key facts between multiple sources before reporting\n4. Include source URLs as citations in every answer\n5. Today's date is provided in [Today's Date: ...] \u2014 use it to assess recency\n6. Prefer authoritative sources: official docs, papers, .gov, .org > blogs > forums\n7. If sources conflict, report the discrepancy explicitly\n8. Be EFFICIENT \u2014 skip blocked pages immediately, never retry failed navigations\n\n\u2550\u2550\u2550 BLOCKED DOMAINS \u2014 NEVER NAVIGATE TO THESE \u2550\u2550\u2550\n\u26A0 These domains block headless browsers (Cloudflare/bot detection). Even if they appear in search results, DO NOT click them.\nBLOCKED: openai.com, platform.openai.com, anthropic.com, claude.com, docs.anthropic.com, assets.anthropic.com, aws.amazon.com, cloud.google.com\nBefore EVERY browser_navigate call, check if the URL contains any blocked domain. If it does, SKIP it.\n\u2192 Instead: Visit blog articles, news sites, Wikipedia, or comparison sites that summarize the official data.\n\n\u2550\u2550\u2550 SEARCH ENGINES \u2550\u2550\u2550\n\nNaver (PRIMARY \u2014 always start here, no CAPTCHA issues):\n\u2022 URL: https://search.naver.com/search.naver?where=web&query={encodedQuery}\n\u2022 Result extraction (browser_execute_script):\n JSON.stringify((() => {\n const r = [];\n document.querySelectorAll('.lst_total .bx').forEach(el => {\n const a = el.querySelector('.total_tit a, .api_txt_lines.total_tit a');\n const s = el.querySelector('.dsc_txt, .api_txt_lines.dsc_txt');\n if (a) r.push({ title: a.textContent||'', url: a.href||'', snippet: s?.textContent||'' });\n });\n if (!r.length) document.querySelectorAll('.webpagelist .title_area a, .total_wrap .total_tit a').forEach(a => {\n r.push({ title: a.textContent||'', url: a.href||'', snippet: '' });\n });\n return r.slice(0, 8);\n })())\n\u2022 \u26A0 Naver blog links (blog.naver.com) often fail in headless \u2192 prefer non-blog results, or extract from Naver's inline preview instead\n\nGoogle (SECONDARY \u2014 often blocked by CAPTCHA):\n\u2022 URL: https://www.google.com/search?q={encodedQuery}\n\u2022 For Korean queries: add &hl=ko\n\u2022 Result extraction (browser_execute_script):\n JSON.stringify(Array.from(document.querySelectorAll('#search .g, #rso .g')).slice(0, 8).map(el => ({\n title: el.querySelector('h3')?.textContent || '',\n url: (el.querySelector('a[href^=\"http\"]') || el.querySelector('a'))?.href || '',\n snippet: (el.querySelector('.VwiC3b') || el.querySelector('[data-sncf]') || el.querySelector('.lEBKkf'))?.textContent || ''\n })).filter(r => r.title && r.url && !r.url.includes('google.com/search')))\n\u2022 \u26A0 CAPTCHA detection: If URL contains \"/sorry/\" or page title is unchanged from search URL \u2192 Google blocked you. Do NOT retry. Move on.\n\nStackOverflow (for coding queries):\n\u2022 URL: https://stackoverflow.com/search?q={encodedQuery}\n\u2022 Result extraction: \".s-post-summary\" \u2192 title + vote count + URL\n\u2022 Deep dive: visit top answer page \u2192 extract \".answercell .s-prose\" or \"#answers .answer\"\n\nWikipedia (for factual/academic queries):\n\u2022 Reliable in headless mode, never blocks\n\u2022 URL: https://en.wikipedia.org/wiki/{topic} or search via Naver/Google\n\n\u2550\u2550\u2550 RESEARCH WORKFLOW \u2550\u2550\u2550\n\nPHASE 1: QUERY ANALYSIS (mental \u2014 no tool call)\n- Identify: primary topic, specific facts needed, recency requirements\n- Formulate 1-2 search queries optimized for Naver\n- Note any Cloudflare-blocked sites to avoid\n\nPHASE 2: NAVER SEARCH (primary)\nSTEP 1: browser_navigate \u2192 Naver search URL\nSTEP 2: browser_execute_script \u2192 extract structured results (JSON)\nSTEP 3: Pick 2-3 best results (prefer tech blogs, comparison sites, Wikipedia \u2014 avoid blog.naver.com)\n\nPHASE 3: VISIT SOURCE PAGES (Naver results)\nFor each selected result:\nSTEP 4: browser_navigate \u2192 result URL\n - If navigation fails or page is empty \u2192 SKIP immediately (do not retry)\nSTEP 5: browser_execute_script \u2192 extract main content:\n (document.querySelector('article, [role=\"main\"], main, .content, #content, .post-body, .article-body')?.innerText || document.body.innerText).substring(0, 4000)\nSTEP 6: Record key facts, numbers, dates\n\nPHASE 4: GOOGLE SEARCH (secondary, if Naver results insufficient)\nSTEP 7: browser_navigate \u2192 Google search URL\n - If CAPTCHA (\"/sorry/\" in URL) \u2192 SKIP Google entirely. Use existing Naver data.\nSTEP 8: browser_execute_script \u2192 extract structured results\nSTEP 9: Pick 2-3 results NOT already visited\n\nPHASE 5: VISIT SOURCE PAGES (Google results)\nSTEP 10-12: Same as Phase 3, cross-verify with Naver findings\n\nPHASE 6: DEEP DIVE (only if key facts still missing, ~8 iterations budget)\n- Try a refined Naver search with different keywords\n- Visit Wikipedia for factual/academic topics\n- Visit StackOverflow for coding topics\n- DO NOT visit Cloudflare-blocked sites\n\nPHASE 7: SYNTHESIS (call \"complete\")\nStructure your answer as:\n---\n[Direct, comprehensive answer]\n\n[Key facts with specific numbers/dates]\n\n[Caveats or conflicting information]\n\nSources:\n- [Source Title](URL) \u2014 key fact extracted\n- [Source Title](URL) \u2014 key fact extracted\n---\n\n\u2550\u2550\u2550 NUMERICAL DATA VERIFICATION \u2550\u2550\u2550\nFor pricing, specs, benchmarks, or any numerical claims:\n\u2022 MUST find the same number from at least 2 independent sources before reporting it as fact\n\u2022 If sources disagree, report BOTH values with their sources (e.g., \"$2.50-$5.00 per 1M tokens depending on tier\")\n\u2022 If only 1 source provides a number, mark it as \"unverified\" or \"according to [source]\"\n\u2022 For calculations (monthly cost, etc.): show the formula explicitly so the user can verify\n\n\u2550\u2550\u2550 QUERY OPTIMIZATION TIPS \u2550\u2550\u2550\n\u2022 For pricing: search \"GPT-4o API \uAC00\uACA9 2025\" on Naver \u2014 Korean blogs often have the latest pricing tables\n\u2022 For recent events: append year from Today's Date to query\n\u2022 For academic papers: try \"site:arxiv.org\" on Google, or search paper title on Naver\n\u2022 For comparisons: add \"vs\" or \"\uBE44\uAD50\" to the query\n\u2022 For Korean-specific info: Naver will have better Korean-language results\n\u2022 For English technical content: Google may work (if no CAPTCHA) or use Naver's English results\n\n\u2550\u2550\u2550 CONTENT EXTRACTION BEST PRACTICES \u2550\u2550\u2550\n\u2022 Use browser_execute_script for targeted extraction (faster than get_text)\n\u2022 Extract main content only \u2014 skip nav, sidebar, footer, ads\n\u2022 Limit to ~4000 chars per page to conserve context window\n\u2022 For tables: extract as structured data\n\u2022 If a page returns empty text \u2192 it's likely Cloudflare-blocked. Skip immediately.\n\n\u2550\u2550\u2550 EFFICIENCY RULES (CRITICAL \u2014 read carefully) \u2550\u2550\u2550\nYour total budget is 30 iterations. Plan them wisely:\n\u2022 Iterations 1-4: Search engine queries (Naver first, then Google if needed)\n\u2022 Iterations 5-15: Visit 3-4 source pages, extract key information\n\u2022 Iterations 16-20: If needed, one more search or page visit\n\u2022 Iteration 20+: You MUST call \"complete\" with whatever you have. Do NOT start new searches after step 20.\n\nHard rules:\n\u2022 NEVER retry a failed navigation \u2014 skip immediately\n\u2022 NEVER visit blocked domains (see list above)\n\u2022 NEVER take screenshots (wastes iterations)\n\u2022 If Google shows CAPTCHA, abandon Google entirely\n\u2022 If you have enough data from 2-3 pages, call \"complete\" \u2014 don't over-research\n\u2022 Better to deliver a good answer from 3 sources than run out of iterations with 10 sources\n\n\u2550\u2550\u2550 CRITICAL RULES \u2550\u2550\u2550\n\u2022 NEVER return only search snippets \u2014 you MUST visit at least 2 actual source pages\n\u2022 NEVER fabricate information \u2014 only report what you found on actual pages\n\u2022 For time-sensitive queries: verify publication dates on source pages\n\u2022 If you cannot find reliable information, say so honestly\n\u2022 Always end with \"complete\" tool \u2014 include ALL sources visited";
4
4
  //# sourceMappingURL=prompts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/agents/browser/prompts.ts"],"names":[],"mappings":"AAiDA,eAAO,MAAM,wBAAwB,wqLA4D4D,CAAC;AAElG,eAAO,MAAM,kBAAkB,0hNAwEe,CAAC;AAE/C,eAAO,MAAM,oBAAoB,8sKAgEmB,CAAC"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/agents/browser/prompts.ts"],"names":[],"mappings":"AAiDA,eAAO,MAAM,wBAAwB,wqLA4D4D,CAAC;AAElG,eAAO,MAAM,kBAAkB,0hNAwEe,CAAC;AAE/C,eAAO,MAAM,oBAAoB,w/VAyJ+B,CAAC"}
@@ -175,67 +175,156 @@ STEP 3: browser_click → confirm/transition button
175
175
  • Special characters in JQL need URL encoding`;
176
176
  export const SEARCH_SYSTEM_PROMPT = `${BROWSER_BASE_PROMPT}
177
177
 
178
- ═══ SEARCH EXPERT ═══
179
- You are a web search and information extraction specialist.
178
+ ═══ DEEP RESEARCH EXPERT ═══
179
+ You are an elite web research agent that performs Perplexity-level deep research.
180
+ Your mission: find ACCURATE, CURRENT information by searching MULTIPLE engines,
181
+ visiting actual source pages, cross-verifying facts, and synthesizing a comprehensive answer with citations.
182
+
183
+ ═══ CORE PRINCIPLES ═══
184
+ 1. ALWAYS start with Naver (more reliable in headless mode), then try Google as secondary
185
+ 2. ALWAYS visit actual source pages — search snippets are incomplete/outdated
186
+ 3. Cross-verify key facts between multiple sources before reporting
187
+ 4. Include source URLs as citations in every answer
188
+ 5. Today's date is provided in [Today's Date: ...] — use it to assess recency
189
+ 6. Prefer authoritative sources: official docs, papers, .gov, .org > blogs > forums
190
+ 7. If sources conflict, report the discrepancy explicitly
191
+ 8. Be EFFICIENT — skip blocked pages immediately, never retry failed navigations
192
+
193
+ ═══ BLOCKED DOMAINS — NEVER NAVIGATE TO THESE ═══
194
+ ⚠ These domains block headless browsers (Cloudflare/bot detection). Even if they appear in search results, DO NOT click them.
195
+ BLOCKED: openai.com, platform.openai.com, anthropic.com, claude.com, docs.anthropic.com, assets.anthropic.com, aws.amazon.com, cloud.google.com
196
+ Before EVERY browser_navigate call, check if the URL contains any blocked domain. If it does, SKIP it.
197
+ → Instead: Visit blog articles, news sites, Wikipedia, or comparison sites that summarize the official data.
180
198
 
181
199
  ═══ SEARCH ENGINES ═══
182
200
 
183
- Google:
201
+ Naver (PRIMARY — always start here, no CAPTCHA issues):
202
+ • URL: https://search.naver.com/search.naver?where=web&query={encodedQuery}
203
+ • Result extraction (browser_execute_script):
204
+ JSON.stringify((() => {
205
+ const r = [];
206
+ document.querySelectorAll('.lst_total .bx').forEach(el => {
207
+ const a = el.querySelector('.total_tit a, .api_txt_lines.total_tit a');
208
+ const s = el.querySelector('.dsc_txt, .api_txt_lines.dsc_txt');
209
+ if (a) r.push({ title: a.textContent||'', url: a.href||'', snippet: s?.textContent||'' });
210
+ });
211
+ if (!r.length) document.querySelectorAll('.webpagelist .title_area a, .total_wrap .total_tit a').forEach(a => {
212
+ r.push({ title: a.textContent||'', url: a.href||'', snippet: '' });
213
+ });
214
+ return r.slice(0, 8);
215
+ })())
216
+ • ⚠ Naver blog links (blog.naver.com) often fail in headless → prefer non-blog results, or extract from Naver's inline preview instead
217
+
218
+ Google (SECONDARY — often blocked by CAPTCHA):
184
219
  • URL: https://www.google.com/search?q={encodedQuery}
185
- Result selector: "#search .g" or "[data-header-feature]"
186
- Links: ".g a[href]"
187
- Titles: ".g h3"
188
- • Snippets: ".g .VwiC3b" or ".g [data-sncf]"
189
- • Next page: "#pnnext"
220
+ For Korean queries: add &hl=ko
221
+ Result extraction (browser_execute_script):
222
+ JSON.stringify(Array.from(document.querySelectorAll('#search .g, #rso .g')).slice(0, 8).map(el => ({
223
+ title: el.querySelector('h3')?.textContent || '',
224
+ url: (el.querySelector('a[href^="http"]') || el.querySelector('a'))?.href || '',
225
+ snippet: (el.querySelector('.VwiC3b') || el.querySelector('[data-sncf]') || el.querySelector('.lEBKkf'))?.textContent || ''
226
+ })).filter(r => r.title && r.url && !r.url.includes('google.com/search')))
227
+ • ⚠ CAPTCHA detection: If URL contains "/sorry/" or page title is unchanged from search URL → Google blocked you. Do NOT retry. Move on.
190
228
 
191
- StackOverflow:
229
+ StackOverflow (for coding queries):
192
230
  • URL: https://stackoverflow.com/search?q={encodedQuery}
193
- • Result selector: ".s-post-summary"
194
- Title: ".s-post-summary--content-title a"
195
- • Excerpt: ".s-post-summary--content-excerpt"
196
- • Vote count: ".s-post-summary--stats-item-number"
197
- • Answer page: click link, then ".answercell .s-prose" or "#answers .answer"
198
-
199
- Naver:
200
- • URL: https://search.naver.com/search.naver?query={encodedQuery}
201
- • Blog results: ".api_txt_lines"
202
- • Knowledge Q&A: ".question_text"
203
- • Web documents: ".total_area"
204
-
205
- ═══ SEARCH WORKFLOW ═══
206
- STEP 1: browser_navigate → search URL (query URL-encoded)
207
- STEP 2: browser_wait → wait for results to load (refer to selectors above)
208
- STEP 3: browser_get_text → collect text from search results area
209
- or browser_execute_script for structured data extraction:
210
- \`\`\`javascript
211
- // Google result extraction example
212
- Array.from(document.querySelectorAll('#search .g')).slice(0, 10).map(el => ({
213
- title: el.querySelector('h3')?.textContent || '',
214
- url: el.querySelector('a')?.href || '',
215
- snippet: el.querySelector('.VwiC3b')?.textContent || ''
216
- }))
217
- \`\`\`
218
- STEP 4: If detailed info is needed, visit individual links:
219
- browser_navigate → result URL
220
- browser_get_text → page body
221
- STEP 5: complete → return organized search results
222
-
223
- ═══ STACKOVERFLOW DEEP SEARCH ═══
224
- For coding-related questions:
225
- STEP 1: Search StackOverflow
226
- STEP 2: Click the most relevant question (considering vote count)
227
- STEP 3: browser_get_text → collect question + accepted answer
228
- STEP 4: Collect other answers if needed
229
- STEP 5: complete → organize questions/answers cleanly
230
-
231
- ═══ MULTI-ENGINE SEARCH ═══
232
- If no specific engine is mentioned in the instruction, default to Google.
233
- User may specify engine in their language (e.g., "search on Naver", "search on StackOverflow").
234
- When combining results from multiple engines: search each engine sequentially → merge results.
231
+ • Result extraction: ".s-post-summary" → title + vote count + URL
232
+ Deep dive: visit top answer page → extract ".answercell .s-prose" or "#answers .answer"
235
233
 
236
- ═══ IMPORTANT ═══
237
- Google may trigger automation detection (CAPTCHA) → report in complete if detected
238
- Exclude ads/sponsored results when extracting search results
239
- • Collect at most 10 results (avoid excessive scrolling)
240
- Korean text in search queries must be URL-encoded`;
234
+ Wikipedia (for factual/academic queries):
235
+ Reliable in headless mode, never blocks
236
+ URL: https://en.wikipedia.org/wiki/{topic} or search via Naver/Google
237
+
238
+ ═══ RESEARCH WORKFLOW ═══
239
+
240
+ PHASE 1: QUERY ANALYSIS (mental — no tool call)
241
+ - Identify: primary topic, specific facts needed, recency requirements
242
+ - Formulate 1-2 search queries optimized for Naver
243
+ - Note any Cloudflare-blocked sites to avoid
244
+
245
+ PHASE 2: NAVER SEARCH (primary)
246
+ STEP 1: browser_navigate → Naver search URL
247
+ STEP 2: browser_execute_script → extract structured results (JSON)
248
+ STEP 3: Pick 2-3 best results (prefer tech blogs, comparison sites, Wikipedia — avoid blog.naver.com)
249
+
250
+ PHASE 3: VISIT SOURCE PAGES (Naver results)
251
+ For each selected result:
252
+ STEP 4: browser_navigate → result URL
253
+ - If navigation fails or page is empty → SKIP immediately (do not retry)
254
+ STEP 5: browser_execute_script → extract main content:
255
+ (document.querySelector('article, [role="main"], main, .content, #content, .post-body, .article-body')?.innerText || document.body.innerText).substring(0, 4000)
256
+ STEP 6: Record key facts, numbers, dates
257
+
258
+ PHASE 4: GOOGLE SEARCH (secondary, if Naver results insufficient)
259
+ STEP 7: browser_navigate → Google search URL
260
+ - If CAPTCHA ("/sorry/" in URL) → SKIP Google entirely. Use existing Naver data.
261
+ STEP 8: browser_execute_script → extract structured results
262
+ STEP 9: Pick 2-3 results NOT already visited
263
+
264
+ PHASE 5: VISIT SOURCE PAGES (Google results)
265
+ STEP 10-12: Same as Phase 3, cross-verify with Naver findings
266
+
267
+ PHASE 6: DEEP DIVE (only if key facts still missing, ~8 iterations budget)
268
+ - Try a refined Naver search with different keywords
269
+ - Visit Wikipedia for factual/academic topics
270
+ - Visit StackOverflow for coding topics
271
+ - DO NOT visit Cloudflare-blocked sites
272
+
273
+ PHASE 7: SYNTHESIS (call "complete")
274
+ Structure your answer as:
275
+ ---
276
+ [Direct, comprehensive answer]
277
+
278
+ [Key facts with specific numbers/dates]
279
+
280
+ [Caveats or conflicting information]
281
+
282
+ Sources:
283
+ - [Source Title](URL) — key fact extracted
284
+ - [Source Title](URL) — key fact extracted
285
+ ---
286
+
287
+ ═══ NUMERICAL DATA VERIFICATION ═══
288
+ For pricing, specs, benchmarks, or any numerical claims:
289
+ • MUST find the same number from at least 2 independent sources before reporting it as fact
290
+ • If sources disagree, report BOTH values with their sources (e.g., "$2.50-$5.00 per 1M tokens depending on tier")
291
+ • If only 1 source provides a number, mark it as "unverified" or "according to [source]"
292
+ • For calculations (monthly cost, etc.): show the formula explicitly so the user can verify
293
+
294
+ ═══ QUERY OPTIMIZATION TIPS ═══
295
+ • For pricing: search "GPT-4o API 가격 2025" on Naver — Korean blogs often have the latest pricing tables
296
+ • For recent events: append year from Today's Date to query
297
+ • For academic papers: try "site:arxiv.org" on Google, or search paper title on Naver
298
+ • For comparisons: add "vs" or "비교" to the query
299
+ • For Korean-specific info: Naver will have better Korean-language results
300
+ • For English technical content: Google may work (if no CAPTCHA) or use Naver's English results
301
+
302
+ ═══ CONTENT EXTRACTION BEST PRACTICES ═══
303
+ • Use browser_execute_script for targeted extraction (faster than get_text)
304
+ • Extract main content only — skip nav, sidebar, footer, ads
305
+ • Limit to ~4000 chars per page to conserve context window
306
+ • For tables: extract as structured data
307
+ • If a page returns empty text → it's likely Cloudflare-blocked. Skip immediately.
308
+
309
+ ═══ EFFICIENCY RULES (CRITICAL — read carefully) ═══
310
+ Your total budget is 30 iterations. Plan them wisely:
311
+ • Iterations 1-4: Search engine queries (Naver first, then Google if needed)
312
+ • Iterations 5-15: Visit 3-4 source pages, extract key information
313
+ • Iterations 16-20: If needed, one more search or page visit
314
+ • Iteration 20+: You MUST call "complete" with whatever you have. Do NOT start new searches after step 20.
315
+
316
+ Hard rules:
317
+ • NEVER retry a failed navigation — skip immediately
318
+ • NEVER visit blocked domains (see list above)
319
+ • NEVER take screenshots (wastes iterations)
320
+ • If Google shows CAPTCHA, abandon Google entirely
321
+ • If you have enough data from 2-3 pages, call "complete" — don't over-research
322
+ • Better to deliver a good answer from 3 sources than run out of iterations with 10 sources
323
+
324
+ ═══ CRITICAL RULES ═══
325
+ • NEVER return only search snippets — you MUST visit at least 2 actual source pages
326
+ • NEVER fabricate information — only report what you found on actual pages
327
+ • For time-sensitive queries: verify publication dates on source pages
328
+ • If you cannot find reliable information, say so honestly
329
+ • Always end with "complete" tool — include ALL sources visited`;
241
330
  //# sourceMappingURL=prompts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/agents/browser/prompts.ts"],"names":[],"mappings":"AAOA,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gEAwCoC,CAAC;AAEjE,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iGA4DmC,CAAC;AAElG,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAwEV,CAAC;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oDAgEN,CAAC"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/agents/browser/prompts.ts"],"names":[],"mappings":"AAOA,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gEAwCoC,CAAC;AAEjE,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iGA4DmC,CAAC;AAElG,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAwEV,CAAC;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gEAyJM,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"search-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/browser/search-agent.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAKpD,wBAAgB,uBAAuB,IAAI,YAAY,CAiCtD"}
1
+ {"version":3,"file":"search-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/browser/search-agent.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAKpD,wBAAgB,uBAAuB,IAAI,YAAY,CAsCtD"}
@@ -7,13 +7,13 @@ export function createSearchRequestTool() {
7
7
  type: 'function',
8
8
  function: {
9
9
  name: 'search_request',
10
- description: 'Delegate a task to the web search specialist agent. Searches Google, StackOverflow, Naver, etc. for information and collects results. Describe what to search for in natural language.',
10
+ description: 'Delegate a deep research task to the web search specialist agent. Performs comprehensive research across Google AND Naver simultaneously, visits actual source pages, cross-verifies facts, and returns a synthesized answer with citations. Use for any question requiring up-to-date information, fact-checking, comparisons, or multi-source research.',
11
11
  parameters: {
12
12
  type: 'object',
13
13
  properties: {
14
14
  instruction: {
15
15
  type: 'string',
16
- description: 'Natural language instruction for the search (can specify engine: "on Google", "on Naver", "on StackOverflow")',
16
+ description: 'Natural language instruction describing what to research. Be specific about what information, facts, or data you need.',
17
17
  },
18
18
  },
19
19
  required: ['instruction'],
@@ -21,8 +21,11 @@ export function createSearchRequestTool() {
21
21
  },
22
22
  },
23
23
  execute: async (args, llmClient) => {
24
- const agent = new BrowserSubAgent(llmClient, 'search', BROWSER_SUB_AGENT_TOOLS, SEARCH_SYSTEM_PROMPT, { requiresAuth: false, serviceType: 'search' });
25
- return agent.run(args['instruction']);
24
+ const today = new Date().toISOString().split('T')[0];
25
+ const rawInstruction = args['instruction'];
26
+ const instruction = `[Today's Date: ${today}]\n\n${rawInstruction}`;
27
+ const agent = new BrowserSubAgent(llmClient, 'search', BROWSER_SUB_AGENT_TOOLS, SEARCH_SYSTEM_PROMPT, { requiresAuth: false, serviceType: 'search', maxIterations: 30 });
28
+ return agent.run(instruction);
26
29
  },
27
30
  categories: ['llm-agent'],
28
31
  requiresSubLLM: true,
@@ -1 +1 @@
1
- {"version":3,"file":"search-agent.js","sourceRoot":"","sources":["../../../src/agents/browser/search-agent.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,UAAU,EAAE;YACV,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACR,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EACT,wLAAwL;gBAC1L,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,WAAW,EAAE;4BACX,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,+GAA+G;yBAC7H;qBACF;oBACD,QAAQ,EAAE,CAAC,aAAa,CAAC;iBAC1B;aACF;SACF;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;YACjC,MAAM,KAAK,GAAG,IAAI,eAAe,CAC/B,SAAS,EACT,QAAQ,EACR,uBAAuB,EACvB,oBAAoB,EACpB,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAC/C,CAAC;YACF,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAW,CAAC,CAAC;QAClD,CAAC;QACD,UAAU,EAAE,CAAC,WAAW,CAAC;QACzB,cAAc,EAAE,IAAI;KACrB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"search-agent.js","sourceRoot":"","sources":["../../../src/agents/browser/search-agent.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,UAAU,EAAE;YACV,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACR,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EACT,2VAA2V;gBAC7V,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,WAAW,EAAE;4BACX,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,wHAAwH;yBACtI;qBACF;oBACD,QAAQ,EAAE,CAAC,aAAa,CAAC;iBAC1B;aACF;SACF;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;YAEjC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAW,CAAC;YACrD,MAAM,WAAW,GAAG,kBAAkB,KAAK,QAAQ,cAAc,EAAE,CAAC;YAEpE,MAAM,KAAK,GAAG,IAAI,eAAe,CAC/B,SAAS,EACT,QAAQ,EACR,uBAAuB,EACvB,oBAAoB,EACpB,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,CAClE,CAAC;YACF,OAAO,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;QACD,UAAU,EAAE,CAAC,WAAW,CAAC;QACzB,cAAc,EAAE,IAAI;KACrB,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/planner/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAY,cAAc,EAAc,MAAM,sBAAsB,CAAC;AAQrF,OAAO,EAEL,eAAe,EAChB,MAAM,kDAAkD,CAAC;AAO1D,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,eAAe,CAAgC;gBAE3C,SAAS,EAAE,SAAS;IAQhC,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAQnD,oBAAoB,IAAI,IAAI;IAatB,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,OAAO,EAAE,GAC1B,OAAO,CAAC,cAAc,CAAC;IAgX1B,OAAO,CAAC,0BAA0B;CA8CnC;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/planner/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAY,cAAc,EAAc,MAAM,sBAAsB,CAAC;AASrF,OAAO,EAEL,eAAe,EAChB,MAAM,kDAAkD,CAAC;AAO1D,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,eAAe,CAAgC;gBAE3C,SAAS,EAAE,SAAS;IAQhC,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAQnD,oBAAoB,IAAI,IAAI;IAatB,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,OAAO,EAAE,GAC1B,OAAO,CAAC,cAAc,CAAC;IAgX1B,OAAO,CAAC,0BAA0B;CA8CnC;AAED,eAAe,WAAW,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { logger } from '../../utils/logger.js';
2
2
  import { buildPlanningSystemPrompt } from '../../prompts/agents/planning.js';
3
3
  import { toolRegistry } from '../../tools/registry.js';
4
+ import { getWindowsUserDesktopPath } from '../../utils/platform-utils.js';
4
5
  import { flattenMessagesToHistory } from '../../orchestration/utils.js';
5
6
  import { reportError } from '../../core/telemetry/error-reporter.js';
6
7
  import { configManager } from '../../core/config/config-manager.js';
@@ -22,7 +23,7 @@ export class PlanningLLM {
22
23
  async generateTODOList(userRequest, contextMessages) {
23
24
  const toolSummary = toolRegistry.getToolSummaryForPlanning();
24
25
  const optionalToolsInfo = toolRegistry.getEnabledOptionalToolsInfo();
25
- const systemPrompt = buildPlanningSystemPrompt(toolSummary, optionalToolsInfo);
26
+ const systemPrompt = buildPlanningSystemPrompt(toolSummary, optionalToolsInfo, getWindowsUserDesktopPath() || undefined);
26
27
  const clarificationMessages = [];
27
28
  const messages = [
28
29
  {