@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.
Files changed (181) hide show
  1. package/dist/commands/browser/close.d.ts +10 -0
  2. package/dist/commands/browser/close.d.ts.map +1 -0
  3. package/dist/commands/browser/close.js +60 -0
  4. package/dist/commands/browser/close.js.map +1 -0
  5. package/dist/commands/browser/command.d.ts +10 -0
  6. package/dist/commands/browser/command.d.ts.map +1 -0
  7. package/dist/commands/browser/command.js +67 -0
  8. package/dist/commands/browser/command.js.map +1 -0
  9. package/dist/commands/browser/create-profile.d.ts +10 -0
  10. package/dist/commands/browser/create-profile.d.ts.map +1 -0
  11. package/dist/commands/browser/create-profile.js +29 -0
  12. package/dist/commands/browser/create-profile.js.map +1 -0
  13. package/dist/commands/browser/delete-profile.d.ts +10 -0
  14. package/dist/commands/browser/delete-profile.d.ts.map +1 -0
  15. package/dist/commands/browser/delete-profile.js +27 -0
  16. package/dist/commands/browser/delete-profile.js.map +1 -0
  17. package/dist/commands/browser/install.d.ts +8 -0
  18. package/dist/commands/browser/install.d.ts.map +1 -0
  19. package/dist/commands/browser/install.js +49 -0
  20. package/dist/commands/browser/install.js.map +1 -0
  21. package/dist/commands/browser/open.d.ts +12 -0
  22. package/dist/commands/browser/open.d.ts.map +1 -0
  23. package/dist/commands/browser/open.js +65 -0
  24. package/dist/commands/browser/open.js.map +1 -0
  25. package/dist/commands/browser/status.d.ts +8 -0
  26. package/dist/commands/browser/status.d.ts.map +1 -0
  27. package/dist/commands/browser/status.js +48 -0
  28. package/dist/commands/browser/status.js.map +1 -0
  29. package/dist/commands/coding/[agent]/config.d.ts +18 -0
  30. package/dist/commands/coding/[agent]/config.d.ts.map +1 -0
  31. package/dist/commands/coding/[agent]/config.js +91 -0
  32. package/dist/commands/coding/[agent]/config.js.map +1 -0
  33. package/dist/commands/coding/config.d.ts +23 -0
  34. package/dist/commands/coding/config.d.ts.map +1 -0
  35. package/dist/commands/coding/config.js +116 -0
  36. package/dist/commands/coding/config.js.map +1 -0
  37. package/dist/commands/coding/index.d.ts +8 -0
  38. package/dist/commands/coding/index.d.ts.map +1 -0
  39. package/dist/commands/coding/index.js +42 -0
  40. package/dist/commands/coding/index.js.map +1 -0
  41. package/dist/commands/coding/remove.d.ts +10 -0
  42. package/dist/commands/coding/remove.d.ts.map +1 -0
  43. package/dist/commands/coding/remove.js +37 -0
  44. package/dist/commands/coding/remove.js.map +1 -0
  45. package/dist/commands/coding/setup.d.ts +8 -0
  46. package/dist/commands/coding/setup.d.ts.map +1 -0
  47. package/dist/commands/coding/setup.js +114 -0
  48. package/dist/commands/coding/setup.js.map +1 -0
  49. package/dist/commands/exec/config.d.ts +14 -0
  50. package/dist/commands/exec/config.d.ts.map +1 -0
  51. package/dist/commands/exec/config.js +79 -0
  52. package/dist/commands/exec/config.js.map +1 -0
  53. package/dist/commands/gateway/config.d.ts +8 -0
  54. package/dist/commands/gateway/config.d.ts.map +1 -0
  55. package/dist/commands/gateway/config.js +192 -0
  56. package/dist/commands/gateway/config.js.map +1 -0
  57. package/dist/commands/gateway/index.d.ts +14 -0
  58. package/dist/commands/gateway/index.d.ts.map +1 -0
  59. package/dist/commands/gateway/index.js +10 -0
  60. package/dist/commands/gateway/index.js.map +1 -0
  61. package/dist/commands/gateway/off.d.ts +8 -0
  62. package/dist/commands/gateway/off.d.ts.map +1 -0
  63. package/dist/commands/gateway/off.js +70 -0
  64. package/dist/commands/gateway/off.js.map +1 -0
  65. package/dist/commands/gateway/on.d.ts +8 -0
  66. package/dist/commands/gateway/on.d.ts.map +1 -0
  67. package/dist/commands/gateway/on.js +135 -0
  68. package/dist/commands/gateway/on.js.map +1 -0
  69. package/dist/commands/gateway/restart.d.ts +8 -0
  70. package/dist/commands/gateway/restart.d.ts.map +1 -0
  71. package/dist/commands/gateway/restart.js +70 -0
  72. package/dist/commands/gateway/restart.js.map +1 -0
  73. package/dist/commands/gateway/status.d.ts +8 -0
  74. package/dist/commands/gateway/status.d.ts.map +1 -0
  75. package/dist/commands/gateway/status.js +98 -0
  76. package/dist/commands/gateway/status.js.map +1 -0
  77. package/dist/commands/gateway/uninstall.d.ts +8 -0
  78. package/dist/commands/gateway/uninstall.d.ts.map +1 -0
  79. package/dist/commands/gateway/uninstall.js +80 -0
  80. package/dist/commands/gateway/uninstall.js.map +1 -0
  81. package/dist/commands/index.d.ts +1 -5
  82. package/dist/commands/index.d.ts.map +1 -1
  83. package/dist/commands/login.d.ts +1 -1
  84. package/dist/commands/login.d.ts.map +1 -1
  85. package/dist/commands/logout.d.ts +1 -1
  86. package/dist/commands/logout.d.ts.map +1 -1
  87. package/dist/commands/me.d.ts +1 -1
  88. package/dist/commands/me.d.ts.map +1 -1
  89. package/dist/commands/server.d.ts +10 -0
  90. package/dist/commands/server.d.ts.map +1 -0
  91. package/dist/commands/server.js +60 -0
  92. package/dist/commands/server.js.map +1 -0
  93. package/dist/commands/token.d.ts +1 -1
  94. package/dist/commands/token.d.ts.map +1 -1
  95. package/dist/components/error-message.d.ts.map +1 -1
  96. package/dist/components/error-message.js +6 -1
  97. package/dist/components/error-message.js.map +1 -1
  98. package/dist/components/info-message.d.ts.map +1 -1
  99. package/dist/components/info-message.js +5 -1
  100. package/dist/components/info-message.js.map +1 -1
  101. package/dist/components/success-message.d.ts.map +1 -1
  102. package/dist/components/success-message.js +5 -1
  103. package/dist/components/success-message.js.map +1 -1
  104. package/dist/components/warning-message.d.ts +2 -3
  105. package/dist/components/warning-message.d.ts.map +1 -1
  106. package/dist/components/warning-message.js +10 -4
  107. package/dist/components/warning-message.js.map +1 -1
  108. package/dist/config/index.d.ts +4 -0
  109. package/dist/config/index.d.ts.map +1 -1
  110. package/dist/config/index.js +31 -30
  111. package/dist/config/index.js.map +1 -1
  112. package/dist/config/paths.d.ts.map +1 -1
  113. package/dist/config/paths.js +4 -36
  114. package/dist/config/paths.js.map +1 -1
  115. package/dist/config/preferences.d.ts +14 -0
  116. package/dist/config/preferences.d.ts.map +1 -0
  117. package/dist/config/preferences.js +82 -0
  118. package/dist/config/preferences.js.map +1 -0
  119. package/dist/config/themes.d.ts +5 -0
  120. package/dist/config/themes.d.ts.map +1 -1
  121. package/dist/config/themes.js +5 -0
  122. package/dist/config/themes.js.map +1 -1
  123. package/dist/server/gateway-client.d.ts +75 -0
  124. package/dist/server/gateway-client.d.ts.map +1 -0
  125. package/dist/server/gateway-client.js +264 -0
  126. package/dist/server/gateway-client.js.map +1 -0
  127. package/dist/server/gateway-entry.d.ts +7 -0
  128. package/dist/server/gateway-entry.d.ts.map +1 -0
  129. package/dist/server/gateway-entry.js +113 -0
  130. package/dist/server/gateway-entry.js.map +1 -0
  131. package/dist/server/gateway.d.ts +5 -0
  132. package/dist/server/gateway.d.ts.map +1 -0
  133. package/dist/server/gateway.js +136 -0
  134. package/dist/server/gateway.js.map +1 -0
  135. package/dist/server/tools/browser-tools.d.ts +28 -0
  136. package/dist/server/tools/browser-tools.d.ts.map +1 -0
  137. package/dist/server/tools/browser-tools.js +179 -0
  138. package/dist/server/tools/browser-tools.js.map +1 -0
  139. package/dist/server/tools/coding-tools.d.ts +27 -0
  140. package/dist/server/tools/coding-tools.d.ts.map +1 -0
  141. package/dist/server/tools/coding-tools.js +345 -0
  142. package/dist/server/tools/coding-tools.js.map +1 -0
  143. package/dist/server/tools/exec-tools.d.ts +14 -0
  144. package/dist/server/tools/exec-tools.d.ts.map +1 -0
  145. package/dist/server/tools/exec-tools.js +203 -0
  146. package/dist/server/tools/exec-tools.js.map +1 -0
  147. package/dist/types/config.d.ts +36 -0
  148. package/dist/types/config.d.ts.map +1 -1
  149. package/dist/utils/agent-browser.d.ts +63 -0
  150. package/dist/utils/agent-browser.d.ts.map +1 -0
  151. package/dist/utils/agent-browser.js +301 -0
  152. package/dist/utils/agent-browser.js.map +1 -0
  153. package/dist/utils/coding-runner.d.ts +60 -0
  154. package/dist/utils/coding-runner.d.ts.map +1 -0
  155. package/dist/utils/coding-runner.js +174 -0
  156. package/dist/utils/coding-runner.js.map +1 -0
  157. package/dist/utils/coding-sessions.d.ts +61 -0
  158. package/dist/utils/coding-sessions.d.ts.map +1 -0
  159. package/dist/utils/coding-sessions.js +112 -0
  160. package/dist/utils/coding-sessions.js.map +1 -0
  161. package/dist/utils/process.d.ts +22 -0
  162. package/dist/utils/process.d.ts.map +1 -0
  163. package/dist/utils/process.js +81 -0
  164. package/dist/utils/process.js.map +1 -0
  165. package/dist/utils/service-manager/index.d.ts +49 -0
  166. package/dist/utils/service-manager/index.d.ts.map +1 -0
  167. package/dist/utils/service-manager/index.js +137 -0
  168. package/dist/utils/service-manager/index.js.map +1 -0
  169. package/dist/utils/service-manager/launchd.d.ts +31 -0
  170. package/dist/utils/service-manager/launchd.d.ts.map +1 -0
  171. package/dist/utils/service-manager/launchd.js +208 -0
  172. package/dist/utils/service-manager/launchd.js.map +1 -0
  173. package/dist/utils/service-manager/systemd.d.ts +31 -0
  174. package/dist/utils/service-manager/systemd.d.ts.map +1 -0
  175. package/dist/utils/service-manager/systemd.js +187 -0
  176. package/dist/utils/service-manager/systemd.js.map +1 -0
  177. package/dist/utils/tmux.d.ts +37 -0
  178. package/dist/utils/tmux.d.ts.map +1 -0
  179. package/dist/utils/tmux.js +96 -0
  180. package/dist/utils/tmux.js.map +1 -0
  181. 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":"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"}
@@ -0,0 +1,8 @@
1
+ import zod from 'zod';
2
+ export declare const options: zod.ZodObject<{}, zod.core.$strip>;
3
+ type Props = {
4
+ options: zod.infer<typeof options>;
5
+ };
6
+ export default function 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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"}