@redplanethq/corebrain 2.1.0 → 2.3.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 (98) hide show
  1. package/dist/commands/browser/close.d.ts +1 -1
  2. package/dist/commands/browser/close.d.ts.map +1 -1
  3. package/dist/commands/browser/close.js +39 -50
  4. package/dist/commands/browser/close.js.map +1 -1
  5. package/dist/commands/browser/command.d.ts +1 -1
  6. package/dist/commands/browser/command.d.ts.map +1 -1
  7. package/dist/commands/browser/command.js +46 -56
  8. package/dist/commands/browser/command.js.map +1 -1
  9. package/dist/commands/browser/create-profile.d.ts +1 -1
  10. package/dist/commands/browser/create-profile.d.ts.map +1 -1
  11. package/dist/commands/browser/create-profile.js +27 -21
  12. package/dist/commands/browser/create-profile.js.map +1 -1
  13. package/dist/commands/browser/delete-profile.d.ts +1 -1
  14. package/dist/commands/browser/delete-profile.d.ts.map +1 -1
  15. package/dist/commands/browser/delete-profile.js +26 -19
  16. package/dist/commands/browser/delete-profile.js.map +1 -1
  17. package/dist/commands/browser/install.d.ts +1 -1
  18. package/dist/commands/browser/install.d.ts.map +1 -1
  19. package/dist/commands/browser/install.js +31 -42
  20. package/dist/commands/browser/install.js.map +1 -1
  21. package/dist/commands/browser/open.d.ts +1 -1
  22. package/dist/commands/browser/open.d.ts.map +1 -1
  23. package/dist/commands/browser/open.js +40 -52
  24. package/dist/commands/browser/open.js.map +1 -1
  25. package/dist/commands/browser/status.d.ts +1 -1
  26. package/dist/commands/browser/status.d.ts.map +1 -1
  27. package/dist/commands/browser/status.js +36 -41
  28. package/dist/commands/browser/status.js.map +1 -1
  29. package/dist/commands/coding/config.d.ts +1 -1
  30. package/dist/commands/coding/config.d.ts.map +1 -1
  31. package/dist/commands/coding/config.js +95 -98
  32. package/dist/commands/coding/config.js.map +1 -1
  33. package/dist/commands/coding/remove.d.ts +1 -1
  34. package/dist/commands/coding/remove.d.ts.map +1 -1
  35. package/dist/commands/coding/remove.js +26 -28
  36. package/dist/commands/coding/remove.js.map +1 -1
  37. package/dist/commands/coding/setup.d.ts +1 -1
  38. package/dist/commands/coding/setup.d.ts.map +1 -1
  39. package/dist/commands/coding/setup.js +56 -71
  40. package/dist/commands/coding/setup.js.map +1 -1
  41. package/dist/commands/exec/config.d.ts +1 -1
  42. package/dist/commands/exec/config.d.ts.map +1 -1
  43. package/dist/commands/exec/config.js +71 -66
  44. package/dist/commands/exec/config.js.map +1 -1
  45. package/dist/commands/gateway/config.d.ts +9 -2
  46. package/dist/commands/gateway/config.d.ts.map +1 -1
  47. package/dist/commands/gateway/config.js +419 -156
  48. package/dist/commands/gateway/config.js.map +1 -1
  49. package/dist/commands/gateway/off.d.ts +1 -1
  50. package/dist/commands/gateway/off.d.ts.map +1 -1
  51. package/dist/commands/gateway/off.js +53 -63
  52. package/dist/commands/gateway/off.js.map +1 -1
  53. package/dist/commands/gateway/on.d.ts +1 -1
  54. package/dist/commands/gateway/on.d.ts.map +1 -1
  55. package/dist/commands/gateway/on.js +88 -117
  56. package/dist/commands/gateway/on.js.map +1 -1
  57. package/dist/commands/gateway/restart.d.ts +1 -1
  58. package/dist/commands/gateway/restart.d.ts.map +1 -1
  59. package/dist/commands/gateway/restart.js +49 -63
  60. package/dist/commands/gateway/restart.js.map +1 -1
  61. package/dist/commands/gateway/status.d.ts +1 -1
  62. package/dist/commands/gateway/status.d.ts.map +1 -1
  63. package/dist/commands/gateway/status.js +62 -76
  64. package/dist/commands/gateway/status.js.map +1 -1
  65. package/dist/commands/gateway/uninstall.d.ts +1 -1
  66. package/dist/commands/gateway/uninstall.d.ts.map +1 -1
  67. package/dist/commands/gateway/uninstall.js +60 -72
  68. package/dist/commands/gateway/uninstall.js.map +1 -1
  69. package/dist/commands/login.d.ts +1 -1
  70. package/dist/commands/login.d.ts.map +1 -1
  71. package/dist/commands/login.js +99 -108
  72. package/dist/commands/login.js.map +1 -1
  73. package/dist/commands/logout.d.ts +1 -1
  74. package/dist/commands/logout.d.ts.map +1 -1
  75. package/dist/commands/logout.js +24 -45
  76. package/dist/commands/logout.js.map +1 -1
  77. package/dist/commands/me.d.ts +1 -1
  78. package/dist/commands/me.d.ts.map +1 -1
  79. package/dist/commands/me.js +40 -50
  80. package/dist/commands/me.js.map +1 -1
  81. package/dist/commands/token.d.ts +1 -1
  82. package/dist/commands/token.d.ts.map +1 -1
  83. package/dist/commands/token.js +19 -24
  84. package/dist/commands/token.js.map +1 -1
  85. package/dist/components/error-message.js +0 -1
  86. package/dist/components/error-message.js.map +1 -1
  87. package/dist/components/warning-message.js +0 -1
  88. package/dist/components/warning-message.js.map +1 -1
  89. package/dist/server/gateway-client.d.ts +4 -0
  90. package/dist/server/gateway-client.d.ts.map +1 -1
  91. package/dist/server/gateway-client.js +45 -6
  92. package/dist/server/gateway-client.js.map +1 -1
  93. package/dist/server/tools/exec-tools.d.ts.map +1 -1
  94. package/dist/server/tools/exec-tools.js +9 -0
  95. package/dist/server/tools/exec-tools.js.map +1 -1
  96. package/dist/types/config.d.ts +15 -0
  97. package/dist/types/config.d.ts.map +1 -1
  98. package/package.json +6 -3
@@ -5,6 +5,6 @@ type Props = {
5
5
  args: zod.infer<typeof args>;
6
6
  options: zod.infer<typeof options>;
7
7
  };
8
- export default function BrowserClose({ args: [sessionName] }: Props): import("react/jsx-runtime").JSX.Element;
8
+ export default function BrowserClose({ args: [sessionName] }: Props): null;
9
9
  export {};
10
10
  //# sourceMappingURL=close.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"close.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/close.tsx"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,KAAK,CAAC;AAOtB,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;AAEF,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,2CAsElE"}
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,60 +1,49 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useState } from 'react';
3
- import { Text } from 'ink';
1
+ import { useEffect } from 'react';
2
+ import { useApp } from 'ink';
3
+ import * as p from '@clack/prompts';
4
+ import chalk from 'chalk';
4
5
  import zod from 'zod';
5
- import { ThemeContext } from '../../hooks/useTheme.js';
6
- import { themeContextValue } from '../../config/themes.js';
7
- import SuccessMessage from '../../components/success-message.js';
8
- import ErrorMessage from '../../components/error-message.js';
9
6
  import { isAgentBrowserInstalled, browserClose, getSession } from '../../utils/agent-browser.js';
10
7
  export const args = zod.tuple([
11
8
  zod.string().describe('Session name to close'),
12
9
  ]);
13
10
  export const options = zod.object({});
11
+ async function runBrowserClose(sessionName) {
12
+ const spinner = p.spinner();
13
+ spinner.start('Checking agent-browser...');
14
+ const installed = await isAgentBrowserInstalled();
15
+ if (!installed) {
16
+ spinner.stop(chalk.red('Not installed'));
17
+ p.log.error('agent-browser is not installed. Run `corebrain browser install` first.');
18
+ return;
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.`);
25
+ return;
26
+ }
27
+ spinner.message(`Closing session "${sessionName}"...`);
28
+ const result = await browserClose(sessionName);
29
+ if (result.code !== 0) {
30
+ spinner.stop(chalk.red('Failed to close browser'));
31
+ p.log.error(result.stderr || 'Failed to close browser');
32
+ return;
33
+ }
34
+ spinner.stop(chalk.green(`Closed session "${sessionName}"`));
35
+ }
14
36
  export default function BrowserClose({ args: [sessionName] }) {
15
- const [status, setStatus] = useState('checking');
16
- const [error, setError] = useState('');
37
+ const { exit } = useApp();
17
38
  useEffect(() => {
18
- let cancelled = false;
19
- (async () => {
20
- try {
21
- const installed = await isAgentBrowserInstalled();
22
- if (!installed) {
23
- if (!cancelled) {
24
- setStatus('not-installed');
25
- }
26
- return;
27
- }
28
- // Check if session exists
29
- const session = getSession(sessionName);
30
- if (!session) {
31
- if (!cancelled) {
32
- setStatus('not-found');
33
- }
34
- return;
35
- }
36
- if (!cancelled) {
37
- setStatus('closing');
38
- }
39
- const result = await browserClose(sessionName);
40
- if (result.code !== 0) {
41
- throw new Error(result.stderr || 'Failed to close browser');
42
- }
43
- if (!cancelled) {
44
- setStatus('success');
45
- }
46
- }
47
- catch (err) {
48
- if (!cancelled) {
49
- setError(err instanceof Error ? err.message : 'Unknown error');
50
- setStatus('error');
51
- }
52
- }
53
- })();
54
- return () => {
55
- cancelled = true;
56
- };
57
- }, [sessionName]);
58
- return (_jsx(ThemeContext.Provider, { value: themeContextValue, children: status === 'checking' ? (_jsx(Text, { dimColor: true, children: "Checking agent-browser..." })) : status === 'not-installed' ? (_jsx(ErrorMessage, { message: "agent-browser is not installed. Run `corebrain browser install` first." })) : status === 'not-found' ? (_jsx(ErrorMessage, { message: `Session "${sessionName}" not found. Use \`corebrain browser status\` to see active sessions.` })) : status === 'closing' ? (_jsxs(Text, { dimColor: true, children: ["Closing session \"", sessionName, "\"..."] })) : status === 'success' ? (_jsx(SuccessMessage, { message: `Closed session "${sessionName}"`, hideTitle: true })) : status === 'error' ? (_jsx(ErrorMessage, { message: `Failed to close browser: ${error}` })) : null }));
39
+ runBrowserClose(sessionName)
40
+ .catch((err) => {
41
+ p.log.error(`Failed to close browser: ${err instanceof Error ? err.message : 'Unknown error'}`);
42
+ })
43
+ .finally(() => {
44
+ setTimeout(() => exit(), 100);
45
+ });
46
+ }, [sessionName, exit]);
47
+ return null;
59
48
  }
60
49
  //# 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,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,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,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAS;IAClE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAA+E,UAAU,CAAC,CAAC;IAC/H,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEvC,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,CAAC,KAAK,IAAI,EAAE;YACX,IAAI,CAAC;gBACJ,MAAM,SAAS,GAAG,MAAM,uBAAuB,EAAE,CAAC;gBAElD,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChB,IAAI,CAAC,SAAS,EAAE,CAAC;wBAChB,SAAS,CAAC,eAAe,CAAC,CAAC;oBAC5B,CAAC;oBACD,OAAO;gBACR,CAAC;gBAED,0BAA0B;gBAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;gBACxC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACd,IAAI,CAAC,SAAS,EAAE,CAAC;wBAChB,SAAS,CAAC,WAAW,CAAC,CAAC;oBACxB,CAAC;oBACD,OAAO;gBACR,CAAC;gBAED,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChB,SAAS,CAAC,SAAS,CAAC,CAAC;gBACtB,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;gBAE/C,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBACvB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,yBAAyB,CAAC,CAAC;gBAC7D,CAAC;gBAED,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChB,SAAS,CAAC,SAAS,CAAC,CAAC;gBACtB,CAAC;YACF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChB,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;oBAC/D,SAAS,CAAC,OAAO,CAAC,CAAC;gBACpB,CAAC;YACF,CAAC;QACF,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,GAAG,EAAE;YACX,SAAS,GAAG,IAAI,CAAC;QAClB,CAAC,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,OAAO,CACN,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,iBAAiB,YAC7C,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CACxB,KAAC,IAAI,IAAC,QAAQ,gDAAiC,CAC/C,CAAC,CAAC,CAAC,MAAM,KAAK,eAAe,CAAC,CAAC,CAAC,CAChC,KAAC,YAAY,IAAC,OAAO,EAAC,wEAAwE,GAAG,CACjG,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAC5B,KAAC,YAAY,IAAC,OAAO,EAAE,YAAY,WAAW,uEAAuE,GAAI,CACzH,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAC1B,MAAC,IAAI,IAAC,QAAQ,yCAAmB,WAAW,aAAY,CACxD,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAC1B,KAAC,cAAc,IAAC,OAAO,EAAE,mBAAmB,WAAW,GAAG,EAAE,SAAS,SAAG,CACxE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CACxB,KAAC,YAAY,IAAC,OAAO,EAAE,4BAA4B,KAAK,EAAE,GAAI,CAC9D,CAAC,CAAC,CAAC,IAAI,GACe,CACxB,CAAC;AACH,CAAC"}
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"}
@@ -5,6 +5,6 @@ type Props = {
5
5
  args: zod.infer<typeof args>;
6
6
  options: zod.infer<typeof options>;
7
7
  };
8
- export default function BrowserCommand({ args: [sessionName, command, ...commandArgs] }: Props): import("react/jsx-runtime").JSX.Element;
8
+ export default function BrowserCommand({ args: [sessionName, command, ...commandArgs] }: Props): null;
9
9
  export {};
10
10
  //# sourceMappingURL=command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/command.tsx"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,KAAK,CAAC;AAMtB,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;AAEF,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,EAAE,EAAE,KAAK,2CAmF7F"}
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,67 +1,57 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useState } from 'react';
3
- import { Text, Box } from 'ink';
1
+ import { useEffect } from 'react';
2
+ import { useApp } from 'ink';
3
+ import * as p from '@clack/prompts';
4
+ import chalk from 'chalk';
4
5
  import zod from 'zod';
5
- import { ThemeContext } from '../../hooks/useTheme.js';
6
- import { themeContextValue } from '../../config/themes.js';
7
- import ErrorMessage from '../../components/error-message.js';
8
6
  import { isAgentBrowserInstalled, browserCommand, getSession, isBlockedCommand } from '../../utils/agent-browser.js';
9
7
  export const args = zod.tuple([
10
8
  zod.string().describe('Session name'),
11
9
  zod.string().describe('Command to run'),
12
10
  ]).rest(zod.string().describe('Command arguments'));
13
11
  export const options = zod.object({});
12
+ async function runBrowserCommand(sessionName, command, commandArgs) {
13
+ const spinner = p.spinner();
14
+ spinner.start('Checking agent-browser...');
15
+ const installed = await isAgentBrowserInstalled();
16
+ if (!installed) {
17
+ spinner.stop(chalk.red('Not installed'));
18
+ p.log.error('agent-browser is not installed. Run `corebrain browser install` first.');
19
+ return;
20
+ }
21
+ // Check if command is blocked
22
+ if (isBlockedCommand(command)) {
23
+ spinner.stop(chalk.red('Command blocked'));
24
+ p.log.error(`Command "${command}" is blocked. Use \`corebrain browser open\` or \`corebrain browser close\` for open/close operations.`);
25
+ return;
26
+ }
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
+ spinner.message(`Running: ${command} ${commandArgs.join(' ')} on session "${sessionName}"`);
35
+ const result = await browserCommand(sessionName, command, commandArgs);
36
+ spinner.stop(result.code === 0 ? chalk.green('Command completed') : chalk.yellow(`Exit code: ${result.code}`));
37
+ if (result.stdout) {
38
+ console.log(result.stdout);
39
+ }
40
+ if (result.stderr) {
41
+ console.error(chalk.red(result.stderr));
42
+ }
43
+ }
14
44
  export default function BrowserCommand({ args: [sessionName, command, ...commandArgs] }) {
15
- const [status, setStatus] = useState('checking');
16
- const [result, setResult] = useState(null);
17
- const [error, setError] = useState('');
45
+ const { exit } = useApp();
18
46
  useEffect(() => {
19
- let cancelled = false;
20
- (async () => {
21
- try {
22
- const installed = await isAgentBrowserInstalled();
23
- if (!installed) {
24
- if (!cancelled) {
25
- setStatus('not-installed');
26
- }
27
- return;
28
- }
29
- // Check if command is blocked
30
- if (isBlockedCommand(command)) {
31
- if (!cancelled) {
32
- setError(`Command "${command}" is blocked. Use \`corebrain browser open\` or \`corebrain browser close\` for open/close operations.`);
33
- setStatus('blocked');
34
- }
35
- return;
36
- }
37
- // Check if session exists
38
- const session = getSession(sessionName);
39
- if (!session) {
40
- if (!cancelled) {
41
- setStatus('not-found');
42
- }
43
- return;
44
- }
45
- if (!cancelled) {
46
- setStatus('running');
47
- }
48
- const cmdResult = await browserCommand(sessionName, command, commandArgs);
49
- if (!cancelled) {
50
- setResult(cmdResult);
51
- setStatus('done');
52
- }
53
- }
54
- catch (err) {
55
- if (!cancelled) {
56
- setError(err instanceof Error ? err.message : 'Unknown error');
57
- setStatus('error');
58
- }
59
- }
60
- })();
61
- return () => {
62
- cancelled = true;
63
- };
64
- }, [sessionName, command, commandArgs]);
65
- return (_jsx(ThemeContext.Provider, { value: themeContextValue, children: status === 'checking' ? (_jsx(Text, { dimColor: true, children: "Checking agent-browser..." })) : status === 'not-installed' ? (_jsx(ErrorMessage, { message: "agent-browser is not installed. Run `corebrain browser install` first." })) : status === 'not-found' ? (_jsx(ErrorMessage, { message: `Session "${sessionName}" not found. Use \`corebrain browser open\` to create a session first.` })) : status === 'blocked' ? (_jsx(ErrorMessage, { message: error })) : status === 'running' ? (_jsxs(Text, { dimColor: true, children: ["Running: ", command, " ", commandArgs.join(' '), " on session \"", sessionName, "\""] })) : status === 'done' && result ? (_jsxs(Box, { flexDirection: "column", children: [result.stdout && _jsx(Text, { children: result.stdout }), result.stderr && _jsx(Text, { color: "red", children: result.stderr }), result.code !== 0 && _jsxs(Text, { dimColor: true, children: ["Exit code: ", result.code] })] })) : status === 'error' ? (_jsx(ErrorMessage, { message: error })) : null }));
47
+ runBrowserCommand(sessionName, command, commandArgs)
48
+ .catch((err) => {
49
+ p.log.error(err instanceof Error ? err.message : 'Unknown error');
50
+ })
51
+ .finally(() => {
52
+ setTimeout(() => exit(), 100);
53
+ });
54
+ }, [sessionName, command, commandArgs, exit]);
55
+ return null;
66
56
  }
67
57
  //# 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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"}
@@ -5,6 +5,6 @@ type Props = {
5
5
  args: zod.infer<typeof args>;
6
6
  options: zod.infer<typeof options>;
7
7
  };
8
- export default function BrowserCreateProfile({ args: [name] }: Props): import("react/jsx-runtime").JSX.Element;
8
+ export default function BrowserCreateProfile({ args: [name] }: Props): null;
9
9
  export {};
10
10
  //# sourceMappingURL=create-profile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-profile.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/create-profile.tsx"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,KAAK,CAAC;AAOtB,eAAO,MAAM,IAAI,qCAAqD,CAAC;AAEvE,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;AAEF,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,2CA4BnE"}
1
+ {"version":3,"file":"create-profile.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/create-profile.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,eAAO,MAAM,IAAI,qCAAqD,CAAC;AAEvE,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;AAiBF,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,QAcnE"}
@@ -1,29 +1,35 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { useEffect, useState } from 'react';
3
- import { Text } from 'ink';
1
+ import { useEffect } from 'react';
2
+ import { useApp } from 'ink';
3
+ import * as p from '@clack/prompts';
4
+ import chalk from 'chalk';
4
5
  import zod from 'zod';
5
- import { ThemeContext } from '../../hooks/useTheme.js';
6
- import { themeContextValue } from '../../config/themes.js';
7
- import SuccessMessage from '../../components/success-message.js';
8
- import ErrorMessage from '../../components/error-message.js';
9
6
  import { createProfile } from '../../utils/agent-browser.js';
10
7
  export const args = zod.tuple([zod.string().describe('Profile name')]);
11
8
  export const options = zod.object({});
9
+ async function runCreateProfile(name) {
10
+ const spinner = p.spinner();
11
+ spinner.start(`Creating profile ${name}...`);
12
+ const result = createProfile(name);
13
+ if (result.success) {
14
+ spinner.stop(chalk.green(`Profile "${name}" created`));
15
+ p.log.info(`Path: ${result.path}`);
16
+ }
17
+ else {
18
+ spinner.stop(chalk.red('Failed to create profile'));
19
+ p.log.error(result.error || 'Unknown error');
20
+ }
21
+ }
12
22
  export default function BrowserCreateProfile({ args: [name] }) {
13
- const [status, setStatus] = useState('creating');
14
- const [profilePath, setProfilePath] = useState('');
15
- const [error, setError] = useState('');
23
+ const { exit } = useApp();
16
24
  useEffect(() => {
17
- const result = createProfile(name);
18
- if (result.success) {
19
- setProfilePath(result.path);
20
- setStatus('success');
21
- }
22
- else {
23
- setError(result.error || 'Unknown error');
24
- setStatus('error');
25
- }
26
- }, [name]);
27
- return (_jsx(ThemeContext.Provider, { value: themeContextValue, children: status === 'creating' ? (_jsxs(Text, { dimColor: true, children: ["Creating profile ", name, "..."] })) : status === 'success' ? (_jsx(SuccessMessage, { message: `Profile "${name}" created at ${profilePath}` })) : status === 'error' ? (_jsx(ErrorMessage, { message: `Failed to create profile: ${error}` })) : null }));
25
+ runCreateProfile(name)
26
+ .catch((err) => {
27
+ p.log.error(`Failed to create profile: ${err instanceof Error ? err.message : 'Unknown error'}`);
28
+ })
29
+ .finally(() => {
30
+ setTimeout(() => exit(), 100);
31
+ });
32
+ }, [name, exit]);
33
+ return null;
28
34
  }
29
35
  //# sourceMappingURL=create-profile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-profile.js","sourceRoot":"","sources":["../../../src/commands/browser/create-profile.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAEvE,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAOtC,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAS;IACnE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAmC,UAAU,CAAC,CAAC;IACnF,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEvC,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5B,SAAS,CAAC,SAAS,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACP,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC,CAAC;YAC1C,SAAS,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;IACF,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,CACN,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,iBAAiB,YAC7C,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CACxB,MAAC,IAAI,IAAC,QAAQ,wCAAmB,IAAI,WAAW,CAChD,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAC1B,KAAC,cAAc,IAAC,OAAO,EAAE,YAAY,IAAI,gBAAgB,WAAW,EAAE,GAAI,CAC1E,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CACxB,KAAC,YAAY,IAAC,OAAO,EAAE,6BAA6B,KAAK,EAAE,GAAI,CAC/D,CAAC,CAAC,CAAC,IAAI,GACe,CACxB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"create-profile.js","sourceRoot":"","sources":["../../../src/commands/browser/create-profile.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,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAEvE,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,oBAAoB,IAAI,KAAK,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAEnC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,IAAI,WAAW,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC,CAAC;IAC9C,CAAC;AACF,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"}
@@ -5,6 +5,6 @@ type Props = {
5
5
  args: zod.infer<typeof args>;
6
6
  options: zod.infer<typeof options>;
7
7
  };
8
- export default function BrowserDeleteProfile({ args: [name] }: Props): import("react/jsx-runtime").JSX.Element;
8
+ export default function BrowserDeleteProfile({ args: [name] }: Props): null;
9
9
  export {};
10
10
  //# sourceMappingURL=delete-profile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"delete-profile.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/delete-profile.tsx"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,KAAK,CAAC;AAOtB,eAAO,MAAM,IAAI,qCAAqD,CAAC;AAEvE,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;AAEF,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,2CA0BnE"}
1
+ {"version":3,"file":"delete-profile.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/delete-profile.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,eAAO,MAAM,IAAI,qCAAqD,CAAC;AAEvE,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;AAgBF,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,QAcnE"}
@@ -1,27 +1,34 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { useEffect, useState } from 'react';
3
- import { Text } from 'ink';
1
+ import { useEffect } from 'react';
2
+ import { useApp } from 'ink';
3
+ import * as p from '@clack/prompts';
4
+ import chalk from 'chalk';
4
5
  import zod from 'zod';
5
- import { ThemeContext } from '../../hooks/useTheme.js';
6
- import { themeContextValue } from '../../config/themes.js';
7
- import SuccessMessage from '../../components/success-message.js';
8
- import ErrorMessage from '../../components/error-message.js';
9
6
  import { deleteProfile } from '../../utils/agent-browser.js';
10
7
  export const args = zod.tuple([zod.string().describe('Profile name')]);
11
8
  export const options = zod.object({});
9
+ async function runDeleteProfile(name) {
10
+ const spinner = p.spinner();
11
+ spinner.start(`Deleting profile ${name}...`);
12
+ const result = deleteProfile(name);
13
+ if (result.success) {
14
+ spinner.stop(chalk.green(`Profile "${name}" deleted`));
15
+ }
16
+ else {
17
+ spinner.stop(chalk.red('Failed to delete profile'));
18
+ p.log.error(result.error || 'Unknown error');
19
+ }
20
+ }
12
21
  export default function BrowserDeleteProfile({ args: [name] }) {
13
- const [status, setStatus] = useState('deleting');
14
- const [error, setError] = useState('');
22
+ const { exit } = useApp();
15
23
  useEffect(() => {
16
- const result = deleteProfile(name);
17
- if (result.success) {
18
- setStatus('success');
19
- }
20
- else {
21
- setError(result.error || 'Unknown error');
22
- setStatus('error');
23
- }
24
- }, [name]);
25
- return (_jsx(ThemeContext.Provider, { value: themeContextValue, children: status === 'deleting' ? (_jsxs(Text, { dimColor: true, children: ["Deleting profile ", name, "..."] })) : status === 'success' ? (_jsx(SuccessMessage, { message: `Profile "${name}" deleted` })) : status === 'error' ? (_jsx(ErrorMessage, { message: `Failed to delete profile: ${error}` })) : null }));
24
+ runDeleteProfile(name)
25
+ .catch((err) => {
26
+ p.log.error(`Failed to delete profile: ${err instanceof Error ? err.message : 'Unknown error'}`);
27
+ })
28
+ .finally(() => {
29
+ setTimeout(() => exit(), 100);
30
+ });
31
+ }, [name, exit]);
32
+ return null;
26
33
  }
27
34
  //# sourceMappingURL=delete-profile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"delete-profile.js","sourceRoot":"","sources":["../../../src/commands/browser/delete-profile.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAEvE,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAOtC,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAS;IACnE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAmC,UAAU,CAAC,CAAC;IACnF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEvC,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,SAAS,CAAC,SAAS,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACP,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC,CAAC;YAC1C,SAAS,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;IACF,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,CACN,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,iBAAiB,YAC7C,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CACxB,MAAC,IAAI,IAAC,QAAQ,wCAAmB,IAAI,WAAW,CAChD,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAC1B,KAAC,cAAc,IAAC,OAAO,EAAE,YAAY,IAAI,WAAW,GAAI,CACxD,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CACxB,KAAC,YAAY,IAAC,OAAO,EAAE,6BAA6B,KAAK,EAAE,GAAI,CAC/D,CAAC,CAAC,CAAC,IAAI,GACe,CACxB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"delete-profile.js","sourceRoot":"","sources":["../../../src/commands/browser/delete-profile.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,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAEvE,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,oBAAoB,IAAI,KAAK,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAEnC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,IAAI,WAAW,CAAC,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC,CAAC;IAC9C,CAAC;AACF,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"}
@@ -3,6 +3,6 @@ export declare const options: zod.ZodObject<{}, zod.core.$strip>;
3
3
  type Props = {
4
4
  options: zod.infer<typeof options>;
5
5
  };
6
- export default function BrowserInstall(_props: Props): import("react/jsx-runtime").JSX.Element;
6
+ export default function BrowserInstall(_props: Props): null;
7
7
  export {};
8
8
  //# sourceMappingURL=install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/install.tsx"],"names":[],"mappings":"AAEA,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;AAEF,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,MAAM,EAAE,KAAK,2CA2DnD"}
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,49 +1,38 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useEffect, useState } from 'react';
3
- import { Text } from 'ink';
1
+ import { useEffect } from 'react';
2
+ import { useApp } from 'ink';
3
+ import * as p from '@clack/prompts';
4
+ import chalk from 'chalk';
4
5
  import zod from 'zod';
5
- import { ThemeContext } from '../../hooks/useTheme.js';
6
- import { themeContextValue } from '../../config/themes.js';
7
- import SuccessMessage from '../../components/success-message.js';
8
- import ErrorMessage from '../../components/error-message.js';
9
6
  import { isAgentBrowserInstalled, installAgentBrowser } from '../../utils/agent-browser.js';
10
7
  export const options = zod.object({});
8
+ async function runBrowserInstall() {
9
+ const spinner = p.spinner();
10
+ spinner.start('Checking if agent-browser is installed...');
11
+ const installed = await isAgentBrowserInstalled();
12
+ if (installed) {
13
+ spinner.stop(chalk.green('agent-browser is already installed'));
14
+ return;
15
+ }
16
+ spinner.message('Installing agent-browser globally via npm...');
17
+ const result = await installAgentBrowser();
18
+ if (result.code !== 0) {
19
+ spinner.stop(chalk.red('Installation failed'));
20
+ p.log.error(result.stderr || 'Installation failed');
21
+ return;
22
+ }
23
+ spinner.stop(chalk.green('agent-browser installed successfully'));
24
+ }
11
25
  export default function BrowserInstall(_props) {
12
- const [status, setStatus] = useState('checking');
13
- const [error, setError] = useState('');
26
+ const { exit } = useApp();
14
27
  useEffect(() => {
15
- let cancelled = false;
16
- (async () => {
17
- try {
18
- const installed = await isAgentBrowserInstalled();
19
- if (installed) {
20
- if (!cancelled) {
21
- setStatus('already-installed');
22
- }
23
- return;
24
- }
25
- if (!cancelled) {
26
- setStatus('installing');
27
- }
28
- const result = await installAgentBrowser();
29
- if (result.code !== 0) {
30
- throw new Error(result.stderr || 'Installation failed');
31
- }
32
- if (!cancelled) {
33
- setStatus('success');
34
- }
35
- }
36
- catch (err) {
37
- if (!cancelled) {
38
- setError(err instanceof Error ? err.message : 'Unknown error');
39
- setStatus('error');
40
- }
41
- }
42
- })();
43
- return () => {
44
- cancelled = true;
45
- };
46
- }, []);
47
- return (_jsx(ThemeContext.Provider, { value: themeContextValue, children: status === 'checking' ? (_jsx(Text, { dimColor: true, children: "Checking if agent-browser is installed..." })) : status === 'already-installed' ? (_jsx(SuccessMessage, { message: "agent-browser is already installed", hideTitle: true })) : status === 'installing' ? (_jsx(Text, { dimColor: true, children: "Installing agent-browser globally via npm..." })) : status === 'success' ? (_jsx(SuccessMessage, { message: "agent-browser installed successfully" })) : status === 'error' ? (_jsx(ErrorMessage, { message: `Failed to install agent-browser: ${error}` })) : null }));
28
+ runBrowserInstall()
29
+ .catch((err) => {
30
+ p.log.error(`Failed to install agent-browser: ${err instanceof Error ? err.message : 'Unknown error'}`);
31
+ })
32
+ .finally(() => {
33
+ setTimeout(() => exit(), 100);
34
+ });
35
+ }, [exit]);
36
+ return null;
48
37
  }
49
38
  //# sourceMappingURL=install.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/browser/install.tsx"],"names":[],"mappings":"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"}
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"}
@@ -7,6 +7,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): import("react/jsx-runtime").JSX.Element;
10
+ export default function BrowserOpen({ args: [sessionName, 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":"AAEA,OAAO,GAAG,MAAM,KAAK,CAAC;AAOtB,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;AAEF,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,2CAuE/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,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"}