@redplanethq/corebrain 2.3.7 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/commands/browser/close.d.ts +5 -4
  2. package/dist/commands/browser/close.d.ts.map +1 -1
  3. package/dist/commands/browser/close.js +25 -20
  4. package/dist/commands/browser/close.js.map +1 -1
  5. package/dist/commands/browser/command.d.ts +5 -3
  6. package/dist/commands/browser/command.d.ts.map +1 -1
  7. package/dist/commands/browser/command.js +10 -16
  8. package/dist/commands/browser/command.js.map +1 -1
  9. package/dist/commands/browser/delete-session.d.ts +10 -0
  10. package/dist/commands/browser/delete-session.d.ts.map +1 -0
  11. package/dist/commands/browser/delete-session.js +41 -0
  12. package/dist/commands/browser/delete-session.js.map +1 -0
  13. package/dist/commands/browser/install.d.ts.map +1 -1
  14. package/dist/commands/browser/install.js +41 -9
  15. package/dist/commands/browser/install.js.map +1 -1
  16. package/dist/commands/browser/list-sessions.d.ts +8 -0
  17. package/dist/commands/browser/list-sessions.d.ts.map +1 -0
  18. package/dist/commands/browser/list-sessions.js +46 -0
  19. package/dist/commands/browser/list-sessions.js.map +1 -0
  20. package/dist/commands/browser/open-head.d.ts +8 -0
  21. package/dist/commands/browser/open-head.d.ts.map +1 -0
  22. package/dist/commands/browser/open-head.js +68 -0
  23. package/dist/commands/browser/open-head.js.map +1 -0
  24. package/dist/commands/browser/open.d.ts +3 -3
  25. package/dist/commands/browser/open.d.ts.map +1 -1
  26. package/dist/commands/browser/open.js +18 -25
  27. package/dist/commands/browser/open.js.map +1 -1
  28. package/dist/commands/browser/status.d.ts.map +1 -1
  29. package/dist/commands/browser/status.js +15 -9
  30. package/dist/commands/browser/status.js.map +1 -1
  31. package/dist/commands/coding/start.d.ts.map +1 -1
  32. package/dist/commands/coding/start.js.map +1 -1
  33. package/dist/commands/gateway/config.d.ts.map +1 -1
  34. package/dist/commands/gateway/config.js +19 -25
  35. package/dist/commands/gateway/config.js.map +1 -1
  36. package/dist/commands/gateway/restart.js +1 -1
  37. package/dist/commands/gateway/restart.js.map +1 -1
  38. package/dist/commands/gateway/start.d.ts +8 -0
  39. package/dist/commands/gateway/start.d.ts.map +1 -0
  40. package/dist/commands/gateway/start.js +106 -0
  41. package/dist/commands/gateway/start.js.map +1 -0
  42. package/dist/commands/gateway/status.js +2 -2
  43. package/dist/commands/gateway/status.js.map +1 -1
  44. package/dist/commands/gateway/stop.d.ts +8 -0
  45. package/dist/commands/gateway/stop.d.ts.map +1 -0
  46. package/dist/commands/gateway/stop.js +67 -0
  47. package/dist/commands/gateway/stop.js.map +1 -0
  48. package/dist/server/gateway-client.d.ts.map +1 -1
  49. package/dist/server/gateway-client.js +2 -2
  50. package/dist/server/gateway-client.js.map +1 -1
  51. package/dist/server/tools/browser-tools.d.ts +5 -6
  52. package/dist/server/tools/browser-tools.d.ts.map +1 -1
  53. package/dist/server/tools/browser-tools.js +63 -42
  54. package/dist/server/tools/browser-tools.js.map +1 -1
  55. package/dist/server/tools/coding-tools.d.ts +1 -2
  56. package/dist/server/tools/coding-tools.d.ts.map +1 -1
  57. package/dist/server/tools/coding-tools.js +9 -21
  58. package/dist/server/tools/coding-tools.js.map +1 -1
  59. package/dist/utils/agent-browser.d.ts +8 -26
  60. package/dist/utils/agent-browser.d.ts.map +1 -1
  61. package/dist/utils/agent-browser.js +28 -127
  62. package/dist/utils/agent-browser.js.map +1 -1
  63. package/dist/utils/browser-use.d.ts +57 -0
  64. package/dist/utils/browser-use.d.ts.map +1 -0
  65. package/dist/utils/browser-use.js +212 -0
  66. package/dist/utils/browser-use.js.map +1 -0
  67. package/dist/utils/coding-runner.d.ts +1 -3
  68. package/dist/utils/coding-runner.d.ts.map +1 -1
  69. package/dist/utils/coding-runner.js +7 -35
  70. package/dist/utils/coding-runner.js.map +1 -1
  71. package/package.json +1 -1
@@ -1,10 +1,11 @@
1
1
  import zod from 'zod';
2
- export declare const args: zod.ZodTuple<[zod.ZodString], null>;
3
- export declare const options: zod.ZodObject<{}, zod.core.$strip>;
2
+ export declare const options: zod.ZodObject<{
3
+ sessionName: zod.ZodOptional<zod.ZodString>;
4
+ all: zod.ZodDefault<zod.ZodOptional<zod.ZodBoolean>>;
5
+ }, zod.core.$strip>;
4
6
  type Props = {
5
- args: zod.infer<typeof args>;
6
7
  options: zod.infer<typeof options>;
7
8
  };
8
- export default function BrowserClose({ args: [sessionName] }: Props): null;
9
+ export default function BrowserClose({ options }: Props): null;
9
10
  export {};
10
11
  //# sourceMappingURL=close.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"close.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/close.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,eAAO,MAAM,IAAI,qCAEf,CAAC;AAEH,eAAO,MAAM,OAAO,oCAAiB,CAAC;AAEtC,KAAK,KAAK,GAAG;IACZ,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACnC,CAAC;AAmCF,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,QAclE"}
1
+ {"version":3,"file":"close.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/close.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,eAAO,MAAM,OAAO;;;mBAGlB,CAAC;AAEH,KAAK,KAAK,GAAG;IACZ,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACnC,CAAC;AA0CF,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,QActD"}
@@ -3,47 +3,52 @@ import { useApp } from 'ink';
3
3
  import * as p from '@clack/prompts';
4
4
  import chalk from 'chalk';
5
5
  import zod from 'zod';
6
- import { isAgentBrowserInstalled, browserClose, getSession } from '../../utils/agent-browser.js';
7
- export const args = zod.tuple([
8
- zod.string().describe('Session name to close'),
9
- ]);
10
- export const options = zod.object({});
11
- async function runBrowserClose(sessionName) {
6
+ import { isBrowserUseInstalled, browserClose, browserCloseAll } from '../../utils/browser-use.js';
7
+ export const options = zod.object({
8
+ sessionName: zod.string().optional().describe('Session name to close'),
9
+ all: zod.boolean().optional().default(false).describe('Close all sessions'),
10
+ });
11
+ async function runBrowserClose(sessionName, closeAll) {
12
12
  const spinner = p.spinner();
13
- spinner.start('Checking agent-browser...');
14
- const installed = await isAgentBrowserInstalled();
13
+ spinner.start('Checking browser-use...');
14
+ const installed = await isBrowserUseInstalled();
15
15
  if (!installed) {
16
16
  spinner.stop(chalk.red('Not installed'));
17
- p.log.error('agent-browser is not installed. Run `corebrain browser install` first.');
17
+ p.log.error('browser-use is not installed. Run `corebrain browser install` first.');
18
18
  return;
19
19
  }
20
- // Check if session exists
21
- const session = getSession(sessionName);
22
- if (!session) {
23
- spinner.stop(chalk.yellow('Session not found'));
24
- p.log.warning(`Session "${sessionName}" not found. Use \`corebrain browser status\` to see active sessions.`);
20
+ if (closeAll) {
21
+ spinner.message('Closing all browser sessions...');
22
+ const result = await browserCloseAll();
23
+ if (result.code !== 0) {
24
+ spinner.stop(chalk.red('Failed to close all browsers'));
25
+ p.log.error(result.stderr || 'Failed to close all browsers');
26
+ return;
27
+ }
28
+ spinner.stop(chalk.green('Closed all browser sessions'));
25
29
  return;
26
30
  }
27
- spinner.message(`Closing session "${sessionName}"...`);
28
- const result = await browserClose(sessionName);
31
+ const session = sessionName || 'default';
32
+ spinner.message(`Closing browser for session "${session}"...`);
33
+ const result = await browserClose(session);
29
34
  if (result.code !== 0) {
30
35
  spinner.stop(chalk.red('Failed to close browser'));
31
36
  p.log.error(result.stderr || 'Failed to close browser');
32
37
  return;
33
38
  }
34
- spinner.stop(chalk.green(`Closed session "${sessionName}"`));
39
+ spinner.stop(chalk.green(`Closed browser for session "${session}"`));
35
40
  }
36
- export default function BrowserClose({ args: [sessionName] }) {
41
+ export default function BrowserClose({ options }) {
37
42
  const { exit } = useApp();
38
43
  useEffect(() => {
39
- runBrowserClose(sessionName)
44
+ runBrowserClose(options.sessionName, options.all)
40
45
  .catch((err) => {
41
46
  p.log.error(`Failed to close browser: ${err instanceof Error ? err.message : 'Unknown error'}`);
42
47
  })
43
48
  .finally(() => {
44
49
  setTimeout(() => exit(), 100);
45
50
  });
46
- }, [sessionName, exit]);
51
+ }, [options.sessionName, options.all, exit]);
47
52
  return null;
48
53
  }
49
54
  //# sourceMappingURL=close.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"close.js","sourceRoot":"","sources":["../../../src/commands/browser/close.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE1F,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;IAC7B,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;CAC9C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAOtC,KAAK,UAAU,eAAe,CAAC,WAAmB;IACjD,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAE3C,MAAM,SAAS,GAAG,MAAM,uBAAuB,EAAE,CAAC;IAElD,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;QACtF,OAAO;IACR,CAAC;IAED,0BAA0B;IAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,WAAW,uEAAuE,CAAC,CAAC;QAC9G,OAAO;IACR,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,oBAAoB,WAAW,MAAM,CAAC,CAAC;IAEvD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;IAE/C,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,yBAAyB,CAAC,CAAC;QACxD,OAAO;IACR,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,WAAW,GAAG,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAS;IAClE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,SAAS,CAAC,GAAG,EAAE;QACd,eAAe,CAAC,WAAW,CAAC;aAC1B,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACd,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACjG,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACb,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;IAExB,OAAO,IAAI,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"close.js","sourceRoot":"","sources":["../../../src/commands/browser/close.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
1
  import zod from 'zod';
2
- export declare const args: zod.ZodTuple<[zod.ZodString, zod.ZodString], zod.ZodString>;
3
- export declare const options: zod.ZodObject<{}, zod.core.$strip>;
2
+ export declare const args: zod.ZodTuple<[zod.ZodString], zod.ZodString>;
3
+ export declare const options: zod.ZodObject<{
4
+ sessionName: zod.ZodDefault<zod.ZodOptional<zod.ZodString>>;
5
+ }, zod.core.$strip>;
4
6
  type Props = {
5
7
  args: zod.infer<typeof args>;
6
8
  options: zod.infer<typeof options>;
7
9
  };
8
- export default function BrowserCommand({ args: [sessionName, command, ...commandArgs] }: Props): null;
10
+ export default function BrowserCommand({ args: [command, ...commandArgs], options }: Props): null;
9
11
  export {};
10
12
  //# sourceMappingURL=command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/command.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,eAAO,MAAM,IAAI,6DAGkC,CAAC;AAEpD,eAAO,MAAM,OAAO,oCAAiB,CAAC;AAEtC,KAAK,KAAK,GAAG;IACZ,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACnC,CAAC;AA2CF,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,EAAE,EAAE,KAAK,QAc7F"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/command.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,eAAO,MAAM,IAAI,8CAEkC,CAAC;AAEpD,eAAO,MAAM,OAAO;;mBAElB,CAAC;AAEH,KAAK,KAAK,GAAG;IACZ,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACnC,CAAC;AAmCF,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,QAczF"}
@@ -3,19 +3,20 @@ import { useApp } from 'ink';
3
3
  import * as p from '@clack/prompts';
4
4
  import chalk from 'chalk';
5
5
  import zod from 'zod';
6
- import { isAgentBrowserInstalled, browserCommand, getSession, isBlockedCommand } from '../../utils/agent-browser.js';
6
+ import { isBrowserUseInstalled, browserCommand, isBlockedCommand } from '../../utils/browser-use.js';
7
7
  export const args = zod.tuple([
8
- zod.string().describe('Session name'),
9
8
  zod.string().describe('Command to run'),
10
9
  ]).rest(zod.string().describe('Command arguments'));
11
- export const options = zod.object({});
10
+ export const options = zod.object({
11
+ sessionName: zod.string().optional().default('default').describe('Session name to use (default: default)'),
12
+ });
12
13
  async function runBrowserCommand(sessionName, command, commandArgs) {
13
14
  const spinner = p.spinner();
14
- spinner.start('Checking agent-browser...');
15
- const installed = await isAgentBrowserInstalled();
15
+ spinner.start('Checking browser-use...');
16
+ const installed = await isBrowserUseInstalled();
16
17
  if (!installed) {
17
18
  spinner.stop(chalk.red('Not installed'));
18
- p.log.error('agent-browser is not installed. Run `corebrain browser install` first.');
19
+ p.log.error('browser-use is not installed. Run `corebrain browser install` first.');
19
20
  return;
20
21
  }
21
22
  // Check if command is blocked
@@ -24,13 +25,6 @@ async function runBrowserCommand(sessionName, command, commandArgs) {
24
25
  p.log.error(`Command "${command}" is blocked. Use \`corebrain browser open\` or \`corebrain browser close\` for open/close operations.`);
25
26
  return;
26
27
  }
27
- // Check if session exists
28
- const session = getSession(sessionName);
29
- if (!session) {
30
- spinner.stop(chalk.yellow('Session not found'));
31
- p.log.error(`Session "${sessionName}" not found. Use \`corebrain browser open\` to create a session first.`);
32
- return;
33
- }
34
28
  spinner.message(`Running: ${command} ${commandArgs.join(' ')} on session "${sessionName}"`);
35
29
  const result = await browserCommand(sessionName, command, commandArgs);
36
30
  spinner.stop(result.code === 0 ? chalk.green('Command completed') : chalk.yellow(`Exit code: ${result.code}`));
@@ -41,17 +35,17 @@ async function runBrowserCommand(sessionName, command, commandArgs) {
41
35
  console.error(chalk.red(result.stderr));
42
36
  }
43
37
  }
44
- export default function BrowserCommand({ args: [sessionName, command, ...commandArgs] }) {
38
+ export default function BrowserCommand({ args: [command, ...commandArgs], options }) {
45
39
  const { exit } = useApp();
46
40
  useEffect(() => {
47
- runBrowserCommand(sessionName, command, commandArgs)
41
+ runBrowserCommand(options.sessionName, command, commandArgs)
48
42
  .catch((err) => {
49
43
  p.log.error(err instanceof Error ? err.message : 'Unknown error');
50
44
  })
51
45
  .finally(() => {
52
46
  setTimeout(() => exit(), 100);
53
47
  });
54
- }, [sessionName, command, commandArgs, exit]);
48
+ }, [options.sessionName, command, commandArgs, exit]);
55
49
  return null;
56
50
  }
57
51
  //# sourceMappingURL=command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/commands/browser/command.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/commands/browser/command.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import zod from 'zod';
2
+ export declare const args: zod.ZodTuple<[zod.ZodString], null>;
3
+ export declare const options: zod.ZodObject<{}, zod.core.$strip>;
4
+ type Props = {
5
+ args: zod.infer<typeof args>;
6
+ options: zod.infer<typeof options>;
7
+ };
8
+ export default function BrowserDeleteSession({ args: [name] }: Props): null;
9
+ export {};
10
+ //# sourceMappingURL=delete-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-session.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/delete-session.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,eAAO,MAAM,IAAI,qCAA+D,CAAC;AAEjF,eAAO,MAAM,OAAO,oCAAiB,CAAC;AAEtC,KAAK,KAAK,GAAG;IACZ,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACnC,CAAC;AA4BF,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,QAcnE"}
@@ -0,0 +1,41 @@
1
+ import { useEffect } from 'react';
2
+ import { useApp } from 'ink';
3
+ import * as p from '@clack/prompts';
4
+ import chalk from 'chalk';
5
+ import zod from 'zod';
6
+ import { browserClose, isBrowserUseInstalled } from '../../utils/browser-use.js';
7
+ export const args = zod.tuple([zod.string().describe('Session name to delete')]);
8
+ export const options = zod.object({});
9
+ async function runDeleteSession(name) {
10
+ const spinner = p.spinner();
11
+ spinner.start('Checking browser-use...');
12
+ const installed = await isBrowserUseInstalled();
13
+ if (!installed) {
14
+ spinner.stop(chalk.red('Not installed'));
15
+ p.log.error('browser-use is not installed. Run `corebrain browser install` first.');
16
+ return;
17
+ }
18
+ spinner.message(`Closing and removing session "${name}"...`);
19
+ // browser-use manages session cleanup when closing
20
+ const result = await browserClose(name);
21
+ if (result.code !== 0) {
22
+ spinner.stop(chalk.red('Failed to delete session'));
23
+ p.log.error(result.stderr || 'Failed to delete session');
24
+ return;
25
+ }
26
+ spinner.stop(chalk.green(`Session "${name}" deleted`));
27
+ }
28
+ export default function BrowserDeleteSession({ args: [name] }) {
29
+ const { exit } = useApp();
30
+ useEffect(() => {
31
+ runDeleteSession(name)
32
+ .catch((err) => {
33
+ p.log.error(`Failed to delete session: ${err instanceof Error ? err.message : 'Unknown error'}`);
34
+ })
35
+ .finally(() => {
36
+ setTimeout(() => exit(), 100);
37
+ });
38
+ }, [name, exit]);
39
+ return null;
40
+ }
41
+ //# sourceMappingURL=delete-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-session.js","sourceRoot":"","sources":["../../../src/commands/browser/delete-session.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE1E,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAEjF,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAOtC,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAEzC,MAAM,SAAS,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAEhD,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACpF,OAAO;IACR,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,iCAAiC,IAAI,MAAM,CAAC,CAAC;IAE7D,mDAAmD;IACnD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IAExC,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,0BAA0B,CAAC,CAAC;QACzD,OAAO;IACR,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,IAAI,WAAW,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAS;IACnE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,SAAS,CAAC,GAAG,EAAE;QACd,gBAAgB,CAAC,IAAI,CAAC;aACpB,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACd,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAClG,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACb,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAEjB,OAAO,IAAI,CAAC;AACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/install.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,eAAO,MAAM,OAAO,oCAAiB,CAAC;AAEtC,KAAK,KAAK,GAAG;IACZ,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACnC,CAAC;AA0BF,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,MAAM,EAAE,KAAK,QAcnD"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/install.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAOtB,eAAO,MAAM,OAAO,oCAAiB,CAAC;AAEtC,KAAK,KAAK,GAAG;IACZ,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACnC,CAAC;AAgEF,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,MAAM,EAAE,KAAK,QAkBnD"}
@@ -3,31 +3,63 @@ import { useApp } from 'ink';
3
3
  import * as p from '@clack/prompts';
4
4
  import chalk from 'chalk';
5
5
  import zod from 'zod';
6
- import { isAgentBrowserInstalled, installAgentBrowser } from '../../utils/agent-browser.js';
6
+ import { isBrowserUseInstalled, installBrowserUse, runBrowserUseDoctor, } from '../../utils/browser-use.js';
7
7
  export const options = zod.object({});
8
8
  async function runBrowserInstall() {
9
9
  const spinner = p.spinner();
10
- spinner.start('Checking if agent-browser is installed...');
11
- const installed = await isAgentBrowserInstalled();
10
+ spinner.start('Checking if browser-use is installed...');
11
+ const installed = await isBrowserUseInstalled();
12
12
  if (installed) {
13
- spinner.stop(chalk.green('agent-browser is already installed'));
13
+ spinner.stop(chalk.green('browser-use is already installed'));
14
+ // Run doctor to validate installation
15
+ const doctorSpinner = p.spinner();
16
+ doctorSpinner.start('Running browser-use doctor...');
17
+ const doctorResult = await runBrowserUseDoctor();
18
+ if (doctorResult.code === 0) {
19
+ doctorSpinner.stop(chalk.green('Installation validated'));
20
+ if (doctorResult.stdout) {
21
+ console.log(doctorResult.stdout);
22
+ }
23
+ }
24
+ else {
25
+ doctorSpinner.stop(chalk.yellow('Doctor reported issues'));
26
+ if (doctorResult.stdout) {
27
+ console.log(doctorResult.stdout);
28
+ }
29
+ if (doctorResult.stderr) {
30
+ console.error(chalk.red(doctorResult.stderr));
31
+ }
32
+ }
14
33
  return;
15
34
  }
16
- spinner.message('Installing agent-browser globally via npm...');
17
- const result = await installAgentBrowser();
35
+ spinner.message('Installing browser-use...');
36
+ const result = await installBrowserUse();
18
37
  if (result.code !== 0) {
19
38
  spinner.stop(chalk.red('Installation failed'));
20
39
  p.log.error(result.stderr || 'Installation failed');
21
40
  return;
22
41
  }
23
- spinner.stop(chalk.green('agent-browser installed successfully'));
42
+ spinner.stop(chalk.green('browser-use installed successfully'));
43
+ // Run doctor to validate
44
+ const doctorSpinner = p.spinner();
45
+ doctorSpinner.start('Validating installation with browser-use doctor...');
46
+ const doctorResult = await runBrowserUseDoctor();
47
+ if (doctorResult.code === 0) {
48
+ doctorSpinner.stop(chalk.green('Installation validated'));
49
+ }
50
+ else {
51
+ doctorSpinner.stop(chalk.yellow('Doctor reported issues - you may need to fix these manually'));
52
+ if (doctorResult.stdout) {
53
+ console.log(doctorResult.stdout);
54
+ }
55
+ }
24
56
  }
25
57
  export default function BrowserInstall(_props) {
26
58
  const { exit } = useApp();
27
59
  useEffect(() => {
28
60
  runBrowserInstall()
29
- .catch((err) => {
30
- p.log.error(`Failed to install agent-browser: ${err instanceof Error ? err.message : 'Unknown error'}`);
61
+ .catch(err => {
62
+ p.log.error(`Failed to install browser-use: ${err instanceof Error ? err.message : 'Unknown error'}`);
31
63
  })
32
64
  .finally(() => {
33
65
  setTimeout(() => exit(), 100);
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/browser/install.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAErF,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAMtC,KAAK,UAAU,iBAAiB;IAC/B,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAE3D,MAAM,SAAS,GAAG,MAAM,uBAAuB,EAAE,CAAC;IAElD,IAAI,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAChE,OAAO;IACR,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;IAEhE,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAE3C,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,qBAAqB,CAAC,CAAC;QACpD,OAAO;IACR,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,MAAa;IACnD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,SAAS,CAAC,GAAG,EAAE;QACd,iBAAiB,EAAE;aACjB,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACd,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACzG,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACb,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,IAAI,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/browser/install.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import zod from 'zod';
2
+ export declare const options: zod.ZodObject<{}, zod.core.$strip>;
3
+ type Props = {
4
+ options: zod.infer<typeof options>;
5
+ };
6
+ export default function BrowserListSessions(_props: Props): null;
7
+ export {};
8
+ //# sourceMappingURL=list-sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-sessions.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/list-sessions.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,eAAO,MAAM,OAAO,oCAAiB,CAAC;AAEtC,KAAK,KAAK,GAAG;IACZ,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACnC,CAAC;AAoCF,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,MAAM,EAAE,KAAK,QAcxD"}
@@ -0,0 +1,46 @@
1
+ import { useEffect } from 'react';
2
+ import { useApp } from 'ink';
3
+ import * as p from '@clack/prompts';
4
+ import chalk from 'chalk';
5
+ import zod from 'zod';
6
+ import { browserGetSessions, isBrowserUseInstalled } from '../../utils/browser-use.js';
7
+ export const options = zod.object({});
8
+ async function runListSessions() {
9
+ const spinner = p.spinner();
10
+ spinner.start('Fetching sessions...');
11
+ const installed = await isBrowserUseInstalled();
12
+ if (!installed) {
13
+ spinner.stop(chalk.red('Not installed'));
14
+ p.log.error('browser-use is not installed. Run `corebrain browser install` first.');
15
+ return;
16
+ }
17
+ const sessions = await browserGetSessions();
18
+ spinner.stop(chalk.green('Sessions retrieved'));
19
+ if (sessions.length === 0) {
20
+ p.log.info('No active sessions found.');
21
+ p.log.info('Run `corebrain browser open <url> --session-name <name>` to create a session.');
22
+ return;
23
+ }
24
+ const lines = [
25
+ `${chalk.bold('Active Sessions:')} ${chalk.green(`${sessions.length} found`)}`,
26
+ '',
27
+ ];
28
+ for (const session of sessions) {
29
+ lines.push(` ${chalk.dim('•')} ${chalk.cyan(session)}`);
30
+ }
31
+ p.note(lines.join('\n'), 'Browser Sessions');
32
+ }
33
+ export default function BrowserListSessions(_props) {
34
+ const { exit } = useApp();
35
+ useEffect(() => {
36
+ runListSessions()
37
+ .catch((err) => {
38
+ p.log.error(err instanceof Error ? err.message : 'Unknown error');
39
+ })
40
+ .finally(() => {
41
+ setTimeout(() => exit(), 100);
42
+ });
43
+ }, [exit]);
44
+ return null;
45
+ }
46
+ //# sourceMappingURL=list-sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-sessions.js","sourceRoot":"","sources":["../../../src/commands/browser/list-sessions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAMtC,KAAK,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAEtC,MAAM,SAAS,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAEhD,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACpF,OAAO;IACR,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAE5C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAEhD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;QAC5F,OAAO;IACR,CAAC;IAED,MAAM,KAAK,GAAa;QACvB,GAAG,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,QAAQ,CAAC,EAAE;QAC9E,EAAE;KACF,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,MAAa;IACxD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,SAAS,CAAC,GAAG,EAAE;QACd,eAAe,EAAE;aACf,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACd,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QACnE,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACb,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,IAAI,CAAC;AACb,CAAC"}
@@ -0,0 +1,8 @@
1
+ import zod from 'zod';
2
+ export declare const options: zod.ZodObject<{}, zod.core.$strip>;
3
+ type Props = {
4
+ options: zod.infer<typeof options>;
5
+ };
6
+ export default function BrowserOpenHead(_props: Props): null;
7
+ export {};
8
+ //# sourceMappingURL=open-head.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-head.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/open-head.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAStB,eAAO,MAAM,OAAO,oCAAiB,CAAC;AAEtC,KAAK,KAAK,GAAG;IACZ,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACnC,CAAC;AA+DF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,MAAM,EAAE,KAAK,QAgBpD"}
@@ -0,0 +1,68 @@
1
+ import { useEffect } from 'react';
2
+ import { useApp } from 'ink';
3
+ import * as p from '@clack/prompts';
4
+ import chalk from 'chalk';
5
+ import zod from 'zod';
6
+ import { isBrowserUseInstalled, browserOpen, browserGetSessions, } from '../../utils/browser-use.js';
7
+ const DEFAULT_URL = 'https://app.getcore.me';
8
+ export const options = zod.object({});
9
+ async function runOpenHead() {
10
+ const spinner = p.spinner();
11
+ spinner.start('Checking browser-use...');
12
+ const installed = await isBrowserUseInstalled();
13
+ if (!installed) {
14
+ spinner.stop(chalk.red('Not installed'));
15
+ p.log.error('browser-use is not installed. Run `corebrain browser install` first.');
16
+ return;
17
+ }
18
+ spinner.stop(chalk.green('Ready'));
19
+ // Get available sessions
20
+ let sessions = await browserGetSessions();
21
+ // Add default session options if no sessions exist
22
+ if (sessions.length === 0) {
23
+ sessions = ['personal', 'work'];
24
+ }
25
+ else {
26
+ // Add common options if not already present
27
+ if (!sessions.includes('personal'))
28
+ sessions.push('personal');
29
+ if (!sessions.includes('work'))
30
+ sessions.push('work');
31
+ }
32
+ // Show session selector
33
+ const selectedSession = await p.select({
34
+ message: 'Select a session to use:',
35
+ options: sessions.map(session => ({
36
+ value: session,
37
+ label: session,
38
+ })),
39
+ });
40
+ if (p.isCancel(selectedSession)) {
41
+ p.log.info('Cancelled');
42
+ return;
43
+ }
44
+ const openSpinner = p.spinner();
45
+ openSpinner.start(`Opening ${DEFAULT_URL} with session "${selectedSession}" (headed)...`);
46
+ // Open in headed mode
47
+ const result = await browserOpen(DEFAULT_URL, selectedSession, true);
48
+ if (result.code !== 0) {
49
+ openSpinner.stop(chalk.red('Failed to open browser'));
50
+ p.log.error(result.stderr || 'Failed to open browser');
51
+ return;
52
+ }
53
+ openSpinner.stop(chalk.green(`Opened ${DEFAULT_URL} (session: ${selectedSession}, headed)`));
54
+ }
55
+ export default function BrowserOpenHead(_props) {
56
+ const { exit } = useApp();
57
+ useEffect(() => {
58
+ runOpenHead()
59
+ .catch(err => {
60
+ p.log.error(`Failed: ${err instanceof Error ? err.message : 'Unknown error'}`);
61
+ })
62
+ .finally(() => {
63
+ setTimeout(() => exit(), 100);
64
+ });
65
+ }, [exit]);
66
+ return null;
67
+ }
68
+ //# sourceMappingURL=open-head.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-head.js","sourceRoot":"","sources":["../../../src/commands/browser/open-head.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAChC,OAAO,EAAC,MAAM,EAAC,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EACN,qBAAqB,EACrB,WAAW,EACX,kBAAkB,GAClB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAE7C,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAMtC,KAAK,UAAU,WAAW;IACzB,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAEzC,MAAM,SAAS,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAEhD,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,GAAG,CAAC,KAAK,CACV,sEAAsE,CACtE,CAAC;QACF,OAAO;IACR,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAEnC,yBAAyB;IACzB,IAAI,QAAQ,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAE1C,mDAAmD;IACnD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,QAAQ,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACP,4CAA4C;QAC5C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,wBAAwB;IACxB,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC;QACtC,OAAO,EAAE,0BAA0B;QACnC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACjC,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,OAAO;SACd,CAAC,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxB,OAAO;IACR,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAChC,WAAW,CAAC,KAAK,CAChB,WAAW,WAAW,kBAAkB,eAAe,eAAe,CACtE,CAAC;IAEF,sBAAsB;IACtB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IAErE,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,wBAAwB,CAAC,CAAC;QACvD,OAAO;IACR,CAAC;IAED,WAAW,CAAC,IAAI,CACf,KAAK,CAAC,KAAK,CAAC,UAAU,WAAW,cAAc,eAAe,WAAW,CAAC,CAC1E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,MAAa;IACpD,MAAM,EAAC,IAAI,EAAC,GAAG,MAAM,EAAE,CAAC;IAExB,SAAS,CAAC,GAAG,EAAE;QACd,WAAW,EAAE;aACX,KAAK,CAAC,GAAG,CAAC,EAAE;YACZ,CAAC,CAAC,GAAG,CAAC,KAAK,CACV,WAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACjE,CAAC;QACH,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACb,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,IAAI,CAAC;AACb,CAAC"}
@@ -1,12 +1,12 @@
1
1
  import zod from 'zod';
2
- export declare const args: zod.ZodTuple<[zod.ZodString, zod.ZodString], null>;
2
+ export declare const args: zod.ZodTuple<[zod.ZodString], null>;
3
3
  export declare const options: zod.ZodObject<{
4
- profile: zod.ZodDefault<zod.ZodOptional<zod.ZodString>>;
4
+ sessionName: zod.ZodDefault<zod.ZodOptional<zod.ZodString>>;
5
5
  }, zod.core.$strip>;
6
6
  type Props = {
7
7
  args: zod.infer<typeof args>;
8
8
  options: zod.infer<typeof options>;
9
9
  };
10
- export default function BrowserOpen({ args: [sessionName, url], options }: Props): null;
10
+ export default function BrowserOpen({ args: [url], options }: Props): null;
11
11
  export {};
12
12
  //# sourceMappingURL=open.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/open.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,eAAO,MAAM,IAAI,oDAGf,CAAC;AAEH,eAAO,MAAM,OAAO;;mBAElB,CAAC;AAEH,KAAK,KAAK,GAAG;IACZ,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACnC,CAAC;AAqCF,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,QAc/E"}
1
+ {"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/open.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,eAAO,MAAM,IAAI,qCAAoD,CAAC;AAEtE,eAAO,MAAM,OAAO;;mBAMlB,CAAC;AAEH,KAAK,KAAK,GAAG;IACZ,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACnC,CAAC;AA6BF,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAC,EAAE,KAAK,QAkBhE"}
@@ -3,51 +3,44 @@ import { useApp } from 'ink';
3
3
  import * as p from '@clack/prompts';
4
4
  import chalk from 'chalk';
5
5
  import zod from 'zod';
6
- import { isAgentBrowserInstalled, browserOpen, canCreateSession, getSession } from '../../utils/agent-browser.js';
7
- export const args = zod.tuple([
8
- zod.string().describe('Session name'),
9
- zod.string().describe('URL to open'),
10
- ]);
6
+ import { isBrowserUseInstalled, browserOpen } from '../../utils/browser-use.js';
7
+ export const args = zod.tuple([zod.string().describe('URL to open')]);
11
8
  export const options = zod.object({
12
- profile: zod.string().optional().default('corebrain').describe('Browser profile to use (default: corebrain)'),
9
+ sessionName: zod
10
+ .string()
11
+ .optional()
12
+ .default('default')
13
+ .describe('Session name for persistence (default: default)'),
13
14
  });
14
- async function runBrowserOpen(sessionName, url, profile) {
15
+ async function runBrowserOpen(url, sessionName) {
15
16
  const spinner = p.spinner();
16
- spinner.start('Checking agent-browser...');
17
- const installed = await isAgentBrowserInstalled();
17
+ spinner.start('Checking browser-use...');
18
+ const installed = await isBrowserUseInstalled();
18
19
  if (!installed) {
19
20
  spinner.stop(chalk.red('Not installed'));
20
- p.log.error('agent-browser is not installed. Run `corebrain browser install` first.');
21
+ p.log.error('browser-use is not installed. Run `corebrain browser install` first.');
21
22
  return;
22
23
  }
23
- // Check session limit
24
- const { allowed, count } = canCreateSession();
25
- const existingSession = getSession(sessionName);
26
- if (!existingSession && !allowed) {
27
- spinner.stop(chalk.red('Session limit reached'));
28
- p.log.error(`Maximum 3 sessions allowed. Currently running: ${count}. Close a session first.`);
29
- return;
30
- }
31
- spinner.message(`Opening ${url} in session "${sessionName}"...`);
32
- const result = await browserOpen(sessionName, url, profile);
24
+ spinner.message(`Opening ${url} with session "${sessionName}"...`);
25
+ const result = await browserOpen(url, sessionName);
33
26
  if (result.code !== 0) {
34
27
  spinner.stop(chalk.red('Failed to open URL'));
35
28
  p.log.error(result.stderr || 'Failed to open URL');
36
29
  return;
37
30
  }
38
- spinner.stop(chalk.green(`Opened ${url} in session "${sessionName}" (profile: ${profile})`));
31
+ spinner.stop(chalk.green(`Opened ${url} (session: ${sessionName})`));
39
32
  }
40
- export default function BrowserOpen({ args: [sessionName, url], options }) {
33
+ export default function BrowserOpen({ args: [url], options }) {
41
34
  const { exit } = useApp();
42
35
  useEffect(() => {
43
- runBrowserOpen(sessionName, url, options.profile)
44
- .catch((err) => {
36
+ runBrowserOpen(url, options.sessionName)
37
+ .catch(err => {
45
38
  p.log.error(`Failed to open URL: ${err instanceof Error ? err.message : 'Unknown error'}`);
46
39
  })
47
40
  .finally(() => {
48
41
  setTimeout(() => exit(), 100);
49
42
  });
50
- }, [sessionName, url, options.profile, exit]);
43
+ }, [url, options.sessionName, exit]);
51
44
  return null;
52
45
  }
53
46
  //# sourceMappingURL=open.js.map