@redplanethq/corebrain 2.0.0 → 2.2.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.
- package/dist/commands/browser/close.d.ts +1 -1
- package/dist/commands/browser/close.d.ts.map +1 -1
- package/dist/commands/browser/close.js +39 -50
- package/dist/commands/browser/close.js.map +1 -1
- package/dist/commands/browser/command.d.ts +1 -1
- package/dist/commands/browser/command.d.ts.map +1 -1
- package/dist/commands/browser/command.js +46 -56
- package/dist/commands/browser/command.js.map +1 -1
- package/dist/commands/browser/create-profile.d.ts +1 -1
- package/dist/commands/browser/create-profile.d.ts.map +1 -1
- package/dist/commands/browser/create-profile.js +27 -21
- package/dist/commands/browser/create-profile.js.map +1 -1
- package/dist/commands/browser/delete-profile.d.ts +1 -1
- package/dist/commands/browser/delete-profile.d.ts.map +1 -1
- package/dist/commands/browser/delete-profile.js +26 -19
- package/dist/commands/browser/delete-profile.js.map +1 -1
- package/dist/commands/browser/install.d.ts +1 -1
- package/dist/commands/browser/install.d.ts.map +1 -1
- package/dist/commands/browser/install.js +31 -42
- package/dist/commands/browser/install.js.map +1 -1
- package/dist/commands/browser/open.d.ts +1 -1
- package/dist/commands/browser/open.d.ts.map +1 -1
- package/dist/commands/browser/open.js +40 -52
- package/dist/commands/browser/open.js.map +1 -1
- package/dist/commands/browser/status.d.ts +1 -1
- package/dist/commands/browser/status.d.ts.map +1 -1
- package/dist/commands/browser/status.js +36 -41
- package/dist/commands/browser/status.js.map +1 -1
- package/dist/commands/coding/config.d.ts +1 -1
- package/dist/commands/coding/config.d.ts.map +1 -1
- package/dist/commands/coding/config.js +95 -98
- package/dist/commands/coding/config.js.map +1 -1
- package/dist/commands/coding/remove.d.ts +1 -1
- package/dist/commands/coding/remove.d.ts.map +1 -1
- package/dist/commands/coding/remove.js +26 -28
- package/dist/commands/coding/remove.js.map +1 -1
- package/dist/commands/coding/setup.d.ts +1 -1
- package/dist/commands/coding/setup.d.ts.map +1 -1
- package/dist/commands/coding/setup.js +56 -71
- package/dist/commands/coding/setup.js.map +1 -1
- package/dist/commands/exec/config.d.ts +1 -1
- package/dist/commands/exec/config.d.ts.map +1 -1
- package/dist/commands/exec/config.js +71 -66
- package/dist/commands/exec/config.js.map +1 -1
- package/dist/commands/gateway/config.d.ts +10 -2
- package/dist/commands/gateway/config.d.ts.map +1 -1
- package/dist/commands/gateway/config.js +427 -156
- package/dist/commands/gateway/config.js.map +1 -1
- package/dist/commands/gateway/off.d.ts +1 -1
- package/dist/commands/gateway/off.d.ts.map +1 -1
- package/dist/commands/gateway/off.js +53 -63
- package/dist/commands/gateway/off.js.map +1 -1
- package/dist/commands/gateway/on.d.ts +1 -1
- package/dist/commands/gateway/on.d.ts.map +1 -1
- package/dist/commands/gateway/on.js +88 -117
- package/dist/commands/gateway/on.js.map +1 -1
- package/dist/commands/gateway/restart.d.ts +1 -1
- package/dist/commands/gateway/restart.d.ts.map +1 -1
- package/dist/commands/gateway/restart.js +49 -63
- package/dist/commands/gateway/restart.js.map +1 -1
- package/dist/commands/gateway/status.d.ts +1 -1
- package/dist/commands/gateway/status.d.ts.map +1 -1
- package/dist/commands/gateway/status.js +62 -76
- package/dist/commands/gateway/status.js.map +1 -1
- package/dist/commands/gateway/uninstall.d.ts +1 -1
- package/dist/commands/gateway/uninstall.d.ts.map +1 -1
- package/dist/commands/gateway/uninstall.js +60 -72
- package/dist/commands/gateway/uninstall.js.map +1 -1
- package/dist/commands/login.d.ts +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +87 -107
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +1 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +24 -45
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/me.d.ts +1 -1
- package/dist/commands/me.d.ts.map +1 -1
- package/dist/commands/me.js +40 -50
- package/dist/commands/me.js.map +1 -1
- package/dist/commands/token.d.ts +1 -1
- package/dist/commands/token.d.ts.map +1 -1
- package/dist/commands/token.js +19 -24
- package/dist/commands/token.js.map +1 -1
- package/dist/components/error-message.js +0 -1
- package/dist/components/error-message.js.map +1 -1
- package/dist/components/warning-message.js +0 -1
- package/dist/components/warning-message.js.map +1 -1
- package/dist/server/gateway-client.d.ts +9 -0
- package/dist/server/gateway-client.d.ts.map +1 -1
- package/dist/server/gateway-client.js +74 -19
- package/dist/server/gateway-client.js.map +1 -1
- package/dist/server/gateway-entry.js +28 -3
- package/dist/server/gateway-entry.js.map +1 -1
- package/dist/server/tools/exec-tools.d.ts.map +1 -1
- package/dist/server/tools/exec-tools.js +9 -0
- package/dist/server/tools/exec-tools.js.map +1 -1
- package/dist/types/config.d.ts +15 -0
- package/dist/types/config.d.ts.map +1 -1
- 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):
|
|
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":"
|
|
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 {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
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
|
|
16
|
-
const [error, setError] = useState('');
|
|
37
|
+
const { exit } = useApp();
|
|
17
38
|
useEffect(() => {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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":"
|
|
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):
|
|
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":"
|
|
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 {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
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
|
|
16
|
-
const [result, setResult] = useState(null);
|
|
17
|
-
const [error, setError] = useState('');
|
|
45
|
+
const { exit } = useApp();
|
|
18
46
|
useEffect(() => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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":"
|
|
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):
|
|
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":"
|
|
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 {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
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
|
|
14
|
-
const [profilePath, setProfilePath] = useState('');
|
|
15
|
-
const [error, setError] = useState('');
|
|
23
|
+
const { exit } = useApp();
|
|
16
24
|
useEffect(() => {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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":"
|
|
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):
|
|
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":"
|
|
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 {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
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
|
|
14
|
-
const [error, setError] = useState('');
|
|
22
|
+
const { exit } = useApp();
|
|
15
23
|
useEffect(() => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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":"
|
|
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):
|
|
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":"
|
|
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 {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
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
|
|
13
|
-
const [error, setError] = useState('');
|
|
26
|
+
const { exit } = useApp();
|
|
14
27
|
useEffect(() => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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":"
|
|
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):
|
|
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":"
|
|
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"}
|