@redplanethq/corebrain 1.0.0 → 2.0.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 +10 -0
- package/dist/commands/browser/close.d.ts.map +1 -0
- package/dist/commands/browser/close.js +60 -0
- package/dist/commands/browser/close.js.map +1 -0
- package/dist/commands/browser/command.d.ts +10 -0
- package/dist/commands/browser/command.d.ts.map +1 -0
- package/dist/commands/browser/command.js +67 -0
- package/dist/commands/browser/command.js.map +1 -0
- package/dist/commands/browser/create-profile.d.ts +10 -0
- package/dist/commands/browser/create-profile.d.ts.map +1 -0
- package/dist/commands/browser/create-profile.js +29 -0
- package/dist/commands/browser/create-profile.js.map +1 -0
- package/dist/commands/browser/delete-profile.d.ts +10 -0
- package/dist/commands/browser/delete-profile.d.ts.map +1 -0
- package/dist/commands/browser/delete-profile.js +27 -0
- package/dist/commands/browser/delete-profile.js.map +1 -0
- package/dist/commands/browser/install.d.ts +8 -0
- package/dist/commands/browser/install.d.ts.map +1 -0
- package/dist/commands/browser/install.js +49 -0
- package/dist/commands/browser/install.js.map +1 -0
- package/dist/commands/browser/open.d.ts +12 -0
- package/dist/commands/browser/open.d.ts.map +1 -0
- package/dist/commands/browser/open.js +65 -0
- package/dist/commands/browser/open.js.map +1 -0
- package/dist/commands/browser/status.d.ts +8 -0
- package/dist/commands/browser/status.d.ts.map +1 -0
- package/dist/commands/browser/status.js +48 -0
- package/dist/commands/browser/status.js.map +1 -0
- package/dist/commands/coding/[agent]/config.d.ts +18 -0
- package/dist/commands/coding/[agent]/config.d.ts.map +1 -0
- package/dist/commands/coding/[agent]/config.js +91 -0
- package/dist/commands/coding/[agent]/config.js.map +1 -0
- package/dist/commands/coding/config.d.ts +23 -0
- package/dist/commands/coding/config.d.ts.map +1 -0
- package/dist/commands/coding/config.js +116 -0
- package/dist/commands/coding/config.js.map +1 -0
- package/dist/commands/coding/index.d.ts +8 -0
- package/dist/commands/coding/index.d.ts.map +1 -0
- package/dist/commands/coding/index.js +42 -0
- package/dist/commands/coding/index.js.map +1 -0
- package/dist/commands/coding/remove.d.ts +10 -0
- package/dist/commands/coding/remove.d.ts.map +1 -0
- package/dist/commands/coding/remove.js +37 -0
- package/dist/commands/coding/remove.js.map +1 -0
- package/dist/commands/coding/setup.d.ts +8 -0
- package/dist/commands/coding/setup.d.ts.map +1 -0
- package/dist/commands/coding/setup.js +114 -0
- package/dist/commands/coding/setup.js.map +1 -0
- package/dist/commands/exec/config.d.ts +14 -0
- package/dist/commands/exec/config.d.ts.map +1 -0
- package/dist/commands/exec/config.js +79 -0
- package/dist/commands/exec/config.js.map +1 -0
- package/dist/commands/gateway/config.d.ts +8 -0
- package/dist/commands/gateway/config.d.ts.map +1 -0
- package/dist/commands/gateway/config.js +192 -0
- package/dist/commands/gateway/config.js.map +1 -0
- package/dist/commands/gateway/index.d.ts +14 -0
- package/dist/commands/gateway/index.d.ts.map +1 -0
- package/dist/commands/gateway/index.js +10 -0
- package/dist/commands/gateway/index.js.map +1 -0
- package/dist/commands/gateway/off.d.ts +8 -0
- package/dist/commands/gateway/off.d.ts.map +1 -0
- package/dist/commands/gateway/off.js +70 -0
- package/dist/commands/gateway/off.js.map +1 -0
- package/dist/commands/gateway/on.d.ts +8 -0
- package/dist/commands/gateway/on.d.ts.map +1 -0
- package/dist/commands/gateway/on.js +135 -0
- package/dist/commands/gateway/on.js.map +1 -0
- package/dist/commands/gateway/restart.d.ts +8 -0
- package/dist/commands/gateway/restart.d.ts.map +1 -0
- package/dist/commands/gateway/restart.js +70 -0
- package/dist/commands/gateway/restart.js.map +1 -0
- package/dist/commands/gateway/status.d.ts +8 -0
- package/dist/commands/gateway/status.d.ts.map +1 -0
- package/dist/commands/gateway/status.js +98 -0
- package/dist/commands/gateway/status.js.map +1 -0
- package/dist/commands/gateway/uninstall.d.ts +8 -0
- package/dist/commands/gateway/uninstall.d.ts.map +1 -0
- package/dist/commands/gateway/uninstall.js +80 -0
- package/dist/commands/gateway/uninstall.js.map +1 -0
- package/dist/commands/index.d.ts +1 -5
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/login.d.ts +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/logout.d.ts +1 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/me.d.ts +1 -1
- package/dist/commands/me.d.ts.map +1 -1
- package/dist/commands/server.d.ts +10 -0
- package/dist/commands/server.d.ts.map +1 -0
- package/dist/commands/server.js +60 -0
- package/dist/commands/server.js.map +1 -0
- package/dist/commands/token.d.ts +1 -1
- package/dist/commands/token.d.ts.map +1 -1
- package/dist/components/error-message.d.ts.map +1 -1
- package/dist/components/error-message.js +6 -1
- package/dist/components/error-message.js.map +1 -1
- package/dist/components/info-message.d.ts.map +1 -1
- package/dist/components/info-message.js +5 -1
- package/dist/components/info-message.js.map +1 -1
- package/dist/components/success-message.d.ts.map +1 -1
- package/dist/components/success-message.js +5 -1
- package/dist/components/success-message.js.map +1 -1
- package/dist/components/warning-message.d.ts +2 -3
- package/dist/components/warning-message.d.ts.map +1 -1
- package/dist/components/warning-message.js +10 -4
- package/dist/components/warning-message.js.map +1 -1
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +31 -30
- package/dist/config/index.js.map +1 -1
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +4 -36
- package/dist/config/paths.js.map +1 -1
- package/dist/config/preferences.d.ts +14 -0
- package/dist/config/preferences.d.ts.map +1 -0
- package/dist/config/preferences.js +82 -0
- package/dist/config/preferences.js.map +1 -0
- package/dist/config/themes.d.ts +5 -0
- package/dist/config/themes.d.ts.map +1 -1
- package/dist/config/themes.js +5 -0
- package/dist/config/themes.js.map +1 -1
- package/dist/server/gateway-client.d.ts +75 -0
- package/dist/server/gateway-client.d.ts.map +1 -0
- package/dist/server/gateway-client.js +264 -0
- package/dist/server/gateway-client.js.map +1 -0
- package/dist/server/gateway-entry.d.ts +7 -0
- package/dist/server/gateway-entry.d.ts.map +1 -0
- package/dist/server/gateway-entry.js +113 -0
- package/dist/server/gateway-entry.js.map +1 -0
- package/dist/server/gateway.d.ts +5 -0
- package/dist/server/gateway.d.ts.map +1 -0
- package/dist/server/gateway.js +136 -0
- package/dist/server/gateway.js.map +1 -0
- package/dist/server/tools/browser-tools.d.ts +28 -0
- package/dist/server/tools/browser-tools.d.ts.map +1 -0
- package/dist/server/tools/browser-tools.js +179 -0
- package/dist/server/tools/browser-tools.js.map +1 -0
- package/dist/server/tools/coding-tools.d.ts +27 -0
- package/dist/server/tools/coding-tools.d.ts.map +1 -0
- package/dist/server/tools/coding-tools.js +345 -0
- package/dist/server/tools/coding-tools.js.map +1 -0
- package/dist/server/tools/exec-tools.d.ts +14 -0
- package/dist/server/tools/exec-tools.d.ts.map +1 -0
- package/dist/server/tools/exec-tools.js +203 -0
- package/dist/server/tools/exec-tools.js.map +1 -0
- package/dist/types/config.d.ts +36 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/utils/agent-browser.d.ts +63 -0
- package/dist/utils/agent-browser.d.ts.map +1 -0
- package/dist/utils/agent-browser.js +301 -0
- package/dist/utils/agent-browser.js.map +1 -0
- package/dist/utils/coding-runner.d.ts +60 -0
- package/dist/utils/coding-runner.d.ts.map +1 -0
- package/dist/utils/coding-runner.js +174 -0
- package/dist/utils/coding-runner.js.map +1 -0
- package/dist/utils/coding-sessions.d.ts +61 -0
- package/dist/utils/coding-sessions.d.ts.map +1 -0
- package/dist/utils/coding-sessions.js +112 -0
- package/dist/utils/coding-sessions.js.map +1 -0
- package/dist/utils/process.d.ts +22 -0
- package/dist/utils/process.d.ts.map +1 -0
- package/dist/utils/process.js +81 -0
- package/dist/utils/process.js.map +1 -0
- package/dist/utils/service-manager/index.d.ts +49 -0
- package/dist/utils/service-manager/index.d.ts.map +1 -0
- package/dist/utils/service-manager/index.js +137 -0
- package/dist/utils/service-manager/index.js.map +1 -0
- package/dist/utils/service-manager/launchd.d.ts +31 -0
- package/dist/utils/service-manager/launchd.d.ts.map +1 -0
- package/dist/utils/service-manager/launchd.js +208 -0
- package/dist/utils/service-manager/launchd.js.map +1 -0
- package/dist/utils/service-manager/systemd.d.ts +31 -0
- package/dist/utils/service-manager/systemd.d.ts.map +1 -0
- package/dist/utils/service-manager/systemd.js +187 -0
- package/dist/utils/service-manager/systemd.js.map +1 -0
- package/dist/utils/tmux.d.ts +37 -0
- package/dist/utils/tmux.d.ts.map +1 -0
- package/dist/utils/tmux.js +96 -0
- package/dist/utils/tmux.js.map +1 -0
- package/package.json +15 -12
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { Text } from 'ink';
|
|
4
|
+
import zod from 'zod';
|
|
5
|
+
import { getPreferences, updatePreferences } from '../../../config/preferences.js';
|
|
6
|
+
import SuccessMessage from '../../../components/success-message.js';
|
|
7
|
+
import ErrorMessage from '../../../components/error-message.js';
|
|
8
|
+
import InfoMessage from '../../../components/info-message.js';
|
|
9
|
+
import { ThemeContext } from '../../../hooks/useTheme.js';
|
|
10
|
+
import { themeContextValue } from '../../../config/themes.js';
|
|
11
|
+
export const options = zod.object({
|
|
12
|
+
command: zod.string().optional().describe('CLI command path'),
|
|
13
|
+
sessionArg: zod.string().optional().describe('Session argument flag (e.g., --session-id)'),
|
|
14
|
+
dangerouslySkipPermissions: zod.boolean().optional().describe('Skip permission prompts'),
|
|
15
|
+
allowedTools: zod.string().optional().describe('Comma-separated list of allowed tools'),
|
|
16
|
+
disallowedTools: zod.string().optional().describe('Comma-separated list of disallowed tools'),
|
|
17
|
+
modelArg: zod.string().optional().describe('Model argument flag'),
|
|
18
|
+
show: zod.boolean().optional().describe('Show current config'),
|
|
19
|
+
});
|
|
20
|
+
export const positional = zod.tuple([zod.string().describe('agent')]);
|
|
21
|
+
export default function CodingAgentConfig({ options: opts, positional: pos }) {
|
|
22
|
+
const [status, setStatus] = useState('loading');
|
|
23
|
+
const [config, setConfig] = useState(null);
|
|
24
|
+
const [error, setError] = useState('');
|
|
25
|
+
const agentName = pos[0];
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
try {
|
|
28
|
+
const prefs = getPreferences();
|
|
29
|
+
const coding = (prefs.coding || {});
|
|
30
|
+
const existingConfig = coding[agentName];
|
|
31
|
+
// If just showing config
|
|
32
|
+
if (opts.show || Object.keys(opts).filter((k) => k !== 'show').length === 0) {
|
|
33
|
+
if (!existingConfig) {
|
|
34
|
+
setStatus('not-found');
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
setConfig(existingConfig);
|
|
38
|
+
setStatus('show');
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// Build new config
|
|
42
|
+
const newConfig = existingConfig || { command: agentName };
|
|
43
|
+
if (opts.command !== undefined) {
|
|
44
|
+
newConfig.command = opts.command;
|
|
45
|
+
}
|
|
46
|
+
if (opts.sessionArg !== undefined) {
|
|
47
|
+
newConfig.sessionArg = opts.sessionArg;
|
|
48
|
+
}
|
|
49
|
+
if (opts.dangerouslySkipPermissions !== undefined) {
|
|
50
|
+
newConfig.dangerouslySkipPermissions = opts.dangerouslySkipPermissions;
|
|
51
|
+
}
|
|
52
|
+
if (opts.allowedTools !== undefined) {
|
|
53
|
+
newConfig.allowedTools = opts.allowedTools
|
|
54
|
+
.split(',')
|
|
55
|
+
.map((t) => t.trim())
|
|
56
|
+
.filter(Boolean);
|
|
57
|
+
}
|
|
58
|
+
if (opts.disallowedTools !== undefined) {
|
|
59
|
+
newConfig.disallowedTools = opts.disallowedTools
|
|
60
|
+
.split(',')
|
|
61
|
+
.map((t) => t.trim())
|
|
62
|
+
.filter(Boolean);
|
|
63
|
+
}
|
|
64
|
+
if (opts.modelArg !== undefined) {
|
|
65
|
+
newConfig.modelArg = opts.modelArg;
|
|
66
|
+
}
|
|
67
|
+
// Save config
|
|
68
|
+
coding[agentName] = newConfig;
|
|
69
|
+
updatePreferences({ coding });
|
|
70
|
+
setConfig(newConfig);
|
|
71
|
+
setStatus('updated');
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
setError(err instanceof Error ? err.message : 'Unknown error');
|
|
75
|
+
setStatus('error');
|
|
76
|
+
}
|
|
77
|
+
}, [agentName, opts]);
|
|
78
|
+
const formatConfig = (cfg) => {
|
|
79
|
+
const lines = [
|
|
80
|
+
`command: ${cfg.command}`,
|
|
81
|
+
`sessionArg: ${cfg.sessionArg || '(not set)'}`,
|
|
82
|
+
`dangerouslySkipPermissions: ${cfg.dangerouslySkipPermissions !== false}`,
|
|
83
|
+
`allowedTools: ${cfg.allowedTools?.join(', ') || '(none)'}`,
|
|
84
|
+
`disallowedTools: ${cfg.disallowedTools?.join(', ') || '(none)'}`,
|
|
85
|
+
`modelArg: ${cfg.modelArg || '(not set)'}`,
|
|
86
|
+
];
|
|
87
|
+
return lines.join('\n');
|
|
88
|
+
};
|
|
89
|
+
return (_jsx(ThemeContext.Provider, { value: themeContextValue, children: status === 'loading' ? (_jsx(Text, { dimColor: true, children: "Loading configuration..." })) : status === 'error' ? (_jsx(ErrorMessage, { message: `Config error: ${error}` })) : status === 'not-found' ? (_jsx(ErrorMessage, { message: `Agent "${agentName}" not configured.\n\nRun 'corebrain coding setup' to auto-detect\nor configure with:\n corebrain coding ${agentName} config --command /path/to/cli`, hideTitle: true })) : status === 'show' && config ? (_jsx(InfoMessage, { message: `${agentName} Configuration\n\n${formatConfig(config)}` })) : status === 'updated' && config ? (_jsx(SuccessMessage, { message: `Updated ${agentName} configuration\n\n${formatConfig(config)}` })) : null }));
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/commands/coding/[agent]/config.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import zod from 'zod';
|
|
2
|
+
export declare const options: zod.ZodObject<{
|
|
3
|
+
agent: zod.ZodString;
|
|
4
|
+
command: zod.ZodOptional<zod.ZodString>;
|
|
5
|
+
args: zod.ZodOptional<zod.ZodString>;
|
|
6
|
+
resumeArgs: zod.ZodOptional<zod.ZodString>;
|
|
7
|
+
sessionArg: zod.ZodOptional<zod.ZodString>;
|
|
8
|
+
sessionMode: zod.ZodOptional<zod.ZodEnum<{
|
|
9
|
+
new: "new";
|
|
10
|
+
existing: "existing";
|
|
11
|
+
always: "always";
|
|
12
|
+
}>>;
|
|
13
|
+
allowedTools: zod.ZodOptional<zod.ZodString>;
|
|
14
|
+
disallowedTools: zod.ZodOptional<zod.ZodString>;
|
|
15
|
+
modelArg: zod.ZodOptional<zod.ZodString>;
|
|
16
|
+
show: zod.ZodOptional<zod.ZodBoolean>;
|
|
17
|
+
}, zod.core.$strip>;
|
|
18
|
+
type Props = {
|
|
19
|
+
options: zod.infer<typeof options>;
|
|
20
|
+
};
|
|
21
|
+
export default function CodingAgentConfig({ options: opts }: Props): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/coding/config.tsx"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,KAAK,CAAC;AAStB,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;mBAWlB,CAAC;AAEH,KAAK,KAAK,GAAG;IACZ,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,EAAE,KAAK,2CAyH/D"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { Text } from 'ink';
|
|
4
|
+
import zod from 'zod';
|
|
5
|
+
import { getPreferences, updatePreferences } from '../../config/preferences.js';
|
|
6
|
+
import SuccessMessage from '../../components/success-message.js';
|
|
7
|
+
import ErrorMessage from '../../components/error-message.js';
|
|
8
|
+
import InfoMessage from '../../components/info-message.js';
|
|
9
|
+
import { ThemeContext } from '../../hooks/useTheme.js';
|
|
10
|
+
import { themeContextValue } from '../../config/themes.js';
|
|
11
|
+
export const options = zod.object({
|
|
12
|
+
agent: zod.string().describe('Agent name (e.g., claude-code)'),
|
|
13
|
+
command: zod.string().optional().describe('CLI command path'),
|
|
14
|
+
args: zod.string().optional().describe('Default args (comma-separated)'),
|
|
15
|
+
resumeArgs: zod.string().optional().describe('Resume args (comma-separated, use {sessionId} placeholder)'),
|
|
16
|
+
sessionArg: zod.string().optional().describe('Session argument flag (e.g., --session)'),
|
|
17
|
+
sessionMode: zod.enum(['new', 'existing', 'always']).optional().describe('Session mode'),
|
|
18
|
+
allowedTools: zod.string().optional().describe('Comma-separated list of allowed tools'),
|
|
19
|
+
disallowedTools: zod.string().optional().describe('Comma-separated list of disallowed tools'),
|
|
20
|
+
modelArg: zod.string().optional().describe('Model argument flag'),
|
|
21
|
+
show: zod.boolean().optional().describe('Show current config'),
|
|
22
|
+
});
|
|
23
|
+
export default function CodingAgentConfig({ options: opts }) {
|
|
24
|
+
const [status, setStatus] = useState('loading');
|
|
25
|
+
const [config, setConfig] = useState(null);
|
|
26
|
+
const [error, setError] = useState('');
|
|
27
|
+
const agentName = opts.agent;
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
try {
|
|
30
|
+
const prefs = getPreferences();
|
|
31
|
+
const coding = (prefs.coding || {});
|
|
32
|
+
const existingConfig = coding[agentName];
|
|
33
|
+
// Check if any config options were provided
|
|
34
|
+
const hasConfigOptions = opts.command !== undefined ||
|
|
35
|
+
opts.args !== undefined ||
|
|
36
|
+
opts.resumeArgs !== undefined ||
|
|
37
|
+
opts.sessionArg !== undefined ||
|
|
38
|
+
opts.sessionMode !== undefined ||
|
|
39
|
+
opts.allowedTools !== undefined ||
|
|
40
|
+
opts.disallowedTools !== undefined ||
|
|
41
|
+
opts.modelArg !== undefined;
|
|
42
|
+
// If just showing config (no options provided or --show)
|
|
43
|
+
if (opts.show || !hasConfigOptions) {
|
|
44
|
+
if (!existingConfig) {
|
|
45
|
+
setStatus('not-found');
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
setConfig(existingConfig);
|
|
49
|
+
setStatus('show');
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
// Build new config
|
|
53
|
+
const newConfig = existingConfig || { command: agentName };
|
|
54
|
+
if (opts.command !== undefined) {
|
|
55
|
+
newConfig.command = opts.command;
|
|
56
|
+
}
|
|
57
|
+
if (opts.args !== undefined) {
|
|
58
|
+
newConfig.args = opts.args
|
|
59
|
+
.split(',')
|
|
60
|
+
.map((a) => a.trim())
|
|
61
|
+
.filter(Boolean);
|
|
62
|
+
}
|
|
63
|
+
if (opts.resumeArgs !== undefined) {
|
|
64
|
+
newConfig.resumeArgs = opts.resumeArgs
|
|
65
|
+
.split(',')
|
|
66
|
+
.map((a) => a.trim())
|
|
67
|
+
.filter(Boolean);
|
|
68
|
+
}
|
|
69
|
+
if (opts.sessionArg !== undefined) {
|
|
70
|
+
newConfig.sessionArg = opts.sessionArg;
|
|
71
|
+
}
|
|
72
|
+
if (opts.sessionMode !== undefined) {
|
|
73
|
+
newConfig.sessionMode = opts.sessionMode;
|
|
74
|
+
}
|
|
75
|
+
if (opts.allowedTools !== undefined) {
|
|
76
|
+
newConfig.allowedTools = opts.allowedTools
|
|
77
|
+
.split(',')
|
|
78
|
+
.map((t) => t.trim())
|
|
79
|
+
.filter(Boolean);
|
|
80
|
+
}
|
|
81
|
+
if (opts.disallowedTools !== undefined) {
|
|
82
|
+
newConfig.disallowedTools = opts.disallowedTools
|
|
83
|
+
.split(',')
|
|
84
|
+
.map((t) => t.trim())
|
|
85
|
+
.filter(Boolean);
|
|
86
|
+
}
|
|
87
|
+
if (opts.modelArg !== undefined) {
|
|
88
|
+
newConfig.modelArg = opts.modelArg;
|
|
89
|
+
}
|
|
90
|
+
// Save config
|
|
91
|
+
coding[agentName] = newConfig;
|
|
92
|
+
updatePreferences({ coding });
|
|
93
|
+
setConfig(newConfig);
|
|
94
|
+
setStatus('updated');
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
setError(err instanceof Error ? err.message : 'Unknown error');
|
|
98
|
+
setStatus('error');
|
|
99
|
+
}
|
|
100
|
+
}, [agentName, opts]);
|
|
101
|
+
const formatConfig = (cfg) => {
|
|
102
|
+
const lines = [
|
|
103
|
+
`command: ${cfg.command}`,
|
|
104
|
+
`args: ${cfg.args?.join(' ') || '(none)'}`,
|
|
105
|
+
`resumeArgs: ${cfg.resumeArgs?.join(' ') || '(none)'}`,
|
|
106
|
+
`sessionArg: ${cfg.sessionArg || '(not set)'}`,
|
|
107
|
+
`sessionMode: ${cfg.sessionMode || '(not set)'}`,
|
|
108
|
+
`allowedTools: ${cfg.allowedTools?.join(', ') || '(none)'}`,
|
|
109
|
+
`disallowedTools: ${cfg.disallowedTools?.join(', ') || '(none)'}`,
|
|
110
|
+
`modelArg: ${cfg.modelArg || '(not set)'}`,
|
|
111
|
+
];
|
|
112
|
+
return lines.join('\n');
|
|
113
|
+
};
|
|
114
|
+
return (_jsx(ThemeContext.Provider, { value: themeContextValue, children: status === 'loading' ? (_jsx(Text, { dimColor: true, children: "Loading configuration..." })) : status === 'error' ? (_jsx(ErrorMessage, { message: `Config error: ${error}` })) : status === 'not-found' ? (_jsx(ErrorMessage, { message: `Agent "${agentName}" not configured.\n\nRun 'corebrain coding setup' to auto-detect\nor configure with:\n corebrain coding config --agent ${agentName} --command /path/to/cli`, hideTitle: true })) : status === 'show' && config ? (_jsx(InfoMessage, { message: `${agentName} Configuration\n\n${formatConfig(config)}` })) : status === 'updated' && config ? (_jsx(SuccessMessage, { message: `Updated ${agentName} configuration\n\n${formatConfig(config)}` })) : null }));
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/coding/config.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAC,IAAI,EAAC,MAAM,KAAK,CAAC;AACzB,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,cAAc,EAAE,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AACvE,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,WAAW,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAGlD,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC9D,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC7D,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACxE,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;IAC1G,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACvF,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IACxF,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACvF,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC7F,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACjE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;CAC9D,CAAC,CAAC;AAMH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAC,OAAO,EAAE,IAAI,EAAQ;IAC/D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CACnC,SAAS,CACT,CAAC;IACF,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAA0B,IAAI,CAAC,CAAC;IACpE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;IAE7B,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAqC,CAAC;YACxE,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YAEzC,4CAA4C;YAC5C,MAAM,gBAAgB,GACrB,IAAI,CAAC,OAAO,KAAK,SAAS;gBAC1B,IAAI,CAAC,IAAI,KAAK,SAAS;gBACvB,IAAI,CAAC,UAAU,KAAK,SAAS;gBAC7B,IAAI,CAAC,UAAU,KAAK,SAAS;gBAC7B,IAAI,CAAC,WAAW,KAAK,SAAS;gBAC9B,IAAI,CAAC,YAAY,KAAK,SAAS;gBAC/B,IAAI,CAAC,eAAe,KAAK,SAAS;gBAClC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC;YAE7B,yDAAyD;YACzD,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACpC,IAAI,CAAC,cAAc,EAAE,CAAC;oBACrB,SAAS,CAAC,WAAW,CAAC,CAAC;oBACvB,OAAO;gBACR,CAAC;gBACD,SAAS,CAAC,cAAc,CAAC,CAAC;gBAC1B,SAAS,CAAC,MAAM,CAAC,CAAC;gBAClB,OAAO;YACR,CAAC;YAED,mBAAmB;YACnB,MAAM,SAAS,GAAqB,cAAc,IAAI,EAAC,OAAO,EAAE,SAAS,EAAC,CAAC;YAE3E,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAChC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAClC,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7B,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;qBACxB,KAAK,CAAC,GAAG,CAAC;qBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;qBACpB,MAAM,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACnC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;qBACpC,KAAK,CAAC,GAAG,CAAC;qBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;qBACpB,MAAM,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACnC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACxC,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACpC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAC1C,CAAC;YACD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBACrC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;qBACxC,KAAK,CAAC,GAAG,CAAC;qBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;qBACpB,MAAM,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC;YACD,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;gBACxC,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;qBAC9C,KAAK,CAAC,GAAG,CAAC;qBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;qBACpB,MAAM,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACjC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YACpC,CAAC;YAED,cAAc;YACd,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;YAC9B,iBAAiB,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;YAE5B,SAAS,CAAC,SAAS,CAAC,CAAC;YACrB,SAAS,CAAC,SAAS,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YAC/D,SAAS,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;IACF,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAEtB,MAAM,YAAY,GAAG,CAAC,GAAqB,EAAE,EAAE;QAC9C,MAAM,KAAK,GAAG;YACb,YAAY,GAAG,CAAC,OAAO,EAAE;YACzB,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE;YAC1C,eAAe,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE;YACtD,eAAe,GAAG,CAAC,UAAU,IAAI,WAAW,EAAE;YAC9C,gBAAgB,GAAG,CAAC,WAAW,IAAI,WAAW,EAAE;YAChD,iBAAiB,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;YAC3D,oBAAoB,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;YACjE,aAAa,GAAG,CAAC,QAAQ,IAAI,WAAW,EAAE;SAC1C,CAAC;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO,CACN,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,iBAAiB,YAC7C,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CACvB,KAAC,IAAI,IAAC,QAAQ,+CAAgC,CAC9C,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CACxB,KAAC,YAAY,IAAC,OAAO,EAAE,iBAAiB,KAAK,EAAE,GAAI,CACnD,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAC5B,KAAC,YAAY,IACZ,OAAO,EAAE,UAAU,SAAS,2HAA2H,SAAS,yBAAyB,EACzL,SAAS,SACR,CACF,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CACjC,KAAC,WAAW,IAAC,OAAO,EAAE,GAAG,SAAS,qBAAqB,YAAY,CAAC,MAAM,CAAC,EAAE,GAAI,CACjF,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,CACpC,KAAC,cAAc,IAAC,OAAO,EAAE,WAAW,SAAS,qBAAqB,YAAY,CAAC,MAAM,CAAC,EAAE,GAAI,CAC5F,CAAC,CAAC,CAAC,IAAI,GACe,CACxB,CAAC;AACH,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 CodingStatus(_props: Props): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/coding/index.tsx"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,KAAK,CAAC;AAQtB,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,YAAY,CAAC,MAAM,EAAE,KAAK,2CA8CjD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { Text } from 'ink';
|
|
4
|
+
import zod from 'zod';
|
|
5
|
+
import { getPreferences } from '../../config/preferences.js';
|
|
6
|
+
import InfoMessage from '../../components/info-message.js';
|
|
7
|
+
import ErrorMessage from '../../components/error-message.js';
|
|
8
|
+
import { ThemeContext } from '../../hooks/useTheme.js';
|
|
9
|
+
import { themeContextValue } from '../../config/themes.js';
|
|
10
|
+
export const options = zod.object({});
|
|
11
|
+
export default function CodingStatus(_props) {
|
|
12
|
+
const [status, setStatus] = useState('loading');
|
|
13
|
+
const [agents, setAgents] = useState([]);
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
const prefs = getPreferences();
|
|
16
|
+
const coding = prefs.coding;
|
|
17
|
+
if (coding) {
|
|
18
|
+
const agentList = Object.entries(coding).map(([name, config]) => ({
|
|
19
|
+
name,
|
|
20
|
+
config,
|
|
21
|
+
}));
|
|
22
|
+
setAgents(agentList);
|
|
23
|
+
}
|
|
24
|
+
setStatus('ready');
|
|
25
|
+
}, []);
|
|
26
|
+
const formatAgentInfo = () => {
|
|
27
|
+
return agents
|
|
28
|
+
.map((a) => {
|
|
29
|
+
const flags = [];
|
|
30
|
+
if (a.config.dangerouslySkipPermissions !== false)
|
|
31
|
+
flags.push('skip-perms');
|
|
32
|
+
if (a.config.allowedTools?.length)
|
|
33
|
+
flags.push(`allowed:${a.config.allowedTools.length}`);
|
|
34
|
+
if (a.config.disallowedTools?.length)
|
|
35
|
+
flags.push(`disallowed:${a.config.disallowedTools.length}`);
|
|
36
|
+
return ` ${a.name}: ${a.config.command}${flags.length ? ` (${flags.join(', ')})` : ''}`;
|
|
37
|
+
})
|
|
38
|
+
.join('\n');
|
|
39
|
+
};
|
|
40
|
+
return (_jsx(ThemeContext.Provider, { value: themeContextValue, children: status === 'loading' ? (_jsx(Text, { dimColor: true, children: "Loading coding configuration..." })) : agents.length === 0 ? (_jsx(ErrorMessage, { message: "No coding agents configured.\\n\\nRun 'corebrain coding setup' to auto-detect agents\\nor 'corebrain coding <agent> config' to manually configure.", hideTitle: true })) : (_jsx(InfoMessage, { message: `Configured Agents\n\n${formatAgentInfo()}\n\nUsage:\n corebrain coding config --agent <name> - configure agent\n corebrain coding setup - auto-detect agents` })) }));
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/coding/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAC,IAAI,EAAC,MAAM,KAAK,CAAC;AACzB,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AACpD,OAAO,WAAW,MAAM,2BAA2B,CAAC;AACpD,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAGlD,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAMtC,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,MAAa;IACjD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAsB,SAAS,CAAC,CAAC;IACrE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAA6C,EAAE,CAAC,CAAC;IAErF,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAsD,CAAC;QAE5E,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjE,IAAI;gBACJ,MAAM;aACN,CAAC,CAAC,CAAC;YACJ,SAAS,CAAC,SAAS,CAAC,CAAC;QACtB,CAAC;QACD,SAAS,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,eAAe,GAAG,GAAG,EAAE;QAC5B,OAAO,MAAM;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACV,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC,CAAC,MAAM,CAAC,0BAA0B,KAAK,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC5E,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;YACzF,IAAI,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;YAClG,OAAO,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC1F,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,CAAC,CAAC;IAEF,OAAO,CACN,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,iBAAiB,YAC7C,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CACvB,KAAC,IAAI,IAAC,QAAQ,sDAAuC,CACrD,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACzB,KAAC,YAAY,IACZ,OAAO,EAAC,oJAAiJ,EACzJ,SAAS,SACR,CACF,CAAC,CAAC,CAAC,CACH,KAAC,WAAW,IACX,OAAO,EAAE,wBAAwB,eAAe,EAAE,yIAAyI,GAC1L,CACF,GACsB,CACxB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import zod from 'zod';
|
|
2
|
+
export declare const options: zod.ZodObject<{
|
|
3
|
+
agent: zod.ZodString;
|
|
4
|
+
}, zod.core.$strip>;
|
|
5
|
+
type Props = {
|
|
6
|
+
options: zod.infer<typeof options>;
|
|
7
|
+
};
|
|
8
|
+
export default function CodingRemove({ options: opts }: Props): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=remove.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/commands/coding/remove.tsx"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,KAAK,CAAC;AAQtB,eAAO,MAAM,OAAO;;mBAElB,CAAC;AAEH,KAAK,KAAK,GAAG;IACZ,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,EAAE,KAAK,2CAwC1D"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { Text } from 'ink';
|
|
4
|
+
import zod from 'zod';
|
|
5
|
+
import { getPreferences, updatePreferences } from '../../config/preferences.js';
|
|
6
|
+
import SuccessMessage from '../../components/success-message.js';
|
|
7
|
+
import ErrorMessage from '../../components/error-message.js';
|
|
8
|
+
import { ThemeContext } from '../../hooks/useTheme.js';
|
|
9
|
+
import { themeContextValue } from '../../config/themes.js';
|
|
10
|
+
export const options = zod.object({
|
|
11
|
+
agent: zod.string().describe('Agent name to remove'),
|
|
12
|
+
});
|
|
13
|
+
export default function CodingRemove({ options: opts }) {
|
|
14
|
+
const [status, setStatus] = useState('loading');
|
|
15
|
+
const [error, setError] = useState('');
|
|
16
|
+
const agentName = opts.agent;
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
try {
|
|
19
|
+
const prefs = getPreferences();
|
|
20
|
+
const coding = (prefs.coding || {});
|
|
21
|
+
if (!coding[agentName]) {
|
|
22
|
+
setStatus('not-found');
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
// Remove the agent
|
|
26
|
+
delete coding[agentName];
|
|
27
|
+
updatePreferences({ coding });
|
|
28
|
+
setStatus('removed');
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
setError(err instanceof Error ? err.message : 'Unknown error');
|
|
32
|
+
setStatus('error');
|
|
33
|
+
}
|
|
34
|
+
}, [agentName]);
|
|
35
|
+
return (_jsx(ThemeContext.Provider, { value: themeContextValue, children: status === 'loading' ? (_jsx(Text, { dimColor: true, children: "Removing agent configuration..." })) : status === 'error' ? (_jsx(ErrorMessage, { message: `Error: ${error}` })) : status === 'not-found' ? (_jsx(ErrorMessage, { message: `Agent "${agentName}" not found.`, hideTitle: true })) : status === 'removed' ? (_jsx(SuccessMessage, { message: `Removed "${agentName}" configuration.` })) : null }));
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=remove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/commands/coding/remove.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAC,IAAI,EAAC,MAAM,KAAK,CAAC;AACzB,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,cAAc,EAAE,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AACvE,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAGlD,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;CACpD,CAAC,CAAC;AAMH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAC,OAAO,EAAE,IAAI,EAAQ;IAC1D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAgD,SAAS,CAAC,CAAC;IAC/F,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;IAE7B,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAqC,CAAC;YAExE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxB,SAAS,CAAC,WAAW,CAAC,CAAC;gBACvB,OAAO;YACR,CAAC;YAED,mBAAmB;YACnB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;YACzB,iBAAiB,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;YAE5B,SAAS,CAAC,SAAS,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YAC/D,SAAS,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;IACF,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,CACN,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,iBAAiB,YAC7C,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CACvB,KAAC,IAAI,IAAC,QAAQ,sDAAuC,CACrD,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CACxB,KAAC,YAAY,IAAC,OAAO,EAAE,UAAU,KAAK,EAAE,GAAI,CAC5C,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAC5B,KAAC,YAAY,IAAC,OAAO,EAAE,UAAU,SAAS,cAAc,EAAE,SAAS,SAAG,CACtE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAC1B,KAAC,cAAc,IAAC,OAAO,EAAE,YAAY,SAAS,kBAAkB,GAAI,CACpE,CAAC,CAAC,CAAC,IAAI,GACe,CACxB,CAAC;AACH,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 CodingSetup(_props: Props): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/commands/coding/setup.tsx"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,KAAK,CAAC;AAYtB,eAAO,MAAM,OAAO,oCAAiB,CAAC;AAEtC,KAAK,KAAK,GAAG;IACZ,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACnC,CAAC;AA0DF,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,MAAM,EAAE,KAAK,2CAsFhD"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { Text } from 'ink';
|
|
4
|
+
import zod from 'zod';
|
|
5
|
+
import { exec } from 'node:child_process';
|
|
6
|
+
import { promisify } from 'node:util';
|
|
7
|
+
import { getPreferences, updatePreferences } from '../../config/preferences.js';
|
|
8
|
+
import SuccessMessage from '../../components/success-message.js';
|
|
9
|
+
import ErrorMessage from '../../components/error-message.js';
|
|
10
|
+
import { ThemeContext } from '../../hooks/useTheme.js';
|
|
11
|
+
import { themeContextValue } from '../../config/themes.js';
|
|
12
|
+
const execAsync = promisify(exec);
|
|
13
|
+
export const options = zod.object({});
|
|
14
|
+
// Default configurations for known agents
|
|
15
|
+
const agentTemplates = [
|
|
16
|
+
{
|
|
17
|
+
name: 'claude-code',
|
|
18
|
+
commands: ['claude'],
|
|
19
|
+
defaultConfig: {
|
|
20
|
+
args: ['-p', '--output-format', 'text', '--dangerously-skip-permissions'],
|
|
21
|
+
resumeArgs: ['-p', '--output-format', 'text', '--dangerously-skip-permissions', '--resume', '{sessionId}'],
|
|
22
|
+
sessionArg: '--session',
|
|
23
|
+
sessionMode: 'always',
|
|
24
|
+
sessionIdFields: ['session_id'],
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: 'codex',
|
|
29
|
+
commands: ['codex'],
|
|
30
|
+
defaultConfig: {
|
|
31
|
+
args: [],
|
|
32
|
+
resumeArgs: [],
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
async function detectAgent(template) {
|
|
37
|
+
for (const cmd of template.commands) {
|
|
38
|
+
try {
|
|
39
|
+
const { stdout } = await execAsync(`which ${cmd}`);
|
|
40
|
+
const path = stdout.trim();
|
|
41
|
+
if (path) {
|
|
42
|
+
return {
|
|
43
|
+
name: template.name,
|
|
44
|
+
command: cmd,
|
|
45
|
+
available: true,
|
|
46
|
+
path,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// Command not found, try next
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return { name: template.name, command: template.commands[0], available: false };
|
|
55
|
+
}
|
|
56
|
+
export default function CodingSetup(_props) {
|
|
57
|
+
const [status, setStatus] = useState('detecting');
|
|
58
|
+
const [results, setResults] = useState([]);
|
|
59
|
+
const [error, setError] = useState('');
|
|
60
|
+
useEffect(() => {
|
|
61
|
+
let cancelled = false;
|
|
62
|
+
(async () => {
|
|
63
|
+
try {
|
|
64
|
+
const detectionResults = [];
|
|
65
|
+
for (const template of agentTemplates) {
|
|
66
|
+
const result = await detectAgent(template);
|
|
67
|
+
if (result) {
|
|
68
|
+
detectionResults.push(result);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (cancelled)
|
|
72
|
+
return;
|
|
73
|
+
setResults(detectionResults);
|
|
74
|
+
// Build and save coding config
|
|
75
|
+
const currentPrefs = getPreferences();
|
|
76
|
+
const existingCoding = (currentPrefs.coding || {});
|
|
77
|
+
for (const result of detectionResults) {
|
|
78
|
+
if (result.available) {
|
|
79
|
+
const template = agentTemplates.find((t) => t.name === result.name);
|
|
80
|
+
if (template) {
|
|
81
|
+
// Only add if not already configured
|
|
82
|
+
if (!existingCoding[result.name]) {
|
|
83
|
+
existingCoding[result.name] = {
|
|
84
|
+
command: result.path || result.command,
|
|
85
|
+
...template.defaultConfig,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
updatePreferences({
|
|
92
|
+
coding: existingCoding,
|
|
93
|
+
});
|
|
94
|
+
setStatus('done');
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
if (!cancelled) {
|
|
98
|
+
setError(err instanceof Error ? err.message : 'Unknown error');
|
|
99
|
+
setStatus('error');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
})();
|
|
103
|
+
return () => {
|
|
104
|
+
cancelled = true;
|
|
105
|
+
};
|
|
106
|
+
}, []);
|
|
107
|
+
const availableCount = results.filter((r) => r.available).length;
|
|
108
|
+
return (_jsx(ThemeContext.Provider, { value: themeContextValue, children: status === 'detecting' ? (_jsx(Text, { dimColor: true, children: "Detecting available coding agents..." })) : status === 'error' ? (_jsx(ErrorMessage, { message: `Detection failed: ${error}` })) : availableCount === 0 ? (_jsx(ErrorMessage, { message: `No coding agents found.\n\nInstall one of:\n- claude (Anthropic Claude CLI)\n- codex (OpenAI Codex CLI)`, hideTitle: true })) : (_jsx(SuccessMessage, { message: `Found ${availableCount} coding agent(s)\n\n${results
|
|
109
|
+
.map((r) => r.available
|
|
110
|
+
? ` ${r.name}: ${r.path}`
|
|
111
|
+
: ` ${r.name}: not found`)
|
|
112
|
+
.join('\n')}\n\nConfiguration saved. Use 'corebrain coding <agent> config' to customize.` })) }));
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/commands/coding/setup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import zod from 'zod';
|
|
2
|
+
export declare const options: zod.ZodObject<{
|
|
3
|
+
allow: zod.ZodOptional<zod.ZodString>;
|
|
4
|
+
deny: zod.ZodOptional<zod.ZodString>;
|
|
5
|
+
defaultDir: zod.ZodOptional<zod.ZodString>;
|
|
6
|
+
clear: zod.ZodOptional<zod.ZodBoolean>;
|
|
7
|
+
show: zod.ZodOptional<zod.ZodBoolean>;
|
|
8
|
+
}, zod.core.$strip>;
|
|
9
|
+
type Props = {
|
|
10
|
+
options: zod.infer<typeof options>;
|
|
11
|
+
};
|
|
12
|
+
export default function ExecConfigCommand({ options: opts }: Props): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/exec/config.tsx"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,KAAK,CAAC;AAStB,eAAO,MAAM,OAAO;;;;;;mBAMlB,CAAC;AAEH,KAAK,KAAK,GAAG;IACZ,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,EAAE,KAAK,2CAwF/D"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { Text } from 'ink';
|
|
4
|
+
import zod from 'zod';
|
|
5
|
+
import { getPreferences, updatePreferences } from '../../config/preferences.js';
|
|
6
|
+
import SuccessMessage from '../../components/success-message.js';
|
|
7
|
+
import ErrorMessage from '../../components/error-message.js';
|
|
8
|
+
import InfoMessage from '../../components/info-message.js';
|
|
9
|
+
import { ThemeContext } from '../../hooks/useTheme.js';
|
|
10
|
+
import { themeContextValue } from '../../config/themes.js';
|
|
11
|
+
export const options = zod.object({
|
|
12
|
+
allow: zod.string().optional().describe('Allow patterns (comma-separated, e.g., "Bash(npm run *),Bash(git status)")'),
|
|
13
|
+
deny: zod.string().optional().describe('Deny patterns (comma-separated, e.g., "Bash(rm -rf *),Bash(git push *)")'),
|
|
14
|
+
defaultDir: zod.string().optional().describe('Default working directory for commands'),
|
|
15
|
+
clear: zod.boolean().optional().describe('Clear all exec configuration'),
|
|
16
|
+
show: zod.boolean().optional().describe('Show current config'),
|
|
17
|
+
});
|
|
18
|
+
export default function ExecConfigCommand({ options: opts }) {
|
|
19
|
+
const [status, setStatus] = useState('loading');
|
|
20
|
+
const [config, setConfig] = useState(null);
|
|
21
|
+
const [error, setError] = useState('');
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
try {
|
|
24
|
+
const prefs = getPreferences();
|
|
25
|
+
const existingConfig = prefs.exec || {};
|
|
26
|
+
// Clear config
|
|
27
|
+
if (opts.clear) {
|
|
28
|
+
updatePreferences({ exec: undefined });
|
|
29
|
+
setStatus('cleared');
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
// Check if any config options were provided
|
|
33
|
+
const hasConfigOptions = opts.allow !== undefined ||
|
|
34
|
+
opts.deny !== undefined ||
|
|
35
|
+
opts.defaultDir !== undefined;
|
|
36
|
+
// If just showing config (no options provided or --show)
|
|
37
|
+
if (opts.show || !hasConfigOptions) {
|
|
38
|
+
setConfig(existingConfig);
|
|
39
|
+
setStatus('show');
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
// Build new config
|
|
43
|
+
const newConfig = { ...existingConfig };
|
|
44
|
+
if (opts.allow !== undefined) {
|
|
45
|
+
newConfig.allow = opts.allow
|
|
46
|
+
.split(',')
|
|
47
|
+
.map((p) => p.trim())
|
|
48
|
+
.filter(Boolean);
|
|
49
|
+
}
|
|
50
|
+
if (opts.deny !== undefined) {
|
|
51
|
+
newConfig.deny = opts.deny
|
|
52
|
+
.split(',')
|
|
53
|
+
.map((p) => p.trim())
|
|
54
|
+
.filter(Boolean);
|
|
55
|
+
}
|
|
56
|
+
if (opts.defaultDir !== undefined) {
|
|
57
|
+
newConfig.defaultDir = opts.defaultDir;
|
|
58
|
+
}
|
|
59
|
+
// Save config
|
|
60
|
+
updatePreferences({ exec: newConfig });
|
|
61
|
+
setConfig(newConfig);
|
|
62
|
+
setStatus('updated');
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
setError(err instanceof Error ? err.message : 'Unknown error');
|
|
66
|
+
setStatus('error');
|
|
67
|
+
}
|
|
68
|
+
}, [opts]);
|
|
69
|
+
const formatConfig = (cfg) => {
|
|
70
|
+
const lines = [
|
|
71
|
+
`allow: ${cfg.allow?.length ? cfg.allow.join(', ') : '(any - no restrictions)'}`,
|
|
72
|
+
`deny: ${cfg.deny?.length ? cfg.deny.join(', ') : '(none)'}`,
|
|
73
|
+
`defaultDir: ${cfg.defaultDir || '~/.corebrain'}`,
|
|
74
|
+
];
|
|
75
|
+
return lines.join('\n');
|
|
76
|
+
};
|
|
77
|
+
return (_jsx(ThemeContext.Provider, { value: themeContextValue, children: status === 'loading' ? (_jsx(Text, { dimColor: true, children: "Loading configuration..." })) : status === 'error' ? (_jsx(ErrorMessage, { message: `Config error: ${error}` })) : status === 'cleared' ? (_jsx(SuccessMessage, { message: "Exec configuration cleared" })) : status === 'show' && config ? (_jsx(InfoMessage, { message: `Exec Configuration\n\n${formatConfig(config)}\n\nPattern format: Bash(command pattern *)\nExamples:\n Bash(npm run *) - Allow npm run commands\n Bash(git commit *) - Allow git commit\n Bash(* --version) - Allow version checks\n Bash(rm -rf *) - Deny recursive deletes` })) : status === 'updated' && config ? (_jsx(SuccessMessage, { message: `Updated exec configuration\n\n${formatConfig(config)}` })) : null }));
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/exec/config.tsx"],"names":[],"mappings":"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"}
|